mirror of
https://github.com/ImranR98/Obtainium.git
synced 2025-07-13 13:26:43 +02:00
Compare commits
98 Commits
v0.14.21-b
...
v0.14.27-b
Author | SHA1 | Date | |
---|---|---|---|
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 | |||
02f374fdf0 | |||
3536dcd775 | |||
6fa887e536 | |||
71755763b9 | |||
5aabcccfd4 | |||
1e009e2211 | |||
811bc6434b | |||
a5b2d06742 | |||
2c00674835 | |||
9bbff1f436 | |||
c75416f9be | |||
2cb750a7b0 | |||
abfec51964 | |||
e314717a3e | |||
290a78acb5 | |||
b40a4dd243 | |||
b38f6d0581 | |||
5c562a6bdb | |||
238d43f916 | |||
818dc23089 | |||
ddb50940ce | |||
96fb97f4ef | |||
6c0459c2ae | |||
30a9e1ee4b | |||
15a1f1e6e0 | |||
827e2b161c | |||
e95230859e | |||
95cb8ca493 | |||
5735293efb | |||
035df1f338 | |||
36a8b04c4f | |||
3d5411ef28 | |||
df7b74e727 | |||
0138599120 | |||
66446cbffc | |||
ef40f3900f | |||
ce259764a8 | |||
65187cb17b | |||
8f25245ad1 | |||
58b8baa019 | |||
ba1db88c8d | |||
c8f2f42a35 | |||
4e5a9b2af5 | |||
d1ab961c14 | |||
33caf4644e | |||
f34ffe18a8 | |||
4b1c5e111d | |||
dbd7c296c6 | |||
df93cbde8f | |||
d8cbc121a7 | |||
8163cd5c8f | |||
e9e9adb174 | |||
21fdfc1eef | |||
4304251e1e | |||
ae0cd74b0e | |||
6935bff244 | |||
102b9da617 | |||
8bd0d185ae | |||
7bfc5ae0a8 | |||
c72a41db9d | |||
5fbb1c2e32 | |||
850dd53c69 | |||
e3baf91037 | |||
4c811c9c04 | |||
4bc9f5826e |
70
.github/workflows/release.yml
vendored
Normal file
70
.github/workflows/release.yml
vendored
Normal file
@ -0,0 +1,70 @@
|
||||
name: Build and Release
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
- uses: subosito/flutter-action@v2
|
||||
|
||||
- name: Import GPG key
|
||||
id: import_pgp_key
|
||||
uses: crazy-max/ghaction-import-gpg@v6
|
||||
with:
|
||||
gpg_private_key: ${{ secrets.PGP_KEY_BASE64 }}
|
||||
passphrase: ${{ secrets.PGP_PASSPHRASE }}
|
||||
|
||||
- name: Build APKs
|
||||
run: |
|
||||
sed -i 's/signingConfig signingConfigs.release//g' android/app/build.gradle
|
||||
flutter build apk && flutter build apk --split-per-abi
|
||||
rm ./build/app/outputs/flutter-apk/*.sha1
|
||||
ls -l ./build/app/outputs/flutter-apk/
|
||||
|
||||
- name: Sign APKs
|
||||
env:
|
||||
KEYSTORE_BASE64: ${{ secrets.KEYSTORE_BASE64 }}
|
||||
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
|
||||
PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }}
|
||||
run: |
|
||||
echo "${KEYSTORE_BASE64}" | base64 -d > apksign.keystore
|
||||
for apk in ./build/app/outputs/flutter-apk/*-release*.apk; do
|
||||
unsignedFn=${apk/-release/-unsigned}
|
||||
mv "$apk" "$unsignedFn"
|
||||
${ANDROID_HOME}/build-tools/30.0.2/apksigner sign --ks apksign.keystore --ks-pass pass:"${KEYSTORE_PASSWORD}" --out "${apk}" "${unsignedFn}"
|
||||
sha256sum ${apk} | cut -d " " -f 1 > "$apk".sha256
|
||||
gpg --batch --pinentry-mode loopback --passphrase "${PGP_PASSPHRASE}" --sign --detach-sig "$apk".sha256
|
||||
done
|
||||
rm apksign.keystore
|
||||
PGP_KEY_FINGERPRINT="${{ steps.import_pgp_key.outputs.fingerprint }}"
|
||||
|
||||
- name: Extract Version
|
||||
id: extract_version
|
||||
run: |
|
||||
VERSION=$(grep -oP "currentVersion = '\K[^']+" lib/main.dart)
|
||||
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
||||
TAG=$(grep -oP "'.*\\\$currentVersion.*'" lib/main.dart | head -c -2 | tail -c +2 | sed "s/\$currentVersion/$VERSION/g")
|
||||
echo "tag=$TAG" >> $GITHUB_OUTPUT
|
||||
if [ -n "$(echo $TAG | grep -oP '\-beta$')" ]; then BETA=true; else BETA=false; fi
|
||||
echo "beta=$BETA" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Create Tag
|
||||
uses: mathieudutour/github-tag-action@v6.1
|
||||
with:
|
||||
github_token: ${{ secrets.GH_ACCESS_TOKEN }}
|
||||
custom_tag: "${{ steps.extract_version.outputs.tag }}"
|
||||
tag_prefix: ""
|
||||
|
||||
- name: Create Release And Upload APKs
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
token: ${{ secrets.GH_ACCESS_TOKEN }}
|
||||
tag: "${{ steps.extract_version.outputs.tag }}"
|
||||
prerelease: "${{ steps.extract_version.outputs.beta }}"
|
||||
artifacts: ./build/app/outputs/flutter-apk/*-release*.apk*
|
||||
generateReleaseNotes: true
|
@ -1,315 +1,329 @@
|
||||
{
|
||||
"invalidURLForSource": "Nije važeći URL aplikacije {}",
|
||||
"noReleaseFound": "Nije moguće pronaći odgovarajuće izdanje",
|
||||
"noVersionFound": "Nije moguće odrediti verziju izdanja",
|
||||
"urlMatchesNoSource": "URL se ne podudara s poznatim izvorom",
|
||||
"cantInstallOlderVersion": "Nije moguće instalirati stariju verziju aplikacije",
|
||||
"appIdMismatch": "ID preuzetog paketa se ne podudara s postojećim ID-om aplikacije",
|
||||
"functionNotImplemented": "Ova klasa nije implementirala ovu funkciju",
|
||||
"placeholder": "Rezervirano mjesto",
|
||||
"someErrors": "Došlo je do nekih grešaka",
|
||||
"unexpectedError": "Neočekivana greška",
|
||||
"ok": "Dobro",
|
||||
"and": "i",
|
||||
"githubPATLabel": "GitHub token za lični pristup (eng. PAT, povećava ograničenje stope)",
|
||||
"includePrereleases": "Uključi preliminarna izdanja",
|
||||
"fallbackToOlderReleases": "Povratak na starija izdanja",
|
||||
"filterReleaseTitlesByRegEx": "Filtrirajte naslove izdanja prema regularnom izrazu",
|
||||
"invalidRegEx": "Nevažeći regularni izraz",
|
||||
"noDescription": "Bez opisa",
|
||||
"cancel": "Otkaži",
|
||||
"continue": "Nastavite",
|
||||
"requiredInBrackets": "(obavezno)",
|
||||
"dropdownNoOptsError": "GREŠKA: PADAJUĆI MENI MORA IMATI NAJMANJE JEDNU OPCIJU",
|
||||
"colour": "Boja",
|
||||
"githubStarredRepos": "GitHub repo-i sa zvjezdicom",
|
||||
"uname": "Korisničko ime",
|
||||
"wrongArgNum": "Naveden je pogrešan broj argumenata",
|
||||
"xIsTrackOnly": "{} je samo za praćenje",
|
||||
"source": "Izvor",
|
||||
"app": "Aplikacija. ",
|
||||
"appsFromSourceAreTrackOnly": "Aplikacije iz ovog izvora su '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.",
|
||||
"cancelled": "Otkazano",
|
||||
"appAlreadyAdded": "Aplikacija je već dodana",
|
||||
"alreadyUpToDateQuestion": "Aplikacija je već ažurirana?",
|
||||
"addApp": "Dodaj aplikaciju",
|
||||
"appSourceURL": "Izvorni URL aplikacije",
|
||||
"error": "Greška",
|
||||
"add": "Dodaj",
|
||||
"searchSomeSourcesLabel": "Pretraživanje (samo neki izvori)",
|
||||
"search": "Pretraživanje",
|
||||
"additionalOptsFor": "Dodatne opcije za {}",
|
||||
"supportedSources": "Podržani izvori",
|
||||
"trackOnlyInBrackets": "(Samo za praćenje)",
|
||||
"searchableInBrackets": "(Može se pretraživati)",
|
||||
"appsString": "Aplikacije",
|
||||
"noApps": "Nema aplikacija",
|
||||
"noAppsForFilter": "Nema aplikacija za filter",
|
||||
"byX": "Autor {}",
|
||||
"percentProgress": "Napredak: {}%",
|
||||
"pleaseWait": "Molimo sačekajte",
|
||||
"updateAvailable": "Ažuriranje dostupno",
|
||||
"estimateInBracketsShort": "(Procjena)",
|
||||
"notInstalled": "Nije instalirano",
|
||||
"estimateInBrackets": "(Procjena)",
|
||||
"selectAll": "Označi sve",
|
||||
"deselectN": "Poništi odabir {}",
|
||||
"xWillBeRemovedButRemainInstalled": "{} će biti uklonjen iz Obtainiuma, ali će ostati instaliran na uređaju.",
|
||||
"removeSelectedAppsQuestion": "Želite li ukloniti odabrane aplikacije?",
|
||||
"removeSelectedApps": "Ukloni odabrane aplikacije",
|
||||
"updateX": "Nadogradi {}",
|
||||
"installX": "Instaliraj {}",
|
||||
"markXTrackOnlyAsUpdated": "Označi {}\n(samo za praćenje)\nkao ažurirano",
|
||||
"changeX": "Promjena {}",
|
||||
"installUpdateApps": "Instalirajte/ažurirajte aplikacije",
|
||||
"installUpdateSelectedApps": "Instalirajte/ažurirajte odabrane aplikacije",
|
||||
"markXSelectedAppsAsUpdated": "Označite {} odabrane aplikacije kao ažurirane?",
|
||||
"no": "Ne",
|
||||
"yes": "Da",
|
||||
"markSelectedAppsUpdated": "Označi odabrane aplikacije kao ažurirane",
|
||||
"pinToTop": "Prikvači na vrh",
|
||||
"unpinFromTop": "Otkvači sa vrha",
|
||||
"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.",
|
||||
"shareSelectedAppURLs": "Podijeli odabrane URL-ove aplikacija",
|
||||
"resetInstallStatus": "Resetujte status instalacije",
|
||||
"more": "Više",
|
||||
"removeOutdatedFilter": "Uklonite zastarjeli filter aplikacija",
|
||||
"showOutdatedOnly": "Prikaži samo zastarjele aplikacije",
|
||||
"filter": "Filtriranje",
|
||||
"filterActive": "Filtriranje",
|
||||
"filterApps": "Filtriraj aplikacije",
|
||||
"appName": "Naziv aplikacije",
|
||||
"author": "Autor",
|
||||
"upToDateApps": "Ažurirane aplikacije",
|
||||
"nonInstalledApps": "Neinstalirane aplikacije",
|
||||
"importExport": "Uvoz/izvoz",
|
||||
"settings": "Postavke",
|
||||
"exportedTo": "Izvezeno u {}",
|
||||
"obtainiumExport": "Obtainium Export",
|
||||
"invalidInput": "Neispravan unos.",
|
||||
"importedX": "Uvezeno {}",
|
||||
"obtainiumImport": "Obtainium uvoz",
|
||||
"importFromURLList": "Uvoz iz URL liste",
|
||||
"searchQuery": "Pretraga za: ",
|
||||
"appURLList": "Lista URL adresa aplikacija",
|
||||
"line": "Linija",
|
||||
"searchX": "Pretraživanje {}",
|
||||
"noResults": "Nema rezultata",
|
||||
"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.",
|
||||
"importErrors": "Uvezi greške",
|
||||
"importedXOfYApps": "{} od {} aplikacija uvezeno.",
|
||||
"followingURLsHadErrors": "Sljedeći URL-ovi su imali greške:",
|
||||
"okay": "Dobro",
|
||||
"selectURL": "Odaberite URL",
|
||||
"selectURLs": "Odaberite URL-ove",
|
||||
"pick": "Odaberi",
|
||||
"theme": "Tema",
|
||||
"dark": "Tamna",
|
||||
"light": "Svijetla",
|
||||
"followSystem": "Pratite sistem",
|
||||
"invalidURLForSource": "Nije važeći URL aplikacije {}",
|
||||
"noReleaseFound": "Nije moguće pronaći odgovarajuće izdanje",
|
||||
"noVersionFound": "Nije moguće odrediti verziju izdanja",
|
||||
"urlMatchesNoSource": "URL se ne podudara s poznatim izvorom",
|
||||
"cantInstallOlderVersion": "Nije moguće instalirati stariju verziju aplikacije",
|
||||
"appIdMismatch": "ID preuzetog paketa se ne podudara s postojećim ID-om aplikacije",
|
||||
"functionNotImplemented": "Ova klasa nije implementirala ovu funkciju",
|
||||
"placeholder": "Rezervirano mjesto",
|
||||
"someErrors": "Došlo je do nekih grešaka",
|
||||
"unexpectedError": "Neočekivana greška",
|
||||
"ok": "Dobro",
|
||||
"and": "i",
|
||||
"githubPATLabel": "GitHub token za lični pristup (eng. PAT, povećava ograničenje stope)",
|
||||
"includePrereleases": "Uključi preliminarna izdanja",
|
||||
"fallbackToOlderReleases": "Povratak na starija izdanja",
|
||||
"filterReleaseTitlesByRegEx": "Filtrirajte naslove izdanja prema regularnom izrazu",
|
||||
"invalidRegEx": "Nevažeći regularni izraz",
|
||||
"noDescription": "Bez opisa",
|
||||
"cancel": "Otkaži",
|
||||
"continue": "Nastavite",
|
||||
"requiredInBrackets": "(obavezno)",
|
||||
"dropdownNoOptsError": "GREŠKA: PADAJUĆI MENI MORA IMATI NAJMANJE JEDNU OPCIJU",
|
||||
"colour": "Boja",
|
||||
"githubStarredRepos": "GitHub repo-i sa zvjezdicom",
|
||||
"uname": "Korisničko ime",
|
||||
"wrongArgNum": "Naveden je pogrešan broj argumenata",
|
||||
"xIsTrackOnly": "{} je samo za praćenje",
|
||||
"source": "Izvor",
|
||||
"app": "Aplikacija. ",
|
||||
"appsFromSourceAreTrackOnly": "Aplikacije iz ovog izvora su '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.",
|
||||
"cancelled": "Otkazano",
|
||||
"appAlreadyAdded": "Aplikacija je već dodana",
|
||||
"alreadyUpToDateQuestion": "Aplikacija je već ažurirana?",
|
||||
"addApp": "Dodaj aplikaciju",
|
||||
"appSourceURL": "Izvorni URL aplikacije",
|
||||
"error": "Greška",
|
||||
"add": "Dodaj",
|
||||
"searchSomeSourcesLabel": "Pretraživanje (samo neki izvori)",
|
||||
"search": "Pretraživanje",
|
||||
"additionalOptsFor": "Dodatne opcije za {}",
|
||||
"supportedSources": "Podržani izvori",
|
||||
"trackOnlyInBrackets": "(Samo za praćenje)",
|
||||
"searchableInBrackets": "(Može se pretraživati)",
|
||||
"appsString": "Aplikacije",
|
||||
"noApps": "Nema aplikacija",
|
||||
"noAppsForFilter": "Nema aplikacija za filter",
|
||||
"byX": "Autor {}",
|
||||
"percentProgress": "Napredak: {}%",
|
||||
"pleaseWait": "Molimo sačekajte",
|
||||
"updateAvailable": "Ažuriranje dostupno",
|
||||
"estimateInBracketsShort": "(Procjena)",
|
||||
"notInstalled": "Nije instalirano",
|
||||
"estimateInBrackets": "(Procjena)",
|
||||
"selectAll": "Označi sve",
|
||||
"deselectN": "Poništi odabir {}",
|
||||
"xWillBeRemovedButRemainInstalled": "{} će biti uklonjen iz Obtainiuma, ali će ostati instaliran na uređaju.",
|
||||
"removeSelectedAppsQuestion": "Želite li ukloniti odabrane aplikacije?",
|
||||
"removeSelectedApps": "Ukloni odabrane aplikacije",
|
||||
"updateX": "Nadogradi {}",
|
||||
"installX": "Instaliraj {}",
|
||||
"markXTrackOnlyAsUpdated": "Označi {}\n(samo za praćenje)\nkao ažurirano",
|
||||
"changeX": "Promjena {}",
|
||||
"installUpdateApps": "Instalirajte/ažurirajte aplikacije",
|
||||
"installUpdateSelectedApps": "Instalirajte/ažurirajte odabrane aplikacije",
|
||||
"markXSelectedAppsAsUpdated": "Označite {} odabrane aplikacije kao ažurirane?",
|
||||
"no": "Ne",
|
||||
"yes": "Da",
|
||||
"markSelectedAppsUpdated": "Označi odabrane aplikacije kao ažurirane",
|
||||
"pinToTop": "Prikvači na vrh",
|
||||
"unpinFromTop": "Otkvači sa vrha",
|
||||
"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.",
|
||||
"shareSelectedAppURLs": "Podijeli odabrane URL-ove aplikacija",
|
||||
"resetInstallStatus": "Resetujte status instalacije",
|
||||
"more": "Više",
|
||||
"removeOutdatedFilter": "Uklonite zastarjeli filter aplikacija",
|
||||
"showOutdatedOnly": "Prikaži samo zastarjele aplikacije",
|
||||
"filter": "Filtriranje",
|
||||
"filterActive": "Filtriranje",
|
||||
"filterApps": "Filtriraj aplikacije",
|
||||
"appName": "Naziv aplikacije",
|
||||
"author": "Autor",
|
||||
"upToDateApps": "Ažurirane aplikacije",
|
||||
"nonInstalledApps": "Neinstalirane aplikacije",
|
||||
"importExport": "Uvoz/izvoz",
|
||||
"settings": "Postavke",
|
||||
"exportedTo": "Izvezeno u {}",
|
||||
"obtainiumExport": "Obtainium Export",
|
||||
"invalidInput": "Neispravan unos.",
|
||||
"importedX": "Uvezeno {}",
|
||||
"obtainiumImport": "Obtainium uvoz",
|
||||
"importFromURLList": "Uvoz iz URL liste",
|
||||
"searchQuery": "Pretraga za: ",
|
||||
"appURLList": "Lista URL adresa aplikacija",
|
||||
"line": "Linija",
|
||||
"searchX": "Pretraživanje {}",
|
||||
"noResults": "Nema rezultata",
|
||||
"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.",
|
||||
"importErrors": "Uvezi greške",
|
||||
"importedXOfYApps": "{} od {} aplikacija uvezeno.",
|
||||
"followingURLsHadErrors": "Sljedeći URL-ovi su imali greške:",
|
||||
"okay": "Dobro",
|
||||
"selectURL": "Odaberite URL",
|
||||
"selectURLs": "Odaberite URL-ove",
|
||||
"pick": "Odaberi",
|
||||
"theme": "Tema",
|
||||
"dark": "Tamna",
|
||||
"light": "Svijetla",
|
||||
"followSystem": "Pratite sistem",
|
||||
"obtainium": "Obtainium",
|
||||
"materialYou": "Material You",
|
||||
"useBlackTheme": "Koristite čisto crnu tamnu temu",
|
||||
"appSortBy": "Aplikacije sortirane po",
|
||||
"authorName": "Autor/Ime",
|
||||
"nameAuthor": "Ime/Autor",
|
||||
"asAdded": "Kao što je dodano",
|
||||
"appSortOrder": "Redoslijed sortiranja aplikacija",
|
||||
"ascending": "Uzlazno",
|
||||
"descending": "Silazno",
|
||||
"bgUpdateCheckInterval": "Interval provjere ažuriranja u pozadini",
|
||||
"neverManualOnly": "Nikada - samo ručno",
|
||||
"appearance": "Izgled",
|
||||
"showWebInAppView": "Prikaži izvornu web stranicu u prikazu aplikacije",
|
||||
"pinUpdates": "Prikvačite ažuriranja na vrh prikaza aplikacija",
|
||||
"updates": "Nadogradnje",
|
||||
"sourceSpecific": "Specifično za izvor",
|
||||
"appSource": "Izvor aplikacije",
|
||||
"noLogs": "Nema evidencije",
|
||||
"appLogs": "Evidencije aplikacija",
|
||||
"close": "Zatvori",
|
||||
"share": "Podijeli",
|
||||
"appNotFound": "Aplikacija nije pronađena",
|
||||
"obtainiumExportHyphenatedLowercase": "obtainium-export",
|
||||
"pickAnAPK": "Odaberite APK",
|
||||
"appHasMoreThanOnePackage": "{} ima više od jednog paketa:",
|
||||
"deviceSupportsXArch": "Vaš uređaj podržava {} arhitekturu procesora.",
|
||||
"deviceSupportsFollowingArchs": "Vaš uređaj podržava sljedeće arhitekture procesora:",
|
||||
"warning": "Upozorenje",
|
||||
"sourceIsXButPackageFromYPrompt": "Izvor aplikacije je '{}', ali paket za izdavanje dolazi iz '{}'. Želite li nastaviti?",
|
||||
"updatesAvailable": "Dostupna ažuriranja",
|
||||
"updatesAvailableNotifDescription": "Obavještava korisnika da su ažuriranja dostupna za jednu ili više aplikacija koje prati Obtainium",
|
||||
"noNewUpdates": "Nema novih ažuriranja.",
|
||||
"xHasAnUpdate": "{} ima ažuriranje.",
|
||||
"appsUpdated": "Aplikacije su ažurirane",
|
||||
"appsUpdatedNotifDescription": "Obavještava korisnika da su u pozadini primijenjena ažuriranja na jednu ili više aplikacija",
|
||||
"xWasUpdatedToY": "{} je ažuriran na {}.",
|
||||
"errorCheckingUpdates": "Greška pri provjeri ažuriranja",
|
||||
"errorCheckingUpdatesNotifDescription": "Obavijest koja se prikazuje kada provjera sigurnosnog ažuriranja ne uspije",
|
||||
"appsRemoved": "Aplikacije su uklonjene",
|
||||
"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: {}",
|
||||
"completeAppInstallation": "Dovršite instalaciju aplikacije",
|
||||
"obtainiumMustBeOpenToInstallApps": "Obtainium mora biti otvoren za instalaciju aplikacija",
|
||||
"completeAppInstallationNotifDescription": "Traži od korisnika da se vrati u Obtainium kako bi dovršio instalaciju aplikacije",
|
||||
"checkingForUpdates": "Tražim moguće nadogradnje",
|
||||
"checkingForUpdatesNotifDescription": "Privremeno obavještenje koje se pojavljuje prilikom provjere ažuriranja",
|
||||
"pleaseAllowInstallPerm": "Dozvolite Obtainiumu da instalira aplikacije",
|
||||
"trackOnly": "Samo za praćenje",
|
||||
"errorWithHttpStatusCode": "Greška {}",
|
||||
"versionCorrectionDisabled": "Ispravka verzije je onemogućena (izgleda da plugin ne radi)",
|
||||
"unknown": "Nepoznato",
|
||||
"none": "Ništa",
|
||||
"never": "Nikad",
|
||||
"latestVersionX": "Najnovija verzija: {}",
|
||||
"installedVersionX": "Instalirana verzija: {}",
|
||||
"lastUpdateCheckX": "Posljednja provjera ažuriranja: {}",
|
||||
"remove": "Izbriši",
|
||||
"yesMarkUpdated": "Da, označi kao ažurirano",
|
||||
"fdroid": "F-Droid Official",
|
||||
"appIdOrName": "ID ili ime aplikacije",
|
||||
"appId": "Apl ID",
|
||||
"appWithIdOrNameNotFound": "Nije pronađena aplikacija s tim ID-om ili imenom",
|
||||
"reposHaveMultipleApps": "Repo-i mogu sadržavati više aplikacija",
|
||||
"fdroidThirdPartyRepo": "F-Droid Repo treće strane",
|
||||
"steam": "Steam",
|
||||
"steamMobile": "Steam Mobile",
|
||||
"steamChat": "Razgovor na Steamu (chat)",
|
||||
"install": "Instaliraj",
|
||||
"markInstalled": "Označi kao instalirano",
|
||||
"update": "Nadogradi",
|
||||
"markUpdated": "Označi kao ažurirano",
|
||||
"additionalOptions": "Dodatne opcije",
|
||||
"disableVersionDetection": "Onemogući detekciju verzije",
|
||||
"noVersionDetectionExplanation": "Ova opcija bi se trebala koristiti samo za aplikacije gdje detekcija verzije ne radi ispravno.",
|
||||
"downloadingX": "Preuzimanje {}",
|
||||
"downloadNotifDescription": "Obavještava korisnika o napretku u preuzimanju aplikacije",
|
||||
"noAPKFound": "APK nije pronađen",
|
||||
"noVersionDetection": "Nema detekcije verzije",
|
||||
"categorize": "Kategoriziraj",
|
||||
"categories": "Kategorije",
|
||||
"category": "Kategorija",
|
||||
"noCategory": "Nema kategorije",
|
||||
"noCategories": "Nema kategorija",
|
||||
"deleteCategoriesQuestion": "Želite li izbrisati kategorije?",
|
||||
"categoryDeleteWarning": "Sve aplikacije u izbrisanim kategorijama će biti postavljene kao nekategorisane.",
|
||||
"addCategory": "Dodaj kategoriju",
|
||||
"label": "Oznaka",
|
||||
"language": "Jezik",
|
||||
"copiedToClipboard": "Podaci kopirani u međuspremnik",
|
||||
"storagePermissionDenied": "Dozvola za pohranu je odbijena",
|
||||
"selectedCategorizeWarning": "Ovo će zamijeniti sve postojeće postavke kategorije za odabrane aplikacije.",
|
||||
"filterAPKsByRegEx": "Filtrirajte APK-ove prema regularnom izrazu",
|
||||
"removeFromObtainium": "Ukloni iz Obtainiuma",
|
||||
"uninstallFromDevice": "Deinstaliraj s uređaja",
|
||||
"onlyWorksWithNonVersionDetectApps": "Radi samo za aplikacije s onemogućenom detekcijom verzije.",
|
||||
"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.",
|
||||
"changes": "Promjene",
|
||||
"releaseDate": "Datum izdavanja",
|
||||
"importFromURLsInFile": "Uvoz iz URL-ova u datoteci (kao što je OPML)",
|
||||
"versionDetection": "Otkrivanje verzije",
|
||||
"standardVersionDetection": "Detekcija standardne verzije",
|
||||
"groupByCategory": "Grupiši po kategoriji",
|
||||
"autoApkFilterByArch": "Pokušajte filtrirati APK-ove po arhitekturi procesora ako je moguće",
|
||||
"overrideSource": "Premosti izvor",
|
||||
"dontShowAgain": "Ne prikazuj ovo ponovo",
|
||||
"dontShowTrackOnlyWarnings": "Ne prikazuj upozorenja „Samo za praćenje”",
|
||||
"dontShowAPKOriginWarnings": "Ne prikazuj upozorenja o porijeklu APK-a",
|
||||
"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)",
|
||||
"about": "O nama",
|
||||
"requiresCredentialsInSettings": "Za ovo su potrebni dodatni akreditivi (u Postavkama)",
|
||||
"checkOnStart": "Provjerite ima li novosti pri pokretanju",
|
||||
"tryInferAppIdFromCode": "Pokušati otkriti ID aplikacije iz izvornog koda",
|
||||
"removeOnExternalUninstall": "Automatski ukloni eksterno deinstalirane aplikacije",
|
||||
"pickHighestVersionCode": "Automatski odaberite najviši kôd verzije APK-a",
|
||||
"checkUpdateOnDetailPage": "Provjerite ima li novosti pri otvaranju stranice s detaljima aplikacije",
|
||||
"disablePageTransitions": "Ugasite animaciju prijelaza stranice",
|
||||
"reversePageTransitions": "Reverzne animacije prijelaza stranice",
|
||||
"minStarCount": "Minimum Star Count",
|
||||
"addInfoBelow": "Add this info below.",
|
||||
"addInfoInSettings": "Add this info in the Settings.",
|
||||
"githubSourceNote": "GitHub rate limiting can be avoided using an API key.",
|
||||
"gitlabSourceNote": "GitLab APK extraction may not work without an API key.",
|
||||
"sortByFileNamesNotLinks": "Sort by file names instead of full links",
|
||||
"filterReleaseNotesByRegEx": "Filter Release Notes by Regular Expression",
|
||||
"customLinkFilterRegex": "Custom APK Link Filter by Regular Expression (Default '.apk$')",
|
||||
"appsPossiblyUpdated": "App Updates Attempted",
|
||||
"appsPossiblyUpdatedNotifDescription": "Notifies the user that updates to one or more Apps were potentially applied in the background",
|
||||
"xWasPossiblyUpdatedToY": "{} may have been updated to {}.",
|
||||
"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.",
|
||||
"verifyLatestTag": "Verify the 'latest' tag",
|
||||
"exemptFromBackgroundUpdates": "Exempt from background updates (if enabled)",
|
||||
"bgUpdatesOnWiFiOnly": "Disable background updates when not on WiFi",
|
||||
"autoSelectHighestVersionCode": "Auto-select highest versionCode APK",
|
||||
"versionExtractionRegEx": "Version Extraction RegEx",
|
||||
"matchGroupToUse": "Match Group to Use",
|
||||
"highlightTouchTargets": "Highlight less obvious touch targets",
|
||||
"pickExportDir": "Pick Export Directory",
|
||||
"autoExportOnChanges": "Auto-export on changes",
|
||||
"filterVersionsByRegEx": "Filter Versions by Regular Expression",
|
||||
"trySelectingSuggestedVersionCode": "Try selecting suggested versionCode APK",
|
||||
"dontSortReleasesList": "Retain release order from API",
|
||||
"reverseSort": "Reverse sorting",
|
||||
"debugMenu": "Debug Menu",
|
||||
"bgTaskStarted": "Background task started - check logs.",
|
||||
"runBgCheckNow": "Run Background Update Check Now",
|
||||
"removeAppQuestion": {
|
||||
"one": "Želite li ukloniti aplikaciju?",
|
||||
"other": "Želite li ukloniti aplikacije?"
|
||||
},
|
||||
"tooManyRequestsTryAgainInMinutes": {
|
||||
"one": "Previše zahtjeva (ograničena broj zahteva) - pokušajte ponovo za {} minutu",
|
||||
"other": "Previše zahtjeva (ograničena cijena) - pokušajte ponovo za {} min."
|
||||
},
|
||||
"bgUpdateGotErrorRetryInMinutes": {
|
||||
"one": "Provjera ažuriranja u pozadini naišla je na {}, zakazuje se ponovni pokušaj za {} minutu",
|
||||
"other": "Provjera ažuriranja u pozadini naišla je na {}, zakazuje se ponovni pokušaj za {} min."
|
||||
},
|
||||
"bgCheckFoundUpdatesWillNotifyIfNeeded": {
|
||||
"one": "Provjera ažuriranja u pozadini je pronašla {} ažuriranje - korisnik će biti obavješten ako je to potrebno",
|
||||
"other": "Provjera ažuriranja u pozadini je pronašla {} ažuriranja - korisnik će biti obavješten ako je to potrebno"
|
||||
},
|
||||
"apps": {
|
||||
"one": "{} aplikacija",
|
||||
"other": "{} aplikacije"
|
||||
},
|
||||
"url": {
|
||||
"one": "{} URL",
|
||||
"other": "{} URL-ovi"
|
||||
},
|
||||
"minute": {
|
||||
"one": "{} minuta",
|
||||
"other": "min."
|
||||
},
|
||||
"hour": {
|
||||
"one": "{} sat",
|
||||
"other": "{} sat/i"
|
||||
},
|
||||
"day": {
|
||||
"one": "{} dan",
|
||||
"other": "{} dana"
|
||||
},
|
||||
"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."
|
||||
}
|
||||
}
|
||||
"materialYou": "Material You",
|
||||
"useBlackTheme": "Koristite čisto crnu tamnu temu",
|
||||
"appSortBy": "Aplikacije sortirane po",
|
||||
"authorName": "Autor/Ime",
|
||||
"nameAuthor": "Ime/Autor",
|
||||
"asAdded": "Kao što je dodano",
|
||||
"appSortOrder": "Redoslijed sortiranja aplikacija",
|
||||
"ascending": "Uzlazno",
|
||||
"descending": "Silazno",
|
||||
"bgUpdateCheckInterval": "Interval provjere ažuriranja u pozadini",
|
||||
"neverManualOnly": "Nikada - samo ručno",
|
||||
"appearance": "Izgled",
|
||||
"showWebInAppView": "Prikaži izvornu web stranicu u prikazu aplikacije",
|
||||
"pinUpdates": "Prikvačite ažuriranja na vrh prikaza aplikacija",
|
||||
"updates": "Nadogradnje",
|
||||
"sourceSpecific": "Specifično za izvor",
|
||||
"appSource": "Izvor aplikacije",
|
||||
"noLogs": "Nema evidencije",
|
||||
"appLogs": "Evidencije aplikacija",
|
||||
"close": "Zatvori",
|
||||
"share": "Podijeli",
|
||||
"appNotFound": "Aplikacija nije pronađena",
|
||||
"obtainiumExportHyphenatedLowercase": "obtainium-export",
|
||||
"pickAnAPK": "Odaberite APK",
|
||||
"appHasMoreThanOnePackage": "{} ima više od jednog paketa:",
|
||||
"deviceSupportsXArch": "Vaš uređaj podržava {} arhitekturu procesora.",
|
||||
"deviceSupportsFollowingArchs": "Vaš uređaj podržava sljedeće arhitekture procesora:",
|
||||
"warning": "Upozorenje",
|
||||
"sourceIsXButPackageFromYPrompt": "Izvor aplikacije je '{}', ali paket za izdavanje dolazi iz '{}'. Želite li nastaviti?",
|
||||
"updatesAvailable": "Dostupna ažuriranja",
|
||||
"updatesAvailableNotifDescription": "Obavještava korisnika da su ažuriranja dostupna za jednu ili više aplikacija koje prati Obtainium",
|
||||
"noNewUpdates": "Nema novih ažuriranja.",
|
||||
"xHasAnUpdate": "{} ima ažuriranje.",
|
||||
"appsUpdated": "Aplikacije su ažurirane",
|
||||
"appsUpdatedNotifDescription": "Obavještava korisnika da su u pozadini primijenjena ažuriranja na jednu ili više aplikacija",
|
||||
"xWasUpdatedToY": "{} je ažuriran na {}.",
|
||||
"errorCheckingUpdates": "Greška pri provjeri ažuriranja",
|
||||
"errorCheckingUpdatesNotifDescription": "Obavijest koja se prikazuje kada provjera sigurnosnog ažuriranja ne uspije",
|
||||
"appsRemoved": "Aplikacije su uklonjene",
|
||||
"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: {}",
|
||||
"completeAppInstallation": "Dovršite instalaciju aplikacije",
|
||||
"obtainiumMustBeOpenToInstallApps": "Obtainium mora biti otvoren za instalaciju aplikacija",
|
||||
"completeAppInstallationNotifDescription": "Traži od korisnika da se vrati u Obtainium kako bi dovršio instalaciju aplikacije",
|
||||
"checkingForUpdates": "Tražim moguće nadogradnje",
|
||||
"checkingForUpdatesNotifDescription": "Privremeno obavještenje koje se pojavljuje prilikom provjere ažuriranja",
|
||||
"pleaseAllowInstallPerm": "Dozvolite Obtainiumu da instalira aplikacije",
|
||||
"trackOnly": "Samo za praćenje",
|
||||
"errorWithHttpStatusCode": "Greška {}",
|
||||
"versionCorrectionDisabled": "Ispravka verzije je onemogućena (izgleda da plugin ne radi)",
|
||||
"unknown": "Nepoznato",
|
||||
"none": "Ništa",
|
||||
"never": "Nikad",
|
||||
"latestVersionX": "Najnovija verzija: {}",
|
||||
"installedVersionX": "Instalirana verzija: {}",
|
||||
"lastUpdateCheckX": "Posljednja provjera ažuriranja: {}",
|
||||
"remove": "Izbriši",
|
||||
"yesMarkUpdated": "Da, označi kao ažurirano",
|
||||
"fdroid": "F-Droid Official",
|
||||
"appIdOrName": "ID ili ime aplikacije",
|
||||
"appId": "Apl ID",
|
||||
"appWithIdOrNameNotFound": "Nije pronađena aplikacija s tim ID-om ili imenom",
|
||||
"reposHaveMultipleApps": "Repo-i mogu sadržavati više aplikacija",
|
||||
"fdroidThirdPartyRepo": "F-Droid Repo treće strane",
|
||||
"steam": "Steam",
|
||||
"steamMobile": "Steam Mobile",
|
||||
"steamChat": "Razgovor na Steamu (chat)",
|
||||
"install": "Instaliraj",
|
||||
"markInstalled": "Označi kao instalirano",
|
||||
"update": "Nadogradi",
|
||||
"markUpdated": "Označi kao ažurirano",
|
||||
"additionalOptions": "Dodatne opcije",
|
||||
"disableVersionDetection": "Onemogući detekciju verzije",
|
||||
"noVersionDetectionExplanation": "Ova opcija bi se trebala koristiti samo za aplikacije gdje detekcija verzije ne radi ispravno.",
|
||||
"downloadingX": "Preuzimanje {}",
|
||||
"downloadNotifDescription": "Obavještava korisnika o napretku u preuzimanju aplikacije",
|
||||
"noAPKFound": "APK nije pronađen",
|
||||
"noVersionDetection": "Nema detekcije verzije",
|
||||
"categorize": "Kategoriziraj",
|
||||
"categories": "Kategorije",
|
||||
"category": "Kategorija",
|
||||
"noCategory": "Nema kategorije",
|
||||
"noCategories": "Nema kategorija",
|
||||
"deleteCategoriesQuestion": "Želite li izbrisati kategorije?",
|
||||
"categoryDeleteWarning": "Sve aplikacije u izbrisanim kategorijama će biti postavljene kao nekategorisane.",
|
||||
"addCategory": "Dodaj kategoriju",
|
||||
"label": "Oznaka",
|
||||
"language": "Jezik",
|
||||
"copiedToClipboard": "Podaci kopirani u međuspremnik",
|
||||
"storagePermissionDenied": "Dozvola za pohranu je odbijena",
|
||||
"selectedCategorizeWarning": "Ovo će zamijeniti sve postojeće postavke kategorije za odabrane aplikacije.",
|
||||
"filterAPKsByRegEx": "Filtrirajte APK-ove prema regularnom izrazu",
|
||||
"removeFromObtainium": "Ukloni iz Obtainiuma",
|
||||
"uninstallFromDevice": "Deinstaliraj s uređaja",
|
||||
"onlyWorksWithNonVersionDetectApps": "Radi samo za aplikacije s onemogućenom detekcijom verzije.",
|
||||
"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.",
|
||||
"changes": "Promjene",
|
||||
"releaseDate": "Datum izdavanja",
|
||||
"importFromURLsInFile": "Uvoz iz URL-ova u datoteci (kao što je OPML)",
|
||||
"versionDetection": "Otkrivanje verzije",
|
||||
"standardVersionDetection": "Detekcija standardne verzije",
|
||||
"groupByCategory": "Grupiši po kategoriji",
|
||||
"autoApkFilterByArch": "Pokušajte filtrirati APK-ove po arhitekturi procesora ako je moguće",
|
||||
"overrideSource": "Premosti izvor",
|
||||
"dontShowAgain": "Ne prikazuj ovo ponovo",
|
||||
"dontShowTrackOnlyWarnings": "Ne prikazuj upozorenja „Samo za praćenje”",
|
||||
"dontShowAPKOriginWarnings": "Ne prikazuj upozorenja o porijeklu APK-a",
|
||||
"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)",
|
||||
"about": "O nama",
|
||||
"requiresCredentialsInSettings": "Za ovo su potrebni dodatni akreditivi (u Postavkama)",
|
||||
"checkOnStart": "Provjerite ima li novosti pri pokretanju",
|
||||
"tryInferAppIdFromCode": "Pokušati otkriti ID aplikacije iz izvornog koda",
|
||||
"removeOnExternalUninstall": "Automatski ukloni eksterno deinstalirane aplikacije",
|
||||
"pickHighestVersionCode": "Automatski odaberite najviši kôd verzije APK-a",
|
||||
"checkUpdateOnDetailPage": "Provjerite ima li novosti pri otvaranju stranice s detaljima aplikacije",
|
||||
"disablePageTransitions": "Ugasite animaciju prijelaza stranice",
|
||||
"reversePageTransitions": "Reverzne animacije prijelaza stranice",
|
||||
"minStarCount": "Minimum Star Count",
|
||||
"addInfoBelow": "Add this info below.",
|
||||
"addInfoInSettings": "Add this info in the Settings.",
|
||||
"githubSourceNote": "GitHub rate limiting can be avoided using an API key.",
|
||||
"gitlabSourceNote": "GitLab APK extraction may not work without an API key.",
|
||||
"sortByFileNamesNotLinks": "Sort by file names instead of full links",
|
||||
"filterReleaseNotesByRegEx": "Filter Release Notes by Regular Expression",
|
||||
"customLinkFilterRegex": "Custom APK Link Filter by Regular Expression (Default '.apk$')",
|
||||
"appsPossiblyUpdated": "App Updates Attempted",
|
||||
"appsPossiblyUpdatedNotifDescription": "Notifies the user that updates to one or more Apps were potentially applied in the background",
|
||||
"xWasPossiblyUpdatedToY": "{} may have been updated to {}.",
|
||||
"enableBackgroundUpdates": "Enable background updates",
|
||||
"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.",
|
||||
"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)",
|
||||
"bgUpdatesOnWiFiOnly": "Disable background updates when not on WiFi",
|
||||
"autoSelectHighestVersionCode": "Auto-select highest versionCode APK",
|
||||
"versionExtractionRegEx": "Version Extraction RegEx",
|
||||
"matchGroupToUse": "Match Group to Use",
|
||||
"highlightTouchTargets": "Highlight less obvious touch targets",
|
||||
"pickExportDir": "Pick Export Directory",
|
||||
"autoExportOnChanges": "Auto-export on changes",
|
||||
"filterVersionsByRegEx": "Filter Versions by Regular Expression",
|
||||
"trySelectingSuggestedVersionCode": "Try selecting suggested versionCode APK",
|
||||
"dontSortReleasesList": "Retain release order from API",
|
||||
"reverseSort": "Reverse sorting",
|
||||
"debugMenu": "Debug Menu",
|
||||
"bgTaskStarted": "Background task started - check logs.",
|
||||
"runBgCheckNow": "Run Background Update Check Now",
|
||||
"versionExtractWholePage": "Apply Version Extraction Regex to Entire Page",
|
||||
"installing": "Installing",
|
||||
"skipUpdateNotifications": "Skip update notifications",
|
||||
"updatesAvailableNotifChannel": "Dostupna ažuriranja",
|
||||
"appsUpdatedNotifChannel": "Aplikacije su ažurirane",
|
||||
"appsPossiblyUpdatedNotifChannel": "App Updates Attempted",
|
||||
"errorCheckingUpdatesNotifChannel": "Greška pri provjeri ažuriranja",
|
||||
"appsRemovedNotifChannel": "Aplikacije su uklonjene",
|
||||
"downloadingXNotifChannel": "Preuzimanje {}",
|
||||
"completeAppInstallationNotifChannel": "Dovršite instalaciju aplikacije",
|
||||
"checkingForUpdatesNotifChannel": "Tražim moguće nadogradnje",
|
||||
"removeAppQuestion": {
|
||||
"one": "Želite li ukloniti aplikaciju?",
|
||||
"other": "Želite li ukloniti aplikacije?"
|
||||
},
|
||||
"tooManyRequestsTryAgainInMinutes": {
|
||||
"one": "Previše zahtjeva (ograničena broj zahteva) - pokušajte ponovo za {} minutu",
|
||||
"other": "Previše zahtjeva (ograničena cijena) - pokušajte ponovo za {} min."
|
||||
},
|
||||
"bgUpdateGotErrorRetryInMinutes": {
|
||||
"one": "Provjera ažuriranja u pozadini naišla je na {}, zakazuje se ponovni pokušaj za {} minutu",
|
||||
"other": "Provjera ažuriranja u pozadini naišla je na {}, zakazuje se ponovni pokušaj za {} min."
|
||||
},
|
||||
"bgCheckFoundUpdatesWillNotifyIfNeeded": {
|
||||
"one": "Provjera ažuriranja u pozadini je pronašla {} ažuriranje - korisnik će biti obavješten ako je to potrebno",
|
||||
"other": "Provjera ažuriranja u pozadini je pronašla {} ažuriranja - korisnik će biti obavješten ako je to potrebno"
|
||||
},
|
||||
"apps": {
|
||||
"one": "{} aplikacija",
|
||||
"other": "{} aplikacije"
|
||||
},
|
||||
"url": {
|
||||
"one": "{} URL",
|
||||
"other": "{} URL-ovi"
|
||||
},
|
||||
"minute": {
|
||||
"one": "{} minuta",
|
||||
"other": "min."
|
||||
},
|
||||
"hour": {
|
||||
"one": "{} sat",
|
||||
"other": "{} sat/i"
|
||||
},
|
||||
"day": {
|
||||
"one": "{} dan",
|
||||
"other": "{} dana"
|
||||
},
|
||||
"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",
|
||||
"uname": "username",
|
||||
"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",
|
||||
"app": "App",
|
||||
"appsFromSourceAreTrackOnly": "Aplikace z tohoto zdroje jsou 'Jen sledovány'.",
|
||||
@ -56,7 +56,7 @@
|
||||
"estimateInBrackets": "(přibližně)",
|
||||
"selectAll": "Vybrat Vše",
|
||||
"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?",
|
||||
"removeSelectedApps": "Odebrat vybrané aplikace",
|
||||
"updateX": "Aktualizovat {}",
|
||||
@ -101,7 +101,7 @@
|
||||
"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.",
|
||||
"importErrors": "Import Errors",
|
||||
"importedXOfYApps":"{}importováno {}aplikací.",
|
||||
"importedXOfYApps": "{}importováno {}aplikací.",
|
||||
"followingURLsHadErrors": "U následujících adres URL došlo k chybám:",
|
||||
"okay": "Okay",
|
||||
"selectURL": "Select URL",
|
||||
@ -136,7 +136,7 @@
|
||||
"appNotFound": "App not found",
|
||||
"obtainiumExportHyphenatedLowercase": "obtainium-export",
|
||||
"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 {}.",
|
||||
"deviceSupportsFollowingArchs": "Vaše zařízení podporuje následující architektury CPU:",
|
||||
"warning": "Varování",
|
||||
@ -144,15 +144,15 @@
|
||||
"updatesAvailable": "dostupné aktualizace",
|
||||
"updatesAvailableNotifDescription": "Upozorňuje uživatele, že jsou k dispozici aktualizace pro jednu nebo více aplikací sledovaných Obtainium",
|
||||
"noNewUpdates": "Žádné nové aktualizace.",
|
||||
"xHasAnUpdate":"{} má aktualizaci.",
|
||||
"xHasAnUpdate": "{} má aktualizaci.",
|
||||
"appsUpdated": "Aplikace aktualizovány",
|
||||
"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í",
|
||||
"errorCheckingUpdatesNotifDescription": "Oznámení zobrazené při neúspěšné kontrole aktualizací na pozadí",
|
||||
"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í",
|
||||
"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",
|
||||
"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í",
|
||||
@ -241,7 +241,7 @@
|
||||
"customLinkFilterRegex": "Vlastní filtr odkazů APK podle regulárního výrazu (výchozí '.apk$')",
|
||||
"appsPossiblyUpdated": "Byly provedeny pokusy o aktualizaci aplikací",
|
||||
"appsPossiblyUpdatedNotifDescription": "Upozorňuje uživatele, že na pozadí mohly být provedeny aktualizace jedné nebo více aplikací",
|
||||
"xWasPossiblyUpdatedToY":"{} mohlo být aktualizováno na {}.",
|
||||
"xWasPossiblyUpdatedToY": "{} mohlo být aktualizováno na {}.",
|
||||
"enableBackgroundUpdates": "Povolit aktualizace na pozadí",
|
||||
"backgroundUpdateReqsExplanation": "Aktualizace na pozadí nemusí být možné pro všechny aplikace.",
|
||||
"backgroundUpdateLimitsExplanation": "Úspěšnost instalace na pozadí lze určit pouze v případě, že je otevřen Obtainium.",
|
||||
@ -263,6 +263,17 @@
|
||||
"debugMenu": "Debug Menu",
|
||||
"bgTaskStarted": "Background task started - check logs.",
|
||||
"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": {
|
||||
"one": "Odstranit Apku?",
|
||||
"other": "Odstranit Apky?"
|
||||
@ -280,15 +291,15 @@
|
||||
"other": "Kontrola aktualizací na pozadí našla {} aktualizací - v případě potřeby upozorní uživatele"
|
||||
},
|
||||
"apps": {
|
||||
"one":"{} App",
|
||||
"other":"{} apps"
|
||||
"one": "{} App",
|
||||
"other": "{} apps"
|
||||
},
|
||||
"url": {
|
||||
"jedna": "{} URL",
|
||||
"other": "{} URLs"
|
||||
},
|
||||
"minute": {
|
||||
"one":"{} minute",
|
||||
"one": "{} minute",
|
||||
"other": "{} minutes"
|
||||
},
|
||||
"hour": {
|
||||
@ -300,20 +311,19 @@
|
||||
"other": "{} dny"
|
||||
},
|
||||
"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})"
|
||||
},
|
||||
"xAndNMoreUpdatesAvailable": {
|
||||
"one":"{} a 1 další aplikace mají aktualizace.",
|
||||
"other":"{} a {} další aplikace mají aktualizace."
|
||||
"one": "{} a 1 další aplikace mají aktualizace.",
|
||||
"other": "{} a {} další aplikace mají aktualizace."
|
||||
},
|
||||
"xAndNMoreUpdatesInstalled": {
|
||||
"one":"{} a {} další aplikace mají aktualizace.",
|
||||
"další":"{} a {} další aplikace byly aktualizovány."
|
||||
"one": "{} a {} další aplikace mají aktualizace.",
|
||||
"další": "{} a {} další aplikace byly aktualizovány."
|
||||
},
|
||||
"xAndNMoreUpdatesPossiblyInstalled": {
|
||||
"one":"{} a {} další aplikace byly možná aktualizovány",
|
||||
"other":"{} a {} další aplikace mohly být aktualizovány."
|
||||
"one": "{} a {} další aplikace byly možná aktualizovány",
|
||||
"other": "{} a {} další aplikace mohly být aktualizovány."
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -122,15 +122,15 @@
|
||||
"ascending": "Aufsteigend",
|
||||
"descending": "Absteigend",
|
||||
"bgUpdateCheckInterval": "Prüfintervall für Hintergrundaktualisierung",
|
||||
"neverManualOnly": "Nie - nur manuell",
|
||||
"neverManualOnly": "Nie – nur manuell",
|
||||
"appearance": "Aussehen",
|
||||
"showWebInAppView": "Quellwebseite in der App-Ansicht anzeigen",
|
||||
"pinUpdates": "Apps mit Aktualisierungen oben anheften",
|
||||
"updates": "Aktualisierungen",
|
||||
"sourceSpecific": "Quellenspezifisch",
|
||||
"appSource": "App-Quelle",
|
||||
"noLogs": "Keine Protokolle",
|
||||
"appLogs": "App Protokolle",
|
||||
"noLogs": "Keine Logs",
|
||||
"appLogs": "App-Logs",
|
||||
"close": "Schließen",
|
||||
"share": "Teilen",
|
||||
"appNotFound": "App nicht gefunden",
|
||||
@ -242,9 +242,12 @@
|
||||
"appsPossiblyUpdated": "App Aktualisierungen wurden versucht",
|
||||
"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 {}.",
|
||||
"enableBackgroundUpdates": "Aktiviere Hintergrundaktualisierungen",
|
||||
"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.",
|
||||
"verifyLatestTag": "Überprüfe das „latest“ Tag",
|
||||
"intermediateLinkRegex": "Filter für einen \"Zwischen\"-Link, der zuerst besucht werden soll",
|
||||
"intermediateLinkNotFound": "Zwischenlink nicht gefunden",
|
||||
"exemptFromBackgroundUpdates": "Ausschluss von Hintergrundaktualisierungen (falls aktiviert)",
|
||||
"bgUpdatesOnWiFiOnly": "Hintergrundaktualisierungen deaktivieren, wenn kein WLAN vorhanden ist",
|
||||
"autoSelectHighestVersionCode": "Automatisch höchste APK-Code-Version auswählen",
|
||||
@ -256,25 +259,36 @@
|
||||
"filterVersionsByRegEx": "Versionen nach regulären Ausdrücken filtern",
|
||||
"trySelectingSuggestedVersionCode": "Versuchen, die vorgeschlagene APK-Code-Version auszuwählen",
|
||||
"dontSortReleasesList": "Retain release order from API",
|
||||
"reverseSort": "Reverse sorting",
|
||||
"debugMenu": "Debug Menu",
|
||||
"bgTaskStarted": "Background task started - check logs.",
|
||||
"runBgCheckNow": "Run Background Update Check Now",
|
||||
"reverseSort": "Umgekehrtes Sortieren",
|
||||
"debugMenu": "Debug Menü",
|
||||
"bgTaskStarted": "Hintergrundaufgabe gestartet – Logs prüfen.",
|
||||
"runBgCheckNow": "Hintergrundaktualisierungsprüfung jetzt durchführen",
|
||||
"versionExtractWholePage": "Apply Version Extraction Regex to Entire Page",
|
||||
"installing": "Installing",
|
||||
"skipUpdateNotifications": "Skip update notifications",
|
||||
"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": {
|
||||
"one": "App entfernen?",
|
||||
"other": "Apps entfernen?"
|
||||
},
|
||||
"tooManyRequestsTryAgainInMinutes": {
|
||||
"one": "Zu viele Anfragen (Rate begrenzt) - versuchen Sie es in {} Minute erneut",
|
||||
"other": "Zu viele Anfragen (Rate begrenzt) - versuchen Sie es in {} Minuten erneut"
|
||||
"one": "Zu viele Anfragen (Rate begrenzt) – versuchen Sie es in {} Minute erneut",
|
||||
"other": "Zu viele Anfragen (Rate begrenzt) – versuchen Sie es in {} Minuten erneut"
|
||||
},
|
||||
"bgUpdateGotErrorRetryInMinutes": {
|
||||
"one": "Bei der Aktualisierungsprüfung im Hintergrund wurde ein {} festgestellt, eine erneute Prüfung wird in {} Minute geplant",
|
||||
"other": "Bei der Aktualisierungsprüfung im Hintergrund wurde ein {} festgestellt, eine erneute Prüfung wird in {} Minuten geplant"
|
||||
},
|
||||
"bgCheckFoundUpdatesWillNotifyIfNeeded": {
|
||||
"one": "Hintergrundaktualisierungsprüfung fand {} Aktualisierung - benachrichtigt den Benutzer, falls erforderlich",
|
||||
"other": "Hintergrundaktualisierungsprüfung fand {} Aktualisierungen - benachrichtigt den Benutzer, falls erforderlich"
|
||||
"one": "Die Hintergrundaktualisierungsprüfung fand {} Aktualisierung – benachrichtigt den Benutzer, falls erforderlich",
|
||||
"other": "Die Hintergrundaktualisierungsprüfung fand {} Aktualisierungen – benachrichtigt den Benutzer, falls erforderlich"
|
||||
},
|
||||
"apps": {
|
||||
"one": "{} App",
|
||||
@ -297,8 +311,8 @@
|
||||
"other": "{} Tage"
|
||||
},
|
||||
"clearedNLogsBeforeXAfterY": {
|
||||
"one": "{n} Protokoll gelöscht (vorher = {vorher}, nachher = {nachher})",
|
||||
"other": "{n} Protokolle gelöscht (vorher = {vorher}, nachher = {nachher})"
|
||||
"one": "{n} Log gelöscht (vorher = {before}, nachher = {after})",
|
||||
"other": "{n} Logs gelöscht (vorher = {before}, nachher = {after})"
|
||||
},
|
||||
"xAndNMoreUpdatesAvailable": {
|
||||
"one": "{} und 1 weitere App haben Aktualisierungen.",
|
||||
@ -312,4 +326,4 @@
|
||||
"one": "{} und 1 weitere Anwendung wurden möglicherweise aktualisiert.",
|
||||
"other": "{} und {} weitere Anwendungen wurden möglicherweise aktualisiert."
|
||||
}
|
||||
}
|
||||
}
|
@ -252,7 +252,7 @@
|
||||
"bgUpdatesOnWiFiOnly": "Disable background updates when not on WiFi",
|
||||
"autoSelectHighestVersionCode": "Auto-select highest versionCode APK",
|
||||
"versionExtractionRegEx": "Version Extraction RegEx",
|
||||
"matchGroupToUse": "Match Group to Use",
|
||||
"matchGroupToUse": "Match Group to Use for Version Extraction Regex",
|
||||
"highlightTouchTargets": "Highlight less obvious touch targets",
|
||||
"pickExportDir": "Pick Export Directory",
|
||||
"autoExportOnChanges": "Auto-export on changes",
|
||||
@ -263,6 +263,17 @@
|
||||
"debugMenu": "Debug Menu",
|
||||
"bgTaskStarted": "Background task started - check logs.",
|
||||
"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": {
|
||||
"one": "Remove App?",
|
||||
"other": "Remove Apps?"
|
||||
@ -315,4 +326,4 @@
|
||||
"one": "{} and 1 more app may have been updated.",
|
||||
"other": "{} and {} more apps may have been updated."
|
||||
}
|
||||
}
|
||||
}
|
@ -242,9 +242,12 @@
|
||||
"appsPossiblyUpdated": "App Updates Attempted",
|
||||
"appsPossiblyUpdatedNotifDescription": "Notifies the user that updates to one or more Apps were potentially applied in the background",
|
||||
"xWasPossiblyUpdatedToY": "{} may have been updated to {}.",
|
||||
"enableBackgroundUpdates": "Enable background updates",
|
||||
"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.",
|
||||
"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)",
|
||||
"bgUpdatesOnWiFiOnly": "Disable background updates when not on WiFi",
|
||||
"autoSelectHighestVersionCode": "Auto-select highest versionCode APK",
|
||||
@ -260,6 +263,17 @@
|
||||
"debugMenu": "Debug Menu",
|
||||
"bgTaskStarted": "Background task started - check logs.",
|
||||
"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": {
|
||||
"one": "¿Eliminar Aplicación?",
|
||||
"other": "¿Eliminar Aplicaciones?"
|
||||
@ -312,4 +326,4 @@
|
||||
"one": "{} and 1 more app may have been updated.",
|
||||
"other": "{} and {} more apps may have been updated."
|
||||
}
|
||||
}
|
||||
}
|
@ -242,9 +242,12 @@
|
||||
"appsPossiblyUpdated": "App Updates Attempted",
|
||||
"appsPossiblyUpdatedNotifDescription": "Notifies the user that updates to one or more Apps were potentially applied in the background",
|
||||
"xWasPossiblyUpdatedToY": "{} may have been updated to {}.",
|
||||
"enableBackgroundUpdates": "Enable background updates",
|
||||
"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.",
|
||||
"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)",
|
||||
"bgUpdatesOnWiFiOnly": "Disable background updates when not on WiFi",
|
||||
"autoSelectHighestVersionCode": "Auto-select highest versionCode APK",
|
||||
@ -260,6 +263,17 @@
|
||||
"debugMenu": "Debug Menu",
|
||||
"bgTaskStarted": "Background task started - check logs.",
|
||||
"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": {
|
||||
"one": "برنامه حذف شود؟",
|
||||
"other": "برنامه ها حذف شوند؟"
|
||||
@ -312,4 +326,4 @@
|
||||
"one": "{} and 1 more app may have been updated.",
|
||||
"other": "{} and {} more apps may have been updated."
|
||||
}
|
||||
}
|
||||
}
|
@ -242,9 +242,12 @@
|
||||
"appsPossiblyUpdated": "App Updates Attempted",
|
||||
"appsPossiblyUpdatedNotifDescription": "Notifies the user that updates to one or more Apps were potentially applied in the background",
|
||||
"xWasPossiblyUpdatedToY": "{} may have been updated to {}.",
|
||||
"enableBackgroundUpdates": "Enable background updates",
|
||||
"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.",
|
||||
"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)",
|
||||
"bgUpdatesOnWiFiOnly": "Disable background updates when not on WiFi",
|
||||
"autoSelectHighestVersionCode": "Auto-select highest versionCode APK",
|
||||
@ -260,6 +263,17 @@
|
||||
"debugMenu": "Debug Menu",
|
||||
"bgTaskStarted": "Background task started - check logs.",
|
||||
"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": {
|
||||
"one": "Supprimer l'application ?",
|
||||
"other": "Supprimer les applications ?"
|
||||
@ -312,4 +326,4 @@
|
||||
"one": "{} and 1 more app may have been updated.",
|
||||
"other": "{} and {} more apps may have been updated."
|
||||
}
|
||||
}
|
||||
}
|
@ -1,315 +1,329 @@
|
||||
{
|
||||
"invalidURLForSource": "Érvénytelen a(z) {} app URL-je",
|
||||
"noReleaseFound": "Nem található megfelelő kiadás",
|
||||
"noVersionFound": "Nem sikerült meghatározni a kiadás verzióját",
|
||||
"urlMatchesNoSource": "Az URL nem egyezik ismert forrással",
|
||||
"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",
|
||||
"functionNotImplemented": "Ez az osztály nem valósította meg ezt a függvényt",
|
||||
"placeholder": "Helykitöltő",
|
||||
"someErrors": "Néhány hiba történt",
|
||||
"unexpectedError": "Váratlan hiba",
|
||||
"ok": "Oké",
|
||||
"and": "és",
|
||||
"githubPATLabel": "GitHub Personal Access Token (megnöveli a díjkorlátot)",
|
||||
"includePrereleases": "Tartalmazza az előzetes kiadásokat",
|
||||
"fallbackToOlderReleases": "Visszatérés a régebbi kiadásokhoz",
|
||||
"filterReleaseTitlesByRegEx": "A kiadás címeinek szűrése reguláris kifejezéssel",
|
||||
"invalidRegEx": "Érvénytelen reguláris kifejezés",
|
||||
"noDescription": "Nincs leírás",
|
||||
"cancel": "Mégse",
|
||||
"continue": "Tovább",
|
||||
"requiredInBrackets": "(Kötelező)",
|
||||
"dropdownNoOptsError": "HIBA: A LEDOBÁST LEGALÁBB EGY OPCIÓHOZ KELL RENDELNI",
|
||||
"colour": "Szín",
|
||||
"githubStarredRepos": "GitHub Csillagos Repo-k",
|
||||
"uname": "Felh.név",
|
||||
"wrongArgNum": "Rossz számú argumentumot adott meg",
|
||||
"xIsTrackOnly": "A(z) {} csak nyomonkövethető",
|
||||
"source": "Forrás",
|
||||
"app": "App",
|
||||
"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.",
|
||||
"trackOnlyAppDescription": "Az alkalmazás frissítéseit nyomon követi, de az Obtainium nem tudja letölteni vagy telepíteni.",
|
||||
"cancelled": "Törölve",
|
||||
"appAlreadyAdded": "Az app már hozzáadva",
|
||||
"alreadyUpToDateQuestion": "Az app már naprakész?",
|
||||
"addApp": "App hozzáadás",
|
||||
"appSourceURL": "App forrás URL",
|
||||
"error": "Hiba",
|
||||
"add": "Hozzáadás",
|
||||
"searchSomeSourcesLabel": "Keresés (csak egyes források)",
|
||||
"search": "Keresés",
|
||||
"additionalOptsFor": "További lehetőségek a következőhöz: {}",
|
||||
"supportedSources": "Támogatott források",
|
||||
"trackOnlyInBrackets": "(Csak nyomonkövetés)",
|
||||
"searchableInBrackets": "(Kereshető)",
|
||||
"appsString": "Appok",
|
||||
"noApps": "Nincs App",
|
||||
"noAppsForFilter": "Nincsenek appok a szűrőhöz",
|
||||
"byX": "Fejlesztő: {}",
|
||||
"percentProgress": "Folyamat: {}%",
|
||||
"pleaseWait": "Kis türelmet",
|
||||
"updateAvailable": "Frissítés érhető el",
|
||||
"estimateInBracketsShort": "(Becsült)",
|
||||
"notInstalled": "Nem telepített",
|
||||
"estimateInBrackets": "(Becslés)",
|
||||
"selectAll": "Mindet kiválaszt",
|
||||
"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.",
|
||||
"removeSelectedAppsQuestion": "Eltávolítja a kiválasztott appokat?",
|
||||
"removeSelectedApps": "Távolítsa el a kiválasztott appokat",
|
||||
"updateX": "Frissítés: {}",
|
||||
"installX": "Telepítés: {}",
|
||||
"markXTrackOnlyAsUpdated": "Jelölje meg: {}\n(Csak nyomon követhető)\nmint Frissített",
|
||||
"changeX": "Változás {}",
|
||||
"installUpdateApps": "Appok telepítése/frissítése",
|
||||
"installUpdateSelectedApps": "Telepítse/frissítse a kiválasztott appokat",
|
||||
"markXSelectedAppsAsUpdated": "Megjelöl {} kiválasztott alkalmazást frissítettként?",
|
||||
"no": "Nem",
|
||||
"yes": "Igen",
|
||||
"markSelectedAppsUpdated": "Jelölje meg a kiválasztott appokat frissítettként",
|
||||
"pinToTop": "Rögzítés felülre",
|
||||
"unpinFromTop": "Eltávolít felülről",
|
||||
"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.",
|
||||
"shareSelectedAppURLs": "Ossza meg a kiválasztott app URL címeit",
|
||||
"resetInstallStatus": "Telepítési állapot visszaállítása",
|
||||
"more": "További",
|
||||
"removeOutdatedFilter": "Távolítsa el az elavult app szűrőt",
|
||||
"showOutdatedOnly": "Csak az elavult appok megjelenítése",
|
||||
"filter": "Szűrő",
|
||||
"filterActive": "Szűrő *",
|
||||
"filterApps": "Appok szűrése",
|
||||
"appName": "App név",
|
||||
"author": "Szerző",
|
||||
"upToDateApps": "Naprakész appok",
|
||||
"nonInstalledApps": "Nem telepített appok",
|
||||
"importExport": "Import/Export",
|
||||
"settings": "Beállítások",
|
||||
"exportedTo": "Exportálva ide {}",
|
||||
"obtainiumExport": "Obtainium Adat Exportálás",
|
||||
"invalidInput": "Hibás bemenet",
|
||||
"importedX": "Importálva innen {}",
|
||||
"obtainiumImport": "Obtainium Adat Importálás",
|
||||
"importFromURLList": "Importálás URL listából",
|
||||
"searchQuery": "Keresési lekérdezés",
|
||||
"appURLList": "App URL lista",
|
||||
"line": "Sor",
|
||||
"searchX": "Keresés {}",
|
||||
"noResults": "Nincs találat",
|
||||
"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..",
|
||||
"importErrors": "Importálási hibák",
|
||||
"importedXOfYApps": "{}/{} app importálva.",
|
||||
"followingURLsHadErrors": "A következő URL-ek hibákat tartalmaztak:",
|
||||
"okay": "Oké",
|
||||
"selectURL": "Válassza ki az URL-t",
|
||||
"selectURLs": "Kiválasztott URL-ek",
|
||||
"pick": "Válasszon",
|
||||
"theme": "Téma",
|
||||
"dark": "Sötét",
|
||||
"light": "Világos",
|
||||
"followSystem": "Rendszer szerint",
|
||||
"obtainium": "Obtainium",
|
||||
"materialYou": "Material You",
|
||||
"useBlackTheme": "Használjon tiszta fekete sötét témát",
|
||||
"appSortBy": "App rendezés...",
|
||||
"authorName": "Szerző/Név",
|
||||
"nameAuthor": "Név/Szerző",
|
||||
"asAdded": "Mint Hozzáadott",
|
||||
"appSortOrder": "Appok rendezése",
|
||||
"ascending": "Emelkedő",
|
||||
"descending": "Csökkenő",
|
||||
"bgUpdateCheckInterval": "Háttérfrissítés ellenőrzés időköze",
|
||||
"neverManualOnly": "Soha – csak manuális",
|
||||
"appearance": "Megjelenés",
|
||||
"showWebInAppView": "Forrás megjelenítése az Appok nézetben",
|
||||
"pinUpdates": "Frissítések kitűzése az App nézet tetejére",
|
||||
"updates": "Frissítések",
|
||||
"sourceSpecific": "Forrás-specifikus",
|
||||
"appSource": "App forrás",
|
||||
"noLogs": "Nincsenek naplók",
|
||||
"appLogs": "App naplók",
|
||||
"close": "Bezárás",
|
||||
"share": "Megosztás",
|
||||
"appNotFound": "App nem található",
|
||||
"obtainiumExportHyphenatedLowercase": "obtainium-export",
|
||||
"pickAnAPK": "Válasszon egy APK-t",
|
||||
"appHasMoreThanOnePackage": "A(z) {} egynél több csomaggal rendelkezik:",
|
||||
"deviceSupportsXArch": "Eszköze támogatja a {} CPU architektúrát.",
|
||||
"deviceSupportsFollowingArchs": "Az eszköze a következő CPU architektúrákat támogatja:",
|
||||
"warning": "Figyelem",
|
||||
"sourceIsXButPackageFromYPrompt": "Az alkalmazás forrása „{}”, de a kiadási csomag innen származik: „{}”. Folytatja?",
|
||||
"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",
|
||||
"noNewUpdates": "Nincsenek új frissítések.",
|
||||
"xHasAnUpdate": "A(z) {} frissítést kapott.",
|
||||
"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",
|
||||
"xWasUpdatedToY": "{} frissítve a következőre: {}.",
|
||||
"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",
|
||||
"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",
|
||||
"xWasRemovedDueToErrorY": "A(z) {} a következő hiba miatt lett eltávolítva: {}",
|
||||
"completeAppInstallation": "Teljes app telepítés",
|
||||
"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",
|
||||
"checkingForUpdates": "Frissítések keresése",
|
||||
"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",
|
||||
"trackOnly": "Csak követés",
|
||||
"errorWithHttpStatusCode": "Hiba {}",
|
||||
"versionCorrectionDisabled": "Verzió korrekció letiltva (úgy tűnik, a beépülő modul nem működik)",
|
||||
"unknown": "Ismeretlen",
|
||||
"none": "Egyik sem",
|
||||
"never": "Soha",
|
||||
"latestVersionX": "Legújabb verzió: {}",
|
||||
"installedVersionX": "Telepített verzió: {}",
|
||||
"lastUpdateCheckX": "Frissítés ellenőrizve: {}",
|
||||
"remove": "Eltávolítás",
|
||||
"yesMarkUpdated": "Igen, megjelölés frissítettként",
|
||||
"fdroid": "F-Droid Official",
|
||||
"appIdOrName": "App ID vagy név",
|
||||
"appId": "App ID",
|
||||
"appWithIdOrNameNotFound": "Nem található app ezzel az azonosítóval vagy névvel",
|
||||
"reposHaveMultipleApps": "A repók több alkalmazást is tartalmazhatnak",
|
||||
"fdroidThirdPartyRepo": "F-Droid Harmadik-fél Repo",
|
||||
"steam": "Steam",
|
||||
"steamMobile": "Steam Mobile",
|
||||
"steamChat": "Steam Chat",
|
||||
"install": "Telepít",
|
||||
"markInstalled": "Telepítettnek jelöl",
|
||||
"update": "Frissít",
|
||||
"markUpdated": "Frissítettnek jelöl",
|
||||
"additionalOptions": "További lehetőségek",
|
||||
"disableVersionDetection": "Verzió érzékelés letiltása",
|
||||
"noVersionDetectionExplanation": "Ezt a beállítást csak olyan alkalmazásoknál szabad használni, ahol a verzióérzékelés nem működik megfelelően.",
|
||||
"downloadingX": "{} letöltés",
|
||||
"downloadNotifDescription": "Értesíti a felhasználót az app letöltésének előrehaladásáról",
|
||||
"noAPKFound": "Nem található APK",
|
||||
"noVersionDetection": "Nincs verzió érzékelés",
|
||||
"categorize": "Kategorizálás",
|
||||
"categories": "Kategóriák",
|
||||
"category": "Kategória",
|
||||
"noCategory": "Nincs kategória",
|
||||
"deleteCategoryQuestion": "Törli a kategóriát?",
|
||||
"categoryDeleteWarning": "A(z) {} összes app kategorizálatlan állapotba kerül.",
|
||||
"addCategory": "Új kategória",
|
||||
"label": "Címke",
|
||||
"language": "Nyelv",
|
||||
"copiedToClipboard": "Másolva a vágólapra",
|
||||
"storagePermissionDenied": "Tárhely engedély megtagadva",
|
||||
"selectedCategorizeWarning": "Ez felváltja a kiválasztott alkalmazások meglévő kategória-beállításait.",
|
||||
"filterAPKsByRegEx": "Az APK-k szűrése reguláris kifejezéssel",
|
||||
"removeFromObtainium": "Eltávolítás az Obtainiumból",
|
||||
"uninstallFromDevice": "Eltávolítás a készülékről",
|
||||
"onlyWorksWithNonVersionDetectApps": "Csak azoknál az alkalmazásoknál működik, amelyeknél a verzióérzékelés le van tiltva.",
|
||||
"releaseDateAsVersion": "Használja a Kiadás dátumát, mint verziót",
|
||||
"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.",
|
||||
"changes": "Változtatások",
|
||||
"releaseDate": "Kiadás dátuma",
|
||||
"importFromURLsInFile": "Importálás fájlban található URL-ből (mint pl. OPML)",
|
||||
"versionDetection": "Verzió érzékelés",
|
||||
"standardVersionDetection": "Alapért. verzió érzékelés",
|
||||
"groupByCategory": "Csoportosítás Kategória alapján",
|
||||
"autoApkFilterByArch": "Ha lehetséges, próbálja CPU architektúra szerint szűrni az APK-okat",
|
||||
"overrideSource": "Forrás felülbírálása",
|
||||
"dontShowAgain": "Ne mutassa ezt újra",
|
||||
"dontShowTrackOnlyWarnings": "Ne jelenítsen meg 'Csak nyomon követés' figyelmeztetést",
|
||||
"dontShowAPKOriginWarnings": "Ne jelenítsen meg az APK eredetére vonatkozó figyelmeztetéseket",
|
||||
"moveNonInstalledAppsToBottom": "Helyezze át a nem telepített appokat az App nézet aljára",
|
||||
"gitlabPATLabel": "GitLab Personal Access Token\n(Engedélyezi a Keresést és jobb APK felfedezés)",
|
||||
"about": "Rólunk",
|
||||
"requiresCredentialsInSettings": "Ehhez további hitelesítő adatokra van szükség (a Beállításokban)",
|
||||
"checkOnStart": "Egyszer az alkalmazás indításakor is",
|
||||
"tryInferAppIdFromCode": "Próbálja kikövetkeztetni az app azonosítót a forráskódból",
|
||||
"removeOnExternalUninstall": "A külsőleg eltávolított appok auto. eltávolítása",
|
||||
"pickHighestVersionCode": "A legmagasabb verziószámú APK auto. kiválasztása",
|
||||
"checkUpdateOnDetailPage": "Frissítések keresése az app részleteit tartalmazó oldal megnyitásakor",
|
||||
"disablePageTransitions": "Lap áttűnési animációk letiltása",
|
||||
"reversePageTransitions": "Fordított lap áttűnési animációk",
|
||||
"minStarCount": "Minimális csillag szám",
|
||||
"addInfoBelow": "Adja hozzá ezt az infót alább.",
|
||||
"addInfoInSettings": "Adja hozzá ezt az infót a Beállításokban.",
|
||||
"githubSourceNote": "A GitHub sebességkorlátozás elkerülhető API-kulcs használatával.",
|
||||
"gitlabSourceNote": "Előfordulhat, hogy a GitLab APK kibontása nem működik API-kulcs nélkül.",
|
||||
"sortByFileNamesNotLinks": "Fájlnevek szerinti elrendezés teljes linkek helyett",
|
||||
"filterReleaseNotesByRegEx": "Kiadási megjegyzések szűrése reguláris kifejezéssel",
|
||||
"customLinkFilterRegex": "Egyéni APK hivatkozásszűrő reguláris kifejezéssel (Alapérték '.apk$')",
|
||||
"appsPossiblyUpdated": "App frissítési kísérlet",
|
||||
"appsPossiblyUpdatedNotifDescription": "Értesíti a felhasználót, hogy egy vagy több alkalmazás frissítése lehetséges a háttérben",
|
||||
"xWasPossiblyUpdatedToY": "{} frissítve lehet erre {}.",
|
||||
"backgroundUpdateReqsExplanation": "Előfordulhat, hogy nem minden appnál lehetséges a háttérbeli frissítés.",
|
||||
"backgroundUpdateLimitsExplanation": "A háttérben történő telepítés sikeressége csak az Obtainium megnyitásakor állapítható meg.",
|
||||
"verifyLatestTag": "Ellenőrizze a „legújabb” címkét",
|
||||
"exemptFromBackgroundUpdates": "Mentes a háttérben történő frissítések alól (ha engedélyezett)",
|
||||
"bgUpdatesOnWiFiOnly": "Tiltsa le a háttérben frissítéseket, ha nincs Wi-Fi-n",
|
||||
"autoSelectHighestVersionCode": "A legmagasabb verziószámú APK auto. kiválasztása",
|
||||
"versionExtractionRegEx": "Verzió kibontása reguláris kifejezéssel",
|
||||
"matchGroupToUse": "Párosítsa a csoportot a használathoz",
|
||||
"highlightTouchTargets": "Emelje ki a kevésbé nyilvánvaló érintési célokat",
|
||||
"pickExportDir": "Válassza az Exportálási könyvtárat",
|
||||
"autoExportOnChanges": "Auto-exportálás a változások után",
|
||||
"filterVersionsByRegEx": "Verziók szűrése reguláris kifejezéssel",
|
||||
"trySelectingSuggestedVersionCode": "Próbálja ki a javasolt verziókódú APK-t",
|
||||
"dontSortReleasesList": "Az API-ból származó kiadási sorrend megőrzése",
|
||||
"reverseSort": "Fordított rendezés",
|
||||
"debugMenu": "Hibakereső menü",
|
||||
"bgTaskStarted": "A háttérfeladat elindult – ellenőrizze a naplókat.",
|
||||
"enableBackgroundUpdates": "Frissítések a háttérben",
|
||||
"runBgCheckNow": "Futtassa a Háttérben frissítés ellenőrzését most",
|
||||
"removeAppQuestion": {
|
||||
"one": "Eltávolítja az alkalmazást?",
|
||||
"other": "Eltávolítja az alkalmazást?"
|
||||
},
|
||||
"tooManyRequestsTryAgainInMinutes": {
|
||||
"one": "Túl sok kérés (korlátozott arány) – próbálja újra {} perc múlva",
|
||||
"other": "Túl sok kérés (korlátozott arány) – próbálja újra {} perc múlva"
|
||||
},
|
||||
"bgUpdateGotErrorRetryInMinutes": {
|
||||
"one": "A háttérfrissítések ellenőrzése {}-t észlelt, {} perc múlva ütemezi az újrapróbálkozást",
|
||||
"other": "A háttérfrissítések ellenőrzése {}-t észlelt, {} perc múlva ütemezi az újrapróbálkozást"
|
||||
},
|
||||
"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",
|
||||
"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"
|
||||
},
|
||||
"apps": {
|
||||
"one": "{} app",
|
||||
"other": "{} app"
|
||||
},
|
||||
"url": {
|
||||
"one": "{} URL",
|
||||
"other": "{} URL"
|
||||
},
|
||||
"minute": {
|
||||
"one": "{} perc",
|
||||
"other": "{} perc"
|
||||
},
|
||||
"hour": {
|
||||
"one": "{} óra",
|
||||
"other": "{} óra"
|
||||
},
|
||||
"day": {
|
||||
"one": "{} nap",
|
||||
"other": "{} nap"
|
||||
},
|
||||
"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."
|
||||
}
|
||||
}
|
||||
{
|
||||
"invalidURLForSource": "Érvénytelen a(z) {} app URL-je",
|
||||
"noReleaseFound": "Nem található megfelelő kiadás",
|
||||
"noVersionFound": "Nem sikerült meghatározni a kiadás verzióját",
|
||||
"urlMatchesNoSource": "Az URL nem egyezik ismert forrással",
|
||||
"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",
|
||||
"functionNotImplemented": "Ez az osztály nem valósította meg ezt a függvényt",
|
||||
"placeholder": "Helykitöltő",
|
||||
"someErrors": "Néhány hiba történt",
|
||||
"unexpectedError": "Váratlan hiba",
|
||||
"ok": "Oké",
|
||||
"and": "és",
|
||||
"githubPATLabel": "GitHub Personal Access Token (megnöveli a díjkorlátot)",
|
||||
"includePrereleases": "Tartalmazza az előzetes kiadásokat",
|
||||
"fallbackToOlderReleases": "Visszatérés a régebbi kiadásokhoz",
|
||||
"filterReleaseTitlesByRegEx": "A kiadás címeinek szűrése reguláris kifejezéssel",
|
||||
"invalidRegEx": "Érvénytelen reguláris kifejezés",
|
||||
"noDescription": "Nincs leírás",
|
||||
"cancel": "Mégse",
|
||||
"continue": "Tovább",
|
||||
"requiredInBrackets": "(Kötelező)",
|
||||
"dropdownNoOptsError": "HIBA: A LEDOBÁST LEGALÁBB EGY OPCIÓHOZ KELL RENDELNI",
|
||||
"colour": "Szín",
|
||||
"githubStarredRepos": "GitHub Csillagos Repo-k",
|
||||
"uname": "Felh.név",
|
||||
"wrongArgNum": "Rossz számú argumentumot adott meg",
|
||||
"xIsTrackOnly": "A(z) {} csak nyomonkövethető",
|
||||
"source": "Forrás",
|
||||
"app": "App",
|
||||
"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.",
|
||||
"trackOnlyAppDescription": "Az alkalmazás frissítéseit nyomon követi, de az Obtainium nem tudja letölteni vagy telepíteni.",
|
||||
"cancelled": "Törölve",
|
||||
"appAlreadyAdded": "Az app már hozzáadva",
|
||||
"alreadyUpToDateQuestion": "Az app már naprakész?",
|
||||
"addApp": "App hozzáadás",
|
||||
"appSourceURL": "App forrás URL",
|
||||
"error": "Hiba",
|
||||
"add": "Hozzáadás",
|
||||
"searchSomeSourcesLabel": "Keresés (csak egyes források)",
|
||||
"search": "Keresés",
|
||||
"additionalOptsFor": "További lehetőségek a következőhöz: {}",
|
||||
"supportedSources": "Támogatott források",
|
||||
"trackOnlyInBrackets": "(Csak nyomonkövetés)",
|
||||
"searchableInBrackets": "(Kereshető)",
|
||||
"appsString": "Appok",
|
||||
"noApps": "Nincs App",
|
||||
"noAppsForFilter": "Nincsenek appok a szűrőhöz",
|
||||
"byX": "Fejlesztő: {}",
|
||||
"percentProgress": "Folyamat: {}%",
|
||||
"pleaseWait": "Kis türelmet",
|
||||
"updateAvailable": "Frissítés érhető el",
|
||||
"estimateInBracketsShort": "(Becsült)",
|
||||
"notInstalled": "Nem telepített",
|
||||
"estimateInBrackets": "(Becslés)",
|
||||
"selectAll": "Mindet kiválaszt",
|
||||
"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.",
|
||||
"removeSelectedAppsQuestion": "Eltávolítja a kiválasztott appokat?",
|
||||
"removeSelectedApps": "Távolítsa el a kiválasztott appokat",
|
||||
"updateX": "Frissítés: {}",
|
||||
"installX": "Telepítés: {}",
|
||||
"markXTrackOnlyAsUpdated": "Jelölje meg: {}\n(Csak nyomon követhető)\nmint Frissített",
|
||||
"changeX": "Változás {}",
|
||||
"installUpdateApps": "Appok telepítése/frissítése",
|
||||
"installUpdateSelectedApps": "Telepítse/frissítse a kiválasztott appokat",
|
||||
"markXSelectedAppsAsUpdated": "Megjelöl {} kiválasztott alkalmazást frissítettként?",
|
||||
"no": "Nem",
|
||||
"yes": "Igen",
|
||||
"markSelectedAppsUpdated": "Jelölje meg a kiválasztott appokat frissítettként",
|
||||
"pinToTop": "Rögzítés felülre",
|
||||
"unpinFromTop": "Eltávolít felülről",
|
||||
"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.",
|
||||
"shareSelectedAppURLs": "Ossza meg a kiválasztott app URL címeit",
|
||||
"resetInstallStatus": "Telepítési állapot visszaállítása",
|
||||
"more": "További",
|
||||
"removeOutdatedFilter": "Távolítsa el az elavult app szűrőt",
|
||||
"showOutdatedOnly": "Csak az elavult appok megjelenítése",
|
||||
"filter": "Szűrő",
|
||||
"filterActive": "Szűrő *",
|
||||
"filterApps": "Appok szűrése",
|
||||
"appName": "App név",
|
||||
"author": "Szerző",
|
||||
"upToDateApps": "Naprakész appok",
|
||||
"nonInstalledApps": "Nem telepített appok",
|
||||
"importExport": "Import/Export",
|
||||
"settings": "Beállítások",
|
||||
"exportedTo": "Exportálva ide {}",
|
||||
"obtainiumExport": "Obtainium Adat Exportálás",
|
||||
"invalidInput": "Hibás bemenet",
|
||||
"importedX": "Importálva innen {}",
|
||||
"obtainiumImport": "Obtainium Adat Importálás",
|
||||
"importFromURLList": "Importálás URL listából",
|
||||
"searchQuery": "Keresési lekérdezés",
|
||||
"appURLList": "App URL lista",
|
||||
"line": "Sor",
|
||||
"searchX": "Keresés {}",
|
||||
"noResults": "Nincs találat",
|
||||
"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..",
|
||||
"importErrors": "Importálási hibák",
|
||||
"importedXOfYApps": "{}/{} app importálva.",
|
||||
"followingURLsHadErrors": "A következő URL-ek hibákat tartalmaztak:",
|
||||
"okay": "Oké",
|
||||
"selectURL": "Válassza ki az URL-t",
|
||||
"selectURLs": "Kiválasztott URL-ek",
|
||||
"pick": "Válasszon",
|
||||
"theme": "Téma",
|
||||
"dark": "Sötét",
|
||||
"light": "Világos",
|
||||
"followSystem": "Rendszer szerint",
|
||||
"obtainium": "Obtainium",
|
||||
"materialYou": "Material You",
|
||||
"useBlackTheme": "Használjon tiszta fekete sötét témát",
|
||||
"appSortBy": "App rendezés...",
|
||||
"authorName": "Szerző/Név",
|
||||
"nameAuthor": "Név/Szerző",
|
||||
"asAdded": "Mint Hozzáadott",
|
||||
"appSortOrder": "Appok rendezése",
|
||||
"ascending": "Emelkedő",
|
||||
"descending": "Csökkenő",
|
||||
"bgUpdateCheckInterval": "Háttérfrissítés ellenőrzés időköze",
|
||||
"neverManualOnly": "Soha – csak manuális",
|
||||
"appearance": "Megjelenés",
|
||||
"showWebInAppView": "Forrás megjelenítése az Appok nézetben",
|
||||
"pinUpdates": "Frissítések kitűzése az App nézet tetejére",
|
||||
"updates": "Frissítések",
|
||||
"sourceSpecific": "Forrás-specifikus",
|
||||
"appSource": "App forrás",
|
||||
"noLogs": "Nincsenek naplók",
|
||||
"appLogs": "App naplók",
|
||||
"close": "Bezárás",
|
||||
"share": "Megosztás",
|
||||
"appNotFound": "App nem található",
|
||||
"obtainiumExportHyphenatedLowercase": "obtainium-export",
|
||||
"pickAnAPK": "Válasszon egy APK-t",
|
||||
"appHasMoreThanOnePackage": "A(z) {} egynél több csomaggal rendelkezik:",
|
||||
"deviceSupportsXArch": "Eszköze támogatja a {} CPU architektúrát.",
|
||||
"deviceSupportsFollowingArchs": "Az eszköze a következő CPU architektúrákat támogatja:",
|
||||
"warning": "Figyelem",
|
||||
"sourceIsXButPackageFromYPrompt": "Az alkalmazás forrása „{}”, de a kiadási csomag innen származik: „{}”. Folytatja?",
|
||||
"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",
|
||||
"noNewUpdates": "Nincsenek új frissítések.",
|
||||
"xHasAnUpdate": "A(z) {} frissítést kapott.",
|
||||
"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",
|
||||
"xWasUpdatedToY": "{} frissítve a következőre: {}.",
|
||||
"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",
|
||||
"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",
|
||||
"xWasRemovedDueToErrorY": "A(z) {} a következő hiba miatt lett eltávolítva: {}",
|
||||
"completeAppInstallation": "Teljes app telepítés",
|
||||
"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",
|
||||
"checkingForUpdates": "Frissítések keresése",
|
||||
"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",
|
||||
"trackOnly": "Csak követés",
|
||||
"errorWithHttpStatusCode": "Hiba {}",
|
||||
"versionCorrectionDisabled": "Verzió korrekció letiltva (úgy tűnik, a beépülő modul nem működik)",
|
||||
"unknown": "Ismeretlen",
|
||||
"none": "Egyik sem",
|
||||
"never": "Soha",
|
||||
"latestVersionX": "Legújabb verzió: {}",
|
||||
"installedVersionX": "Telepített verzió: {}",
|
||||
"lastUpdateCheckX": "Frissítés ellenőrizve: {}",
|
||||
"remove": "Eltávolítás",
|
||||
"yesMarkUpdated": "Igen, megjelölés frissítettként",
|
||||
"fdroid": "F-Droid Official",
|
||||
"appIdOrName": "App ID vagy név",
|
||||
"appId": "App ID",
|
||||
"appWithIdOrNameNotFound": "Nem található app ezzel az azonosítóval vagy névvel",
|
||||
"reposHaveMultipleApps": "A repók több alkalmazást is tartalmazhatnak",
|
||||
"fdroidThirdPartyRepo": "F-Droid Harmadik-fél Repo",
|
||||
"steam": "Steam",
|
||||
"steamMobile": "Steam Mobile",
|
||||
"steamChat": "Steam Chat",
|
||||
"install": "Telepít",
|
||||
"markInstalled": "Telepítettnek jelöl",
|
||||
"update": "Frissít",
|
||||
"markUpdated": "Frissítettnek jelöl",
|
||||
"additionalOptions": "További lehetőségek",
|
||||
"disableVersionDetection": "Verzió érzékelés letiltása",
|
||||
"noVersionDetectionExplanation": "Ezt a beállítást csak olyan alkalmazásoknál szabad használni, ahol a verzióérzékelés nem működik megfelelően.",
|
||||
"downloadingX": "{} letöltés",
|
||||
"downloadNotifDescription": "Értesíti a felhasználót az app letöltésének előrehaladásáról",
|
||||
"noAPKFound": "Nem található APK",
|
||||
"noVersionDetection": "Nincs verzió érzékelés",
|
||||
"categorize": "Kategorizálás",
|
||||
"categories": "Kategóriák",
|
||||
"category": "Kategória",
|
||||
"noCategory": "Nincs kategória",
|
||||
"noCategories": "No Categories",
|
||||
"deleteCategoryQuestion": "Törli a kategóriát?",
|
||||
"categoryDeleteWarning": "A(z) {} összes app kategorizálatlan állapotba kerül.",
|
||||
"addCategory": "Új kategória",
|
||||
"label": "Címke",
|
||||
"language": "Nyelv",
|
||||
"copiedToClipboard": "Másolva a vágólapra",
|
||||
"storagePermissionDenied": "Tárhely engedély megtagadva",
|
||||
"selectedCategorizeWarning": "Ez felváltja a kiválasztott alkalmazások meglévő kategória-beállításait.",
|
||||
"filterAPKsByRegEx": "Az APK-k szűrése reguláris kifejezéssel",
|
||||
"removeFromObtainium": "Eltávolítás az Obtainiumból",
|
||||
"uninstallFromDevice": "Eltávolítás a készülékről",
|
||||
"onlyWorksWithNonVersionDetectApps": "Csak azoknál az alkalmazásoknál működik, amelyeknél a verzióérzékelés le van tiltva.",
|
||||
"releaseDateAsVersion": "Használja a Kiadás dátumát, mint verziót",
|
||||
"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.",
|
||||
"changes": "Változtatások",
|
||||
"releaseDate": "Kiadás dátuma",
|
||||
"importFromURLsInFile": "Importálás fájlban található URL-ből (mint pl. OPML)",
|
||||
"versionDetection": "Verzió érzékelés",
|
||||
"standardVersionDetection": "Alapért. verzió érzékelés",
|
||||
"groupByCategory": "Csoportosítás Kategória alapján",
|
||||
"autoApkFilterByArch": "Ha lehetséges, próbálja CPU architektúra szerint szűrni az APK-okat",
|
||||
"overrideSource": "Forrás felülbírálása",
|
||||
"dontShowAgain": "Ne mutassa ezt újra",
|
||||
"dontShowTrackOnlyWarnings": "Ne jelenítsen meg 'Csak nyomon követés' figyelmeztetést",
|
||||
"dontShowAPKOriginWarnings": "Ne jelenítsen meg az APK eredetére vonatkozó figyelmeztetéseket",
|
||||
"moveNonInstalledAppsToBottom": "Helyezze át a nem telepített appokat az App nézet aljára",
|
||||
"gitlabPATLabel": "GitLab Personal Access Token\n(Engedélyezi a Keresést és jobb APK felfedezés)",
|
||||
"about": "Rólunk",
|
||||
"requiresCredentialsInSettings": "Ehhez további hitelesítő adatokra van szükség (a Beállításokban)",
|
||||
"checkOnStart": "Egyszer az alkalmazás indításakor is",
|
||||
"tryInferAppIdFromCode": "Próbálja kikövetkeztetni az app azonosítót a forráskódból",
|
||||
"removeOnExternalUninstall": "A külsőleg eltávolított appok auto. eltávolítása",
|
||||
"pickHighestVersionCode": "A legmagasabb verziószámú APK auto. kiválasztása",
|
||||
"checkUpdateOnDetailPage": "Frissítések keresése az app részleteit tartalmazó oldal megnyitásakor",
|
||||
"disablePageTransitions": "Lap áttűnési animációk letiltása",
|
||||
"reversePageTransitions": "Fordított lap áttűnési animációk",
|
||||
"minStarCount": "Minimális csillag szám",
|
||||
"addInfoBelow": "Adja hozzá ezt az infót alább.",
|
||||
"addInfoInSettings": "Adja hozzá ezt az infót a Beállításokban.",
|
||||
"githubSourceNote": "A GitHub sebességkorlátozás elkerülhető API-kulcs használatával.",
|
||||
"gitlabSourceNote": "Előfordulhat, hogy a GitLab APK kibontása nem működik API-kulcs nélkül.",
|
||||
"sortByFileNamesNotLinks": "Fájlnevek szerinti elrendezés teljes linkek helyett",
|
||||
"filterReleaseNotesByRegEx": "Kiadási megjegyzések szűrése reguláris kifejezéssel",
|
||||
"customLinkFilterRegex": "Egyéni APK hivatkozásszűrő reguláris kifejezéssel (Alapérték '.apk$')",
|
||||
"appsPossiblyUpdated": "App frissítési kísérlet",
|
||||
"appsPossiblyUpdatedNotifDescription": "Értesíti a felhasználót, hogy egy vagy több alkalmazás frissítése lehetséges a háttérben",
|
||||
"xWasPossiblyUpdatedToY": "{} frissítve lehet erre {}.",
|
||||
"backgroundUpdateReqsExplanation": "Előfordulhat, hogy nem minden appnál lehetséges a háttérbeli frissítés.",
|
||||
"backgroundUpdateLimitsExplanation": "A háttérben történő telepítés sikeressége csak az Obtainium megnyitásakor állapítható meg.",
|
||||
"verifyLatestTag": "Ellenőrizze a „legújabb” címkét",
|
||||
"intermediateLinkRegex": "Filter for an 'Intermediate' Link to Visit First",
|
||||
"intermediateLinkNotFound": "Intermediate link not found",
|
||||
"exemptFromBackgroundUpdates": "Mentes a háttérben történő frissítések alól (ha engedélyezett)",
|
||||
"bgUpdatesOnWiFiOnly": "Tiltsa le a háttérben frissítéseket, ha nincs Wi-Fi-n",
|
||||
"autoSelectHighestVersionCode": "A legmagasabb verziószámú APK auto. kiválasztása",
|
||||
"versionExtractionRegEx": "Verzió kibontása reguláris kifejezéssel",
|
||||
"matchGroupToUse": "Párosítsa a csoportot a használathoz",
|
||||
"highlightTouchTargets": "Emelje ki a kevésbé nyilvánvaló érintési célokat",
|
||||
"pickExportDir": "Válassza az Exportálási könyvtárat",
|
||||
"autoExportOnChanges": "Auto-exportálás a változások után",
|
||||
"filterVersionsByRegEx": "Verziók szűrése reguláris kifejezéssel",
|
||||
"trySelectingSuggestedVersionCode": "Próbálja ki a javasolt verziókódú APK-t",
|
||||
"dontSortReleasesList": "Az API-ból származó kiadási sorrend megőrzése",
|
||||
"reverseSort": "Fordított rendezés",
|
||||
"debugMenu": "Hibakereső menü",
|
||||
"bgTaskStarted": "A háttérfeladat elindult – ellenőrizze a naplókat.",
|
||||
"enableBackgroundUpdates": "Frissítések a háttérben",
|
||||
"runBgCheckNow": "Futtassa a Háttérben frissítés ellenőrzését most",
|
||||
"versionExtractWholePage": "Apply Version Extraction Regex to Entire Page",
|
||||
"installing": "Installing",
|
||||
"skipUpdateNotifications": "Skip update notifications",
|
||||
"updatesAvailableNotifChannel": "Frissítések érhetők el",
|
||||
"appsUpdatedNotifChannel": "Alkalmazások frissítve",
|
||||
"appsPossiblyUpdatedNotifChannel": "App frissítési kísérlet",
|
||||
"errorCheckingUpdatesNotifChannel": "Hiba a frissítések keresésekor",
|
||||
"appsRemovedNotifChannel": "Alkalmazások eltávolítva",
|
||||
"downloadingXNotifChannel": "{} letöltés",
|
||||
"completeAppInstallationNotifChannel": "Teljes app telepítés",
|
||||
"checkingForUpdatesNotifChannel": "Frissítések keresése",
|
||||
"removeAppQuestion": {
|
||||
"one": "Eltávolítja az alkalmazást?",
|
||||
"other": "Eltávolítja az alkalmazást?"
|
||||
},
|
||||
"tooManyRequestsTryAgainInMinutes": {
|
||||
"one": "Túl sok kérés (korlátozott arány) – próbálja újra {} perc múlva",
|
||||
"other": "Túl sok kérés (korlátozott arány) – próbálja újra {} perc múlva"
|
||||
},
|
||||
"bgUpdateGotErrorRetryInMinutes": {
|
||||
"one": "A háttérfrissítések ellenőrzése {}-t észlelt, {} perc múlva ütemezi az újrapróbálkozást",
|
||||
"other": "A háttérfrissítések ellenőrzése {}-t észlelt, {} perc múlva ütemezi az újrapróbálkozást"
|
||||
},
|
||||
"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",
|
||||
"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"
|
||||
},
|
||||
"apps": {
|
||||
"one": "{} app",
|
||||
"other": "{} app"
|
||||
},
|
||||
"url": {
|
||||
"one": "{} URL",
|
||||
"other": "{} URL"
|
||||
},
|
||||
"minute": {
|
||||
"one": "{} perc",
|
||||
"other": "{} perc"
|
||||
},
|
||||
"hour": {
|
||||
"one": "{} óra",
|
||||
"other": "{} óra"
|
||||
},
|
||||
"day": {
|
||||
"one": "{} nap",
|
||||
"other": "{} nap"
|
||||
},
|
||||
"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",
|
||||
"appsPossiblyUpdatedNotifDescription": "Notifies the user that updates to one or more Apps were potentially applied in the background",
|
||||
"xWasPossiblyUpdatedToY": "{} may have been updated to {}.",
|
||||
"enableBackgroundUpdates": "Enable background updates",
|
||||
"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.",
|
||||
"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)",
|
||||
"bgUpdatesOnWiFiOnly": "Disable background updates when not on WiFi",
|
||||
"autoSelectHighestVersionCode": "Auto-select highest versionCode APK",
|
||||
@ -260,6 +263,17 @@
|
||||
"debugMenu": "Debug Menu",
|
||||
"bgTaskStarted": "Background task started - check logs.",
|
||||
"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": {
|
||||
"one": "Rimuovere l'app?",
|
||||
"other": "Rimuovere le app?"
|
||||
@ -312,4 +326,4 @@
|
||||
"one": "{} and 1 more app may have been updated.",
|
||||
"other": "{} and {} more apps may have been updated."
|
||||
}
|
||||
}
|
||||
}
|
@ -263,6 +263,17 @@
|
||||
"debugMenu": "Debug Menu",
|
||||
"bgTaskStarted": "Background task started - check logs.",
|
||||
"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": {
|
||||
"one": "アプリを削除しますか?",
|
||||
"other": "アプリを削除しますか?"
|
||||
@ -315,4 +326,4 @@
|
||||
"one": "{} とさらに 1 個のアプリがアップデートされた可能性があります。",
|
||||
"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 {}",
|
||||
"noReleaseFound": "Nie można znaleźć odpowiedniego wydania",
|
||||
"noVersionFound": "Nie można określić wersji wydania",
|
||||
@ -26,6 +16,7 @@
|
||||
"fallbackToOlderReleases": "Powracaj do starszych wersji",
|
||||
"filterReleaseTitlesByRegEx": "Filtruj tytuły wydań wg. wyrażeń regularnych",
|
||||
"invalidRegEx": "Nieprawidłowe wyrażenie regularne",
|
||||
"noDescription": "Brak opisu",
|
||||
"cancel": "Anuluj",
|
||||
"continue": "Kontynuuj",
|
||||
"requiredInBrackets": "(Wymagane)",
|
||||
@ -75,6 +66,7 @@
|
||||
"installUpdateApps": "Instaluj/aktualizuj aplikacje",
|
||||
"installUpdateSelectedApps": "Zainstaluj/zaktualizuj wybrane aplikacje",
|
||||
"markXSelectedAppsAsUpdated": "Oznaczyć {} wybranych aplikacji jako zaktualizowane?",
|
||||
"no": "Nie",
|
||||
"yes": "Tak",
|
||||
"markSelectedAppsUpdated": "Oznacz wybrane aplikacje jako zaktualizowane",
|
||||
"pinToTop": "Przypnij",
|
||||
@ -111,6 +103,7 @@
|
||||
"importErrors": "Błędy importowania",
|
||||
"importedXOfYApps": "Zaimportowano {} z {} aplikacji.",
|
||||
"followingURLsHadErrors": "Następujące adresy URL zawierały błędy:",
|
||||
"okay": "Okej",
|
||||
"selectURL": "Wybierz adres URL",
|
||||
"selectURLs": "Wybierz adresy URL",
|
||||
"pick": "Wybierz",
|
||||
@ -179,6 +172,7 @@
|
||||
"yesMarkUpdated": "Tak, oznacz jako zaktualizowane",
|
||||
"fdroid": "Oficjalny F-Droid",
|
||||
"appIdOrName": "ID aplikacji lub nazwa",
|
||||
"appId": "ID aplikacji",
|
||||
"appWithIdOrNameNotFound": "Nie znaleziono aplikacji o tym identyfikatorze lub nazwie",
|
||||
"reposHaveMultipleApps": "Repozytoria mogą zawierać wiele aplikacji",
|
||||
"fdroidThirdPartyRepo": "Zewnętrzne repo F-Droid",
|
||||
@ -245,12 +239,15 @@
|
||||
"sortByFileNamesNotLinks": "Sortuj wg nazw plików zamiast pełnych linków",
|
||||
"filterReleaseNotesByRegEx": "Filtruj informacje o wersji według wyrażenia regularnego",
|
||||
"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",
|
||||
"xWasPossiblyUpdatedToY": "{} być może zaktualizowano do {}.",
|
||||
"enableBackgroundUpdates": "Włącz aktualizacje w tle",
|
||||
"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.",
|
||||
"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)",
|
||||
"bgUpdatesOnWiFiOnly": "Wyłącz aktualizacje w tle, gdy nie ma połączenia z Wi-Fi",
|
||||
"autoSelectHighestVersionCode": "Automatycznie wybierz najwyższy kod wersji APK",
|
||||
@ -266,6 +263,17 @@
|
||||
"debugMenu": "Menu debugowania",
|
||||
"bgTaskStarted": "Uruchomiono zadanie w tle - sprawdź logi.",
|
||||
"runBgCheckNow": "Wymuś sprawdzenie aktualizacji w tle",
|
||||
"versionExtractWholePage": "Apply Version Extraction Regex to Entire Page",
|
||||
"installing": "Installing",
|
||||
"skipUpdateNotifications": "Skip update notifications",
|
||||
"updatesAvailableNotifChannel": "Dostępne aktualizacje",
|
||||
"appsUpdatedNotifChannel": "Zaktualizowane aplikacje",
|
||||
"appsPossiblyUpdatedNotifChannel": "Informuj o próbach aktualizacji",
|
||||
"errorCheckingUpdatesNotifChannel": "Sprawdzanie błędów aktualizacji",
|
||||
"appsRemovedNotifChannel": "Usunięte aplikacje",
|
||||
"downloadingXNotifChannel": "Pobieranie {}",
|
||||
"completeAppInstallationNotifChannel": "Ukończenie instalacji aplikacji",
|
||||
"checkingForUpdatesNotifChannel": "Sprawdzanie aktualizacji",
|
||||
"removeAppQuestion": {
|
||||
"one": "Usunąć aplikację?",
|
||||
"few": "Usunąć aplikacje?",
|
||||
@ -278,6 +286,12 @@
|
||||
"many": "Zbyt wiele żądań (ograniczona częstotliwość) - spróbuj ponownie za {} minut",
|
||||
"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": {
|
||||
"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",
|
||||
@ -337,8 +351,5 @@
|
||||
"few": "{} i {} inne apki mogły zostać zaktualizowane.",
|
||||
"many": "{} i {} innych apek mogło zostać zaktualizowanych.",
|
||||
"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",
|
||||
"bgTaskStarted": "Tarefa em segundo plano iniciada - verifique os logs.",
|
||||
"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": {
|
||||
"one": "Remover App?",
|
||||
"other": "Remover Apps?"
|
||||
@ -315,4 +326,4 @@
|
||||
"one": "{} e 1 outro app pode ter sido atualizado.",
|
||||
"other": "{} e {} outros apps podem ter sido atualizados."
|
||||
}
|
||||
}
|
||||
}
|
@ -263,6 +263,17 @@
|
||||
"debugMenu": "Меню Отладки",
|
||||
"bgTaskStarted": "Фоновая задача начата - проверьте журналы.",
|
||||
"runBgCheckNow": "Запустить проверку фонового обновления сейчас",
|
||||
"versionExtractWholePage": "Apply Version Extraction Regex to Entire Page",
|
||||
"installing": "Installing",
|
||||
"skipUpdateNotifications": "Skip update notifications",
|
||||
"updatesAvailableNotifChannel": "Доступны обновления",
|
||||
"appsUpdatedNotifChannel": "Приложения обновлены",
|
||||
"appsPossiblyUpdatedNotifChannel": "Попытки обновления приложений",
|
||||
"errorCheckingUpdatesNotifChannel": "Ошибка при проверке обновлений",
|
||||
"appsRemovedNotifChannel": "Приложение удалено",
|
||||
"downloadingXNotifChannel": "Загрузка {}",
|
||||
"completeAppInstallationNotifChannel": "Завершение установки приложения",
|
||||
"checkingForUpdatesNotifChannel": "Проверка обновлений",
|
||||
"removeAppQuestion": {
|
||||
"one": "Удалить приложение?",
|
||||
"other": "Удалить приложения?"
|
||||
@ -315,4 +326,4 @@
|
||||
"one": "{} и ещё 1 приложение могли быть обновлены.",
|
||||
"other": "{} и ещё {} приложений могли быть обновлены."
|
||||
}
|
||||
}
|
||||
}
|
@ -238,31 +238,42 @@
|
||||
"gitlabSourceNote": "未使用访问令牌时可能无法从 GitLab 获取 APK 文件。",
|
||||
"sortByFileNamesNotLinks": "使用文件名代替链接进行排序",
|
||||
"filterReleaseNotesByRegEx": "使用正则表达式筛选发行说明",
|
||||
"customLinkFilterRegex": "使用正则表达式自定义链接筛选(默认模式为“.apk$”)",
|
||||
"customLinkFilterRegex": "使用正则表达式筛选自定义来源 APK 文件链接\n(未填写时,默认匹配模式为“.apk$”)",
|
||||
"appsPossiblyUpdated": "已尝试更新应用",
|
||||
"appsPossiblyUpdatedNotifDescription": "当应用已尝试在后台更新时发送通知",
|
||||
"xWasPossiblyUpdatedToY": "已尝试将 {} 更新至 {}。",
|
||||
"xWasPossiblyUpdatedToY": "已尝试将“{}”更新至 {}。",
|
||||
"enableBackgroundUpdates": "启用后台更新",
|
||||
"backgroundUpdateReqsExplanation": "后台更新未必适用于所有的应用。",
|
||||
"backgroundUpdateLimitsExplanation": "只有在启动 Obtainium 时才能确认安装是否成功。",
|
||||
"verifyLatestTag": "验证“Latest”标签",
|
||||
"intermediateLinkRegex": "首先访问“中间”链接的过滤器",
|
||||
"intermediateLinkNotFound": "中间链接未找到",
|
||||
"exemptFromBackgroundUpdates": "禁用后台更新(如果全局设置启用)",
|
||||
"bgUpdatesOnWiFiOnly": "不在连接 WiFi 时禁用后台更新",
|
||||
"autoSelectHighestVersionCode": "自动选择最高版本号 APK",
|
||||
"versionExtractionRegEx": "版本提取正则表达式",
|
||||
"matchGroupToUse": "匹配要使用的组",
|
||||
"highlightTouchTargets": "突出显示不明显的触摸目标",
|
||||
"pickExportDir": "选择导出目录",
|
||||
"autoExportOnChanges": "修改时自动导出",
|
||||
"filterVersionsByRegEx": "使用正则表达式筛选版本",
|
||||
"trySelectingSuggestedVersionCode": "尝试选择推荐版本 APK",
|
||||
"dontSortReleasesList": "Retain release order from API",
|
||||
"reverseSort": "Reverse sorting",
|
||||
"debugMenu": "Debug Menu",
|
||||
"bgTaskStarted": "Background task started - check logs.",
|
||||
"runBgCheckNow": "Run Background Update Check Now",
|
||||
"intermediateLinkRegex": "筛选一个首先访问的“中转”链接(正则表达式)",
|
||||
"intermediateLinkNotFound": "未找到“中转”链接",
|
||||
"exemptFromBackgroundUpdates": "单独禁用后台更新(若已经全局启用)",
|
||||
"bgUpdatesOnWiFiOnly": "未连接 Wi-Fi 时禁用后台更新",
|
||||
"autoSelectHighestVersionCode": "自动选择版本号最高的 APK 文件",
|
||||
"versionExtractionRegEx": "获取版本号的正则表达式",
|
||||
"matchGroupToUse": "引用的捕获组",
|
||||
"highlightTouchTargets": "突出展示不明显的触摸区域",
|
||||
"pickExportDir": "选择导出文件夹",
|
||||
"autoExportOnChanges": "数据变更时自动导出",
|
||||
"filterVersionsByRegEx": "使用正则表达式筛选版本号",
|
||||
"trySelectingSuggestedVersionCode": "尝试选择推荐版本的 APK 文件",
|
||||
"dontSortReleasesList": "保持来自 API 的发行顺序",
|
||||
"reverseSort": "反转排序",
|
||||
"debugMenu": "调试选项",
|
||||
"bgTaskStarted": "后台任务已启动 - 详见日志",
|
||||
"runBgCheckNow": "立即进行后台更新检查",
|
||||
"versionExtractWholePage": "Apply Version Extraction Regex to Entire Page",
|
||||
"installing": "Installing",
|
||||
"skipUpdateNotifications": "Skip update notifications",
|
||||
"updatesAvailableNotifChannel": "更新可用",
|
||||
"appsUpdatedNotifChannel": "应用已更新",
|
||||
"appsPossiblyUpdatedNotifChannel": "已尝试更新应用",
|
||||
"errorCheckingUpdatesNotifChannel": "检查更新出错",
|
||||
"appsRemovedNotifChannel": "应用已删除",
|
||||
"downloadingXNotifChannel": "正在下载{}",
|
||||
"completeAppInstallationNotifChannel": "完成应用安装",
|
||||
"checkingForUpdatesNotifChannel": "正在检查更新",
|
||||
"removeAppQuestion": {
|
||||
"one": "是否删除应用?",
|
||||
"other": "是否删除应用?"
|
||||
@ -315,4 +326,4 @@
|
||||
"one": "{} 和另外 1 个应用已尝试更新。",
|
||||
"other": "{} 和另外 {} 个应用已尝试更新。"
|
||||
}
|
||||
}
|
||||
}
|
@ -22,6 +22,7 @@ class APKPure extends AppSource {
|
||||
APKPure() {
|
||||
host = 'apkpure.com';
|
||||
allowSubDomains = true;
|
||||
naiveStandardVersionDetection = true;
|
||||
}
|
||||
|
||||
@override
|
||||
|
@ -9,6 +9,7 @@ class Aptoide extends AppSource {
|
||||
host = 'aptoide.com';
|
||||
name = tr('Aptoide');
|
||||
allowSubDomains = true;
|
||||
naiveStandardVersionDetection = true;
|
||||
}
|
||||
|
||||
@override
|
||||
|
@ -11,6 +11,7 @@ class FDroid extends AppSource {
|
||||
FDroid() {
|
||||
host = 'f-droid.org';
|
||||
name = tr('fdroid');
|
||||
naiveStandardVersionDetection = true;
|
||||
canSearch = true;
|
||||
additionalSourceAppSpecificSettingFormItems = [
|
||||
[
|
||||
|
@ -22,7 +22,7 @@ String ensureAbsoluteUrl(String ambiguousUrl, Uri referenceAbsoluteUrl) {
|
||||
} else if (ambiguousUrl.split('/').where((e) => e.isNotEmpty).length == 1) {
|
||||
return '${referenceAbsoluteUrl.origin}/${currPathSegments.join('/')}/$ambiguousUrl';
|
||||
} 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,20 +117,26 @@ class HTML extends AppSource {
|
||||
label: tr('versionExtractionRegEx'),
|
||||
required: false,
|
||||
additionalValidators: [(value) => regExValidator(value)]),
|
||||
],
|
||||
[
|
||||
GeneratedFormTextField('matchGroupToUse',
|
||||
label: tr('matchGroupToUse'),
|
||||
required: false,
|
||||
hint: '1',
|
||||
hint: '0',
|
||||
textInputType: const TextInputType.numberWithOptions(),
|
||||
additionalValidators: [
|
||||
(value) {
|
||||
if (value?.isEmpty == true) {
|
||||
value = null;
|
||||
}
|
||||
value ??= '1';
|
||||
value ??= '0';
|
||||
return intValidator(value);
|
||||
}
|
||||
])
|
||||
],
|
||||
[
|
||||
GeneratedFormSwitch('versionExtractWholePage',
|
||||
label: tr('versionExtractWholePage'))
|
||||
]
|
||||
];
|
||||
overrideVersionDetectionFormDefault('noVersionDetection',
|
||||
@ -212,12 +218,17 @@ class HTML extends AppSource {
|
||||
var versionExtractionRegEx =
|
||||
additionalSettings['versionExtractionRegEx'] as String?;
|
||||
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) {
|
||||
throw NoVersionError();
|
||||
}
|
||||
version = match.last
|
||||
.group(int.parse(additionalSettings['matchGroupToUse'] as String));
|
||||
String matchGroupString =
|
||||
(additionalSettings['matchGroupToUse'] as String).trim();
|
||||
if (matchGroupString.isEmpty) {
|
||||
matchGroupString = "0";
|
||||
}
|
||||
version = match.last.group(int.parse(matchGroupString));
|
||||
if (version?.isEmpty == true) {
|
||||
throw NoVersionError();
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ class Uptodown extends AppSource {
|
||||
Uptodown() {
|
||||
host = 'uptodown.com';
|
||||
allowSubDomains = true;
|
||||
naiveStandardVersionDetection = true;
|
||||
}
|
||||
|
||||
@override
|
||||
@ -34,7 +35,7 @@ class Uptodown extends AppSource {
|
||||
var html = parse(res.body);
|
||||
String? version = html.querySelector('div.version')?.innerHtml;
|
||||
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? author = html.querySelector('#author-link')?.innerHtml.trim();
|
||||
var detailElements = html.querySelectorAll('#technical-information td');
|
||||
@ -79,4 +80,20 @@ class Uptodown extends AppSource {
|
||||
version, getApkUrlsFromUrls([apkUrl]), AppNames(author, appName),
|
||||
releaseDate: relDate);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<String> apkUrlPrefetchModifier(
|
||||
String apkUrl, String standardUrl) async {
|
||||
var res = await sourceRequest(apkUrl);
|
||||
if (res.statusCode != 200) {
|
||||
throw getObtainiumHttpError(res);
|
||||
}
|
||||
var html = parse(res.body);
|
||||
var finalUrl =
|
||||
(html.querySelector('.post-download')?.attributes['data-url']);
|
||||
if (finalUrl == null) {
|
||||
throw NoAPKError();
|
||||
}
|
||||
return finalUrl;
|
||||
}
|
||||
}
|
||||
|
@ -16,14 +16,13 @@ class WhatsApp extends AppSource {
|
||||
@override
|
||||
Future<String> apkUrlPrefetchModifier(
|
||||
String apkUrl, String standardUrl) async {
|
||||
Response res = await sourceRequest('https://www.whatsapp.com/android');
|
||||
Response res = await sourceRequest('$standardUrl/android');
|
||||
if (res.statusCode == 200) {
|
||||
var targetLinks = parse(res.body)
|
||||
.querySelectorAll('a')
|
||||
.map((e) => e.attributes['href'] ?? '')
|
||||
.where((e) => e.isNotEmpty)
|
||||
.where((e) =>
|
||||
e.contains('content.whatsapp.net') && e.contains('WhatsApp.apk'))
|
||||
.where((e) => e.contains('WhatsApp.apk'))
|
||||
.toList();
|
||||
if (targetLinks.isEmpty) {
|
||||
throw NoAPKError();
|
||||
@ -39,37 +38,16 @@ class WhatsApp extends AppSource {
|
||||
String standardUrl,
|
||||
Map<String, dynamic> additionalSettings,
|
||||
) async {
|
||||
Response res = await sourceRequest('https://www.whatsapp.com/android');
|
||||
if (res.statusCode == 200) {
|
||||
var targetElements = parse(res.body)
|
||||
.querySelectorAll('p')
|
||||
.where((element) => element.innerHtml.contains('Version '))
|
||||
.toList();
|
||||
if (targetElements.isEmpty) {
|
||||
throw NoVersionError();
|
||||
}
|
||||
var vLines = targetElements[0]
|
||||
.innerHtml
|
||||
.split('\n')
|
||||
.where((element) => element.contains('Version '))
|
||||
.toList();
|
||||
if (vLines.isEmpty) {
|
||||
throw NoVersionError();
|
||||
}
|
||||
var versionMatch = RegExp('[0-9]+(\\.[0-9]+)+').firstMatch(vLines[0]);
|
||||
if (versionMatch == null) {
|
||||
throw NoVersionError();
|
||||
}
|
||||
String version =
|
||||
vLines[0].substring(versionMatch.start, versionMatch.end);
|
||||
return APKDetails(
|
||||
version,
|
||||
getApkUrlsFromUrls([
|
||||
'https://www.whatsapp.com/android?v=$version&=thisIsaPlaceholder&a=realURLPrefetchedAtDownloadTime'
|
||||
]),
|
||||
AppNames('Meta', 'WhatsApp'));
|
||||
} else {
|
||||
throw getObtainiumHttpError(res);
|
||||
}
|
||||
// This is a CDN link that is consistent per version
|
||||
// But it has query params that change constantly
|
||||
Uri apkUri =
|
||||
Uri.parse(await apkUrlPrefetchModifier(standardUrl, standardUrl));
|
||||
var unusableApkUrl = '${apkUri.origin}/${apkUri.path}';
|
||||
// So we use the param-less URL is a pseudo-version to add the app and check for updates
|
||||
// See #357 for why we can't scrape the version number directly
|
||||
// But we re-fetch the URL again with its latest query params at the actual download time
|
||||
String version = unusableApkUrl.hashCode.toString();
|
||||
return APKDetails(version, getApkUrlsFromUrls([unusableApkUrl]),
|
||||
AppNames('Meta', 'WhatsApp'));
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,5 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:android_package_installer/android_package_installer.dart';
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
@ -65,25 +67,38 @@ class NotImplementedError extends ObtainiumError {
|
||||
}
|
||||
|
||||
class MultiAppMultiError extends ObtainiumError {
|
||||
Map<String, List<String>> content = {};
|
||||
Map<String, dynamic> rawErrors = {};
|
||||
Map<String, List<String>> idsByErrorString = {};
|
||||
Map<String, String> appIdNames = {};
|
||||
|
||||
MultiAppMultiError() : super(tr('placeholder'), unexpected: true);
|
||||
|
||||
add(String appId, String string) {
|
||||
var tempIds = content.remove(string);
|
||||
add(String appId, dynamic error, {String? appName}) {
|
||||
if (error is SocketException) {
|
||||
error = error.message;
|
||||
}
|
||||
rawErrors[appId] = error;
|
||||
var string = error.toString();
|
||||
var tempIds = idsByErrorString.remove(string);
|
||||
tempIds ??= [];
|
||||
tempIds.add(appId);
|
||||
content.putIfAbsent(string, () => tempIds!);
|
||||
idsByErrorString.putIfAbsent(string, () => tempIds!);
|
||||
if (appName != null) {
|
||||
appIdNames[appId] = appName;
|
||||
}
|
||||
}
|
||||
|
||||
String errorString(String appId, {bool includeIdsWithNames = false}) =>
|
||||
'${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
|
||||
String toString() {
|
||||
String finalString = '';
|
||||
for (var e in content.keys) {
|
||||
finalString += '$e: ${content[e].toString()}\n\n';
|
||||
}
|
||||
return finalString;
|
||||
}
|
||||
String toString() => idsByErrorString.entries
|
||||
.map((e) => errorsAppsString(e.key, e.value))
|
||||
.join('\n\n');
|
||||
}
|
||||
|
||||
showError(dynamic e, BuildContext context) {
|
||||
|
@ -19,7 +19,7 @@ import 'package:easy_localization/src/easy_localization_controller.dart';
|
||||
// ignore: implementation_imports
|
||||
import 'package:easy_localization/src/localization.dart';
|
||||
|
||||
const String currentVersion = '0.14.21';
|
||||
const String currentVersion = '0.14.27';
|
||||
const String currentReleaseTag =
|
||||
'v$currentVersion-beta'; // KEEP THIS IN SYNC WITH GITHUB RELEASES
|
||||
|
||||
|
@ -68,7 +68,7 @@ class AppsPageState extends State<AppsPage> {
|
||||
refreshingSince = DateTime.now();
|
||||
});
|
||||
return appsProvider.checkUpdates().catchError((e) {
|
||||
showError(e, context);
|
||||
showError(e is Map ? e['errors'] : e, context);
|
||||
return <App>[];
|
||||
}).whenComplete(() {
|
||||
setState(() {
|
||||
@ -566,7 +566,7 @@ class AppsPageState extends State<AppsPage> {
|
||||
.toInt()
|
||||
.toString()
|
||||
])
|
||||
: tr('pleaseWait'),
|
||||
: tr('installing'),
|
||||
textAlign: (listedApps[index].downloadProgress! >= 0)
|
||||
? TextAlign.start
|
||||
: TextAlign.end,
|
||||
@ -833,7 +833,7 @@ class AppsPageState extends State<AppsPage> {
|
||||
items: const [],
|
||||
initValid: true,
|
||||
message: tr('installStatusOfXWillBeResetExplanation',
|
||||
args: [plural('app', selectedAppIds.length)]),
|
||||
args: [plural('apps', selectedAppIds.length)]),
|
||||
);
|
||||
});
|
||||
if (values != null) {
|
||||
|
@ -217,7 +217,8 @@ class _ImportExportPageState extends State<ImportExportPage> {
|
||||
if (errors.isEmpty) {
|
||||
// ignore: use_build_context_synchronously
|
||||
showError(
|
||||
tr('importedX', args: [plural('app', selectedUrls.length)]),
|
||||
tr('importedX',
|
||||
args: [plural('apps', selectedUrls.length)]),
|
||||
context);
|
||||
} else {
|
||||
// ignore: use_build_context_synchronously
|
||||
@ -274,7 +275,7 @@ class _ImportExportPageState extends State<ImportExportPage> {
|
||||
if (errors.isEmpty) {
|
||||
// ignore: use_build_context_synchronously
|
||||
showError(
|
||||
tr('importedX', args: [plural('app', selectedUrls.length)]),
|
||||
tr('importedX', args: [plural('apps', selectedUrls.length)]),
|
||||
context);
|
||||
} else {
|
||||
// ignore: use_build_context_synchronously
|
||||
|
@ -263,25 +263,29 @@ class AppsProvider with ChangeNotifier {
|
||||
return downloadedFile;
|
||||
}
|
||||
|
||||
Future<File> handleAPKIDChange(App app, PackageInfo newInfo,
|
||||
Future<File> handleAPKIDChange(App app, PackageInfo? newInfo,
|
||||
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
|
||||
// The former case should be handled (give the App its real ID), the latter is a security issue
|
||||
if (app.id != newInfo.packageName) {
|
||||
var isTempId = SourceProvider().isTempId(app);
|
||||
if (apps[app.id] != null && !isTempId && !app.allowIdChange) {
|
||||
throw IDChangedError(newInfo.packageName!);
|
||||
}
|
||||
var idChangeWasAllowed = app.allowIdChange;
|
||||
app.allowIdChange = false;
|
||||
var originalAppId = app.id;
|
||||
app.id = newInfo.packageName!;
|
||||
downloadedFile = downloadedFile.renameSync(
|
||||
'${downloadedFile.parent.path}/${app.id}-${downloadUrl.hashCode}.${downloadedFile.path.split('.').last}');
|
||||
if (apps[originalAppId] != null) {
|
||||
await removeApps([originalAppId]);
|
||||
await saveApps([app], onlyIfExists: !isTempId && !idChangeWasAllowed);
|
||||
var isTempId = SourceProvider().isTempId(app);
|
||||
if (newInfo != null) {
|
||||
if (app.id != newInfo.packageName) {
|
||||
if (apps[app.id] != null && !isTempId && !app.allowIdChange) {
|
||||
throw IDChangedError(newInfo.packageName!);
|
||||
}
|
||||
var idChangeWasAllowed = app.allowIdChange;
|
||||
app.allowIdChange = false;
|
||||
var originalAppId = app.id;
|
||||
app.id = newInfo.packageName!;
|
||||
downloadedFile = downloadedFile.renameSync(
|
||||
'${downloadedFile.parent.path}/${app.id}-${downloadUrl.hashCode}.${downloadedFile.path.split('.').last}');
|
||||
if (apps[originalAppId] != null) {
|
||||
await removeApps([originalAppId]);
|
||||
await saveApps([app], onlyIfExists: !isTempId && !idChangeWasAllowed);
|
||||
}
|
||||
}
|
||||
} else if (isTempId) {
|
||||
throw ObtainiumError('Could not get ID from APK');
|
||||
}
|
||||
return downloadedFile;
|
||||
}
|
||||
@ -344,7 +348,7 @@ class AppsProvider with ChangeNotifier {
|
||||
await pm.getPackageArchiveInfo(archiveFilePath: apks.first.path);
|
||||
}
|
||||
downloadedFile =
|
||||
await handleAPKIDChange(app, newInfo!, downloadedFile, downloadUrl);
|
||||
await handleAPKIDChange(app, newInfo, downloadedFile, downloadUrl);
|
||||
// Delete older versions of the file if any
|
||||
for (var file in downloadedFile.parent.listSync()) {
|
||||
var fn = file.path.split('/').last;
|
||||
@ -449,7 +453,7 @@ class AppsProvider with ChangeNotifier {
|
||||
} catch (e) {
|
||||
logs.add(
|
||||
'Could not install APK from XAPK \'${file.path}\': ${e.toString()}');
|
||||
errors.add(dir.appId, e.toString());
|
||||
errors.add(dir.appId, e, appName: apps[dir.appId]?.name);
|
||||
}
|
||||
} else if (file.path.toLowerCase().endsWith('.obb')) {
|
||||
await moveObbFile(file, dir.appId);
|
||||
@ -457,7 +461,7 @@ class AppsProvider with ChangeNotifier {
|
||||
}
|
||||
if (somethingInstalled) {
|
||||
dir.file.delete(recursive: true);
|
||||
} else if (errors.content.isNotEmpty) {
|
||||
} else if (errors.idsByErrorString.isNotEmpty) {
|
||||
throw errors;
|
||||
}
|
||||
} finally {
|
||||
@ -677,11 +681,11 @@ class AppsProvider with ChangeNotifier {
|
||||
}
|
||||
installedIds.add(id);
|
||||
} catch (e) {
|
||||
errors.add(id, e.toString());
|
||||
errors.add(id, e, appName: apps[id]?.name);
|
||||
}
|
||||
}
|
||||
|
||||
if (errors.content.isNotEmpty) {
|
||||
if (errors.idsByErrorString.isNotEmpty) {
|
||||
throw errors;
|
||||
}
|
||||
|
||||
@ -709,14 +713,21 @@ class AppsProvider with ChangeNotifier {
|
||||
}
|
||||
|
||||
bool isVersionDetectionPossible(AppInMemory? app) {
|
||||
return app?.app.additionalSettings['trackOnly'] != true &&
|
||||
app?.app.additionalSettings['versionDetection'] !=
|
||||
if (app?.app == null) {
|
||||
return false;
|
||||
}
|
||||
var naiveStandardVersionDetection = SourceProvider()
|
||||
.getSource(app!.app.url, overrideSource: app.app.overrideSource)
|
||||
.naiveStandardVersionDetection;
|
||||
return app.app.additionalSettings['trackOnly'] != true &&
|
||||
app.app.additionalSettings['versionDetection'] !=
|
||||
'releaseDateAsVersion' &&
|
||||
app?.installedInfo?.versionName != null &&
|
||||
app?.app.installedVersion != null &&
|
||||
reconcileVersionDifferences(
|
||||
app!.installedInfo!.versionName!, app.app.installedVersion!) !=
|
||||
null;
|
||||
app.installedInfo?.versionName != null &&
|
||||
app.app.installedVersion != null &&
|
||||
(reconcileVersionDifferences(app.installedInfo!.versionName!,
|
||||
app.app.installedVersion!) !=
|
||||
null ||
|
||||
naiveStandardVersionDetection);
|
||||
}
|
||||
|
||||
// Given an App and it's on-device info...
|
||||
@ -725,8 +736,12 @@ class AppsProvider with ChangeNotifier {
|
||||
App app, PackageInfo? installedInfo) {
|
||||
var modded = false;
|
||||
var trackOnly = app.additionalSettings['trackOnly'] == true;
|
||||
var noVersionDetection = app.additionalSettings['versionDetection'] !=
|
||||
'standardVersionDetection';
|
||||
var versionDetectionIsStandard =
|
||||
app.additionalSettings['versionDetection'] ==
|
||||
'standardVersionDetection';
|
||||
var naiveStandardVersionDetection = SourceProvider()
|
||||
.getSource(app.url, overrideSource: app.overrideSource)
|
||||
.naiveStandardVersionDetection;
|
||||
// FIRST, COMPARE THE APP'S REPORTED AND REAL INSTALLED VERSIONS, WHERE ONE IS NULL
|
||||
if (installedInfo == null && app.installedVersion != null && !trackOnly) {
|
||||
// App says it's installed but isn't really (and isn't track only) - set to not installed
|
||||
@ -741,7 +756,7 @@ class AppsProvider with ChangeNotifier {
|
||||
// SECOND, RECONCILE DIFFERENCES BETWEEN THE APP'S REPORTED AND REAL INSTALLED VERSIONS, WHERE NEITHER IS NULL
|
||||
if (installedInfo?.versionName != null &&
|
||||
installedInfo!.versionName != app.installedVersion &&
|
||||
!noVersionDetection) {
|
||||
versionDetectionIsStandard) {
|
||||
// App's reported version and real version don't match (and it uses standard version detection)
|
||||
// If they share a standard format (and are still different under it), update the reported version accordingly
|
||||
var correctedInstalledVersion = reconcileVersionDifferences(
|
||||
@ -749,12 +764,15 @@ class AppsProvider with ChangeNotifier {
|
||||
if (correctedInstalledVersion?.key == false) {
|
||||
app.installedVersion = correctedInstalledVersion!.value;
|
||||
modded = true;
|
||||
} else if (naiveStandardVersionDetection) {
|
||||
app.installedVersion = installedInfo.versionName;
|
||||
modded = true;
|
||||
}
|
||||
}
|
||||
// THIRD, RECONCILE THE APP'S REPORTED INSTALLED AND LATEST VERSIONS
|
||||
if (app.installedVersion != null &&
|
||||
app.installedVersion != app.latestVersion &&
|
||||
!noVersionDetection) {
|
||||
versionDetectionIsStandard) {
|
||||
// App's reported installed and latest versions don't match (and it uses standard version detection)
|
||||
// If they share a standard format, make sure the App's reported installed version uses that format
|
||||
var correctedInstalledVersion =
|
||||
@ -766,8 +784,7 @@ class AppsProvider with ChangeNotifier {
|
||||
}
|
||||
// FOURTH, DISABLE VERSION DETECTION IF ENABLED AND THE REPORTED/REAL INSTALLED VERSIONS ARE NOT STANDARDIZED
|
||||
if (installedInfo != null &&
|
||||
app.additionalSettings['versionDetection'] ==
|
||||
'standardVersionDetection' &&
|
||||
versionDetectionIsStandard &&
|
||||
!isVersionDetectionPossible(
|
||||
AppInMemory(app, null, installedInfo, null))) {
|
||||
app.additionalSettings['versionDetection'] = 'noVersionDetection';
|
||||
@ -1055,7 +1072,8 @@ class AppsProvider with ChangeNotifier {
|
||||
|
||||
Future<List<App>> checkUpdates(
|
||||
{DateTime? ignoreAppsCheckedAfter,
|
||||
bool throwErrorsForRetry = false}) async {
|
||||
bool throwErrorsForRetry = false,
|
||||
List<String>? specificIds}) async {
|
||||
List<App> updates = [];
|
||||
MultiAppMultiError errors = MultiAppMultiError();
|
||||
if (!gettingUpdates) {
|
||||
@ -1063,27 +1081,33 @@ class AppsProvider with ChangeNotifier {
|
||||
try {
|
||||
List<String> appIds = getAppsSortedByUpdateCheckTime(
|
||||
ignoreAppsCheckedAfter: ignoreAppsCheckedAfter);
|
||||
for (int i = 0; i < appIds.length; i++) {
|
||||
if (specificIds != null) {
|
||||
appIds = appIds.where((aId) => specificIds.contains(aId)).toList();
|
||||
}
|
||||
await Future.wait(appIds.map((appId) async {
|
||||
App? newApp;
|
||||
try {
|
||||
newApp = await checkUpdate(appIds[i]);
|
||||
newApp = await checkUpdate(appId);
|
||||
} catch (e) {
|
||||
if ((e is RateLimitError || e is SocketException) &&
|
||||
throwErrorsForRetry) {
|
||||
rethrow;
|
||||
}
|
||||
errors.add(appIds[i], e.toString());
|
||||
errors.add(appId, e, appName: apps[appId]?.name);
|
||||
}
|
||||
if (newApp != null) {
|
||||
updates.add(newApp);
|
||||
}
|
||||
}
|
||||
}), eagerError: true);
|
||||
} finally {
|
||||
gettingUpdates = false;
|
||||
}
|
||||
}
|
||||
if (errors.content.isNotEmpty) {
|
||||
throw errors;
|
||||
if (errors.idsByErrorString.isNotEmpty) {
|
||||
var res = <String, dynamic>{};
|
||||
res['errors'] = errors;
|
||||
res['updates'] = updates;
|
||||
throw res;
|
||||
}
|
||||
return updates;
|
||||
}
|
||||
@ -1116,7 +1140,6 @@ class AppsProvider with ChangeNotifier {
|
||||
return null;
|
||||
}
|
||||
if (exportDir == null) {
|
||||
logs.add('Skipping auto-export as dir is not set.');
|
||||
return null;
|
||||
}
|
||||
var files = await saf
|
||||
@ -1300,18 +1323,16 @@ class _APKOriginWarningDialogState extends State<APKOriginWarningDialog> {
|
||||
|
||||
/// Background updater function
|
||||
///
|
||||
/// @param List<String>? toCheck: The appIds to check for updates (default to all apps sorted by last update check time)
|
||||
/// @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 int? attemptCount: The number of times the function has failed up to this point (defaults to 0)
|
||||
///
|
||||
/// 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.
|
||||
/// If an update is available, the appId is either added to toInstall (if a background update is possible) or the user is notified.
|
||||
/// 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 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.
|
||||
///
|
||||
/// Once all update checks are complete, the function is called 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).
|
||||
/// 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.
|
||||
///
|
||||
@ -1351,8 +1372,49 @@ Future<void> bgUpdateCheck(int taskId, Map<String, dynamic>? params) async {
|
||||
(<List<MapEntry<String, int>>>[]))
|
||||
];
|
||||
|
||||
bool installMode = toCheck.isEmpty &&
|
||||
toInstall.isNotEmpty; // Task is either in update mode or install mode
|
||||
var netResult = await (Connectivity().checkConnectivity());
|
||||
|
||||
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
|
||||
|
||||
// In install mode, grab all available silent updates unless explicitly told otherwise
|
||||
if (installMode && 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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
logs.add(
|
||||
'BG ${installMode ? 'install' : 'update'} task $taskId: Started (${installMode ? toInstall.length : toCheck.length}).');
|
||||
@ -1361,12 +1423,6 @@ Future<void> bgUpdateCheck(int taskId, Map<String, dynamic>? params) async {
|
||||
// If in update mode...
|
||||
var didCompleteChecking = false;
|
||||
CheckingUpdatesNotification? notif;
|
||||
var networkRestricted = false;
|
||||
if (appsProvider.settingsProvider.bgUpdatesOnWiFiOnly) {
|
||||
var netResult = await (Connectivity().checkConnectivity());
|
||||
networkRestricted = (netResult != ConnectivityResult.wifi) &&
|
||||
(netResult != ConnectivityResult.ethernet);
|
||||
}
|
||||
// Loop through all updates and check each
|
||||
List<App> toNotify = [];
|
||||
try {
|
||||
@ -1383,9 +1439,10 @@ Future<void> bgUpdateCheck(int taskId, Map<String, dynamic>? params) async {
|
||||
if (newApp != null) {
|
||||
if (networkRestricted ||
|
||||
!(await appsProvider.canInstallSilently(app!.app))) {
|
||||
toNotify.add(newApp);
|
||||
} else {
|
||||
toInstall.add(MapEntry(appId, 0));
|
||||
if (newApp.additionalSettings['skipUpdateNotifications'] !=
|
||||
true) {
|
||||
toNotify.add(newApp);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (i == (toCheck.length - 1)) {
|
||||
@ -1438,7 +1495,7 @@ Future<void> bgUpdateCheck(int taskId, Map<String, dynamic>? params) async {
|
||||
}
|
||||
}
|
||||
// If you're done checking and found some silently installable updates, schedule another task which will run in install mode
|
||||
if (didCompleteChecking && toInstall.isNotEmpty) {
|
||||
if (didCompleteChecking) {
|
||||
logs.add(
|
||||
'BG update task $taskId: Done. Scheduling install task to run immediately.');
|
||||
AndroidAlarmManager.oneShot(
|
||||
@ -1450,7 +1507,7 @@ Future<void> bgUpdateCheck(int taskId, Map<String, dynamic>? params) async {
|
||||
.toList()
|
||||
});
|
||||
} else if (didCompleteChecking) {
|
||||
logs.add('BG install task $taskId: Done.');
|
||||
logs.add('BG update task $taskId: Done.');
|
||||
}
|
||||
} else {
|
||||
// If in install mode...
|
||||
|
@ -28,7 +28,7 @@ class UpdateNotification extends ObtainiumNotification {
|
||||
tr('updatesAvailable'),
|
||||
'',
|
||||
'UPDATES_AVAILABLE',
|
||||
tr('updatesAvailable'),
|
||||
tr('updatesAvailableNotifChannel'),
|
||||
tr('updatesAvailableNotifDescription'),
|
||||
Importance.max) {
|
||||
message = updates.isEmpty
|
||||
@ -42,8 +42,14 @@ class UpdateNotification extends ObtainiumNotification {
|
||||
|
||||
class SilentUpdateNotification extends ObtainiumNotification {
|
||||
SilentUpdateNotification(List<App> updates, {int? id})
|
||||
: super(id ?? 3, tr('appsUpdated'), '', 'APPS_UPDATED', tr('appsUpdated'),
|
||||
tr('appsUpdatedNotifDescription'), Importance.defaultImportance) {
|
||||
: super(
|
||||
id ?? 3,
|
||||
tr('appsUpdated'),
|
||||
'',
|
||||
'APPS_UPDATED',
|
||||
tr('appsUpdatedNotifChannel'),
|
||||
tr('appsUpdatedNotifDescription'),
|
||||
Importance.defaultImportance) {
|
||||
message = updates.length == 1
|
||||
? tr('xWasUpdatedToY',
|
||||
args: [updates[0].finalName, updates[0].latestVersion])
|
||||
@ -59,7 +65,7 @@ class SilentUpdateAttemptNotification extends ObtainiumNotification {
|
||||
tr('appsPossiblyUpdated'),
|
||||
'',
|
||||
'APPS_POSSIBLY_UPDATED',
|
||||
tr('appsPossiblyUpdated'),
|
||||
tr('appsPossiblyUpdatedNotifChannel'),
|
||||
tr('appsPossiblyUpdatedNotifDescription'),
|
||||
Importance.defaultImportance) {
|
||||
message = updates.length == 1
|
||||
@ -77,15 +83,21 @@ class ErrorCheckingUpdatesNotification extends ObtainiumNotification {
|
||||
tr('errorCheckingUpdates'),
|
||||
error,
|
||||
'BG_UPDATE_CHECK_ERROR',
|
||||
tr('errorCheckingUpdates'),
|
||||
tr('errorCheckingUpdatesNotifChannel'),
|
||||
tr('errorCheckingUpdatesNotifDescription'),
|
||||
Importance.high);
|
||||
}
|
||||
|
||||
class AppsRemovedNotification extends ObtainiumNotification {
|
||||
AppsRemovedNotification(List<List<String>> namedReasons)
|
||||
: super(6, tr('appsRemoved'), '', 'APPS_REMOVED', tr('appsRemoved'),
|
||||
tr('appsRemovedNotifDescription'), Importance.max) {
|
||||
: super(
|
||||
6,
|
||||
tr('appsRemoved'),
|
||||
'',
|
||||
'APPS_REMOVED',
|
||||
tr('appsRemovedNotifChannel'),
|
||||
tr('appsRemovedNotifDescription'),
|
||||
Importance.max) {
|
||||
message = '';
|
||||
for (var r in namedReasons) {
|
||||
message += '${tr('xWasRemovedDueToErrorY', args: [r[0], r[1]])} \n';
|
||||
@ -101,7 +113,7 @@ class DownloadNotification extends ObtainiumNotification {
|
||||
tr('downloadingX', args: [appName]),
|
||||
'',
|
||||
'APP_DOWNLOADING',
|
||||
tr('downloadingX', args: [tr('app')]),
|
||||
tr('downloadingXNotifChannel', args: [tr('app')]),
|
||||
tr('downloadNotifDescription'),
|
||||
Importance.low,
|
||||
onlyAlertOnce: true,
|
||||
@ -113,7 +125,7 @@ final completeInstallationNotification = ObtainiumNotification(
|
||||
tr('completeAppInstallation'),
|
||||
tr('obtainiumMustBeOpenToInstallApps'),
|
||||
'COMPLETE_INSTALL',
|
||||
tr('completeAppInstallation'),
|
||||
tr('completeAppInstallationNotifChannel'),
|
||||
tr('completeAppInstallationNotifDescription'),
|
||||
Importance.max);
|
||||
|
||||
@ -124,7 +136,7 @@ class CheckingUpdatesNotification extends ObtainiumNotification {
|
||||
tr('checkingForUpdates'),
|
||||
appName,
|
||||
'BG_UPDATE_CHECK',
|
||||
tr('checkingForUpdates'),
|
||||
tr('checkingForUpdatesNotifChannel'),
|
||||
tr('checkingForUpdatesNotifDescription'),
|
||||
Importance.min);
|
||||
}
|
||||
|
@ -28,6 +28,7 @@ import 'package:obtainium/app_sources/steammobile.dart';
|
||||
import 'package:obtainium/app_sources/telegramapp.dart';
|
||||
import 'package:obtainium/app_sources/uptodown.dart';
|
||||
import 'package:obtainium/app_sources/vlc.dart';
|
||||
import 'package:obtainium/app_sources/whatsapp.dart';
|
||||
import 'package:obtainium/components/generated_form.dart';
|
||||
import 'package:obtainium/custom_errors.dart';
|
||||
import 'package:obtainium/mass_app_sources/githubstars.dart';
|
||||
@ -328,6 +329,7 @@ abstract class AppSource {
|
||||
bool changeLogIfAnyIsMarkDown = true;
|
||||
bool appIdInferIsOptional = false;
|
||||
bool allowSubDomains = false;
|
||||
bool naiveStandardVersionDetection = false;
|
||||
|
||||
AppSource() {
|
||||
name = runtimeType.toString();
|
||||
@ -440,6 +442,10 @@ abstract class AppSource {
|
||||
[
|
||||
GeneratedFormSwitch('exemptFromBackgroundUpdates',
|
||||
label: tr('exemptFromBackgroundUpdates'))
|
||||
],
|
||||
[
|
||||
GeneratedFormSwitch('skipUpdateNotifications',
|
||||
label: tr('skipUpdateNotifications'))
|
||||
]
|
||||
];
|
||||
|
||||
@ -556,7 +562,7 @@ class SourceProvider {
|
||||
Mullvad(),
|
||||
Signal(),
|
||||
VLC(),
|
||||
// WhatsApp(), // As of 2023-03-20 this is unusable as the version on the webpage is months out of date
|
||||
WhatsApp(), // As of 2023-03-20 this is unusable as the version on the webpage is months out of date
|
||||
TelegramApp(),
|
||||
SteamMobile(),
|
||||
NeutronCode(),
|
||||
|
68
pubspec.lock
68
pubspec.lock
@ -5,18 +5,18 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: android_alarm_manager_plus
|
||||
sha256: c20d91a9096596f66274bf8172321c278f9cba8091638f80205fe66d31587fa5
|
||||
sha256: "82fb28c867c4b3dd7e9157728e46426b8916362f977dbba46b949210f00099f4"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.2"
|
||||
version: "3.0.3"
|
||||
android_intent_plus:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: android_intent_plus
|
||||
sha256: f72ae20bb37108694f442e7ae6acbd28b453ca62ce86842f6787b784355abfe6
|
||||
sha256: e1c62bb41c90e15083b7fb84dc327fe90396cc9c1445b55ff1082144fabfb4d9
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.2"
|
||||
version: "4.0.3"
|
||||
android_package_installer:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@ -46,10 +46,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: archive
|
||||
sha256: d4dc11707abb32ef756ab95678c0d6df54003d98277f7c9aeda14c48e7a38c2f
|
||||
sha256: "7e0d52067d05f2e0324268097ba723b71cb41ac8a6a2b24d1edf9c536b987b03"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.4.3"
|
||||
version: "3.4.6"
|
||||
args:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -118,10 +118,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: connectivity_plus
|
||||
sha256: "77a180d6938f78ca7d2382d2240eb626c0f6a735d0bfdce227d8ffb80f95c48b"
|
||||
sha256: "94d51c6f1299133a2baa4c5c3d2c11ec7d7fb4768dee5c52a56f7d7522fcf70e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.2"
|
||||
version: "5.0.0"
|
||||
connectivity_plus_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -142,10 +142,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: cross_file
|
||||
sha256: fd832b5384d0d6da4f6df60b854d33accaaeb63aa9e10e736a87381f08dee2cb
|
||||
sha256: "445db18de832dba8d851e287aff8ccf169bed30d2e94243cb54c7d2f1ed2142c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.3.3+5"
|
||||
version: "0.3.3+6"
|
||||
crypto:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -238,10 +238,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: file
|
||||
sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
|
||||
sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.1.4"
|
||||
version: "7.0.0"
|
||||
file_picker:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@ -291,10 +291,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_local_notifications
|
||||
sha256: "3002092e5b8ce2f86c3361422e52e6db6776c23ee21e0b2f71b892bf4259ef04"
|
||||
sha256: "6d11ea777496061e583623aaf31923f93a9409ef8fcaeeefdd6cd78bf4fe5bb3"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "15.1.1"
|
||||
version: "16.1.0"
|
||||
flutter_local_notifications_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -320,10 +320,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_markdown
|
||||
sha256: a10979814c5f4ddbe2b6143fba25d927599e21e3ba65b3862995960606fae78f
|
||||
sha256: "8afc9a6aa6d8e8063523192ba837149dbf3d377a37c0b0fc579149a1fbd4a619"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.6.17+3"
|
||||
version: "0.6.18"
|
||||
flutter_plugin_android_lifecycle:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -538,10 +538,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: permission_handler
|
||||
sha256: ad65ba9af42a3d067203641de3fd9f547ded1410bad3b84400c2b4899faede70
|
||||
sha256: "284a66179cabdf942f838543e10413246f06424d960c92ba95c84439154fcac8"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "11.0.0"
|
||||
version: "11.0.1"
|
||||
permission_handler_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -562,10 +562,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: permission_handler_platform_interface
|
||||
sha256: f2343e9fa9c22ae4fd92d4732755bfe452214e7189afcc097380950cf567b4b2
|
||||
sha256: "6760eb5ef34589224771010805bea6054ad28453906936f843a8cc4d3a55c4a4"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.11.5"
|
||||
version: "3.12.0"
|
||||
permission_handler_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -586,10 +586,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: platform
|
||||
sha256: ae68c7bfcd7383af3629daafb32fb4e8681c7154428da4febcff06200585f102
|
||||
sha256: "0a279f0707af40c890e80b1e9df8bb761694c074ba7e1d4ab1bc4b728e200b59"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.2"
|
||||
version: "3.1.3"
|
||||
plugin_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -634,10 +634,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: shared_preferences
|
||||
sha256: b7f41bad7e521d205998772545de63ff4e6c97714775902c199353f8bf1511ac
|
||||
sha256: "81429e4481e1ccfb51ede496e916348668fd0921627779233bd24cc3ff6abd02"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.1"
|
||||
version: "2.2.2"
|
||||
shared_preferences_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -658,10 +658,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_linux
|
||||
sha256: c2eb5bf57a2fe9ad6988121609e47d3e07bb3bdca5b6f8444e4cf302428a128a
|
||||
sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.1"
|
||||
version: "2.3.2"
|
||||
shared_preferences_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -682,10 +682,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_windows
|
||||
sha256: f763a101313bd3be87edffe0560037500967de9c394a714cd598d945517f694f
|
||||
sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.1"
|
||||
version: "2.3.2"
|
||||
shared_storage:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@ -879,18 +879,18 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: webview_flutter
|
||||
sha256: "82f6787d5df55907aa01e49bd9644f4ed1cc82af7a8257dd9947815959d2e755"
|
||||
sha256: c1ab9b81090705c6069197d9fdc1625e587b52b8d70cdde2339d177ad0dbb98e
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.2.4"
|
||||
version: "4.4.1"
|
||||
webview_flutter_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: webview_flutter_android
|
||||
sha256: ddc167c6676f57c8b367d19fcbee267d6dc6adf81bd6c3cb87981d30746e0a6d
|
||||
sha256: b0cd33dd7d3dd8e5f664e11a19e17ba12c352647269921a3b568406b001f1dff
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.10.1"
|
||||
version: "3.12.0"
|
||||
webview_flutter_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -903,10 +903,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: webview_flutter_wkwebview
|
||||
sha256: "485af05f2c5f83c7f78c20e236b170ad02df7153b299ae9917345be43871d29f"
|
||||
sha256: "30b9af6bdd457b44c08748b9190d23208b5165357cc2eb57914fee1366c42974"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.8.0"
|
||||
version: "3.9.1"
|
||||
win32:
|
||||
dependency: transitive
|
||||
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
|
||||
# In Windows, build-name is used as the major, minor, and patch parts
|
||||
# of the product and file versions while build-number is used as the build suffix.
|
||||
version: 0.14.21+213 # When changing this, update the tag in main() accordingly
|
||||
version: 0.14.27+219 # When changing this, update the tag in main() accordingly
|
||||
|
||||
environment:
|
||||
sdk: '>=3.0.0 <4.0.0'
|
||||
@ -38,7 +38,7 @@ dependencies:
|
||||
cupertino_icons: ^1.0.5
|
||||
path_provider: ^2.0.11
|
||||
flutter_fgbg: ^0.3.0 # Try removing reliance on this
|
||||
flutter_local_notifications: ^15.1.0+1
|
||||
flutter_local_notifications: ^16.1.0
|
||||
provider: ^6.0.3
|
||||
http: ^1.0.0
|
||||
webview_flutter: ^4.0.0
|
||||
@ -64,7 +64,7 @@ dependencies:
|
||||
flutter_markdown: ^0.6.14
|
||||
flutter_archive: ^5.0.0
|
||||
hsluv: ^1.1.3
|
||||
connectivity_plus: ^4.0.2
|
||||
connectivity_plus: ^5.0.0
|
||||
shared_storage: ^0.8.0
|
||||
|
||||
dev_dependencies:
|
||||
|
Reference in New Issue
Block a user