mirror of
				https://github.com/ImranR98/Obtainium.git
				synced 2025-10-29 04:23:29 +01:00 
			
		
		
		
	Compare commits
	
		
			70 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 36db226024 | ||
|  | 6fbdf62afa | ||
|  | 9344ebbb06 | ||
|  | 51b66ab983 | ||
|  | 7f2a9b6fa5 | ||
|  | ac6bc4d786 | ||
|  | acd30b516c | ||
|  | 5bc9234101 | ||
|  | 80d15f5232 | ||
|  | eb7c2a9fc4 | ||
|  | 40175468b2 | ||
|  | 814b5a71bd | ||
|  | 38a1e43116 | ||
|  | 5064b78c79 | ||
|  | 767350e4e3 | ||
|  | 4caae51904 | ||
|  | 83616b7a79 | ||
|  | 52b2d0868c | ||
|  | 94f629859e | ||
|  | 773d3455ae | ||
|  | 919ab16528 | ||
|  | 268b89eaf6 | ||
|  | 9c9a264e39 | ||
|  | e1e612455a | ||
|  | e191d75300 | ||
|  | fce2a2f15c | ||
|  | dd8acd9451 | ||
|  | 2d5676f13d | ||
|  | dfbf9e925c | ||
|  | e44f77a68a | ||
|  | cc373c8d7f | ||
|  | 2ad88bf3ca | ||
|  | b1f9375bb1 | ||
|  | 0e14e17236 | ||
|  | fc541837ef | ||
|  | da0b1d0684 | ||
|  | 3fd89e8567 | ||
|  | 8cab348eed | ||
|  | 6bd821985f | ||
|  | 1f2efe435f | ||
|  | 8276a809a5 | ||
|  | 5fe1a8a370 | ||
|  | 58710093ba | ||
|  | ac6f8c456d | ||
|  | 905461c242 | ||
|  | e3fcf6e0b5 | ||
|  | 903fad5158 | ||
|  | 1de93e827a | ||
|  | a5040aa0c1 | ||
|  | 9f7c4e23d5 | ||
|  | 876f67aacb | ||
|  | 2ed2c2c5f9 | ||
|  | 7f35589d49 | ||
|  | 9d5ce75e27 | ||
|  | 09f1f27fa8 | ||
|  | ea239ffa3a | ||
|  | 07ef86ae75 | ||
|  | c670fce652 | ||
|  | ba8ef7e5b0 | ||
|  | 0ec3fb0064 | ||
|  | c1c06b3f9c | ||
|  | d121463bad | ||
|  | 862e85f882 | ||
|  | 5e0333c4c8 | ||
|  | efb75afb9b | ||
|  | b4510e10a7 | ||
|  | 25233f3259 | ||
|  | cff6b86997 | ||
|  | e4103c8352 | ||
|  | 87c66b4d09 | 
							
								
								
									
										2
									
								
								.flutter
									
									
									
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								.flutter
									
									
									
									
									
								
							 Submodule .flutter updated: 2663184aa7...dec2ee5c1f
									
								
							
							
								
								
									
										38
									
								
								.github/workflows/release.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										38
									
								
								.github/workflows/release.yml
									
									
									
									
										vendored
									
									
								
							| @@ -6,9 +6,6 @@ on: | |||||||
