mirror of
https://github.com/ImranR98/Obtainium.git
synced 2025-07-30 12:30:16 +02:00
Compare commits
48 Commits
v0.14.24-b
...
v0.14.30-b
Author | SHA1 | Date | |
---|---|---|---|
|
b7544939c2 | ||
|
63fa6d4660 | ||
|
9506c11951 | ||
|
a0ecb4e2bb | ||
|
a726b09f26 | ||
|
52b1d1fe33 | ||
|
8b4709c132 | ||
|
b4217a791e | ||
|
9b3a982d54 | ||
|
0a47d3eab5 | ||
|
7d7803247d | ||
|
aa8d45e636 | ||
|
7f3e87767c | ||
|
1eefeae060 | ||
|
03447c33be | ||
|
f6c6cd5cb8 | ||
|
67b56cee50 | ||
|
2d7465cca6 | ||
|
d06f20690d | ||
|
e613a494ff | ||
|
503a01675e | ||
|
723f7e63e9 | ||
|
7ff6916e5f | ||
|
910ed26525 | ||
|
c0fffa6293 | ||
|
d800d3ba41 | ||
|
d267343c64 | ||
|
0f72e37272 | ||
|
89e44d581f | ||
|
c908a710de | ||
|
f0809cde72 | ||
|
e6da8c1c18 | ||
|
81ea67afa8 | ||
|
488049821e | ||
|
fc7408a8f8 | ||
|
6955191fdd | ||
|
ba59693d90 | ||
|
ce6e51128d | ||
|
a7a26037ae | ||
|
00854abd1a | ||
|
c26649d5f2 | ||
|
63b76a249f | ||
|
95f19208ad | ||
|
f4a902ee47 | ||
|
036823cbb6 | ||
|
547c2c8c0d | ||
|
7453d19d27 | ||
|
2a0b68d637 |
@@ -1,315 +1,329 @@
|
|||||||
{
|
{
|
||||||
"invalidURLForSource": "Nije važeći URL aplikacije {}",
|
"invalidURLForSource": "Nije važeći URL aplikacije {}",
|
||||||
"noReleaseFound": "Nije moguće pronaći odgovarajuće izdanje",
|
"noReleaseFound": "Nije moguće pronaći odgovarajuće izdanje",
|
||||||
"noVersionFound": "Nije moguće odrediti verziju izdanja",
|
"noVersionFound": "Nije moguće odrediti verziju izdanja",
|
||||||
"urlMatchesNoSource": "URL se ne podudara s poznatim izvorom",
|
"urlMatchesNoSource": "URL se ne podudara s poznatim izvorom",
|
||||||
"cantInstallOlderVersion": "Nije moguće instalirati stariju verziju aplikacije",
|
"cantInstallOlderVersion": "Nije moguće instalirati stariju verziju aplikacije",
|
||||||
"appIdMismatch": "ID preuzetog paketa se ne podudara s postojećim ID-om aplikacije",
|
"appIdMismatch": "ID preuzetog paketa se ne podudara s postojećim ID-om aplikacije",
|
||||||
"functionNotImplemented": "Ova klasa nije implementirala ovu funkciju",
|
"functionNotImplemented": "Ova klasa nije implementirala ovu funkciju",
|
||||||
"placeholder": "Rezervirano mjesto",
|
"placeholder": "Rezervirano mjesto",
|
||||||
"someErrors": "Došlo je do nekih grešaka",
|
"someErrors": "Došlo je do nekih grešaka",
|
||||||
"unexpectedError": "Neočekivana greška",
|
"unexpectedError": "Neočekivana greška",
|
||||||
"ok": "Dobro",
|
"ok": "Dobro",
|
||||||
"and": "i",
|
"and": "i",
|
||||||
"githubPATLabel": "GitHub token za lični pristup (eng. PAT, povećava ograničenje stope)",
|
"githubPATLabel": "GitHub token za lični pristup (eng. PAT, povećava ograničenje stope)",
|
||||||
"includePrereleases": "Uključi preliminarna izdanja",
|
"includePrereleases": "Uključi preliminarna izdanja",
|
||||||
"fallbackToOlderReleases": "Povratak na starija izdanja",
|
"fallbackToOlderReleases": "Povratak na starija izdanja",
|
||||||
"filterReleaseTitlesByRegEx": "Filtrirajte naslove izdanja prema regularnom izrazu",
|
"filterReleaseTitlesByRegEx": "Filtrirajte naslove izdanja prema regularnom izrazu",
|
||||||
"invalidRegEx": "Nevažeći regularni izraz",
|
"invalidRegEx": "Nevažeći regularni izraz",
|
||||||
"noDescription": "Bez opisa",
|
"noDescription": "Bez opisa",
|
||||||
"cancel": "Otkaži",
|
"cancel": "Otkaži",
|
||||||
"continue": "Nastavite",
|
"continue": "Nastavite",
|
||||||
"requiredInBrackets": "(obavezno)",
|
"requiredInBrackets": "(obavezno)",
|
||||||
"dropdownNoOptsError": "GREŠKA: PADAJUĆI MENI MORA IMATI NAJMANJE JEDNU OPCIJU",
|
"dropdownNoOptsError": "GREŠKA: PADAJUĆI MENI MORA IMATI NAJMANJE JEDNU OPCIJU",
|
||||||
"colour": "Boja",
|
"colour": "Boja",
|
||||||
"githubStarredRepos": "GitHub repo-i sa zvjezdicom",
|
"githubStarredRepos": "GitHub repo-i sa zvjezdicom",
|
||||||
"uname": "Korisničko ime",
|
"uname": "Korisničko ime",
|
||||||
"wrongArgNum": "Naveden je pogrešan broj argumenata",
|
"wrongArgNum": "Naveden je pogrešan broj argumenata",
|
||||||
"xIsTrackOnly": "{} je samo za praćenje",
|
"xIsTrackOnly": "{} je samo za praćenje",
|
||||||
"source": "Izvor",
|
"source": "Izvor",
|
||||||
"app": "Aplikacija. ",
|
"app": "Aplikacija. ",
|
||||||
"appsFromSourceAreTrackOnly": "Aplikacije iz ovog izvora su 'Samo za praćenje'.",
|
"appsFromSourceAreTrackOnly": "Aplikacije iz ovog izvora su 'Samo za praćenje'.",
|
||||||
"youPickedTrackOnly": "Odabrali ste opciju „Samo za praćenje”.",
|
"youPickedTrackOnly": "Odabrali ste opciju „Samo za praćenje”.",
|
||||||
"trackOnlyAppDescription": "Aplikacija će se pratiti radi ažuriranja, ali Obtainium neće moći da je preuzme ili instalira.",
|
"trackOnlyAppDescription": "Aplikacija će se pratiti radi ažuriranja, ali Obtainium neće moći da je preuzme ili instalira.",
|
||||||
"cancelled": "Otkazano",
|
"cancelled": "Otkazano",
|
||||||
"appAlreadyAdded": "Aplikacija je već dodana",
|
"appAlreadyAdded": "Aplikacija je već dodana",
|
||||||
"alreadyUpToDateQuestion": "Aplikacija je već ažurirana?",
|
"alreadyUpToDateQuestion": "Aplikacija je već ažurirana?",
|
||||||
"addApp": "Dodaj aplikaciju",
|
"addApp": "Dodaj aplikaciju",
|
||||||
"appSourceURL": "Izvorni URL aplikacije",
|
"appSourceURL": "Izvorni URL aplikacije",
|
||||||
"error": "Greška",
|
"error": "Greška",
|
||||||
"add": "Dodaj",
|
"add": "Dodaj",
|
||||||
"searchSomeSourcesLabel": "Pretraživanje (samo neki izvori)",
|
"searchSomeSourcesLabel": "Pretraživanje (samo neki izvori)",
|
||||||
"search": "Pretraživanje",
|
"search": "Pretraživanje",
|
||||||
"additionalOptsFor": "Dodatne opcije za {}",
|
"additionalOptsFor": "Dodatne opcije za {}",
|
||||||
"supportedSources": "Podržani izvori",
|
"supportedSources": "Podržani izvori",
|
||||||
"trackOnlyInBrackets": "(Samo za praćenje)",
|
"trackOnlyInBrackets": "(Samo za praćenje)",
|
||||||
"searchableInBrackets": "(Može se pretraživati)",
|
"searchableInBrackets": "(Može se pretraživati)",
|
||||||
"appsString": "Aplikacije",
|
"appsString": "Aplikacije",
|
||||||
"noApps": "Nema aplikacija",
|
"noApps": "Nema aplikacija",
|
||||||
"noAppsForFilter": "Nema aplikacija za filter",
|
"noAppsForFilter": "Nema aplikacija za filter",
|
||||||
"byX": "Autor {}",
|
"byX": "Autor {}",
|
||||||
"percentProgress": "Napredak: {}%",
|
"percentProgress": "Napredak: {}%",
|
||||||
"pleaseWait": "Molimo sačekajte",
|
"pleaseWait": "Molimo sačekajte",
|
||||||
"updateAvailable": "Ažuriranje dostupno",
|
"updateAvailable": "Ažuriranje dostupno",
|
||||||
"estimateInBracketsShort": "(Procjena)",
|
"estimateInBracketsShort": "(Procjena)",
|
||||||
"notInstalled": "Nije instalirano",
|
"notInstalled": "Nije instalirano",
|
||||||
"estimateInBrackets": "(Procjena)",
|
"estimateInBrackets": "(Procjena)",
|
||||||
"selectAll": "Označi sve",
|
"selectAll": "Označi sve",
|
||||||
"deselectN": "Poništi odabir {}",
|
"deselectN": "Poništi odabir {}",
|
||||||
"xWillBeRemovedButRemainInstalled": "{} će biti uklonjen iz Obtainiuma, ali će ostati instaliran na uređaju.",
|
"xWillBeRemovedButRemainInstalled": "{} će biti uklonjen iz Obtainiuma, ali će ostati instaliran na uređaju.",
|
||||||
"removeSelectedAppsQuestion": "Želite li ukloniti odabrane aplikacije?",
|
"removeSelectedAppsQuestion": "Želite li ukloniti odabrane aplikacije?",
|
||||||
"removeSelectedApps": "Ukloni odabrane aplikacije",
|
"removeSelectedApps": "Ukloni odabrane aplikacije",
|
||||||
"updateX": "Nadogradi {}",
|
"updateX": "Nadogradi {}",
|
||||||
"installX": "Instaliraj {}",
|
"installX": "Instaliraj {}",
|
||||||
"markXTrackOnlyAsUpdated": "Označi {}\n(samo za praćenje)\nkao ažurirano",
|
"markXTrackOnlyAsUpdated": "Označi {}\n(samo za praćenje)\nkao ažurirano",
|
||||||
"changeX": "Promjena {}",
|
"changeX": "Promjena {}",
|
||||||
"installUpdateApps": "Instalirajte/ažurirajte aplikacije",
|
"installUpdateApps": "Instalirajte/ažurirajte aplikacije",
|
||||||
"installUpdateSelectedApps": "Instalirajte/ažurirajte odabrane aplikacije",
|
"installUpdateSelectedApps": "Instalirajte/ažurirajte odabrane aplikacije",
|
||||||
"markXSelectedAppsAsUpdated": "Označite {} odabrane aplikacije kao ažurirane?",
|
"markXSelectedAppsAsUpdated": "Označite {} odabrane aplikacije kao ažurirane?",
|
||||||
"no": "Ne",
|
"no": "Ne",
|
||||||
"yes": "Da",
|
"yes": "Da",
|
||||||
"markSelectedAppsUpdated": "Označi odabrane aplikacije kao ažurirane",
|
"markSelectedAppsUpdated": "Označi odabrane aplikacije kao ažurirane",
|
||||||
"pinToTop": "Prikvači na vrh",
|
"pinToTop": "Prikvači na vrh",
|
||||||
"unpinFromTop": "Otkvači sa vrha",
|
"unpinFromTop": "Otkvači sa vrha",
|
||||||
"resetInstallStatusForSelectedAppsQuestion": "Resetujte status instalacije za odabrane aplikacije?",
|
"resetInstallStatusForSelectedAppsQuestion": "Resetujte status instalacije za odabrane aplikacije?",
|
||||||
"installStatusOfXWillBeResetExplanation": "Status instalacije bilo koje odabrane aplikacije će se resetovati.\n\nTo može pomoći kada je verzija aplikacije prikazana u Obtainiumu netačna zbog neuspjelih ažuriranja ili drugih problema.",
|
"installStatusOfXWillBeResetExplanation": "Status instalacije bilo koje odabrane aplikacije će se resetovati.\n\nTo može pomoći kada je verzija aplikacije prikazana u Obtainiumu netačna zbog neuspjelih ažuriranja ili drugih problema.",
|
||||||
"shareSelectedAppURLs": "Podijeli odabrane URL-ove aplikacija",
|
"shareSelectedAppURLs": "Podijeli odabrane URL-ove aplikacija",
|
||||||
"resetInstallStatus": "Resetujte status instalacije",
|
"resetInstallStatus": "Resetujte status instalacije",
|
||||||
"more": "Više",
|
"more": "Više",
|
||||||
"removeOutdatedFilter": "Uklonite zastarjeli filter aplikacija",
|
"removeOutdatedFilter": "Uklonite zastarjeli filter aplikacija",
|
||||||
"showOutdatedOnly": "Prikaži samo zastarjele aplikacije",
|
"showOutdatedOnly": "Prikaži samo zastarjele aplikacije",
|
||||||
"filter": "Filtriranje",
|
"filter": "Filtriranje",
|
||||||
"filterActive": "Filtriranje",
|
"filterActive": "Filtriranje",
|
||||||
"filterApps": "Filtriraj aplikacije",
|
"filterApps": "Filtriraj aplikacije",
|
||||||
"appName": "Naziv aplikacije",
|
"appName": "Naziv aplikacije",
|
||||||
"author": "Autor",
|
"author": "Autor",
|
||||||
"upToDateApps": "Ažurirane aplikacije",
|
"upToDateApps": "Ažurirane aplikacije",
|
||||||
"nonInstalledApps": "Neinstalirane aplikacije",
|
"nonInstalledApps": "Neinstalirane aplikacije",
|
||||||
"importExport": "Uvoz/izvoz",
|
"importExport": "Uvoz/izvoz",
|
||||||
"settings": "Postavke",
|
"settings": "Postavke",
|
||||||
"exportedTo": "Izvezeno u {}",
|
"exportedTo": "Izvezeno u {}",
|
||||||
"obtainiumExport": "Obtainium Export",
|
"obtainiumExport": "Obtainium Export",
|
||||||
"invalidInput": "Neispravan unos.",
|
"invalidInput": "Neispravan unos.",
|
||||||
"importedX": "Uvezeno {}",
|
"importedX": "Uvezeno {}",
|
||||||
"obtainiumImport": "Obtainium uvoz",
|
"obtainiumImport": "Obtainium uvoz",
|
||||||
"importFromURLList": "Uvoz iz URL liste",
|
"importFromURLList": "Uvoz iz URL liste",
|
||||||
"searchQuery": "Pretraga za: ",
|
"searchQuery": "Pretraga za: ",
|
||||||
"appURLList": "Lista URL adresa aplikacija",
|
"appURLList": "Lista URL adresa aplikacija",
|
||||||
"line": "Linija",
|
"line": "Linija",
|
||||||
"searchX": "Pretraživanje {}",
|
"searchX": "Pretraživanje {}",
|
||||||
"noResults": "Nema rezultata",
|
"noResults": "Nema rezultata",
|
||||||
"importX": "Uvoz {}",
|
"importX": "Uvoz {}",
|
||||||
"importedAppsIdDisclaimer": "Uvezene aplikacije mogu se pogrešno prikazati kao „Nije instalirano”.\nDa biste to riješili, ponovo ih instalirajte putem aplikacije Obtainium.\nTo ne bi trebalo uticati na podatke aplikacije.\n\nUtječe samo na URL i metode uvoza treće strane.",
|
"importedAppsIdDisclaimer": "Uvezene aplikacije mogu se pogrešno prikazati kao „Nije instalirano”.\nDa biste to riješili, ponovo ih instalirajte putem aplikacije Obtainium.\nTo ne bi trebalo uticati na podatke aplikacije.\n\nUtječe samo na URL i metode uvoza treće strane.",
|
||||||
"importErrors": "Uvezi greške",
|
"importErrors": "Uvezi greške",
|
||||||
"importedXOfYApps": "{} od {} aplikacija uvezeno.",
|
"importedXOfYApps": "{} od {} aplikacija uvezeno.",
|
||||||
"followingURLsHadErrors": "Sljedeći URL-ovi su imali greške:",
|
"followingURLsHadErrors": "Sljedeći URL-ovi su imali greške:",
|
||||||
"okay": "Dobro",
|
"okay": "Dobro",
|
||||||
"selectURL": "Odaberite URL",
|
"selectURL": "Odaberite URL",
|
||||||
"selectURLs": "Odaberite URL-ove",
|
"selectURLs": "Odaberite URL-ove",
|
||||||
"pick": "Odaberi",
|
"pick": "Odaberi",
|
||||||
"theme": "Tema",
|
"theme": "Tema",
|
||||||
"dark": "Tamna",
|
"dark": "Tamna",
|
||||||
"light": "Svijetla",
|
"light": "Svijetla",
|
||||||
"followSystem": "Pratite sistem",
|
"followSystem": "Pratite sistem",
|
||||||
"obtainium": "Obtainium",
|
"obtainium": "Obtainium",
|
||||||
"materialYou": "Material You",
|
"materialYou": "Material You",
|
||||||
"useBlackTheme": "Koristite čisto crnu tamnu temu",
|
"useBlackTheme": "Koristite čisto crnu tamnu temu",
|
||||||
"appSortBy": "Aplikacije sortirane po",
|
"appSortBy": "Aplikacije sortirane po",
|
||||||
"authorName": "Autor/Ime",
|
"authorName": "Autor/Ime",
|
||||||
"nameAuthor": "Ime/Autor",
|
"nameAuthor": "Ime/Autor",
|
||||||
"asAdded": "Kao što je dodano",
|
"asAdded": "Kao što je dodano",
|
||||||
"appSortOrder": "Redoslijed sortiranja aplikacija",
|
"appSortOrder": "Redoslijed sortiranja aplikacija",
|
||||||
"ascending": "Uzlazno",
|
"ascending": "Uzlazno",
|
||||||
"descending": "Silazno",
|
"descending": "Silazno",
|
||||||
"bgUpdateCheckInterval": "Interval provjere ažuriranja u pozadini",
|
"bgUpdateCheckInterval": "Interval provjere ažuriranja u pozadini",
|
||||||
"neverManualOnly": "Nikada - samo ručno",
|
"neverManualOnly": "Nikada - samo ručno",
|
||||||
"appearance": "Izgled",
|
"appearance": "Izgled",
|
||||||
"showWebInAppView": "Prikaži izvornu web stranicu u prikazu aplikacije",
|
"showWebInAppView": "Prikaži izvornu web stranicu u prikazu aplikacije",
|
||||||
"pinUpdates": "Prikvačite ažuriranja na vrh prikaza aplikacija",
|
"pinUpdates": "Prikvačite ažuriranja na vrh prikaza aplikacija",
|
||||||
"updates": "Nadogradnje",
|
"updates": "Nadogradnje",
|
||||||
"sourceSpecific": "Specifično za izvor",
|
"sourceSpecific": "Specifično za izvor",
|
||||||
"appSource": "Izvor aplikacije",
|
"appSource": "Izvor aplikacije",
|
||||||
"noLogs": "Nema evidencije",
|
"noLogs": "Nema evidencije",
|
||||||
"appLogs": "Evidencije aplikacija",
|
"appLogs": "Evidencije aplikacija",
|
||||||
"close": "Zatvori",
|
"close": "Zatvori",
|
||||||
"share": "Podijeli",
|
"share": "Podijeli",
|
||||||
"appNotFound": "Aplikacija nije pronađena",
|
"appNotFound": "Aplikacija nije pronađena",
|
||||||
"obtainiumExportHyphenatedLowercase": "obtainium-export",
|
"obtainiumExportHyphenatedLowercase": "obtainium-export",
|
||||||
"pickAnAPK": "Odaberite APK",
|
"pickAnAPK": "Odaberite APK",
|
||||||
"appHasMoreThanOnePackage": "{} ima više od jednog paketa:",
|
"appHasMoreThanOnePackage": "{} ima više od jednog paketa:",
|
||||||
"deviceSupportsXArch": "Vaš uređaj podržava {} arhitekturu procesora.",
|
"deviceSupportsXArch": "Vaš uređaj podržava {} arhitekturu procesora.",
|
||||||
"deviceSupportsFollowingArchs": "Vaš uređaj podržava sljedeće arhitekture procesora:",
|
"deviceSupportsFollowingArchs": "Vaš uređaj podržava sljedeće arhitekture procesora:",
|
||||||
"warning": "Upozorenje",
|
"warning": "Upozorenje",
|
||||||
"sourceIsXButPackageFromYPrompt": "Izvor aplikacije je '{}', ali paket za izdavanje dolazi iz '{}'. Želite li nastaviti?",
|
"sourceIsXButPackageFromYPrompt": "Izvor aplikacije je '{}', ali paket za izdavanje dolazi iz '{}'. Želite li nastaviti?",
|
||||||
"updatesAvailable": "Dostupna ažuriranja",
|
"updatesAvailable": "Dostupna ažuriranja",
|
||||||
"updatesAvailableNotifDescription": "Obavještava korisnika da su ažuriranja dostupna za jednu ili više aplikacija koje prati Obtainium",
|
"updatesAvailableNotifDescription": "Obavještava korisnika da su ažuriranja dostupna za jednu ili više aplikacija koje prati Obtainium",
|
||||||
"noNewUpdates": "Nema novih ažuriranja.",
|
"noNewUpdates": "Nema novih ažuriranja.",
|
||||||
"xHasAnUpdate": "{} ima ažuriranje.",
|
"xHasAnUpdate": "{} ima ažuriranje.",
|
||||||
"appsUpdated": "Aplikacije su ažurirane",
|
"appsUpdated": "Aplikacije su ažurirane",
|
||||||
"appsUpdatedNotifDescription": "Obavještava korisnika da su u pozadini primijenjena ažuriranja na jednu ili više aplikacija",
|
"appsUpdatedNotifDescription": "Obavještava korisnika da su u pozadini primijenjena ažuriranja na jednu ili više aplikacija",
|
||||||
"xWasUpdatedToY": "{} je ažuriran na {}.",
|
"xWasUpdatedToY": "{} je ažuriran na {}.",
|
||||||
"errorCheckingUpdates": "Greška pri provjeri ažuriranja",
|
"errorCheckingUpdates": "Greška pri provjeri ažuriranja",
|
||||||
"errorCheckingUpdatesNotifDescription": "Obavijest koja se prikazuje kada provjera sigurnosnog ažuriranja ne uspije",
|
"errorCheckingUpdatesNotifDescription": "Obavijest koja se prikazuje kada provjera sigurnosnog ažuriranja ne uspije",
|
||||||
"appsRemoved": "Aplikacije su uklonjene",
|
"appsRemoved": "Aplikacije su uklonjene",
|
||||||
"appsRemovedNotifDescription": "Obavještava korisnika da je jedna ili više aplikacija uklonjeno zbog grešaka prilikom učitavanja",
|
"appsRemovedNotifDescription": "Obavještava korisnika da je jedna ili više aplikacija uklonjeno zbog grešaka prilikom učitavanja",
|
||||||
"xWasRemovedDueToErrorY": "{} je uklonjen zbog ove greške: {}",
|
"xWasRemovedDueToErrorY": "{} je uklonjen zbog ove greške: {}",
|
||||||
"completeAppInstallation": "Dovršite instalaciju aplikacije",
|
"completeAppInstallation": "Dovršite instalaciju aplikacije",
|
||||||
"obtainiumMustBeOpenToInstallApps": "Obtainium mora biti otvoren za instalaciju aplikacija",
|
"obtainiumMustBeOpenToInstallApps": "Obtainium mora biti otvoren za instalaciju aplikacija",
|
||||||
"completeAppInstallationNotifDescription": "Traži od korisnika da se vrati u Obtainium kako bi dovršio instalaciju aplikacije",
|
"completeAppInstallationNotifDescription": "Traži od korisnika da se vrati u Obtainium kako bi dovršio instalaciju aplikacije",
|
||||||
"checkingForUpdates": "Tražim moguće nadogradnje",
|
"checkingForUpdates": "Tražim moguće nadogradnje",
|
||||||
"checkingForUpdatesNotifDescription": "Privremeno obavještenje koje se pojavljuje prilikom provjere ažuriranja",
|
"checkingForUpdatesNotifDescription": "Privremeno obavještenje koje se pojavljuje prilikom provjere ažuriranja",
|
||||||
"pleaseAllowInstallPerm": "Dozvolite Obtainiumu da instalira aplikacije",
|
"pleaseAllowInstallPerm": "Dozvolite Obtainiumu da instalira aplikacije",
|
||||||
"trackOnly": "Samo za praćenje",
|
"trackOnly": "Samo za praćenje",
|
||||||
"errorWithHttpStatusCode": "Greška {}",
|
"errorWithHttpStatusCode": "Greška {}",
|
||||||
"versionCorrectionDisabled": "Ispravka verzije je onemogućena (izgleda da plugin ne radi)",
|
"versionCorrectionDisabled": "Ispravka verzije je onemogućena (izgleda da plugin ne radi)",
|
||||||
"unknown": "Nepoznato",
|
"unknown": "Nepoznato",
|
||||||
"none": "Ništa",
|
"none": "Ništa",
|
||||||
"never": "Nikad",
|
"never": "Nikad",
|
||||||
"latestVersionX": "Najnovija verzija: {}",
|
"latestVersionX": "Najnovija verzija: {}",
|
||||||
"installedVersionX": "Instalirana verzija: {}",
|
"installedVersionX": "Instalirana verzija: {}",
|
||||||
"lastUpdateCheckX": "Posljednja provjera ažuriranja: {}",
|
"lastUpdateCheckX": "Posljednja provjera ažuriranja: {}",
|
||||||
"remove": "Izbriši",
|
"remove": "Izbriši",
|
||||||
"yesMarkUpdated": "Da, označi kao ažurirano",
|
"yesMarkUpdated": "Da, označi kao ažurirano",
|
||||||
"fdroid": "F-Droid Official",
|
"fdroid": "F-Droid Official",
|
||||||
"appIdOrName": "ID ili ime aplikacije",
|
"appIdOrName": "ID ili ime aplikacije",
|
||||||
"appId": "Apl ID",
|
"appId": "Apl ID",
|
||||||
"appWithIdOrNameNotFound": "Nije pronađena aplikacija s tim ID-om ili imenom",
|
"appWithIdOrNameNotFound": "Nije pronađena aplikacija s tim ID-om ili imenom",
|
||||||
"reposHaveMultipleApps": "Repo-i mogu sadržavati više aplikacija",
|
"reposHaveMultipleApps": "Repo-i mogu sadržavati više aplikacija",
|
||||||
"fdroidThirdPartyRepo": "F-Droid Repo treće strane",
|
"fdroidThirdPartyRepo": "F-Droid Repo treće strane",
|
||||||
"steam": "Steam",
|
"steam": "Steam",
|
||||||
"steamMobile": "Steam Mobile",
|
"steamMobile": "Steam Mobile",
|
||||||
"steamChat": "Razgovor na Steamu (chat)",
|
"steamChat": "Razgovor na Steamu (chat)",
|
||||||
"install": "Instaliraj",
|
"install": "Instaliraj",
|
||||||
"markInstalled": "Označi kao instalirano",
|
"markInstalled": "Označi kao instalirano",
|
||||||
"update": "Nadogradi",
|
"update": "Nadogradi",
|
||||||
"markUpdated": "Označi kao ažurirano",
|
"markUpdated": "Označi kao ažurirano",
|
||||||
"additionalOptions": "Dodatne opcije",
|
"additionalOptions": "Dodatne opcije",
|
||||||
"disableVersionDetection": "Onemogući detekciju verzije",
|
"disableVersionDetection": "Onemogući detekciju verzije",
|
||||||
"noVersionDetectionExplanation": "Ova opcija bi se trebala koristiti samo za aplikacije gdje detekcija verzije ne radi ispravno.",
|
"noVersionDetectionExplanation": "Ova opcija bi se trebala koristiti samo za aplikacije gdje detekcija verzije ne radi ispravno.",
|
||||||
"downloadingX": "Preuzimanje {}",
|
"downloadingX": "Preuzimanje {}",
|
||||||
"downloadNotifDescription": "Obavještava korisnika o napretku u preuzimanju aplikacije",
|
"downloadNotifDescription": "Obavještava korisnika o napretku u preuzimanju aplikacije",
|
||||||
"noAPKFound": "APK nije pronađen",
|
"noAPKFound": "APK nije pronađen",
|
||||||
"noVersionDetection": "Nema detekcije verzije",
|
"noVersionDetection": "Nema detekcije verzije",
|
||||||
"categorize": "Kategoriziraj",
|
"categorize": "Kategoriziraj",
|
||||||
"categories": "Kategorije",
|
"categories": "Kategorije",
|
||||||
"category": "Kategorija",
|
"category": "Kategorija",
|
||||||
"noCategory": "Nema kategorije",
|
"noCategory": "Nema kategorije",
|
||||||
"noCategories": "Nema kategorija",
|
"noCategories": "Nema kategorija",
|
||||||
"deleteCategoriesQuestion": "Želite li izbrisati kategorije?",
|
"deleteCategoriesQuestion": "Želite li izbrisati kategorije?",
|
||||||
"categoryDeleteWarning": "Sve aplikacije u izbrisanim kategorijama će biti postavljene kao nekategorisane.",
|
"categoryDeleteWarning": "Sve aplikacije u izbrisanim kategorijama će biti postavljene kao nekategorisane.",
|
||||||
"addCategory": "Dodaj kategoriju",
|
"addCategory": "Dodaj kategoriju",
|
||||||
"label": "Oznaka",
|
"label": "Oznaka",
|
||||||
"language": "Jezik",
|
"language": "Jezik",
|
||||||
"copiedToClipboard": "Podaci kopirani u međuspremnik",
|
"copiedToClipboard": "Podaci kopirani u međuspremnik",
|
||||||
"storagePermissionDenied": "Dozvola za pohranu je odbijena",
|
"storagePermissionDenied": "Dozvola za pohranu je odbijena",
|
||||||
"selectedCategorizeWarning": "Ovo će zamijeniti sve postojeće postavke kategorije za odabrane aplikacije.",
|
"selectedCategorizeWarning": "Ovo će zamijeniti sve postojeće postavke kategorije za odabrane aplikacije.",
|
||||||
"filterAPKsByRegEx": "Filtrirajte APK-ove prema regularnom izrazu",
|
"filterAPKsByRegEx": "Filtrirajte APK-ove prema regularnom izrazu",
|
||||||
"removeFromObtainium": "Ukloni iz Obtainiuma",
|
"removeFromObtainium": "Ukloni iz Obtainiuma",
|
||||||
"uninstallFromDevice": "Deinstaliraj s uređaja",
|
"uninstallFromDevice": "Deinstaliraj s uređaja",
|
||||||
"onlyWorksWithNonVersionDetectApps": "Radi samo za aplikacije s onemogućenom detekcijom verzije.",
|
"onlyWorksWithNonVersionDetectApps": "Radi samo za aplikacije s onemogućenom detekcijom verzije.",
|
||||||
"releaseDateAsVersion": "Koristi datum izdanja kao verziju",
|
"releaseDateAsVersion": "Koristi datum izdanja kao verziju",
|
||||||
"releaseDateAsVersionExplanation": "Ova opcija bi se trebala koristiti samo za aplikacije gdje detekcija verzije ne radi ispravno, ali je datum izdavanja dostupan.",
|
"releaseDateAsVersionExplanation": "Ova opcija bi se trebala koristiti samo za aplikacije gdje detekcija verzije ne radi ispravno, ali je datum izdavanja dostupan.",
|
||||||
"changes": "Promjene",
|
"changes": "Promjene",
|
||||||
"releaseDate": "Datum izdavanja",
|
"releaseDate": "Datum izdavanja",
|
||||||
"importFromURLsInFile": "Uvoz iz URL-ova u datoteci (kao što je OPML)",
|
"importFromURLsInFile": "Uvoz iz URL-ova u datoteci (kao što je OPML)",
|
||||||
"versionDetection": "Otkrivanje verzije",
|
"versionDetection": "Otkrivanje verzije",
|
||||||
"standardVersionDetection": "Detekcija standardne verzije",
|
"standardVersionDetection": "Detekcija standardne verzije",
|
||||||
"groupByCategory": "Grupiši po kategoriji",
|
"groupByCategory": "Grupiši po kategoriji",
|
||||||
"autoApkFilterByArch": "Pokušajte filtrirati APK-ove po arhitekturi procesora ako je moguće",
|
"autoApkFilterByArch": "Pokušajte filtrirati APK-ove po arhitekturi procesora ako je moguće",
|
||||||
"overrideSource": "Premosti izvor",
|
"overrideSource": "Premosti izvor",
|
||||||
"dontShowAgain": "Ne prikazuj ovo ponovo",
|
"dontShowAgain": "Ne prikazuj ovo ponovo",
|
||||||
"dontShowTrackOnlyWarnings": "Ne prikazuj upozorenja „Samo za praćenje”",
|
"dontShowTrackOnlyWarnings": "Ne prikazuj upozorenja „Samo za praćenje”",
|
||||||
"dontShowAPKOriginWarnings": "Ne prikazuj upozorenja o porijeklu APK-a",
|
"dontShowAPKOriginWarnings": "Ne prikazuj upozorenja o porijeklu APK-a",
|
||||||
"moveNonInstalledAppsToBottom": "Premjesti neinstalirane aplikacije na dno prikaza aplikacija",
|
"moveNonInstalledAppsToBottom": "Premjesti neinstalirane aplikacije na dno prikaza aplikacija",
|
||||||
"gitlabPATLabel": "GitLab token za lični pristup\n(Omogućava pretraživanje i bolje otkrivanje APK-a)",
|
"gitlabPATLabel": "GitLab token za lični pristup\n(Omogućava pretraživanje i bolje otkrivanje APK-a)",
|
||||||
"about": "O nama",
|
"about": "O nama",
|
||||||
"requiresCredentialsInSettings": "Za ovo su potrebni dodatni akreditivi (u Postavkama)",
|
"requiresCredentialsInSettings": "Za ovo su potrebni dodatni akreditivi (u Postavkama)",
|
||||||
"checkOnStart": "Provjerite ima li novosti pri pokretanju",
|
"checkOnStart": "Provjerite ima li novosti pri pokretanju",
|
||||||
"tryInferAppIdFromCode": "Pokušati otkriti ID aplikacije iz izvornog koda",
|
"tryInferAppIdFromCode": "Pokušati otkriti ID aplikacije iz izvornog koda",
|
||||||
"removeOnExternalUninstall": "Automatski ukloni eksterno deinstalirane aplikacije",
|
"removeOnExternalUninstall": "Automatski ukloni eksterno deinstalirane aplikacije",
|
||||||
"pickHighestVersionCode": "Automatski odaberite najviši kôd verzije APK-a",
|
"pickHighestVersionCode": "Automatski odaberite najviši kôd verzije APK-a",
|
||||||
"checkUpdateOnDetailPage": "Provjerite ima li novosti pri otvaranju stranice s detaljima aplikacije",
|
"checkUpdateOnDetailPage": "Provjerite ima li novosti pri otvaranju stranice s detaljima aplikacije",
|
||||||
"disablePageTransitions": "Ugasite animaciju prijelaza stranice",
|
"disablePageTransitions": "Ugasite animaciju prijelaza stranice",
|
||||||
"reversePageTransitions": "Reverzne animacije prijelaza stranice",
|
"reversePageTransitions": "Reverzne animacije prijelaza stranice",
|
||||||
"minStarCount": "Minimum Star Count",
|
"minStarCount": "Minimum Star Count",
|
||||||
"addInfoBelow": "Add this info below.",
|
"addInfoBelow": "Add this info below.",
|
||||||
"addInfoInSettings": "Add this info in the Settings.",
|
"addInfoInSettings": "Add this info in the Settings.",
|
||||||
"githubSourceNote": "GitHub rate limiting can be avoided using an API key.",
|
"githubSourceNote": "GitHub rate limiting can be avoided using an API key.",
|
||||||
"gitlabSourceNote": "GitLab APK extraction may not work without an API key.",
|
"gitlabSourceNote": "GitLab APK extraction may not work without an API key.",
|
||||||
"sortByFileNamesNotLinks": "Sort by file names instead of full links",
|
"sortByFileNamesNotLinks": "Sort by file names instead of full links",
|
||||||
"filterReleaseNotesByRegEx": "Filter Release Notes by Regular Expression",
|
"filterReleaseNotesByRegEx": "Filter Release Notes by Regular Expression",
|
||||||
"customLinkFilterRegex": "Custom APK Link Filter by Regular Expression (Default '.apk$')",
|
"customLinkFilterRegex": "Custom APK Link Filter by Regular Expression (Default '.apk$')",
|
||||||
"appsPossiblyUpdated": "App Updates Attempted",
|
"appsPossiblyUpdated": "App Updates Attempted",
|
||||||
"appsPossiblyUpdatedNotifDescription": "Notifies the user that updates to one or more Apps were potentially applied in the background",
|
"appsPossiblyUpdatedNotifDescription": "Notifies the user that updates to one or more Apps were potentially applied in the background",
|
||||||
"xWasPossiblyUpdatedToY": "{} may have been updated to {}.",
|
"xWasPossiblyUpdatedToY": "{} may have been updated to {}.",
|
||||||
"backgroundUpdateReqsExplanation": "Background updates may not be possible for all apps.",
|
"enableBackgroundUpdates": "Enable background updates",
|
||||||
"backgroundUpdateLimitsExplanation": "The success of a background install can only be determined when Obtainium is opened.",
|
"backgroundUpdateReqsExplanation": "Background updates may not be possible for all apps.",
|
||||||
"verifyLatestTag": "Verify the 'latest' tag",
|
"backgroundUpdateLimitsExplanation": "The success of a background install can only be determined when Obtainium is opened.",
|
||||||
"exemptFromBackgroundUpdates": "Exempt from background updates (if enabled)",
|
"verifyLatestTag": "Verify the 'latest' tag",
|
||||||
"bgUpdatesOnWiFiOnly": "Disable background updates when not on WiFi",
|
"intermediateLinkRegex": "Filter for an 'Intermediate' Link to Visit First",
|
||||||
"autoSelectHighestVersionCode": "Auto-select highest versionCode APK",
|
"intermediateLinkNotFound": "Intermediate link not found",
|
||||||
"versionExtractionRegEx": "Version Extraction RegEx",
|
"exemptFromBackgroundUpdates": "Exempt from background updates (if enabled)",
|
||||||
"matchGroupToUse": "Match Group to Use",
|
"bgUpdatesOnWiFiOnly": "Disable background updates when not on WiFi",
|
||||||
"highlightTouchTargets": "Highlight less obvious touch targets",
|
"autoSelectHighestVersionCode": "Auto-select highest versionCode APK",
|
||||||
"pickExportDir": "Pick Export Directory",
|
"versionExtractionRegEx": "Version Extraction RegEx",
|
||||||
"autoExportOnChanges": "Auto-export on changes",
|
"matchGroupToUse": "Match Group to Use",
|
||||||
"filterVersionsByRegEx": "Filter Versions by Regular Expression",
|
"highlightTouchTargets": "Highlight less obvious touch targets",
|
||||||
"trySelectingSuggestedVersionCode": "Try selecting suggested versionCode APK",
|
"pickExportDir": "Pick Export Directory",
|
||||||
"dontSortReleasesList": "Retain release order from API",
|
"autoExportOnChanges": "Auto-export on changes",
|
||||||
"reverseSort": "Reverse sorting",
|
"filterVersionsByRegEx": "Filter Versions by Regular Expression",
|
||||||
"debugMenu": "Debug Menu",
|
"trySelectingSuggestedVersionCode": "Try selecting suggested versionCode APK",
|
||||||
"bgTaskStarted": "Background task started - check logs.",
|
"dontSortReleasesList": "Retain release order from API",
|
||||||
"runBgCheckNow": "Run Background Update Check Now",
|
"reverseSort": "Reverse sorting",
|
||||||
"removeAppQuestion": {
|
"debugMenu": "Debug Menu",
|
||||||
"one": "Želite li ukloniti aplikaciju?",
|
"bgTaskStarted": "Background task started - check logs.",
|
||||||
"other": "Želite li ukloniti aplikacije?"
|
"runBgCheckNow": "Run Background Update Check Now",
|
||||||
},
|
"versionExtractWholePage": "Apply Version Extraction Regex to Entire Page",
|
||||||
"tooManyRequestsTryAgainInMinutes": {
|
"installing": "Installing",
|
||||||
"one": "Previše zahtjeva (ograničena broj zahteva) - pokušajte ponovo za {} minutu",
|
"skipUpdateNotifications": "Skip update notifications",
|
||||||
"other": "Previše zahtjeva (ograničena cijena) - pokušajte ponovo za {} min."
|
"updatesAvailableNotifChannel": "Dostupna ažuriranja",
|
||||||
},
|
"appsUpdatedNotifChannel": "Aplikacije su ažurirane",
|
||||||
"bgUpdateGotErrorRetryInMinutes": {
|
"appsPossiblyUpdatedNotifChannel": "App Updates Attempted",
|
||||||
"one": "Provjera ažuriranja u pozadini naišla je na {}, zakazuje se ponovni pokušaj za {} minutu",
|
"errorCheckingUpdatesNotifChannel": "Greška pri provjeri ažuriranja",
|
||||||
"other": "Provjera ažuriranja u pozadini naišla je na {}, zakazuje se ponovni pokušaj za {} min."
|
"appsRemovedNotifChannel": "Aplikacije su uklonjene",
|
||||||
},
|
"downloadingXNotifChannel": "Preuzimanje {}",
|
||||||
"bgCheckFoundUpdatesWillNotifyIfNeeded": {
|
"completeAppInstallationNotifChannel": "Dovršite instalaciju aplikacije",
|
||||||
"one": "Provjera ažuriranja u pozadini je pronašla {} ažuriranje - korisnik će biti obavješten ako je to potrebno",
|
"checkingForUpdatesNotifChannel": "Tražim moguće nadogradnje",
|
||||||
"other": "Provjera ažuriranja u pozadini je pronašla {} ažuriranja - korisnik će biti obavješten ako je to potrebno"
|
"removeAppQuestion": {
|
||||||
},
|
"one": "Želite li ukloniti aplikaciju?",
|
||||||
"apps": {
|
"other": "Želite li ukloniti aplikacije?"
|
||||||
"one": "{} aplikacija",
|
},
|
||||||
"other": "{} aplikacije"
|
"tooManyRequestsTryAgainInMinutes": {
|
||||||
},
|
"one": "Previše zahtjeva (ograničena broj zahteva) - pokušajte ponovo za {} minutu",
|
||||||
"url": {
|
"other": "Previše zahtjeva (ograničena cijena) - pokušajte ponovo za {} min."
|
||||||
"one": "{} URL",
|
},
|
||||||
"other": "{} URL-ovi"
|
"bgUpdateGotErrorRetryInMinutes": {
|
||||||
},
|
"one": "Provjera ažuriranja u pozadini naišla je na {}, zakazuje se ponovni pokušaj za {} minutu",
|
||||||
"minute": {
|
"other": "Provjera ažuriranja u pozadini naišla je na {}, zakazuje se ponovni pokušaj za {} min."
|
||||||
"one": "{} minuta",
|
},
|
||||||
"other": "min."
|
"bgCheckFoundUpdatesWillNotifyIfNeeded": {
|
||||||
},
|
"one": "Provjera ažuriranja u pozadini je pronašla {} ažuriranje - korisnik će biti obavješten ako je to potrebno",
|
||||||
"hour": {
|
"other": "Provjera ažuriranja u pozadini je pronašla {} ažuriranja - korisnik će biti obavješten ako je to potrebno"
|
||||||
"one": "{} sat",
|
},
|
||||||
"other": "{} sat/i"
|
"apps": {
|
||||||
},
|
"one": "{} aplikacija",
|
||||||
"day": {
|
"other": "{} aplikacije"
|
||||||
"one": "{} dan",
|
},
|
||||||
"other": "{} dana"
|
"url": {
|
||||||
},
|
"one": "{} URL",
|
||||||
"clearedNLogsBeforeXAfterY": {
|
"other": "{} URL-ovi"
|
||||||
"one": "Izbrisan {n} log (prije = {before}, nakon = {after})",
|
},
|
||||||
"other": "Izbrisano {n} log-ova (prije = {before}, nakon = {after})"
|
"minute": {
|
||||||
},
|
"one": "{} minuta",
|
||||||
"xAndNMoreUpdatesAvailable": {
|
"other": "min."
|
||||||
"one": "{} i još 1 aplikacija ima ažuriranja.",
|
},
|
||||||
"other": "{} i još {} aplikacija imaju ažuriranja."
|
"hour": {
|
||||||
},
|
"one": "{} sat",
|
||||||
"xAndNMoreUpdatesInstalled": {
|
"other": "{} sat/i"
|
||||||
"one": "{} i još 1 aplikacija je ažurirana.",
|
},
|
||||||
"other": "{} i još {} aplikacija je ažurirano."
|
"day": {
|
||||||
},
|
"one": "{} dan",
|
||||||
"xAndNMoreUpdatesPossiblyInstalled": {
|
"other": "{} dana"
|
||||||
"one": "{} and 1 more app may have been updated.",
|
},
|
||||||
"other": "{} and {} more apps may have been updated."
|
"clearedNLogsBeforeXAfterY": {
|
||||||
}
|
"one": "Izbrisan {n} log (prije = {before}, nakon = {after})",
|
||||||
}
|
"other": "Izbrisano {n} log-ova (prije = {before}, nakon = {after})"
|
||||||
|
},
|
||||||
|
"xAndNMoreUpdatesAvailable": {
|
||||||
|
"one": "{} i još 1 aplikacija ima ažuriranja.",
|
||||||
|
"other": "{} i još {} aplikacija imaju ažuriranja."
|
||||||
|
},
|
||||||
|
"xAndNMoreUpdatesInstalled": {
|
||||||
|
"one": "{} i još 1 aplikacija je ažurirana.",
|
||||||
|
"other": "{} i još {} aplikacija je ažurirano."
|
||||||
|
},
|
||||||
|
"xAndNMoreUpdatesPossiblyInstalled": {
|
||||||
|
"one": "{} and 1 more app may have been updated.",
|
||||||
|
"other": "{} and {} more apps may have been updated."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -25,7 +25,7 @@
|
|||||||
"githubStarredRepos": "GitHub Starred Repos",
|
"githubStarredRepos": "GitHub Starred Repos",
|
||||||
"uname": "username",
|
"uname": "username",
|
||||||
"wrongArgNum": "Špatný počet předložených argumentů",
|
"wrongArgNum": "Špatný počet předložených argumentů",
|
||||||
"xIsTrackOnly":"{} je určeno pouze pro sledování",
|
"xIsTrackOnly": "{} je určeno pouze pro sledování",
|
||||||
"source": "zdroj",
|
"source": "zdroj",
|
||||||
"app": "App",
|
"app": "App",
|
||||||
"appsFromSourceAreTrackOnly": "Aplikace z tohoto zdroje jsou 'Jen sledovány'.",
|
"appsFromSourceAreTrackOnly": "Aplikace z tohoto zdroje jsou 'Jen sledovány'.",
|
||||||
@@ -56,7 +56,7 @@
|
|||||||
"estimateInBrackets": "(přibližně)",
|
"estimateInBrackets": "(přibližně)",
|
||||||
"selectAll": "Vybrat Vše",
|
"selectAll": "Vybrat Vše",
|
||||||
"deselectN": "{} deselected",
|
"deselectN": "{} deselected",
|
||||||
"xWillBeRemovedButRemainInstalled":"{} bude odstraněn z Obtainium, ale zůstane nainstalován v zařízení.",
|
"xWillBeRemovedButRemainInstalled": "{} bude odstraněn z Obtainium, ale zůstane nainstalován v zařízení.",
|
||||||
"removeSelectedAppsQuestion": "Odebrat vybrané aplikace?",
|
"removeSelectedAppsQuestion": "Odebrat vybrané aplikace?",
|
||||||
"removeSelectedApps": "Odebrat vybrané aplikace",
|
"removeSelectedApps": "Odebrat vybrané aplikace",
|
||||||
"updateX": "Aktualizovat {}",
|
"updateX": "Aktualizovat {}",
|
||||||
@@ -101,7 +101,7 @@
|
|||||||
"importX": "Import {}",
|
"importX": "Import {}",
|
||||||
"importedAppsIdDisclaimer": "Importované aplikace mohou být nesprávně zobrazeny jako \"Neinstalované\". 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.",
|
"importedAppsIdDisclaimer": "Importované aplikace mohou být nesprávně zobrazeny jako \"Neinstalované\". Chcete-li to opravit, nainstalujte je znovu prostřednictvím Obtainium. To nemá vliv na data aplikací. Ovlivňuje pouze metody importu URL a třetích stran.",
|
||||||
"importErrors": "Import Errors",
|
"importErrors": "Import Errors",
|
||||||
"importedXOfYApps":"{}importováno {}aplikací.",
|
"importedXOfYApps": "{}importováno {}aplikací.",
|
||||||
"followingURLsHadErrors": "U následujících adres URL došlo k chybám:",
|
"followingURLsHadErrors": "U následujících adres URL došlo k chybám:",
|
||||||
"okay": "Okay",
|
"okay": "Okay",
|
||||||
"selectURL": "Select URL",
|
"selectURL": "Select URL",
|
||||||
@@ -136,7 +136,7 @@
|
|||||||
"appNotFound": "App not found",
|
"appNotFound": "App not found",
|
||||||
"obtainiumExportHyphenatedLowercase": "obtainium-export",
|
"obtainiumExportHyphenatedLowercase": "obtainium-export",
|
||||||
"pickAnAPK": "Vybrat APK",
|
"pickAnAPK": "Vybrat APK",
|
||||||
"appHasMoreThanOnePackage":"{} má více než jeden balíček:",
|
"appHasMoreThanOnePackage": "{} má více než jeden balíček:",
|
||||||
"deviceSupportsXArch": "Vaše zařízení podporuje architekturu CPU {}.",
|
"deviceSupportsXArch": "Vaše zařízení podporuje architekturu CPU {}.",
|
||||||
"deviceSupportsFollowingArchs": "Vaše zařízení podporuje následující architektury CPU:",
|
"deviceSupportsFollowingArchs": "Vaše zařízení podporuje následující architektury CPU:",
|
||||||
"warning": "Varování",
|
"warning": "Varování",
|
||||||
@@ -144,15 +144,15 @@
|
|||||||
"updatesAvailable": "dostupné aktualizace",
|
"updatesAvailable": "dostupné aktualizace",
|
||||||
"updatesAvailableNotifDescription": "Upozorňuje uživatele, že jsou k dispozici aktualizace pro jednu nebo více aplikací sledovaných Obtainium",
|
"updatesAvailableNotifDescription": "Upozorňuje uživatele, že jsou k dispozici aktualizace pro jednu nebo více aplikací sledovaných Obtainium",
|
||||||
"noNewUpdates": "Žádné nové aktualizace.",
|
"noNewUpdates": "Žádné nové aktualizace.",
|
||||||
"xHasAnUpdate":"{} má aktualizaci.",
|
"xHasAnUpdate": "{} má aktualizaci.",
|
||||||
"appsUpdated": "Aplikace aktualizovány",
|
"appsUpdated": "Aplikace aktualizovány",
|
||||||
"appsUpdatedNotifDescription": "Upozorňuje uživatele, že byly provedeny aktualizace jedné nebo více aplikací na pozadí",
|
"appsUpdatedNotifDescription": "Upozorňuje uživatele, že byly provedeny aktualizace jedné nebo více aplikací na pozadí",
|
||||||
"xWasUpdatedToY":"{} byl aktualizován na {}",
|
"xWasUpdatedToY": "{} byl aktualizován na {}",
|
||||||
"errorCheckingUpdates": "Chybová kontrola aktualizací",
|
"errorCheckingUpdates": "Chybová kontrola aktualizací",
|
||||||
"errorCheckingUpdatesNotifDescription": "Oznámení zobrazené při neúspěšné kontrole aktualizací na pozadí",
|
"errorCheckingUpdatesNotifDescription": "Oznámení zobrazené při neúspěšné kontrole aktualizací na pozadí",
|
||||||
"appsRemoved": "Odstraněné aplikace",
|
"appsRemoved": "Odstraněné aplikace",
|
||||||
"appsRemovedNotifDescription": "Oznámení uživateli, že jedna nebo více aplikací byly odstraněny z důvodu chyb při načítání",
|
"appsRemovedNotifDescription": "Oznámení uživateli, že jedna nebo více aplikací byly odstraněny z důvodu chyb při načítání",
|
||||||
"xWasRemovedDueToErrorY":"{} byla odstraněna z důvodu následující chyby: {}",
|
"xWasRemovedDueToErrorY": "{} byla odstraněna z důvodu následující chyby: {}",
|
||||||
"completeAppInstallation": "Dokončit instalaci aplikace",
|
"completeAppInstallation": "Dokončit instalaci aplikace",
|
||||||
"obtainiumMustBeOpenToInstallApps": "Obtainium musí být otevřeno, aby bylo možné instalovat aplikace",
|
"obtainiumMustBeOpenToInstallApps": "Obtainium musí být otevřeno, aby bylo možné instalovat aplikace",
|
||||||
"completeAppInstallationNotifDescription": "Vyzvat uživatele k návratu do Obtainium pro dokončení instalace aplikací",
|
"completeAppInstallationNotifDescription": "Vyzvat uživatele k návratu do Obtainium pro dokončení instalace aplikací",
|
||||||
@@ -241,7 +241,7 @@
|
|||||||
"customLinkFilterRegex": "Vlastní filtr odkazů APK podle regulárního výrazu (výchozí '.apk$')",
|
"customLinkFilterRegex": "Vlastní filtr odkazů APK podle regulárního výrazu (výchozí '.apk$')",
|
||||||
"appsPossiblyUpdated": "Byly provedeny pokusy o aktualizaci aplikací",
|
"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í",
|
"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 {}.",
|
"xWasPossiblyUpdatedToY": "{} mohlo být aktualizováno na {}.",
|
||||||
"enableBackgroundUpdates": "Povolit aktualizace na pozadí",
|
"enableBackgroundUpdates": "Povolit aktualizace na pozadí",
|
||||||
"backgroundUpdateReqsExplanation": "Aktualizace na pozadí nemusí být možné pro všechny aplikace.",
|
"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řen Obtainium.",
|
"backgroundUpdateLimitsExplanation": "Úspěšnost instalace na pozadí lze určit pouze v případě, že je otevřen Obtainium.",
|
||||||
@@ -263,6 +263,17 @@
|
|||||||
"debugMenu": "Debug Menu",
|
"debugMenu": "Debug Menu",
|
||||||
"bgTaskStarted": "Background task started - check logs.",
|
"bgTaskStarted": "Background task started - check logs.",
|
||||||
"runBgCheckNow": "Run Background Update Check Now",
|
"runBgCheckNow": "Run Background Update Check Now",
|
||||||
|
"versionExtractWholePage": "Apply Version Extraction Regex to Entire Page",
|
||||||
|
"installing": "Installing",
|
||||||
|
"skipUpdateNotifications": "Skip update notifications",
|
||||||
|
"updatesAvailableNotifChannel": "dostupné aktualizace",
|
||||||
|
"appsUpdatedNotifChannel": "Aplikace aktualizovány",
|
||||||
|
"appsPossiblyUpdatedNotifChannel": "Byly provedeny pokusy o aktualizaci aplikací",
|
||||||
|
"errorCheckingUpdatesNotifChannel": "Chybová kontrola aktualizací",
|
||||||
|
"appsRemovedNotifChannel": "Odstraněné aplikace",
|
||||||
|
"downloadingXNotifChannel": "download {}",
|
||||||
|
"completeAppInstallationNotifChannel": "Dokončit instalaci aplikace",
|
||||||
|
"checkingForUpdatesNotifChannel": "Zkontrolovat aktualizace",
|
||||||
"removeAppQuestion": {
|
"removeAppQuestion": {
|
||||||
"one": "Odstranit Apku?",
|
"one": "Odstranit Apku?",
|
||||||
"other": "Odstranit Apky?"
|
"other": "Odstranit Apky?"
|
||||||
@@ -280,15 +291,15 @@
|
|||||||
"other": "Kontrola aktualizací na pozadí našla {} aktualizací - v případě potřeby upozorní uživatele"
|
"other": "Kontrola aktualizací na pozadí našla {} aktualizací - v případě potřeby upozorní uživatele"
|
||||||
},
|
},
|
||||||
"apps": {
|
"apps": {
|
||||||
"one":"{} App",
|
"one": "{} App",
|
||||||
"other":"{} apps"
|
"other": "{} apps"
|
||||||
},
|
},
|
||||||
"url": {
|
"url": {
|
||||||
"jedna": "{} URL",
|
"jedna": "{} URL",
|
||||||
"other": "{} URLs"
|
"other": "{} URLs"
|
||||||
},
|
},
|
||||||
"minute": {
|
"minute": {
|
||||||
"one":"{} minute",
|
"one": "{} minute",
|
||||||
"other": "{} minutes"
|
"other": "{} minutes"
|
||||||
},
|
},
|
||||||
"hour": {
|
"hour": {
|
||||||
@@ -300,20 +311,19 @@
|
|||||||
"other": "{} dny"
|
"other": "{} dny"
|
||||||
},
|
},
|
||||||
"clearedNLogsBeforeXAfterY": {
|
"clearedNLogsBeforeXAfterY": {
|
||||||
"one":"{n} log vymazán (před = {před}, po = {po})",
|
"one": "{n} log vymazán (před = {před}, po = {po})",
|
||||||
"other": "{n} logů vymazáno (před = {před}, po = {po})"
|
"other": "{n} logů vymazáno (před = {před}, po = {po})"
|
||||||
},
|
},
|
||||||
"xAndNMoreUpdatesAvailable": {
|
"xAndNMoreUpdatesAvailable": {
|
||||||
"one":"{} a 1 další aplikace mají aktualizace.",
|
"one": "{} a 1 další aplikace mají aktualizace.",
|
||||||
"other":"{} a {} další aplikace mají aktualizace."
|
"other": "{} a {} další aplikace mají aktualizace."
|
||||||
},
|
},
|
||||||
"xAndNMoreUpdatesInstalled": {
|
"xAndNMoreUpdatesInstalled": {
|
||||||
"one":"{} a {} další aplikace mají aktualizace.",
|
"one": "{} a {} další aplikace mají aktualizace.",
|
||||||
"další":"{} a {} další aplikace byly aktualizovány."
|
"další": "{} a {} další aplikace byly aktualizovány."
|
||||||
},
|
},
|
||||||
"xAndNMoreUpdatesPossiblyInstalled": {
|
"xAndNMoreUpdatesPossiblyInstalled": {
|
||||||
"one":"{} a {} další aplikace byly možná aktualizovány",
|
"one": "{} a {} další aplikace byly možná aktualizovány",
|
||||||
"other":"{} a {} další aplikace mohly být aktualizovány."
|
"other": "{} a {} další aplikace mohly být aktualizovány."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@@ -170,7 +170,7 @@
|
|||||||
"lastUpdateCheckX": "Letzte Aktualisierungsprüfung: {}",
|
"lastUpdateCheckX": "Letzte Aktualisierungsprüfung: {}",
|
||||||
"remove": "Entfernen",
|
"remove": "Entfernen",
|
||||||
"yesMarkUpdated": "Ja, als aktualisiert markieren",
|
"yesMarkUpdated": "Ja, als aktualisiert markieren",
|
||||||
"fdroid": "F-Droid Official",
|
"fdroid": "offizielles F-Droid-Repo",
|
||||||
"appIdOrName": "App ID oder Name",
|
"appIdOrName": "App ID oder Name",
|
||||||
"appId": "App ID",
|
"appId": "App ID",
|
||||||
"appWithIdOrNameNotFound": "Es wurde keine App mit dieser ID oder diesem Namen gefunden",
|
"appWithIdOrNameNotFound": "Es wurde keine App mit dieser ID oder diesem Namen gefunden",
|
||||||
@@ -242,24 +242,38 @@
|
|||||||
"appsPossiblyUpdated": "App Aktualisierungen wurden versucht",
|
"appsPossiblyUpdated": "App Aktualisierungen wurden versucht",
|
||||||
"appsPossiblyUpdatedNotifDescription": "Benachrichtigt den Benutzer, dass Updates für eine oder mehrere Apps möglicherweise im Hintergrund durchgeführt wurden",
|
"appsPossiblyUpdatedNotifDescription": "Benachrichtigt den Benutzer, dass Updates für eine oder mehrere Apps möglicherweise im Hintergrund durchgeführt wurden",
|
||||||
"xWasPossiblyUpdatedToY": "{} wurde möglicherweise aktualisiert auf {}.",
|
"xWasPossiblyUpdatedToY": "{} wurde möglicherweise aktualisiert auf {}.",
|
||||||
|
"enableBackgroundUpdates": "Aktiviere Hintergrundaktualisierungen",
|
||||||
"backgroundUpdateReqsExplanation": "Die Hintergrundaktualisierung ist möglicherweise nicht für alle Apps möglich.",
|
"backgroundUpdateReqsExplanation": "Die Hintergrundaktualisierung ist möglicherweise nicht für alle Apps möglich.",
|
||||||
"backgroundUpdateLimitsExplanation": "Der Erfolg einer Hintergrundinstallation kann nur festgestellt werden, wenn Obtainium geöffnet wird.",
|
"backgroundUpdateLimitsExplanation": "Der Erfolg einer Hintergrundinstallation kann nur festgestellt werden, wenn Obtainium geöffnet wird.",
|
||||||
"verifyLatestTag": "Überprüfe das „latest“ Tag",
|
"verifyLatestTag": "Überprüfe das „latest“ Tag",
|
||||||
|
"intermediateLinkRegex": "Filter für einen „Zwischen“-Link, der zuerst besucht werden soll",
|
||||||
|
"intermediateLinkNotFound": "„Zwischen“link nicht gefunden",
|
||||||
"exemptFromBackgroundUpdates": "Ausschluss von Hintergrundaktualisierungen (falls aktiviert)",
|
"exemptFromBackgroundUpdates": "Ausschluss von Hintergrundaktualisierungen (falls aktiviert)",
|
||||||
"bgUpdatesOnWiFiOnly": "Hintergrundaktualisierungen deaktivieren, wenn kein WLAN vorhanden ist",
|
"bgUpdatesOnWiFiOnly": "Hintergrundaktualisierungen deaktivieren, wenn kein WLAN vorhanden ist",
|
||||||
"autoSelectHighestVersionCode": "Automatisch höchste APK-Code-Version auswählen",
|
"autoSelectHighestVersionCode": "Automatisch höchste APK-Code-Version auswählen",
|
||||||
"versionExtractionRegEx": "Versions-Extraktion RegEx",
|
"versionExtractionRegEx": "Versions-Extraktion per RegEx",
|
||||||
"matchGroupToUse": "Zu verwendende Gruppe abgleichen",
|
"matchGroupToUse": "Zu verwendende Gruppe abgleichen",
|
||||||
"highlightTouchTargets": "Weniger offensichtliche Ziele hervorheben",
|
"highlightTouchTargets": "Weniger offensichtliche Ziele hervorheben",
|
||||||
"pickExportDir": "Export-Verzeichnis wählen",
|
"pickExportDir": "Export-Verzeichnis wählen",
|
||||||
"autoExportOnChanges": "Automatischer Export bei Änderung",
|
"autoExportOnChanges": "Automatischer Export bei Änderung",
|
||||||
"filterVersionsByRegEx": "Versionen nach regulären Ausdrücken filtern",
|
"filterVersionsByRegEx": "Versionen nach regulären Ausdrücken filtern",
|
||||||
"trySelectingSuggestedVersionCode": "Versuchen, die vorgeschlagene APK-Code-Version auszuwählen",
|
"trySelectingSuggestedVersionCode": "Versuchen, die vorgeschlagene APK-Code-Version auszuwählen",
|
||||||
"dontSortReleasesList": "Retain release order from API",
|
"dontSortReleasesList": "Freigaberelease von der API ordern",
|
||||||
"reverseSort": "Umgekehrtes Sortieren",
|
"reverseSort": "Umgekehrtes Sortieren",
|
||||||
"debugMenu": "Debug Menü",
|
"debugMenu": "Debug-Menü",
|
||||||
"bgTaskStarted": "Hintergrundaufgabe gestartet – Logs prüfen.",
|
"bgTaskStarted": "Hintergrundaufgabe gestartet – Logs prüfen.",
|
||||||
"runBgCheckNow": "Hintergrundaktualisierungsprüfung jetzt durchführen",
|
"runBgCheckNow": "Hintergrundaktualisierungsprüfung jetzt durchführen",
|
||||||
|
"versionExtractWholePage": "Versions-Extraktion per RegEx auf die gesamte Seite anwenden",
|
||||||
|
"installing": "Installiere",
|
||||||
|
"skipUpdateNotifications": "Keine Benachrichtigung zu App-Updates geben",
|
||||||
|
"updatesAvailableNotifChannel": "Aktualisierungen verfügbar",
|
||||||
|
"appsUpdatedNotifChannel": "Apps aktualisiert",
|
||||||
|
"appsPossiblyUpdatedNotifChannel": "App Aktualisierungen wurden versucht",
|
||||||
|
"errorCheckingUpdatesNotifChannel": "Fehler beim Prüfen auf Aktualisierungen",
|
||||||
|
"appsRemovedNotifChannel": "Apps entfernt",
|
||||||
|
"downloadingXNotifChannel": "Lade {} herunter",
|
||||||
|
"completeAppInstallationNotifChannel": "App Installation abschließen",
|
||||||
|
"checkingForUpdatesNotifChannel": "Nach Aktualisierungen suchen",
|
||||||
"removeAppQuestion": {
|
"removeAppQuestion": {
|
||||||
"one": "App entfernen?",
|
"one": "App entfernen?",
|
||||||
"other": "Apps entfernen?"
|
"other": "Apps entfernen?"
|
||||||
@@ -297,8 +311,8 @@
|
|||||||
"other": "{} Tage"
|
"other": "{} Tage"
|
||||||
},
|
},
|
||||||
"clearedNLogsBeforeXAfterY": {
|
"clearedNLogsBeforeXAfterY": {
|
||||||
"one": "{n} Log gelöscht (vorher = {vorher}, nachher = {nachher})",
|
"one": "{n} Log gelöscht (vorher = {before}, nachher = {after})",
|
||||||
"other": "{n} Logs gelöscht (vorher = {vorher}, nachher = {nachher})"
|
"other": "{n} Logs gelöscht (vorher = {before}, nachher = {after})"
|
||||||
},
|
},
|
||||||
"xAndNMoreUpdatesAvailable": {
|
"xAndNMoreUpdatesAvailable": {
|
||||||
"one": "{} und 1 weitere App haben Aktualisierungen.",
|
"one": "{} und 1 weitere App haben Aktualisierungen.",
|
||||||
|
@@ -252,7 +252,7 @@
|
|||||||
"bgUpdatesOnWiFiOnly": "Disable background updates when not on WiFi",
|
"bgUpdatesOnWiFiOnly": "Disable background updates when not on WiFi",
|
||||||
"autoSelectHighestVersionCode": "Auto-select highest versionCode APK",
|
"autoSelectHighestVersionCode": "Auto-select highest versionCode APK",
|
||||||
"versionExtractionRegEx": "Version Extraction RegEx",
|
"versionExtractionRegEx": "Version Extraction RegEx",
|
||||||
"matchGroupToUse": "Match Group to Use",
|
"matchGroupToUse": "Match Group to Use for Version Extraction Regex",
|
||||||
"highlightTouchTargets": "Highlight less obvious touch targets",
|
"highlightTouchTargets": "Highlight less obvious touch targets",
|
||||||
"pickExportDir": "Pick Export Directory",
|
"pickExportDir": "Pick Export Directory",
|
||||||
"autoExportOnChanges": "Auto-export on changes",
|
"autoExportOnChanges": "Auto-export on changes",
|
||||||
@@ -263,6 +263,17 @@
|
|||||||
"debugMenu": "Debug Menu",
|
"debugMenu": "Debug Menu",
|
||||||
"bgTaskStarted": "Background task started - check logs.",
|
"bgTaskStarted": "Background task started - check logs.",
|
||||||
"runBgCheckNow": "Run Background Update Check Now",
|
"runBgCheckNow": "Run Background Update Check Now",
|
||||||
|
"versionExtractWholePage": "Apply Version Extraction Regex to Entire Page",
|
||||||
|
"installing": "Installing",
|
||||||
|
"skipUpdateNotifications": "Skip update notifications",
|
||||||
|
"updatesAvailableNotifChannel": "Updates Available",
|
||||||
|
"appsUpdatedNotifChannel": "Apps Updated",
|
||||||
|
"appsPossiblyUpdatedNotifChannel": "App Updates Attempted",
|
||||||
|
"errorCheckingUpdatesNotifChannel": "Error Checking for Updates",
|
||||||
|
"appsRemovedNotifChannel": "Apps Removed",
|
||||||
|
"downloadingXNotifChannel": "Downloading {}",
|
||||||
|
"completeAppInstallationNotifChannel": "Complete App Installation",
|
||||||
|
"checkingForUpdatesNotifChannel": "Checking for Updates",
|
||||||
"removeAppQuestion": {
|
"removeAppQuestion": {
|
||||||
"one": "Remove App?",
|
"one": "Remove App?",
|
||||||
"other": "Remove Apps?"
|
"other": "Remove Apps?"
|
||||||
@@ -315,4 +326,4 @@
|
|||||||
"one": "{} and 1 more app may have been updated.",
|
"one": "{} and 1 more app may have been updated.",
|
||||||
"other": "{} and {} more apps may have been updated."
|
"other": "{} and {} more apps may have been updated."
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -242,9 +242,12 @@
|
|||||||
"appsPossiblyUpdated": "App Updates Attempted",
|
"appsPossiblyUpdated": "App Updates Attempted",
|
||||||
"appsPossiblyUpdatedNotifDescription": "Notifies the user that updates to one or more Apps were potentially applied in the background",
|
"appsPossiblyUpdatedNotifDescription": "Notifies the user that updates to one or more Apps were potentially applied in the background",
|
||||||
"xWasPossiblyUpdatedToY": "{} may have been updated to {}.",
|
"xWasPossiblyUpdatedToY": "{} may have been updated to {}.",
|
||||||
|
"enableBackgroundUpdates": "Enable background updates",
|
||||||
"backgroundUpdateReqsExplanation": "Background updates may not be possible for all apps.",
|
"backgroundUpdateReqsExplanation": "Background updates may not be possible for all apps.",
|
||||||
"backgroundUpdateLimitsExplanation": "The success of a background install can only be determined when Obtainium is opened.",
|
"backgroundUpdateLimitsExplanation": "The success of a background install can only be determined when Obtainium is opened.",
|
||||||
"verifyLatestTag": "Verify the 'latest' tag",
|
"verifyLatestTag": "Verify the 'latest' tag",
|
||||||
|
"intermediateLinkRegex": "Filter for an 'Intermediate' Link to Visit First",
|
||||||
|
"intermediateLinkNotFound": "Intermediate link not found",
|
||||||
"exemptFromBackgroundUpdates": "Exempt from background updates (if enabled)",
|
"exemptFromBackgroundUpdates": "Exempt from background updates (if enabled)",
|
||||||
"bgUpdatesOnWiFiOnly": "Disable background updates when not on WiFi",
|
"bgUpdatesOnWiFiOnly": "Disable background updates when not on WiFi",
|
||||||
"autoSelectHighestVersionCode": "Auto-select highest versionCode APK",
|
"autoSelectHighestVersionCode": "Auto-select highest versionCode APK",
|
||||||
@@ -260,6 +263,17 @@
|
|||||||
"debugMenu": "Debug Menu",
|
"debugMenu": "Debug Menu",
|
||||||
"bgTaskStarted": "Background task started - check logs.",
|
"bgTaskStarted": "Background task started - check logs.",
|
||||||
"runBgCheckNow": "Run Background Update Check Now",
|
"runBgCheckNow": "Run Background Update Check Now",
|
||||||
|
"versionExtractWholePage": "Apply Version Extraction Regex to Entire Page",
|
||||||
|
"installing": "Installing",
|
||||||
|
"skipUpdateNotifications": "Skip update notifications",
|
||||||
|
"updatesAvailableNotifChannel": "Actualizaciones Disponibles",
|
||||||
|
"appsUpdatedNotifChannel": "Aplicaciones Actualizadas",
|
||||||
|
"appsPossiblyUpdatedNotifChannel": "App Updates Attempted",
|
||||||
|
"errorCheckingUpdatesNotifChannel": "Error Buscando Actualizaciones",
|
||||||
|
"appsRemovedNotifChannel": "Aplicaciones Eliminadas",
|
||||||
|
"downloadingXNotifChannel": "Descargando {}",
|
||||||
|
"completeAppInstallationNotifChannel": "Instalación Completa de la Aplicación",
|
||||||
|
"checkingForUpdatesNotifChannel": "Buscando Actualizaciones",
|
||||||
"removeAppQuestion": {
|
"removeAppQuestion": {
|
||||||
"one": "¿Eliminar Aplicación?",
|
"one": "¿Eliminar Aplicación?",
|
||||||
"other": "¿Eliminar Aplicaciones?"
|
"other": "¿Eliminar Aplicaciones?"
|
||||||
@@ -312,4 +326,4 @@
|
|||||||
"one": "{} and 1 more app may have been updated.",
|
"one": "{} and 1 more app may have been updated.",
|
||||||
"other": "{} and {} more apps may have been updated."
|
"other": "{} and {} more apps may have been updated."
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -242,9 +242,12 @@
|
|||||||
"appsPossiblyUpdated": "App Updates Attempted",
|
"appsPossiblyUpdated": "App Updates Attempted",
|
||||||
"appsPossiblyUpdatedNotifDescription": "Notifies the user that updates to one or more Apps were potentially applied in the background",
|
"appsPossiblyUpdatedNotifDescription": "Notifies the user that updates to one or more Apps were potentially applied in the background",
|
||||||
"xWasPossiblyUpdatedToY": "{} may have been updated to {}.",
|
"xWasPossiblyUpdatedToY": "{} may have been updated to {}.",
|
||||||
|
"enableBackgroundUpdates": "Enable background updates",
|
||||||
"backgroundUpdateReqsExplanation": "Background updates may not be possible for all apps.",
|
"backgroundUpdateReqsExplanation": "Background updates may not be possible for all apps.",
|
||||||
"backgroundUpdateLimitsExplanation": "The success of a background install can only be determined when Obtainium is opened.",
|
"backgroundUpdateLimitsExplanation": "The success of a background install can only be determined when Obtainium is opened.",
|
||||||
"verifyLatestTag": "Verify the 'latest' tag",
|
"verifyLatestTag": "Verify the 'latest' tag",
|
||||||
|
"intermediateLinkRegex": "Filter for an 'Intermediate' Link to Visit First",
|
||||||
|
"intermediateLinkNotFound": "Intermediate link not found",
|
||||||
"exemptFromBackgroundUpdates": "Exempt from background updates (if enabled)",
|
"exemptFromBackgroundUpdates": "Exempt from background updates (if enabled)",
|
||||||
"bgUpdatesOnWiFiOnly": "Disable background updates when not on WiFi",
|
"bgUpdatesOnWiFiOnly": "Disable background updates when not on WiFi",
|
||||||
"autoSelectHighestVersionCode": "Auto-select highest versionCode APK",
|
"autoSelectHighestVersionCode": "Auto-select highest versionCode APK",
|
||||||
@@ -260,6 +263,17 @@
|
|||||||
"debugMenu": "Debug Menu",
|
"debugMenu": "Debug Menu",
|
||||||
"bgTaskStarted": "Background task started - check logs.",
|
"bgTaskStarted": "Background task started - check logs.",
|
||||||
"runBgCheckNow": "Run Background Update Check Now",
|
"runBgCheckNow": "Run Background Update Check Now",
|
||||||
|
"versionExtractWholePage": "Apply Version Extraction Regex to Entire Page",
|
||||||
|
"installing": "Installing",
|
||||||
|
"skipUpdateNotifications": "Skip update notifications",
|
||||||
|
"updatesAvailableNotifChannel": "بروزرسانی در دسترس ",
|
||||||
|
"appsUpdatedNotifChannel": "برنامه ها به روز شدند",
|
||||||
|
"appsPossiblyUpdatedNotifChannel": "App Updates Attempted",
|
||||||
|
"errorCheckingUpdatesNotifChannel": "خطا در بررسی بهروزرسانیها",
|
||||||
|
"appsRemovedNotifChannel": "برنامه ها حذف شدند",
|
||||||
|
"downloadingXNotifChannel": "در حال دانلود {}",
|
||||||
|
"completeAppInstallationNotifChannel": "نصب کامل برنامه",
|
||||||
|
"checkingForUpdatesNotifChannel": "بررسی بهروزرسانیها",
|
||||||
"removeAppQuestion": {
|
"removeAppQuestion": {
|
||||||
"one": "برنامه حذف شود؟",
|
"one": "برنامه حذف شود؟",
|
||||||
"other": "برنامه ها حذف شوند؟"
|
"other": "برنامه ها حذف شوند؟"
|
||||||
@@ -312,4 +326,4 @@
|
|||||||
"one": "{} and 1 more app may have been updated.",
|
"one": "{} and 1 more app may have been updated.",
|
||||||
"other": "{} and {} more apps may have been updated."
|
"other": "{} and {} more apps may have been updated."
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -242,9 +242,12 @@
|
|||||||
"appsPossiblyUpdated": "App Updates Attempted",
|
"appsPossiblyUpdated": "App Updates Attempted",
|
||||||
"appsPossiblyUpdatedNotifDescription": "Notifies the user that updates to one or more Apps were potentially applied in the background",
|
"appsPossiblyUpdatedNotifDescription": "Notifies the user that updates to one or more Apps were potentially applied in the background",
|
||||||
"xWasPossiblyUpdatedToY": "{} may have been updated to {}.",
|
"xWasPossiblyUpdatedToY": "{} may have been updated to {}.",
|
||||||
|
"enableBackgroundUpdates": "Enable background updates",
|
||||||
"backgroundUpdateReqsExplanation": "Background updates may not be possible for all apps.",
|
"backgroundUpdateReqsExplanation": "Background updates may not be possible for all apps.",
|
||||||
"backgroundUpdateLimitsExplanation": "The success of a background install can only be determined when Obtainium is opened.",
|
"backgroundUpdateLimitsExplanation": "The success of a background install can only be determined when Obtainium is opened.",
|
||||||
"verifyLatestTag": "Verify the 'latest' tag",
|
"verifyLatestTag": "Verify the 'latest' tag",
|
||||||
|
"intermediateLinkRegex": "Filter for an 'Intermediate' Link to Visit First",
|
||||||
|
"intermediateLinkNotFound": "Intermediate link not found",
|
||||||
"exemptFromBackgroundUpdates": "Exempt from background updates (if enabled)",
|
"exemptFromBackgroundUpdates": "Exempt from background updates (if enabled)",
|
||||||
"bgUpdatesOnWiFiOnly": "Disable background updates when not on WiFi",
|
"bgUpdatesOnWiFiOnly": "Disable background updates when not on WiFi",
|
||||||
"autoSelectHighestVersionCode": "Auto-select highest versionCode APK",
|
"autoSelectHighestVersionCode": "Auto-select highest versionCode APK",
|
||||||
@@ -260,6 +263,17 @@
|
|||||||
"debugMenu": "Debug Menu",
|
"debugMenu": "Debug Menu",
|
||||||
"bgTaskStarted": "Background task started - check logs.",
|
"bgTaskStarted": "Background task started - check logs.",
|
||||||
"runBgCheckNow": "Run Background Update Check Now",
|
"runBgCheckNow": "Run Background Update Check Now",
|
||||||
|
"versionExtractWholePage": "Apply Version Extraction Regex to Entire Page",
|
||||||
|
"installing": "Installing",
|
||||||
|
"skipUpdateNotifications": "Skip update notifications",
|
||||||
|
"updatesAvailableNotifChannel": "Mises à jour disponibles",
|
||||||
|
"appsUpdatedNotifChannel": "Applications mises à jour",
|
||||||
|
"appsPossiblyUpdatedNotifChannel": "App Updates Attempted",
|
||||||
|
"errorCheckingUpdatesNotifChannel": "Erreur lors de la vérification des mises à jour",
|
||||||
|
"appsRemovedNotifChannel": "Applications supprimées",
|
||||||
|
"downloadingXNotifChannel": "Téléchargement {}",
|
||||||
|
"completeAppInstallationNotifChannel": "Installation complète de l'application",
|
||||||
|
"checkingForUpdatesNotifChannel": "Vérification des mises à jour",
|
||||||
"removeAppQuestion": {
|
"removeAppQuestion": {
|
||||||
"one": "Supprimer l'application ?",
|
"one": "Supprimer l'application ?",
|
||||||
"other": "Supprimer les applications ?"
|
"other": "Supprimer les applications ?"
|
||||||
@@ -312,4 +326,4 @@
|
|||||||
"one": "{} and 1 more app may have been updated.",
|
"one": "{} and 1 more app may have been updated.",
|
||||||
"other": "{} and {} more apps may have been updated."
|
"other": "{} and {} more apps may have been updated."
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,315 +1,329 @@
|
|||||||
{
|
{
|
||||||
"invalidURLForSource": "Érvénytelen a(z) {} app URL-je",
|
"invalidURLForSource": "Érvénytelen a(z) {} app URL-je",
|
||||||
"noReleaseFound": "Nem található megfelelő kiadás",
|
"noReleaseFound": "Nem található megfelelő kiadás",
|
||||||
"noVersionFound": "Nem sikerült meghatározni a kiadás verzióját",
|
"noVersionFound": "Nem sikerült meghatározni a kiadás verzióját",
|
||||||
"urlMatchesNoSource": "Az URL nem egyezik ismert forrással",
|
"urlMatchesNoSource": "Az URL nem egyezik ismert forrással",
|
||||||
"cantInstallOlderVersion": "Nem telepíthető egy app régebbi verziója",
|
"cantInstallOlderVersion": "Nem telepíthető egy app régebbi verziója",
|
||||||
"appIdMismatch": "A letöltött csomagazonosító nem egyezik a meglévő app azonosítóval",
|
"appIdMismatch": "A letöltött csomagazonosító nem egyezik a meglévő app azonosítóval",
|
||||||
"functionNotImplemented": "Ez az osztály nem valósította meg ezt a függvényt",
|
"functionNotImplemented": "Ez az osztály nem valósította meg ezt a függvényt",
|
||||||
"placeholder": "Helykitöltő",
|
"placeholder": "Helykitöltő",
|
||||||
"someErrors": "Néhány hiba történt",
|
"someErrors": "Néhány hiba történt",
|
||||||
"unexpectedError": "Váratlan hiba",
|
"unexpectedError": "Váratlan hiba",
|
||||||
"ok": "Oké",
|
"ok": "Oké",
|
||||||
"and": "és",
|
"and": "és",
|
||||||
"githubPATLabel": "GitHub Personal Access Token (megnöveli a díjkorlátot)",
|
"githubPATLabel": "GitHub Personal Access Token (megnöveli a díjkorlátot)",
|
||||||
"includePrereleases": "Tartalmazza az előzetes kiadásokat",
|
"includePrereleases": "Tartalmazza az előzetes kiadásokat",
|
||||||
"fallbackToOlderReleases": "Visszatérés a régebbi kiadásokhoz",
|
"fallbackToOlderReleases": "Visszatérés a régebbi kiadásokhoz",
|
||||||
"filterReleaseTitlesByRegEx": "A kiadás címeinek szűrése reguláris kifejezéssel",
|
"filterReleaseTitlesByRegEx": "A kiadás címeinek szűrése reguláris kifejezéssel",
|
||||||
"invalidRegEx": "Érvénytelen reguláris kifejezés",
|
"invalidRegEx": "Érvénytelen reguláris kifejezés",
|
||||||
"noDescription": "Nincs leírás",
|
"noDescription": "Nincs leírás",
|
||||||
"cancel": "Mégse",
|
"cancel": "Mégse",
|
||||||
"continue": "Tovább",
|
"continue": "Tovább",
|
||||||
"requiredInBrackets": "(Kötelező)",
|
"requiredInBrackets": "(Kötelező)",
|
||||||
"dropdownNoOptsError": "HIBA: A LEDOBÁST LEGALÁBB EGY OPCIÓHOZ KELL RENDELNI",
|
"dropdownNoOptsError": "HIBA: A LEDOBÁST LEGALÁBB EGY OPCIÓHOZ KELL RENDELNI",
|
||||||
"colour": "Szín",
|
"colour": "Szín",
|
||||||
"githubStarredRepos": "GitHub Csillagos Repo-k",
|
"githubStarredRepos": "GitHub Csillagos Repo-k",
|
||||||
"uname": "Felh.név",
|
"uname": "Felh.név",
|
||||||
"wrongArgNum": "Rossz számú argumentumot adott meg",
|
"wrongArgNum": "Rossz számú argumentumot adott meg",
|
||||||
"xIsTrackOnly": "A(z) {} csak nyomonkövethető",
|
"xIsTrackOnly": "A(z) {} csak nyomonkövethető",
|
||||||
"source": "Forrás",
|
"source": "Forrás",
|
||||||
"app": "App",
|
"app": "App",
|
||||||
"appsFromSourceAreTrackOnly": "Az ebből a forrásból származó alkalmazások 'Csak nyomon követhetőek'.",
|
"appsFromSourceAreTrackOnly": "Az ebből a forrásból származó alkalmazások 'Csak nyomon követhetőek'.",
|
||||||
"youPickedTrackOnly": "A 'Csak követés' opciót választotta.",
|
"youPickedTrackOnly": "A 'Csak követés' opciót választotta.",
|
||||||
"trackOnlyAppDescription": "Az alkalmazás frissítéseit nyomon követi, de az Obtainium nem tudja letölteni vagy telepíteni.",
|
"trackOnlyAppDescription": "Az alkalmazás frissítéseit nyomon követi, de az Obtainium nem tudja letölteni vagy telepíteni.",
|
||||||
"cancelled": "Törölve",
|
"cancelled": "Törölve",
|
||||||
"appAlreadyAdded": "Az app már hozzáadva",
|
"appAlreadyAdded": "Az app már hozzáadva",
|
||||||
"alreadyUpToDateQuestion": "Az app már naprakész?",
|
"alreadyUpToDateQuestion": "Az app már naprakész?",
|
||||||
"addApp": "App hozzáadás",
|
"addApp": "App hozzáadás",
|
||||||
"appSourceURL": "App forrás URL",
|
"appSourceURL": "App forrás URL",
|
||||||
"error": "Hiba",
|
"error": "Hiba",
|
||||||
"add": "Hozzáadás",
|
"add": "Hozzáadás",
|
||||||
"searchSomeSourcesLabel": "Keresés (csak egyes források)",
|
"searchSomeSourcesLabel": "Keresés (csak egyes források)",
|
||||||
"search": "Keresés",
|
"search": "Keresés",
|
||||||
"additionalOptsFor": "További lehetőségek a következőhöz: {}",
|
"additionalOptsFor": "További lehetőségek a következőhöz: {}",
|
||||||
"supportedSources": "Támogatott források",
|
"supportedSources": "Támogatott források",
|
||||||
"trackOnlyInBrackets": "(Csak nyomonkövetés)",
|
"trackOnlyInBrackets": "(Csak nyomonkövetés)",
|
||||||
"searchableInBrackets": "(Kereshető)",
|
"searchableInBrackets": "(Kereshető)",
|
||||||
"appsString": "Appok",
|
"appsString": "Appok",
|
||||||
"noApps": "Nincs App",
|
"noApps": "Nincs App",
|
||||||
"noAppsForFilter": "Nincsenek appok a szűrőhöz",
|
"noAppsForFilter": "Nincsenek appok a szűrőhöz",
|
||||||
"byX": "Fejlesztő: {}",
|
"byX": "Fejlesztő: {}",
|
||||||
"percentProgress": "Folyamat: {}%",
|
"percentProgress": "Folyamat: {}%",
|
||||||
"pleaseWait": "Kis türelmet",
|
"pleaseWait": "Kis türelmet",
|
||||||
"updateAvailable": "Frissítés érhető el",
|
"updateAvailable": "Frissítés érhető el",
|
||||||
"estimateInBracketsShort": "(Becsült)",
|
"estimateInBracketsShort": "(Becsült)",
|
||||||
"notInstalled": "Nem telepített",
|
"notInstalled": "Nem telepített",
|
||||||
"estimateInBrackets": "(Becslés)",
|
"estimateInBrackets": "(Becslés)",
|
||||||
"selectAll": "Mindet kiválaszt",
|
"selectAll": "Mindet kiválaszt",
|
||||||
"deselectN": "Törölje {} kijelölését",
|
"deselectN": "Törölje {} kijelölését",
|
||||||
"xWillBeRemovedButRemainInstalled": "A(z) {} el lesz távolítva az Obtainiumból, de továbbra is telepítve marad az eszközön.",
|
"xWillBeRemovedButRemainInstalled": "A(z) {} el lesz távolítva az Obtainiumból, de továbbra is telepítve marad az eszközön.",
|
||||||
"removeSelectedAppsQuestion": "Eltávolítja a kiválasztott appokat?",
|
"removeSelectedAppsQuestion": "Eltávolítja a kiválasztott appokat?",
|
||||||
"removeSelectedApps": "Távolítsa el a kiválasztott appokat",
|
"removeSelectedApps": "Távolítsa el a kiválasztott appokat",
|
||||||
"updateX": "Frissítés: {}",
|
"updateX": "Frissítés: {}",
|
||||||
"installX": "Telepítés: {}",
|
"installX": "Telepítés: {}",
|
||||||
"markXTrackOnlyAsUpdated": "Jelölje meg: {}\n(Csak nyomon követhető)\nmint Frissített",
|
"markXTrackOnlyAsUpdated": "Jelölje meg: {}\n(Csak nyomon követhető)\nmint Frissített",
|
||||||
"changeX": "Változás {}",
|
"changeX": "Változás {}",
|
||||||
"installUpdateApps": "Appok telepítése/frissítése",
|
"installUpdateApps": "Appok telepítése/frissítése",
|
||||||
"installUpdateSelectedApps": "Telepítse/frissítse a kiválasztott appokat",
|
"installUpdateSelectedApps": "Telepítse/frissítse a kiválasztott appokat",
|
||||||
"markXSelectedAppsAsUpdated": "Megjelöl {} kiválasztott alkalmazást frissítettként?",
|
"markXSelectedAppsAsUpdated": "Megjelöl {} kiválasztott alkalmazást frissítettként?",
|
||||||
"no": "Nem",
|
"no": "Nem",
|
||||||
"yes": "Igen",
|
"yes": "Igen",
|
||||||
"markSelectedAppsUpdated": "Jelölje meg a kiválasztott appokat frissítettként",
|
"markSelectedAppsUpdated": "Jelölje meg a kiválasztott appokat frissítettként",
|
||||||
"pinToTop": "Rögzítés felülre",
|
"pinToTop": "Rögzítés felülre",
|
||||||
"unpinFromTop": "Eltávolít felülről",
|
"unpinFromTop": "Eltávolít felülről",
|
||||||
"resetInstallStatusForSelectedAppsQuestion": "Visszaállítja a kiválasztott appok telepítési állapotát?",
|
"resetInstallStatusForSelectedAppsQuestion": "Visszaállítja a kiválasztott appok telepítési állapotát?",
|
||||||
"installStatusOfXWillBeResetExplanation": "A kiválasztott appok telepítési állapota visszaáll.\n\nEz akkor segíthet, ha az Obtainiumban megjelenített app verzió hibás, frissítések vagy egyéb problémák miatt.",
|
"installStatusOfXWillBeResetExplanation": "A kiválasztott appok telepítési állapota visszaáll.\n\nEz akkor segíthet, ha az Obtainiumban megjelenített app verzió hibás, frissítések vagy egyéb problémák miatt.",
|
||||||
"shareSelectedAppURLs": "Ossza meg a kiválasztott app URL címeit",
|
"shareSelectedAppURLs": "Ossza meg a kiválasztott app URL címeit",
|
||||||
"resetInstallStatus": "Telepítési állapot visszaállítása",
|
"resetInstallStatus": "Telepítési állapot visszaállítása",
|
||||||
"more": "További",
|
"more": "További",
|
||||||
"removeOutdatedFilter": "Távolítsa el az elavult app szűrőt",
|
"removeOutdatedFilter": "Távolítsa el az elavult app szűrőt",
|
||||||
"showOutdatedOnly": "Csak az elavult appok megjelenítése",
|
"showOutdatedOnly": "Csak az elavult appok megjelenítése",
|
||||||
"filter": "Szűrő",
|
"filter": "Szűrő",
|
||||||
"filterActive": "Szűrő *",
|
"filterActive": "Szűrő *",
|
||||||
"filterApps": "Appok szűrése",
|
"filterApps": "Appok szűrése",
|
||||||
"appName": "App név",
|
"appName": "App név",
|
||||||
"author": "Szerző",
|
"author": "Szerző",
|
||||||
"upToDateApps": "Naprakész appok",
|
"upToDateApps": "Naprakész appok",
|
||||||
"nonInstalledApps": "Nem telepített appok",
|
"nonInstalledApps": "Nem telepített appok",
|
||||||
"importExport": "Import/Export",
|
"importExport": "Import/Export",
|
||||||
"settings": "Beállítások",
|
"settings": "Beállítások",
|
||||||
"exportedTo": "Exportálva ide {}",
|
"exportedTo": "Exportálva ide {}",
|
||||||
"obtainiumExport": "Obtainium Adat Exportálás",
|
"obtainiumExport": "Obtainium Adat Exportálás",
|
||||||
"invalidInput": "Hibás bemenet",
|
"invalidInput": "Hibás bemenet",
|
||||||
"importedX": "Importálva innen {}",
|
"importedX": "Importálva innen {}",
|
||||||
"obtainiumImport": "Obtainium Adat Importálás",
|
"obtainiumImport": "Obtainium Adat Importálás",
|
||||||
"importFromURLList": "Importálás URL listából",
|
"importFromURLList": "Importálás URL listából",
|
||||||
"searchQuery": "Keresési lekérdezés",
|
"searchQuery": "Keresési lekérdezés",
|
||||||
"appURLList": "App URL lista",
|
"appURLList": "App URL lista",
|
||||||
"line": "Sor",
|
"line": "Sor",
|
||||||
"searchX": "Keresés {}",
|
"searchX": "Keresés {}",
|
||||||
"noResults": "Nincs találat",
|
"noResults": "Nincs találat",
|
||||||
"importX": "Import {}",
|
"importX": "Import {}",
|
||||||
"importedAppsIdDisclaimer": "Előfordulhat, hogy az importált appok helytelenül \"Nincs telepítve\" jelzéssel jelennek meg.\nA probléma megoldásához telepítse újra őket az Obtainiumon keresztül.\nEz nem érinti az alkalmazásadatokat.\n\nCsak az URL-ekre és a harmadik féltől származó importálási módszerekre vonatkozik..",
|
"importedAppsIdDisclaimer": "Előfordulhat, hogy az importált appok helytelenül \"Nincs telepítve\" jelzéssel jelennek meg.\nA probléma megoldásához telepítse újra őket az Obtainiumon keresztül.\nEz nem érinti az alkalmazásadatokat.\n\nCsak az URL-ekre és a harmadik féltől származó importálási módszerekre vonatkozik..",
|
||||||
"importErrors": "Importálási hibák",
|
"importErrors": "Importálási hibák",
|
||||||
"importedXOfYApps": "{}/{} app importálva.",
|
"importedXOfYApps": "{}/{} app importálva.",
|
||||||
"followingURLsHadErrors": "A következő URL-ek hibákat tartalmaztak:",
|
"followingURLsHadErrors": "A következő URL-ek hibákat tartalmaztak:",
|
||||||
"okay": "Oké",
|
"okay": "Oké",
|
||||||
"selectURL": "Válassza ki az URL-t",
|
"selectURL": "Válassza ki az URL-t",
|
||||||
"selectURLs": "Kiválasztott URL-ek",
|
"selectURLs": "Kiválasztott URL-ek",
|
||||||
"pick": "Válasszon",
|
"pick": "Válasszon",
|
||||||
"theme": "Téma",
|
"theme": "Téma",
|
||||||
"dark": "Sötét",
|
"dark": "Sötét",
|
||||||
"light": "Világos",
|
"light": "Világos",
|
||||||
"followSystem": "Rendszer szerint",
|
"followSystem": "Rendszer szerint",
|
||||||
"obtainium": "Obtainium",
|
"obtainium": "Obtainium",
|
||||||
"materialYou": "Material You",
|
"materialYou": "Material You",
|
||||||
"useBlackTheme": "Használjon tiszta fekete sötét témát",
|
"useBlackTheme": "Használjon tiszta fekete sötét témát",
|
||||||
"appSortBy": "App rendezés...",
|
"appSortBy": "App rendezés...",
|
||||||
"authorName": "Szerző/Név",
|
"authorName": "Szerző/Név",
|
||||||
"nameAuthor": "Név/Szerző",
|
"nameAuthor": "Név/Szerző",
|
||||||
"asAdded": "Mint Hozzáadott",
|
"asAdded": "Mint Hozzáadott",
|
||||||
"appSortOrder": "Appok rendezése",
|
"appSortOrder": "Appok rendezése",
|
||||||
"ascending": "Emelkedő",
|
"ascending": "Emelkedő",
|
||||||
"descending": "Csökkenő",
|
"descending": "Csökkenő",
|
||||||
"bgUpdateCheckInterval": "Háttérfrissítés ellenőrzés időköze",
|
"bgUpdateCheckInterval": "Háttérfrissítés ellenőrzés időköze",
|
||||||
"neverManualOnly": "Soha – csak manuális",
|
"neverManualOnly": "Soha – csak manuális",
|
||||||
"appearance": "Megjelenés",
|
"appearance": "Megjelenés",
|
||||||
"showWebInAppView": "Forrás megjelenítése az Appok nézetben",
|
"showWebInAppView": "Forrás megjelenítése az Appok nézetben",
|
||||||
"pinUpdates": "Frissítések kitűzése az App nézet tetejére",
|
"pinUpdates": "Frissítések kitűzése az App nézet tetejére",
|
||||||
"updates": "Frissítések",
|
"updates": "Frissítések",
|
||||||
"sourceSpecific": "Forrás-specifikus",
|
"sourceSpecific": "Forrás-specifikus",
|
||||||
"appSource": "App forrás",
|
"appSource": "App forrás",
|
||||||
"noLogs": "Nincsenek naplók",
|
"noLogs": "Nincsenek naplók",
|
||||||
"appLogs": "App naplók",
|
"appLogs": "App naplók",
|
||||||
"close": "Bezárás",
|
"close": "Bezárás",
|
||||||
"share": "Megosztás",
|
"share": "Megosztás",
|
||||||
"appNotFound": "App nem található",
|
"appNotFound": "App nem található",
|
||||||
"obtainiumExportHyphenatedLowercase": "obtainium-export",
|
"obtainiumExportHyphenatedLowercase": "obtainium-export",
|
||||||
"pickAnAPK": "Válasszon egy APK-t",
|
"pickAnAPK": "Válasszon egy APK-t",
|
||||||
"appHasMoreThanOnePackage": "A(z) {} egynél több csomaggal rendelkezik:",
|
"appHasMoreThanOnePackage": "A(z) {} egynél több csomaggal rendelkezik:",
|
||||||
"deviceSupportsXArch": "Eszköze támogatja a {} CPU architektúrát.",
|
"deviceSupportsXArch": "Eszköze támogatja a {} CPU architektúrát.",
|
||||||
"deviceSupportsFollowingArchs": "Az eszköze a következő CPU architektúrákat támogatja:",
|
"deviceSupportsFollowingArchs": "Az eszköze a következő CPU architektúrákat támogatja:",
|
||||||
"warning": "Figyelem",
|
"warning": "Figyelem",
|
||||||
"sourceIsXButPackageFromYPrompt": "Az alkalmazás forrása „{}”, de a kiadási csomag innen származik: „{}”. Folytatja?",
|
"sourceIsXButPackageFromYPrompt": "Az alkalmazás forrása „{}”, de a kiadási csomag innen származik: „{}”. Folytatja?",
|
||||||
"updatesAvailable": "Frissítések érhetők el",
|
"updatesAvailable": "Frissítések érhetők el",
|
||||||
"updatesAvailableNotifDescription": "Értesíti a felhasználót, hogy frissítések állnak rendelkezésre egy vagy több, az Obtainium által nyomon követett alkalmazáshoz",
|
"updatesAvailableNotifDescription": "Értesíti a felhasználót, hogy frissítések állnak rendelkezésre egy vagy több, az Obtainium által nyomon követett alkalmazáshoz",
|
||||||
"noNewUpdates": "Nincsenek új frissítések.",
|
"noNewUpdates": "Nincsenek új frissítések.",
|
||||||
"xHasAnUpdate": "A(z) {} frissítést kapott.",
|
"xHasAnUpdate": "A(z) {} frissítést kapott.",
|
||||||
"appsUpdated": "Alkalmazások frissítve",
|
"appsUpdated": "Alkalmazások frissítve",
|
||||||
"appsUpdatedNotifDescription": "Értesíti a felhasználót, hogy egy/több app frissítése megtörtént a háttérben",
|
"appsUpdatedNotifDescription": "Értesíti a felhasználót, hogy egy/több app frissítése megtörtént a háttérben",
|
||||||
"xWasUpdatedToY": "{} frissítve a következőre: {}.",
|
"xWasUpdatedToY": "{} frissítve a következőre: {}.",
|
||||||
"errorCheckingUpdates": "Hiba a frissítések keresésekor",
|
"errorCheckingUpdates": "Hiba a frissítések keresésekor",
|
||||||
"errorCheckingUpdatesNotifDescription": "Értesítés, amely akkor jelenik meg, ha a háttérbeli frissítések ellenőrzése sikertelen",
|
"errorCheckingUpdatesNotifDescription": "Értesítés, amely akkor jelenik meg, ha a háttérbeli frissítések ellenőrzése sikertelen",
|
||||||
"appsRemoved": "Alkalmazások eltávolítva",
|
"appsRemoved": "Alkalmazások eltávolítva",
|
||||||
"appsRemovedNotifDescription": "Értesíti a felhasználót egy vagy több alkalmazás eltávolításáról a betöltésük során fellépő hibák miatt",
|
"appsRemovedNotifDescription": "Értesíti a felhasználót egy vagy több alkalmazás eltávolításáról a betöltésük során fellépő hibák miatt",
|
||||||
"xWasRemovedDueToErrorY": "A(z) {} a következő hiba miatt lett eltávolítva: {}",
|
"xWasRemovedDueToErrorY": "A(z) {} a következő hiba miatt lett eltávolítva: {}",
|
||||||
"completeAppInstallation": "Teljes app telepítés",
|
"completeAppInstallation": "Teljes app telepítés",
|
||||||
"obtainiumMustBeOpenToInstallApps": "Az Obtainiumnak megnyitva kell lennie az alkalmazások telepítéséhez",
|
"obtainiumMustBeOpenToInstallApps": "Az Obtainiumnak megnyitva kell lennie az alkalmazások telepítéséhez",
|
||||||
"completeAppInstallationNotifDescription": "Megkéri a felhasználót, hogy térjen vissza az Obtainiumhoz, hogy befejezze az alkalmazás telepítését",
|
"completeAppInstallationNotifDescription": "Megkéri a felhasználót, hogy térjen vissza az Obtainiumhoz, hogy befejezze az alkalmazás telepítését",
|
||||||
"checkingForUpdates": "Frissítések keresése",
|
"checkingForUpdates": "Frissítések keresése",
|
||||||
"checkingForUpdatesNotifDescription": "Átmeneti értesítés, amely a frissítések keresésekor jelenik meg",
|
"checkingForUpdatesNotifDescription": "Átmeneti értesítés, amely a frissítések keresésekor jelenik meg",
|
||||||
"pleaseAllowInstallPerm": "Kérjük, engedélyezze az Obtainiumnak az alkalmazások telepítését",
|
"pleaseAllowInstallPerm": "Kérjük, engedélyezze az Obtainiumnak az alkalmazások telepítését",
|
||||||
"trackOnly": "Csak követés",
|
"trackOnly": "Csak követés",
|
||||||
"errorWithHttpStatusCode": "Hiba {}",
|
"errorWithHttpStatusCode": "Hiba {}",
|
||||||
"versionCorrectionDisabled": "Verzió korrekció letiltva (úgy tűnik, a beépülő modul nem működik)",
|
"versionCorrectionDisabled": "Verzió korrekció letiltva (úgy tűnik, a beépülő modul nem működik)",
|
||||||
"unknown": "Ismeretlen",
|
"unknown": "Ismeretlen",
|
||||||
"none": "Egyik sem",
|
"none": "Egyik sem",
|
||||||
"never": "Soha",
|
"never": "Soha",
|
||||||
"latestVersionX": "Legújabb verzió: {}",
|
"latestVersionX": "Legújabb verzió: {}",
|
||||||
"installedVersionX": "Telepített verzió: {}",
|
"installedVersionX": "Telepített verzió: {}",
|
||||||
"lastUpdateCheckX": "Frissítés ellenőrizve: {}",
|
"lastUpdateCheckX": "Frissítés ellenőrizve: {}",
|
||||||
"remove": "Eltávolítás",
|
"remove": "Eltávolítás",
|
||||||
"yesMarkUpdated": "Igen, megjelölés frissítettként",
|
"yesMarkUpdated": "Igen, megjelölés frissítettként",
|
||||||
"fdroid": "F-Droid Official",
|
"fdroid": "F-Droid Official",
|
||||||
"appIdOrName": "App ID vagy név",
|
"appIdOrName": "App ID vagy név",
|
||||||
"appId": "App ID",
|
"appId": "App ID",
|
||||||
"appWithIdOrNameNotFound": "Nem található app ezzel az azonosítóval vagy névvel",
|
"appWithIdOrNameNotFound": "Nem található app ezzel az azonosítóval vagy névvel",
|
||||||
"reposHaveMultipleApps": "A repók több alkalmazást is tartalmazhatnak",
|
"reposHaveMultipleApps": "A repók több alkalmazást is tartalmazhatnak",
|
||||||
"fdroidThirdPartyRepo": "F-Droid Harmadik-fél Repo",
|
"fdroidThirdPartyRepo": "F-Droid Harmadik-fél Repo",
|
||||||
"steam": "Steam",
|
"steam": "Steam",
|
||||||
"steamMobile": "Steam Mobile",
|
"steamMobile": "Steam Mobile",
|
||||||
"steamChat": "Steam Chat",
|
"steamChat": "Steam Chat",
|
||||||
"install": "Telepít",
|
"install": "Telepít",
|
||||||
"markInstalled": "Telepítettnek jelöl",
|
"markInstalled": "Telepítettnek jelöl",
|
||||||
"update": "Frissít",
|
"update": "Frissít",
|
||||||
"markUpdated": "Frissítettnek jelöl",
|
"markUpdated": "Frissítettnek jelöl",
|
||||||
"additionalOptions": "További lehetőségek",
|
"additionalOptions": "További lehetőségek",
|
||||||
"disableVersionDetection": "Verzió érzékelés letiltása",
|
"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.",
|
"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és",
|
"downloadingX": "{} letöltés",
|
||||||
"downloadNotifDescription": "Értesíti a felhasználót az app letöltésének előrehaladásáról",
|
"downloadNotifDescription": "Értesíti a felhasználót az app letöltésének előrehaladásáról",
|
||||||
"noAPKFound": "Nem található APK",
|
"noAPKFound": "Nem található APK",
|
||||||
"noVersionDetection": "Nincs verzió érzékelés",
|
"noVersionDetection": "Nincs verzió érzékelés",
|
||||||
"categorize": "Kategorizálás",
|
"categorize": "Kategorizálás",
|
||||||
"categories": "Kategóriák",
|
"categories": "Kategóriák",
|
||||||
"category": "Kategória",
|
"category": "Kategória",
|
||||||
"noCategory": "Nincs kategória",
|
"noCategory": "Nincs kategória",
|
||||||
"deleteCategoryQuestion": "Törli a kategóriát?",
|
"noCategories": "No Categories",
|
||||||
"categoryDeleteWarning": "A(z) {} összes app kategorizálatlan állapotba kerül.",
|
"deleteCategoryQuestion": "Törli a kategóriát?",
|
||||||
"addCategory": "Új kategória",
|
"categoryDeleteWarning": "A(z) {} összes app kategorizálatlan állapotba kerül.",
|
||||||
"label": "Címke",
|
"addCategory": "Új kategória",
|
||||||
"language": "Nyelv",
|
"label": "Címke",
|
||||||
"copiedToClipboard": "Másolva a vágólapra",
|
"language": "Nyelv",
|
||||||
"storagePermissionDenied": "Tárhely engedély megtagadva",
|
"copiedToClipboard": "Másolva a vágólapra",
|
||||||
"selectedCategorizeWarning": "Ez felváltja a kiválasztott alkalmazások meglévő kategória-beállításait.",
|
"storagePermissionDenied": "Tárhely engedély megtagadva",
|
||||||
"filterAPKsByRegEx": "Az APK-k szűrése reguláris kifejezéssel",
|
"selectedCategorizeWarning": "Ez felváltja a kiválasztott alkalmazások meglévő kategória-beállításait.",
|
||||||
"removeFromObtainium": "Eltávolítás az Obtainiumból",
|
"filterAPKsByRegEx": "Az APK-k szűrése reguláris kifejezéssel",
|
||||||
"uninstallFromDevice": "Eltávolítás a készülékről",
|
"removeFromObtainium": "Eltávolítás az Obtainiumból",
|
||||||
"onlyWorksWithNonVersionDetectApps": "Csak azoknál az alkalmazásoknál működik, amelyeknél a verzióérzékelés le van tiltva.",
|
"uninstallFromDevice": "Eltávolítás a készülékről",
|
||||||
"releaseDateAsVersion": "Használja a Kiadás dátumát, mint verziót",
|
"onlyWorksWithNonVersionDetectApps": "Csak azoknál az alkalmazásoknál működik, amelyeknél a verzióérzékelés le van tiltva.",
|
||||||
"releaseDateAsVersionExplanation": "Ezt a beállítást csak olyan alkalmazásoknál szabad használni, ahol a verzió érzékelése nem működik megfelelően, de elérhető a kiadás dátuma.",
|
"releaseDateAsVersion": "Használja a Kiadás dátumát, mint verziót",
|
||||||
"changes": "Változtatások",
|
"releaseDateAsVersionExplanation": "Ezt a beállítást csak olyan alkalmazásoknál szabad használni, ahol a verzió érzékelése nem működik megfelelően, de elérhető a kiadás dátuma.",
|
||||||
"releaseDate": "Kiadás dátuma",
|
"changes": "Változtatások",
|
||||||
"importFromURLsInFile": "Importálás fájlban található URL-ből (mint pl. OPML)",
|
"releaseDate": "Kiadás dátuma",
|
||||||
"versionDetection": "Verzió érzékelés",
|
"importFromURLsInFile": "Importálás fájlban található URL-ből (mint pl. OPML)",
|
||||||
"standardVersionDetection": "Alapért. verzió érzékelés",
|
"versionDetection": "Verzió érzékelés",
|
||||||
"groupByCategory": "Csoportosítás Kategória alapján",
|
"standardVersionDetection": "Alapért. verzió érzékelés",
|
||||||
"autoApkFilterByArch": "Ha lehetséges, próbálja CPU architektúra szerint szűrni az APK-okat",
|
"groupByCategory": "Csoportosítás Kategória alapján",
|
||||||
"overrideSource": "Forrás felülbírálása",
|
"autoApkFilterByArch": "Ha lehetséges, próbálja CPU architektúra szerint szűrni az APK-okat",
|
||||||
"dontShowAgain": "Ne mutassa ezt újra",
|
"overrideSource": "Forrás felülbírálása",
|
||||||
"dontShowTrackOnlyWarnings": "Ne jelenítsen meg 'Csak nyomon követés' figyelmeztetést",
|
"dontShowAgain": "Ne mutassa ezt újra",
|
||||||
"dontShowAPKOriginWarnings": "Ne jelenítsen meg az APK eredetére vonatkozó figyelmeztetéseket",
|
"dontShowTrackOnlyWarnings": "Ne jelenítsen meg 'Csak nyomon követés' figyelmeztetést",
|
||||||
"moveNonInstalledAppsToBottom": "Helyezze át a nem telepített appokat az App nézet aljára",
|
"dontShowAPKOriginWarnings": "Ne jelenítsen meg az APK eredetére vonatkozó figyelmeztetéseket",
|
||||||
"gitlabPATLabel": "GitLab Personal Access Token\n(Engedélyezi a Keresést és jobb APK felfedezés)",
|
"moveNonInstalledAppsToBottom": "Helyezze át a nem telepített appokat az App nézet aljára",
|
||||||
"about": "Rólunk",
|
"gitlabPATLabel": "GitLab Personal Access Token\n(Engedélyezi a Keresést és jobb APK felfedezés)",
|
||||||
"requiresCredentialsInSettings": "Ehhez további hitelesítő adatokra van szükség (a Beállításokban)",
|
"about": "Rólunk",
|
||||||
"checkOnStart": "Egyszer az alkalmazás indításakor is",
|
"requiresCredentialsInSettings": "Ehhez további hitelesítő adatokra van szükség (a Beállításokban)",
|
||||||
"tryInferAppIdFromCode": "Próbálja kikövetkeztetni az app azonosítót a forráskódból",
|
"checkOnStart": "Egyszer az alkalmazás indításakor is",
|
||||||
"removeOnExternalUninstall": "A külsőleg eltávolított appok auto. eltávolítása",
|
"tryInferAppIdFromCode": "Próbálja kikövetkeztetni az app azonosítót a forráskódból",
|
||||||
"pickHighestVersionCode": "A legmagasabb verziószámú APK auto. kiválasztása",
|
"removeOnExternalUninstall": "A külsőleg eltávolított appok auto. eltávolítása",
|
||||||
"checkUpdateOnDetailPage": "Frissítések keresése az app részleteit tartalmazó oldal megnyitásakor",
|
"pickHighestVersionCode": "A legmagasabb verziószámú APK auto. kiválasztása",
|
||||||
"disablePageTransitions": "Lap áttűnési animációk letiltása",
|
"checkUpdateOnDetailPage": "Frissítések keresése az app részleteit tartalmazó oldal megnyitásakor",
|
||||||
"reversePageTransitions": "Fordított lap áttűnési animációk",
|
"disablePageTransitions": "Lap áttűnési animációk letiltása",
|
||||||
"minStarCount": "Minimális csillag szám",
|
"reversePageTransitions": "Fordított lap áttűnési animációk",
|
||||||
"addInfoBelow": "Adja hozzá ezt az infót alább.",
|
"minStarCount": "Minimális csillag szám",
|
||||||
"addInfoInSettings": "Adja hozzá ezt az infót a Beállításokban.",
|
"addInfoBelow": "Adja hozzá ezt az infót alább.",
|
||||||
"githubSourceNote": "A GitHub sebességkorlátozás elkerülhető API-kulcs használatával.",
|
"addInfoInSettings": "Adja hozzá ezt az infót a Beállításokban.",
|
||||||
"gitlabSourceNote": "Előfordulhat, hogy a GitLab APK kibontása nem működik API-kulcs nélkül.",
|
"githubSourceNote": "A GitHub sebességkorlátozás elkerülhető API-kulcs használatával.",
|
||||||
"sortByFileNamesNotLinks": "Fájlnevek szerinti elrendezés teljes linkek helyett",
|
"gitlabSourceNote": "Előfordulhat, hogy a GitLab APK kibontása nem működik API-kulcs nélkül.",
|
||||||
"filterReleaseNotesByRegEx": "Kiadási megjegyzések szűrése reguláris kifejezéssel",
|
"sortByFileNamesNotLinks": "Fájlnevek szerinti elrendezés teljes linkek helyett",
|
||||||
"customLinkFilterRegex": "Egyéni APK hivatkozásszűrő reguláris kifejezéssel (Alapérték '.apk$')",
|
"filterReleaseNotesByRegEx": "Kiadási megjegyzések szűrése reguláris kifejezéssel",
|
||||||
"appsPossiblyUpdated": "App frissítési kísérlet",
|
"customLinkFilterRegex": "Egyéni APK hivatkozásszűrő reguláris kifejezéssel (Alapérték '.apk$')",
|
||||||
"appsPossiblyUpdatedNotifDescription": "Értesíti a felhasználót, hogy egy vagy több alkalmazás frissítése lehetséges a háttérben",
|
"appsPossiblyUpdated": "App frissítési kísérlet",
|
||||||
"xWasPossiblyUpdatedToY": "{} frissítve lehet erre {}.",
|
"appsPossiblyUpdatedNotifDescription": "Értesíti a felhasználót, hogy egy vagy több alkalmazás frissítése lehetséges a háttérben",
|
||||||
"backgroundUpdateReqsExplanation": "Előfordulhat, hogy nem minden appnál lehetséges a háttérbeli frissítés.",
|
"xWasPossiblyUpdatedToY": "{} frissítve lehet erre {}.",
|
||||||
"backgroundUpdateLimitsExplanation": "A háttérben történő telepítés sikeressége csak az Obtainium megnyitásakor állapítható meg.",
|
"backgroundUpdateReqsExplanation": "Előfordulhat, hogy nem minden appnál lehetséges a háttérbeli frissítés.",
|
||||||
"verifyLatestTag": "Ellenőrizze a „legújabb” címkét",
|
"backgroundUpdateLimitsExplanation": "A háttérben történő telepítés sikeressége csak az Obtainium megnyitásakor állapítható meg.",
|
||||||
"exemptFromBackgroundUpdates": "Mentes a háttérben történő frissítések alól (ha engedélyezett)",
|
"verifyLatestTag": "Ellenőrizze a „legújabb” címkét",
|
||||||
"bgUpdatesOnWiFiOnly": "Tiltsa le a háttérben frissítéseket, ha nincs Wi-Fi-n",
|
"intermediateLinkRegex": "Filter for an 'Intermediate' Link to Visit First",
|
||||||
"autoSelectHighestVersionCode": "A legmagasabb verziószámú APK auto. kiválasztása",
|
"intermediateLinkNotFound": "Intermediate link not found",
|
||||||
"versionExtractionRegEx": "Verzió kibontása reguláris kifejezéssel",
|
"exemptFromBackgroundUpdates": "Mentes a háttérben történő frissítések alól (ha engedélyezett)",
|
||||||
"matchGroupToUse": "Párosítsa a csoportot a használathoz",
|
"bgUpdatesOnWiFiOnly": "Tiltsa le a háttérben frissítéseket, ha nincs Wi-Fi-n",
|
||||||
"highlightTouchTargets": "Emelje ki a kevésbé nyilvánvaló érintési célokat",
|
"autoSelectHighestVersionCode": "A legmagasabb verziószámú APK auto. kiválasztása",
|
||||||
"pickExportDir": "Válassza az Exportálási könyvtárat",
|
"versionExtractionRegEx": "Verzió kibontása reguláris kifejezéssel",
|
||||||
"autoExportOnChanges": "Auto-exportálás a változások után",
|
"matchGroupToUse": "Párosítsa a csoportot a használathoz",
|
||||||
"filterVersionsByRegEx": "Verziók szűrése reguláris kifejezéssel",
|
"highlightTouchTargets": "Emelje ki a kevésbé nyilvánvaló érintési célokat",
|
||||||
"trySelectingSuggestedVersionCode": "Próbálja ki a javasolt verziókódú APK-t",
|
"pickExportDir": "Válassza az Exportálási könyvtárat",
|
||||||
"dontSortReleasesList": "Az API-ból származó kiadási sorrend megőrzése",
|
"autoExportOnChanges": "Auto-exportálás a változások után",
|
||||||
"reverseSort": "Fordított rendezés",
|
"filterVersionsByRegEx": "Verziók szűrése reguláris kifejezéssel",
|
||||||
"debugMenu": "Hibakereső menü",
|
"trySelectingSuggestedVersionCode": "Próbálja ki a javasolt verziókódú APK-t",
|
||||||
"bgTaskStarted": "A háttérfeladat elindult – ellenőrizze a naplókat.",
|
"dontSortReleasesList": "Az API-ból származó kiadási sorrend megőrzése",
|
||||||
"enableBackgroundUpdates": "Frissítések a háttérben",
|
"reverseSort": "Fordított rendezés",
|
||||||
"runBgCheckNow": "Futtassa a Háttérben frissítés ellenőrzését most",
|
"debugMenu": "Hibakereső menü",
|
||||||
"removeAppQuestion": {
|
"bgTaskStarted": "A háttérfeladat elindult – ellenőrizze a naplókat.",
|
||||||
"one": "Eltávolítja az alkalmazást?",
|
"enableBackgroundUpdates": "Frissítések a háttérben",
|
||||||
"other": "Eltávolítja az alkalmazást?"
|
"runBgCheckNow": "Futtassa a Háttérben frissítés ellenőrzését most",
|
||||||
},
|
"versionExtractWholePage": "Apply Version Extraction Regex to Entire Page",
|
||||||
"tooManyRequestsTryAgainInMinutes": {
|
"installing": "Installing",
|
||||||
"one": "Túl sok kérés (korlátozott arány) – próbálja újra {} perc múlva",
|
"skipUpdateNotifications": "Skip update notifications",
|
||||||
"other": "Túl sok kérés (korlátozott arány) – próbálja újra {} perc múlva"
|
"updatesAvailableNotifChannel": "Frissítések érhetők el",
|
||||||
},
|
"appsUpdatedNotifChannel": "Alkalmazások frissítve",
|
||||||
"bgUpdateGotErrorRetryInMinutes": {
|
"appsPossiblyUpdatedNotifChannel": "App frissítési kísérlet",
|
||||||
"one": "A háttérfrissítések ellenőrzése {}-t észlelt, {} perc múlva ütemezi az újrapróbálkozást",
|
"errorCheckingUpdatesNotifChannel": "Hiba a frissítések keresésekor",
|
||||||
"other": "A háttérfrissítések ellenőrzése {}-t észlelt, {} perc múlva ütemezi az újrapróbálkozást"
|
"appsRemovedNotifChannel": "Alkalmazások eltávolítva",
|
||||||
},
|
"downloadingXNotifChannel": "{} letöltés",
|
||||||
"bgCheckFoundUpdatesWillNotifyIfNeeded": {
|
"completeAppInstallationNotifChannel": "Teljes app telepítés",
|
||||||
"one": "A háttérfrissítés ellenőrzése {} frissítést talált – szükség esetén értesíti a felhasználót",
|
"checkingForUpdatesNotifChannel": "Frissítések keresése",
|
||||||
"other": "A háttérfrissítés ellenőrzése {} frissítést talált – szükség esetén értesíti a felhasználót"
|
"removeAppQuestion": {
|
||||||
},
|
"one": "Eltávolítja az alkalmazást?",
|
||||||
"apps": {
|
"other": "Eltávolítja az alkalmazást?"
|
||||||
"one": "{} app",
|
},
|
||||||
"other": "{} app"
|
"tooManyRequestsTryAgainInMinutes": {
|
||||||
},
|
"one": "Túl sok kérés (korlátozott arány) – próbálja újra {} perc múlva",
|
||||||
"url": {
|
"other": "Túl sok kérés (korlátozott arány) – próbálja újra {} perc múlva"
|
||||||
"one": "{} URL",
|
},
|
||||||
"other": "{} URL"
|
"bgUpdateGotErrorRetryInMinutes": {
|
||||||
},
|
"one": "A háttérfrissítések ellenőrzése {}-t észlelt, {} perc múlva ütemezi az újrapróbálkozást",
|
||||||
"minute": {
|
"other": "A háttérfrissítések ellenőrzése {}-t észlelt, {} perc múlva ütemezi az újrapróbálkozást"
|
||||||
"one": "{} perc",
|
},
|
||||||
"other": "{} perc"
|
"bgCheckFoundUpdatesWillNotifyIfNeeded": {
|
||||||
},
|
"one": "A háttérfrissítés ellenőrzése {} frissítést talált – szükség esetén értesíti a felhasználót",
|
||||||
"hour": {
|
"other": "A háttérfrissítés ellenőrzése {} frissítést talált – szükség esetén értesíti a felhasználót"
|
||||||
"one": "{} óra",
|
},
|
||||||
"other": "{} óra"
|
"apps": {
|
||||||
},
|
"one": "{} app",
|
||||||
"day": {
|
"other": "{} app"
|
||||||
"one": "{} nap",
|
},
|
||||||
"other": "{} nap"
|
"url": {
|
||||||
},
|
"one": "{} URL",
|
||||||
"clearedNLogsBeforeXAfterY": {
|
"other": "{} URL"
|
||||||
"one": "{n} napló törölve (előtte = {előtte}, utána = {utána})",
|
},
|
||||||
"other": "{n} napló törölve (előtte = {előtte}, utána = {utána})"
|
"minute": {
|
||||||
},
|
"one": "{} perc",
|
||||||
"xAndNMoreUpdatesAvailable": {
|
"other": "{} perc"
|
||||||
"one": "A(z) {} és 1 további alkalmazás frissítéseket kapott.",
|
},
|
||||||
"other": "{} és {} további alkalmazás frissítéseket kapott."
|
"hour": {
|
||||||
},
|
"one": "{} óra",
|
||||||
"xAndNMoreUpdatesInstalled": {
|
"other": "{} óra"
|
||||||
"one": "A(z) {} és 1 további alkalmazás frissítve.",
|
},
|
||||||
"other": "{} és {} további alkalmazás frissítve."
|
"day": {
|
||||||
},
|
"one": "{} nap",
|
||||||
"xAndNMoreUpdatesPossiblyInstalled": {
|
"other": "{} nap"
|
||||||
"one": "{} és 1 további alkalmazás is frissült.",
|
},
|
||||||
"other": "{} és {} további alkalmazás is frissült."
|
"clearedNLogsBeforeXAfterY": {
|
||||||
}
|
"one": "{n} napló törölve (előtte = {előtte}, utána = {utána})",
|
||||||
}
|
"other": "{n} napló törölve (előtte = {előtte}, utána = {utána})"
|
||||||
|
},
|
||||||
|
"xAndNMoreUpdatesAvailable": {
|
||||||
|
"one": "A(z) {} és 1 további alkalmazás frissítéseket kapott.",
|
||||||
|
"other": "{} és {} további alkalmazás frissítéseket kapott."
|
||||||
|
},
|
||||||
|
"xAndNMoreUpdatesInstalled": {
|
||||||
|
"one": "A(z) {} és 1 további alkalmazás frissítve.",
|
||||||
|
"other": "{} és {} további alkalmazás frissítve."
|
||||||
|
},
|
||||||
|
"xAndNMoreUpdatesPossiblyInstalled": {
|
||||||
|
"one": "{} és 1 további alkalmazás is frissült.",
|
||||||
|
"other": "{} és {} további alkalmazás is frissült."
|
||||||
|
}
|
||||||
|
}
|
@@ -242,9 +242,12 @@
|
|||||||
"appsPossiblyUpdated": "App Updates Attempted",
|
"appsPossiblyUpdated": "App Updates Attempted",
|
||||||
"appsPossiblyUpdatedNotifDescription": "Notifies the user that updates to one or more Apps were potentially applied in the background",
|
"appsPossiblyUpdatedNotifDescription": "Notifies the user that updates to one or more Apps were potentially applied in the background",
|
||||||
"xWasPossiblyUpdatedToY": "{} may have been updated to {}.",
|
"xWasPossiblyUpdatedToY": "{} may have been updated to {}.",
|
||||||
|
"enableBackgroundUpdates": "Enable background updates",
|
||||||
"backgroundUpdateReqsExplanation": "Background updates may not be possible for all apps.",
|
"backgroundUpdateReqsExplanation": "Background updates may not be possible for all apps.",
|
||||||
"backgroundUpdateLimitsExplanation": "The success of a background install can only be determined when Obtainium is opened.",
|
"backgroundUpdateLimitsExplanation": "The success of a background install can only be determined when Obtainium is opened.",
|
||||||
"verifyLatestTag": "Verify the 'latest' tag",
|
"verifyLatestTag": "Verify the 'latest' tag",
|
||||||
|
"intermediateLinkRegex": "Filter for an 'Intermediate' Link to Visit First",
|
||||||
|
"intermediateLinkNotFound": "Intermediate link not found",
|
||||||
"exemptFromBackgroundUpdates": "Exempt from background updates (if enabled)",
|
"exemptFromBackgroundUpdates": "Exempt from background updates (if enabled)",
|
||||||
"bgUpdatesOnWiFiOnly": "Disable background updates when not on WiFi",
|
"bgUpdatesOnWiFiOnly": "Disable background updates when not on WiFi",
|
||||||
"autoSelectHighestVersionCode": "Auto-select highest versionCode APK",
|
"autoSelectHighestVersionCode": "Auto-select highest versionCode APK",
|
||||||
@@ -260,6 +263,17 @@
|
|||||||
"debugMenu": "Debug Menu",
|
"debugMenu": "Debug Menu",
|
||||||
"bgTaskStarted": "Background task started - check logs.",
|
"bgTaskStarted": "Background task started - check logs.",
|
||||||
"runBgCheckNow": "Run Background Update Check Now",
|
"runBgCheckNow": "Run Background Update Check Now",
|
||||||
|
"versionExtractWholePage": "Apply Version Extraction Regex to Entire Page",
|
||||||
|
"installing": "Installing",
|
||||||
|
"skipUpdateNotifications": "Skip update notifications",
|
||||||
|
"updatesAvailableNotifChannel": "Aggiornamenti disponibili",
|
||||||
|
"appsUpdatedNotifChannel": "App aggiornate",
|
||||||
|
"appsPossiblyUpdatedNotifChannel": "App Updates Attempted",
|
||||||
|
"errorCheckingUpdatesNotifChannel": "Controllo degli errori per gli aggiornamenti",
|
||||||
|
"appsRemovedNotifChannel": "App rimosse",
|
||||||
|
"downloadingXNotifChannel": "Scaricamento di {} in corso",
|
||||||
|
"completeAppInstallationNotifChannel": "Completa l'installazione dell'app",
|
||||||
|
"checkingForUpdatesNotifChannel": "Controllo degli aggiornamenti in corso",
|
||||||
"removeAppQuestion": {
|
"removeAppQuestion": {
|
||||||
"one": "Rimuovere l'app?",
|
"one": "Rimuovere l'app?",
|
||||||
"other": "Rimuovere le app?"
|
"other": "Rimuovere le app?"
|
||||||
@@ -312,4 +326,4 @@
|
|||||||
"one": "{} and 1 more app may have been updated.",
|
"one": "{} and 1 more app may have been updated.",
|
||||||
"other": "{} and {} more apps may have been updated."
|
"other": "{} and {} more apps may have been updated."
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -263,6 +263,17 @@
|
|||||||
"debugMenu": "Debug Menu",
|
"debugMenu": "Debug Menu",
|
||||||
"bgTaskStarted": "Background task started - check logs.",
|
"bgTaskStarted": "Background task started - check logs.",
|
||||||
"runBgCheckNow": "Run Background Update Check Now",
|
"runBgCheckNow": "Run Background Update Check Now",
|
||||||
|
"versionExtractWholePage": "Apply Version Extraction Regex to Entire Page",
|
||||||
|
"installing": "Installing",
|
||||||
|
"skipUpdateNotifications": "Skip update notifications",
|
||||||
|
"updatesAvailableNotifChannel": "アップデートが利用可能",
|
||||||
|
"appsUpdatedNotifChannel": "アプリをアップデートしました",
|
||||||
|
"appsPossiblyUpdatedNotifChannel": "アプリのアップデートを試行",
|
||||||
|
"errorCheckingUpdatesNotifChannel": "アップデート確認中のエラー",
|
||||||
|
"appsRemovedNotifChannel": "削除されたアプリ",
|
||||||
|
"downloadingXNotifChannel": "{} をダウンロード中",
|
||||||
|
"completeAppInstallationNotifChannel": "アプリのインストールを完了する",
|
||||||
|
"checkingForUpdatesNotifChannel": "アップデートを確認中",
|
||||||
"removeAppQuestion": {
|
"removeAppQuestion": {
|
||||||
"one": "アプリを削除しますか?",
|
"one": "アプリを削除しますか?",
|
||||||
"other": "アプリを削除しますか?"
|
"other": "アプリを削除しますか?"
|
||||||
@@ -315,4 +326,4 @@
|
|||||||
"one": "{} とさらに 1 個のアプリがアップデートされた可能性があります。",
|
"one": "{} とさらに 1 個のアプリがアップデートされた可能性があります。",
|
||||||
"other": "{} とさらに {} 個のアプリがアップデートされた可能性があります。"
|
"other": "{} とさらに {} 個のアプリがアップデートされた可能性があります。"
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,14 +1,4 @@
|
|||||||
{
|
{
|
||||||
"noDescription": "Brak opisu",
|
|
||||||
"no": "Nie",
|
|
||||||
"okay": "Okej",
|
|
||||||
"appId": "ID aplikacji",
|
|
||||||
"bgUpdateGotErrorRetryInMinutes": {
|
|
||||||
"one": "Sprawdzanie aktualizacji w tle napotkało {}, zaplanuje ponowne sprawdzenie za {} minutę",
|
|
||||||
"few": "Sprawdzanie aktualizacji w tle napotkało {}, zaplanuje ponowne sprawdzenie za {} minuty",
|
|
||||||
"many": "Sprawdzanie aktualizacji w tle napotkało {}, zaplanuje ponowne sprawdzenie za {} minut",
|
|
||||||
"other": "Sprawdzanie aktualizacji w tle napotkało {}, zaplanuje ponowne sprawdzenie za {} minuty"
|
|
||||||
},
|
|
||||||
"invalidURLForSource": "Nieprawidłowy adres URL aplikacji {}",
|
"invalidURLForSource": "Nieprawidłowy adres URL aplikacji {}",
|
||||||
"noReleaseFound": "Nie można znaleźć odpowiedniego wydania",
|
"noReleaseFound": "Nie można znaleźć odpowiedniego wydania",
|
||||||
"noVersionFound": "Nie można określić wersji wydania",
|
"noVersionFound": "Nie można określić wersji wydania",
|
||||||
@@ -26,6 +16,7 @@
|
|||||||
"fallbackToOlderReleases": "Powracaj do starszych wersji",
|
"fallbackToOlderReleases": "Powracaj do starszych wersji",
|
||||||
"filterReleaseTitlesByRegEx": "Filtruj tytuły wydań wg. wyrażeń regularnych",
|
"filterReleaseTitlesByRegEx": "Filtruj tytuły wydań wg. wyrażeń regularnych",
|
||||||
"invalidRegEx": "Nieprawidłowe wyrażenie regularne",
|
"invalidRegEx": "Nieprawidłowe wyrażenie regularne",
|
||||||
|
"noDescription": "Brak opisu",
|
||||||
"cancel": "Anuluj",
|
"cancel": "Anuluj",
|
||||||
"continue": "Kontynuuj",
|
"continue": "Kontynuuj",
|
||||||
"requiredInBrackets": "(Wymagane)",
|
"requiredInBrackets": "(Wymagane)",
|
||||||
@@ -75,6 +66,7 @@
|
|||||||
"installUpdateApps": "Instaluj/aktualizuj aplikacje",
|
"installUpdateApps": "Instaluj/aktualizuj aplikacje",
|
||||||
"installUpdateSelectedApps": "Zainstaluj/zaktualizuj wybrane aplikacje",
|
"installUpdateSelectedApps": "Zainstaluj/zaktualizuj wybrane aplikacje",
|
||||||
"markXSelectedAppsAsUpdated": "Oznaczyć {} wybranych aplikacji jako zaktualizowane?",
|
"markXSelectedAppsAsUpdated": "Oznaczyć {} wybranych aplikacji jako zaktualizowane?",
|
||||||
|
"no": "Nie",
|
||||||
"yes": "Tak",
|
"yes": "Tak",
|
||||||
"markSelectedAppsUpdated": "Oznacz wybrane aplikacje jako zaktualizowane",
|
"markSelectedAppsUpdated": "Oznacz wybrane aplikacje jako zaktualizowane",
|
||||||
"pinToTop": "Przypnij",
|
"pinToTop": "Przypnij",
|
||||||
@@ -111,6 +103,7 @@
|
|||||||
"importErrors": "Błędy importowania",
|
"importErrors": "Błędy importowania",
|
||||||
"importedXOfYApps": "Zaimportowano {} z {} aplikacji.",
|
"importedXOfYApps": "Zaimportowano {} z {} aplikacji.",
|
||||||
"followingURLsHadErrors": "Następujące adresy URL zawierały błędy:",
|
"followingURLsHadErrors": "Następujące adresy URL zawierały błędy:",
|
||||||
|
"okay": "Okej",
|
||||||
"selectURL": "Wybierz adres URL",
|
"selectURL": "Wybierz adres URL",
|
||||||
"selectURLs": "Wybierz adresy URL",
|
"selectURLs": "Wybierz adresy URL",
|
||||||
"pick": "Wybierz",
|
"pick": "Wybierz",
|
||||||
@@ -149,20 +142,20 @@
|
|||||||
"warning": "Uwaga",
|
"warning": "Uwaga",
|
||||||
"sourceIsXButPackageFromYPrompt": "Źródłem aplikacji jest '{}', ale pakiet wydania pochodzi z '{}'. Kontynuować?",
|
"sourceIsXButPackageFromYPrompt": "Źródłem aplikacji jest '{}', ale pakiet wydania pochodzi z '{}'. Kontynuować?",
|
||||||
"updatesAvailable": "Dostępne aktualizacje",
|
"updatesAvailable": "Dostępne aktualizacje",
|
||||||
"updatesAvailableNotifDescription": "Powiadamia użytkownika o dostępności aktualizacji dla jednej lub więcej aplikacji obserwowanych przez Obtainium",
|
"updatesAvailableNotifDescription": "Informuje o dostępności aktualizacji dla jednej lub więcej aplikacji obserwowanych przez Obtainium",
|
||||||
"noNewUpdates": "Brak nowych aktualizacji.",
|
"noNewUpdates": "Brak nowych aktualizacji.",
|
||||||
"xHasAnUpdate": "{} ma aktualizację.",
|
"xHasAnUpdate": "{} ma aktualizację.",
|
||||||
"appsUpdated": "Zaktualizowane aplikacje",
|
"appsUpdated": "Zaktualizowano aplikacje",
|
||||||
"appsUpdatedNotifDescription": "Powiadamia użytkownika, gdy jedna lub więcej aplikacji zostało zaktualizowanych w tle",
|
"appsUpdatedNotifDescription": "Informuje, gdy co najmniej jedna aplikacja została zaktualizowana w tle",
|
||||||
"xWasUpdatedToY": "{} zaktualizowano do {}.",
|
"xWasUpdatedToY": "{} zaktualizowano do {}.",
|
||||||
"errorCheckingUpdates": "Sprawdzanie błędów aktualizacji",
|
"errorCheckingUpdates": "Błąd sprawdzania aktualizacji",
|
||||||
"errorCheckingUpdatesNotifDescription": "Powiadomienie wyświetlane, gdy sprawdzanie aktualizacji w tle nie powiedzie się",
|
"errorCheckingUpdatesNotifDescription": "Jest wyświetlane, gdy sprawdzanie aktualizacji w tle nie powiedzie się",
|
||||||
"appsRemoved": "Usunięte aplikacje",
|
"appsRemoved": "Usunięte aplikacje",
|
||||||
"appsRemovedNotifDescription": "Powiadamia użytkownika, gdy jedna lub więcej aplikacji zostało usuniętych z powodu błędów wczytywania",
|
"appsRemovedNotifDescription": "Informuje, gdy co najmniej jedna aplikacja została usunięta z powodu błędów podczas wczytywania",
|
||||||
"xWasRemovedDueToErrorY": "Usunięto {} z powodu błędu: {}",
|
"xWasRemovedDueToErrorY": "Usunięto {} z powodu błędu: {}",
|
||||||
"completeAppInstallation": "Ukończenie instalacji aplikacji",
|
"completeAppInstallation": "Ukończenie instalacji aplikacji",
|
||||||
"obtainiumMustBeOpenToInstallApps": "Aby zainstalować aplikacje, Obtainium musi być otwarte",
|
"obtainiumMustBeOpenToInstallApps": "Aby zainstalować aplikacje, Obtainium musi być otwarte",
|
||||||
"completeAppInstallationNotifDescription": "Prosi użytkownika o powrót do Obtainium w celu dokończenia instalacji aplikacji",
|
"completeAppInstallationNotifDescription": "Informuje o możliwości powrotu do Obtainium w celu dokończenia instalacji aplikacji",
|
||||||
"checkingForUpdates": "Sprawdzanie aktualizacji",
|
"checkingForUpdates": "Sprawdzanie aktualizacji",
|
||||||
"checkingForUpdatesNotifDescription": "Tymczasowe powiadomienie pojawiające się podczas sprawdzania aktualizacji",
|
"checkingForUpdatesNotifDescription": "Tymczasowe powiadomienie pojawiające się podczas sprawdzania aktualizacji",
|
||||||
"pleaseAllowInstallPerm": "Pozwól Obtainium instalować aplikacje",
|
"pleaseAllowInstallPerm": "Pozwól Obtainium instalować aplikacje",
|
||||||
@@ -179,6 +172,7 @@
|
|||||||
"yesMarkUpdated": "Tak, oznacz jako zaktualizowane",
|
"yesMarkUpdated": "Tak, oznacz jako zaktualizowane",
|
||||||
"fdroid": "Oficjalny F-Droid",
|
"fdroid": "Oficjalny F-Droid",
|
||||||
"appIdOrName": "ID aplikacji lub nazwa",
|
"appIdOrName": "ID aplikacji lub nazwa",
|
||||||
|
"appId": "ID aplikacji",
|
||||||
"appWithIdOrNameNotFound": "Nie znaleziono aplikacji o tym identyfikatorze lub nazwie",
|
"appWithIdOrNameNotFound": "Nie znaleziono aplikacji o tym identyfikatorze lub nazwie",
|
||||||
"reposHaveMultipleApps": "Repozytoria mogą zawierać wiele aplikacji",
|
"reposHaveMultipleApps": "Repozytoria mogą zawierać wiele aplikacji",
|
||||||
"fdroidThirdPartyRepo": "Zewnętrzne repo F-Droid",
|
"fdroidThirdPartyRepo": "Zewnętrzne repo F-Droid",
|
||||||
@@ -193,7 +187,7 @@
|
|||||||
"disableVersionDetection": "Wyłącz wykrywanie wersji",
|
"disableVersionDetection": "Wyłącz wykrywanie wersji",
|
||||||
"noVersionDetectionExplanation": "Opcja ta powinna być używana tylko w przypadku aplikacji, w których wykrywanie wersji nie działa poprawnie.",
|
"noVersionDetectionExplanation": "Opcja ta powinna być używana tylko w przypadku aplikacji, w których wykrywanie wersji nie działa poprawnie.",
|
||||||
"downloadingX": "Pobieranie {}",
|
"downloadingX": "Pobieranie {}",
|
||||||
"downloadNotifDescription": "Powiadamia użytkownika o postępach w pobieraniu aplikacji",
|
"downloadNotifDescription": "Informuje o postępach w pobieraniu aplikacji",
|
||||||
"noAPKFound": "Nie znaleziono pakietu APK",
|
"noAPKFound": "Nie znaleziono pakietu APK",
|
||||||
"noVersionDetection": "Bez wykrywania wersji",
|
"noVersionDetection": "Bez wykrywania wersji",
|
||||||
"categorize": "Kategoryzuj",
|
"categorize": "Kategoryzuj",
|
||||||
@@ -245,17 +239,20 @@
|
|||||||
"sortByFileNamesNotLinks": "Sortuj wg nazw plików zamiast pełnych linków",
|
"sortByFileNamesNotLinks": "Sortuj wg nazw plików zamiast pełnych linków",
|
||||||
"filterReleaseNotesByRegEx": "Filtruj informacje o wersji według wyrażenia regularnego",
|
"filterReleaseNotesByRegEx": "Filtruj informacje o wersji według wyrażenia regularnego",
|
||||||
"customLinkFilterRegex": "Filtruj linki APK według wyrażenia regularnego (domyślnie \".apk$\")",
|
"customLinkFilterRegex": "Filtruj linki APK według wyrażenia regularnego (domyślnie \".apk$\")",
|
||||||
"appsPossiblyUpdated": "Informuj o próbach aktualizacji",
|
"appsPossiblyUpdated": "Próbowano zaktualizować aplikację",
|
||||||
"appsPossiblyUpdatedNotifDescription": "Powiadamiaj o potencjalnym zastosowaniu w tle aktualizacji jednej lub większej ilości aplikacji",
|
"appsPossiblyUpdatedNotifDescription": "Powiadamia, gdy co najmniej jedna aktualizacja aplikacji została potencjalnie zastosowana w tle",
|
||||||
"xWasPossiblyUpdatedToY": "{} być może zaktualizowano do {}.",
|
"xWasPossiblyUpdatedToY": "{} być może zaktualizowano do {}.",
|
||||||
|
"enableBackgroundUpdates": "Włącz aktualizacje w tle",
|
||||||
"backgroundUpdateReqsExplanation": "Aktualizacje w tle mogą nie być możliwe dla wszystkich aplikacji.",
|
"backgroundUpdateReqsExplanation": "Aktualizacje w tle mogą nie być możliwe dla wszystkich aplikacji.",
|
||||||
"backgroundUpdateLimitsExplanation": "Powodzenie instalacji w tle można określić dopiero po otwarciu Obtainium.",
|
"backgroundUpdateLimitsExplanation": "Powodzenie instalacji w tle można określić dopiero po otwarciu Obtainium.",
|
||||||
"verifyLatestTag": "Zweryfikuj najnowszy tag",
|
"verifyLatestTag": "Zweryfikuj najnowszy tag",
|
||||||
|
"intermediateLinkRegex": "Filtr linków \"pośrednich\" do odwiedzenia w pierwszej kolejności",
|
||||||
|
"intermediateLinkNotFound": "Nie znaleziono linku pośredniego",
|
||||||
"exemptFromBackgroundUpdates": "Wyklucz z uaktualnień w tle (jeśli są włączone)",
|
"exemptFromBackgroundUpdates": "Wyklucz z uaktualnień w tle (jeśli są włączone)",
|
||||||
"bgUpdatesOnWiFiOnly": "Wyłącz aktualizacje w tle, gdy nie ma połączenia z Wi-Fi",
|
"bgUpdatesOnWiFiOnly": "Wyłącz aktualizacje w tle, gdy nie ma połączenia z Wi-Fi",
|
||||||
"autoSelectHighestVersionCode": "Automatycznie wybierz najwyższy kod wersji APK",
|
"autoSelectHighestVersionCode": "Automatycznie wybierz najwyższy kod wersji APK",
|
||||||
"versionExtractionRegEx": "Wyrażenie regularne wyodrębniające wersję",
|
"versionExtractionRegEx": "Wyrażenie regularne wyodrębniające wersję",
|
||||||
"matchGroupToUse": "Dopasuj grupę do użycia",
|
"matchGroupToUse": "Dopasuj grupę do użycia dla wyrażenia regularnego wyodrębniania wersji",
|
||||||
"highlightTouchTargets": "Wyróżnij mniej oczywiste elementy dotykowe",
|
"highlightTouchTargets": "Wyróżnij mniej oczywiste elementy dotykowe",
|
||||||
"pickExportDir": "Wybierz katalog eksportu",
|
"pickExportDir": "Wybierz katalog eksportu",
|
||||||
"autoExportOnChanges": "Automatyczny eksport po wprowadzeniu zmian",
|
"autoExportOnChanges": "Automatyczny eksport po wprowadzeniu zmian",
|
||||||
@@ -266,6 +263,17 @@
|
|||||||
"debugMenu": "Menu debugowania",
|
"debugMenu": "Menu debugowania",
|
||||||
"bgTaskStarted": "Uruchomiono zadanie w tle - sprawdź logi.",
|
"bgTaskStarted": "Uruchomiono zadanie w tle - sprawdź logi.",
|
||||||
"runBgCheckNow": "Wymuś sprawdzenie aktualizacji w tle",
|
"runBgCheckNow": "Wymuś sprawdzenie aktualizacji w tle",
|
||||||
|
"versionExtractWholePage": "Zastosuj wyrażenie regularne wyodrębniania wersji dla całej strony",
|
||||||
|
"installing": "Instalacja",
|
||||||
|
"skipUpdateNotifications": "Pomiń powiadomienia o aktualizacjach",
|
||||||
|
"updatesAvailableNotifChannel": "Dostępne aktualizacje aplikacji",
|
||||||
|
"appsUpdatedNotifChannel": "Zaktualizowane aplikacje",
|
||||||
|
"appsPossiblyUpdatedNotifChannel": "Informuj o próbach aktualizacji",
|
||||||
|
"errorCheckingUpdatesNotifChannel": "Błędy sprawdzania aktualizacji",
|
||||||
|
"appsRemovedNotifChannel": "Usunięte aplikacje",
|
||||||
|
"downloadingXNotifChannel": "Pobieranie aplikacji",
|
||||||
|
"completeAppInstallationNotifChannel": "Ukończenie instalacji aplikacji",
|
||||||
|
"checkingForUpdatesNotifChannel": "Sprawdzanie dostępności aktualizacji",
|
||||||
"removeAppQuestion": {
|
"removeAppQuestion": {
|
||||||
"one": "Usunąć aplikację?",
|
"one": "Usunąć aplikację?",
|
||||||
"few": "Usunąć aplikacje?",
|
"few": "Usunąć aplikacje?",
|
||||||
@@ -278,6 +286,12 @@
|
|||||||
"many": "Zbyt wiele żądań (ograniczona częstotliwość) - spróbuj ponownie za {} minut",
|
"many": "Zbyt wiele żądań (ograniczona częstotliwość) - spróbuj ponownie za {} minut",
|
||||||
"other": "Zbyt wiele żądań (ograniczona częstotliwość) - spróbuj ponownie za {} minuty"
|
"other": "Zbyt wiele żądań (ograniczona częstotliwość) - spróbuj ponownie za {} minuty"
|
||||||
},
|
},
|
||||||
|
"bgUpdateGotErrorRetryInMinutes": {
|
||||||
|
"one": "Sprawdzanie aktualizacji w tle napotkało {}, zaplanuje ponowne sprawdzenie za {} minutę",
|
||||||
|
"few": "Sprawdzanie aktualizacji w tle napotkało {}, zaplanuje ponowne sprawdzenie za {} minuty",
|
||||||
|
"many": "Sprawdzanie aktualizacji w tle napotkało {}, zaplanuje ponowne sprawdzenie za {} minut",
|
||||||
|
"other": "Sprawdzanie aktualizacji w tle napotkało {}, zaplanuje ponowne sprawdzenie za {} minuty"
|
||||||
|
},
|
||||||
"bgCheckFoundUpdatesWillNotifyIfNeeded": {
|
"bgCheckFoundUpdatesWillNotifyIfNeeded": {
|
||||||
"one": "W tle znaleziono {} aktualizację - w razie potrzeby użytkownik zostanie o tym powiadomiony",
|
"one": "W tle znaleziono {} aktualizację - w razie potrzeby użytkownik zostanie o tym powiadomiony",
|
||||||
"few": "W tle znaleziono {} aktualizacje - w razie potrzeby użytkownik zostanie o tym powiadomiony",
|
"few": "W tle znaleziono {} aktualizacje - w razie potrzeby użytkownik zostanie o tym powiadomiony",
|
||||||
@@ -337,8 +351,5 @@
|
|||||||
"few": "{} i {} inne apki mogły zostać zaktualizowane.",
|
"few": "{} i {} inne apki mogły zostać zaktualizowane.",
|
||||||
"many": "{} i {} innych apek mogło zostać zaktualizowanych.",
|
"many": "{} i {} innych apek mogło zostać zaktualizowanych.",
|
||||||
"other": "{} i {} inne apki mogły zostać zaktualizowane."
|
"other": "{} i {} inne apki mogły zostać zaktualizowane."
|
||||||
},
|
}
|
||||||
"enableBackgroundUpdates": "Włącz aktualizacje w tle",
|
|
||||||
"intermediateLinkRegex": "Filtr linków \"pośrednich\" do odwiedzenia w pierwszej kolejności",
|
|
||||||
"intermediateLinkNotFound": "Nie znaleziono linku pośredniego"
|
|
||||||
}
|
}
|
@@ -263,6 +263,17 @@
|
|||||||
"debugMenu": "Menu Debug",
|
"debugMenu": "Menu Debug",
|
||||||
"bgTaskStarted": "Tarefa em segundo plano iniciada - verifique os logs.",
|
"bgTaskStarted": "Tarefa em segundo plano iniciada - verifique os logs.",
|
||||||
"runBgCheckNow": "Execute a verificação de atualização em segundo plano agora",
|
"runBgCheckNow": "Execute a verificação de atualização em segundo plano agora",
|
||||||
|
"versionExtractWholePage": "Apply Version Extraction Regex to Entire Page",
|
||||||
|
"installing": "Installing",
|
||||||
|
"skipUpdateNotifications": "Skip update notifications",
|
||||||
|
"updatesAvailableNotifChannel": "Atualizações Disponíveis",
|
||||||
|
"appsUpdatedNotifChannel": "Apps Atualizados",
|
||||||
|
"appsPossiblyUpdatedNotifChannel": "Tentativas de atualização de Apps",
|
||||||
|
"errorCheckingUpdatesNotifChannel": "Erro ao Procurar por Atualizações",
|
||||||
|
"appsRemovedNotifChannel": "Apps Removidos",
|
||||||
|
"downloadingXNotifChannel": "Baixando {}",
|
||||||
|
"completeAppInstallationNotifChannel": "Instalação completa do App",
|
||||||
|
"checkingForUpdatesNotifChannel": "Checando por Atualizações",
|
||||||
"removeAppQuestion": {
|
"removeAppQuestion": {
|
||||||
"one": "Remover App?",
|
"one": "Remover App?",
|
||||||
"other": "Remover Apps?"
|
"other": "Remover Apps?"
|
||||||
@@ -315,4 +326,4 @@
|
|||||||
"one": "{} e 1 outro app pode ter sido atualizado.",
|
"one": "{} e 1 outro app pode ter sido atualizado.",
|
||||||
"other": "{} e {} outros apps podem ter sido atualizados."
|
"other": "{} e {} outros apps podem ter sido atualizados."
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -263,6 +263,17 @@
|
|||||||
"debugMenu": "Меню Отладки",
|
"debugMenu": "Меню Отладки",
|
||||||
"bgTaskStarted": "Фоновая задача начата - проверьте журналы.",
|
"bgTaskStarted": "Фоновая задача начата - проверьте журналы.",
|
||||||
"runBgCheckNow": "Запустить проверку фонового обновления сейчас",
|
"runBgCheckNow": "Запустить проверку фонового обновления сейчас",
|
||||||
|
"versionExtractWholePage": "Apply Version Extraction Regex to Entire Page",
|
||||||
|
"installing": "Installing",
|
||||||
|
"skipUpdateNotifications": "Skip update notifications",
|
||||||
|
"updatesAvailableNotifChannel": "Доступны обновления",
|
||||||
|
"appsUpdatedNotifChannel": "Приложения обновлены",
|
||||||
|
"appsPossiblyUpdatedNotifChannel": "Попытки обновления приложений",
|
||||||
|
"errorCheckingUpdatesNotifChannel": "Ошибка при проверке обновлений",
|
||||||
|
"appsRemovedNotifChannel": "Приложение удалено",
|
||||||
|
"downloadingXNotifChannel": "Загрузка {}",
|
||||||
|
"completeAppInstallationNotifChannel": "Завершение установки приложения",
|
||||||
|
"checkingForUpdatesNotifChannel": "Проверка обновлений",
|
||||||
"removeAppQuestion": {
|
"removeAppQuestion": {
|
||||||
"one": "Удалить приложение?",
|
"one": "Удалить приложение?",
|
||||||
"other": "Удалить приложения?"
|
"other": "Удалить приложения?"
|
||||||
@@ -315,4 +326,4 @@
|
|||||||
"one": "{} и ещё 1 приложение могли быть обновлены.",
|
"one": "{} и ещё 1 приложение могли быть обновлены.",
|
||||||
"other": "{} и ещё {} приложений могли быть обновлены."
|
"other": "{} и ещё {} приложений могли быть обновлены."
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -263,6 +263,17 @@
|
|||||||
"debugMenu": "调试选项",
|
"debugMenu": "调试选项",
|
||||||
"bgTaskStarted": "后台任务已启动 - 详见日志",
|
"bgTaskStarted": "后台任务已启动 - 详见日志",
|
||||||
"runBgCheckNow": "立即进行后台更新检查",
|
"runBgCheckNow": "立即进行后台更新检查",
|
||||||
|
"versionExtractWholePage": "Apply Version Extraction Regex to Entire Page",
|
||||||
|
"installing": "Installing",
|
||||||
|
"skipUpdateNotifications": "Skip update notifications",
|
||||||
|
"updatesAvailableNotifChannel": "更新可用",
|
||||||
|
"appsUpdatedNotifChannel": "应用已更新",
|
||||||
|
"appsPossiblyUpdatedNotifChannel": "已尝试更新应用",
|
||||||
|
"errorCheckingUpdatesNotifChannel": "检查更新出错",
|
||||||
|
"appsRemovedNotifChannel": "应用已删除",
|
||||||
|
"downloadingXNotifChannel": "正在下载{}",
|
||||||
|
"completeAppInstallationNotifChannel": "完成应用安装",
|
||||||
|
"checkingForUpdatesNotifChannel": "正在检查更新",
|
||||||
"removeAppQuestion": {
|
"removeAppQuestion": {
|
||||||
"one": "是否删除应用?",
|
"one": "是否删除应用?",
|
||||||
"other": "是否删除应用?"
|
"other": "是否删除应用?"
|
||||||
@@ -315,4 +326,4 @@
|
|||||||
"one": "{} 和另外 1 个应用已尝试更新。",
|
"one": "{} 和另外 1 个应用已尝试更新。",
|
||||||
"other": "{} 和另外 {} 个应用已尝试更新。"
|
"other": "{} 和另外 {} 个应用已尝试更新。"
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -7,6 +7,9 @@ import 'package:obtainium/providers/source_provider.dart';
|
|||||||
class FDroidRepo extends AppSource {
|
class FDroidRepo extends AppSource {
|
||||||
FDroidRepo() {
|
FDroidRepo() {
|
||||||
name = tr('fdroidThirdPartyRepo');
|
name = tr('fdroidThirdPartyRepo');
|
||||||
|
canSearch = true;
|
||||||
|
excludeFromMassSearch = true;
|
||||||
|
neverAutoSelect = true;
|
||||||
|
|
||||||
additionalSourceAppSpecificSettingFormItems = [
|
additionalSourceAppSpecificSettingFormItems = [
|
||||||
[
|
[
|
||||||
@@ -22,12 +25,85 @@ class FDroidRepo extends AppSource {
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String removeQueryParamsFromUrl(String url, {List<String> keep = const []}) {
|
||||||
|
var uri = Uri.parse(url);
|
||||||
|
Map<String, dynamic> resultParams = {};
|
||||||
|
uri.queryParameters.forEach((key, value) {
|
||||||
|
if (keep.contains(key)) {
|
||||||
|
resultParams[key] = value;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
url = uri.replace(queryParameters: resultParams).toString();
|
||||||
|
if (url.endsWith('?')) {
|
||||||
|
url = url.substring(0, url.length - 1);
|
||||||
|
}
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
String sourceSpecificStandardizeURL(String url) {
|
||||||
|
var standardUri = Uri.parse(url);
|
||||||
|
var pathSegments = standardUri.pathSegments;
|
||||||
|
if (pathSegments.last == 'index.xml') {
|
||||||
|
pathSegments.removeLast();
|
||||||
|
standardUri = standardUri.replace(path: pathSegments.join('/'));
|
||||||
|
}
|
||||||
|
return removeQueryParamsFromUrl(standardUri.toString(), keep: ['appId']);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<Map<String, List<String>>> search(String query,
|
||||||
|
{Map<String, dynamic> querySettings = const {}}) async {
|
||||||
|
query = removeQueryParamsFromUrl(standardizeUrl(query));
|
||||||
|
var res = await sourceRequest('$query/index.xml');
|
||||||
|
if (res.statusCode == 200) {
|
||||||
|
var body = parse(res.body);
|
||||||
|
Map<String, List<String>> results = {};
|
||||||
|
body.querySelectorAll('application').toList().forEach((app) {
|
||||||
|
String appId = app.attributes['id']!;
|
||||||
|
results['$query?appId=$appId'] = [
|
||||||
|
app.querySelector('name')?.innerHtml ?? appId,
|
||||||
|
app.querySelector('desc')?.innerHtml ?? ''
|
||||||
|
];
|
||||||
|
});
|
||||||
|
return results;
|
||||||
|
} else {
|
||||||
|
throw getObtainiumHttpError(res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
App endOfGetAppChanges(App app) {
|
||||||
|
var uri = Uri.parse(app.url);
|
||||||
|
String? appId;
|
||||||
|
if (!isTempId(app)) {
|
||||||
|
appId = app.id;
|
||||||
|
} else if (uri.queryParameters['appId'] != null) {
|
||||||
|
appId = uri.queryParameters['appId'];
|
||||||
|
}
|
||||||
|
if (appId != null) {
|
||||||
|
app.url = uri
|
||||||
|
.replace(
|
||||||
|
queryParameters: Map.fromEntries(
|
||||||
|
[...uri.queryParameters.entries, MapEntry('appId', appId)]))
|
||||||
|
.toString();
|
||||||
|
app.additionalSettings['appIdOrName'] = appId;
|
||||||
|
app.id = appId;
|
||||||
|
}
|
||||||
|
return app;
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<APKDetails> getLatestAPKDetails(
|
Future<APKDetails> getLatestAPKDetails(
|
||||||
String standardUrl,
|
String standardUrl,
|
||||||
Map<String, dynamic> additionalSettings,
|
Map<String, dynamic> additionalSettings,
|
||||||
) async {
|
) async {
|
||||||
String? appIdOrName = additionalSettings['appIdOrName'];
|
String? appIdOrName = additionalSettings['appIdOrName'];
|
||||||
|
var standardUri = Uri.parse(standardUrl);
|
||||||
|
if (standardUri.queryParameters['appId'] != null) {
|
||||||
|
appIdOrName = standardUri.queryParameters['appId'];
|
||||||
|
}
|
||||||
|
standardUrl = removeQueryParamsFromUrl(standardUrl);
|
||||||
bool pickHighestVersionCode = additionalSettings['pickHighestVersionCode'];
|
bool pickHighestVersionCode = additionalSettings['pickHighestVersionCode'];
|
||||||
if (appIdOrName == null) {
|
if (appIdOrName == null) {
|
||||||
throw NoReleasesError();
|
throw NoReleasesError();
|
||||||
@@ -41,7 +117,7 @@ class FDroidRepo extends AppSource {
|
|||||||
if (foundApps.isEmpty) {
|
if (foundApps.isEmpty) {
|
||||||
foundApps = body.querySelectorAll('application').where((element) {
|
foundApps = body.querySelectorAll('application').where((element) {
|
||||||
return element.querySelector('name')?.innerHtml.toLowerCase() ==
|
return element.querySelector('name')?.innerHtml.toLowerCase() ==
|
||||||
appIdOrName.toLowerCase();
|
appIdOrName!.toLowerCase();
|
||||||
}).toList();
|
}).toList();
|
||||||
}
|
}
|
||||||
if (foundApps.isEmpty) {
|
if (foundApps.isEmpty) {
|
||||||
@@ -50,7 +126,7 @@ class FDroidRepo extends AppSource {
|
|||||||
.querySelector('name')
|
.querySelector('name')
|
||||||
?.innerHtml
|
?.innerHtml
|
||||||
.toLowerCase()
|
.toLowerCase()
|
||||||
.contains(appIdOrName.toLowerCase()) ??
|
.contains(appIdOrName!.toLowerCase()) ??
|
||||||
false;
|
false;
|
||||||
}).toList();
|
}).toList();
|
||||||
}
|
}
|
||||||
@@ -58,8 +134,9 @@ class FDroidRepo extends AppSource {
|
|||||||
throw ObtainiumError(tr('appWithIdOrNameNotFound'));
|
throw ObtainiumError(tr('appWithIdOrNameNotFound'));
|
||||||
}
|
}
|
||||||
var authorName = body.querySelector('repo')?.attributes['name'] ?? name;
|
var authorName = body.querySelector('repo')?.attributes['name'] ?? name;
|
||||||
var appName =
|
String appId = foundApps[0].attributes['id']!;
|
||||||
foundApps[0].querySelector('name')?.innerHtml ?? appIdOrName;
|
foundApps[0].querySelector('name')?.innerHtml ?? appId;
|
||||||
|
var appName = foundApps[0].querySelector('name')?.innerHtml ?? appId;
|
||||||
var releases = foundApps[0].querySelectorAll('package');
|
var releases = foundApps[0].querySelectorAll('package');
|
||||||
String? latestVersion = releases[0].querySelector('version')?.innerHtml;
|
String? latestVersion = releases[0].querySelector('version')?.innerHtml;
|
||||||
String? added = releases[0].querySelector('added')?.innerHtml;
|
String? added = releases[0].querySelector('added')?.innerHtml;
|
||||||
|
@@ -22,7 +22,7 @@ String ensureAbsoluteUrl(String ambiguousUrl, Uri referenceAbsoluteUrl) {
|
|||||||
} else if (ambiguousUrl.split('/').where((e) => e.isNotEmpty).length == 1) {
|
} else if (ambiguousUrl.split('/').where((e) => e.isNotEmpty).length == 1) {
|
||||||
return '${referenceAbsoluteUrl.origin}/${currPathSegments.join('/')}/$ambiguousUrl';
|
return '${referenceAbsoluteUrl.origin}/${currPathSegments.join('/')}/$ambiguousUrl';
|
||||||
} else {
|
} else {
|
||||||
return '${referenceAbsoluteUrl.origin}/${currPathSegments.sublist(0, currPathSegments.length - 1).join('/')}/$ambiguousUrl';
|
return '${referenceAbsoluteUrl.origin}/${currPathSegments.sublist(0, currPathSegments.length - (currPathSegments.last.contains('.') ? 1 : 0)).join('/')}/$ambiguousUrl';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -117,6 +117,8 @@ class HTML extends AppSource {
|
|||||||
label: tr('versionExtractionRegEx'),
|
label: tr('versionExtractionRegEx'),
|
||||||
required: false,
|
required: false,
|
||||||
additionalValidators: [(value) => regExValidator(value)]),
|
additionalValidators: [(value) => regExValidator(value)]),
|
||||||
|
],
|
||||||
|
[
|
||||||
GeneratedFormTextField('matchGroupToUse',
|
GeneratedFormTextField('matchGroupToUse',
|
||||||
label: tr('matchGroupToUse'),
|
label: tr('matchGroupToUse'),
|
||||||
required: false,
|
required: false,
|
||||||
@@ -131,6 +133,10 @@ class HTML extends AppSource {
|
|||||||
return intValidator(value);
|
return intValidator(value);
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeneratedFormSwitch('versionExtractWholePage',
|
||||||
|
label: tr('versionExtractWholePage'))
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
overrideVersionDetectionFormDefault('noVersionDetection',
|
overrideVersionDetectionFormDefault('noVersionDetection',
|
||||||
@@ -212,7 +218,8 @@ class HTML extends AppSource {
|
|||||||
var versionExtractionRegEx =
|
var versionExtractionRegEx =
|
||||||
additionalSettings['versionExtractionRegEx'] as String?;
|
additionalSettings['versionExtractionRegEx'] as String?;
|
||||||
if (versionExtractionRegEx?.isNotEmpty == true) {
|
if (versionExtractionRegEx?.isNotEmpty == true) {
|
||||||
var match = RegExp(versionExtractionRegEx!).allMatches(rel);
|
var match = RegExp(versionExtractionRegEx!).allMatches(
|
||||||
|
res.body.split('\r\n').join('\n').split('\n').join('\\n'));
|
||||||
if (match.isEmpty) {
|
if (match.isEmpty) {
|
||||||
throw NoVersionError();
|
throw NoVersionError();
|
||||||
}
|
}
|
||||||
|
@@ -35,7 +35,7 @@ class Uptodown extends AppSource {
|
|||||||
var html = parse(res.body);
|
var html = parse(res.body);
|
||||||
String? version = html.querySelector('div.version')?.innerHtml;
|
String? version = html.querySelector('div.version')?.innerHtml;
|
||||||
String? apkUrl =
|
String? apkUrl =
|
||||||
html.querySelector('#detail-download-button')?.attributes['data-url'];
|
'${standardUrl.split('/').reversed.toList().sublist(1).reversed.join('/')}/post-download';
|
||||||
String? name = html.querySelector('#detail-app-name')?.innerHtml.trim();
|
String? name = html.querySelector('#detail-app-name')?.innerHtml.trim();
|
||||||
String? author = html.querySelector('#author-link')?.innerHtml.trim();
|
String? author = html.querySelector('#author-link')?.innerHtml.trim();
|
||||||
var detailElements = html.querySelectorAll('#technical-information td');
|
var detailElements = html.querySelectorAll('#technical-information td');
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:android_package_installer/android_package_installer.dart';
|
import 'package:android_package_installer/android_package_installer.dart';
|
||||||
import 'package:easy_localization/easy_localization.dart';
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
@@ -72,6 +74,9 @@ class MultiAppMultiError extends ObtainiumError {
|
|||||||
MultiAppMultiError() : super(tr('placeholder'), unexpected: true);
|
MultiAppMultiError() : super(tr('placeholder'), unexpected: true);
|
||||||
|
|
||||||
add(String appId, dynamic error, {String? appName}) {
|
add(String appId, dynamic error, {String? appName}) {
|
||||||
|
if (error is SocketException) {
|
||||||
|
error = error.message;
|
||||||
|
}
|
||||||
rawErrors[appId] = error;
|
rawErrors[appId] = error;
|
||||||
var string = error.toString();
|
var string = error.toString();
|
||||||
var tempIds = idsByErrorString.remove(string);
|
var tempIds = idsByErrorString.remove(string);
|
||||||
@@ -83,17 +88,22 @@ class MultiAppMultiError extends ObtainiumError {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String errorString(String appId) =>
|
String errorString(String appId, {bool includeIdsWithNames = false}) =>
|
||||||
'${appIdNames.containsKey(appId) ? '${appIdNames[appId]} ($appId)' : appId}: ${rawErrors[appId].toString()}';
|
'${appIdNames.containsKey(appId) ? '${appIdNames[appId]}${includeIdsWithNames ? ' ($appId)' : ''}' : appId}: ${rawErrors[appId].toString()}';
|
||||||
|
|
||||||
|
String errorsAppsString(String errString, List<String> appIds,
|
||||||
|
{bool includeIdsWithNames = false}) =>
|
||||||
|
'$errString [${list2FriendlyString(appIds.map((id) => appIdNames.containsKey(id) == true ? '${appIdNames[id]}${includeIdsWithNames ? ' ($id)' : ''}' : id).toList())}]';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() =>
|
String toString() => idsByErrorString.entries
|
||||||
idsByErrorString.keys.map((e) => errorString(e)).join('\n\n');
|
.map((e) => errorsAppsString(e.key, e.value))
|
||||||
|
.join('\n\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
showError(dynamic e, BuildContext context) {
|
showMessage(dynamic e, BuildContext context, {bool isError = false}) {
|
||||||
Provider.of<LogsProvider>(context, listen: false)
|
Provider.of<LogsProvider>(context, listen: false)
|
||||||
.add(e.toString(), level: LogLevels.error);
|
.add(e.toString(), level: isError ? LogLevels.error : LogLevels.info);
|
||||||
if (e is String || (e is ObtainiumError && !e.unexpected)) {
|
if (e is String || (e is ObtainiumError && !e.unexpected)) {
|
||||||
ScaffoldMessenger.of(context).showSnackBar(
|
ScaffoldMessenger.of(context).showSnackBar(
|
||||||
SnackBar(content: Text(e.toString())),
|
SnackBar(content: Text(e.toString())),
|
||||||
@@ -105,8 +115,8 @@ showError(dynamic e, BuildContext context) {
|
|||||||
return AlertDialog(
|
return AlertDialog(
|
||||||
scrollable: true,
|
scrollable: true,
|
||||||
title: Text(e is MultiAppMultiError
|
title: Text(e is MultiAppMultiError
|
||||||
? tr('someErrors')
|
? tr(isError ? 'someErrors' : 'updates')
|
||||||
: tr('unexpectedError')),
|
: tr(isError ? 'unexpectedError' : 'unknown')),
|
||||||
content: GestureDetector(
|
content: GestureDetector(
|
||||||
onLongPress: () {
|
onLongPress: () {
|
||||||
Clipboard.setData(ClipboardData(text: e.toString()));
|
Clipboard.setData(ClipboardData(text: e.toString()));
|
||||||
@@ -127,6 +137,10 @@ showError(dynamic e, BuildContext context) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
showError(dynamic e, BuildContext context) {
|
||||||
|
showMessage(e, context, isError: true);
|
||||||
|
}
|
||||||
|
|
||||||
String list2FriendlyString(List<String> list) {
|
String list2FriendlyString(List<String> list) {
|
||||||
return list.length == 2
|
return list.length == 2
|
||||||
? '${list[0]} ${tr('and')} ${list[1]}'
|
? '${list[0]} ${tr('and')} ${list[1]}'
|
||||||
|
@@ -19,7 +19,7 @@ import 'package:easy_localization/src/easy_localization_controller.dart';
|
|||||||
// ignore: implementation_imports
|
// ignore: implementation_imports
|
||||||
import 'package:easy_localization/src/localization.dart';
|
import 'package:easy_localization/src/localization.dart';
|
||||||
|
|
||||||
const String currentVersion = '0.14.24';
|
const String currentVersion = '0.14.30';
|
||||||
const String currentReleaseTag =
|
const String currentReleaseTag =
|
||||||
'v$currentVersion-beta'; // KEEP THIS IN SYNC WITH GITHUB RELEASES
|
'v$currentVersion-beta'; // KEEP THIS IN SYNC WITH GITHUB RELEASES
|
||||||
|
|
||||||
|
@@ -153,8 +153,7 @@ class _AddAppPageState extends State<AddAppPage> {
|
|||||||
overrideSource: pickedSourceOverride,
|
overrideSource: pickedSourceOverride,
|
||||||
inferAppIdIfOptional: inferAppIdIfOptional);
|
inferAppIdIfOptional: inferAppIdIfOptional);
|
||||||
// Only download the APK here if you need to for the package ID
|
// Only download the APK here if you need to for the package ID
|
||||||
if (sourceProvider.isTempId(app) &&
|
if (isTempId(app) && app.additionalSettings['trackOnly'] != true) {
|
||||||
app.additionalSettings['trackOnly'] != true) {
|
|
||||||
// ignore: use_build_context_synchronously
|
// ignore: use_build_context_synchronously
|
||||||
var apkUrl = await appsProvider.confirmApkUrl(app, context);
|
var apkUrl = await appsProvider.confirmApkUrl(app, context);
|
||||||
if (apkUrl == null) {
|
if (apkUrl == null) {
|
||||||
@@ -260,8 +259,9 @@ class _AddAppPageState extends State<AddAppPage> {
|
|||||||
searching = true;
|
searching = true;
|
||||||
});
|
});
|
||||||
try {
|
try {
|
||||||
var results = await Future.wait(
|
var results = await Future.wait(sourceProvider.sources
|
||||||
sourceProvider.sources.where((e) => e.canSearch).map((e) async {
|
.where((e) => e.canSearch && !e.excludeFromMassSearch)
|
||||||
|
.map((e) async {
|
||||||
try {
|
try {
|
||||||
return await e.search(searchQuery);
|
return await e.search(searchQuery);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
@@ -292,7 +292,7 @@ class _AppPageState extends State<AppPage> {
|
|||||||
if (source?.enforceTrackOnly == true) {
|
if (source?.enforceTrackOnly == true) {
|
||||||
app.app.additionalSettings['trackOnly'] = true;
|
app.app.additionalSettings['trackOnly'] = true;
|
||||||
// ignore: use_build_context_synchronously
|
// ignore: use_build_context_synchronously
|
||||||
showError(tr('appsFromSourceAreTrackOnly'), context);
|
showMessage(tr('appsFromSourceAreTrackOnly'), context);
|
||||||
}
|
}
|
||||||
if (app.app.additionalSettings['versionDetection'] ==
|
if (app.app.additionalSettings['versionDetection'] ==
|
||||||
'releaseDateAsVersion') {
|
'releaseDateAsVersion') {
|
||||||
@@ -343,7 +343,7 @@ class _AppPageState extends State<AppPage> {
|
|||||||
);
|
);
|
||||||
if (app?.app.installedVersion != null && !trackOnly) {
|
if (app?.app.installedVersion != null && !trackOnly) {
|
||||||
// ignore: use_build_context_synchronously
|
// ignore: use_build_context_synchronously
|
||||||
showError(tr('appsUpdated'), context);
|
showMessage(tr('appsUpdated'), context);
|
||||||
}
|
}
|
||||||
if (res.isNotEmpty && mounted) {
|
if (res.isNotEmpty && mounted) {
|
||||||
Navigator.of(context).pop();
|
Navigator.of(context).pop();
|
||||||
|
@@ -566,7 +566,7 @@ class AppsPageState extends State<AppsPage> {
|
|||||||
.toInt()
|
.toInt()
|
||||||
.toString()
|
.toString()
|
||||||
])
|
])
|
||||||
: tr('pleaseWait'),
|
: tr('installing'),
|
||||||
textAlign: (listedApps[index].downloadProgress! >= 0)
|
textAlign: (listedApps[index].downloadProgress! >= 0)
|
||||||
? TextAlign.start
|
? TextAlign.start
|
||||||
: TextAlign.end,
|
: TextAlign.end,
|
||||||
@@ -705,7 +705,7 @@ class AppsPageState extends State<AppsPage> {
|
|||||||
return <String>[];
|
return <String>[];
|
||||||
}).then((value) {
|
}).then((value) {
|
||||||
if (shouldInstallUpdates) {
|
if (shouldInstallUpdates) {
|
||||||
showError(tr('appsUpdated'), context);
|
showMessage(tr('appsUpdated'), context);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@@ -81,7 +81,7 @@ class _ImportExportPageState extends State<ImportExportPage> {
|
|||||||
});
|
});
|
||||||
appsProvider.addAppsByURL(urls).then((errors) {
|
appsProvider.addAppsByURL(urls).then((errors) {
|
||||||
if (errors.isEmpty) {
|
if (errors.isEmpty) {
|
||||||
showError(tr('importedX', args: [plural('apps', urls.length)]),
|
showMessage(tr('importedX', args: [plural('apps', urls.length)]),
|
||||||
context);
|
context);
|
||||||
} else {
|
} else {
|
||||||
showDialog(
|
showDialog(
|
||||||
@@ -111,7 +111,7 @@ class _ImportExportPageState extends State<ImportExportPage> {
|
|||||||
sp: settingsProvider)
|
sp: settingsProvider)
|
||||||
.then((String? result) {
|
.then((String? result) {
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
showError(tr('exportedTo', args: [result]), context);
|
showMessage(tr('exportedTo', args: [result]), context);
|
||||||
}
|
}
|
||||||
}).catchError((e) {
|
}).catchError((e) {
|
||||||
showError(e, context);
|
showError(e, context);
|
||||||
@@ -141,7 +141,8 @@ class _ImportExportPageState extends State<ImportExportPage> {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
appsProvider.addMissingCategories(settingsProvider);
|
appsProvider.addMissingCategories(settingsProvider);
|
||||||
showError(tr('importedX', args: [plural('apps', value)]), context);
|
showMessage(
|
||||||
|
tr('importedX', args: [plural('apps', value)]), context);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// User canceled the picker
|
// User canceled the picker
|
||||||
@@ -216,7 +217,7 @@ class _ImportExportPageState extends State<ImportExportPage> {
|
|||||||
var errors = await appsProvider.addAppsByURL(selectedUrls);
|
var errors = await appsProvider.addAppsByURL(selectedUrls);
|
||||||
if (errors.isEmpty) {
|
if (errors.isEmpty) {
|
||||||
// ignore: use_build_context_synchronously
|
// ignore: use_build_context_synchronously
|
||||||
showError(
|
showMessage(
|
||||||
tr('importedX',
|
tr('importedX',
|
||||||
args: [plural('apps', selectedUrls.length)]),
|
args: [plural('apps', selectedUrls.length)]),
|
||||||
context);
|
context);
|
||||||
@@ -274,7 +275,7 @@ class _ImportExportPageState extends State<ImportExportPage> {
|
|||||||
var errors = await appsProvider.addAppsByURL(selectedUrls);
|
var errors = await appsProvider.addAppsByURL(selectedUrls);
|
||||||
if (errors.isEmpty) {
|
if (errors.isEmpty) {
|
||||||
// ignore: use_build_context_synchronously
|
// ignore: use_build_context_synchronously
|
||||||
showError(
|
showMessage(
|
||||||
tr('importedX', args: [plural('apps', selectedUrls.length)]),
|
tr('importedX', args: [plural('apps', selectedUrls.length)]),
|
||||||
context);
|
context);
|
||||||
} else {
|
} else {
|
||||||
|
@@ -535,7 +535,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||||||
onPressed: () {
|
onPressed: () {
|
||||||
context.read<LogsProvider>().get().then((logs) {
|
context.read<LogsProvider>().get().then((logs) {
|
||||||
if (logs.isEmpty) {
|
if (logs.isEmpty) {
|
||||||
showError(ObtainiumError(tr('noLogs')), context);
|
showMessage(ObtainiumError(tr('noLogs')), context);
|
||||||
} else {
|
} else {
|
||||||
showDialog(
|
showDialog(
|
||||||
context: context,
|
context: context,
|
||||||
@@ -577,7 +577,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||||||
const Duration(seconds: 0),
|
const Duration(seconds: 0),
|
||||||
bgUpdateCheckAlarmId + 200,
|
bgUpdateCheckAlarmId + 200,
|
||||||
bgUpdateCheck);
|
bgUpdateCheck);
|
||||||
showError(tr('bgTaskStarted'), context);
|
showMessage(tr('bgTaskStarted'), context);
|
||||||
},
|
},
|
||||||
child: Text(tr('runBgCheckNow')))
|
child: Text(tr('runBgCheckNow')))
|
||||||
],
|
],
|
||||||
|
@@ -263,25 +263,29 @@ class AppsProvider with ChangeNotifier {
|
|||||||
return downloadedFile;
|
return downloadedFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<File> handleAPKIDChange(App app, PackageInfo newInfo,
|
Future<File> handleAPKIDChange(App app, PackageInfo? newInfo,
|
||||||
File downloadedFile, String downloadUrl) async {
|
File downloadedFile, String downloadUrl) async {
|
||||||
// If the APK package ID is different from the App ID, it is either new (using a placeholder ID) or the ID has changed
|
// If the APK package ID is different from the App ID, it is either new (using a placeholder ID) or the ID has changed
|
||||||
// The former case should be handled (give the App its real ID), the latter is a security issue
|
// The former case should be handled (give the App its real ID), the latter is a security issue
|
||||||
if (app.id != newInfo.packageName) {
|
var isTempIdBool = isTempId(app);
|
||||||
var isTempId = SourceProvider().isTempId(app);
|
if (newInfo != null) {
|
||||||
if (apps[app.id] != null && !isTempId && !app.allowIdChange) {
|
if (app.id != newInfo.packageName) {
|
||||||
throw IDChangedError(newInfo.packageName!);
|
if (apps[app.id] != null && !isTempIdBool && !app.allowIdChange) {
|
||||||
}
|
throw IDChangedError(newInfo.packageName!);
|
||||||
var idChangeWasAllowed = app.allowIdChange;
|
}
|
||||||
app.allowIdChange = false;
|
var idChangeWasAllowed = app.allowIdChange;
|
||||||
var originalAppId = app.id;
|
app.allowIdChange = false;
|
||||||
app.id = newInfo.packageName!;
|
var originalAppId = app.id;
|
||||||
downloadedFile = downloadedFile.renameSync(
|
app.id = newInfo.packageName!;
|
||||||
'${downloadedFile.parent.path}/${app.id}-${downloadUrl.hashCode}.${downloadedFile.path.split('.').last}');
|
downloadedFile = downloadedFile.renameSync(
|
||||||
if (apps[originalAppId] != null) {
|
'${downloadedFile.parent.path}/${app.id}-${downloadUrl.hashCode}.${downloadedFile.path.split('.').last}');
|
||||||
await removeApps([originalAppId]);
|
if (apps[originalAppId] != null) {
|
||||||
await saveApps([app], onlyIfExists: !isTempId && !idChangeWasAllowed);
|
await removeApps([originalAppId]);
|
||||||
|
await saveApps([app], onlyIfExists: !isTempIdBool && !idChangeWasAllowed);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} else if (isTempIdBool) {
|
||||||
|
throw ObtainiumError('Could not get ID from APK');
|
||||||
}
|
}
|
||||||
return downloadedFile;
|
return downloadedFile;
|
||||||
}
|
}
|
||||||
@@ -344,7 +348,7 @@ class AppsProvider with ChangeNotifier {
|
|||||||
await pm.getPackageArchiveInfo(archiveFilePath: apks.first.path);
|
await pm.getPackageArchiveInfo(archiveFilePath: apks.first.path);
|
||||||
}
|
}
|
||||||
downloadedFile =
|
downloadedFile =
|
||||||
await handleAPKIDChange(app, newInfo!, downloadedFile, downloadUrl);
|
await handleAPKIDChange(app, newInfo, downloadedFile, downloadUrl);
|
||||||
// Delete older versions of the file if any
|
// Delete older versions of the file if any
|
||||||
for (var file in downloadedFile.parent.listSync()) {
|
for (var file in downloadedFile.parent.listSync()) {
|
||||||
var fn = file.path.split('/').last;
|
var fn = file.path.split('/').last;
|
||||||
@@ -1136,7 +1140,6 @@ class AppsProvider with ChangeNotifier {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (exportDir == null) {
|
if (exportDir == null) {
|
||||||
logs.add('Skipping auto-export as dir is not set.');
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
var files = await saf
|
var files = await saf
|
||||||
@@ -1322,18 +1325,19 @@ class _APKOriginWarningDialogState extends State<APKOriginWarningDialog> {
|
|||||||
///
|
///
|
||||||
/// @param List<MapEntry<String, int>>? toCheck: The appIds to check for updates (with the number of previous attempts made per appid) (defaults to all apps)
|
/// @param List<MapEntry<String, int>>? toCheck: The appIds to check for updates (with the number of previous attempts made per appid) (defaults to all apps)
|
||||||
///
|
///
|
||||||
/// @param List<String>? toInstall: The appIds to attempt to update (defaults to an empty array)
|
/// @param List<String>? toInstall: The appIds to attempt to update (if empty - which is the default - all pending updates are taken)
|
||||||
///
|
///
|
||||||
/// When toCheck is empty, the function is in "install mode" (else it is in "update mode").
|
/// When toCheck is empty, the function is in "install mode" (else it is in "update mode").
|
||||||
/// In update mode, all apps in toCheck are checked for updates.
|
/// In update mode, all apps in toCheck are checked for updates (in parallel).
|
||||||
/// If an update is available, the appId is either added to toInstall (if a background update is possible) or the user is notified.
|
/// If an update is available and it cannot be installed silently, the user is notified of the available update.
|
||||||
/// If there are errors, the task is run again for the remaining apps after a few minutes (duration depends on the errors), up to a maximum of 5 tries for any app.
|
/// If there are any errors, the task is run again for the remaining apps after a few minutes (based on the error with the longest retry interval).
|
||||||
|
/// Any app that has reached it's retry limit, the user is notified that it could not be checked.
|
||||||
///
|
///
|
||||||
/// Once all update checks are complete, the task is run again in install mode.
|
/// Once all update checks are complete, the task is run again in install mode.
|
||||||
/// In this mode, all apps in toInstall are downloaded and installed in the background (install result is unknown).
|
/// In this mode, all pending silent updates are downloaded and installed in the background (serially - one at a time).
|
||||||
/// If there is an error, the function tries to continue after a few minutes (duration depends on the error), up to a maximum of 5 tries.
|
/// If there is an error, the offending app is moved to the back of the line of remaining apps, and the task is retried.
|
||||||
|
/// If an app repeatedly fails to install up to its retry limit, the user is notified.
|
||||||
///
|
///
|
||||||
/// In either mode, if the function fails after the maximum number of tries, the user is notified.
|
|
||||||
@pragma('vm:entry-point')
|
@pragma('vm:entry-point')
|
||||||
Future<void> bgUpdateCheck(int taskId, Map<String, dynamic>? params) async {
|
Future<void> bgUpdateCheck(int taskId, Map<String, dynamic>? params) async {
|
||||||
WidgetsFlutterBinding.ensureInitialized();
|
WidgetsFlutterBinding.ensureInitialized();
|
||||||
@@ -1369,8 +1373,38 @@ Future<void> bgUpdateCheck(int taskId, Map<String, dynamic>? params) async {
|
|||||||
(<List<MapEntry<String, int>>>[]))
|
(<List<MapEntry<String, int>>>[]))
|
||||||
];
|
];
|
||||||
|
|
||||||
bool installMode = toCheck.isEmpty &&
|
var netResult = await (Connectivity().checkConnectivity());
|
||||||
toInstall.isNotEmpty; // Task is either in update mode or install mode
|
|
||||||
|
if (netResult == ConnectivityResult.none) {
|
||||||
|
var networkBasedRetryInterval = 15;
|
||||||
|
var nextRegularCheck = appsProvider.settingsProvider.lastBGCheckTime
|
||||||
|
.add(Duration(minutes: appsProvider.settingsProvider.updateInterval));
|
||||||
|
var potentialNetworkRetryCheck =
|
||||||
|
DateTime.now().add(Duration(minutes: networkBasedRetryInterval));
|
||||||
|
var shouldRetry = potentialNetworkRetryCheck.isBefore(nextRegularCheck);
|
||||||
|
logs.add(
|
||||||
|
'BG update task $taskId: No network. Will ${shouldRetry ? 'retry in $networkBasedRetryInterval minutes' : 'not retry'}.');
|
||||||
|
AndroidAlarmManager.oneShot(
|
||||||
|
const Duration(minutes: 15), taskId + 1, bgUpdateCheck,
|
||||||
|
params: {
|
||||||
|
'toCheck': toCheck
|
||||||
|
.map((entry) => {'key': entry.key, 'value': entry.value})
|
||||||
|
.toList(),
|
||||||
|
'toInstall': toInstall
|
||||||
|
.map((entry) => {'key': entry.key, 'value': entry.value})
|
||||||
|
.toList(),
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var networkRestricted = false;
|
||||||
|
if (appsProvider.settingsProvider.bgUpdatesOnWiFiOnly) {
|
||||||
|
networkRestricted = (netResult != ConnectivityResult.wifi) &&
|
||||||
|
(netResult != ConnectivityResult.ethernet);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool installMode =
|
||||||
|
toCheck.isEmpty; // Task is either in update mode or install mode
|
||||||
|
|
||||||
logs.add(
|
logs.add(
|
||||||
'BG ${installMode ? 'install' : 'update'} task $taskId: Started (${installMode ? toInstall.length : toCheck.length}).');
|
'BG ${installMode ? 'install' : 'update'} task $taskId: Started (${installMode ? toInstall.length : toCheck.length}).');
|
||||||
@@ -1381,26 +1415,32 @@ Future<void> bgUpdateCheck(int taskId, Map<String, dynamic>? params) async {
|
|||||||
// - toNotify - Apps with updates that the user will be notified about (can't be silently installed)
|
// - toNotify - Apps with updates that the user will be notified about (can't be silently installed)
|
||||||
// - toRetry - Apps with update check errors that will be retried in a while
|
// - toRetry - Apps with update check errors that will be retried in a while
|
||||||
// - toThrow - Apps with update check errors that the user will be notified about (no retry)
|
// - toThrow - Apps with update check errors that the user will be notified about (no retry)
|
||||||
// - toInstall - Apps with updates that will be installed silently
|
|
||||||
// After grouping the updates, we take care of toNotify and toThrow first
|
// After grouping the updates, we take care of toNotify and toThrow first
|
||||||
// Then if toRetry is not empty, we schedule another update task to run in a while (toInstall is retained)
|
// Then if toRetry is not empty, we schedule another update task to run in a while
|
||||||
// If toRetry is empty, we take care of toInstall
|
// If toRetry is empty, we take care of schedule another task that will run in install mode (toCheck is empty)
|
||||||
|
|
||||||
// Init. vars.
|
// Init. vars.
|
||||||
List<App> updates = [];
|
List<App> updates = []; // All updates found (silent and non-silent)
|
||||||
List<App> toNotify = [];
|
List<App> toNotify =
|
||||||
List<MapEntry<String, int>> toRetry = [];
|
[]; // All non-silent updates that the user will be notified about
|
||||||
var retryAfterXSeconds = 0;
|
List<MapEntry<String, int>> toRetry =
|
||||||
List<String> toThrow = [];
|
[]; // All apps that got errors while checking
|
||||||
|
var retryAfterXSeconds =
|
||||||
|
0; // How long to wait until the next attempt (if there are errors)
|
||||||
|
MultiAppMultiError?
|
||||||
|
errors; // All errors including those that will lead to a retry
|
||||||
|
MultiAppMultiError toThrow =
|
||||||
|
MultiAppMultiError(); // All errors that will not lead to a retry, just a notification
|
||||||
|
CheckingUpdatesNotification notif = CheckingUpdatesNotification(
|
||||||
|
plural('apps', toCheck.length)); // The notif. to show while checking
|
||||||
|
|
||||||
|
// Set a bool for when we're no on wifi/wired and the user doesn't want to download apps in that state
|
||||||
var networkRestricted = false;
|
var networkRestricted = false;
|
||||||
if (appsProvider.settingsProvider.bgUpdatesOnWiFiOnly) {
|
if (appsProvider.settingsProvider.bgUpdatesOnWiFiOnly) {
|
||||||
var netResult = await (Connectivity().checkConnectivity());
|
var netResult = await (Connectivity().checkConnectivity());
|
||||||
networkRestricted = (netResult != ConnectivityResult.wifi) &&
|
networkRestricted = (netResult != ConnectivityResult.wifi) &&
|
||||||
(netResult != ConnectivityResult.ethernet);
|
(netResult != ConnectivityResult.ethernet);
|
||||||
}
|
}
|
||||||
MultiAppMultiError? errors;
|
|
||||||
CheckingUpdatesNotification notif =
|
|
||||||
CheckingUpdatesNotification(plural('apps', toCheck.length));
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Check for updates
|
// Check for updates
|
||||||
@@ -1408,7 +1448,7 @@ Future<void> bgUpdateCheck(int taskId, Map<String, dynamic>? params) async {
|
|||||||
updates = await appsProvider.checkUpdates(
|
updates = await appsProvider.checkUpdates(
|
||||||
specificIds: toCheck.map((e) => e.key).toList());
|
specificIds: toCheck.map((e) => e.key).toList());
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// If there were errors, group them into toRetry and toThrow
|
// If there were errors, group them into toRetry and toThrow based on max retry count per app
|
||||||
if (e is Map) {
|
if (e is Map) {
|
||||||
updates = e['updates'];
|
updates = e['updates'];
|
||||||
errors = e['errors'];
|
errors = e['errors'];
|
||||||
@@ -1418,6 +1458,7 @@ Future<void> bgUpdateCheck(int taskId, Map<String, dynamic>? params) async {
|
|||||||
var toCheckApp = toCheck.where((element) => element.key == key).first;
|
var toCheckApp = toCheck.where((element) => element.key == key).first;
|
||||||
if (toCheckApp.value < maxAttempts) {
|
if (toCheckApp.value < maxAttempts) {
|
||||||
toRetry.add(MapEntry(toCheckApp.key, toCheckApp.value + 1));
|
toRetry.add(MapEntry(toCheckApp.key, toCheckApp.value + 1));
|
||||||
|
// Next task interval is based on the error with the longest retry time
|
||||||
var minRetryIntervalForThisApp = err is RateLimitError
|
var minRetryIntervalForThisApp = err is RateLimitError
|
||||||
? (err.remainingMinutes * 60)
|
? (err.remainingMinutes * 60)
|
||||||
: e is ClientException
|
: e is ClientException
|
||||||
@@ -1427,11 +1468,11 @@ Future<void> bgUpdateCheck(int taskId, Map<String, dynamic>? params) async {
|
|||||||
retryAfterXSeconds = minRetryIntervalForThisApp;
|
retryAfterXSeconds = minRetryIntervalForThisApp;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
toThrow.add(key);
|
toThrow.add(key, err, appName: errors?.appIdNames[key]);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// We don't expect to ever get here in any situation so no need to catch
|
// We don't expect to ever get here in any situation so no need to catch (but log it in case)
|
||||||
logs.add('Fatal error in BG update task: ${e.toString()}');
|
logs.add('Fatal error in BG update task: ${e.toString()}');
|
||||||
rethrow;
|
rethrow;
|
||||||
}
|
}
|
||||||
@@ -1439,13 +1480,13 @@ Future<void> bgUpdateCheck(int taskId, Map<String, dynamic>? params) async {
|
|||||||
notificationsProvider.cancel(notif.id);
|
notificationsProvider.cancel(notif.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Group the updates into toNotify and toInstall
|
// Filter out updates that will be installed silently (the rest go into toNotify)
|
||||||
for (var i = 0; i < updates.length; i++) {
|
for (var i = 0; i < updates.length; i++) {
|
||||||
if (networkRestricted ||
|
if (networkRestricted ||
|
||||||
!(await appsProvider.canInstallSilently(updates[i]))) {
|
!(await appsProvider.canInstallSilently(updates[i]))) {
|
||||||
toNotify.add(updates[i]);
|
if (updates[i].additionalSettings['skipUpdateNotifications'] != true) {
|
||||||
} else {
|
toNotify.add(updates[i]);
|
||||||
toInstall.add(MapEntry(updates[i].id, 0));
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1454,11 +1495,11 @@ Future<void> bgUpdateCheck(int taskId, Map<String, dynamic>? params) async {
|
|||||||
notificationsProvider.notify(UpdateNotification(toNotify));
|
notificationsProvider.notify(UpdateNotification(toNotify));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send the error notifications
|
// Send the error notifications (grouped by error string)
|
||||||
if (toThrow.isNotEmpty) {
|
if (toThrow.rawErrors.isNotEmpty) {
|
||||||
for (var appId in toThrow) {
|
for (var element in toThrow.idsByErrorString.entries) {
|
||||||
notificationsProvider.notify(ErrorCheckingUpdatesNotification(
|
notificationsProvider.notify(ErrorCheckingUpdatesNotification(
|
||||||
errors!.errorString(appId),
|
errors!.errorsAppsString(element.key, element.value),
|
||||||
id: Random().nextInt(10000)));
|
id: Random().nextInt(10000)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1477,7 +1518,7 @@ Future<void> bgUpdateCheck(int taskId, Map<String, dynamic>? params) async {
|
|||||||
.map((entry) => {'key': entry.key, 'value': entry.value})
|
.map((entry) => {'key': entry.key, 'value': entry.value})
|
||||||
.toList(),
|
.toList(),
|
||||||
});
|
});
|
||||||
} else if (toInstall.isNotEmpty) {
|
} else {
|
||||||
// If there are no more update checks, schedule an install task
|
// If there are no more update checks, schedule an install task
|
||||||
logs.add(
|
logs.add(
|
||||||
'BG update task $taskId: Done. Scheduling install task to run immediately.');
|
'BG update task $taskId: Done. Scheduling install task to run immediately.');
|
||||||
@@ -1489,14 +1530,19 @@ Future<void> bgUpdateCheck(int taskId, Map<String, dynamic>? params) async {
|
|||||||
.map((entry) => {'key': entry.key, 'value': entry.value})
|
.map((entry) => {'key': entry.key, 'value': entry.value})
|
||||||
.toList()
|
.toList()
|
||||||
});
|
});
|
||||||
} else {
|
|
||||||
logs.add('BG install task $taskId: Done.');
|
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
|
// In install mode...
|
||||||
if (installMode) {
|
// If you haven't explicitly been given updates to install (which is the case for new tasks), grab all available silent updates
|
||||||
// If in install mode, we install silent updates.
|
if (toInstall.isEmpty && !networkRestricted) {
|
||||||
|
var temp = appsProvider.findExistingUpdates(installedOnly: true);
|
||||||
|
for (var i = 0; i < temp.length; i++) {
|
||||||
|
if (await appsProvider
|
||||||
|
.canInstallSilently(appsProvider.apps[temp[i]]!.app)) {
|
||||||
|
toInstall.add(MapEntry(temp[i], 0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
var didCompleteInstalling = false;
|
var didCompleteInstalling = false;
|
||||||
var tempObtArr = toInstall.where((element) => element.key == obtainiumId);
|
var tempObtArr = toInstall.where((element) => element.key == obtainiumId);
|
||||||
if (tempObtArr.isNotEmpty) {
|
if (tempObtArr.isNotEmpty) {
|
||||||
@@ -1548,9 +1594,9 @@ Future<void> bgUpdateCheck(int taskId, Map<String, dynamic>? params) async {
|
|||||||
.notify(ErrorCheckingUpdatesNotification(e.toString()));
|
.notify(ErrorCheckingUpdatesNotification(e.toString()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (didCompleteInstalling) {
|
}
|
||||||
logs.add('BG install task $taskId: Done.');
|
if (didCompleteInstalling || toInstall.isEmpty) {
|
||||||
}
|
logs.add('BG install task $taskId: Done.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -28,7 +28,7 @@ class UpdateNotification extends ObtainiumNotification {
|
|||||||
tr('updatesAvailable'),
|
tr('updatesAvailable'),
|
||||||
'',
|
'',
|
||||||
'UPDATES_AVAILABLE',
|
'UPDATES_AVAILABLE',
|
||||||
tr('updatesAvailable'),
|
tr('updatesAvailableNotifChannel'),
|
||||||
tr('updatesAvailableNotifDescription'),
|
tr('updatesAvailableNotifDescription'),
|
||||||
Importance.max) {
|
Importance.max) {
|
||||||
message = updates.isEmpty
|
message = updates.isEmpty
|
||||||
@@ -42,8 +42,14 @@ class UpdateNotification extends ObtainiumNotification {
|
|||||||
|
|
||||||
class SilentUpdateNotification extends ObtainiumNotification {
|
class SilentUpdateNotification extends ObtainiumNotification {
|
||||||
SilentUpdateNotification(List<App> updates, {int? id})
|
SilentUpdateNotification(List<App> updates, {int? id})
|
||||||
: super(id ?? 3, tr('appsUpdated'), '', 'APPS_UPDATED', tr('appsUpdated'),
|
: super(
|
||||||
tr('appsUpdatedNotifDescription'), Importance.defaultImportance) {
|
id ?? 3,
|
||||||
|
tr('appsUpdated'),
|
||||||
|
'',
|
||||||
|
'APPS_UPDATED',
|
||||||
|
tr('appsUpdatedNotifChannel'),
|
||||||
|
tr('appsUpdatedNotifDescription'),
|
||||||
|
Importance.defaultImportance) {
|
||||||
message = updates.length == 1
|
message = updates.length == 1
|
||||||
? tr('xWasUpdatedToY',
|
? tr('xWasUpdatedToY',
|
||||||
args: [updates[0].finalName, updates[0].latestVersion])
|
args: [updates[0].finalName, updates[0].latestVersion])
|
||||||
@@ -59,7 +65,7 @@ class SilentUpdateAttemptNotification extends ObtainiumNotification {
|
|||||||
tr('appsPossiblyUpdated'),
|
tr('appsPossiblyUpdated'),
|
||||||
'',
|
'',
|
||||||
'APPS_POSSIBLY_UPDATED',
|
'APPS_POSSIBLY_UPDATED',
|
||||||
tr('appsPossiblyUpdated'),
|
tr('appsPossiblyUpdatedNotifChannel'),
|
||||||
tr('appsPossiblyUpdatedNotifDescription'),
|
tr('appsPossiblyUpdatedNotifDescription'),
|
||||||
Importance.defaultImportance) {
|
Importance.defaultImportance) {
|
||||||
message = updates.length == 1
|
message = updates.length == 1
|
||||||
@@ -77,15 +83,21 @@ class ErrorCheckingUpdatesNotification extends ObtainiumNotification {
|
|||||||
tr('errorCheckingUpdates'),
|
tr('errorCheckingUpdates'),
|
||||||
error,
|
error,
|
||||||
'BG_UPDATE_CHECK_ERROR',
|
'BG_UPDATE_CHECK_ERROR',
|
||||||
tr('errorCheckingUpdates'),
|
tr('errorCheckingUpdatesNotifChannel'),
|
||||||
tr('errorCheckingUpdatesNotifDescription'),
|
tr('errorCheckingUpdatesNotifDescription'),
|
||||||
Importance.high);
|
Importance.high);
|
||||||
}
|
}
|
||||||
|
|
||||||
class AppsRemovedNotification extends ObtainiumNotification {
|
class AppsRemovedNotification extends ObtainiumNotification {
|
||||||
AppsRemovedNotification(List<List<String>> namedReasons)
|
AppsRemovedNotification(List<List<String>> namedReasons)
|
||||||
: super(6, tr('appsRemoved'), '', 'APPS_REMOVED', tr('appsRemoved'),
|
: super(
|
||||||
tr('appsRemovedNotifDescription'), Importance.max) {
|
6,
|
||||||
|
tr('appsRemoved'),
|
||||||
|
'',
|
||||||
|
'APPS_REMOVED',
|
||||||
|
tr('appsRemovedNotifChannel'),
|
||||||
|
tr('appsRemovedNotifDescription'),
|
||||||
|
Importance.max) {
|
||||||
message = '';
|
message = '';
|
||||||
for (var r in namedReasons) {
|
for (var r in namedReasons) {
|
||||||
message += '${tr('xWasRemovedDueToErrorY', args: [r[0], r[1]])} \n';
|
message += '${tr('xWasRemovedDueToErrorY', args: [r[0], r[1]])} \n';
|
||||||
@@ -101,7 +113,7 @@ class DownloadNotification extends ObtainiumNotification {
|
|||||||
tr('downloadingX', args: [appName]),
|
tr('downloadingX', args: [appName]),
|
||||||
'',
|
'',
|
||||||
'APP_DOWNLOADING',
|
'APP_DOWNLOADING',
|
||||||
tr('downloadingX', args: [tr('app')]),
|
tr('downloadingXNotifChannel', args: [tr('app')]),
|
||||||
tr('downloadNotifDescription'),
|
tr('downloadNotifDescription'),
|
||||||
Importance.low,
|
Importance.low,
|
||||||
onlyAlertOnce: true,
|
onlyAlertOnce: true,
|
||||||
@@ -113,7 +125,7 @@ final completeInstallationNotification = ObtainiumNotification(
|
|||||||
tr('completeAppInstallation'),
|
tr('completeAppInstallation'),
|
||||||
tr('obtainiumMustBeOpenToInstallApps'),
|
tr('obtainiumMustBeOpenToInstallApps'),
|
||||||
'COMPLETE_INSTALL',
|
'COMPLETE_INSTALL',
|
||||||
tr('completeAppInstallation'),
|
tr('completeAppInstallationNotifChannel'),
|
||||||
tr('completeAppInstallationNotifDescription'),
|
tr('completeAppInstallationNotifDescription'),
|
||||||
Importance.max);
|
Importance.max);
|
||||||
|
|
||||||
@@ -124,7 +136,7 @@ class CheckingUpdatesNotification extends ObtainiumNotification {
|
|||||||
tr('checkingForUpdates'),
|
tr('checkingForUpdates'),
|
||||||
appName,
|
appName,
|
||||||
'BG_UPDATE_CHECK',
|
'BG_UPDATE_CHECK',
|
||||||
tr('checkingForUpdates'),
|
tr('checkingForUpdatesNotifChannel'),
|
||||||
tr('checkingForUpdatesNotifDescription'),
|
tr('checkingForUpdatesNotifDescription'),
|
||||||
Importance.min);
|
Importance.min);
|
||||||
}
|
}
|
||||||
|
@@ -330,6 +330,7 @@ abstract class AppSource {
|
|||||||
bool appIdInferIsOptional = false;
|
bool appIdInferIsOptional = false;
|
||||||
bool allowSubDomains = false;
|
bool allowSubDomains = false;
|
||||||
bool naiveStandardVersionDetection = false;
|
bool naiveStandardVersionDetection = false;
|
||||||
|
bool neverAutoSelect = false;
|
||||||
|
|
||||||
AppSource() {
|
AppSource() {
|
||||||
name = runtimeType.toString();
|
name = runtimeType.toString();
|
||||||
@@ -372,6 +373,10 @@ abstract class AppSource {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
App endOfGetAppChanges(App app) {
|
||||||
|
return app;
|
||||||
|
}
|
||||||
|
|
||||||
Future<Response> sourceRequest(String url,
|
Future<Response> sourceRequest(String url,
|
||||||
{bool followRedirects = true,
|
{bool followRedirects = true,
|
||||||
Map<String, dynamic> additionalSettings =
|
Map<String, dynamic> additionalSettings =
|
||||||
@@ -442,6 +447,10 @@ abstract class AppSource {
|
|||||||
[
|
[
|
||||||
GeneratedFormSwitch('exemptFromBackgroundUpdates',
|
GeneratedFormSwitch('exemptFromBackgroundUpdates',
|
||||||
label: tr('exemptFromBackgroundUpdates'))
|
label: tr('exemptFromBackgroundUpdates'))
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeneratedFormSwitch('skipUpdateNotifications',
|
||||||
|
label: tr('skipUpdateNotifications'))
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -485,6 +494,7 @@ abstract class AppSource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool canSearch = false;
|
bool canSearch = false;
|
||||||
|
bool excludeFromMassSearch = false;
|
||||||
List<GeneratedFormItem> searchQuerySettingFormItems = [];
|
List<GeneratedFormItem> searchQuerySettingFormItems = [];
|
||||||
Future<Map<String, List<String>>> search(String query,
|
Future<Map<String, List<String>>> search(String query,
|
||||||
{Map<String, dynamic> querySettings = const {}}) {
|
{Map<String, dynamic> querySettings = const {}}) {
|
||||||
@@ -537,6 +547,11 @@ intValidator(String? value, {bool positive = false}) {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool isTempId(App app) {
|
||||||
|
// return app.id == generateTempID(app.url, app.additionalSettings);
|
||||||
|
return RegExp('^[0-9]+\$').hasMatch(app.id);
|
||||||
|
}
|
||||||
|
|
||||||
class SourceProvider {
|
class SourceProvider {
|
||||||
// Add more source classes here so they are available via the service
|
// Add more source classes here so they are available via the service
|
||||||
List<AppSource> get sources => [
|
List<AppSource> get sources => [
|
||||||
@@ -591,7 +606,8 @@ class SourceProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (source == null) {
|
if (source == null) {
|
||||||
for (var s in sources.where((element) => element.host == null)) {
|
for (var s in sources.where(
|
||||||
|
(element) => element.host == null && !element.neverAutoSelect)) {
|
||||||
try {
|
try {
|
||||||
s.sourceSpecificStandardizeURL(url);
|
s.sourceSpecificStandardizeURL(url);
|
||||||
source = s;
|
source = s;
|
||||||
@@ -622,11 +638,6 @@ class SourceProvider {
|
|||||||
String standardUrl, Map<String, dynamic> additionalSettings) =>
|
String standardUrl, Map<String, dynamic> additionalSettings) =>
|
||||||
(standardUrl + additionalSettings.toString()).hashCode.toString();
|
(standardUrl + additionalSettings.toString()).hashCode.toString();
|
||||||
|
|
||||||
bool isTempId(App app) {
|
|
||||||
// return app.id == generateTempID(app.url, app.additionalSettings);
|
|
||||||
return RegExp('^[0-9]+\$').hasMatch(app.id);
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<App> getApp(
|
Future<App> getApp(
|
||||||
AppSource source, String url, Map<String, dynamic> additionalSettings,
|
AppSource source, String url, Map<String, dynamic> additionalSettings,
|
||||||
{App? currentApp,
|
{App? currentApp,
|
||||||
@@ -668,7 +679,7 @@ class SourceProvider {
|
|||||||
String apkVersion = apk.version.replaceAll('/', '-');
|
String apkVersion = apk.version.replaceAll('/', '-');
|
||||||
var name = currentApp != null ? currentApp.name.trim() : '';
|
var name = currentApp != null ? currentApp.name.trim() : '';
|
||||||
name = name.isNotEmpty ? name : apk.names.name;
|
name = name.isNotEmpty ? name : apk.names.name;
|
||||||
return App(
|
App finalApp = App(
|
||||||
currentApp?.id ??
|
currentApp?.id ??
|
||||||
((!source.appIdInferIsOptional ||
|
((!source.appIdInferIsOptional ||
|
||||||
(source.appIdInferIsOptional && inferAppIdIfOptional))
|
(source.appIdInferIsOptional && inferAppIdIfOptional))
|
||||||
@@ -694,6 +705,7 @@ class SourceProvider {
|
|||||||
source.appIdInferIsOptional &&
|
source.appIdInferIsOptional &&
|
||||||
inferAppIdIfOptional // Optional ID inferring may be incorrect - allow correction on first install
|
inferAppIdIfOptional // Optional ID inferring may be incorrect - allow correction on first install
|
||||||
);
|
);
|
||||||
|
return source.endOfGetAppChanges(finalApp);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns errors in [results, errors] instead of throwing them
|
// Returns errors in [results, errors] instead of throwing them
|
||||||
|
52
pubspec.lock
52
pubspec.lock
@@ -5,18 +5,18 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: android_alarm_manager_plus
|
name: android_alarm_manager_plus
|
||||||
sha256: c20d91a9096596f66274bf8172321c278f9cba8091638f80205fe66d31587fa5
|
sha256: "82fb28c867c4b3dd7e9157728e46426b8916362f977dbba46b949210f00099f4"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.2"
|
version: "3.0.3"
|
||||||
android_intent_plus:
|
android_intent_plus:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: android_intent_plus
|
name: android_intent_plus
|
||||||
sha256: f72ae20bb37108694f442e7ae6acbd28b453ca62ce86842f6787b784355abfe6
|
sha256: e1c62bb41c90e15083b7fb84dc327fe90396cc9c1445b55ff1082144fabfb4d9
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.2"
|
version: "4.0.3"
|
||||||
android_package_installer:
|
android_package_installer:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@@ -46,10 +46,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: archive
|
name: archive
|
||||||
sha256: "06a96f1249f38a00435b3b0c9a3246d934d7dbc8183fc7c9e56989860edb99d4"
|
sha256: "7e0d52067d05f2e0324268097ba723b71cb41ac8a6a2b24d1edf9c536b987b03"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.4.4"
|
version: "3.4.6"
|
||||||
args:
|
args:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -118,10 +118,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: connectivity_plus
|
name: connectivity_plus
|
||||||
sha256: "77a180d6938f78ca7d2382d2240eb626c0f6a735d0bfdce227d8ffb80f95c48b"
|
sha256: "94d51c6f1299133a2baa4c5c3d2c11ec7d7fb4768dee5c52a56f7d7522fcf70e"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.2"
|
version: "5.0.0"
|
||||||
connectivity_plus_platform_interface:
|
connectivity_plus_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -142,10 +142,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: cross_file
|
name: cross_file
|
||||||
sha256: fd832b5384d0d6da4f6df60b854d33accaaeb63aa9e10e736a87381f08dee2cb
|
sha256: "445db18de832dba8d851e287aff8ccf169bed30d2e94243cb54c7d2f1ed2142c"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.3.3+5"
|
version: "0.3.3+6"
|
||||||
crypto:
|
crypto:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -238,18 +238,18 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: file
|
name: file
|
||||||
sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
|
sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.1.4"
|
version: "7.0.0"
|
||||||
file_picker:
|
file_picker:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: file_picker
|
name: file_picker
|
||||||
sha256: be325344c1f3070354a1d84a231a1ba75ea85d413774ec4bdf444c023342e030
|
sha256: "903dd4ba13eae7cef64acc480e91bf54c3ddd23b5b90b639c170f3911e489620"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.5.0"
|
version: "6.0.0"
|
||||||
flutter:
|
flutter:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description: flutter
|
description: flutter
|
||||||
@@ -546,10 +546,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: permission_handler_android
|
name: permission_handler_android
|
||||||
sha256: ace7d15a3d1a4a0b91c041d01e5405df221edb9de9116525efc773c74e6fc790
|
sha256: f9fddd3b46109bd69ff3f9efa5006d2d309b7aec0f3c1c5637a60a2d5659e76e
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "11.0.5"
|
version: "11.1.0"
|
||||||
permission_handler_apple:
|
permission_handler_apple:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -562,10 +562,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: permission_handler_platform_interface
|
name: permission_handler_platform_interface
|
||||||
sha256: f2343e9fa9c22ae4fd92d4732755bfe452214e7189afcc097380950cf567b4b2
|
sha256: "6760eb5ef34589224771010805bea6054ad28453906936f843a8cc4d3a55c4a4"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.11.5"
|
version: "3.12.0"
|
||||||
permission_handler_windows:
|
permission_handler_windows:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -586,10 +586,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: platform
|
name: platform
|
||||||
sha256: ae68c7bfcd7383af3629daafb32fb4e8681c7154428da4febcff06200585f102
|
sha256: "0a279f0707af40c890e80b1e9df8bb761694c074ba7e1d4ab1bc4b728e200b59"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.2"
|
version: "3.1.3"
|
||||||
plugin_platform_interface:
|
plugin_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -634,10 +634,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: shared_preferences
|
name: shared_preferences
|
||||||
sha256: b7f41bad7e521d205998772545de63ff4e6c97714775902c199353f8bf1511ac
|
sha256: "81429e4481e1ccfb51ede496e916348668fd0921627779233bd24cc3ff6abd02"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.1"
|
version: "2.2.2"
|
||||||
shared_preferences_android:
|
shared_preferences_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -658,10 +658,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shared_preferences_linux
|
name: shared_preferences_linux
|
||||||
sha256: c2eb5bf57a2fe9ad6988121609e47d3e07bb3bdca5b6f8444e4cf302428a128a
|
sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.1"
|
version: "2.3.2"
|
||||||
shared_preferences_platform_interface:
|
shared_preferences_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -682,10 +682,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shared_preferences_windows
|
name: shared_preferences_windows
|
||||||
sha256: f763a101313bd3be87edffe0560037500967de9c394a714cd598d945517f694f
|
sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.1"
|
version: "2.3.2"
|
||||||
shared_storage:
|
shared_storage:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@@ -17,7 +17,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
|
# 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
|
# 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.
|
# of the product and file versions while build-number is used as the build suffix.
|
||||||
version: 0.14.24+216 # When changing this, update the tag in main() accordingly
|
version: 0.14.30+222 # When changing this, update the tag in main() accordingly
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: '>=3.0.0 <4.0.0'
|
sdk: '>=3.0.0 <4.0.0'
|
||||||
@@ -49,7 +49,7 @@ dependencies:
|
|||||||
permission_handler: ^11.0.0
|
permission_handler: ^11.0.0
|
||||||
fluttertoast: ^8.0.9
|
fluttertoast: ^8.0.9
|
||||||
device_info_plus: ^9.0.0
|
device_info_plus: ^9.0.0
|
||||||
file_picker: ^5.2.10
|
file_picker: ^6.0.0
|
||||||
animations: ^2.0.4
|
animations: ^2.0.4
|
||||||
android_package_installer:
|
android_package_installer:
|
||||||
git:
|
git:
|
||||||
@@ -64,7 +64,7 @@ dependencies:
|
|||||||
flutter_markdown: ^0.6.14
|
flutter_markdown: ^0.6.14
|
||||||
flutter_archive: ^5.0.0
|
flutter_archive: ^5.0.0
|
||||||
hsluv: ^1.1.3
|
hsluv: ^1.1.3
|
||||||
connectivity_plus: ^4.0.2
|
connectivity_plus: ^5.0.0
|
||||||
shared_storage: ^0.8.0
|
shared_storage: ^0.8.0
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
|
Reference in New Issue
Block a user