|       beta: |       beta: | ||||||
|         type: boolean |         type: boolean | ||||||
|         description: Is beta? |         description: Is beta? | ||||||
|       draft: |  | ||||||
|         type: boolean |  | ||||||
|         description: Is draft? |  | ||||||
|  |  | ||||||
| jobs: | jobs: | ||||||
|   build: |   build: | ||||||
| @@ -27,13 +24,6 @@ jobs: | |||||||
|         id: flutter_doctor |         id: flutter_doctor | ||||||
|         run: | |         run: | | ||||||
|           flutter doctor -v |           flutter doctor -v | ||||||
|            |  | ||||||
|       - 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: Check submodule |       - name: Check submodule | ||||||
|         id: check_submodule |         id: check_submodule | ||||||
| @@ -57,24 +47,13 @@ jobs: | |||||||
|           for file in build/app/outputs/flutter-apk/app-*normal*.apk*; do mv "$file" "${file//-normal/}"; done |           for file in build/app/outputs/flutter-apk/app-*normal*.apk*; do mv "$file" "${file//-normal/}"; done | ||||||
|           flutter build apk --flavor fdroid -t lib/main_fdroid.dart && flutter build apk --split-per-abi --flavor fdroid -t lib/main_fdroid.dart |           flutter build apk --flavor fdroid -t lib/main_fdroid.dart && flutter build apk --split-per-abi --flavor fdroid -t lib/main_fdroid.dart | ||||||
|           rm ./build/app/outputs/flutter-apk/*.sha1 |           rm ./build/app/outputs/flutter-apk/*.sha1 | ||||||
|  |           cp ./sign.sh ./build/app/outputs/flutter-apk/ | ||||||
|           ls -l ./build/app/outputs/flutter-apk/ |           ls -l ./build/app/outputs/flutter-apk/ | ||||||
|          |  | ||||||
|       - name: Sign APKs |       - name: Save Unsigned APKs as Action Artifacts | ||||||
|         env: |         uses: actions/upload-artifact@v4 | ||||||
|           KEYSTORE_BASE64: ${{ secrets.KEYSTORE_BASE64 }} |         with: | ||||||
|           KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }} |           path: build/app/outputs/flutter-apk/* | ||||||
|           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/$(ls ${ANDROID_HOME}/build-tools/ | tail -1)/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: Create Tag |       - name: Create Tag | ||||||
|         uses: mathieudutour/github-tag-action@v6.1 |         uses: mathieudutour/github-tag-action@v6.1 | ||||||
| @@ -83,12 +62,11 @@ jobs: | |||||||
|           custom_tag: "${{ steps.extract_version.outputs.tag }}" |           custom_tag: "${{ steps.extract_version.outputs.tag }}" | ||||||
|           tag_prefix: "" |           tag_prefix: "" | ||||||
|        |        | ||||||
|       - name: Create Release And Upload APKs |       - name: Create Draft Release | ||||||
|         uses: ncipollo/release-action@v1 |         uses: ncipollo/release-action@v1 | ||||||
|         with: |         with: | ||||||
|           token: ${{ secrets.GH_ACCESS_TOKEN }} |           token: ${{ secrets.GH_ACCESS_TOKEN }} | ||||||
|           tag: "${{ steps.extract_version.outputs.tag }}" |           tag: "${{ steps.extract_version.outputs.tag }}" | ||||||
|           prerelease: "${{ steps.extract_version.outputs.beta }}" |           prerelease: "${{ steps.extract_version.outputs.beta }}" | ||||||
|           draft: "${{ inputs.draft }}" |           draft: "true" | ||||||
|           artifacts: ./build/app/outputs/flutter-apk/*-release*.apk* |  | ||||||
|           generateReleaseNotes: true |           generateReleaseNotes: true | ||||||
|   | |||||||
							
								
								
									
										13
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								README.md
									
									
									
									
									
								
							| @@ -7,10 +7,12 @@ Get Android app updates straight from the source. | |||||||
| Obtainium allows you to install and update apps directly from their releases pages, and receive notifications when new releases are made available. | Obtainium allows you to install and update apps directly from their releases pages, and receive notifications when new releases are made available. | ||||||
|  |  | ||||||
| More info: | More info: | ||||||
| - [Obtainium/wiki](https://github.com/ImranR98/Obtainium/wiki) | - [Obtainium Wiki](https://github.com/ImranR98/Obtainium/wiki) | ||||||
| - [AppVerifier](https://github.com/soupslurpr/AppVerifier) - App verification tool (recommended, integrates with Obtainium) | - [AppVerifier](https://github.com/soupslurpr/AppVerifier) - App verification tool (recommended, integrates with Obtainium) | ||||||
| - [apps.obtainium.imranr.dev](https://apps.obtainium.imranr.dev/) - Crowdsourced app configurations | - [apps.obtainium.imranr.dev](https://apps.obtainium.imranr.dev/) - Crowdsourced app configurations ([repository](https://github.com/ImranR98/apps.obtainium.imranr.dev)) | ||||||
| - [Side Of Burritos - You should use this instead of F-Droid | How to use app RSS feed](https://youtu.be/FFz57zNR_M0) - Original motivation for this app | - [Side Of Burritos - You should use this instead of F-Droid | How to use app RSS feed](https://youtu.be/FFz57zNR_M0) - Original motivation for this app | ||||||
|  | - [Website](https://obtainium.imranr.dev) ([repository](https://github.com/ImranR98/obtainium.imranr.dev)) | ||||||
|  | - [Source code](https://github.com/ImranR98/Obtainium) | ||||||
|  |  | ||||||
| Currently supported App sources: | Currently supported App sources: | ||||||
| - Open Source - General: | - Open Source - General: | ||||||
| @@ -30,7 +32,6 @@ Currently supported App sources: | |||||||
|   - Jenkins Jobs |   - Jenkins Jobs | ||||||
|   - [APKMirror](https://apkmirror.com/) (Track-Only) |   - [APKMirror](https://apkmirror.com/) (Track-Only) | ||||||
| - Open Source - App-Specific: | - Open Source - App-Specific: | ||||||
|   - [Signal](https://signal.org/) |  | ||||||
|   - [VLC](https://videolan.org/) |   - [VLC](https://videolan.org/) | ||||||
| - Other - App-Specific: | - Other - App-Specific: | ||||||
|   - [WhatsApp](https://whatsapp.com) |   - [WhatsApp](https://whatsapp.com) | ||||||
| @@ -59,7 +60,11 @@ Or, contribute some configurations to the website by creating a PR at [this repo | |||||||
|     alt="Get it on F-Droid" |     alt="Get it on F-Droid" | ||||||
|     height="80">](https://f-droid.org/packages/dev.imranr.obtainium.fdroid/) |     height="80">](https://f-droid.org/packages/dev.imranr.obtainium.fdroid/) | ||||||
|       |       | ||||||
| [PGP Public Key](https://keyserver.ubuntu.com/pks/lookup?search=contact%40imranr.dev&fingerprint=on&op=index) | Verification info: | ||||||
|  | - Package ID: `dev.imranr.obtainium` | ||||||
|  | - SHA-256 Hash of Signing Certificate: `B3:53:60:1F:6A:1D:5F:D6:60:3A:E2:F5:0B:E8:0C:F3:01:36:7B:86:B6:AB:8B:1F:66:24:3D:A9:6C:D5:73:62` | ||||||
|  |   - Note: The above signature is also valid for the F-Droid flavour of Obtainium, thanks to [reproducible builds](https://f-droid.org/docs/Reproducible_Builds/). | ||||||
|  | - [PGP Public Key](https://keyserver.ubuntu.com/pks/lookup?search=contact%40imranr.dev&fingerprint=on&op=index) (to verify APK hashes) | ||||||
|  |  | ||||||
| ## Limitations | ## Limitations | ||||||
| - For some sources, data is gathered using Web scraping and can easily break due to changes in website design. In such cases, more reliable methods may be unavailable. | - For some sources, data is gathered using Web scraping and can easily break due to changes in website design. In such cases, more reliable methods may be unavailable. | ||||||
|   | |||||||
| @@ -81,6 +81,10 @@ android { | |||||||
|         release { |         release { | ||||||
|             signingConfig signingConfigs.release |             signingConfig signingConfigs.release | ||||||
|         } |         } | ||||||
|  |         debug { | ||||||
|  |             applicationIdSuffix = ".debug" | ||||||
|  |             versionNameSuffix = "-debug" | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								android/app/src/debug/res/values/string.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								android/app/src/debug/res/values/string.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <resources> | ||||||
|  |     <string name="label">Obtainium Debug</string> | ||||||
|  | </resources> | ||||||
| @@ -2,7 +2,7 @@ | |||||||
|     xmlns:tools="http://schemas.android.com/tools" |     xmlns:tools="http://schemas.android.com/tools" | ||||||
|     package="dev.imranr.obtainium"> |     package="dev.imranr.obtainium"> | ||||||
|     <application |     <application | ||||||
|         android:label="Obtainium" |         android:label="@string/label" | ||||||
|         android:name="${applicationName}" |         android:name="${applicationName}" | ||||||
|         android:icon="@mipmap/ic_launcher" |         android:icon="@mipmap/ic_launcher" | ||||||
|         android:requestLegacyExternalStorage="true" |         android:requestLegacyExternalStorage="true" | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								android/app/src/main/res/values/string.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								android/app/src/main/res/values/string.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <resources> | ||||||
|  |     <string name="label">Obtainium</string> | ||||||
|  | </resources> | ||||||
| @@ -179,8 +179,6 @@ | |||||||
|     "appWithIdOrNameNotFound": "Nije pronađena aplikacija s tim ID-om ili imenom", |     "appWithIdOrNameNotFound": "Nije pronađena aplikacija s tim ID-om ili imenom", | ||||||
|     "reposHaveMultipleApps": "Repo-i mogu sadržavati više aplikacija", |     "reposHaveMultipleApps": "Repo-i mogu sadržavati više aplikacija", | ||||||
|     "fdroidThirdPartyRepo": "F-Droid Repo treće strane", |     "fdroidThirdPartyRepo": "F-Droid Repo treće strane", | ||||||
|     "steamMobile": "Steam Mobile", |  | ||||||
|     "steamChat": "Razgovor na Steamu (chat)", |  | ||||||
|     "install": "Instaliraj", |     "install": "Instaliraj", | ||||||
|     "markInstalled": "Označi kao instalirano", |     "markInstalled": "Označi kao instalirano", | ||||||
|     "update": "Nadogradi", |     "update": "Nadogradi", | ||||||
| @@ -258,6 +256,7 @@ | |||||||
|     "intermediateLink": "Intermediate veza", |     "intermediateLink": "Intermediate veza", | ||||||
|     "exemptFromBackgroundUpdates": "Izuzmi iz ažuriranja u pozadini (ako su uključeni)", |     "exemptFromBackgroundUpdates": "Izuzmi iz ažuriranja u pozadini (ako su uključeni)", | ||||||
|     "bgUpdatesOnWiFiOnly": "Isključite ažuriranje u pozadini kada niste na WiFi-ju", |     "bgUpdatesOnWiFiOnly": "Isključite ažuriranje u pozadini kada niste na WiFi-ju", | ||||||
|  |     "bgUpdatesWhileChargingOnly": "Disable background updates when not charging", | ||||||
|     "autoSelectHighestVersionCode": "Automatski izaberite najveću (verziju) versionCode APK-a", |     "autoSelectHighestVersionCode": "Automatski izaberite najveću (verziju) versionCode APK-a", | ||||||
|     "versionExtractionRegEx": "RegEx ekstrakcija verzije", |     "versionExtractionRegEx": "RegEx ekstrakcija verzije", | ||||||
|     "trimVersionString": "Trim Version String With RegEx", |     "trimVersionString": "Trim Version String With RegEx", | ||||||
|   | |||||||
| @@ -179,8 +179,6 @@ | |||||||
|     "appWithIdOrNameNotFound": "Žádná aplikace s tímto ID nebo názvem nebyla nalezena", |     "appWithIdOrNameNotFound": "Žádná aplikace s tímto ID nebo názvem nebyla nalezena", | ||||||
|     "reposHaveMultipleApps": "Repozitáře mohou obsahovat více aplikací", |     "reposHaveMultipleApps": "Repozitáře mohou obsahovat více aplikací", | ||||||
|     "fdroidThirdPartyRepo": "F-Droid repozitář třetí strany", |     "fdroidThirdPartyRepo": "F-Droid repozitář třetí strany", | ||||||
|     "steamMobile": "Steam Mobile", |  | ||||||
|     "steamChat": "Steam Chat", |  | ||||||
|     "install": "Nainstalujte", |     "install": "Nainstalujte", | ||||||
|     "markInstalled": "Označit jako nainstalovaný", |     "markInstalled": "Označit jako nainstalovaný", | ||||||
|     "update": "Aktualizovat", |     "update": "Aktualizovat", | ||||||
| @@ -258,6 +256,7 @@ | |||||||
|     "intermediateLink": "Připojený odkaz", |     "intermediateLink": "Připojený odkaz", | ||||||
|     "exemptFromBackgroundUpdates": "Vyloučit z aktualizací na pozadí (je-li povoleno)", |     "exemptFromBackgroundUpdates": "Vyloučit z aktualizací na pozadí (je-li povoleno)", | ||||||
|     "bgUpdatesOnWiFiOnly": "Deaktivovat aktualizace na pozadí, pokud není k dispozici Wi-Fi", |     "bgUpdatesOnWiFiOnly": "Deaktivovat aktualizace na pozadí, pokud není k dispozici Wi-Fi", | ||||||
|  |     "bgUpdatesWhileChargingOnly": "Zakázat aktualizace na pozadí, když se nenabíjí", | ||||||
|     "autoSelectHighestVersionCode": "Automaticky vybrat nejvyšší verzi APK", |     "autoSelectHighestVersionCode": "Automaticky vybrat nejvyšší verzi APK", | ||||||
|     "versionExtractionRegEx": "Extrakce verze pomocí RegEx", |     "versionExtractionRegEx": "Extrakce verze pomocí RegEx", | ||||||
|     "trimVersionString": "Oříznutí řetězce verze pomocí příkazu RegEx", |     "trimVersionString": "Oříznutí řetězce verze pomocí příkazu RegEx", | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| { | { | ||||||
|     "invalidURLForSource": "Ikke et gyldigt {} App-URL", |     "invalidURLForSource": "Ikke et gyldigt {} app-URL", | ||||||
|     "noReleaseFound": "Kunne ikke finde en passende udgivelse", |     "noReleaseFound": "Kunne ikke finde en passende udgivelse", | ||||||
|     "noVersionFound": "Kunne ikke afgøre udgivelsesversion", |     "noVersionFound": "Kunne ikke afgøre udgivelsesversion", | ||||||
|     "urlMatchesNoSource": "URL'en matcher ikke en kendt kilde", |     "urlMatchesNoSource": "URL'en matcher ikke en kendt kilde", | ||||||
| @@ -28,7 +28,7 @@ | |||||||
|     "githubStarredRepos": "Stjernemarkeret GitHub-repos", |     "githubStarredRepos": "Stjernemarkeret GitHub-repos", | ||||||
|     "uname": "Brugernavn", |     "uname": "Brugernavn", | ||||||
|     "wrongArgNum": "Forkert antal argumenter angivet", |     "wrongArgNum": "Forkert antal argumenter angivet", | ||||||
|     "xIsTrackOnly": "{} kan kun følges", |     "xIsTrackOnly": "{} er 'Følg Kun'", | ||||||
|     "source": "Kilde", |     "source": "Kilde", | ||||||
|     "app": "App", |     "app": "App", | ||||||
|     "appsFromSourceAreTrackOnly": "Apps fra denne kilde er 'Følg Kun'.", |     "appsFromSourceAreTrackOnly": "Apps fra denne kilde er 'Følg Kun'.", | ||||||
| @@ -36,14 +36,14 @@ | |||||||
|     "trackOnlyAppDescription": "Appen tjekkes for opdateringer, men Obtainium kan ikke hente eller installere den.", |     "trackOnlyAppDescription": "Appen tjekkes for opdateringer, men Obtainium kan ikke hente eller installere den.", | ||||||
|     "cancelled": "Annulleret", |     "cancelled": "Annulleret", | ||||||
|     "appAlreadyAdded": "Appen er allerede tilføjet", |     "appAlreadyAdded": "Appen er allerede tilføjet", | ||||||
|     "alreadyUpToDateQuestion": "Appen er allerede opdateret?", |     "alreadyUpToDateQuestion": "Er appen allerede opdateret?", | ||||||
|     "addApp": "Tilføj app", |     "addApp": "Tilføj app", | ||||||
|     "appSourceURL": "URL til app-kilde", |     "appSourceURL": "URL til app-kilde", | ||||||
|     "error": "Fejl", |     "error": "Fejl", | ||||||
|     "add": "Tilføj", |     "add": "Tilføj", | ||||||
|     "searchSomeSourcesLabel": "Søg (kun visse kilder)", |     "searchSomeSourcesLabel": "Søg (kun visse kilder)", | ||||||
|     "search": "Søg", |     "search": "Søg", | ||||||
|     "additionalOptsFor": "Yderligere indstillinger for {}", |     "additionalOptsFor": "Flere indstillinger for {}", | ||||||
|     "supportedSources": "Understøttede kilder", |     "supportedSources": "Understøttede kilder", | ||||||
|     "trackOnlyInBrackets": "(Følg Kun)", |     "trackOnlyInBrackets": "(Følg Kun)", | ||||||
|     "searchableInBrackets": "(Kan Søges)", |     "searchableInBrackets": "(Kan Søges)", | ||||||
| @@ -51,7 +51,7 @@ | |||||||
|     "noApps": "Ingen apps", |     "noApps": "Ingen apps", | ||||||
|     "noAppsForFilter": "Ingen apps til filter", |     "noAppsForFilter": "Ingen apps til filter", | ||||||
|     "byX": "Af {}", |     "byX": "Af {}", | ||||||
|     "percentProgress": "Fremskridt: {}%", |     "percentProgress": "Hentning: {}%", | ||||||
|     "pleaseWait": "Vent venligst", |     "pleaseWait": "Vent venligst", | ||||||
|     "updateAvailable": "Opdatering tilgængelig", |     "updateAvailable": "Opdatering tilgængelig", | ||||||
|     "notInstalled": "Ikke installeret", |     "notInstalled": "Ikke installeret", | ||||||
| @@ -74,14 +74,14 @@ | |||||||
|     "pinToTop": "Fastgør til toppen", |     "pinToTop": "Fastgør til toppen", | ||||||
|     "unpinFromTop": "Frigør fra toppen", |     "unpinFromTop": "Frigør fra toppen", | ||||||
|     "resetInstallStatusForSelectedAppsQuestion": "Nulstil installationsstatus for valgte apps?", |     "resetInstallStatusForSelectedAppsQuestion": "Nulstil installationsstatus for valgte apps?", | ||||||
|     "installStatusOfXWillBeResetExplanation": "Installationsstatus for alle valgte apps nulstilles.\n\nDette kan hjælpe, når den app-version, der vises i Obtainium, er forkert grundet mislykkede opdateringer eller andre problemer.", |     "installStatusOfXWillBeResetExplanation": "Installationsstatus for alle valgte apps nulstilles.\n\nDette kan hjælpe, når en forkert app-version vises i Obtainium grundet mislykkede opdateringer eller andre problemer.", | ||||||
|     "customLinkMessage": "Disse links virker på enheder med Obtainium installeret", |     "customLinkMessage": "Disse links virker på enheder med Obtainium installeret", | ||||||
|     "shareAppConfigLinks": "Del app-konfiguration som HTML-link", |     "shareAppConfigLinks": "Del app-konfiguration som HTML-link", | ||||||
|     "shareSelectedAppURLs": "Del valgte app-URL'er", |     "shareSelectedAppURLs": "Del valgte app-URL'er", | ||||||
|     "resetInstallStatus": "Nulstil installationsstatus", |     "resetInstallStatus": "Nulstil installationsstatus", | ||||||
|     "more": "Mere", |     "more": "Mere", | ||||||
|     "removeOutdatedFilter": "Fjern forældet app-filter", |     "removeOutdatedFilter": "Fjern forældet app-filter", | ||||||
|     "showOutdatedOnly": "Vis kun forældet apps", |     "showOutdatedOnly": "Vis kun forældede apps", | ||||||
|     "filter": "Filtrer", |     "filter": "Filtrer", | ||||||
|     "filterApps": "Filtrer Apps", |     "filterApps": "Filtrer Apps", | ||||||
|     "appName": "Appnavn", |     "appName": "Appnavn", | ||||||
| @@ -114,7 +114,7 @@ | |||||||
|     "light": "Lys", |     "light": "Lys", | ||||||
|     "followSystem": "Følg system", |     "followSystem": "Følg system", | ||||||
|     "followSystemThemeExplanation": "Det er kun muligt at følge systemtemaet ved brug af tredjepartsapplikationer", |     "followSystemThemeExplanation": "Det er kun muligt at følge systemtemaet ved brug af tredjepartsapplikationer", | ||||||
|     "useBlackTheme": "Brug rent sort, mørkt tema", |     "useBlackTheme": "Brug rent sort mørkt tema", | ||||||
|     "appSortBy": "Sortér apps efter:", |     "appSortBy": "Sortér apps efter:", | ||||||
|     "authorName": "Udvikler/Navn", |     "authorName": "Udvikler/Navn", | ||||||
|     "nameAuthor": "Navn/Udvikler", |     "nameAuthor": "Navn/Udvikler", | ||||||
| @@ -125,8 +125,8 @@ | |||||||
|     "bgUpdateCheckInterval": "Kontrolinterval for baggrundsopdatering", |     "bgUpdateCheckInterval": "Kontrolinterval for baggrundsopdatering", | ||||||
|     "neverManualOnly": "Aldrig - Kun manuelt", |     "neverManualOnly": "Aldrig - Kun manuelt", | ||||||
|     "appearance": "Udseende", |     "appearance": "Udseende", | ||||||
|     "showWebInAppView": "Vis kildewebsiden i appvisning", |     "showWebInAppView": "Vis kildewebsiden i app-visning", | ||||||
|     "pinUpdates": "Fastgør opdateringer til toppen af appvisning", |     "pinUpdates": "Fastgør opdateringer øverst i app-visning", | ||||||
|     "updates": "Opdateringer", |     "updates": "Opdateringer", | ||||||
|     "sourceSpecific": "Kildespecifik", |     "sourceSpecific": "Kildespecifik", | ||||||
|     "appSource": "App-kilde", |     "appSource": "App-kilde", | ||||||
| @@ -138,12 +138,12 @@ | |||||||
|     "obtainiumExportHyphenatedLowercase": "obtainium-eksport", |     "obtainiumExportHyphenatedLowercase": "obtainium-eksport", | ||||||
|     "pickAnAPK": "Vælg en APK", |     "pickAnAPK": "Vælg en APK", | ||||||
|     "appHasMoreThanOnePackage": "{} har mere end én pakke:", |     "appHasMoreThanOnePackage": "{} har mere end én pakke:", | ||||||
|     "deviceSupportsXArch": "Din enhed understøtter {} CPU-arkitekturen.", |     "deviceSupportsXArch": "Din enhed understøtter CPU-arkitekturen {}.", | ||||||
|     "deviceSupportsFollowingArchs": "Din enhed understøtter følgende CPU-arkitekturer:", |     "deviceSupportsFollowingArchs": "Din enhed understøtter følgende CPU-arkitekturer:", | ||||||
|     "warning": "Advarsel", |     "warning": "Advarsel", | ||||||
|     "sourceIsXButPackageFromYPrompt": "App-kilden er '{}', men udgivelsespakken kommer fra '{}'. Fortsæt?", |     "sourceIsXButPackageFromYPrompt": "App-kilden er '{}', men udgivelsespakken kommer fra '{}'. Fortsæt?", | ||||||
|     "updatesAvailable": "Opdateringer tilgængelige", |     "updatesAvailable": "Opdateringer tilgængelige", | ||||||
|     "updatesAvailableNotifDescription": "Underretter brugeren om, at opdateringer er tilgængelige for en eller flere apps, der spores af Obtainium", |     "updatesAvailableNotifDescription": "Underretter brugeren om tilgængelige opdateringer for en eller flere apps, som Obtainium følger", | ||||||
|     "noNewUpdates": "Ingen nye opdateringer.", |     "noNewUpdates": "Ingen nye opdateringer.", | ||||||
|     "xHasAnUpdate": "{} har en opdatering.", |     "xHasAnUpdate": "{} har en opdatering.", | ||||||
|     "appsUpdated": "Apps opdateret", |     "appsUpdated": "Apps opdateret", | ||||||
| @@ -152,19 +152,19 @@ | |||||||
|     "xWasUpdatedToY": "{} blev opdateret til {}.", |     "xWasUpdatedToY": "{} blev opdateret til {}.", | ||||||
|     "xWasNotUpdatedToY": "Kunne ikke opdatere {} til {}.", |     "xWasNotUpdatedToY": "Kunne ikke opdatere {} til {}.", | ||||||
|     "errorCheckingUpdates": "Fejl ved tjek for opdateringer", |     "errorCheckingUpdates": "Fejl ved tjek for opdateringer", | ||||||
|     "errorCheckingUpdatesNotifDescription": "En meddelelse, der vises, når opdateringstjek i baggrunden mislykkes", |     "errorCheckingUpdatesNotifDescription": "En meddelelse, der vises, opdateringstjek i baggrunden mislykkes", | ||||||
|     "appsRemoved": "Apps fjernet", |     "appsRemoved": "Apps fjernet", | ||||||
|     "appsRemovedNotifDescription": "Underretter brugeren om, at en eller flere apps blev fjernet grundet fejl under indlæsning af dem", |     "appsRemovedNotifDescription": "Underretter brugeren om, at en eller flere apps blev fjernet grundet fejl under indlæsning af dem", | ||||||
|     "xWasRemovedDueToErrorY": "{} blev fjernet grundet denne fejl: {}", |     "xWasRemovedDueToErrorY": "{} blev fjernet grundet denne fejl: {}", | ||||||
|     "completeAppInstallation": "Færdiggør app-installation", |     "completeAppInstallation": "Færdiggør app-installation", | ||||||
|     "obtainiumMustBeOpenToInstallApps": "Obtainium skal være åben for at installere apps", |     "obtainiumMustBeOpenToInstallApps": "Obtainium skal være åben for at installere apps", | ||||||
|     "completeAppInstallationNotifDescription": "Beder brugeren om at vende tilbage til Obtainium for at afslutte installationen af en app", |     "completeAppInstallationNotifDescription": "Beder brugeren om at gå tilbage til Obtainium for at færdiggøre installation af en app", | ||||||
|     "checkingForUpdates": "Tjekker for opdateringer", |     "checkingForUpdates": "Tjekker for opdateringer", | ||||||
|     "checkingForUpdatesNotifDescription": "Kortvarig meddelelse, der vises ved tjek for opdateringer", |     "checkingForUpdatesNotifDescription": "Kortvarig meddelelse ved tjek for opdateringer", | ||||||
|     "pleaseAllowInstallPerm": "Tillad venligst Obtainium at installere apps", |     "pleaseAllowInstallPerm": "Tillad venligst Obtainium at installere apps", | ||||||
|     "trackOnly": "Følg Kun", |     "trackOnly": "Følg Kun", | ||||||
|     "errorWithHttpStatusCode": "Fejl {}", |     "errorWithHttpStatusCode": "Fejl {}", | ||||||
|     "versionCorrectionDisabled": "Versionskorrigering deaktiveret (plugin ser ikke ud til at virke)", |     "versionCorrectionDisabled": "Versionskorrektion deaktiveret (plugin ser ikke ud til at virke)", | ||||||
|     "unknown": "Ukendt", |     "unknown": "Ukendt", | ||||||
|     "none": "Ingen", |     "none": "Ingen", | ||||||
|     "never": "Aldrig", |     "never": "Aldrig", | ||||||
| @@ -174,25 +174,23 @@ | |||||||
|     "remove": "Fjern", |     "remove": "Fjern", | ||||||
|     "yesMarkUpdated": "Ja, markér som opdateret", |     "yesMarkUpdated": "Ja, markér som opdateret", | ||||||
|     "fdroid": "F-Droid Officiel", |     "fdroid": "F-Droid Officiel", | ||||||
|     "appIdOrName": "App-ID eller navn", |     "appIdOrName": "App-ID eller -navn", | ||||||
|     "appId": "App-ID", |     "appId": "App-ID", | ||||||
|     "appWithIdOrNameNotFound": "Ingen app med det ID eller navn blev fundet", |     "appWithIdOrNameNotFound": "Ingen app med det ID eller navn blev fundet", | ||||||
|     "reposHaveMultipleApps": "Repos kan indeholde flere apps", |     "reposHaveMultipleApps": "Repos kan indeholde flere apps", | ||||||
|     "fdroidThirdPartyRepo": "F-Droid Tredjeparts-repo", |     "fdroidThirdPartyRepo": "F-Droid Tredjeparts-repo", | ||||||
|     "steamMobile": "Steam Mobil", |  | ||||||
|     "steamChat": "Steam Chat", |  | ||||||
|     "install": "Installer", |     "install": "Installer", | ||||||
|     "markInstalled": "Markér som installeret", |     "markInstalled": "Markér som installeret", | ||||||
|     "update": "Opdater", |     "update": "Opdater", | ||||||
|     "markUpdated": "Markér som opdateret", |     "markUpdated": "Markér som opdateret", | ||||||
|     "additionalOptions": "Yderligere indstillinger", |     "additionalOptions": "Flere indstillinger", | ||||||
|     "disableVersionDetection": "Deaktivér versionsregistrering", |     "disableVersionDetection": "Deaktivér versionsregistrering", | ||||||
|     "noVersionDetectionExplanation": "Denne indstilling bør kun bruges til apps, hvor versionsregistrering ikke virker korrekt.", |     "noVersionDetectionExplanation": "Denne indstilling bør kun bruges til apps, hvor versionsregistrering ikke virker korrekt.", | ||||||
|     "downloadingX": "Henter {}", |     "downloadingX": "Henter {}", | ||||||
|     "downloadX": "Hent {}", |     "downloadX": "Hent {}", | ||||||
|     "downloadedX": "Hentede {}", |     "downloadedX": "Hentede {}", | ||||||
|     "releaseAsset": "Udgivelsesressource", |     "releaseAsset": "Udgivelsesressource", | ||||||
|     "downloadNotifDescription": "Underretter brugeren om fremskridt i hentning af en app", |     "downloadNotifDescription": "Underretter brugeren om status på hentning af en app", | ||||||
|     "noAPKFound": "Ingen APK fundet", |     "noAPKFound": "Ingen APK fundet", | ||||||
|     "noVersionDetection": "Ingen versionsregistrering", |     "noVersionDetection": "Ingen versionsregistrering", | ||||||
|     "categorize": "Kategoriser", |     "categorize": "Kategoriser", | ||||||
| @@ -224,10 +222,10 @@ | |||||||
|     "groupByCategory": "Gruppér efter kategori", |     "groupByCategory": "Gruppér efter kategori", | ||||||
|     "autoApkFilterByArch": "Forsøg at filtrere APK'er efter CPU-arkitektur, hvis muligt", |     "autoApkFilterByArch": "Forsøg at filtrere APK'er efter CPU-arkitektur, hvis muligt", | ||||||
|     "overrideSource": "Tilsidesæt kilde", |     "overrideSource": "Tilsidesæt kilde", | ||||||
|     "dontShowAgain": "Vis ikke denne igen", |     "dontShowAgain": "Vis ikke igen", | ||||||
|     "dontShowTrackOnlyWarnings": "Vis ikke 'Følg Kun'-advarsler", |     "dontShowTrackOnlyWarnings": "Vis ikke 'Følg Kun'-advarsler", | ||||||
|     "dontShowAPKOriginWarnings": "Vis ikke advarsler om APK-oprindelse", |     "dontShowAPKOriginWarnings": "Vis ikke advarsler om APK-oprindelse", | ||||||
|     "moveNonInstalledAppsToBottom": "Flyt ikke-installerede apps til bunden af appvisning", |     "moveNonInstalledAppsToBottom": "Flyt ikke-installerede apps nederst i app-visning", | ||||||
|     "gitlabPATLabel": "GitLab Personlig Adgangstoken", |     "gitlabPATLabel": "GitLab Personlig Adgangstoken", | ||||||
|     "about": "Om", |     "about": "Om", | ||||||
|     "requiresCredentialsInSettings": "{} kræver yderligere legitimation (i Indstillinger)", |     "requiresCredentialsInSettings": "{} kræver yderligere legitimation (i Indstillinger)", | ||||||
| @@ -240,43 +238,44 @@ | |||||||
|     "reversePageTransitions": "Omvendte sideovergangsanimationer", |     "reversePageTransitions": "Omvendte sideovergangsanimationer", | ||||||
|     "minStarCount": "Minimum antal stjerner", |     "minStarCount": "Minimum antal stjerner", | ||||||
|     "addInfoBelow": "Tilføj denne info nedenfor.", |     "addInfoBelow": "Tilføj denne info nedenfor.", | ||||||
|     "addInfoInSettings": "Tilføj denne info i indstillingerne.", |     "addInfoInSettings": "Tilføj denne info i Indstillinger.", | ||||||
|     "githubSourceNote": "GitHubs hastighedsbegrænsning kan undgås med en API-nøgle.", |     "githubSourceNote": "GitHub's hastighedsbegrænsning kan undgås med en API-nøgle.", | ||||||
|     "sortByLastLinkSegment": "Sortér kun efter det sidste segment af linket", |     "sortByLastLinkSegment": "Sortér kun efter det sidste segment af linket", | ||||||
|     "filterReleaseNotesByRegEx": "Filtrer udgivelsesnoter efter regulært udtryk", |     "filterReleaseNotesByRegEx": "Filtrer udgivelsesnoter efter regulært udtryk", | ||||||
|     "customLinkFilterRegex": "Brugerdefineret APK-linkfilter efter regulært udtryk (standard '.apk$')", |     "customLinkFilterRegex": "Brugerdefineret APK-linkfilter efter regulært udtryk (standard '.apk$')", | ||||||
|     "appsPossiblyUpdated": "App-opdateringer forsøgt", |     "appsPossiblyUpdated": "App-opdateringer forsøgt", | ||||||
|     "appsPossiblyUpdatedNotifDescription": "Underretter brugeren om, at opdateringer til en eller flere apps potentielt blev udført i baggrunden", |     "appsPossiblyUpdatedNotifDescription": "Underretter brugeren om, at opdateringer til en eller flere apps muligvis blev udført i baggrunden", | ||||||
|     "xWasPossiblyUpdatedToY": "{} er muligvis blevet opdateret til {}.", |     "xWasPossiblyUpdatedToY": "{} er muligvis blevet opdateret til {}.", | ||||||
|     "enableBackgroundUpdates": "Aktivér baggrundsopdateringer", |     "enableBackgroundUpdates": "Aktivér baggrundsopdateringer", | ||||||
|     "backgroundUpdateReqsExplanation": "Baggrundsopdateringer er muligvis ikke mulige for alle apps.", |     "backgroundUpdateReqsExplanation": "Baggrundsopdateringer er måske ikke mulige for alle apps.", | ||||||
|     "backgroundUpdateLimitsExplanation": "Om en baggrundsinstallation er vellykket, kan kun afgøres, når Obtainium åbnes.", |     "backgroundUpdateLimitsExplanation": "En vellykket baggrundsinstallation kan kun afgøres, når Obtainium åbnes.", | ||||||
|     "verifyLatestTag": "Verificer 'seneste'-tagget", |     "verifyLatestTag": "Verificer 'seneste'-tagget", | ||||||
|     "intermediateLinkRegex": "Filtrer efter et 'mellemliggende' link at besøge", |     "intermediateLinkRegex": "Filtrer efter et 'mellemliggende' link at besøge", | ||||||
|     "filterByLinkText": "Filtrer links efter linktekst", |     "filterByLinkText": "Filtrer links efter linktekst", | ||||||
|     "intermediateLinkNotFound": "Mellemliggende link ikke fundet", |     "intermediateLinkNotFound": "Mellemliggende link ikke fundet", | ||||||
|     "intermediateLink": "Mellemliggende link", |     "intermediateLink": "Mellemliggende link", | ||||||
|     "exemptFromBackgroundUpdates": "Undtag fra baggrundsopdateringer (hvis aktiveret)", |     "exemptFromBackgroundUpdates": "Undtag fra baggrundsopdateringer (hvis aktiveret)", | ||||||
|     "bgUpdatesOnWiFiOnly": "Deaktivér baggrundsopdateringer, når du ikke er på WiFi", |     "bgUpdatesOnWiFiOnly": "Deaktiver baggrundsopdateringer, når du ikke er på Wi-Fi", | ||||||
|  |     "bgUpdatesWhileChargingOnly": "Deaktiver baggrundsopdateringer, når du ikke oplader", | ||||||
|     "autoSelectHighestVersionCode": "Auto-vælg højeste versionKode af APK", |     "autoSelectHighestVersionCode": "Auto-vælg højeste versionKode af APK", | ||||||
|     "versionExtractionRegEx": "RegEx for versionsstrengsudtrækning", |     "versionExtractionRegEx": "RegEx for versionsstrengsudtrækning", | ||||||
|     "trimVersionString": "Trim versionsstrengen med RegEx", |     "trimVersionString": "Trim versionsstreng med RegEx", | ||||||
|     "matchGroupToUseForX": "Matchgruppe til brug for \"{}\"", |     "matchGroupToUseForX": "Match-gruppe til brug for \"{}\"", | ||||||
|     "matchGroupToUse": "Match gruppe til brug til RegEx for versionsstrengsudtrækning", |     "matchGroupToUse": "RegEx-matchgruppe til brug for versionsstrengsudtrækning", | ||||||
|     "highlightTouchTargets": "Fremhæv mindre åbenlyse berøringsmål", |     "highlightTouchTargets": "Fremhæv mindre åbenlyse berøringsmål", | ||||||
|     "pickExportDir": "Vælg eksportmappe", |     "pickExportDir": "Vælg eksportmappe", | ||||||
|     "autoExportOnChanges": "Auto-eksport ved ændringer", |     "autoExportOnChanges": "Auto-eksportér ved ændringer", | ||||||
|     "includeSettings": "Inkluder indstillinger", |     "includeSettings": "Inkluder indstillinger", | ||||||
|     "filterVersionsByRegEx": "Filtrer versioner efter regulært udtryk", |     "filterVersionsByRegEx": "Filtrer versioner efter regulært udtryk", | ||||||
|     "trySelectingSuggestedVersionCode": "Forsøg at vælge den foreslåede versionKode af APK", |     "trySelectingSuggestedVersionCode": "Forsøg at vælge den foreslåede versionKode af APK", | ||||||
|     "dontSortReleasesList": "Behold udgivelsesordre fra API", |     "dontSortReleasesList": "Behold udgivelsesrækkefølge fra API", | ||||||
|     "reverseSort": "Omvendt sortering", |     "reverseSort": "Omvendt sortering", | ||||||
|     "takeFirstLink": "Tag første link", |     "takeFirstLink": "Tag første link", | ||||||
|     "skipSort": "Spring sortering over", |     "skipSort": "Spring sortering over", | ||||||
|     "debugMenu": "Fejlfindingsmenu", |     "debugMenu": "Fejlfindingsmenu", | ||||||
|     "bgTaskStarted": "Baggrundsopgave startet - tjek logfiler.", |     "bgTaskStarted": "Baggrundsopgave startet - tjek logfiler.", | ||||||
|     "runBgCheckNow": "Kør baggrundsopdateringstjek nu", |     "runBgCheckNow": "Kør baggrundsopdateringstjek nu", | ||||||
|     "versionExtractWholePage": "Anvend RegEx for versionsstrengsudtrækning for hele siden", |     "versionExtractWholePage": "Anvend RegEx til versionsstrengsudtrækning på hele siden", | ||||||
|     "installing": "Installerer", |     "installing": "Installerer", | ||||||
|     "skipUpdateNotifications": "Spring opdateringsmeddelelser over", |     "skipUpdateNotifications": "Spring opdateringsmeddelelser over", | ||||||
|     "updatesAvailableNotifChannel": "Opdateringer tilgængelige", |     "updatesAvailableNotifChannel": "Opdateringer tilgængelige", | ||||||
| @@ -287,7 +286,7 @@ | |||||||
|     "downloadingXNotifChannel": "Henter {}", |     "downloadingXNotifChannel": "Henter {}", | ||||||
|     "completeAppInstallationNotifChannel": "Færdiggør app-installation", |     "completeAppInstallationNotifChannel": "Færdiggør app-installation", | ||||||
|     "checkingForUpdatesNotifChannel": "Tjekker for opdateringer", |     "checkingForUpdatesNotifChannel": "Tjekker for opdateringer", | ||||||
|     "onlyCheckInstalledOrTrackOnlyApps": "Tjek kun installeret og 'Følg Kun'-apps for opdateringer", |     "onlyCheckInstalledOrTrackOnlyApps": "Tjek kun installerede og 'Følg Kun'-apps for opdateringer", | ||||||
|     "supportFixedAPKURL": "Understøt fikserede APK-URL'er", |     "supportFixedAPKURL": "Understøt fikserede APK-URL'er", | ||||||
|     "selectX": "Vælg {}", |     "selectX": "Vælg {}", | ||||||
|     "parallelDownloads": "Tillad samtidige overførsler", |     "parallelDownloads": "Tillad samtidige overførsler", | ||||||
| @@ -297,8 +296,8 @@ | |||||||
|     "shizukuOldAndroidWithADB": "Shizuku kører på Android <8.1 med ADB. Opdater Android eller brug Sui i stedet", |     "shizukuOldAndroidWithADB": "Shizuku kører på Android <8.1 med ADB. Opdater Android eller brug Sui i stedet", | ||||||
|     "shizukuPretendToBeGooglePlay": "Indstil Google Play som installationskilde (hvis Shizuku bruges)", |     "shizukuPretendToBeGooglePlay": "Indstil Google Play som installationskilde (hvis Shizuku bruges)", | ||||||
|     "useSystemFont": "Brug systemskrifttype", |     "useSystemFont": "Brug systemskrifttype", | ||||||
|     "useVersionCodeAsOSVersion": "Brug app versionKode som OS-registreret version", |     "useVersionCodeAsOSVersion": "Brug app-versionKode som OS-registreret version", | ||||||
|     "requestHeader": "Anmod overskrift", |     "requestHeader": "Anmodningsheader", | ||||||
|     "useLatestAssetDateAsReleaseDate": "Brug seneste ressourceupload som udgivelsesdato", |     "useLatestAssetDateAsReleaseDate": "Brug seneste ressourceupload som udgivelsesdato", | ||||||
|     "defaultPseudoVersioningMethod": "Standard pseudo-versioneringsmetode", |     "defaultPseudoVersioningMethod": "Standard pseudo-versioneringsmetode", | ||||||
|     "partialAPKHash": "Delvis APK-hash", |     "partialAPKHash": "Delvis APK-hash", | ||||||
| @@ -312,12 +311,12 @@ | |||||||
|     "selfHostedNote": "Rullemenuen \"{}\" kan bruges til at nå selvhostede/brugerdefinerede instanser af enhver kilde.", |     "selfHostedNote": "Rullemenuen \"{}\" kan bruges til at nå selvhostede/brugerdefinerede instanser af enhver kilde.", | ||||||
|     "badDownload": "APK'en kunne ikke analyseres (inkompatibel eller delvis hentning)", |     "badDownload": "APK'en kunne ikke analyseres (inkompatibel eller delvis hentning)", | ||||||
|     "beforeNewInstallsShareToAppVerifier": "Del nye apps med AppVerifier (hvis tilgængelig)", |     "beforeNewInstallsShareToAppVerifier": "Del nye apps med AppVerifier (hvis tilgængelig)", | ||||||
|     "appVerifierInstructionToast": "Del til AppVerifier, og vend tilbage hertil, når du er klar.", |     "appVerifierInstructionToast": "Del til AppVerifier, og vend tilbage, når du er klar.", | ||||||
|     "wiki": "Hjælp/Wiki", |     "wiki": "Hjælp/Wiki", | ||||||
|     "crowdsourcedConfigsLabel": "Crowdsourcede app-konfigurationer (brug på egen risiko)", |     "crowdsourcedConfigsLabel": "Crowdsourcede app-konfigurationer (brug på egen risiko)", | ||||||
|     "crowdsourcedConfigsShort": "Crowdsourcede app-konfigurationer", |     "crowdsourcedConfigsShort": "Crowdsourcede app-konfigurationer", | ||||||
|     "allowInsecure": "Tillad usikre HTTP-anmodninger", |     "allowInsecure": "Tillad usikre HTTP-anmodninger", | ||||||
|     "stayOneVersionBehind": "Vær en version bagud i forhold til den nyeste", |     "stayOneVersionBehind": "Forbliv én version bagud den seneste", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "Fjern app?", |         "one": "Fjern app?", | ||||||
|         "other": "Fjern apps?" |         "other": "Fjern apps?" | ||||||
| @@ -356,7 +355,7 @@ | |||||||
|     }, |     }, | ||||||
|     "clearedNLogsBeforeXAfterY": { |     "clearedNLogsBeforeXAfterY": { | ||||||
|         "one": "Ryddet {n} log (før = {before}, efter = {after})", |         "one": "Ryddet {n} log (før = {before}, efter = {after})", | ||||||
|         "other": "Ryddet {n} logs (før = {before}, efter = {after})" |         "other": "Ryddede {n} logs (før = {before}, efter = {after})" | ||||||
|     }, |     }, | ||||||
|     "xAndNMoreUpdatesAvailable": { |     "xAndNMoreUpdatesAvailable": { | ||||||
|         "one": "{} og 1 anden app har opdateringer.", |         "one": "{} og 1 anden app har opdateringer.", | ||||||
|   | |||||||
| @@ -179,8 +179,6 @@ | |||||||
|     "appWithIdOrNameNotFound": "Es wurde keine App mit dieser ID oder diesem Namen gefunden", |     "appWithIdOrNameNotFound": "Es wurde keine App mit dieser ID oder diesem Namen gefunden", | ||||||
|     "reposHaveMultipleApps": "Repos können mehrere Apps enthalten", |     "reposHaveMultipleApps": "Repos können mehrere Apps enthalten", | ||||||
|     "fdroidThirdPartyRepo": "F-Droid-Drittanbieter-Repo", |     "fdroidThirdPartyRepo": "F-Droid-Drittanbieter-Repo", | ||||||
|     "steamMobile": "Steam Mobile", |  | ||||||
|     "steamChat": "Steam-Chat", |  | ||||||
|     "install": "Installieren", |     "install": "Installieren", | ||||||
|     "markInstalled": "Als installiert markieren", |     "markInstalled": "Als installiert markieren", | ||||||
|     "update": "Aktualisieren", |     "update": "Aktualisieren", | ||||||
| @@ -258,6 +256,7 @@ | |||||||
|     "intermediateLink": "„Zwischen“-Link", |     "intermediateLink": "„Zwischen“-Link", | ||||||
|     "exemptFromBackgroundUpdates": "Ausschluss von Hintergrundaktualisierungen (falls aktiviert)", |     "exemptFromBackgroundUpdates": "Ausschluss von Hintergrundaktualisierungen (falls aktiviert)", | ||||||
|     "bgUpdatesOnWiFiOnly": "Hintergrundaktualisierungen deaktivieren, wenn kein WLAN vorhanden ist", |     "bgUpdatesOnWiFiOnly": "Hintergrundaktualisierungen deaktivieren, wenn kein WLAN vorhanden ist", | ||||||
|  |     "bgUpdatesWhileChargingOnly": "Hintergrundaktualisierungen deaktivieren, wenn nicht geladen wird", | ||||||
|     "autoSelectHighestVersionCode": "Automatisch höchste APK-Version auswählen", |     "autoSelectHighestVersionCode": "Automatisch höchste APK-Version auswählen", | ||||||
|     "versionExtractionRegEx": "Versionsextraktion per RegEx", |     "versionExtractionRegEx": "Versionsextraktion per RegEx", | ||||||
|     "trimVersionString": "Versionszeichenfolge mit RegEx kürzen", |     "trimVersionString": "Versionszeichenfolge mit RegEx kürzen", | ||||||
|   | |||||||
| @@ -179,8 +179,6 @@ | |||||||
|     "appWithIdOrNameNotFound": "Neniu apo estas trovita kun tiu identigilo aŭ nomo", |     "appWithIdOrNameNotFound": "Neniu apo estas trovita kun tiu identigilo aŭ nomo", | ||||||
|     "reposHaveMultipleApps": "Deponejoj povas enhavi plurajn apojn", |     "reposHaveMultipleApps": "Deponejoj povas enhavi plurajn apojn", | ||||||
|     "fdroidThirdPartyRepo": "Tria deponejo de F-Droid", |     "fdroidThirdPartyRepo": "Tria deponejo de F-Droid", | ||||||
|     "steamMobile": "Telefona Steam", |  | ||||||
|     "steamChat": "Steam Babilejo", |  | ||||||
|     "install": "Instali", |     "install": "Instali", | ||||||
|     "markInstalled": "Marki kiel instalita", |     "markInstalled": "Marki kiel instalita", | ||||||
|     "update": "Ĝisdatigi", |     "update": "Ĝisdatigi", | ||||||
| @@ -258,6 +256,7 @@ | |||||||
|     "intermediateLink": "Pera ligilo", |     "intermediateLink": "Pera ligilo", | ||||||
|     "exemptFromBackgroundUpdates": "Escepti el la fonaj ĝisdatigoj (se aktiva)", |     "exemptFromBackgroundUpdates": "Escepti el la fonaj ĝisdatigoj (se aktiva)", | ||||||
|     "bgUpdatesOnWiFiOnly": "Malaktivigi fonajn ĝisdatigojn se sen vifio", |     "bgUpdatesOnWiFiOnly": "Malaktivigi fonajn ĝisdatigojn se sen vifio", | ||||||
|  |     "bgUpdatesWhileChargingOnly": "Disable background updates when not charging", | ||||||
|     "autoSelectHighestVersionCode": "Aŭtomate selekti la plej ĵusan version de la APK-kodo", |     "autoSelectHighestVersionCode": "Aŭtomate selekti la plej ĵusan version de la APK-kodo", | ||||||
|     "versionExtractionRegEx": "Ekstrakti la versioĉenon per regula esprimo", |     "versionExtractionRegEx": "Ekstrakti la versioĉenon per regula esprimo", | ||||||
|     "trimVersionString": "Mallongigi la versioĉenon per regula esprimo", |     "trimVersionString": "Mallongigi la versioĉenon per regula esprimo", | ||||||
|   | |||||||
| @@ -179,8 +179,6 @@ | |||||||
|     "appWithIdOrNameNotFound": "No App was found with that ID or Name", |     "appWithIdOrNameNotFound": "No App was found with that ID or Name", | ||||||
|     "reposHaveMultipleApps": "Repos may contain multiple Apps", |     "reposHaveMultipleApps": "Repos may contain multiple Apps", | ||||||
|     "fdroidThirdPartyRepo": "F-Droid Third-Party Repo", |     "fdroidThirdPartyRepo": "F-Droid Third-Party Repo", | ||||||
|     "steamMobile": "Steam Mobile", |  | ||||||
|     "steamChat": "Steam Chat", |  | ||||||
|     "install": "Install", |     "install": "Install", | ||||||
|     "markInstalled": "Mark Installed", |     "markInstalled": "Mark Installed", | ||||||
|     "update": "Update", |     "update": "Update", | ||||||
| @@ -258,6 +256,7 @@ | |||||||
|     "intermediateLink": "Intermediate link", |     "intermediateLink": "Intermediate link", | ||||||
|     "exemptFromBackgroundUpdates": "Exempt from background updates (if enabled)", |     "exemptFromBackgroundUpdates": "Exempt from background updates (if enabled)", | ||||||
|     "bgUpdatesOnWiFiOnly": "Disable background updates when not on WiFi", |     "bgUpdatesOnWiFiOnly": "Disable background updates when not on WiFi", | ||||||
|  |     "bgUpdatesWhileChargingOnly": "Disable background updates when not charging", | ||||||
|     "autoSelectHighestVersionCode": "Auto-select highest versionCode APK", |     "autoSelectHighestVersionCode": "Auto-select highest versionCode APK", | ||||||
|     "versionExtractionRegEx": "Version String Extraction RegEx", |     "versionExtractionRegEx": "Version String Extraction RegEx", | ||||||
|     "trimVersionString": "Trim Version String With RegEx", |     "trimVersionString": "Trim Version String With RegEx", | ||||||
|   | |||||||
| @@ -179,8 +179,6 @@ | |||||||
|     "appWithIdOrNameNotFound": "No se han encontrado aplicaciones con ese ID o nombre", |     "appWithIdOrNameNotFound": "No se han encontrado aplicaciones con ese ID o nombre", | ||||||
|     "reposHaveMultipleApps": "Los repositorios pueden contener varias aplicaciones", |     "reposHaveMultipleApps": "Los repositorios pueden contener varias aplicaciones", | ||||||
|     "fdroidThirdPartyRepo": "Repositorio de terceros F-Droid", |     "fdroidThirdPartyRepo": "Repositorio de terceros F-Droid", | ||||||
|     "steamMobile": "Steam para móviles", |  | ||||||
|     "steamChat": "Chat de Steam", |  | ||||||
|     "install": "Instalar", |     "install": "Instalar", | ||||||
|     "markInstalled": "Marcar como instalada", |     "markInstalled": "Marcar como instalada", | ||||||
|     "update": "Actualizar", |     "update": "Actualizar", | ||||||
| @@ -258,11 +256,12 @@ | |||||||
|     "intermediateLink": "Enlace intermedio", |     "intermediateLink": "Enlace intermedio", | ||||||
|     "exemptFromBackgroundUpdates": "Exenta de actualizciones en segundo plano (si están habilitadas)", |     "exemptFromBackgroundUpdates": "Exenta de actualizciones en segundo plano (si están habilitadas)", | ||||||
|     "bgUpdatesOnWiFiOnly": "Deshabilitar las actualizaciones en segundo plano sin WiFi", |     "bgUpdatesOnWiFiOnly": "Deshabilitar las actualizaciones en segundo plano sin WiFi", | ||||||
|  |     "bgUpdatesWhileChargingOnly": "Desactiva las actualizaciones en segundo plano cuando no estés cargando", | ||||||
|     "autoSelectHighestVersionCode": "Auto selección del paquete APK con versión más reciente", |     "autoSelectHighestVersionCode": "Auto selección del paquete APK con versión más reciente", | ||||||
|     "versionExtractionRegEx": "Versión de extracción regex", |     "versionExtractionRegEx": "Versión de extracción RegEx", | ||||||
|     "trimVersionString": "Recortar cadena de versión con RegEx", |     "trimVersionString": "Recortar cadena de versión con RegEx", | ||||||
|     "matchGroupToUseForX": "Grupo de coincidencia a utilizar para \"{}\"", |     "matchGroupToUseForX": "Grupo de coincidencia a utilizar para \"{}\"", | ||||||
|     "matchGroupToUse": "Grupo a usar para versión de extracción regex", |     "matchGroupToUse": "Grupo a usar para versión de extracción RegEx", | ||||||
|     "highlightTouchTargets": "Resaltar objetivos menos obvios", |     "highlightTouchTargets": "Resaltar objetivos menos obvios", | ||||||
|     "pickExportDir": "Directorio para exportar", |     "pickExportDir": "Directorio para exportar", | ||||||
|     "autoExportOnChanges": "Auto exportar cuando haya cambios", |     "autoExportOnChanges": "Auto exportar cuando haya cambios", | ||||||
| @@ -276,7 +275,7 @@ | |||||||
|     "debugMenu": "Menu Depurar", |     "debugMenu": "Menu Depurar", | ||||||
|     "bgTaskStarted": "Iniciada tarea en segundo plano; revise los registros.", |     "bgTaskStarted": "Iniciada tarea en segundo plano; revise los registros.", | ||||||
|     "runBgCheckNow": "Ejecutar verficiación de actualizaciones en segundo plano", |     "runBgCheckNow": "Ejecutar verficiación de actualizaciones en segundo plano", | ||||||
|     "versionExtractWholePage": "Aplicar la versión de extracción regex a la página entera", |     "versionExtractWholePage": "Aplicar la versión de extracción RegEx a la página entera", | ||||||
|     "installing": "Instalando", |     "installing": "Instalando", | ||||||
|     "skipUpdateNotifications": "No notificar sobre actualizaciones", |     "skipUpdateNotifications": "No notificar sobre actualizaciones", | ||||||
|     "updatesAvailableNotifChannel": "Actualizaciones disponibles", |     "updatesAvailableNotifChannel": "Actualizaciones disponibles", | ||||||
| @@ -311,10 +310,10 @@ | |||||||
|     "note": "Nota", |     "note": "Nota", | ||||||
|     "selfHostedNote": "El desplegable «{}» puede usarse para acceder a instancias autoalojadas/personalizadas de cualquier fuente.", |     "selfHostedNote": "El desplegable «{}» puede usarse para acceder a instancias autoalojadas/personalizadas de cualquier fuente.", | ||||||
|     "badDownload": "No se ha podido analizar el APK (incompatible o descarga parcial)", |     "badDownload": "No se ha podido analizar el APK (incompatible o descarga parcial)", | ||||||
|     "beforeNewInstallsShareToAppVerifier": "Compartir aplicaciones nuevas con AppVerifier (si está disponible)", |     "beforeNewInstallsShareToAppVerifier": "Compartir aplicaciones nuevas con AppVerifier (si está instalado)", | ||||||
|     "appVerifierInstructionToast": "Comparta con AppVerifier y vuelva aquí cuando esté listo.", |     "appVerifierInstructionToast": "Compartir con AppVerifier y vuelver aquí cuando esté listo.", | ||||||
|     "wiki": "Ayuda/Wiki", |     "wiki": "Ayuda/Wiki", | ||||||
|     "crowdsourcedConfigsLabel": "Crowdsourced App Configurations (uso bajo su propia responsabilidad)", |     "crowdsourcedConfigsLabel": "Crowdsourced App Configurations (use bajo su responsabilidad)", | ||||||
|     "crowdsourcedConfigsShort": "Configuración de aplicaciones por crowdsourcing", |     "crowdsourcedConfigsShort": "Configuración de aplicaciones por crowdsourcing", | ||||||
|     "allowInsecure": "Permitir peticiones HTTP inseguras", |     "allowInsecure": "Permitir peticiones HTTP inseguras", | ||||||
|     "stayOneVersionBehind": "Mantenerse una versión por detrás de la última", |     "stayOneVersionBehind": "Mantenerse una versión por detrás de la última", | ||||||
|   | |||||||
| @@ -179,8 +179,6 @@ | |||||||
|     "appWithIdOrNameNotFound": "هیچ برنامه ای با آن شناسه یا نام یافت نشد", |     "appWithIdOrNameNotFound": "هیچ برنامه ای با آن شناسه یا نام یافت نشد", | ||||||
|     "reposHaveMultipleApps": "مخازن ممکن است شامل چندین برنامه باشد", |     "reposHaveMultipleApps": "مخازن ممکن است شامل چندین برنامه باشد", | ||||||
|     "fdroidThirdPartyRepo": "مخازن شخص ثالث F-Droid", |     "fdroidThirdPartyRepo": "مخازن شخص ثالث F-Droid", | ||||||
|     "steamMobile": "استیم موبایل", |  | ||||||
|     "steamChat": "چت استیم", |  | ||||||
|     "install": "نصب", |     "install": "نصب", | ||||||
|     "markInstalled": "علامت گذاری به عنوان نصب شده", |     "markInstalled": "علامت گذاری به عنوان نصب شده", | ||||||
|     "update": "به روز رسانی", |     "update": "به روز رسانی", | ||||||
| @@ -258,6 +256,7 @@ | |||||||
|     "intermediateLink": "پیوند میانی", |     "intermediateLink": "پیوند میانی", | ||||||
|     "exemptFromBackgroundUpdates": "معاف از بهروزرسانیهای پسزمینه (در صورت فعال بودن)", |     "exemptFromBackgroundUpdates": "معاف از بهروزرسانیهای پسزمینه (در صورت فعال بودن)", | ||||||
|     "bgUpdatesOnWiFiOnly": "بهروزرسانیهای پسزمینه را در صورت عدم اتصال به WiFi غیرفعال کنید", |     "bgUpdatesOnWiFiOnly": "بهروزرسانیهای پسزمینه را در صورت عدم اتصال به WiFi غیرفعال کنید", | ||||||
|  |     "bgUpdatesWhileChargingOnly": "Disable background updates when not charging", | ||||||
|     "autoSelectHighestVersionCode": "انتخاب خودکار بالاترین نسخه کد APK", |     "autoSelectHighestVersionCode": "انتخاب خودکار بالاترین نسخه کد APK", | ||||||
|     "versionExtractionRegEx": "نسخه استخراج RegEx", |     "versionExtractionRegEx": "نسخه استخراج RegEx", | ||||||
|     "trimVersionString": "برش رشته نسخه با RegEx", |     "trimVersionString": "برش رشته نسخه با RegEx", | ||||||
|   | |||||||
| @@ -37,7 +37,7 @@ | |||||||
|     "cancelled": "Annulé", |     "cancelled": "Annulé", | ||||||
|     "appAlreadyAdded": "Application déjà ajoutée", |     "appAlreadyAdded": "Application déjà ajoutée", | ||||||
|     "alreadyUpToDateQuestion": "L'application est à jour?", |     "alreadyUpToDateQuestion": "L'application est à jour?", | ||||||
|     "addApp": "Ajouter Appli", |     "addApp": "Ajouter appli", | ||||||
|     "appSourceURL": "URL source de l'application", |     "appSourceURL": "URL source de l'application", | ||||||
|     "error": "Erreur", |     "error": "Erreur", | ||||||
|     "add": "Ajouter", |     "add": "Ajouter", | ||||||
| @@ -88,7 +88,7 @@ | |||||||
|     "author": "Auteur", |     "author": "Auteur", | ||||||
|     "upToDateApps": "Applications à jour", |     "upToDateApps": "Applications à jour", | ||||||
|     "nonInstalledApps": "Applications non installées", |     "nonInstalledApps": "Applications non installées", | ||||||
|     "importExport": "Importer/Exporter", |     "importExport": "Importer/exporter", | ||||||
|     "settings": "Paramètres", |     "settings": "Paramètres", | ||||||
|     "exportedTo": "Exporté vers {}", |     "exportedTo": "Exporté vers {}", | ||||||
|     "obtainiumExport": "Exporter Obtainium", |     "obtainiumExport": "Exporter Obtainium", | ||||||
| @@ -179,8 +179,6 @@ | |||||||
|     "appWithIdOrNameNotFound": "Aucune application n'a été trouvée avec cet identifiant ou ce nom", |     "appWithIdOrNameNotFound": "Aucune application n'a été trouvée avec cet identifiant ou ce nom", | ||||||
|     "reposHaveMultipleApps": "Les dépôts peuvent contenir plusieurs applications", |     "reposHaveMultipleApps": "Les dépôts peuvent contenir plusieurs applications", | ||||||
|     "fdroidThirdPartyRepo": "Dépôt tiers F-Droid", |     "fdroidThirdPartyRepo": "Dépôt tiers F-Droid", | ||||||
|     "steamMobile": "Application mobile Steam", |  | ||||||
|     "steamChat": "Steam Chat", |  | ||||||
|     "install": "Installer", |     "install": "Installer", | ||||||
|     "markInstalled": "Marquer comme étant installé", |     "markInstalled": "Marquer comme étant installé", | ||||||
|     "update": "Mettre à jour", |     "update": "Mettre à jour", | ||||||
| @@ -258,6 +256,7 @@ | |||||||
|     "intermediateLink": "Lien intermédiaire", |     "intermediateLink": "Lien intermédiaire", | ||||||
|     "exemptFromBackgroundUpdates": "Exclure de la mise à jour en arrière-plan (si activé)", |     "exemptFromBackgroundUpdates": "Exclure de la mise à jour en arrière-plan (si activé)", | ||||||
|     "bgUpdatesOnWiFiOnly": "Désactiver les mises à jour en arrière-plan lorsque vous n'êtes pas en WiFi", |     "bgUpdatesOnWiFiOnly": "Désactiver les mises à jour en arrière-plan lorsque vous n'êtes pas en WiFi", | ||||||
|  |     "bgUpdatesWhileChargingOnly": "Désactiver les mises à jour en arrière-plan lorsque le véhicule n'est pas en charge", | ||||||
|     "autoSelectHighestVersionCode": "Sélectionner automatiquement la version la plus récente du code APK", |     "autoSelectHighestVersionCode": "Sélectionner automatiquement la version la plus récente du code APK", | ||||||
|     "versionExtractionRegEx": "Extraire la version par Expression régulière", |     "versionExtractionRegEx": "Extraire la version par Expression régulière", | ||||||
|     "trimVersionString": "Découper la version par Expression régulière", |     "trimVersionString": "Découper la version par Expression régulière", | ||||||
| @@ -314,8 +313,8 @@ | |||||||
|     "beforeNewInstallsShareToAppVerifier": "Partager les nouvelles applications avec AppVerifier (si disponible)", |     "beforeNewInstallsShareToAppVerifier": "Partager les nouvelles applications avec AppVerifier (si disponible)", | ||||||
|     "appVerifierInstructionToast": "Partagez avec AppVerifier, puis revenez ici lorsque tout est prêt.", |     "appVerifierInstructionToast": "Partagez avec AppVerifier, puis revenez ici lorsque tout est prêt.", | ||||||
|     "wiki": "Aide/Wiki", |     "wiki": "Aide/Wiki", | ||||||
|     "crowdsourcedConfigsLabel": "Configurations d'applications par la communauté (à utiliser à vos risques et périls)", |     "crowdsourcedConfigsLabel": "Configuration d'applis communautaire (à utiliser à vos risques et périls)", | ||||||
|     "crowdsourcedConfigsShort": "Configurations d'applications par la foule", |     "crowdsourcedConfigsShort": "Applis communautaires", | ||||||
|     "allowInsecure": "Autoriser les requêtes HTTP non sécurisées", |     "allowInsecure": "Autoriser les requêtes HTTP non sécurisées", | ||||||
|     "stayOneVersionBehind": "Rester à une version de la dernière", |     "stayOneVersionBehind": "Rester à une version de la dernière", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|   | |||||||
| @@ -179,8 +179,6 @@ | |||||||
|     "appWithIdOrNameNotFound": "Nem található alkalmazás ezzel az azonosítóval vagy névvel", |     "appWithIdOrNameNotFound": "Nem található alkalmazás ezzel az azonosítóval vagy névvel", | ||||||
|     "reposHaveMultipleApps": "A tárolók több alkalmazást is tartalmazhatnak", |     "reposHaveMultipleApps": "A tárolók több alkalmazást is tartalmazhatnak", | ||||||
|     "fdroidThirdPartyRepo": "F-Droid harmadik féltől származó tároló", |     "fdroidThirdPartyRepo": "F-Droid harmadik féltől származó tároló", | ||||||
|     "steamMobile": "Steam Mobil", |  | ||||||
|     "steamChat": "Steam Chat", |  | ||||||
|     "install": "Telepítés", |     "install": "Telepítés", | ||||||
|     "markInstalled": "Telepítettnek jelölés", |     "markInstalled": "Telepítettnek jelölés", | ||||||
|     "update": "Frissítés", |     "update": "Frissítés", | ||||||
| @@ -215,7 +213,7 @@ | |||||||
|     "releaseDateAsVersion": "Használja a kiadás dátumát verzió-karakterláncként", |     "releaseDateAsVersion": "Használja a kiadás dátumát verzió-karakterláncként", | ||||||
|     "releaseTitleAsVersion": "Használja a kiadás címét verzió-karakterláncként", |     "releaseTitleAsVersion": "Használja a kiadás címét verzió-karakterláncként", | ||||||
|     "releaseDateAsVersionExplanation": "Ezt a beállítást csak olyan alkalmazásoknál szabad használni, ahol a verzió-érzékelés nem működik megfelelően, de elérhető a kiadás dátuma.", |     "releaseDateAsVersionExplanation": "Ezt a beállítást csak olyan alkalmazásoknál szabad használni, ahol a verzió-érzékelés nem működik megfelelően, de elérhető a kiadás dátuma.", | ||||||
|     "changes": "Változások", |     "changes": "Változásnapló", | ||||||
|     "releaseDate": "Kiadás dátuma", |     "releaseDate": "Kiadás dátuma", | ||||||
|     "importFromURLsInFile": "Importálás fájlban található webcímből (pl. OPML)", |     "importFromURLsInFile": "Importálás fájlban található webcímből (pl. OPML)", | ||||||
|     "versionDetectionExplanation": "A verzió-karakterlánc egyeztetése az rendszer által érzékelt verzióval", |     "versionDetectionExplanation": "A verzió-karakterlánc egyeztetése az rendszer által érzékelt verzióval", | ||||||
| @@ -257,7 +255,8 @@ | |||||||
|     "intermediateLinkNotFound": "Köztes hivatkozás nem található", |     "intermediateLinkNotFound": "Köztes hivatkozás nem található", | ||||||
|     "intermediateLink": "Köztes hivatkozás", |     "intermediateLink": "Köztes hivatkozás", | ||||||
|     "exemptFromBackgroundUpdates": "Mentes a háttérben történő frissítések alól (ha engedélyezett)", |     "exemptFromBackgroundUpdates": "Mentes a háttérben történő frissítések alól (ha engedélyezett)", | ||||||
|     "bgUpdatesOnWiFiOnly": "A háttérben történő frissítések letiltása, ha nincs Wi-Fi", |     "bgUpdatesOnWiFiOnly": "Háttérfrissítések letiltása, amikor az eszköz nem csatlakozik a Wi-Fi-hez", | ||||||
|  |     "bgUpdatesWhileChargingOnly": "Háttérfrissítések letiltása, amikor az eszköz nincs a töltőn", | ||||||
|     "autoSelectHighestVersionCode": "A legmagasabb verziókódú APK automatikus kiválasztása", |     "autoSelectHighestVersionCode": "A legmagasabb verziókódú APK automatikus kiválasztása", | ||||||
|     "versionExtractionRegEx": "Verzió-karakterlánc kivonatolása reguláris kifejezéssel", |     "versionExtractionRegEx": "Verzió-karakterlánc kivonatolása reguláris kifejezéssel", | ||||||
|     "trimVersionString": "Verzió-karakterlánc levágása reguláris kifejezéssel", |     "trimVersionString": "Verzió-karakterlánc levágása reguláris kifejezéssel", | ||||||
| @@ -265,10 +264,10 @@ | |||||||
|     "matchGroupToUse": "Verziókarakterlánc-kivonatoláshoz használandó csoport reguláris kifejezéssel való egyeztetése", |     "matchGroupToUse": "Verziókarakterlánc-kivonatoláshoz használandó csoport reguláris kifejezéssel való egyeztetése", | ||||||
|     "highlightTouchTargets": "A kevésbé nyilvánvaló érintési pontok kiemelése", |     "highlightTouchTargets": "A kevésbé nyilvánvaló érintési pontok kiemelése", | ||||||
|     "pickExportDir": "Válassza ki a könyvtárat, ahová exportálni szeretne", |     "pickExportDir": "Válassza ki a könyvtárat, ahová exportálni szeretne", | ||||||
|     "autoExportOnChanges": "Automatikus exportálás a változások után", |     "autoExportOnChanges": "Automatikus exportálás a változtatások után", | ||||||
|     "includeSettings": "Tartalmazza a beállításokat", |     "includeSettings": "Tartalmazza a beállításokat", | ||||||
|     "filterVersionsByRegEx": "Verziók szűrése reguláris kifejezéssel", |     "filterVersionsByRegEx": "Verziók szűrése reguláris kifejezéssel", | ||||||
|     "trySelectingSuggestedVersionCode": "Próbálja ki a javasolt verziókódú APK-t", |     "trySelectingSuggestedVersionCode": "Próbálja kiválasztani a „Javasolt” verziókódú APK-t", | ||||||
|     "dontSortReleasesList": "Az API-ból származó kiadási sorrend megőrzése", |     "dontSortReleasesList": "Az API-ból származó kiadási sorrend megőrzése", | ||||||
|     "reverseSort": "Fordított rendezés", |     "reverseSort": "Fordított rendezés", | ||||||
|     "takeFirstLink": "Vegye az első hivatkozást", |     "takeFirstLink": "Vegye az első hivatkozást", | ||||||
|   | |||||||
| @@ -179,8 +179,6 @@ | |||||||
|     "appWithIdOrNameNotFound": "Tidak ada aplikasi yang ditemukan dengan ID atau nama tersebut", |     "appWithIdOrNameNotFound": "Tidak ada aplikasi yang ditemukan dengan ID atau nama tersebut", | ||||||
|     "reposHaveMultipleApps": "Repositori dapat berisi beberapa aplikasi", |     "reposHaveMultipleApps": "Repositori dapat berisi beberapa aplikasi", | ||||||
|     "fdroidThirdPartyRepo": "Repositori pihak ketiga F-Droid", |     "fdroidThirdPartyRepo": "Repositori pihak ketiga F-Droid", | ||||||
|     "steamMobile": "Steam Mobile", |  | ||||||
|     "steamChat": "Obrolan Steam", |  | ||||||
|     "install": "Pasang", |     "install": "Pasang", | ||||||
|     "markInstalled": "Tandai terpasang", |     "markInstalled": "Tandai terpasang", | ||||||
|     "update": "perbarui", |     "update": "perbarui", | ||||||
| @@ -258,6 +256,7 @@ | |||||||
|     "intermediateLink": "Tautan perantara", |     "intermediateLink": "Tautan perantara", | ||||||
|     "exemptFromBackgroundUpdates": "Dikecualikan dari pembaruan latar belakang (jika diaktifkan)", |     "exemptFromBackgroundUpdates": "Dikecualikan dari pembaruan latar belakang (jika diaktifkan)", | ||||||
|     "bgUpdatesOnWiFiOnly": "Nonaktifkan pembaruan latar belakang saat tidak menggunakan WiFi", |     "bgUpdatesOnWiFiOnly": "Nonaktifkan pembaruan latar belakang saat tidak menggunakan WiFi", | ||||||
|  |     "bgUpdatesWhileChargingOnly": "Menonaktifkan pembaruan latar belakang saat tidak mengisi daya", | ||||||
|     "autoSelectHighestVersionCode": "Pilih otomatis APK dengan versi kode tertinggi", |     "autoSelectHighestVersionCode": "Pilih otomatis APK dengan versi kode tertinggi", | ||||||
|     "versionExtractionRegEx": "Reguler ekspresi terkait ekstraksi versi string", |     "versionExtractionRegEx": "Reguler ekspresi terkait ekstraksi versi string", | ||||||
|     "trimVersionString": "Potong versi string dengan reguler ekspresi", |     "trimVersionString": "Potong versi string dengan reguler ekspresi", | ||||||
|   | |||||||
| @@ -179,8 +179,6 @@ | |||||||
|     "appWithIdOrNameNotFound": "Non è stata trovata alcuna app con quell'ID o nome", |     "appWithIdOrNameNotFound": "Non è stata trovata alcuna app con quell'ID o nome", | ||||||
|     "reposHaveMultipleApps": "I repository possono contenere più app", |     "reposHaveMultipleApps": "I repository possono contenere più app", | ||||||
|     "fdroidThirdPartyRepo": "Repository F-Droid di terze parti", |     "fdroidThirdPartyRepo": "Repository F-Droid di terze parti", | ||||||
|     "steamMobile": "Mobile a vapore", |  | ||||||
|     "steamChat": "Chat di vapore", |  | ||||||
|     "install": "Installa", |     "install": "Installa", | ||||||
|     "markInstalled": "Contrassegna come installata", |     "markInstalled": "Contrassegna come installata", | ||||||
|     "update": "Aggiorna", |     "update": "Aggiorna", | ||||||
| @@ -258,6 +256,7 @@ | |||||||
|     "intermediateLink": "Collegamento intermedio", |     "intermediateLink": "Collegamento intermedio", | ||||||
|     "exemptFromBackgroundUpdates": "Esente da aggiornamenti in secondo piano (se attivo)", |     "exemptFromBackgroundUpdates": "Esente da aggiornamenti in secondo piano (se attivo)", | ||||||
|     "bgUpdatesOnWiFiOnly": "Disattiva aggiornamenti in secondo piano quando non si usa il WiFi", |     "bgUpdatesOnWiFiOnly": "Disattiva aggiornamenti in secondo piano quando non si usa il WiFi", | ||||||
|  |     "bgUpdatesWhileChargingOnly": "Disabilita gli aggiornamenti in background quando non è in carica", | ||||||
|     "autoSelectHighestVersionCode": "Auto-seleziona APK con versionCode più alto", |     "autoSelectHighestVersionCode": "Auto-seleziona APK con versionCode più alto", | ||||||
|     "versionExtractionRegEx": "RegEx di estrazione versione", |     "versionExtractionRegEx": "RegEx di estrazione versione", | ||||||
|     "trimVersionString": "Tagliare la stringa della versione con RegEx", |     "trimVersionString": "Tagliare la stringa della versione con RegEx", | ||||||
|   | |||||||
| @@ -147,21 +147,21 @@ | |||||||
|     "noNewUpdates": "新しいアップデートはありません", |     "noNewUpdates": "新しいアップデートはありません", | ||||||
|     "xHasAnUpdate": "{} のアップデートが利用可能です。", |     "xHasAnUpdate": "{} のアップデートが利用可能です。", | ||||||
|     "appsUpdated": "アプリをアップデートしました", |     "appsUpdated": "アプリをアップデートしました", | ||||||
|     "appsNotUpdated": "アプリケーションの更新に失敗", |     "appsNotUpdated": "アプリのアップデートに失敗しました", | ||||||
|     "appsUpdatedNotifDescription": "1つまたは複数のAppのアップデートがバックグラウンドで適用されたことをユーザーに通知する", |     "appsUpdatedNotifDescription": "1つまたは複数のAppのアップデートがバックグラウンドで適用されたことをユーザーに通知する", | ||||||
|     "xWasUpdatedToY": "{} が {} にアップデートされました", |     "xWasUpdatedToY": "{} が {} にアップデートされました", | ||||||
|     "xWasNotUpdatedToY": "への更新に失敗しました。", |     "xWasNotUpdatedToY": "{} の {} へのアップデートに失敗しました", | ||||||
|     "errorCheckingUpdates": "アップデート確認中のエラー", |     "errorCheckingUpdates": "アップデート確認中のエラー", | ||||||
|     "errorCheckingUpdatesNotifDescription": "バックグラウンドでのアップデート確認に失敗した際に表示される通知", |     "errorCheckingUpdatesNotifDescription": "バックグラウンドでのアップデート確認に失敗した際に表示される通知", | ||||||
|     "appsRemoved": "削除されたアプリ", |     "appsRemoved": "削除されたアプリ", | ||||||
|     "appsRemovedNotifDescription": "アプリの読み込み中にエラーが発生したため、1つまたは複数のアプリが削除されたことをユーザーに通知する", |     "appsRemovedNotifDescription": "アプリの読み込み中にエラーが発生したため、1つまたは複数のアプリが削除されたことをユーザーに通知する", | ||||||
|     "xWasRemovedDueToErrorY": "このエラーのため、{} は削除されました: {}", |     "xWasRemovedDueToErrorY": "このエラーのため、{} は削除されました: {}", | ||||||
|     "completeAppInstallation": "アプリのインストールを完了する", |     "completeAppInstallation": "アプリのインストールを完了する", | ||||||
|     "obtainiumMustBeOpenToInstallApps": "アプリをインストールするにはObtainiumが開いている必要があります", |     "obtainiumMustBeOpenToInstallApps": "アプリをインストールするにはObtainiumを開く必要があります", | ||||||
|     "completeAppInstallationNotifDescription": "アプリのインストールを完了するために、Obtainiumに戻る必要があります", |     "completeAppInstallationNotifDescription": "アプリのインストールを完了するために、Obtainiumに戻る必要があります", | ||||||
|     "checkingForUpdates": "アップデートを確認中", |     "checkingForUpdates": "アップデートを確認中", | ||||||
|     "checkingForUpdatesNotifDescription": "アップデートを確認する際に表示される一時的な通知", |     "checkingForUpdatesNotifDescription": "アップデートを確認する際に表示される一時的な通知", | ||||||
|     "pleaseAllowInstallPerm": "Obtainiumによるアプリのインストールを許可してください。", |     "pleaseAllowInstallPerm": "Obtainiumによるアプリのインストールを許可してください", | ||||||
|     "trackOnly": "追跡のみ", |     "trackOnly": "追跡のみ", | ||||||
|     "errorWithHttpStatusCode": "エラー {}", |     "errorWithHttpStatusCode": "エラー {}", | ||||||
|     "versionCorrectionDisabled": "バージョン補正無効 (プラグインが動作していません)", |     "versionCorrectionDisabled": "バージョン補正無効 (プラグインが動作していません)", | ||||||
| @@ -179,8 +179,6 @@ | |||||||
|     "appWithIdOrNameNotFound": "そのIDや名前を持つアプリは見つかりませんでした", |     "appWithIdOrNameNotFound": "そのIDや名前を持つアプリは見つかりませんでした", | ||||||
|     "reposHaveMultipleApps": "リポジトリには複数のアプリが含まれることがあります", |     "reposHaveMultipleApps": "リポジトリには複数のアプリが含まれることがあります", | ||||||
|     "fdroidThirdPartyRepo": "F-Droid サードパーティリポジトリ", |     "fdroidThirdPartyRepo": "F-Droid サードパーティリポジトリ", | ||||||
|     "steamMobile": "Steamモバイル", |  | ||||||
|     "steamChat": "Steamチャット", |  | ||||||
|     "install": "インストール", |     "install": "インストール", | ||||||
|     "markInstalled": "インストール済みとしてマークする", |     "markInstalled": "インストール済みとしてマークする", | ||||||
|     "update": "アップデート", |     "update": "アップデート", | ||||||
| @@ -213,7 +211,7 @@ | |||||||
|     "uninstallFromDevice": "デバイスからアンインストールする", |     "uninstallFromDevice": "デバイスからアンインストールする", | ||||||
|     "onlyWorksWithNonVersionDetectApps": "バージョン検出を無効にしているアプリにのみ動作します。", |     "onlyWorksWithNonVersionDetectApps": "バージョン検出を無効にしているアプリにのみ動作します。", | ||||||
|     "releaseDateAsVersion": "リリース日をバージョンとして使用する", |     "releaseDateAsVersion": "リリース日をバージョンとして使用する", | ||||||
|     "releaseTitleAsVersion": "リリースタイトルをバージョン文字列として使用", |     "releaseTitleAsVersion": "リリースタイトルをバージョンとして使用する", | ||||||
|     "releaseDateAsVersionExplanation": "このオプションは、バージョン検出が正しく機能しないアプリで、リリース日が利用可能な場合にのみ使用する必要があります。", |     "releaseDateAsVersionExplanation": "このオプションは、バージョン検出が正しく機能しないアプリで、リリース日が利用可能な場合にのみ使用する必要があります。", | ||||||
|     "changes": "変更点", |     "changes": "変更点", | ||||||
|     "releaseDate": "リリース日", |     "releaseDate": "リリース日", | ||||||
| @@ -258,6 +256,7 @@ | |||||||
|     "intermediateLink": "中間リンク", |     "intermediateLink": "中間リンク", | ||||||
|     "exemptFromBackgroundUpdates": "バックグラウンドアップデートを行わない (有効な場合)", |     "exemptFromBackgroundUpdates": "バックグラウンドアップデートを行わない (有効な場合)", | ||||||
|     "bgUpdatesOnWiFiOnly": "WiFiを使用していない場合、バックグラウンドアップデートを無効にする", |     "bgUpdatesOnWiFiOnly": "WiFiを使用していない場合、バックグラウンドアップデートを無効にする", | ||||||
|  |     "bgUpdatesWhileChargingOnly": "非充電時にバックグラウンドアップデートを無効にする", | ||||||
|     "autoSelectHighestVersionCode": "最も高いバージョンコードのAPKを自動で選択する", |     "autoSelectHighestVersionCode": "最も高いバージョンコードのAPKを自動で選択する", | ||||||
|     "versionExtractionRegEx": "バージョン抽出の正規表現", |     "versionExtractionRegEx": "バージョン抽出の正規表現", | ||||||
|     "trimVersionString": "正規表現でバージョン文字列をトリムする", |     "trimVersionString": "正規表現でバージョン文字列をトリムする", | ||||||
| @@ -317,7 +316,7 @@ | |||||||
|     "crowdsourcedConfigsLabel": "クラウドソーシングによるアプリの設定(利用は自己責任で)", |     "crowdsourcedConfigsLabel": "クラウドソーシングによるアプリの設定(利用は自己責任で)", | ||||||
|     "crowdsourcedConfigsShort": "クラウドソーシングによるアプリの設定", |     "crowdsourcedConfigsShort": "クラウドソーシングによるアプリの設定", | ||||||
|     "allowInsecure": "安全でないHTTPリクエストを許可する", |     "allowInsecure": "安全でないHTTPリクエストを許可する", | ||||||
|     "stayOneVersionBehind": "最新バージョンから1つ遅れ", |     "stayOneVersionBehind": "最新のバージョンから1つ前のものを使用する", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "アプリを削除しますか?", |         "one": "アプリを削除しますか?", | ||||||
|         "other": "アプリを削除しますか?" |         "other": "アプリを削除しますか?" | ||||||
| @@ -359,23 +358,23 @@ | |||||||
|         "other": "{n} 個のログをクリアしました (前 = {before}, 後 = {after})" |         "other": "{n} 個のログをクリアしました (前 = {before}, 後 = {after})" | ||||||
|     }, |     }, | ||||||
|     "xAndNMoreUpdatesAvailable": { |     "xAndNMoreUpdatesAvailable": { | ||||||
|         "one": "{} とさらに {} 個のアプリのアップデートが利用可能です。", |         "one": "{} とさらに 1 個のアプリのアップデートが利用可能です。", | ||||||
|         "other": "{} とさらに {} 個のアプリのアップデートが利用可能です。" |         "other": "{} とさらに {} 個のアプリのアップデートが利用可能です。" | ||||||
|     }, |     }, | ||||||
|     "xAndNMoreUpdatesInstalled": { |     "xAndNMoreUpdatesInstalled": { | ||||||
|         "one": "{} とさらに {} 個のアプリがアップデートされました。", |         "one": "{} とさらに 1 個のアプリがアップデートされました。", | ||||||
|         "other": "{} とさらに {} 個のアプリがアップデートされました。" |         "other": "{} とさらに {} 個のアプリがアップデートされました。" | ||||||
|     }, |     }, | ||||||
|     "xAndNMoreUpdatesFailed": { |     "xAndNMoreUpdatesFailed": { | ||||||
|         "one": "更新に失敗しました。", |         "one": "{} とさらに 1 個のアプリのアップデートに失敗しました。", | ||||||
|         "other": "アプリのアップデートに失敗しました。" |         "other": "{} とさらに {} 個のアプリのアップデートに失敗しました。" | ||||||
|     }, |     }, | ||||||
|     "xAndNMoreUpdatesPossiblyInstalled": { |     "xAndNMoreUpdatesPossiblyInstalled": { | ||||||
|         "one": "{} とさらに 1 個のアプリがアップデートされた可能性があります。", |         "one": "{} とさらに 1 個のアプリがアップデートされた可能性があります。", | ||||||
|         "other": "{} とさらに {} 個のアプリがアップデートされた可能性があります。" |         "other": "{} とさらに {} 個のアプリがアップデートされた可能性があります。" | ||||||
|     }, |     }, | ||||||
|     "apk": { |     "apk": { | ||||||
|         "one": "{}APK", |         "one": "{} APK", | ||||||
|         "other": "{}APK" |         "other": "{} APK" | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -179,8 +179,6 @@ | |||||||
|     "appWithIdOrNameNotFound": "Er is geen app gevonden met dat ID of die naam", |     "appWithIdOrNameNotFound": "Er is geen app gevonden met dat ID of die naam", | ||||||
|     "reposHaveMultipleApps": "Repositories kunnen meerdere apps bevatten", |     "reposHaveMultipleApps": "Repositories kunnen meerdere apps bevatten", | ||||||
|     "fdroidThirdPartyRepo": "F-Droid Repository voor derden", |     "fdroidThirdPartyRepo": "F-Droid Repository voor derden", | ||||||
|     "steamMobile": "Steam Mobile", |  | ||||||
|     "steamChat": "Steam Chat", |  | ||||||
|     "install": "Installeren", |     "install": "Installeren", | ||||||
|     "markInstalled": "Als geïnstalleerd markeren", |     "markInstalled": "Als geïnstalleerd markeren", | ||||||
|     "update": "Bijwerken", |     "update": "Bijwerken", | ||||||
| @@ -258,6 +256,7 @@ | |||||||
|     "intermediateLink": "Intermediaire link", |     "intermediateLink": "Intermediaire link", | ||||||
|     "exemptFromBackgroundUpdates": "Vrijgesteld van achtergrond-updates (indien ingeschakeld)", |     "exemptFromBackgroundUpdates": "Vrijgesteld van achtergrond-updates (indien ingeschakeld)", | ||||||
|     "bgUpdatesOnWiFiOnly": "Achtergrond-updates uitschakelen wanneer niet verbonden met WiFi", |     "bgUpdatesOnWiFiOnly": "Achtergrond-updates uitschakelen wanneer niet verbonden met WiFi", | ||||||
|  |     "bgUpdatesWhileChargingOnly": "Achtergrondupdates uitschakelen als er niet wordt opgeladen", | ||||||
|     "autoSelectHighestVersionCode": "De APK met de hoogste versiecode automatisch selecteren", |     "autoSelectHighestVersionCode": "De APK met de hoogste versiecode automatisch selecteren", | ||||||
|     "versionExtractionRegEx": "Reguliere expressie voor versie-extractie", |     "versionExtractionRegEx": "Reguliere expressie voor versie-extractie", | ||||||
|     "trimVersionString": "Versie string trimmen met RegEx", |     "trimVersionString": "Versie string trimmen met RegEx", | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ | |||||||
|     "cantInstallOlderVersion": "Nie można zainstalować starszej wersji aplikacji", |     "cantInstallOlderVersion": "Nie można zainstalować starszej wersji aplikacji", | ||||||
|     "appIdMismatch": "Pobrane ID pakietu nie pasuje do istniejącego ID aplikacji", |     "appIdMismatch": "Pobrane ID pakietu nie pasuje do istniejącego ID aplikacji", | ||||||
|     "functionNotImplemented": "Ta klasa nie zaimplementowała tej funkcji", |     "functionNotImplemented": "Ta klasa nie zaimplementowała tej funkcji", | ||||||
|     "placeholder": "Zbiornik", |     "placeholder": "Placeholder", | ||||||
|     "someErrors": "Wystąpiły pewne błędy", |     "someErrors": "Wystąpiły pewne błędy", | ||||||
|     "unexpectedError": "Nieoczekiwany błąd", |     "unexpectedError": "Nieoczekiwany błąd", | ||||||
|     "ok": "Okej", |     "ok": "Okej", | ||||||
| @@ -22,9 +22,9 @@ | |||||||
|     "requiredInBrackets": "(Wymagane)", |     "requiredInBrackets": "(Wymagane)", | ||||||
|     "dropdownNoOptsError": "BŁĄD: LISTA ROZWIJANA MUSI MIEĆ CO NAJMNIEJ JEDNĄ OPCJĘ", |     "dropdownNoOptsError": "BŁĄD: LISTA ROZWIJANA MUSI MIEĆ CO NAJMNIEJ JEDNĄ OPCJĘ", | ||||||
|     "colour": "Kolor", |     "colour": "Kolor", | ||||||
|     "standard": "Standard", |     "standard": "Domyślny", | ||||||
|     "custom": "Niestandardowe", |     "custom": "Własny", | ||||||
|     "useMaterialYou": "Używaj materiałów", |     "useMaterialYou": "Material You", | ||||||
|     "githubStarredRepos": "Repozytoria GitHub oznaczone gwiazdką", |     "githubStarredRepos": "Repozytoria GitHub oznaczone gwiazdką", | ||||||
|     "uname": "Nazwa użytkownika", |     "uname": "Nazwa użytkownika", | ||||||
|     "wrongArgNum": "Nieprawidłowa liczba podanych argumentów", |     "wrongArgNum": "Nieprawidłowa liczba podanych argumentów", | ||||||
| @@ -55,7 +55,7 @@ | |||||||
|     "pleaseWait": "Proszę czekać", |     "pleaseWait": "Proszę czekać", | ||||||
|     "updateAvailable": "Dostępna aktualizacja", |     "updateAvailable": "Dostępna aktualizacja", | ||||||
|     "notInstalled": "Nie zainstalowano", |     "notInstalled": "Nie zainstalowano", | ||||||
|     "pseudoVersion": "pseudowersja", |     "pseudoVersion": "pseudo-wersja", | ||||||
|     "selectAll": "Zaznacz wszystkie", |     "selectAll": "Zaznacz wszystkie", | ||||||
|     "deselectX": "Odznacz {}", |     "deselectX": "Odznacz {}", | ||||||
|     "xWillBeRemovedButRemainInstalled": "{} zostanie usunięty z Obtainium, ale pozostanie zainstalowany na urządzeniu.", |     "xWillBeRemovedButRemainInstalled": "{} zostanie usunięty z Obtainium, ale pozostanie zainstalowany na urządzeniu.", | ||||||
| @@ -76,7 +76,7 @@ | |||||||
|     "resetInstallStatusForSelectedAppsQuestion": "Zresetować status instalacji dla wybranych aplikacji?", |     "resetInstallStatusForSelectedAppsQuestion": "Zresetować status instalacji dla wybranych aplikacji?", | ||||||
|     "installStatusOfXWillBeResetExplanation": "Stan instalacji wybranych aplikacji zostanie zresetowany.\n\nMoże być to pomocne, gdy wersja aplikacji wyświetlana w Obtainium jest nieprawidłowa z powodu nieudanych aktualizacji lub innych problemów.", |     "installStatusOfXWillBeResetExplanation": "Stan instalacji wybranych aplikacji zostanie zresetowany.\n\nMoże być to pomocne, gdy wersja aplikacji wyświetlana w Obtainium jest nieprawidłowa z powodu nieudanych aktualizacji lub innych problemów.", | ||||||
|     "customLinkMessage": "Te linki działają na urządzeniach z zainstalowanym Obtainium", |     "customLinkMessage": "Te linki działają na urządzeniach z zainstalowanym Obtainium", | ||||||
|     "shareAppConfigLinks": "Udostępnij konfigurację aplikacji jako link HTML", |     "shareAppConfigLinks": "Udostępnij konfigurację aplikacji w formie linku", | ||||||
|     "shareSelectedAppURLs": "Udostępnij wybrane adresy URL aplikacji", |     "shareSelectedAppURLs": "Udostępnij wybrane adresy URL aplikacji", | ||||||
|     "resetInstallStatus": "Zresetuj stan instalacji", |     "resetInstallStatus": "Zresetuj stan instalacji", | ||||||
|     "more": "Więcej", |     "more": "Więcej", | ||||||
| @@ -150,7 +150,7 @@ | |||||||
|     "appsNotUpdated": "Nie udało się zaktualizować aplikacji", |     "appsNotUpdated": "Nie udało się zaktualizować aplikacji", | ||||||
|     "appsUpdatedNotifDescription": "Informuje, gdy co najmniej jedna aplikacja została zaktualizowana w tle", |     "appsUpdatedNotifDescription": "Informuje, gdy co najmniej jedna aplikacja została zaktualizowana w tle", | ||||||
|     "xWasUpdatedToY": "{} zaktualizowano do {}.", |     "xWasUpdatedToY": "{} zaktualizowano do {}.", | ||||||
|     "xWasNotUpdatedToY": "Nie udało się zaktualizować {} do {}.", |     "xWasNotUpdatedToY": "Błąd aktualizacji {} do {}.", | ||||||
|     "errorCheckingUpdates": "Błąd sprawdzania aktualizacji", |     "errorCheckingUpdates": "Błąd sprawdzania aktualizacji", | ||||||
|     "errorCheckingUpdatesNotifDescription": "Jest wyświetlane, gdy sprawdzanie aktualizacji w tle nie powiedzie się", |     "errorCheckingUpdatesNotifDescription": "Jest wyświetlane, gdy sprawdzanie aktualizacji w tle nie powiedzie się", | ||||||
|     "appsRemoved": "Usunięte aplikacje", |     "appsRemoved": "Usunięte aplikacje", | ||||||
| @@ -179,8 +179,6 @@ | |||||||
|     "appWithIdOrNameNotFound": "Nie znaleziono aplikacji o tym identyfikatorze lub nazwie", |     "appWithIdOrNameNotFound": "Nie znaleziono aplikacji o tym identyfikatorze lub nazwie", | ||||||
|     "reposHaveMultipleApps": "Repozytoria mogą zawierać wiele aplikacji", |     "reposHaveMultipleApps": "Repozytoria mogą zawierać wiele aplikacji", | ||||||
|     "fdroidThirdPartyRepo": "Zewnętrzne repo F-Droid", |     "fdroidThirdPartyRepo": "Zewnętrzne repo F-Droid", | ||||||
|     "steamMobile": "Mobilny Steam", |  | ||||||
|     "steamChat": "Czat Steam", |  | ||||||
|     "install": "Instaluj", |     "install": "Instaluj", | ||||||
|     "markInstalled": "Oznacz jako zainstalowane", |     "markInstalled": "Oznacz jako zainstalowane", | ||||||
|     "update": "Zaktualizuj", |     "update": "Zaktualizuj", | ||||||
| @@ -191,7 +189,7 @@ | |||||||
|     "downloadingX": "Pobieranie {}", |     "downloadingX": "Pobieranie {}", | ||||||
|     "downloadX": "Pobierz {}", |     "downloadX": "Pobierz {}", | ||||||
|     "downloadedX": "Pobrano {}", |     "downloadedX": "Pobrano {}", | ||||||
|     "releaseAsset": "Release Asset", |     "releaseAsset": "Wydany pakiet", | ||||||
|     "downloadNotifDescription": "Informuje o postępach w pobieraniu aplikacji", |     "downloadNotifDescription": "Informuje o postępach w pobieraniu aplikacji", | ||||||
|     "noAPKFound": "Nie znaleziono pakietu APK", |     "noAPKFound": "Nie znaleziono pakietu APK", | ||||||
|     "noVersionDetection": "Bez wykrywania wersji", |     "noVersionDetection": "Bez wykrywania wersji", | ||||||
| @@ -213,12 +211,12 @@ | |||||||
|     "uninstallFromDevice": "Odinstaluj z urządzenia", |     "uninstallFromDevice": "Odinstaluj z urządzenia", | ||||||
|     "onlyWorksWithNonVersionDetectApps": "Działa tylko w przypadku aplikacji z wyłączonym wykrywaniem wersji.", |     "onlyWorksWithNonVersionDetectApps": "Działa tylko w przypadku aplikacji z wyłączonym wykrywaniem wersji.", | ||||||
|     "releaseDateAsVersion": "Użyj daty wydania jako wersji", |     "releaseDateAsVersion": "Użyj daty wydania jako wersji", | ||||||
|     "releaseTitleAsVersion": "Użyj tytułu wydania jako ciągu znaków wersji", |     "releaseTitleAsVersion": "Używaj nazwy wydania jako ciągu wersji", | ||||||
|     "releaseDateAsVersionExplanation": "Opcja ta powinna być używana tylko w przypadku aplikacji, w których wykrywanie wersji nie działa poprawnie, ale dostępna jest data wydania.", |     "releaseDateAsVersionExplanation": "Opcja ta powinna być używana tylko w przypadku aplikacji, w których wykrywanie wersji nie działa poprawnie, ale dostępna jest data wydania.", | ||||||
|     "changes": "Zmiany", |     "changes": "Zmiany", | ||||||
|     "releaseDate": "Data wydania", |     "releaseDate": "Data wydania", | ||||||
|     "importFromURLsInFile": "Importuj z adresów URL w pliku (typu OPML)", |     "importFromURLsInFile": "Importuj z adresów URL w pliku (typu OPML)", | ||||||
|     "versionDetectionExplanation": "Uzgodnij ciąg wersji z wersją wykrytą w systemie operacyjnym", |     "versionDetectionExplanation": "Uzgodnij ciąg wersji z wersją wykrytą przez system operacyjny", | ||||||
|     "versionDetection": "Wykrywanie wersji", |     "versionDetection": "Wykrywanie wersji", | ||||||
|     "standardVersionDetection": "Standardowe wykrywanie wersji", |     "standardVersionDetection": "Standardowe wykrywanie wersji", | ||||||
|     "groupByCategory": "Grupuj według kategorii", |     "groupByCategory": "Grupuj według kategorii", | ||||||
| @@ -252,15 +250,16 @@ | |||||||
|     "backgroundUpdateReqsExplanation": "Aktualizacje w tle mogą nie być możliwe dla wszystkich aplikacji.", |     "backgroundUpdateReqsExplanation": "Aktualizacje w tle mogą nie być możliwe dla wszystkich aplikacji.", | ||||||
|     "backgroundUpdateLimitsExplanation": "Powodzenie instalacji w tle można określić dopiero po otwarciu Obtainium.", |     "backgroundUpdateLimitsExplanation": "Powodzenie instalacji w tle można określić dopiero po otwarciu Obtainium.", | ||||||
|     "verifyLatestTag": "Zweryfikuj najnowszy tag", |     "verifyLatestTag": "Zweryfikuj najnowszy tag", | ||||||
|     "intermediateLinkRegex": "Filtruj link \"pośredni\" do odwiedzenia", |     "intermediateLinkRegex": "Filtr linków \"pośrednich\" do odwiedzenia w pierwszej kolejności", | ||||||
|     "filterByLinkText": "Filtruj linki według tekstu linku", |     "filterByLinkText": "Filtruj linki według tekstu linku", | ||||||
|     "intermediateLinkNotFound": "Nie znaleziono linku pośredniego", |     "intermediateLinkNotFound": "Nie znaleziono linku pośredniego", | ||||||
|     "intermediateLink": "Łącze pośrednie", |     "intermediateLink": "Link pośredni", | ||||||
|     "exemptFromBackgroundUpdates": "Wyklucz z uaktualnień w tle (jeśli są włączone)", |     "exemptFromBackgroundUpdates": "Wyklucz z uaktualnień w tle (jeśli są włączone)", | ||||||
|     "bgUpdatesOnWiFiOnly": "Wyłącz aktualizacje w tle, gdy nie ma połączenia z Wi-Fi", |     "bgUpdatesOnWiFiOnly": "Wyłącz aktualizacje w tle, gdy nie ma połączenia z Wi-Fi", | ||||||
|  |     "bgUpdatesWhileChargingOnly": "Wyłącz aktualizacje w tle, gdy urządzenie nie jest ładowane", | ||||||
|     "autoSelectHighestVersionCode": "Automatycznie wybierz najwyższy kod wersji APK", |     "autoSelectHighestVersionCode": "Automatycznie wybierz najwyższy kod wersji APK", | ||||||
|     "versionExtractionRegEx": "Wyrażenie regularne wyodrębniające wersję", |     "versionExtractionRegEx": "Wyrażenie regularne wyodrębniające wersję", | ||||||
|     "trimVersionString": "Przycinanie łańcucha wersji za pomocą RegEx", |     "trimVersionString": "Przytnij ciąg wersji za pomocą RegEx", | ||||||
|     "matchGroupToUseForX": "Dopasuj grupę do użycia dla \"{}\"", |     "matchGroupToUseForX": "Dopasuj grupę do użycia dla \"{}\"", | ||||||
|     "matchGroupToUse": "Dopasuj grupę do użycia dla wyrażenia regularnego wyodrębniania wersji", |     "matchGroupToUse": "Dopasuj grupę do użycia dla wyrażenia regularnego wyodrębniania wersji", | ||||||
|     "highlightTouchTargets": "Wyróżnij mniej oczywiste elementy dotykowe", |     "highlightTouchTargets": "Wyróżnij mniej oczywiste elementy dotykowe", | ||||||
| @@ -271,7 +270,7 @@ | |||||||
|     "trySelectingSuggestedVersionCode": "Spróbuj wybierać sugerowany kod wersji APK", |     "trySelectingSuggestedVersionCode": "Spróbuj wybierać sugerowany kod wersji APK", | ||||||
|     "dontSortReleasesList": "Utrzymaj kolejność wydań z interfejsu API", |     "dontSortReleasesList": "Utrzymaj kolejność wydań z interfejsu API", | ||||||
|     "reverseSort": "Odwrotne sortowanie", |     "reverseSort": "Odwrotne sortowanie", | ||||||
|     "takeFirstLink": "Weź pierwszy link", |     "takeFirstLink": "Wykorzystaj pierwszy link", | ||||||
|     "skipSort": "Pomiń sortowanie", |     "skipSort": "Pomiń sortowanie", | ||||||
|     "debugMenu": "Menu debugowania", |     "debugMenu": "Menu debugowania", | ||||||
|     "bgTaskStarted": "Uruchomiono zadanie w tle - sprawdź logi.", |     "bgTaskStarted": "Uruchomiono zadanie w tle - sprawdź logi.", | ||||||
| @@ -284,40 +283,40 @@ | |||||||
|     "appsPossiblyUpdatedNotifChannel": "Informuj o próbach aktualizacji", |     "appsPossiblyUpdatedNotifChannel": "Informuj o próbach aktualizacji", | ||||||
|     "errorCheckingUpdatesNotifChannel": "Błędy sprawdzania aktualizacji", |     "errorCheckingUpdatesNotifChannel": "Błędy sprawdzania aktualizacji", | ||||||
|     "appsRemovedNotifChannel": "Usunięte aplikacje", |     "appsRemovedNotifChannel": "Usunięte aplikacje", | ||||||
|     "downloadingXNotifChannel": "Pobieranie aplikacji", |     "downloadingXNotifChannel": "Pobieranie {}", | ||||||
|     "completeAppInstallationNotifChannel": "Ukończenie instalacji aplikacji", |     "completeAppInstallationNotifChannel": "Ukończenie instalacji aplikacji", | ||||||
|     "checkingForUpdatesNotifChannel": "Sprawdzanie dostępności aktualizacji", |     "checkingForUpdatesNotifChannel": "Sprawdzanie dostępności aktualizacji", | ||||||
|     "onlyCheckInstalledOrTrackOnlyApps": "Sprawdzaj tylko zainstalowane i obserwowane aplikacje pod kątem aktualizacji", |     "onlyCheckInstalledOrTrackOnlyApps": "Sprawdzaj tylko zainstalowane i obserwowane aplikacje pod kątem aktualizacji", | ||||||
|     "supportFixedAPKURL": "Obsługuj stałe adresy URL APK", |     "supportFixedAPKURL": "Obsługuj stałe adresy URL APK", | ||||||
|     "selectX": "Wybierz {}", |     "selectX": "Wybierz {}", | ||||||
|     "parallelDownloads": "Zezwól na pobieranie równoległe", |     "parallelDownloads": "Zezwalaj na równoległe pobierania", | ||||||
|     "useShizuku": "Użyj Shizuku lub Sui, aby zainstalować", |     "useShizuku": "Użyj Shizuku lub Sui, aby zainstalować", | ||||||
|     "shizukuBinderNotFound": "Shizuku is not running", |     "shizukuBinderNotFound": "Usługa Shizuku nie działa", | ||||||
|     "shizukuOld": "Stara wersja Shizuku (<11) - zaktualizuj ją", |     "shizukuOld": "Stara wersja Shizuku (<11) - zaktualizuj ją", | ||||||
|     "shizukuOldAndroidWithADB": "Shizuku działa na Androidzie < 8.1 z ADB - zaktualizuj Androida lub użyj zamiast tego Sui", |     "shizukuOldAndroidWithADB": "Shizuku przez ADB działa na Androidzie 8.1+. Zaktualizuj Androida lub użyj zamiast tego Sui", | ||||||
|     "shizukuPretendToBeGooglePlay": "Ustaw Google Play jako źródło instalacji (jeśli używana jest aplikacja Shizuku).", |     "shizukuPretendToBeGooglePlay": "Ustaw Google Play jako źródło instalacji (jeśli używana jest aplikacja Shizuku)", | ||||||
|     "useSystemFont": "Użyj czcionki systemowej", |     "useSystemFont": "Czcionka systemowa", | ||||||
|     "useVersionCodeAsOSVersion": "Użyj kodu wersji aplikacji jako wersji wykrytej przez system operacyjny", |     "useVersionCodeAsOSVersion": "Użyj versionCode aplikacji jako wersji wykrytej przez system operacyjny", | ||||||
|     "requestHeader": "Nagłówek żądania", |     "requestHeader": "Nagłówek żądania", | ||||||
|     "useLatestAssetDateAsReleaseDate": "Użyj najnowszego przesłanego zasobu jako daty wydania", |     "useLatestAssetDateAsReleaseDate": "Użyj najnowszego przesłanego zasobu jako daty wydania", | ||||||
|     "defaultPseudoVersioningMethod": "Domyślna metoda pseudowersji", |     "defaultPseudoVersioningMethod": "Domyślna metoda pseudo-wersji", | ||||||
|     "partialAPKHash": "Częściowy skrót APK", |     "partialAPKHash": "Częściowy Hash pliku apk", | ||||||
|     "APKLinkHash": "Skrót łącza APK", |     "APKLinkHash": "Link Hash pliku apk", | ||||||
|     "directAPKLink": "Bezpośredni link APK", |     "directAPKLink": "Bezpośredni link do pliku apk", | ||||||
|     "pseudoVersionInUse": "Pseudowersja jest w użyciu", |     "pseudoVersionInUse": "Pseudo-wersja jest w użyciu", | ||||||
|     "installed": "Zainstalowano", |     "installed": "Zainstalowano", | ||||||
|     "latest": "Najnowszy", |     "latest": "Najnowsza", | ||||||
|     "invertRegEx": "Odwróć wyrażenie regularne", |     "invertRegEx": "Odwróć wyrażenie regularne", | ||||||
|     "note": "Uwaga", |     "note": "Uwaga", | ||||||
|     "selfHostedNote": "Lista rozwijana \"{}\" może być używana do uzyskiwania dostępu do samodzielnie hostowanych / niestandardowych instancji dowolnego źródła.", |     "selfHostedNote": "Wybierz \"{}\", aby uzyskać dostęp do samodzielnie hostowanych lub niestandardowych instancji dowolnego źródła.", | ||||||
|     "badDownload": "Nie można przeanalizować pliku APK (niekompatybilny lub częściowo pobrany).", |     "badDownload": "Nie można przeanalizować pliku apk (jest niekompatybilny lub częściowo pobrany)", | ||||||
|     "beforeNewInstallsShareToAppVerifier": "Udostępnianie nowych aplikacji za pomocą AppVerifier (jeśli dostępne)", |     "beforeNewInstallsShareToAppVerifier": "Udostępnij nowe aplikacje za pomocą weryfikatora aplikacji (jeśli jest dostępny)", | ||||||
|     "appVerifierInstructionToast": "Udostępnij w AppVerifier, a następnie wróć tutaj, gdy będziesz gotowy.", |     "appVerifierInstructionToast": "Udostępnij do weryfikatora aplikacji, a następnie wróć tutaj.", | ||||||
|     "wiki": "Pomoc/Wiki", |     "wiki": "Pomoc/Wiki", | ||||||
|     "crowdsourcedConfigsLabel": "Konfiguracje aplikacji pochodzące z crowdsourcingu (korzystanie na własne ryzyko)", |     "crowdsourcedConfigsLabel": "Baza konfiguracji", | ||||||
|     "crowdsourcedConfigsShort": "Konfiguracje aplikacji pochodzące z crowdsourcingu", |     "crowdsourcedConfigsShort": "Baza konfiguracji", | ||||||
|     "allowInsecure": "Zezwalaj na niezabezpieczone żądania HTTP", |     "allowInsecure": "Zezwalaj na niezabezpieczone żądania HTTP", | ||||||
|     "stayOneVersionBehind": "Pozostań jedną wersję za najnowszą", |     "stayOneVersionBehind": "Pozostań jedną wersję w tyle za najnowszą", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "Usunąć aplikację?", |         "one": "Usunąć aplikację?", | ||||||
|         "few": "Usunąć aplikacje?", |         "few": "Usunąć aplikacje?", | ||||||
| @@ -391,8 +390,10 @@ | |||||||
|         "other": "{} i {} inne apki zostały zaktualizowane." |         "other": "{} i {} inne apki zostały zaktualizowane." | ||||||
|     }, |     }, | ||||||
|     "xAndNMoreUpdatesFailed": { |     "xAndNMoreUpdatesFailed": { | ||||||
|         "one": "Nie udało się zaktualizować {} i 1 innej aplikacji.", |         "one": "Błąd aktualizacji {} i 1 innej apki.", | ||||||
|         "other": "Nie udało się zaktualizować {} i {} więcej aplikacji." |         "few": "Błąd aktualizacji {} i {} innych apek.", | ||||||
|  |         "many": "Błąd aktualizacji {} i {} innych apek.", | ||||||
|  |         "other": "Błąd aktualizacji {} i {} innych apek." | ||||||
|     }, |     }, | ||||||
|     "xAndNMoreUpdatesPossiblyInstalled": { |     "xAndNMoreUpdatesPossiblyInstalled": { | ||||||
|         "one": "{} i 1 inna apka mogły zostać zaktualizowane.", |         "one": "{} i 1 inna apka mogły zostać zaktualizowane.", | ||||||
| @@ -401,7 +402,9 @@ | |||||||
|         "other": "{} i {} inne apki mogły zostać zaktualizowane." |         "other": "{} i {} inne apki mogły zostać zaktualizowane." | ||||||
|     }, |     }, | ||||||
|     "apk": { |     "apk": { | ||||||
|         "one": "{} APK", |         "one": "{} apk", | ||||||
|         "other": "{} APK" |         "few": "{} apki", | ||||||
|  |         "many": "{} apek", | ||||||
|  |         "other": "{} apki" | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -179,8 +179,6 @@ | |||||||
|     "appWithIdOrNameNotFound": "Nenhum aplicativo foi encontrado com esse ID ou nome", |     "appWithIdOrNameNotFound": "Nenhum aplicativo foi encontrado com esse ID ou nome", | ||||||
|     "reposHaveMultipleApps": "Repositórios podem conter múltiplos aplicativos", |     "reposHaveMultipleApps": "Repositórios podem conter múltiplos aplicativos", | ||||||
|     "fdroidThirdPartyRepo": "Repositórios de terceiros F-Droid", |     "fdroidThirdPartyRepo": "Repositórios de terceiros F-Droid", | ||||||
|     "steamMobile": "Steam para celular", |  | ||||||
|     "steamChat": "Chat do Steam", |  | ||||||
|     "install": "Instalar", |     "install": "Instalar", | ||||||
|     "markInstalled": "Marcar instalado", |     "markInstalled": "Marcar instalado", | ||||||
|     "update": "Atualizar", |     "update": "Atualizar", | ||||||
| @@ -258,6 +256,7 @@ | |||||||
|     "intermediateLink": "Link intermediário", |     "intermediateLink": "Link intermediário", | ||||||
|     "exemptFromBackgroundUpdates": "Isento de atualizações em segundo-plano (se ativadas)", |     "exemptFromBackgroundUpdates": "Isento de atualizações em segundo-plano (se ativadas)", | ||||||
|     "bgUpdatesOnWiFiOnly": "Desative as atualizações em segundo-plano quando não estiver conectado no Wi-Fi", |     "bgUpdatesOnWiFiOnly": "Desative as atualizações em segundo-plano quando não estiver conectado no Wi-Fi", | ||||||
|  |     "bgUpdatesWhileChargingOnly": "Desativar actualizações em segundo plano quando não estiver a carregar", | ||||||
|     "autoSelectHighestVersionCode": "Auto-selecionar a versão mais recente", |     "autoSelectHighestVersionCode": "Auto-selecionar a versão mais recente", | ||||||
|     "versionExtractionRegEx": "Regex de extração de versão", |     "versionExtractionRegEx": "Regex de extração de versão", | ||||||
|     "trimVersionString": "Cortar a cadeia de caracteres da versão com RegEx", |     "trimVersionString": "Cortar a cadeia de caracteres da versão com RegEx", | ||||||
|   | |||||||
| @@ -179,8 +179,6 @@ | |||||||
|     "appWithIdOrNameNotFound": "Приложение с таким ID или названием не было найдено", |     "appWithIdOrNameNotFound": "Приложение с таким ID или названием не было найдено", | ||||||
|     "reposHaveMultipleApps": "В хранилище несколько приложений", |     "reposHaveMultipleApps": "В хранилище несколько приложений", | ||||||
|     "fdroidThirdPartyRepo": "Сторонние репозитории F-Droid", |     "fdroidThirdPartyRepo": "Сторонние репозитории F-Droid", | ||||||
|     "steamMobile": "Приложение Steam", |  | ||||||
|     "steamChat": "Steam Chat", |  | ||||||
|     "install": "Установить", |     "install": "Установить", | ||||||
|     "markInstalled": "Пометить как установленное", |     "markInstalled": "Пометить как установленное", | ||||||
|     "update": "Обновить", |     "update": "Обновить", | ||||||
| @@ -258,6 +256,7 @@ | |||||||
|     "intermediateLink": "Промежуточная ссылка", |     "intermediateLink": "Промежуточная ссылка", | ||||||
|     "exemptFromBackgroundUpdates": "Исключить из фоновых обновлений (если включено)", |     "exemptFromBackgroundUpdates": "Исключить из фоновых обновлений (если включено)", | ||||||
|     "bgUpdatesOnWiFiOnly": "Отключить фоновые обновления, если нет соединения с Wi-Fi", |     "bgUpdatesOnWiFiOnly": "Отключить фоновые обновления, если нет соединения с Wi-Fi", | ||||||
|  |     "bgUpdatesWhileChargingOnly": "Отключение фоновых обновлений при отсутствии зарядки", | ||||||
|     "autoSelectHighestVersionCode": "Автоматически выбирать APK с актуальной версией кода", |     "autoSelectHighestVersionCode": "Автоматически выбирать APK с актуальной версией кода", | ||||||
|     "versionExtractionRegEx": "Регулярное выражение для извлечения версии", |     "versionExtractionRegEx": "Регулярное выражение для извлечения версии", | ||||||
|     "trimVersionString": "Обрезка строки версии с помощью RegEx", |     "trimVersionString": "Обрезка строки версии с помощью RegEx", | ||||||
|   | |||||||
| @@ -12,7 +12,8 @@ const neverAutoTranslate = { | |||||||
|     root: ['*'], |     root: ['*'], | ||||||
|     obtainiumExportHyphenatedLowercase: ['*'], |     obtainiumExportHyphenatedLowercase: ['*'], | ||||||
|     theme: ['de'], |     theme: ['de'], | ||||||
|     appId: ['de'] |     appId: ['de'], | ||||||
|  |     placeholder: ['pl'] | ||||||
| } | } | ||||||
|  |  | ||||||
| const translateText = async (text, targetLang, authKey) => { | const translateText = async (text, targetLang, authKey) => { | ||||||
|   | |||||||
| @@ -179,8 +179,6 @@ | |||||||
|     "appWithIdOrNameNotFound": "Ingen App funnen med det namnet eller ID", |     "appWithIdOrNameNotFound": "Ingen App funnen med det namnet eller ID", | ||||||
|     "reposHaveMultipleApps": "Förråd kan innehålla flera ApparR", |     "reposHaveMultipleApps": "Förråd kan innehålla flera ApparR", | ||||||
|     "fdroidThirdPartyRepo": "F-Droid Tredjeparts Förråd", |     "fdroidThirdPartyRepo": "F-Droid Tredjeparts Förråd", | ||||||
|     "steamMobile": "Steam Mobile", |  | ||||||
|     "steamChat": "Steam Chat", |  | ||||||
|     "install": "Installera", |     "install": "Installera", | ||||||
|     "markInstalled": "Märk Installerad", |     "markInstalled": "Märk Installerad", | ||||||
|     "update": "Uppdatera", |     "update": "Uppdatera", | ||||||
| @@ -258,6 +256,7 @@ | |||||||
|     "intermediateLink": "Mellanlänk", |     "intermediateLink": "Mellanlänk", | ||||||
|     "exemptFromBackgroundUpdates": "Undta från bakgrundsuppdateringar (om aktiverad)", |     "exemptFromBackgroundUpdates": "Undta från bakgrundsuppdateringar (om aktiverad)", | ||||||
|     "bgUpdatesOnWiFiOnly": "Inaktivera Bakgrundsuppdateringar utan WiFi", |     "bgUpdatesOnWiFiOnly": "Inaktivera Bakgrundsuppdateringar utan WiFi", | ||||||
|  |     "bgUpdatesWhileChargingOnly": "Inaktivera bakgrundsuppdateringar när du inte laddar", | ||||||
|     "autoSelectHighestVersionCode": "Välj automatiskt högsta versionskod APK", |     "autoSelectHighestVersionCode": "Välj automatiskt högsta versionskod APK", | ||||||
|     "versionExtractionRegEx": "Version Extraction RegEx", |     "versionExtractionRegEx": "Version Extraction RegEx", | ||||||
|     "trimVersionString": "Trimma versionssträng med RegEx", |     "trimVersionString": "Trimma versionssträng med RegEx", | ||||||
|   | |||||||
| @@ -179,8 +179,6 @@ | |||||||
|     "appWithIdOrNameNotFound": "Bu kimlik veya ada sahip bir uygulama bulunamadı", |     "appWithIdOrNameNotFound": "Bu kimlik veya ada sahip bir uygulama bulunamadı", | ||||||
|     "reposHaveMultipleApps": "Depolar birden fazla uygulama içerebilir", |     "reposHaveMultipleApps": "Depolar birden fazla uygulama içerebilir", | ||||||
|     "fdroidThirdPartyRepo": "F-Droid Üçüncü Parti Depo", |     "fdroidThirdPartyRepo": "F-Droid Üçüncü Parti Depo", | ||||||
|     "steamMobile": "Steam Mobil", |  | ||||||
|     "steamChat": "Steam Sohbet", |  | ||||||
|     "install": "Yükle", |     "install": "Yükle", | ||||||
|     "markInstalled": "Yüklendi olarak İşaretle", |     "markInstalled": "Yüklendi olarak İşaretle", | ||||||
|     "update": "Güncelle", |     "update": "Güncelle", | ||||||
| @@ -258,6 +256,7 @@ | |||||||
|     "intermediateLink": "Ara bağlantı", |     "intermediateLink": "Ara bağlantı", | ||||||
|     "exemptFromBackgroundUpdates": "Arka plan güncellemelerinden muaf tut (etkinse)", |     "exemptFromBackgroundUpdates": "Arka plan güncellemelerinden muaf tut (etkinse)", | ||||||
|     "bgUpdatesOnWiFiOnly": "WiFi olmadığında arka plan güncellemelerini devre dışı bırak", |     "bgUpdatesOnWiFiOnly": "WiFi olmadığında arka plan güncellemelerini devre dışı bırak", | ||||||
|  |     "bgUpdatesWhileChargingOnly": "Şarj olmadığında arka plan güncellemelerini devre dışı bırakma", | ||||||
|     "autoSelectHighestVersionCode": "Otomatik olarak en yüksek sürüm kodunu seç", |     "autoSelectHighestVersionCode": "Otomatik olarak en yüksek sürüm kodunu seç", | ||||||
|     "versionExtractionRegEx": "Sürüm Çıkarma Düzenli İfade", |     "versionExtractionRegEx": "Sürüm Çıkarma Düzenli İfade", | ||||||
|     "trimVersionString": "RegEx ile Sürüm Dizesini Kırpma", |     "trimVersionString": "RegEx ile Sürüm Dizesini Kırpma", | ||||||
|   | |||||||
| @@ -179,8 +179,6 @@ | |||||||
|     "appWithIdOrNameNotFound": "Застосунок з таким ідентифікатором або назвою не знайдено", |     "appWithIdOrNameNotFound": "Застосунок з таким ідентифікатором або назвою не знайдено", | ||||||
|     "reposHaveMultipleApps": "Сховища можуть містити кілька застосунків", |     "reposHaveMultipleApps": "Сховища можуть містити кілька застосунків", | ||||||
|     "fdroidThirdPartyRepo": "F-Droid Стороннє сховище", |     "fdroidThirdPartyRepo": "F-Droid Стороннє сховище", | ||||||
|     "steamMobile": "Мобільний Steam", |  | ||||||
|     "steamChat": "Чат Steam", |  | ||||||
|     "install": "Встановити", |     "install": "Встановити", | ||||||
|     "markInstalled": "Позначити як встановлене", |     "markInstalled": "Позначити як встановлене", | ||||||
|     "update": "Оновити", |     "update": "Оновити", | ||||||
| @@ -258,6 +256,7 @@ | |||||||
|     "intermediateLink": "Проміжне посилання", |     "intermediateLink": "Проміжне посилання", | ||||||
|     "exemptFromBackgroundUpdates": "Виключено з фонових оновлень (якщо ввімкнено)", |     "exemptFromBackgroundUpdates": "Виключено з фонових оновлень (якщо ввімкнено)", | ||||||
|     "bgUpdatesOnWiFiOnly": "Вимкнути фонові оновлення поза Wi-Fi", |     "bgUpdatesOnWiFiOnly": "Вимкнути фонові оновлення поза Wi-Fi", | ||||||
|  |     "bgUpdatesWhileChargingOnly": "Вимкнути фонові оновлення, коли не заряджається", | ||||||
|     "autoSelectHighestVersionCode": "Автоматичний вибір APK з найвищим кодом версії", |     "autoSelectHighestVersionCode": "Автоматичний вибір APK з найвищим кодом версії", | ||||||
|     "versionExtractionRegEx": "Регулярний вираз для вилучення рядка версії", |     "versionExtractionRegEx": "Регулярний вираз для вилучення рядка версії", | ||||||
|     "trimVersionString": "Обрізати рядок версії за допомогою RegEx", |     "trimVersionString": "Обрізати рядок версії за допомогою RegEx", | ||||||
|   | |||||||
| @@ -179,8 +179,6 @@ | |||||||
|     "appWithIdOrNameNotFound": "Không tìm thấy ứng dụng nào có ID hoặc tên đó", |     "appWithIdOrNameNotFound": "Không tìm thấy ứng dụng nào có ID hoặc tên đó", | ||||||
|     "reposHaveMultipleApps": "Kho có thể chứa nhiều Ứng dụng", |     "reposHaveMultipleApps": "Kho có thể chứa nhiều Ứng dụng", | ||||||
|     "fdroidThirdPartyRepo": "Kho lưu trữ bên thứ ba F-Droid", |     "fdroidThirdPartyRepo": "Kho lưu trữ bên thứ ba F-Droid", | ||||||
|     "steamMobile": "Điện thoại di động hơi nước", |  | ||||||
|     "steamChat": "Trò chuyện hơi nước", |  | ||||||
|     "install": "Cài đặt", |     "install": "Cài đặt", | ||||||
|     "markInstalled": "Đánh dấu là đã cài đặt", |     "markInstalled": "Đánh dấu là đã cài đặt", | ||||||
|     "update": "Cập nhật", |     "update": "Cập nhật", | ||||||
| @@ -258,6 +256,7 @@ | |||||||
|     "intermediateLink": "Liên kết trung gian", |     "intermediateLink": "Liên kết trung gian", | ||||||
|     "exemptFromBackgroundUpdates": "Miễn cập nhật nền (nếu được bật)", |     "exemptFromBackgroundUpdates": "Miễn cập nhật nền (nếu được bật)", | ||||||
|     "bgUpdatesOnWiFiOnly": "Tắt cập nhật nền khi không có WiFi", |     "bgUpdatesOnWiFiOnly": "Tắt cập nhật nền khi không có WiFi", | ||||||
|  |     "bgUpdatesWhileChargingOnly": "Disable background updates when not charging", | ||||||
|     "autoSelectHighestVersionCode": "Tự động chọn APK mã phiên bản cao nhất", |     "autoSelectHighestVersionCode": "Tự động chọn APK mã phiên bản cao nhất", | ||||||
|     "versionExtractionRegEx": "Trích xuất phiên bản RegEx", |     "versionExtractionRegEx": "Trích xuất phiên bản RegEx", | ||||||
|     "trimVersionString": "Trim Version String With RegEx", |     "trimVersionString": "Trim Version String With RegEx", | ||||||
|   | |||||||
| @@ -179,8 +179,6 @@ | |||||||
|     "appWithIdOrNameNotFound": "找不到具有該 ID 或名稱的應用程式", |     "appWithIdOrNameNotFound": "找不到具有該 ID 或名稱的應用程式", | ||||||
|     "reposHaveMultipleApps": "倉庫可能包含多個應用程式", |     "reposHaveMultipleApps": "倉庫可能包含多個應用程式", | ||||||
|     "fdroidThirdPartyRepo": "F-Droid 第三方倉庫", |     "fdroidThirdPartyRepo": "F-Droid 第三方倉庫", | ||||||
|     "steamMobile": "Steam 行動版", |  | ||||||
|     "steamChat": "Steam 聊天", |  | ||||||
|     "install": "安裝", |     "install": "安裝", | ||||||
|     "markInstalled": "標記為已安裝", |     "markInstalled": "標記為已安裝", | ||||||
|     "update": "更新", |     "update": "更新", | ||||||
| @@ -258,6 +256,7 @@ | |||||||
|     "intermediateLink": "中間連結", |     "intermediateLink": "中間連結", | ||||||
|     "exemptFromBackgroundUpdates": "免除背景更新(若已啟用)", |     "exemptFromBackgroundUpdates": "免除背景更新(若已啟用)", | ||||||
|     "bgUpdatesOnWiFiOnly": "停用非 WiFi 的背景更新", |     "bgUpdatesOnWiFiOnly": "停用非 WiFi 的背景更新", | ||||||
|  |     "bgUpdatesWhileChargingOnly": "Disable background updates when not charging", | ||||||
|     "autoSelectHighestVersionCode": "自動選擇最高 versionCode 的 APK", |     "autoSelectHighestVersionCode": "自動選擇最高 versionCode 的 APK", | ||||||
|     "versionExtractionRegEx": "版本字串提取正則表達式", |     "versionExtractionRegEx": "版本字串提取正則表達式", | ||||||
|     "trimVersionString": "用正則表達式修剪版本字串", |     "trimVersionString": "用正則表達式修剪版本字串", | ||||||
|   | |||||||
| @@ -179,8 +179,6 @@ | |||||||
|     "appWithIdOrNameNotFound": "未找到符合此 ID 或名称的应用", |     "appWithIdOrNameNotFound": "未找到符合此 ID 或名称的应用", | ||||||
|     "reposHaveMultipleApps": "存储库中可能包含多个应用", |     "reposHaveMultipleApps": "存储库中可能包含多个应用", | ||||||
|     "fdroidThirdPartyRepo": "F-Droid 第三方存储库", |     "fdroidThirdPartyRepo": "F-Droid 第三方存储库", | ||||||
|     "steamMobile": "Steam Mobile", |  | ||||||
|     "steamChat": "Steam Chat", |  | ||||||
|     "install": "安装", |     "install": "安装", | ||||||
|     "markInstalled": "标记为已安装", |     "markInstalled": "标记为已安装", | ||||||
|     "update": "更新", |     "update": "更新", | ||||||
| @@ -258,6 +256,7 @@ | |||||||
|     "intermediateLink": "中转链接", |     "intermediateLink": "中转链接", | ||||||
|     "exemptFromBackgroundUpdates": "禁用后台更新(仅此应用生效,即使已启用全局后台更新)", |     "exemptFromBackgroundUpdates": "禁用后台更新(仅此应用生效,即使已启用全局后台更新)", | ||||||
|     "bgUpdatesOnWiFiOnly": "未连接 Wi-Fi 时禁用后台更新", |     "bgUpdatesOnWiFiOnly": "未连接 Wi-Fi 时禁用后台更新", | ||||||
|  |     "bgUpdatesWhileChargingOnly": "不充电时禁用后台更新", | ||||||
|     "autoSelectHighestVersionCode": "自动选择内部版本号最高的 APK 文件", |     "autoSelectHighestVersionCode": "自动选择内部版本号最高的 APK 文件", | ||||||
|     "versionExtractionRegEx": "提取版本号的正则表达式", |     "versionExtractionRegEx": "提取版本号的正则表达式", | ||||||
|     "trimVersionString": "使用 RegEx 修剪版本字符串", |     "trimVersionString": "使用 RegEx 修剪版本字符串", | ||||||
|   | |||||||
| @@ -95,10 +95,9 @@ class APKPure extends AppSource { | |||||||
|                 // Unclear why there can even be multiple APKs for the same version and arch |                 // Unclear why there can even be multiple APKs for the same version and arch | ||||||
|                 var apkInfo = e.nextElementSibling?.querySelector('div.info'); |                 var apkInfo = e.nextElementSibling?.querySelector('div.info'); | ||||||
|                 String? versionCode = RegExp('[0-9]+') |                 String? versionCode = RegExp('[0-9]+') | ||||||
|                     .firstMatch(apkInfo |                     .firstMatch( | ||||||
|                             ?.querySelector('div.info-top span.code') |                         apkInfo?.querySelector('div.info-top .code')?.text ?? | ||||||
|                             ?.text ?? |                             '') | ||||||
|                         '') |  | ||||||
|                     ?.group(0) |                     ?.group(0) | ||||||
|                     ?.trim(); |                     ?.trim(); | ||||||
|                 var types = apkInfo |                 var types = apkInfo | ||||||
| @@ -165,9 +164,15 @@ class APKPure extends AppSource { | |||||||
|     String host = Uri.parse(standardUrl).host; |     String host = Uri.parse(standardUrl).host; | ||||||
|  |  | ||||||
|     var res0 = await sourceRequest('$standardUrl/versions', additionalSettings); |     var res0 = await sourceRequest('$standardUrl/versions', additionalSettings); | ||||||
|  |     var decodedStandardUrl = standardUrl; | ||||||
|  |     try { | ||||||
|  |       decodedStandardUrl = Uri.decodeFull(decodedStandardUrl); | ||||||
|  |     } catch (e) { | ||||||
|  |       // | ||||||
|  |     } | ||||||
|     var versionLinks = await grabLinksCommon(res0, { |     var versionLinks = await grabLinksCommon(res0, { | ||||||
|       'skipSort': true, |       'skipSort': true, | ||||||
|       'customLinkFilterRegex': '$standardUrl/download/[^/]+\$' |       'customLinkFilterRegex': '$decodedStandardUrl/download/[^/]+\$' | ||||||
|     }); |     }); | ||||||
|  |  | ||||||
|     var supportedArchs = (await DeviceInfoPlugin().androidInfo).supportedAbis; |     var supportedArchs = (await DeviceInfoPlugin().androidInfo).supportedAbis; | ||||||
|   | |||||||
| @@ -45,7 +45,7 @@ class FDroid extends AppSource { | |||||||
|     RegExpMatch? match = standardUrlRegExB.firstMatch(url); |     RegExpMatch? match = standardUrlRegExB.firstMatch(url); | ||||||
|     if (match != null) { |     if (match != null) { | ||||||
|       url = |       url = | ||||||
|           'https://${Uri.parse(match.group(0)!).host}/packages/${Uri.parse(url).pathSegments.last}'; |           'https://${Uri.parse(match.group(0)!).host}/packages/${Uri.parse(url).pathSegments.where((s) => s.trim().isNotEmpty).last}'; | ||||||
|     } |     } | ||||||
|     RegExp standardUrlRegExA = RegExp( |     RegExp standardUrlRegExA = RegExp( | ||||||
|         '^https?://(www\\.)?${getSourceRegex(hosts)}/+packages/+[^/]+', |         '^https?://(www\\.)?${getSourceRegex(hosts)}/+packages/+[^/]+', | ||||||
|   | |||||||
| @@ -18,7 +18,7 @@ String ensureAbsoluteUrl(String ambiguousUrl, Uri referenceAbsoluteUrl) { | |||||||
|       .where((element) => element.trim().isNotEmpty) |       .where((element) => element.trim().isNotEmpty) | ||||||
|       .toList(); |       .toList(); | ||||||
|   String absoluteUrl; |   String absoluteUrl; | ||||||
|   if (ambiguousUrl.startsWith('/') || currPathSegments.isEmpty) { |   if (ambiguousUrl.startsWith('/')) { | ||||||
|     absoluteUrl = '${referenceAbsoluteUrl.origin}$ambiguousUrl'; |     absoluteUrl = '${referenceAbsoluteUrl.origin}$ambiguousUrl'; | ||||||
|   } else if (currPathSegments.isEmpty) { |   } else if (currPathSegments.isEmpty) { | ||||||
|     absoluteUrl = '${referenceAbsoluteUrl.origin}/$ambiguousUrl'; |     absoluteUrl = '${referenceAbsoluteUrl.origin}/$ambiguousUrl'; | ||||||
|   | |||||||
| @@ -1,37 +0,0 @@ | |||||||
| import 'dart:convert'; |  | ||||||
| import 'package:http/http.dart'; |  | ||||||
| import 'package:obtainium/custom_errors.dart'; |  | ||||||
| import 'package:obtainium/providers/source_provider.dart'; |  | ||||||
|  |  | ||||||
| class Signal extends AppSource { |  | ||||||
|   Signal() { |  | ||||||
|     hosts = ['signal.org']; |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   @override |  | ||||||
|   String sourceSpecificStandardizeURL(String url, {bool forSelection = false}) { |  | ||||||
|     return 'https://${hosts[0]}'; |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   @override |  | ||||||
|   Future<APKDetails> getLatestAPKDetails( |  | ||||||
|     String standardUrl, |  | ||||||
|     Map<String, dynamic> additionalSettings, |  | ||||||
|   ) async { |  | ||||||
|     Response res = await sourceRequest( |  | ||||||
|         'https://updates.${hosts[0]}/android/latest.json', additionalSettings); |  | ||||||
|     if (res.statusCode == 200) { |  | ||||||
|       var json = jsonDecode(res.body); |  | ||||||
|       String? apkUrl = json['url']; |  | ||||||
|       List<String> apkUrls = apkUrl == null ? [] : [apkUrl]; |  | ||||||
|       String? version = json['versionName']; |  | ||||||
|       if (version == null) { |  | ||||||
|         throw NoVersionError(); |  | ||||||
|       } |  | ||||||
|       return APKDetails( |  | ||||||
|           version, getApkUrlsFromUrls(apkUrls), AppNames(name, 'Signal')); |  | ||||||
|     } else { |  | ||||||
|       throw getObtainiumHttpError(res); |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @@ -1,63 +0,0 @@ | |||||||
| import 'package:easy_localization/easy_localization.dart'; |  | ||||||
| import 'package:html/parser.dart'; |  | ||||||
| import 'package:http/http.dart'; |  | ||||||
| import 'package:obtainium/components/generated_form.dart'; |  | ||||||
| import 'package:obtainium/custom_errors.dart'; |  | ||||||
| import 'package:obtainium/providers/source_provider.dart'; |  | ||||||
|  |  | ||||||
| class SteamMobile extends AppSource { |  | ||||||
|   SteamMobile() { |  | ||||||
|     hosts = ['store.steampowered.com']; |  | ||||||
|     name = 'Steam'; |  | ||||||
|     additionalSourceAppSpecificSettingFormItems = [ |  | ||||||
|       [ |  | ||||||
|         GeneratedFormDropdown('app', apks.entries.toList(), |  | ||||||
|             label: tr('app'), defaultValue: apks.entries.toList()[0].key) |  | ||||||
|       ] |  | ||||||
|     ]; |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   final apks = {'steam': tr('steamMobile'), 'steam-chat-app': tr('steamChat')}; |  | ||||||
|  |  | ||||||
|   @override |  | ||||||
|   String sourceSpecificStandardizeURL(String url, {bool forSelection = false}) { |  | ||||||
|     return 'https://${hosts[0]}'; |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   @override |  | ||||||
|   Future<APKDetails> getLatestAPKDetails( |  | ||||||
|     String standardUrl, |  | ||||||
|     Map<String, dynamic> additionalSettings, |  | ||||||
|   ) async { |  | ||||||
|     Response res = |  | ||||||
|         await sourceRequest('https://${hosts[0]}/mobile', additionalSettings); |  | ||||||
|     if (res.statusCode == 200) { |  | ||||||
|       var apkNamePrefix = additionalSettings['app'] as String?; |  | ||||||
|       if (apkNamePrefix == null) { |  | ||||||
|         throw NoReleasesError(); |  | ||||||
|       } |  | ||||||
|       String apkInURLRegexPattern = |  | ||||||
|           '/$apkNamePrefix-([0-9]+\\.)*[0-9]+\\.apk\$'; |  | ||||||
|       var links = parse(res.body) |  | ||||||
|           .querySelectorAll('a') |  | ||||||
|           .map((e) => e.attributes['href'] ?? '') |  | ||||||
|           .where((e) => RegExp('https://.*$apkInURLRegexPattern').hasMatch(e)) |  | ||||||
|           .toList(); |  | ||||||
|  |  | ||||||
|       if (links.isEmpty) { |  | ||||||
|         throw NoReleasesError(); |  | ||||||
|       } |  | ||||||
|       var versionMatch = RegExp(apkInURLRegexPattern).firstMatch(links[0]); |  | ||||||
|       if (versionMatch == null) { |  | ||||||
|         throw NoVersionError(); |  | ||||||
|       } |  | ||||||
|       var version = links[0].substring( |  | ||||||
|           versionMatch.start + apkNamePrefix.length + 2, versionMatch.end - 4); |  | ||||||
|       var apkUrls = [links[0]]; |  | ||||||
|       return APKDetails(version, getApkUrlsFromUrls(apkUrls), |  | ||||||
|           AppNames(name, apks[apkNamePrefix]!)); |  | ||||||
|     } else { |  | ||||||
|       throw getObtainiumHttpError(res); |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @@ -42,19 +42,16 @@ class Uptodown extends AppSource { | |||||||
|     String? version = html.querySelector('div.version')?.innerHtml; |     String? version = html.querySelector('div.version')?.innerHtml; | ||||||
|     String? name = html.querySelector('#detail-app-name')?.innerHtml.trim(); |     String? name = html.querySelector('#detail-app-name')?.innerHtml.trim(); | ||||||
|     String? author = html.querySelector('#author-link')?.innerHtml.trim(); |     String? author = html.querySelector('#author-link')?.innerHtml.trim(); | ||||||
|     var detailElements = html.querySelectorAll('#technical-information td'); |     var detailElements = html | ||||||
|     String? appId = (detailElements.elementAtOrNull(2))?.innerHtml.trim(); |         .querySelectorAll('#technical-information td') | ||||||
|     String? dateStr = (detailElements.elementAtOrNull(29))?.innerHtml.trim(); |         .map((e) => e.innerHtml.trim()) | ||||||
|  |         .where((e) => !e.startsWith('<')) | ||||||
|  |         .toList(); | ||||||
|  |     String? appId = detailElements.elementAtOrNull(0); | ||||||
|  |     String? dateStr = detailElements.elementAtOrNull(6); | ||||||
|     String? fileId = |     String? fileId = | ||||||
|         html.querySelector('#detail-app-name')?.attributes['data-file-id']; |         html.querySelector('#detail-app-name')?.attributes['data-file-id']; | ||||||
|     String? extension = html |     String? extension = detailElements.elementAtOrNull(7)?.toLowerCase(); | ||||||
|         .querySelectorAll('td') |  | ||||||
|         .where((e) => e.text.toLowerCase().trim() == 'file type') |  | ||||||
|         .firstOrNull |  | ||||||
|         ?.nextElementSibling |  | ||||||
|         ?.text |  | ||||||
|         .toLowerCase() |  | ||||||
|         .trim(); |  | ||||||
|     return Map.fromEntries([ |     return Map.fromEntries([ | ||||||
|       MapEntry('version', version), |       MapEntry('version', version), | ||||||
|       MapEntry('appId', appId), |       MapEntry('appId', appId), | ||||||
|   | |||||||
| @@ -538,6 +538,38 @@ class AddAppPageState extends State<AddAppPage> { | |||||||
|                       }); |                       }); | ||||||
|                     } |                     } | ||||||
|                   }), |                   }), | ||||||
|  |             if (pickedSource != null && pickedSource!.enforceTrackOnly) | ||||||
|  |               GeneratedForm( | ||||||
|  |                   key: Key( | ||||||
|  |                       '${pickedSource.runtimeType.toString()}-${pickedSource?.hostChanged.toString()}-${pickedSource?.hostIdenticalDespiteAnyChange.toString()}-appId'), | ||||||
|  |                   items: [ | ||||||
|  |                     [ | ||||||
|  |                       GeneratedFormTextField('appId', | ||||||
|  |                           label: '${tr('appId')} - ${tr('custom')}', | ||||||
|  |                           required: false, | ||||||
|  |                           additionalValidators: [ | ||||||
|  |                             (value) { | ||||||
|  |                               if (value == null || value.isEmpty) { | ||||||
|  |                                 return null; | ||||||
|  |                               } | ||||||
|  |                               final isValid = RegExp( | ||||||
|  |                                       r'^([A-Za-z]{1}[A-Za-z\d_]*\.)+[A-Za-z][A-Za-z\d_]*$') | ||||||
|  |                                   .hasMatch(value); | ||||||
|  |                               if (!isValid) { | ||||||
|  |                                 return tr('invalidInput'); | ||||||
|  |                               } | ||||||
|  |                               return null; | ||||||
|  |                             } | ||||||
|  |                           ]), | ||||||
|  |                     ] | ||||||
|  |                   ], | ||||||
|  |                   onValueChanges: (values, valid, isBuilding) { | ||||||
|  |                     if (!isBuilding) { | ||||||
|  |                       setState(() { | ||||||
|  |                         additionalSettings['appId'] = values['appId']; | ||||||
|  |                       }); | ||||||
|  |                     } | ||||||
|  |                   }), | ||||||
|           ], |           ], | ||||||
|         ); |         ); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -419,6 +419,25 @@ class _SettingsPageState extends State<SettingsPage> { | |||||||
|                                                           }) |                                                           }) | ||||||
|                                                     ], |                                                     ], | ||||||
|                                                   ), |                                                   ), | ||||||
|  |                                                   height16, | ||||||
|  |                                                   Row( | ||||||
|  |                                                     mainAxisAlignment: | ||||||
|  |                                                         MainAxisAlignment | ||||||
|  |                                                             .spaceBetween, | ||||||
|  |                                                     children: [ | ||||||
|  |                                                       Flexible( | ||||||
|  |                                                           child: Text(tr( | ||||||
|  |                                                               'bgUpdatesWhileChargingOnly'))), | ||||||
|  |                                                       Switch( | ||||||
|  |                                                           value: settingsProvider | ||||||
|  |                                                               .bgUpdatesWhileChargingOnly, | ||||||
|  |                                                           onChanged: (value) { | ||||||
|  |                                                             settingsProvider | ||||||
|  |                                                                     .bgUpdatesWhileChargingOnly = | ||||||
|  |                                                                 value; | ||||||
|  |                                                           }) | ||||||
|  |                                                     ], | ||||||
|  |                                                   ), | ||||||
|                                                 ], |                                                 ], | ||||||
|                                               ), |                                               ), | ||||||
|                                           ], |                                           ], | ||||||
|   | |||||||
| @@ -5,6 +5,7 @@ import 'dart:async'; | |||||||
| import 'dart:convert'; | import 'dart:convert'; | ||||||
| import 'dart:io'; | import 'dart:io'; | ||||||
| import 'dart:math'; | import 'dart:math'; | ||||||
|  | import 'package:battery_plus/battery_plus.dart'; | ||||||
| import 'package:fluttertoast/fluttertoast.dart'; | import 'package:fluttertoast/fluttertoast.dart'; | ||||||
| import 'package:http/http.dart' as http; | import 'package:http/http.dart' as http; | ||||||
| import 'package:crypto/crypto.dart'; | import 'package:crypto/crypto.dart'; | ||||||
| @@ -699,6 +700,8 @@ class AppsProvider with ChangeNotifier { | |||||||
|       } |       } | ||||||
|     } |     } | ||||||
|     PackageInfo? appInfo = await getInstalledInfo(apps[file.appId]!.app.id); |     PackageInfo? appInfo = await getInstalledInfo(apps[file.appId]!.app.id); | ||||||
|  |     logs.add( | ||||||
|  |         'Installing "${newInfo.packageName}" version "${newInfo.versionName}" versionCode "${newInfo.versionCode}"${appInfo != null ? ' (from existing version "${appInfo.versionName}" versionCode "${appInfo.versionCode}")' : ''}'); | ||||||
|     if (appInfo != null && |     if (appInfo != null && | ||||||
|         newInfo.versionCode! < appInfo.versionCode! && |         newInfo.versionCode! < appInfo.versionCode! && | ||||||
|         !(await canDowngradeApps())) { |         !(await canDowngradeApps())) { | ||||||
| @@ -742,6 +745,10 @@ class AppsProvider with ChangeNotifier { | |||||||
|     return installed; |     return installed; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   Future<String> getStorageRootPath() async { | ||||||
|  |     return '/${(await getExternalStorageDirectory())!.uri.pathSegments.sublist(0, 3).join('/')}'; | ||||||
|  |   } | ||||||
|  |  | ||||||
|   Future<void> moveObbFile(File file, String appId) async { |   Future<void> moveObbFile(File file, String appId) async { | ||||||
|     if (!file.path.toLowerCase().endsWith('.obb')) return; |     if (!file.path.toLowerCase().endsWith('.obb')) return; | ||||||
|  |  | ||||||
| @@ -750,7 +757,7 @@ class AppsProvider with ChangeNotifier { | |||||||
|       await Permission.storage.request(); |       await Permission.storage.request(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     String obbDirPath = "/storage/emulated/0/Android/obb/$appId"; |     String obbDirPath = "${await getStorageRootPath()}/Android/obb/$appId"; | ||||||
|     Directory(obbDirPath).createSync(recursive: true); |     Directory(obbDirPath).createSync(recursive: true); | ||||||
|  |  | ||||||
|     String obbFileName = file.path.split("/").last; |     String obbFileName = file.path.split("/").last; | ||||||
| @@ -1029,8 +1036,17 @@ class AppsProvider with ChangeNotifier { | |||||||
|       if (apps[id]!.app.apkUrls.isNotEmpty || |       if (apps[id]!.app.apkUrls.isNotEmpty || | ||||||
|           apps[id]!.app.otherAssetUrls.isNotEmpty) { |           apps[id]!.app.otherAssetUrls.isNotEmpty) { | ||||||
|         // ignore: use_build_context_synchronously |         // ignore: use_build_context_synchronously | ||||||
|         fileUrl = await confirmAppFileUrl(apps[id]!.app, context, true, |         MapEntry<String, String>? tempFileUrl = await confirmAppFileUrl( | ||||||
|  |             apps[id]!.app, context, true, | ||||||
|             evenIfSingleChoice: true); |             evenIfSingleChoice: true); | ||||||
|  |         if (tempFileUrl != null) { | ||||||
|  |           fileUrl = MapEntry( | ||||||
|  |               tempFileUrl.key, | ||||||
|  |               await (SourceProvider().getSource(apps[id]!.app.url, | ||||||
|  |                       overrideSource: apps[id]!.app.overrideSource)) | ||||||
|  |                   .apkUrlPrefetchModifier(tempFileUrl.value, apps[id]!.app.url, | ||||||
|  |                       apps[id]!.app.additionalSettings)); | ||||||
|  |         } | ||||||
|       } |       } | ||||||
|       if (fileUrl != null) { |       if (fileUrl != null) { | ||||||
|         filesToDownload.add(MapEntry(fileUrl, apps[id]!.app)); |         filesToDownload.add(MapEntry(fileUrl, apps[id]!.app)); | ||||||
| @@ -1043,17 +1059,7 @@ class AppsProvider with ChangeNotifier { | |||||||
|  |  | ||||||
|     Future<void> downloadFn(MapEntry<String, String> fileUrl, App app) async { |     Future<void> downloadFn(MapEntry<String, String> fileUrl, App app) async { | ||||||
|       try { |       try { | ||||||
|         var exportDir = await settingsProvider.getExportDir(); |         String downloadPath = '${await getStorageRootPath()}/Download'; | ||||||
|         String downloadPath = '/storage/emulated/0/Download'; |  | ||||||
|         bool downloadsAccessible = false; |  | ||||||
|         try { |  | ||||||
|           downloadsAccessible = Directory(downloadPath).existsSync(); |  | ||||||
|         } catch (e) { |  | ||||||
|           // |  | ||||||
|         } |  | ||||||
|         if (!downloadsAccessible && exportDir != null) { |  | ||||||
|           downloadPath = exportDir.path; |  | ||||||
|         } |  | ||||||
|         await downloadFile(fileUrl.value, fileUrl.key, true, |         await downloadFile(fileUrl.value, fileUrl.key, true, | ||||||
|             (double? progress) { |             (double? progress) { | ||||||
|           notificationsProvider |           notificationsProvider | ||||||
| @@ -1885,10 +1891,20 @@ Future<void> bgUpdateCheck(String taskId, Map<String, dynamic>? params) async { | |||||||
|         (<List<MapEntry<String, int>>>[])) |         (<List<MapEntry<String, int>>>[])) | ||||||
|   ]; |   ]; | ||||||
|  |  | ||||||
|   var networkRestricted = false; |   var networkRestricted = appsProvider.settingsProvider.bgUpdatesOnWiFiOnly && | ||||||
|   if (appsProvider.settingsProvider.bgUpdatesOnWiFiOnly) { |       !netResult.contains(ConnectivityResult.wifi) && | ||||||
|     networkRestricted = !netResult.contains(ConnectivityResult.wifi) && |       !netResult.contains(ConnectivityResult.ethernet); | ||||||
|         !netResult.contains(ConnectivityResult.ethernet); |  | ||||||
|  |   var chargingRestricted = | ||||||
|  |       appsProvider.settingsProvider.bgUpdatesWhileChargingOnly && | ||||||
|  |           (await Battery().batteryState) != BatteryState.charging; | ||||||
|  |  | ||||||
|  |   if (networkRestricted) { | ||||||
|  |     logs.add('BG update task: Network restriction in effect.'); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   if (chargingRestricted) { | ||||||
|  |     logs.add('BG update task: Charging restriction in effect.'); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   if (toCheck.isNotEmpty) { |   if (toCheck.isNotEmpty) { | ||||||
| @@ -1928,14 +1944,6 @@ Future<void> bgUpdateCheck(String taskId, Map<String, dynamic>? params) async { | |||||||
|     CheckingUpdatesNotification notif = CheckingUpdatesNotification( |     CheckingUpdatesNotification notif = CheckingUpdatesNotification( | ||||||
|         plural('apps', toCheck.length)); // The notif. to show while checking |         plural('apps', toCheck.length)); // The notif. to show while checking | ||||||
|  |  | ||||||
|     // Set a bool for when we're no on wifi/wired and the user doesn't want to download apps in that state |  | ||||||
|     var networkRestricted = false; |  | ||||||
|     if (appsProvider.settingsProvider.bgUpdatesOnWiFiOnly) { |  | ||||||
|       var netResult = await (Connectivity().checkConnectivity()); |  | ||||||
|       networkRestricted = !netResult.contains(ConnectivityResult.wifi) && |  | ||||||
|           !netResult.contains(ConnectivityResult.ethernet); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     try { |     try { | ||||||
|       // Check for updates |       // Check for updates | ||||||
|       notificationsProvider.notify(notif, cancelExisting: true); |       notificationsProvider.notify(notif, cancelExisting: true); | ||||||
| @@ -1983,6 +1991,7 @@ Future<void> bgUpdateCheck(String taskId, Map<String, dynamic>? params) async { | |||||||
|     // Filter out updates that will be installed silently (the rest go into toNotify) |     // Filter out updates that will be installed silently (the rest go into toNotify) | ||||||
|     for (var i = 0; i < updates.length; i++) { |     for (var i = 0; i < updates.length; i++) { | ||||||
|       if (networkRestricted || |       if (networkRestricted || | ||||||
|  |           chargingRestricted || | ||||||
|           !(await appsProvider.canInstallSilently(updates[i]))) { |           !(await appsProvider.canInstallSilently(updates[i]))) { | ||||||
|         if (updates[i].additionalSettings['skipUpdateNotifications'] != true) { |         if (updates[i].additionalSettings['skipUpdateNotifications'] != true) { | ||||||
|           toNotify.add(updates[i]); |           toNotify.add(updates[i]); | ||||||
| @@ -2029,7 +2038,7 @@ Future<void> bgUpdateCheck(String taskId, Map<String, dynamic>? params) async { | |||||||
|   } else { |   } else { | ||||||
|     // In install mode... |     // In install mode... | ||||||
|     // If you haven't explicitly been given updates to install, grab all available silent updates |     // If you haven't explicitly been given updates to install, grab all available silent updates | ||||||
|     if (toInstall.isEmpty && !networkRestricted) { |     if (toInstall.isEmpty && !networkRestricted && !chargingRestricted) { | ||||||
|       var temp = appsProvider.findExistingUpdates(installedOnly: true); |       var temp = appsProvider.findExistingUpdates(installedOnly: true); | ||||||
|       for (var i = 0; i < temp.length; i++) { |       for (var i = 0; i < temp.length; i++) { | ||||||
|         if (await appsProvider |         if (await appsProvider | ||||||
|   | |||||||
| @@ -349,6 +349,15 @@ class SettingsProvider with ChangeNotifier { | |||||||
|     notifyListeners(); |     notifyListeners(); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   bool get bgUpdatesWhileChargingOnly { | ||||||
|  |     return prefs?.getBool('bgUpdatesWhileChargingOnly') ?? false; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   set bgUpdatesWhileChargingOnly(bool val) { | ||||||
|  |     prefs?.setBool('bgUpdatesWhileChargingOnly', val); | ||||||
|  |     notifyListeners(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|   DateTime get lastCompletedBGCheckTime { |   DateTime get lastCompletedBGCheckTime { | ||||||
|     int? temp = prefs?.getInt('lastCompletedBGCheckTime'); |     int? temp = prefs?.getInt('lastCompletedBGCheckTime'); | ||||||
|     return temp != null |     return temp != null | ||||||
|   | |||||||
| @@ -23,10 +23,8 @@ import 'package:obtainium/app_sources/izzyondroid.dart'; | |||||||
| import 'package:obtainium/app_sources/html.dart'; | import 'package:obtainium/app_sources/html.dart'; | ||||||
| import 'package:obtainium/app_sources/jenkins.dart'; | import 'package:obtainium/app_sources/jenkins.dart'; | ||||||
| import 'package:obtainium/app_sources/neutroncode.dart'; | import 'package:obtainium/app_sources/neutroncode.dart'; | ||||||
| import 'package:obtainium/app_sources/signal.dart'; |  | ||||||
| import 'package:obtainium/app_sources/sourceforge.dart'; | import 'package:obtainium/app_sources/sourceforge.dart'; | ||||||
| import 'package:obtainium/app_sources/sourcehut.dart'; | import 'package:obtainium/app_sources/sourcehut.dart'; | ||||||
| import 'package:obtainium/app_sources/steammobile.dart'; |  | ||||||
| import 'package:obtainium/app_sources/telegramapp.dart'; | import 'package:obtainium/app_sources/telegramapp.dart'; | ||||||
| import 'package:obtainium/app_sources/tencent.dart'; | import 'package:obtainium/app_sources/tencent.dart'; | ||||||
| import 'package:obtainium/app_sources/uptodown.dart'; | import 'package:obtainium/app_sources/uptodown.dart'; | ||||||
| @@ -183,7 +181,7 @@ appJSONCompatibilityModifiers(Map<String, dynamic> json) { | |||||||
|       }).toList(); |       }).toList(); | ||||||
|     } |     } | ||||||
|     // Steam source apps should be converted to HTML (#1244) |     // Steam source apps should be converted to HTML (#1244) | ||||||
|     var legacySteamSourceApps = SteamMobile().apks.keys; |     var legacySteamSourceApps = ['steam', 'steam-chat-app']; | ||||||
|     if (legacySteamSourceApps.contains(additionalSettings['app'] ?? '')) { |     if (legacySteamSourceApps.contains(additionalSettings['app'] ?? '')) { | ||||||
|       json['url'] = '${json['url']}/mobile'; |       json['url'] = '${json['url']}/mobile'; | ||||||
|       var replacementAdditionalSettings = getDefaultValuesFromFormItems( |       var replacementAdditionalSettings = getDefaultValuesFromFormItems( | ||||||
| @@ -200,6 +198,22 @@ appJSONCompatibilityModifiers(Map<String, dynamic> json) { | |||||||
|       replacementAdditionalSettings['matchGroupToUse'] = '\$1'; |       replacementAdditionalSettings['matchGroupToUse'] = '\$1'; | ||||||
|       additionalSettings = replacementAdditionalSettings; |       additionalSettings = replacementAdditionalSettings; | ||||||
|     } |     } | ||||||
|  |     // Signal apps from before it was removed should be converted to HTML (#1928) | ||||||
|  |     if (json['url'] == 'https://signal.org' && | ||||||
|  |         json['id'] == 'org.thoughtcrime.securesms' && | ||||||
|  |         json['author'] == 'Signal' && | ||||||
|  |         json['name'] == 'Signal' && | ||||||
|  |         json['overrideSource'] == null && | ||||||
|  |         additionalSettings['trackOnly'] == false && | ||||||
|  |         additionalSettings['versionExtractionRegEx'] == '' && | ||||||
|  |         json['lastUpdateCheck'] != null) { | ||||||
|  |       json['url'] = 'https://updates.signal.org/android/latest.json'; | ||||||
|  |       var replacementAdditionalSettings = getDefaultValuesFromFormItems( | ||||||
|  |           HTML().combinedAppSpecificSettingFormItems); | ||||||
|  |       replacementAdditionalSettings['versionExtractionRegEx'] = | ||||||
|  |           '\\d+.\\d+.\\d+'; | ||||||
|  |       additionalSettings = replacementAdditionalSettings; | ||||||
|  |     } | ||||||
|   } |   } | ||||||
|   json['additionalSettings'] = jsonEncode(additionalSettings); |   json['additionalSettings'] = jsonEncode(additionalSettings); | ||||||
|   // F-Droid no longer needs cloudflare exception since override can be used - migrate apps appropriately |   // F-Droid no longer needs cloudflare exception since override can be used - migrate apps appropriately | ||||||
| @@ -571,7 +585,7 @@ abstract class AppSource { | |||||||
|       GeneratedFormSwitch('skipUpdateNotifications', |       GeneratedFormSwitch('skipUpdateNotifications', | ||||||
|           label: tr('skipUpdateNotifications')) |           label: tr('skipUpdateNotifications')) | ||||||
|     ], |     ], | ||||||
|     [GeneratedFormTextField('about', label: tr('about'), required: false)] |     [GeneratedFormTextField('about', label: tr('about'), required: false)], | ||||||
|   ]; |   ]; | ||||||
|  |  | ||||||
|   // Previous 2 variables combined into one at runtime for convenient usage |   // Previous 2 variables combined into one at runtime for convenient usage | ||||||
| @@ -794,7 +808,6 @@ class SourceProvider { | |||||||
|         Tencent(), |         Tencent(), | ||||||
|         Jenkins(), |         Jenkins(), | ||||||
|         APKMirror(), |         APKMirror(), | ||||||
|         Signal(), |  | ||||||
|         VLC(), |         VLC(), | ||||||
|         WhatsApp(), |         WhatsApp(), | ||||||
|         TelegramApp(), |         TelegramApp(), | ||||||
| @@ -922,6 +935,9 @@ class SourceProvider { | |||||||
|     name = name.isNotEmpty ? name : apk.names.name; |     name = name.isNotEmpty ? name : apk.names.name; | ||||||
|     App finalApp = App( |     App finalApp = App( | ||||||
|         currentApp?.id ?? |         currentApp?.id ?? | ||||||
|  |             ((additionalSettings['appId'] != null) | ||||||
|  |                 ? additionalSettings['appId'] | ||||||
|  |                 : null) ?? | ||||||
|             (!trackOnly && |             (!trackOnly && | ||||||
|                     (!source.appIdInferIsOptional || |                     (!source.appIdInferIsOptional || | ||||||
|                         (source.appIdInferIsOptional && inferAppIdIfOptional)) |                         (source.appIdInferIsOptional && inferAppIdIfOptional)) | ||||||
|   | |||||||
							
								
								
									
										140
									
								
								pubspec.lock
									
									
									
									
									
								
							
							
						
						
									
										140
									
								
								pubspec.lock
									
									
									
									
									
								
							| @@ -5,10 +5,10 @@ packages: | |||||||
|     dependency: "direct main" |     dependency: "direct main" | ||||||
|     description: |     description: | ||||||
|       name: android_intent_plus |       name: android_intent_plus | ||||||
|       sha256: "007703c1b2cac7ca98add3336b98cffa4baa11d5133cc463293dba9daa39cdf6" |       sha256: "38921ec22ebb3b9a7eb678792cf6fab0b6f458b61b9d327688573449c9b47db3" | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "5.1.0" |     version: "5.2.0" | ||||||
|   android_package_installer: |   android_package_installer: | ||||||
|     dependency: "direct main" |     dependency: "direct main" | ||||||
|     description: |     description: | ||||||
| @@ -107,6 +107,22 @@ packages: | |||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "1.3.7" |     version: "1.3.7" | ||||||
|  |   battery_plus: | ||||||
|  |     dependency: "direct main" | ||||||
|  |     description: | ||||||
|  |       name: battery_plus | ||||||
|  |       sha256: "220c8f1961efb01d6870493b5ac5a80afaeaffc8757f7a11ed3025a8570d29e7" | ||||||
|  |       url: "https://pub.dev" | ||||||
|  |     source: hosted | ||||||
|  |     version: "6.2.0" | ||||||
|  |   battery_plus_platform_interface: | ||||||
|  |     dependency: transitive | ||||||
|  |     description: | ||||||
|  |       name: battery_plus_platform_interface | ||||||
|  |       sha256: e8342c0f32de4b1dfd0223114b6785e48e579bfc398da9471c9179b907fa4910 | ||||||
|  |       url: "https://pub.dev" | ||||||
|  |     source: hosted | ||||||
|  |     version: "2.0.1" | ||||||
|   boolean_selector: |   boolean_selector: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
| @@ -135,10 +151,10 @@ packages: | |||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
|       name: cli_util |       name: cli_util | ||||||
|       sha256: c05b7406fdabc7a49a3929d4af76bcaccbbffcbcdcf185b082e1ae07da323d19 |       sha256: ff6785f7e9e3c38ac98b2fb035701789de90154024a75b6cb926445e83197d1c | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "0.4.1" |     version: "0.4.2" | ||||||
|   clock: |   clock: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
| @@ -159,10 +175,10 @@ packages: | |||||||
|     dependency: "direct main" |     dependency: "direct main" | ||||||
|     description: |     description: | ||||||
|       name: connectivity_plus |       name: connectivity_plus | ||||||
|       sha256: "2056db5241f96cdc0126bd94459fc4cdc13876753768fc7a31c425e50a7177d0" |       sha256: "876849631b0c7dc20f8b471a2a03142841b482438e3b707955464f5ffca3e4c3" | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "6.0.5" |     version: "6.1.0" | ||||||
|   connectivity_plus_platform_interface: |   connectivity_plus_platform_interface: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
| @@ -183,18 +199,18 @@ packages: | |||||||
|     dependency: "direct main" |     dependency: "direct main" | ||||||
|     description: |     description: | ||||||
|       name: crypto |       name: crypto | ||||||
|       sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27 |       sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "3.0.5" |     version: "3.0.6" | ||||||
|   csslib: |   csslib: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
|       name: csslib |       name: csslib | ||||||
|       sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb" |       sha256: "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e" | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "1.0.0" |     version: "1.0.2" | ||||||
|   cupertino_icons: |   cupertino_icons: | ||||||
|     dependency: "direct main" |     dependency: "direct main" | ||||||
|     description: |     description: | ||||||
| @@ -215,10 +231,10 @@ packages: | |||||||
|     dependency: "direct main" |     dependency: "direct main" | ||||||
|     description: |     description: | ||||||
|       name: device_info_plus |       name: device_info_plus | ||||||
|       sha256: db03b2d2a3fa466a4627709e1db58692c3f7f658e36a5942d342d86efedc4091 |       sha256: f545ffbadee826f26f2e1a0f0cbd667ae9a6011cc0f77c0f8f00a969655e6e95 | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "11.0.0" |     version: "11.1.1" | ||||||
|   device_info_plus_platform_interface: |   device_info_plus_platform_interface: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
| @@ -287,18 +303,18 @@ packages: | |||||||
|     dependency: "direct main" |     dependency: "direct main" | ||||||
|     description: |     description: | ||||||
|       name: file_picker |       name: file_picker | ||||||
|       sha256: "167bb619cdddaa10ef2907609feb8a79c16dfa479d3afaf960f8e223f754bf12" |       sha256: "16dc141db5a2ccc6520ebb6a2eb5945b1b09e95085c021d9f914f8ded7f1465c" | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "8.1.2" |     version: "8.1.4" | ||||||
|   fixnum: |   fixnum: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
|       name: fixnum |       name: fixnum | ||||||
|       sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" |       sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "1.1.0" |     version: "1.1.1" | ||||||
|   flex_color_picker: |   flex_color_picker: | ||||||
|     dependency: "direct main" |     dependency: "direct main" | ||||||
|     description: |     description: | ||||||
| @@ -404,26 +420,26 @@ packages: | |||||||
|     dependency: "direct main" |     dependency: "direct main" | ||||||
|     description: |     description: | ||||||
|       name: flutter_local_notifications |       name: flutter_local_notifications | ||||||
|       sha256: "49eeef364fddb71515bc78d5a8c51435a68bccd6e4d68e25a942c5e47761ae71" |       sha256: ef41ae901e7529e52934feba19ed82827b11baa67336829564aeab3129460610 | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "17.2.3" |     version: "18.0.1" | ||||||
|   flutter_local_notifications_linux: |   flutter_local_notifications_linux: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
|       name: flutter_local_notifications_linux |       name: flutter_local_notifications_linux | ||||||
|       sha256: c49bd06165cad9beeb79090b18cd1eb0296f4bf4b23b84426e37dd7c027fc3af |       sha256: "8f685642876742c941b29c32030f6f4f6dacd0e4eaecb3efbb187d6a3812ca01" | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "4.0.1" |     version: "5.0.0" | ||||||
|   flutter_local_notifications_platform_interface: |   flutter_local_notifications_platform_interface: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
|       name: flutter_local_notifications_platform_interface |       name: flutter_local_notifications_platform_interface | ||||||
|       sha256: "85f8d07fe708c1bdcf45037f2c0109753b26ae077e9d9e899d55971711a4ea66" |       sha256: "6c5b83c86bf819cdb177a9247a3722067dd8cc6313827ce7c77a4b238a26fd52" | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "7.2.0" |     version: "8.0.0" | ||||||
|   flutter_localizations: |   flutter_localizations: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: flutter |     description: flutter | ||||||
| @@ -433,10 +449,10 @@ packages: | |||||||
|     dependency: "direct main" |     dependency: "direct main" | ||||||
|     description: |     description: | ||||||
|       name: flutter_markdown |       name: flutter_markdown | ||||||
|       sha256: bd9c475d9aae256369edacafc29d1e74c81f78a10cdcdacbbbc9e3c43d009e4a |       sha256: f0e599ba89c9946c8e051780f0ec99aba4ba15895e0380a7ab68f420046fc44e | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "0.7.4" |     version: "0.7.4+1" | ||||||
|   flutter_plugin_android_lifecycle: |   flutter_plugin_android_lifecycle: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
| @@ -499,10 +515,10 @@ packages: | |||||||
|     dependency: "direct main" |     dependency: "direct main" | ||||||
|     description: |     description: | ||||||
|       name: html |       name: html | ||||||
|       sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a" |       sha256: "1fc58edeaec4307368c60d59b7e15b9d658b57d7f3125098b6294153c75337ec" | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "0.15.4" |     version: "0.15.5" | ||||||
|   http: |   http: | ||||||
|     dependency: "direct main" |     dependency: "direct main" | ||||||
|     description: |     description: | ||||||
| @@ -523,10 +539,10 @@ packages: | |||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
|       name: image |       name: image | ||||||
|       sha256: "2237616a36c0d69aef7549ab439b833fb7f9fb9fc861af2cc9ac3eedddd69ca8" |       sha256: f31d52537dc417fdcde36088fdf11d191026fd5e4fae742491ebd40e5a8bea7d | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "4.2.0" |     version: "4.3.0" | ||||||
|   intl: |   intl: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
| @@ -643,10 +659,10 @@ packages: | |||||||
|     dependency: "direct main" |     dependency: "direct main" | ||||||
|     description: |     description: | ||||||
|       name: path_provider |       name: path_provider | ||||||
|       sha256: fec0d61223fba3154d87759e3cc27fe2c8dc498f6386c6d6fc80d1afdd1bf378 |       sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "2.1.4" |     version: "2.1.5" | ||||||
|   path_provider_android: |   path_provider_android: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
| @@ -699,10 +715,10 @@ packages: | |||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
|       name: permission_handler_android |       name: permission_handler_android | ||||||
|       sha256: "76e4ab092c1b240d31177bb64d2b0bea43f43d0e23541ec866151b9f7b2490fa" |       sha256: "71bbecfee799e65aff7c744761a57e817e73b738fedf62ab7afd5593da21f9f1" | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "12.0.12" |     version: "12.0.13" | ||||||
|   permission_handler_apple: |   permission_handler_apple: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
| @@ -747,10 +763,10 @@ packages: | |||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
|       name: platform |       name: platform | ||||||
|       sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65" |       sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "3.1.5" |     version: "3.1.6" | ||||||
|   plugin_platform_interface: |   plugin_platform_interface: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
| @@ -803,10 +819,10 @@ packages: | |||||||
|     dependency: "direct main" |     dependency: "direct main" | ||||||
|     description: |     description: | ||||||
|       name: share_plus |       name: share_plus | ||||||
|       sha256: fec12c3c39f01e4df1ec6ad92b6e85503c5ca64ffd6e28d18c9ffe53fcc4cb11 |       sha256: "9c9bafd4060728d7cdb2464c341743adbd79d327cb067ec7afb64583540b47c8" | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "10.0.3" |     version: "10.1.2" | ||||||
|   share_plus_platform_interface: |   share_plus_platform_interface: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
| @@ -819,10 +835,10 @@ packages: | |||||||
|     dependency: "direct main" |     dependency: "direct main" | ||||||
|     description: |     description: | ||||||
|       name: shared_preferences |       name: shared_preferences | ||||||
|       sha256: "746e5369a43170c25816cc472ee016d3a66bc13fcf430c0bc41ad7b4b2922051" |       sha256: "95f9997ca1fb9799d494d0cb2a780fd7be075818d59f00c43832ed112b158a82" | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "2.3.2" |     version: "2.3.3" | ||||||
|   shared_preferences_android: |   shared_preferences_android: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
| @@ -913,10 +929,10 @@ packages: | |||||||
|     dependency: "direct main" |     dependency: "direct main" | ||||||
|     description: |     description: | ||||||
|       name: sqflite |       name: sqflite | ||||||
|       sha256: "79a297dc3cc137e758c6a4baf83342b039e5a6d2436fcdf3f96a00adaaf2ad62" |       sha256: "2d7299468485dca85efeeadf5d38986909c5eb0cd71fd3db2c2f000e6c9454bb" | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "2.4.0" |     version: "2.4.1" | ||||||
|   sqflite_android: |   sqflite_android: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
| @@ -937,10 +953,10 @@ packages: | |||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
|       name: sqflite_darwin |       name: sqflite_darwin | ||||||
|       sha256: "769733dddf94622d5541c73e4ddc6aa7b252d865285914b6fcd54a63c4b4f027" |       sha256: "96a698e2bc82bd770a4d6aab00b42396a7c63d9e33513a56945cbccb594c2474" | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "2.4.1-1" |     version: "2.4.1" | ||||||
|   sqflite_platform_interface: |   sqflite_platform_interface: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
| @@ -1001,18 +1017,26 @@ packages: | |||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
|       name: timezone |       name: timezone | ||||||
|       sha256: "2236ec079a174ce07434e89fcd3fcda430025eb7692244139a9cf54fdcf1fc7d" |       sha256: ffc9d5f4d1193534ef051f9254063fa53d588609418c84299956c3db9383587d | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "0.9.4" |     version: "0.10.0" | ||||||
|   typed_data: |   typed_data: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
|       name: typed_data |       name: typed_data | ||||||
|       sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c |       sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "1.3.2" |     version: "1.4.0" | ||||||
|  |   upower: | ||||||
|  |     dependency: transitive | ||||||
|  |     description: | ||||||
|  |       name: upower | ||||||
|  |       sha256: cf042403154751180affa1d15614db7fa50234bc2373cd21c3db666c38543ebf | ||||||
|  |       url: "https://pub.dev" | ||||||
|  |     source: hosted | ||||||
|  |     version: "0.7.0" | ||||||
|   url_launcher: |   url_launcher: | ||||||
|     dependency: "direct main" |     dependency: "direct main" | ||||||
|     description: |     description: | ||||||
| @@ -1025,10 +1049,10 @@ packages: | |||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
|       name: url_launcher_android |       name: url_launcher_android | ||||||
|       sha256: "8fc3bae0b68c02c47c5c86fa8bfa74471d42687b0eded01b78de87872db745e2" |       sha256: "6fc2f56536ee873eeb867ad176ae15f304ccccc357848b351f6f0d8d4a40d193" | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "6.3.12" |     version: "6.3.14" | ||||||
|   url_launcher_ios: |   url_launcher_ios: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
| @@ -1041,10 +1065,10 @@ packages: | |||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
|       name: url_launcher_linux |       name: url_launcher_linux | ||||||
|       sha256: e2b9622b4007f97f504cd64c0128309dfb978ae66adbe944125ed9e1750f06af |       sha256: "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935" | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "3.2.0" |     version: "3.2.1" | ||||||
|   url_launcher_macos: |   url_launcher_macos: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
| @@ -1073,10 +1097,10 @@ packages: | |||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
|       name: url_launcher_windows |       name: url_launcher_windows | ||||||
|       sha256: "49c10f879746271804767cb45551ec5592cdab00ee105c06dddde1a98f73b185" |       sha256: "44cf3aabcedde30f2dba119a9dea3b0f2672fbe6fa96e85536251d678216b3c4" | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "3.1.2" |     version: "3.1.3" | ||||||
|   uuid: |   uuid: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
| @@ -1121,10 +1145,10 @@ packages: | |||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
|       name: webview_flutter_android |       name: webview_flutter_android | ||||||
|       sha256: "74693a212d990b32e0b7055d27db973a18abf31c53942063948cdfaaef9787ba" |       sha256: "86c2d01c37c4578ee46560109cf2e18fb271f0d080a796f09188d0952352e057" | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "4.0.0" |     version: "4.0.2" | ||||||
|   webview_flutter_platform_interface: |   webview_flutter_platform_interface: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
| @@ -1137,18 +1161,18 @@ packages: | |||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
|       name: webview_flutter_wkwebview |       name: webview_flutter_wkwebview | ||||||
|       sha256: d4034901d96357beb1b6717ebf7d583c88e40cfc6eb85fe76dd1bf0979a9f251 |       sha256: "3be297aa4ca78205abdd284cf55f168c35246c75b3079990ad8ba9d257681a30" | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "3.16.0" |     version: "3.16.2" | ||||||
|   win32: |   win32: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
|       name: win32 |       name: win32 | ||||||
|       sha256: e5c39a90447e7c81cfec14b041cdbd0d0916bd9ebbc7fe02ab69568be703b9bd |       sha256: "84ba388638ed7a8cb3445a320c8273136ab2631cd5f2c57888335504ddab1bc2" | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "5.6.0" |     version: "5.8.0" | ||||||
|   win32_registry: |   win32_registry: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
|   | |||||||
| @@ -17,7 +17,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev | |||||||
| # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html | ||||||
| # In Windows, build-name is used as the major, minor, and patch parts | # In Windows, build-name is used as the major, minor, and patch parts | ||||||
| # of the product and file versions while build-number is used as the build suffix. | # of the product and file versions while build-number is used as the build suffix. | ||||||
| version: 1.1.27+2284 | version: 1.1.31+2288 | ||||||
|  |  | ||||||
| environment: | environment: | ||||||
|   sdk: '>=3.0.0 <4.0.0' |   sdk: '>=3.0.0 <4.0.0' | ||||||
| @@ -38,7 +38,7 @@ dependencies: | |||||||
|   cupertino_icons: ^1.0.5 |   cupertino_icons: ^1.0.5 | ||||||
|   path_provider: ^2.0.11 |   path_provider: ^2.0.11 | ||||||
|   flutter_fgbg: ^0.6.0 |   flutter_fgbg: ^0.6.0 | ||||||
|   flutter_local_notifications: ^17.0.0 |   flutter_local_notifications: ^18.0.0 | ||||||
|   provider: ^6.0.3 |   provider: ^6.0.3 | ||||||
|   http: ^1.0.0 |   http: ^1.0.0 | ||||||
|   webview_flutter: ^4.0.0 |   webview_flutter: ^4.0.0 | ||||||
| @@ -81,6 +81,7 @@ dependencies: | |||||||
|  |  | ||||||
|   markdown: any |   markdown: any | ||||||
|   flutter_typeahead: ^5.2.0 |   flutter_typeahead: ^5.2.0 | ||||||
|  |   battery_plus: ^6.1.0 | ||||||
| dev_dependencies: | dev_dependencies: | ||||||
|   flutter_test: |   flutter_test: | ||||||
|     sdk: flutter |     sdk: flutter | ||||||
|   | |||||||
							
								
								
									
										38
									
								
								sign.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										38
									
								
								sign.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,38 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | set -e | ||||||
|  |  | ||||||
|  | # Script to sign unsigned APKs | ||||||
|  | # Assumptions: | ||||||
|  | # 1. Your PGP key is already imported on the locally running agent | ||||||
|  | # 2. An Android SDK is located at $ANDROID_HOME (or ~/Android/Sdk as fallback) | ||||||
|  |  | ||||||
|  | usage() { | ||||||
|  |   echo "sign.sh <PATH_TO_KEYSTORE> <PATH_TO_BUILD_DIR>" | ||||||
|  |   exit 1 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | if [ -z "$1" ] || [ -z "$2" ] || [ ! -f "$1" ] || [ ! -d "$2" ]; then | ||||||
|  |   usage | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | KEYSTORE_LOCATION="$1" | ||||||
|  | BUILD_DIR="$2" | ||||||
|  |  | ||||||
|  | read -s -p "Enter your keystore password: " KEYSTORE_PASSWORD | ||||||
|  |  | ||||||
|  | if [ -z "$ANDROID_HOME" ]; then | ||||||
|  |   ANDROID_HOME=~/Android/Sdk | ||||||
|  | fi | ||||||
|  | if [ ! -d "$ANDROID_HOME" ]; then | ||||||
|  |   echo "Could not find Android SDK!" >&2 | ||||||
|  |   exit 1 | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | for apk in "$BUILD_DIR"/*-release*.apk; do | ||||||
|  |   unsignedApk=${apk/-release/-unsigned} | ||||||
|  |   mv "$apk" "$unsignedApk" | ||||||
|  |   ${ANDROID_HOME}/build-tools/$(ls ${ANDROID_HOME}/build-tools/ | tail -1)/apksigner sign --ks "$KEYSTORE_LOCATION" --ks-pass pass:"${KEYSTORE_PASSWORD}" --out "${apk}" "${unsignedApk}" | ||||||
|  |   sha256sum ${apk} | cut -d " " -f 1 >"$apk".sha256 | ||||||
|  |   gpg --batch --sign --detach-sig "$apk".sha256 | ||||||
|  |   rm "$unsignedApk" | ||||||
|  | done | ||||||
		Reference in New Issue
	
	Block a user