mirror of
				https://github.com/ImranR98/Obtainium.git
				synced 2025-11-02 22:33:28 +01:00 
			
		
		
		
	Compare commits
	
		
			55 Commits
		
	
	
		
			v1.2.0
			...
			a37509c5a3
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					a37509c5a3 | ||
| 
						 | 
					cb9ac4cba0 | ||
| 
						 | 
					d6d3623c63 | ||
| 
						 | 
					58c1bdbd00 | ||
| 
						 | 
					f2b7b196a8 | ||
| 
						 | 
					73746bcb52 | ||
| 
						 | 
					7262750124 | ||
| 
						 | 
					851c228e76 | ||
| 
						 | 
					aa3b874733 | ||
| 
						 | 
					04c4f0c291 | ||
| 
						 | 
					8eedafe4cf | ||
| 
						 | 
					6d136808e0 | ||
| 
						 | 
					0f726889c8 | ||
| 
						 | 
					3e73156f78 | ||
| 
						 | 
					89d853a948 | ||
| 
						 | 
					8f9978aadd | ||
| 
						 | 
					8204a16e90 | ||
| 
						 | 
					75430573f3 | ||
| 
						 | 
					f71e97f6e2 | ||
| 
						 | 
					93380f4229 | ||
| 
						 | 
					6495987248 | ||
| 
						 | 
					69904265c9 | ||
| 
						 | 
					85e05b75ee | ||
| 
						 | 
					c5b077e395 | ||
| 
						 | 
					bafd27f1e5 | ||
| 
						 | 
					ae537758aa | ||
| 
						 | 
					6c995df40a | ||
| 
						 | 
					14d1c71d7e | ||
| 
						 | 
					e2e6038291 | ||
| 
						 | 
					cb18cd360c | ||
| 
						 | 
					b203934f10 | ||
| 
						 | 
					64e49a1129 | ||
| 
						 | 
					bc8f4bfe70 | ||
| 
						 | 
					4f3b517aaf | ||
| 
						 | 
					71bf23a110 | ||
| 
						 | 
					544a1d6711 | ||
| 
						 | 
					d43370e7f5 | ||
| 
						 | 
					c3c0525ab6 | ||
| 
						 | 
					4680401808 | ||
| 
						 | 
					48a8ebabbb | ||
| 
						 | 
					a3f0805b8e | ||
| 
						 | 
					cdca4f765c | ||
| 
						 | 
					84a1ec492c | ||
| 
						 | 
					ae69931896 | ||
| 
						 | 
					a6f348c334 | ||
| 
						 | 
					f17d729a2a | ||
| 
						 | 
					dcdf7046a6 | ||
| 
						 | 
					9ebbb43dc0 | ||
| 
						 | 
					58c24ec6de | ||
| 
						 | 
					3636e287fd | ||
| 
						 | 
					f2c80e38dc | ||
| 
						 | 
					4490da37c9 | ||
| 
						 | 
					e9a24a46c7 | ||
| 
						 | 
					660fc2b9fe | ||
| 
						 | 
					6e631684fb | 
							
								
								
									
										2
									
								
								.flutter
									
									
									
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								.flutter
									
									
									
									
									
								
							 Submodule .flutter updated: fcf2c11572...edada7c56e
									
								
							
							
								
								
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -11,7 +11,8 @@
 | 
				
			|||||||
.svn/
 | 
					.svn/
 | 
				
			||||||
.swiftpm/
 | 
					.swiftpm/
 | 
				
			||||||
migrate_working_dir/
 | 
					migrate_working_dir/
 | 
				
			||||||
.vscode/
 | 
					.vscode/*
 | 
				
			||||||
 | 
					!.vscode/launch.json
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# IntelliJ related
 | 
					# IntelliJ related
 | 
				
			||||||
*.iml
 | 
					*.iml
 | 
				
			||||||
@@ -46,6 +47,8 @@ app.*.map.json
 | 
				
			|||||||
/android/app/profile
 | 
					/android/app/profile
 | 
				
			||||||
/android/app/release
 | 
					/android/app/release
 | 
				
			||||||
/android/app/.cxx
 | 
					/android/app/.cxx
 | 
				
			||||||
 | 
					/android/build/reports
 | 
				
			||||||
 | 
					/android/.kotlin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Custom
 | 
					# Custom
 | 
				
			||||||
TODO.txt
 | 
					TODO.txt
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										28
									
								
								.vscode/launch.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								.vscode/launch.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					    // Use IntelliSense to learn about possible attributes.
 | 
				
			||||||
 | 
					    // Hover to view descriptions of existing attributes.
 | 
				
			||||||
 | 
					    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
 | 
				
			||||||
 | 
					    "version": "0.2.0",
 | 
				
			||||||
 | 
					    "configurations": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "name": "Obtainium",
 | 
				
			||||||
 | 
					            "request": "launch",
 | 
				
			||||||
 | 
					            "type": "dart",
 | 
				
			||||||
 | 
					            "args":[ "--flavor", "normal" ]
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "name": "Obtainium (profile mode)",
 | 
				
			||||||
 | 
					            "request": "launch",
 | 
				
			||||||
 | 
					            "type": "dart",
 | 
				
			||||||
 | 
					            "flutterMode": "profile",
 | 
				
			||||||
 | 
					            "args":[ "--flavor", "normal" ]
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "name": "Obtainium (release mode)",
 | 
				
			||||||
 | 
					            "request": "launch",
 | 
				
			||||||
 | 
					            "type": "dart",
 | 
				
			||||||
 | 
					            "flutterMode": "release",
 | 
				
			||||||
 | 
					            "args":[ "--flavor", "normal" ]
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -33,6 +33,7 @@ Currently supported App sources:
 | 
				
			|||||||
  - [CoolApk](https://coolapk.com/)
 | 
					  - [CoolApk](https://coolapk.com/)
 | 
				
			||||||
  - [vivo App Store (CN)](https://h5.appstore.vivo.com.cn/)
 | 
					  - [vivo App Store (CN)](https://h5.appstore.vivo.com.cn/)
 | 
				
			||||||
  - [RuStore](https://rustore.ru/)
 | 
					  - [RuStore](https://rustore.ru/)
 | 
				
			||||||
 | 
					  - [Farsroid](https://www.farsroid.com)
 | 
				
			||||||
  - Jenkins Jobs
 | 
					  - Jenkins Jobs
 | 
				
			||||||
  - [APKMirror](https://apkmirror.com/) (Track-Only)
 | 
					  - [APKMirror](https://apkmirror.com/) (Track-Only)
 | 
				
			||||||
- Other - App-Specific:
 | 
					- Other - App-Specific:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,6 +167,7 @@
 | 
				
			|||||||
    "versionCorrectionDisabled": "تعطيل تصحيح الإصدار (يبدو أن الملحق لا يعمل)",
 | 
					    "versionCorrectionDisabled": "تعطيل تصحيح الإصدار (يبدو أن الملحق لا يعمل)",
 | 
				
			||||||
    "unknown": "غير معروف",
 | 
					    "unknown": "غير معروف",
 | 
				
			||||||
    "none": "لا شيء",
 | 
					    "none": "لا شيء",
 | 
				
			||||||
 | 
					    "all": "الكل",
 | 
				
			||||||
    "never": "أبدًا",
 | 
					    "never": "أبدًا",
 | 
				
			||||||
    "latestVersionX": "الأحدث: {}",
 | 
					    "latestVersionX": "الأحدث: {}",
 | 
				
			||||||
    "installedVersionX": "المثبت: {}",
 | 
					    "installedVersionX": "المثبت: {}",
 | 
				
			||||||
@@ -333,6 +334,7 @@
 | 
				
			|||||||
    "foregroundService": "الحصول على خدمة الحصول على خدمة المقدمة",
 | 
					    "foregroundService": "الحصول على خدمة الحصول على خدمة المقدمة",
 | 
				
			||||||
    "foregroundServiceExplanation": "استخدام خدمة مقدمة للتحقق من التحديثات (أكثر موثوقية وتستهلك طاقة أكبر)",
 | 
					    "foregroundServiceExplanation": "استخدام خدمة مقدمة للتحقق من التحديثات (أكثر موثوقية وتستهلك طاقة أكبر)",
 | 
				
			||||||
    "fgServiceNotice": "هذا الإشعار مطلوب للتحقق من التحديث في الخلفية (يمكن إخفاؤه في إعدادات نظام التشغيل)",
 | 
					    "fgServiceNotice": "هذا الإشعار مطلوب للتحقق من التحديث في الخلفية (يمكن إخفاؤه في إعدادات نظام التشغيل)",
 | 
				
			||||||
 | 
					    "excludeSecrets": "استبعاد الأسرار",
 | 
				
			||||||
    "removeAppQuestion": {
 | 
					    "removeAppQuestion": {
 | 
				
			||||||
        "one": "إزالة التطبيق؟",
 | 
					        "one": "إزالة التطبيق؟",
 | 
				
			||||||
        "other": "إزالة التطبيقات؟"
 | 
					        "other": "إزالة التطبيقات؟"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,6 +167,7 @@
 | 
				
			|||||||
    "versionCorrectionDisabled": "Ispravka verzije je onemogućena (izgleda da plugin ne radi)",
 | 
					    "versionCorrectionDisabled": "Ispravka verzije je onemogućena (izgleda da plugin ne radi)",
 | 
				
			||||||
    "unknown": "Nepoznato",
 | 
					    "unknown": "Nepoznato",
 | 
				
			||||||
    "none": "Ništa",
 | 
					    "none": "Ništa",
 | 
				
			||||||
 | 
					    "all": "All",
 | 
				
			||||||
    "never": "Nikad",
 | 
					    "never": "Nikad",
 | 
				
			||||||
    "latestVersionX": "Najnovija verzija: {}",
 | 
					    "latestVersionX": "Najnovija verzija: {}",
 | 
				
			||||||
    "installedVersionX": "Instalirana verzija: {}",
 | 
					    "installedVersionX": "Instalirana verzija: {}",
 | 
				
			||||||
@@ -327,12 +328,13 @@
 | 
				
			|||||||
    "smartname": "Name (Smart)",
 | 
					    "smartname": "Name (Smart)",
 | 
				
			||||||
    "sortMethod": "Sort Method",
 | 
					    "sortMethod": "Sort Method",
 | 
				
			||||||
    "welcome": "Welcome",
 | 
					    "welcome": "Welcome",
 | 
				
			||||||
    "documentationLinksNote": "The Obtainium GitHub page linked below contains links to videos, articles, discussions and other resources that will help you understand how to use the app.",
 | 
					    "documentationLinksNote": "The Obtainium GitHub page linked below contains links to videos, articles, discussions, and other resources that will help you understand how to use the app.",
 | 
				
			||||||
    "batteryOptimizationNote": "Note that background downloads may work more reliably if you disable OS battery optimizations for Obtainium.",
 | 
					    "batteryOptimizationNote": "Note that background downloads may work more reliably if you disable OS battery optimizations for Obtainium.",
 | 
				
			||||||
    "fileDeletionError": "Failed to delete file (try deleting it manually then try again): \"{}\"",
 | 
					    "fileDeletionError": "Failed to delete file (try deleting it manually then try again): \"{}\"",
 | 
				
			||||||
    "foregroundService": "Obtainium foreground service",
 | 
					    "foregroundService": "Obtainium foreground service",
 | 
				
			||||||
    "foregroundServiceExplanation": "Use a foreground service for update checking (more reliable, consumes more power)",
 | 
					    "foregroundServiceExplanation": "Use a foreground service for update checking (more reliable, consumes more power)",
 | 
				
			||||||
    "fgServiceNotice": "This notification is required for background update checking (it can be hidden in the OS settings)",
 | 
					    "fgServiceNotice": "This notification is required for background update checking (it can be hidden in the OS settings)",
 | 
				
			||||||
 | 
					    "excludeSecrets": "Exclude secrets",
 | 
				
			||||||
    "removeAppQuestion": {
 | 
					    "removeAppQuestion": {
 | 
				
			||||||
        "one": "Želite li ukloniti aplikaciju?",
 | 
					        "one": "Želite li ukloniti aplikaciju?",
 | 
				
			||||||
        "other": "Želite li ukloniti aplikacije?"
 | 
					        "other": "Želite li ukloniti aplikacije?"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,6 +167,7 @@
 | 
				
			|||||||
    "versionCorrectionDisabled": "Correcció de versions desactivada (el plugin sembla que no funciona)",
 | 
					    "versionCorrectionDisabled": "Correcció de versions desactivada (el plugin sembla que no funciona)",
 | 
				
			||||||
    "unknown": "Desconegut",
 | 
					    "unknown": "Desconegut",
 | 
				
			||||||
    "none": "Cap",
 | 
					    "none": "Cap",
 | 
				
			||||||
 | 
					    "all": "All",
 | 
				
			||||||
    "never": "Mai",
 | 
					    "never": "Mai",
 | 
				
			||||||
    "latestVersionX": "Última versió: {}",
 | 
					    "latestVersionX": "Última versió: {}",
 | 
				
			||||||
    "installedVersionX": "Versió instal·lada: {}",
 | 
					    "installedVersionX": "Versió instal·lada: {}",
 | 
				
			||||||
@@ -318,11 +319,11 @@
 | 
				
			|||||||
    "crowdsourcedConfigsShort": "Configuració de les aplicacions crowdsourcing",
 | 
					    "crowdsourcedConfigsShort": "Configuració de les aplicacions crowdsourcing",
 | 
				
			||||||
    "allowInsecure": "Permet les sol·licituds HTTP insegures",
 | 
					    "allowInsecure": "Permet les sol·licituds HTTP insegures",
 | 
				
			||||||
    "stayOneVersionBehind": "Roman a la versió anterior a l'última",
 | 
					    "stayOneVersionBehind": "Roman a la versió anterior a l'última",
 | 
				
			||||||
    "useFirstApkOfVersion": "Auto-select first of multiple APKs",
 | 
					    "useFirstApkOfVersion": "Tria automàticament la primera aplicació entre moltes",
 | 
				
			||||||
    "refreshBeforeDownload": "Actualitza les dades de l'aplicació abans de descarregar-la",
 | 
					    "refreshBeforeDownload": "Actualitza les dades de l'aplicació abans de descarregar-la",
 | 
				
			||||||
    "tencentAppStore": "Tencent App Store",
 | 
					    "tencentAppStore": "Tencent App Store",
 | 
				
			||||||
    "coolApk": "CoolApk",
 | 
					    "coolApk": "CoolApk",
 | 
				
			||||||
    "vivoAppStore": "vivo App Store (CN)",
 | 
					    "vivoAppStore": "Vivo App Store (CN)",
 | 
				
			||||||
    "name": "Nom",
 | 
					    "name": "Nom",
 | 
				
			||||||
    "smartname": "Nom (smart)",
 | 
					    "smartname": "Nom (smart)",
 | 
				
			||||||
    "sortMethod": "Mètode d'ordenació",
 | 
					    "sortMethod": "Mètode d'ordenació",
 | 
				
			||||||
@@ -330,9 +331,10 @@
 | 
				
			|||||||
    "documentationLinksNote": "La pàgina GitHub d'Obtainium enllaçada a sota conté enllaços a vídeos, articles, debats i altres recursos que t'ajudaran a entendre com usar l'aplicació.",
 | 
					    "documentationLinksNote": "La pàgina GitHub d'Obtainium enllaçada a sota conté enllaços a vídeos, articles, debats i altres recursos que t'ajudaran a entendre com usar l'aplicació.",
 | 
				
			||||||
    "batteryOptimizationNote": "Tingues present que les descàrregues en segon pla funcionaran millor si inhabilites l'optimització de bateria per a Obtainium.",
 | 
					    "batteryOptimizationNote": "Tingues present que les descàrregues en segon pla funcionaran millor si inhabilites l'optimització de bateria per a Obtainium.",
 | 
				
			||||||
    "fileDeletionError": "No s'ha pogut suprimir el fitxer (intenta suprimir-lo manualment i torna-ho a provar): \"{}\"",
 | 
					    "fileDeletionError": "No s'ha pogut suprimir el fitxer (intenta suprimir-lo manualment i torna-ho a provar): \"{}\"",
 | 
				
			||||||
    "foregroundService": "Obtainium foreground service",
 | 
					    "foregroundService": "Servei d'Obtainium en primer pla",
 | 
				
			||||||
    "foregroundServiceExplanation": "Use a foreground service for update checking (more reliable, consumes more power)",
 | 
					    "foregroundServiceExplanation": "Usa el servei d'Obtainium en primer pla per comprovar les actualitzacions (és més fiable però consumeix més bateria)",
 | 
				
			||||||
    "fgServiceNotice": "This notification is required for background update checking (it can be hidden in the OS settings)",
 | 
					    "fgServiceNotice": "Aquesta notificació és necessària per comprovar les actualitzacions en segon pla (la pots ocultar als paràmetres del Sistema Operatiu)",
 | 
				
			||||||
 | 
					    "excludeSecrets": "Exclude secrets",
 | 
				
			||||||
    "removeAppQuestion": {
 | 
					    "removeAppQuestion": {
 | 
				
			||||||
        "one": "¿Suprimeixo l'aplicació?",
 | 
					        "one": "¿Suprimeixo l'aplicació?",
 | 
				
			||||||
        "other": "¿Suprimeixo les aplicacions?"
 | 
					        "other": "¿Suprimeixo les aplicacions?"
 | 
				
			||||||
@@ -358,16 +360,16 @@
 | 
				
			|||||||
        "other": "{} URLs"
 | 
					        "other": "{} URLs"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "minute": {
 | 
					    "minute": {
 | 
				
			||||||
        "one": "{} Minut",
 | 
					        "one": "{} minut",
 | 
				
			||||||
        "other": "{} Minuts"
 | 
					        "other": "{} minuts"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "hour": {
 | 
					    "hour": {
 | 
				
			||||||
        "one": "{} Hora",
 | 
					        "one": "{} hora",
 | 
				
			||||||
        "other": "{} Hores"
 | 
					        "other": "{} hores"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "day": {
 | 
					    "day": {
 | 
				
			||||||
        "one": "{} Dia",
 | 
					        "one": "{} dia",
 | 
				
			||||||
        "other": "{} Dies"
 | 
					        "other": "{} dies"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "clearedNLogsBeforeXAfterY": {
 | 
					    "clearedNLogsBeforeXAfterY": {
 | 
				
			||||||
        "one": "Suprimit {n} registre (anterior a = {before}, posterior a = {after})",
 | 
					        "one": "Suprimit {n} registre (anterior a = {before}, posterior a = {after})",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "invalidURLForSource": "Žádná platná {} adresa URL aplikace",
 | 
					    "invalidURLForSource": "Žádná platná adresa URL aplikace {}",
 | 
				
			||||||
    "noReleaseFound": "Nebyla nalezena odpovídající verze",
 | 
					    "noReleaseFound": "Nebyla nalezena odpovídající verze",
 | 
				
			||||||
    "noVersionFound": "Nelze určit verzi vydání",
 | 
					    "noVersionFound": "Nelze určit verzi vydání",
 | 
				
			||||||
    "urlMatchesNoSource": "URL neodpovídá žádnému známému zdroji",
 | 
					    "urlMatchesNoSource": "URL neodpovídá žádnému známému zdroji",
 | 
				
			||||||
@@ -7,33 +7,33 @@
 | 
				
			|||||||
    "appIdMismatch": "ID staženého balíčku neodpovídá ID existující aplikace",
 | 
					    "appIdMismatch": "ID staženého balíčku neodpovídá ID existující aplikace",
 | 
				
			||||||
    "functionNotImplemented": "Tato třída nemá implementovánu tuto funkci",
 | 
					    "functionNotImplemented": "Tato třída nemá implementovánu tuto funkci",
 | 
				
			||||||
    "placeholder": "Zástupce",
 | 
					    "placeholder": "Zástupce",
 | 
				
			||||||
    "someErrors": "Vyskytly se nějaké chyby",
 | 
					    "someErrors": "Došlo k chybám",
 | 
				
			||||||
    "unexpectedError": "Neočekávaná chyba",
 | 
					    "unexpectedError": "Neočekávaná chyba",
 | 
				
			||||||
    "ok": "Ok",
 | 
					    "ok": "OK",
 | 
				
			||||||
    "and": "a",
 | 
					    "and": "a",
 | 
				
			||||||
    "githubPATLabel": "GitHub Personal Access Token (zvyšuje limit rychlosti)",
 | 
					    "githubPATLabel": "Osobní přístupový token GitHub (zvyšuje limit požadavků)",
 | 
				
			||||||
    "includePrereleases": "Zahrnout předběžné verze",
 | 
					    "includePrereleases": "Zahrnout předběžná vydání",
 | 
				
			||||||
    "fallbackToOlderReleases": "Přechod na starší verze",
 | 
					    "fallbackToOlderReleases": "Přechod na starší verze",
 | 
				
			||||||
    "filterReleaseTitlesByRegEx": "Filtrovat názvy verzí podle regulárního výrazu",
 | 
					    "filterReleaseTitlesByRegEx": "Filtrovat názvy verzí podle regulárního výrazu",
 | 
				
			||||||
    "invalidRegEx": "Neplatný regulární výraz",
 | 
					    "invalidRegEx": "Neplatný regulární výraz",
 | 
				
			||||||
    "noDescription": "Žádný popis",
 | 
					    "noDescription": "Žádný popis",
 | 
				
			||||||
    "cancel": "Zrušit",
 | 
					    "cancel": "Zrušit",
 | 
				
			||||||
    "continue": "Pokračovat",
 | 
					    "continue": "Pokračovat",
 | 
				
			||||||
    "requiredInBrackets": "(Požadované)",
 | 
					    "requiredInBrackets": "(vyžadováno)",
 | 
				
			||||||
    "dropdownNoOptsError": "ERROR: DROPDOWN MUSÍ MÍT AŽ JEDNU MOŽNOST",
 | 
					    "dropdownNoOptsError": "CHYBA: ROZBALOVACÍ NABÍDKA MUSÍ MÍT ALESPOŇ JEDNU MOŽNOST",
 | 
				
			||||||
    "colour": "Barva",
 | 
					    "colour": "Barvu",
 | 
				
			||||||
    "standard": "Standardní",
 | 
					    "standard": "Standardní",
 | 
				
			||||||
    "custom": "Vlastní",
 | 
					    "custom": "Vlastní",
 | 
				
			||||||
    "useMaterialYou": "Použijte materiál, který jste",
 | 
					    "useMaterialYou": "Použít Material You",
 | 
				
			||||||
    "githubStarredRepos": "GitHub označená hvězdičkou",
 | 
					    "githubStarredRepos": "Repozitáře na GitHubu označené hvězdičkou",
 | 
				
			||||||
    "uname": "Uživatelské jméno",
 | 
					    "uname": "Uživatelské jméno",
 | 
				
			||||||
    "wrongArgNum": "Nesprávný počet zadaných argumentů",
 | 
					    "wrongArgNum": "Nesprávný počet zadaných argumentů",
 | 
				
			||||||
    "xIsTrackOnly": "{} je určeno pouze pro sledování",
 | 
					    "xIsTrackOnly": "{} je určeno pouze pro sledování",
 | 
				
			||||||
    "source": "Zdroj",
 | 
					    "source": "Zdroj",
 | 
				
			||||||
    "app": "Aplikace",
 | 
					    "app": "Aplikace",
 | 
				
			||||||
    "appsFromSourceAreTrackOnly": "Aplikace z tohoto zdroje jsou Jen sledovány.",
 | 
					    "appsFromSourceAreTrackOnly": "Aplikace z tohoto zdroje jsou „pouze pro sledování“.",
 | 
				
			||||||
    "youPickedTrackOnly": "Vybrali jste možnost Jen sledovat.",
 | 
					    "youPickedTrackOnly": "Vybrali jste možnost „pouze sledovat“.",
 | 
				
			||||||
    "trackOnlyAppDescription": "Aplikace je sledována kvůli aktualizacím, ale Obtainium ji nebude stahovat ani instalovat.",
 | 
					    "trackOnlyAppDescription": "Aplikace bude sledována kvůli aktualizacím, ale Obtainium ji nebude stahovat ani instalovat.",
 | 
				
			||||||
    "cancelled": "Zrušeno",
 | 
					    "cancelled": "Zrušeno",
 | 
				
			||||||
    "appAlreadyAdded": "Aplikace již přidána",
 | 
					    "appAlreadyAdded": "Aplikace již přidána",
 | 
				
			||||||
    "alreadyUpToDateQuestion": "Aplikace je již aktualizovaná?",
 | 
					    "alreadyUpToDateQuestion": "Aplikace je již aktualizovaná?",
 | 
				
			||||||
@@ -45,9 +45,9 @@
 | 
				
			|||||||
    "search": "Hledat",
 | 
					    "search": "Hledat",
 | 
				
			||||||
    "additionalOptsFor": "Další možnosti pro {}",
 | 
					    "additionalOptsFor": "Další možnosti pro {}",
 | 
				
			||||||
    "supportedSources": "Podporované zdroje",
 | 
					    "supportedSources": "Podporované zdroje",
 | 
				
			||||||
    "trackOnlyInBrackets": "(Pouze stopy)",
 | 
					    "trackOnlyInBrackets": "(pouze sledování)",
 | 
				
			||||||
    "searchableInBrackets": "(s možností vyhledávání)",
 | 
					    "searchableInBrackets": "(s možností vyhledávání)",
 | 
				
			||||||
    "appsString": "Apky",
 | 
					    "appsString": "Aplikace",
 | 
				
			||||||
    "noApps": "Žádné aplikace",
 | 
					    "noApps": "Žádné aplikace",
 | 
				
			||||||
    "noAppsForFilter": "Žádné aplikace pro vybraný filtr",
 | 
					    "noAppsForFilter": "Žádné aplikace pro vybraný filtr",
 | 
				
			||||||
    "byX": "Od {}",
 | 
					    "byX": "Od {}",
 | 
				
			||||||
@@ -57,73 +57,73 @@
 | 
				
			|||||||
    "notInstalled": "Není nainstalováno",
 | 
					    "notInstalled": "Není nainstalováno",
 | 
				
			||||||
    "pseudoVersion": "pseudoverze",
 | 
					    "pseudoVersion": "pseudoverze",
 | 
				
			||||||
    "selectAll": "Vybrat vše",
 | 
					    "selectAll": "Vybrat vše",
 | 
				
			||||||
    "deselectX": "{} deselected",
 | 
					    "deselectX": "Zrušit výběr {}",
 | 
				
			||||||
    "xWillBeRemovedButRemainInstalled": "{} bude odstraněn z Obtainium, ale zůstane nainstalován v zařízení.",
 | 
					    "xWillBeRemovedButRemainInstalled": "Aplikace {} bude odstraněna z aplikace Obtainium, ale zůstane nainstalována v zařízení.",
 | 
				
			||||||
    "removeSelectedAppsQuestion": "Odebrat vybrané aplikace?",
 | 
					    "removeSelectedAppsQuestion": "Odstranit vybrané aplikace?",
 | 
				
			||||||
    "removeSelectedApps": "Odebrat vybrané aplikace",
 | 
					    "removeSelectedApps": "Odstranit vybrané aplikace",
 | 
				
			||||||
    "updateX": "Aktualizovat {}",
 | 
					    "updateX": "Aktualizovat {}",
 | 
				
			||||||
    "installX": "Instalovat {}",
 | 
					    "installX": "Instalovat {}",
 | 
				
			||||||
    "markXTrackOnlyAsUpdated": "Označit {}\n(Jen sledované)\njako aktualizované",
 | 
					    "markXTrackOnlyAsUpdated": "Označit aplikaci {}\n(pouze sledování)\njako aktualizovanou",
 | 
				
			||||||
    "changeX": "Změnit {}",
 | 
					    "changeX": "Změnit {}",
 | 
				
			||||||
    "installUpdateApps": "Instalovat/aktualizovat aplikace",
 | 
					    "installUpdateApps": "Instalovat/aktualizovat aplikace",
 | 
				
			||||||
    "installUpdateSelectedApps": "Instalovat/aktualizovat vybrané aplikace",
 | 
					    "installUpdateSelectedApps": "Instalovat/aktualizovat vybrané aplikace",
 | 
				
			||||||
    "markXSelectedAppsAsUpdated": "Označit {} vybrané aplikace jako aktuální?",
 | 
					    "markXSelectedAppsAsUpdated": "Označit {} vybraných aplikací jako aktuální?",
 | 
				
			||||||
    "no": "Ne",
 | 
					    "no": "Ne",
 | 
				
			||||||
    "yes": "Ano",
 | 
					    "yes": "Ano",
 | 
				
			||||||
    "markSelectedAppsUpdated": "Označit vybrané aplikace jako aktuální",
 | 
					    "markSelectedAppsUpdated": "Označit vybrané aplikace jako aktuální",
 | 
				
			||||||
    "pinToTop": "Připnout nahoru",
 | 
					    "pinToTop": "Připnout nahoru",
 | 
				
			||||||
    "unpinFromTop": "Odepnout shora",
 | 
					    "unpinFromTop": "Odepnout shora",
 | 
				
			||||||
    "resetInstallStatusForSelectedAppsQuestion": "Obnovit stav instalace vybraných aplikací?",
 | 
					    "resetInstallStatusForSelectedAppsQuestion": "Obnovit stav instalace vybraných aplikací?",
 | 
				
			||||||
    "installStatusOfXWillBeResetExplanation": "Stav instalace vybraných aplikací bude resetován. To může být užitečné, pokud je verze aplikace zobrazená v Obtainium nesprávná z důvodu neúspěšných aktualizací nebo jiných problémů.",
 | 
					    "installStatusOfXWillBeResetExplanation": "Stav instalace vybraných aplikací bude resetován.\n\nTo může být užitečné, pokud je verze aplikace zobrazená v aplikaci Obtainium nesprávná z důvodu neúspěšných aktualizací nebo jiných problémů.",
 | 
				
			||||||
    "customLinkMessage": "Tyto odkazy fungují na zařízeních s nainstalovaným Obtainium",
 | 
					    "customLinkMessage": "Tyto odkazy fungují na zařízeních s nainstalovaným Obtainium",
 | 
				
			||||||
    "shareAppConfigLinks": "Sdílet konfiguraci aplikace jako odkaz HTML",
 | 
					    "shareAppConfigLinks": "Sdílet konfiguraci aplikace jako odkaz HTML",
 | 
				
			||||||
    "shareSelectedAppURLs": "Sdílet adresy URL vybraných aplikací",
 | 
					    "shareSelectedAppURLs": "Sdílet adresy URL vybraných aplikací",
 | 
				
			||||||
    "resetInstallStatus": "Obnovit stav instalace",
 | 
					    "resetInstallStatus": "Obnovit stav instalace",
 | 
				
			||||||
    "more": "Více",
 | 
					    "more": "Více",
 | 
				
			||||||
    "removeOutdatedFilter": "Odstranit filtr Neaktuální",
 | 
					    "removeOutdatedFilter": "Odstranit filtr neaktuálních aplikací",
 | 
				
			||||||
    "showOutdatedOnly": "Zobrazovat pouze zastaralé aplikace",
 | 
					    "showOutdatedOnly": "Zobrazovat pouze zastaralé aplikace",
 | 
				
			||||||
    "filter": "Filtr",
 | 
					    "filter": "Filtr",
 | 
				
			||||||
    "filterApps": "Filtrovat aplikace",
 | 
					    "filterApps": "Filtrovat aplikace",
 | 
				
			||||||
    "appName": "Název aplikace",
 | 
					    "appName": "Název aplikace",
 | 
				
			||||||
    "author": "Autor",
 | 
					    "author": "Autor",
 | 
				
			||||||
    "upToDateApps": "Aktuální apky",
 | 
					    "upToDateApps": "Aktuální aplikace",
 | 
				
			||||||
    "nonInstalledApps": "Neinstalované apky",
 | 
					    "nonInstalledApps": "Nenainstalované aplikace",
 | 
				
			||||||
    "importExport": "Import Export",
 | 
					    "importExport": "Import/export",
 | 
				
			||||||
    "settings": "Nastavení",
 | 
					    "settings": "Nastavení",
 | 
				
			||||||
    "exportedTo": "Exportováno do {}",
 | 
					    "exportedTo": "Exportováno do {}",
 | 
				
			||||||
    "obtainiumExport": "Export obtainia",
 | 
					    "obtainiumExport": "Export aplikace Obtainium",
 | 
				
			||||||
    "invalidInput": "Neplatný vstup",
 | 
					    "invalidInput": "Neplatný vstup",
 | 
				
			||||||
    "importedX": "Importováno {}",
 | 
					    "importedX": "Importováno {}",
 | 
				
			||||||
    "obtainiumImport": "Dovoz obtainia",
 | 
					    "obtainiumImport": "Import aplikace Obtainium",
 | 
				
			||||||
    "importFromURLList": "Import ze seznamu URL",
 | 
					    "importFromURLList": "Importovat ze seznamu adres",
 | 
				
			||||||
    "searchQuery": "Vyhledávací dotaz",
 | 
					    "searchQuery": "Vyhledávací dotaz",
 | 
				
			||||||
    "appURLList": "Seznam adres aplikací",
 | 
					    "appURLList": "Seznam adres aplikací",
 | 
				
			||||||
    "line": "Linka",
 | 
					    "line": "Linka",
 | 
				
			||||||
    "searchX": "Vyhledávání {}",
 | 
					    "searchX": "Vyhledávání {}",
 | 
				
			||||||
    "noResults": "Nebyly nalezeny žádné výsledky",
 | 
					    "noResults": "Nebyly nalezeny žádné výsledky",
 | 
				
			||||||
    "importX": "Import {}",
 | 
					    "importX": "Importovat {}",
 | 
				
			||||||
    "importedAppsIdDisclaimer": "Importované aplikace mohou být nesprávně zobrazeny jako \"Neinstalovány\". Chcete-li to opravit, nainstalujte je znovu prostřednictvím Obtainium. To nemá vliv na data aplikací. Ovlivňuje pouze metody importu URL a třetích stran.",
 | 
					    "importedAppsIdDisclaimer": "Importované aplikace mohou být nesprávně zobrazeny jako „nenainstalované“.\nChcete-li to opravit, nainstalujte je znovu prostřednictvím aplikace Obtainium.\nNemá vliv na data aplikací.\n\nOvlivňuje pouze způsoby importu URL a třetích stran.",
 | 
				
			||||||
    "importErrors": "Chyba importu",
 | 
					    "importErrors": "Chyba importu",
 | 
				
			||||||
    "importedXOfYApps": "{}importováno z {} aplikací.",
 | 
					    "importedXOfYApps": "Importováno {} z {} aplikací.",
 | 
				
			||||||
    "followingURLsHadErrors": "U následujících adres došlo k chybám:",
 | 
					    "followingURLsHadErrors": "U následujících adres došlo k chybám:",
 | 
				
			||||||
    "selectURL": "Vybrat adresu",
 | 
					    "selectURL": "Vybrat adresu",
 | 
				
			||||||
    "selectURLs": "Select adresy",
 | 
					    "selectURLs": "Select adresy",
 | 
				
			||||||
    "pick": "Vybrat",
 | 
					    "pick": "Vybrat",
 | 
				
			||||||
    "theme": "Téma",
 | 
					    "theme": "Motiv",
 | 
				
			||||||
    "dark": "Tmavé",
 | 
					    "dark": "Tmavé",
 | 
				
			||||||
    "light": "Světlé",
 | 
					    "light": "Světlé",
 | 
				
			||||||
    "followSystem": "Jako systém",
 | 
					    "followSystem": "Podle systému",
 | 
				
			||||||
    "followSystemThemeExplanation": "Sledování motivu systému je možné pouze pomocí aplikací třetích stran.",
 | 
					    "followSystemThemeExplanation": "Používání motivu systému je možné pouze pomocí aplikací třetích stran",
 | 
				
			||||||
    "useBlackTheme": "Použít čistě černé tmavé téma",
 | 
					    "useBlackTheme": "Použít čistě černý tmavý motiv",
 | 
				
			||||||
    "appSortBy": "Seřadit podle",
 | 
					    "appSortBy": "Seřadit podle",
 | 
				
			||||||
    "authorName": "Autor/Jméno",
 | 
					    "authorName": "Autor/jméno",
 | 
				
			||||||
    "nameAuthor": "Jméno/Autor",
 | 
					    "nameAuthor": "Jméno/autor",
 | 
				
			||||||
    "asAdded": "Přidáno",
 | 
					    "asAdded": "Přidáno",
 | 
				
			||||||
    "appSortOrder": "Seřadit",
 | 
					    "appSortOrder": "Seřadit",
 | 
				
			||||||
    "ascending": "Vzestupně",
 | 
					    "ascending": "Vzestupně",
 | 
				
			||||||
    "descending": "Sestupně",
 | 
					    "descending": "Sestupně",
 | 
				
			||||||
    "bgUpdateCheckInterval": "Interval kontroly aktualizace na pozadí",
 | 
					    "bgUpdateCheckInterval": "Interval kontroly aktualizace na pozadí",
 | 
				
			||||||
    "neverManualOnly": "Nikdy - pouze ručně",
 | 
					    "neverManualOnly": "Nikdy – pouze ručně",
 | 
				
			||||||
    "appearance": "Vzhled",
 | 
					    "appearance": "Vzhled",
 | 
				
			||||||
    "showWebInAppView": "Zobrazit zdrojové webové stránky v zobrazení aplikace",
 | 
					    "showWebInAppView": "Zobrazit zdrojové webové stránky v zobrazení aplikace",
 | 
				
			||||||
    "pinUpdates": "Připnout aplikace s aktualizacemi nahoru",
 | 
					    "pinUpdates": "Připnout aplikace s aktualizacemi nahoru",
 | 
				
			||||||
@@ -131,7 +131,7 @@
 | 
				
			|||||||
    "sourceSpecific": "Specifické pro zdroj",
 | 
					    "sourceSpecific": "Specifické pro zdroj",
 | 
				
			||||||
    "appSource": "Zdroj aplikace",
 | 
					    "appSource": "Zdroj aplikace",
 | 
				
			||||||
    "noLogs": "Žádné protokoly",
 | 
					    "noLogs": "Žádné protokoly",
 | 
				
			||||||
    "appLogs": "Záznamy apky",
 | 
					    "appLogs": "Protokoly aplikace",
 | 
				
			||||||
    "close": "Zavřít",
 | 
					    "close": "Zavřít",
 | 
				
			||||||
    "share": "Sdílet",
 | 
					    "share": "Sdílet",
 | 
				
			||||||
    "appNotFound": "Aplikace nenalezena",
 | 
					    "appNotFound": "Aplikace nenalezena",
 | 
				
			||||||
@@ -141,7 +141,7 @@
 | 
				
			|||||||
    "deviceSupportsXArch": "Vaše zařízení podporuje architekturu CPU {}.",
 | 
					    "deviceSupportsXArch": "Vaše zařízení podporuje architekturu CPU {}.",
 | 
				
			||||||
    "deviceSupportsFollowingArchs": "Vaše zařízení podporuje následující architektury CPU:",
 | 
					    "deviceSupportsFollowingArchs": "Vaše zařízení podporuje následující architektury CPU:",
 | 
				
			||||||
    "warning": "Varování",
 | 
					    "warning": "Varování",
 | 
				
			||||||
    "sourceIsXButPackageFromYPrompt": "Zdroj aplikace je '{}', ale balíček pro vydání je z '{}'. Pokračovat?",
 | 
					    "sourceIsXButPackageFromYPrompt": "Zdroj aplikace je „{}“, ale balíček pro vydání pochází z „{}“. Pokračovat?",
 | 
				
			||||||
    "updatesAvailable": "Dostupné aktualizace",
 | 
					    "updatesAvailable": "Dostupné aktualizace",
 | 
				
			||||||
    "updatesAvailableNotifDescription": "Upozorňuje uživatele, že jsou k dispozici aktualizace pro jednu nebo více aplikací sledovaných Obtainium",
 | 
					    "updatesAvailableNotifDescription": "Upozorňuje uživatele, že jsou k dispozici aktualizace pro jednu nebo více aplikací sledovaných Obtainium",
 | 
				
			||||||
    "noNewUpdates": "Žádné nové aktualizace.",
 | 
					    "noNewUpdates": "Žádné nové aktualizace.",
 | 
				
			||||||
@@ -149,7 +149,7 @@
 | 
				
			|||||||
    "appsUpdated": "Aplikace aktualizovány",
 | 
					    "appsUpdated": "Aplikace aktualizovány",
 | 
				
			||||||
    "appsNotUpdated": "Nepodařilo se aktualizovat aplikace",
 | 
					    "appsNotUpdated": "Nepodařilo se aktualizovat aplikace",
 | 
				
			||||||
    "appsUpdatedNotifDescription": "Upozornit, že byly provedeny aktualizace jedné nebo více aplikací na pozadí",
 | 
					    "appsUpdatedNotifDescription": "Upozornit, že byly provedeny aktualizace jedné nebo více aplikací na pozadí",
 | 
				
			||||||
    "xWasUpdatedToY": "{} byla aktualizována na {}",
 | 
					    "xWasUpdatedToY": "Aplikace {} byla aktualizována na {}.",
 | 
				
			||||||
    "xWasNotUpdatedToY": "Nepodařilo se aktualizovat {} na {}.",
 | 
					    "xWasNotUpdatedToY": "Nepodařilo se aktualizovat {} na {}.",
 | 
				
			||||||
    "errorCheckingUpdates": "Chyba kontroly aktualizací",
 | 
					    "errorCheckingUpdates": "Chyba kontroly aktualizací",
 | 
				
			||||||
    "errorCheckingUpdatesNotifDescription": "Zobrazit oznámení při neúspěšné kontrole aktualizací na pozadí",
 | 
					    "errorCheckingUpdatesNotifDescription": "Zobrazit oznámení při neúspěšné kontrole aktualizací na pozadí",
 | 
				
			||||||
@@ -161,25 +161,26 @@
 | 
				
			|||||||
    "completeAppInstallationNotifDescription": "Vyzvat k návratu do Obtainium pro dokončení instalace aplikací",
 | 
					    "completeAppInstallationNotifDescription": "Vyzvat k návratu do Obtainium pro dokončení instalace aplikací",
 | 
				
			||||||
    "checkingForUpdates": "Zkontrolovat aktualizace",
 | 
					    "checkingForUpdates": "Zkontrolovat aktualizace",
 | 
				
			||||||
    "checkingForUpdatesNotifDescription": "Dočasné oznámení zobrazené při kontrole aktualizací",
 | 
					    "checkingForUpdatesNotifDescription": "Dočasné oznámení zobrazené při kontrole aktualizací",
 | 
				
			||||||
    "pleaseAllowInstallPerm": "Povolte prosím Obtainium instalovat aplikace",
 | 
					    "pleaseAllowInstallPerm": "Povolte prosím aplikaci Obtainium instalovat aplikace",
 | 
				
			||||||
    "trackOnly": "Jen sledovat",
 | 
					    "trackOnly": "Pouze sledovat",
 | 
				
			||||||
    "errorWithHttpStatusCode": "Chyba {}",
 | 
					    "errorWithHttpStatusCode": "Chyba {}",
 | 
				
			||||||
    "versionCorrectionDisabled": "Oprava verze zakázána (zásuvný modul zřejmě nefunguje)",
 | 
					    "versionCorrectionDisabled": "Oprava verze zakázána (zásuvný modul zřejmě nefunguje)",
 | 
				
			||||||
    "unknown": "Neznám",
 | 
					    "unknown": "Neznám",
 | 
				
			||||||
    "none": "Žádný",
 | 
					    "none": "Žádný",
 | 
				
			||||||
 | 
					    "all": "Všechny",
 | 
				
			||||||
    "never": "Nikdy",
 | 
					    "never": "Nikdy",
 | 
				
			||||||
    "latestVersionX": "Nejnovější verze: {}",
 | 
					    "latestVersionX": "Nejnovější verze: {}",
 | 
				
			||||||
    "installedVersionX": "Nainstalovaná verze: {}",
 | 
					    "installedVersionX": "Nainstalovaná verze: {}",
 | 
				
			||||||
    "lastUpdateCheckX": "Poslední kontrola aktualizace: {}",
 | 
					    "lastUpdateCheckX": "Poslední kontrola aktualizací: {}",
 | 
				
			||||||
    "remove": "Odebrat",
 | 
					    "remove": "Odebrat",
 | 
				
			||||||
    "yesMarkUpdated": "Ano, označit jako aktualizované",
 | 
					    "yesMarkUpdated": "Ano, označit jako aktualizované",
 | 
				
			||||||
    "fdroid": "Oficiální repozitář F-Droid",
 | 
					    "fdroid": "Oficiální repozitář F-Droid",
 | 
				
			||||||
    "appIdOrName": "ID nebo název apky",
 | 
					    "appIdOrName": "ID nebo název aplikace",
 | 
				
			||||||
    "appId": "ID aplikace",
 | 
					    "appId": "ID aplikace",
 | 
				
			||||||
    "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",
 | 
				
			||||||
    "install": "Nainstalujte",
 | 
					    "install": "Instalovat",
 | 
				
			||||||
    "markInstalled": "Označit jako nainstalovaný",
 | 
					    "markInstalled": "Označit jako nainstalovaný",
 | 
				
			||||||
    "update": "Aktualizovat",
 | 
					    "update": "Aktualizovat",
 | 
				
			||||||
    "markUpdated": "Označit jako aktuální",
 | 
					    "markUpdated": "Označit jako aktuální",
 | 
				
			||||||
@@ -189,7 +190,7 @@
 | 
				
			|||||||
    "downloadingX": "Stáhnout {}",
 | 
					    "downloadingX": "Stáhnout {}",
 | 
				
			||||||
    "downloadX": "Stáhnout {}",
 | 
					    "downloadX": "Stáhnout {}",
 | 
				
			||||||
    "downloadedX": "Staženo {}",
 | 
					    "downloadedX": "Staženo {}",
 | 
				
			||||||
    "releaseAsset": "Vydání aktiva",
 | 
					    "releaseAsset": "Soubor vydání",
 | 
				
			||||||
    "downloadNotifDescription": "Informuje uživatele o průběhu stahování aplikace",
 | 
					    "downloadNotifDescription": "Informuje uživatele o průběhu stahování aplikace",
 | 
				
			||||||
    "noAPKFound": "Žádná APK nebyla nalezena",
 | 
					    "noAPKFound": "Žádná APK nebyla nalezena",
 | 
				
			||||||
    "noVersionDetection": "Žádná detekce verze",
 | 
					    "noVersionDetection": "Žádná detekce verze",
 | 
				
			||||||
@@ -201,17 +202,17 @@
 | 
				
			|||||||
    "deleteCategoriesQuestion": "Smazat kategorie?",
 | 
					    "deleteCategoriesQuestion": "Smazat kategorie?",
 | 
				
			||||||
    "categoryDeleteWarning": "Všechny aplikace v odstraněných kategoriích budou nastaveny na nekategorizované.",
 | 
					    "categoryDeleteWarning": "Všechny aplikace v odstraněných kategoriích budou nastaveny na nekategorizované.",
 | 
				
			||||||
    "addCategory": "Přidat kategorii",
 | 
					    "addCategory": "Přidat kategorii",
 | 
				
			||||||
    "label": "Štítek",
 | 
					    "label": "Popisek",
 | 
				
			||||||
    "language": "Jazyk",
 | 
					    "language": "Jazyk",
 | 
				
			||||||
    "copiedToClipboard": "Zkopírováno do schránky",
 | 
					    "copiedToClipboard": "Zkopírováno do schránky",
 | 
				
			||||||
    "storagePermissionDenied": "Oprávnění k ukládání odepřeno",
 | 
					    "storagePermissionDenied": "Oprávnění k ukládání odepřeno",
 | 
				
			||||||
    "selectedCategorizeWarning": "Toto nahradí všechna stávající nastavení kategorií pro vybrané aplikace.",
 | 
					    "selectedCategorizeWarning": "Toto nahradí všechna stávající nastavení kategorií pro vybrané aplikace.",
 | 
				
			||||||
    "filterAPKsByRegEx": "Filtrovat APK podle regulárního výrazu",
 | 
					    "filterAPKsByRegEx": "Filtrovat APK podle regulárního výrazu",
 | 
				
			||||||
    "removeFromObtainium": "Odebrat z Obtainium",
 | 
					    "removeFromObtainium": "Odebrat z Obtainia",
 | 
				
			||||||
    "uninstallFromDevice": "Odinstalovat ze zařízení",
 | 
					    "uninstallFromDevice": "Odinstalovat ze zařízení",
 | 
				
			||||||
    "onlyWorksWithNonVersionDetectApps": "Funguje pouze pro aplikace s vypnutou detekcí verze.",
 | 
					    "onlyWorksWithNonVersionDetectApps": "Funguje pouze pro aplikace s vypnutou detekcí verze.",
 | 
				
			||||||
    "releaseDateAsVersion": "Použít datum vydání jako verzi",
 | 
					    "releaseDateAsVersion": "Použít datum vydání jako verzi",
 | 
				
			||||||
    "releaseTitleAsVersion": "Použít název verze jako řetězec verze",
 | 
					    "releaseTitleAsVersion": "Použít název vydání jako řetězec verze",
 | 
				
			||||||
    "releaseDateAsVersionExplanation": "Tato možnost by měla být použita pouze u aplikace, kde detekce verzí nefunguje správně, ale je k dispozici datum vydání.",
 | 
					    "releaseDateAsVersionExplanation": "Tato možnost by měla být použita pouze u aplikace, kde detekce verzí nefunguje správně, ale je k dispozici datum vydání.",
 | 
				
			||||||
    "changes": "Změny",
 | 
					    "changes": "Změny",
 | 
				
			||||||
    "releaseDate": "Datum vydání",
 | 
					    "releaseDate": "Datum vydání",
 | 
				
			||||||
@@ -221,16 +222,16 @@
 | 
				
			|||||||
    "standardVersionDetection": "Standardní detekce verze",
 | 
					    "standardVersionDetection": "Standardní detekce verze",
 | 
				
			||||||
    "groupByCategory": "Seskupit podle kategorie",
 | 
					    "groupByCategory": "Seskupit podle kategorie",
 | 
				
			||||||
    "autoApkFilterByArch": "Pokud je to možné, pokuste se filtrovat soubory APK podle architektury procesoru",
 | 
					    "autoApkFilterByArch": "Pokud je to možné, pokuste se filtrovat soubory APK podle architektury procesoru",
 | 
				
			||||||
    "autoLinkFilterByArch": "Pokus o filtrování odkazů podle architektury procesoru, pokud je to možné.",
 | 
					    "autoLinkFilterByArch": "Pokusit se filtrovat odkazy podle architektury procesoru, pokud je to možné",
 | 
				
			||||||
    "overrideSource": "Přepsat zdroj",
 | 
					    "overrideSource": "Přepsat zdroj",
 | 
				
			||||||
    "dontShowAgain": "Nezobrazovat znovu",
 | 
					    "dontShowAgain": "Nezobrazovat znovu",
 | 
				
			||||||
    "dontShowTrackOnlyWarnings": "Nezobrazovat varování pro 'Jen sledované'",
 | 
					    "dontShowTrackOnlyWarnings": "Nezobrazovat varování pro „pouze sledované“",
 | 
				
			||||||
    "dontShowAPKOriginWarnings": "Nezobrazovat varování pro původ APK",
 | 
					    "dontShowAPKOriginWarnings": "Nezobrazovat varování o původu APK",
 | 
				
			||||||
    "moveNonInstalledAppsToBottom": "Přesunout nenainstalované aplikace na konec zobrazení Aplikace",
 | 
					    "moveNonInstalledAppsToBottom": "Přesunout nenainstalované aplikace na konec zobrazení Aplikace",
 | 
				
			||||||
    "gitlabPATLabel": "Osobní přístupový token GitLab",
 | 
					    "gitlabPATLabel": "Osobní přístupový token GitLab",
 | 
				
			||||||
    "about": "O",
 | 
					    "about": "Informace",
 | 
				
			||||||
    "requiresCredentialsInSettings": "{}: Vyžaduje další pověření (v nastavení)",
 | 
					    "requiresCredentialsInSettings": "{} vyžaduje další pověření (v nastavení)",
 | 
				
			||||||
    "checkOnStart": "Zkontrolovat jednou při spuštění",
 | 
					    "checkOnStart": "Zkontrolovat aktualizace při spuštění",
 | 
				
			||||||
    "tryInferAppIdFromCode": "Pokusit se určit ID aplikace ze zdrojového kódu",
 | 
					    "tryInferAppIdFromCode": "Pokusit se určit ID aplikace ze zdrojového kódu",
 | 
				
			||||||
    "removeOnExternalUninstall": "Automaticky odstranit externě odinstalované aplikace",
 | 
					    "removeOnExternalUninstall": "Automaticky odstranit externě odinstalované aplikace",
 | 
				
			||||||
    "pickHighestVersionCode": "Automaticky vybrat nejvyšší verzi APK",
 | 
					    "pickHighestVersionCode": "Automaticky vybrat nejvyšší verzi APK",
 | 
				
			||||||
@@ -240,28 +241,28 @@
 | 
				
			|||||||
    "minStarCount": "Minimální počet hvězdiček",
 | 
					    "minStarCount": "Minimální počet hvězdiček",
 | 
				
			||||||
    "addInfoBelow": "Přidat tuto informaci na konec stránky.",
 | 
					    "addInfoBelow": "Přidat tuto informaci na konec stránky.",
 | 
				
			||||||
    "addInfoInSettings": "Přidat tuto informaci do nastavení.",
 | 
					    "addInfoInSettings": "Přidat tuto informaci do nastavení.",
 | 
				
			||||||
    "githubSourceNote": "Omezení rychlosti GitHub lze obejít pomocí klíče API.",
 | 
					    "githubSourceNote": "Limit požadavků služby GitHub lze obejít pomocí klíče API.",
 | 
				
			||||||
    "sortByLastLinkSegment": "Seřadit pouze podle poslední části odkazu",
 | 
					    "sortByLastLinkSegment": "Seřadit pouze podle poslední části odkazu",
 | 
				
			||||||
    "filterReleaseNotesByRegEx": "Filtrovat poznámky k vydání podle regulárního výrazu",
 | 
					    "filterReleaseNotesByRegEx": "Filtrovat seznam změn podle regulárního výrazu",
 | 
				
			||||||
    "customLinkFilterRegex": "Vlastní filtr odkazů APK podle regulárního výrazu (výchozí '.apk$')",
 | 
					    "customLinkFilterRegex": "Vlastní filtr odkazů APK podle regulárního výrazu (výchozí: „.apk$“)",
 | 
				
			||||||
    "appsPossiblyUpdated": "Byly provedeny pokusy o aktualizaci aplikací",
 | 
					    "appsPossiblyUpdated": "Byly provedeny pokusy o aktualizaci aplikací",
 | 
				
			||||||
    "appsPossiblyUpdatedNotifDescription": "Upozorňuje uživatele, že na pozadí mohly být provedeny aktualizace jedné nebo více aplikací",
 | 
					    "appsPossiblyUpdatedNotifDescription": "Upozorňuje uživatele, že na pozadí mohly být provedeny aktualizace jedné nebo více aplikací",
 | 
				
			||||||
    "xWasPossiblyUpdatedToY": "{} mohlo být aktualizováno na {}.",
 | 
					    "xWasPossiblyUpdatedToY": "{} mohlo být aktualizováno na {}.",
 | 
				
			||||||
    "enableBackgroundUpdates": "Povolit aktualizace na pozadí",
 | 
					    "enableBackgroundUpdates": "Povolit aktualizace na pozadí",
 | 
				
			||||||
    "backgroundUpdateReqsExplanation": "Aktualizace na pozadí nemusí být možná pro všechny aplikace.",
 | 
					    "backgroundUpdateReqsExplanation": "Aktualizace na pozadí nemusí být možná pro všechny aplikace.",
 | 
				
			||||||
    "backgroundUpdateLimitsExplanation": "Úspěšnost instalace na pozadí lze určit pouze v případě, že je otevřeno Obtainium.",
 | 
					    "backgroundUpdateLimitsExplanation": "Úspěšnost instalace na pozadí lze určit pouze v případě, že je otevřeno Obtainium.",
 | 
				
			||||||
    "verifyLatestTag": "Zkontrolovat značku latest",
 | 
					    "verifyLatestTag": "Ověřit značku „latest“",
 | 
				
			||||||
    "intermediateLinkRegex": "Filtrovat mezipropojení, které by mělo být navštíveno jako první",
 | 
					    "intermediateLinkRegex": "Filtr pro návštěvu „prostředního“ odkazu",
 | 
				
			||||||
    "filterByLinkText": "Filtrovat odkazy podle textu odkazu",
 | 
					    "filterByLinkText": "Filtrovat odkazy podle textu odkazu",
 | 
				
			||||||
    "intermediateLinkNotFound": "Připojený odkaz nenalezen",
 | 
					    "intermediateLinkNotFound": "Připojený odkaz nenalezen",
 | 
				
			||||||
    "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": "Zakázat aktualizace na pozadí, pokud není k dispozici Wi-Fi",
 | 
				
			||||||
    "bgUpdatesWhileChargingOnly": "Zakázat aktualizace na pozadí, když se nenabíjí",
 | 
					    "bgUpdatesWhileChargingOnly": "Zakázat aktualizace na pozadí, pokud se zařízení nenabíjí",
 | 
				
			||||||
    "autoSelectHighestVersionCode": "Automaticky vybrat nejvyšší verzi APK",
 | 
					    "autoSelectHighestVersionCode": "Automaticky vybrat APK s nejvyšším kódem verze",
 | 
				
			||||||
    "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í RegEx",
 | 
				
			||||||
    "matchGroupToUseForX": "Skupina shody, která se použije pro \"{}\"",
 | 
					    "matchGroupToUseForX": "Shoda se skupinou k použití pro „{}“",
 | 
				
			||||||
    "matchGroupToUse": "Odpovídá použité skupině",
 | 
					    "matchGroupToUse": "Odpovídá použité skupině",
 | 
				
			||||||
    "highlightTouchTargets": "Zvýraznit méně zjevné cíle dotyku",
 | 
					    "highlightTouchTargets": "Zvýraznit méně zjevné cíle dotyku",
 | 
				
			||||||
    "pickExportDir": "Vybrat adresář pro export",
 | 
					    "pickExportDir": "Vybrat adresář pro export",
 | 
				
			||||||
@@ -280,114 +281,128 @@
 | 
				
			|||||||
    "installing": "Instaluji",
 | 
					    "installing": "Instaluji",
 | 
				
			||||||
    "skipUpdateNotifications": "Neposkytovat oznámení o aktualizaci",
 | 
					    "skipUpdateNotifications": "Neposkytovat oznámení o aktualizaci",
 | 
				
			||||||
    "updatesAvailableNotifChannel": "Dostupné aktualizace",
 | 
					    "updatesAvailableNotifChannel": "Dostupné aktualizace",
 | 
				
			||||||
    "appsUpdatedNotifChannel": "Apky aktualizovány",
 | 
					    "appsUpdatedNotifChannel": "Aplikace aktualizovány",
 | 
				
			||||||
    "appsPossiblyUpdatedNotifChannel": "Byly provedeny pokusy o aktualizace aplikací",
 | 
					    "appsPossiblyUpdatedNotifChannel": "Byly provedeny pokusy o aktualizace aplikací",
 | 
				
			||||||
    "errorCheckingUpdatesNotifChannel": "Chyba při kontrole aktualizací",
 | 
					    "errorCheckingUpdatesNotifChannel": "Chyba při kontrole aktualizací",
 | 
				
			||||||
    "appsRemovedNotifChannel": "Odstraněné apky",
 | 
					    "appsRemovedNotifChannel": "Aplikace odstraněny",
 | 
				
			||||||
    "downloadingXNotifChannel": "Stáhnout {}",
 | 
					    "downloadingXNotifChannel": "Stáhnout {}",
 | 
				
			||||||
    "completeAppInstallationNotifChannel": "Dokončit instalaci aplikace",
 | 
					    "completeAppInstallationNotifChannel": "Dokončit instalaci aplikace",
 | 
				
			||||||
    "checkingForUpdatesNotifChannel": "Zkontrolovat aktualizace",
 | 
					    "checkingForUpdatesNotifChannel": "Zkontrolovat aktualizace",
 | 
				
			||||||
    "onlyCheckInstalledOrTrackOnlyApps": "Na aktualizace kontrolovat pouze nainstalované aplikace a aplikace označené Track only",
 | 
					    "onlyCheckInstalledOrTrackOnlyApps": "Aktualizace kontrolovat pouze u nainstalovaných a sledovaných aplikací",
 | 
				
			||||||
    "supportFixedAPKURL": "Odhadnout novější verzi na základě prvních třiceti číslic kontrolního součtu adresy URL APK, pokud není podporována jinak",
 | 
					    "supportFixedAPKURL": "Odhadnout novější verzi na základě prvních třiceti číslic kontrolního součtu adresy URL APK, pokud není podporována jinak",
 | 
				
			||||||
    "selectX": "Vybrat {}",
 | 
					    "selectX": "Vybrat {}",
 | 
				
			||||||
    "parallelDownloads": "Povolit souběžné stahování",
 | 
					    "parallelDownloads": "Povolit souběžné stahování",
 | 
				
			||||||
    "useShizuku": "K instalaci použijte Shizuku nebo Sui",
 | 
					    "useShizuku": "K instalaci použít Shizuku nebo Sui",
 | 
				
			||||||
    "shizukuBinderNotFound": "Shizuku neběží",
 | 
					    "shizukuBinderNotFound": "Shizuku neběží",
 | 
				
			||||||
    "shizukuOld": "Stará verze Shizuku (<11) - aktualizujte ji",
 | 
					    "shizukuOld": "Stará verze Shizuku (<11) - aktualizujte ji",
 | 
				
			||||||
    "shizukuOldAndroidWithADB": "Shizuku běží na Androidu < 8.1 s ADB - aktualizujte Android nebo místo toho použijte Sui",
 | 
					    "shizukuOldAndroidWithADB": "Shizuku běží na Androidu < 8.1 s ADB - aktualizujte Android nebo místo toho použijte Sui",
 | 
				
			||||||
    "shizukuPretendToBeGooglePlay": "Nastavení Google Play jako zdroje instalace (pokud se používá Shizuku)",
 | 
					    "shizukuPretendToBeGooglePlay": "Nastavit Google Play jako zdroj instalace (pokud se používá Shizuku)",
 | 
				
			||||||
    "useSystemFont": "Použít systémové písmo",
 | 
					    "useSystemFont": "Použít systémové písmo",
 | 
				
			||||||
    "useVersionCodeAsOSVersion": "Použít kód verze aplikace jako verzi zjištěnou OS",
 | 
					    "useVersionCodeAsOSVersion": "Použít kód verze aplikace jako verzi zjištěnou OS",
 | 
				
			||||||
    "requestHeader": "Hlavička požadavku",
 | 
					    "requestHeader": "Hlavička požadavku",
 | 
				
			||||||
    "useLatestAssetDateAsReleaseDate": "Použít poslední nahrané dílo jako datum vydání",
 | 
					    "useLatestAssetDateAsReleaseDate": "Použít poslední nahraný soubor jako datum vydání",
 | 
				
			||||||
    "defaultPseudoVersioningMethod": "Výchozí metoda pseudoverze",
 | 
					    "defaultPseudoVersioningMethod": "Výchozí metoda pseudoverze",
 | 
				
			||||||
    "partialAPKHash": "Částečný hash APK",
 | 
					    "partialAPKHash": "Částečný hash APK",
 | 
				
			||||||
    "APKLinkHash": "Odkaz APK Hash",
 | 
					    "APKLinkHash": "Odkaz APK Hash",
 | 
				
			||||||
    "directAPKLink": "Přímý odkaz APK",
 | 
					    "directAPKLink": "Přímý odkaz APK",
 | 
				
			||||||
    "pseudoVersionInUse": "Pseudoverze se používá",
 | 
					    "pseudoVersionInUse": "Pseudoverze se používá",
 | 
				
			||||||
    "installed": "Instalováno",
 | 
					    "installed": "Nainstalováno",
 | 
				
			||||||
    "latest": "Nejnovější",
 | 
					    "latest": "Nejnovější",
 | 
				
			||||||
    "invertRegEx": "Invertovat regulární výraz",
 | 
					    "invertRegEx": "Invertovat regulární výraz",
 | 
				
			||||||
    "note": "Poznámka",
 | 
					    "note": "Poznámka",
 | 
				
			||||||
    "selfHostedNote": "Rozbalovací seznam \"{}\" lze použít k dosažení vlastních/obvyklých instancí libovolného zdroje.",
 | 
					    "selfHostedNote": "Rozbalovací seznam „{}“ lze použít pro přístup k vlastním instancím libovolného zdroje.",
 | 
				
			||||||
    "badDownload": "APK nelze analyzovat (nekompatibilní nebo částečné stažení)",
 | 
					    "badDownload": "APK nelze analyzovat (nekompatibilní nebo částečné stažení)",
 | 
				
			||||||
    "beforeNewInstallsShareToAppVerifier": "Sdílení nových aplikací s aplikací AppVerifier (pokud je k dispozici)",
 | 
					    "beforeNewInstallsShareToAppVerifier": "Sdílet nové aplikace s aplikací AppVerifier (pokud je k dispozici)",
 | 
				
			||||||
    "appVerifierInstructionToast": "Sdílejte do aplikace AppVerifier a po dokončení se sem vraťte.",
 | 
					    "appVerifierInstructionToast": "Sdílejte do aplikace AppVerifier a po dokončení se sem vraťte.",
 | 
				
			||||||
    "wiki": "Nápověda/Wiki",
 | 
					    "wiki": "Nápověda/Wiki",
 | 
				
			||||||
    "crowdsourcedConfigsLabel": "Konfigurace aplikací s využitím crowdsourcingu (použití na vlastní nebezpečí)",
 | 
					    "crowdsourcedConfigsLabel": "Komunitní konfigurace aplikací (použití na vlastní nebezpečí)",
 | 
				
			||||||
    "crowdsourcedConfigsShort": "Konfigurace aplikací s využitím crowdsourcingu",
 | 
					    "crowdsourcedConfigsShort": "Konfigurace aplikací s využitím crowdsourcingu",
 | 
				
			||||||
    "allowInsecure": "Povolení nezabezpečených požadavků HTTP",
 | 
					    "allowInsecure": "Povolit nezabezpečené požadavků HTTP",
 | 
				
			||||||
    "stayOneVersionBehind": "Zůstaňte o jednu verzi pozadu za nejnovější",
 | 
					    "stayOneVersionBehind": "Zůstaňte o jednu verzi pozadu za nejnovější",
 | 
				
			||||||
    "useFirstApkOfVersion": "Automatický výběr prvního z více souborů APK",
 | 
					    "useFirstApkOfVersion": "Automatický výběr prvního z více souborů APK",
 | 
				
			||||||
    "refreshBeforeDownload": "Obnovení údajů o aplikaci před stažením",
 | 
					    "refreshBeforeDownload": "Obnovit údaje o aplikaci před stažením",
 | 
				
			||||||
    "tencentAppStore": "Tencent App Store",
 | 
					    "tencentAppStore": "Tencent App Store",
 | 
				
			||||||
    "coolApk": "CoolApk",
 | 
					    "coolApk": "CoolApk",
 | 
				
			||||||
    "vivoAppStore": "vivo App Store (CN)",
 | 
					    "vivoAppStore": "vivo App Store (CN)",
 | 
				
			||||||
    "name": "Název",
 | 
					    "name": "Název",
 | 
				
			||||||
    "smartname": "Název (Smart)",
 | 
					    "smartname": "Název (chytrý)",
 | 
				
			||||||
    "sortMethod": "Metoda třídění",
 | 
					    "sortMethod": "Metoda třídění",
 | 
				
			||||||
    "welcome": "Vítejte na",
 | 
					    "welcome": "Vítejte na",
 | 
				
			||||||
    "documentationLinksNote": "Níže odkazovaná stránka Obtainium GitHub obsahuje odkazy na videa, články, diskuse a další zdroje, které vám pomohou pochopit, jak aplikaci používat.",
 | 
					    "documentationLinksNote": "Níže odkazovaná stránka Obtainium GitHub obsahuje odkazy na videa, články, diskuse a další zdroje, které vám pomohou pochopit, jak aplikaci používat.",
 | 
				
			||||||
    "batteryOptimizationNote": "Všimněte si, že stahování na pozadí může fungovat spolehlivěji, pokud vypnete optimalizaci baterie operačního systému pro Obtainium.",
 | 
					    "batteryOptimizationNote": "Upozorňujeme, že stahování na pozadí může fungovat spolehlivěji, pokud v nastavení aplikace Obtainium přepnete na „službu v popředí“ a/nebo v nastavení operačního systému pro Obtainium vypnete optimalizaci baterie.",
 | 
				
			||||||
    "fileDeletionError": "Soubor se nepodařilo odstranit (zkuste jej odstranit ručně a pak to zkuste znovu): \"{}\"",
 | 
					    "fileDeletionError": "Soubor se nepodařilo odstranit (zkuste jej odstranit ručně a akci opakujte): „{}“",
 | 
				
			||||||
    "foregroundService": "Služba Obtainium na popředí",
 | 
					    "foregroundService": "Služba Obtainium na popředí",
 | 
				
			||||||
    "foregroundServiceExplanation": "Použití služby v popředí pro kontrolu aktualizací (spolehlivější, spotřebovává více energie).",
 | 
					    "foregroundServiceExplanation": "Použít službu v popředí pro kontrolu aktualizací (spolehlivější, spotřebovává více energie)",
 | 
				
			||||||
    "fgServiceNotice": "Toto oznámení je nutné pro kontrolu aktualizací na pozadí (lze jej skrýt v nastavení operačního systému).",
 | 
					    "fgServiceNotice": "Toto oznámení je nutné pro kontrolu aktualizací na pozadí (lze jej skrýt v nastavení systému)",
 | 
				
			||||||
 | 
					    "excludeSecrets": "Vyloučit tajemství",
 | 
				
			||||||
    "removeAppQuestion": {
 | 
					    "removeAppQuestion": {
 | 
				
			||||||
        "one": "Odstranit Apku?",
 | 
					        "one": "Odstranit aplikaci?",
 | 
				
			||||||
        "other": "Odstranit Apky?"
 | 
					        "other": "Odstranit aplikace?"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "tooManyRequestsTryAgainInMinutes": {
 | 
					    "tooManyRequestsTryAgainInMinutes": {
 | 
				
			||||||
        "one": "Příliš mnoho požadavků (omezená rychlost) - zkuste to znovu za {} minutu",
 | 
					        "one": "Příliš mnoho požadavků (limit požadavků) - zkuste to znovu za {} minutu",
 | 
				
			||||||
        "other": "Příliš mnoho požadavků (omezená rychlost) - zkuste to znovu za {} minut"
 | 
					        "few": "Příliš mnoho požadavků (limit požadavků) - zkuste to znovu za {} minuty",
 | 
				
			||||||
 | 
					        "other": "Příliš mnoho požadavků (limit požadavků) - zkuste to znovu za {} minut"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "bgUpdateGotErrorRetryInMinutes": {
 | 
					    "bgUpdateGotErrorRetryInMinutes": {
 | 
				
			||||||
        "one": "Při kontrole aktualizace na pozadí byla zjištěna chyba {}, opakování bude naplánováno za {} minut",
 | 
					        "one": "Při kontrole aktualizací na pozadí byla zjištěna {}, opakování bude naplánováno za {} minutu",
 | 
				
			||||||
        "other": "Při kontrole aktualizací na pozadí byla zjištěna chyba {}, opakování bude naplánováno za {} minut"
 | 
					        "few": "Při kontrole aktualizací na pozadí byla zjištěna {}, opakování bude naplánováno za {} minuty",
 | 
				
			||||||
 | 
					        "other": "Při kontrole aktualizací na pozadí byla zjištěna {}, opakování bude naplánováno za {} minut"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "bgCheckFoundUpdatesWillNotifyIfNeeded": {
 | 
					    "bgCheckFoundUpdatesWillNotifyIfNeeded": {
 | 
				
			||||||
        "one": "Při kontrole aktualizací na pozadí nalezena {}aktualizace - v případě potřeby upozorní uživatele",
 | 
					        "one": "Při kontrole aktualizací na pozadí nalezena {} aktualizace – v případě potřeby bude upozorněn uživatel",
 | 
				
			||||||
        "other": "Kontrola aktualizací na pozadí nalezla {} aktualizací - v případě potřeby upozorní uživatele"
 | 
					        "few": "Při kontrole aktualizací na pozadí nalezeny {} aktualizace – v případě potřeby bude upozorněn uživatel",
 | 
				
			||||||
 | 
					        "other": "Při kontrole aktualizací na pozadí nalezeno {} aktualizací – v případě potřeby bude upozorněn uživatel"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "apps": {
 | 
					    "apps": {
 | 
				
			||||||
        "one": "{} Apka",
 | 
					        "one": "{} aplikace",
 | 
				
			||||||
        "other": "{} Apky"
 | 
					        "few": "{} aplikace",
 | 
				
			||||||
 | 
					        "other": "{} aplikací"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "url": {
 | 
					    "url": {
 | 
				
			||||||
        "one": "{} Adresa",
 | 
					        "one": "{} adresa",
 | 
				
			||||||
        "other": "{} Adres"
 | 
					        "few": "{} adresy",
 | 
				
			||||||
 | 
					        "other": "{} adres"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "minute": {
 | 
					    "minute": {
 | 
				
			||||||
        "one": "{} Minuta",
 | 
					        "one": "{} minuta",
 | 
				
			||||||
        "other": "{} Minut"
 | 
					        "few": "{} minuty",
 | 
				
			||||||
 | 
					        "other": "{} minut"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "hour": {
 | 
					    "hour": {
 | 
				
			||||||
        "one": "{} Hodina",
 | 
					        "one": "{} hodina",
 | 
				
			||||||
        "other": "{} Hodin"
 | 
					        "few": "{} hodiny",
 | 
				
			||||||
 | 
					        "other": "{} hodin"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "day": {
 | 
					    "day": {
 | 
				
			||||||
        "one": "{} Den",
 | 
					        "one": "{} den",
 | 
				
			||||||
        "other": "{} Dnů"
 | 
					        "few": "{} dny",
 | 
				
			||||||
 | 
					        "other": "{} dní"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "clearedNLogsBeforeXAfterY": {
 | 
					    "clearedNLogsBeforeXAfterY": {
 | 
				
			||||||
        "one": "{n} Záznam vymazán (před = {before}, po = {after})",
 | 
					        "one": "Vymazán {n} záznam (před = {before}, po = {after})",
 | 
				
			||||||
        "other": "{n} Záznamů vymazáno (před = {before}, po = {after})"
 | 
					        "few": "Vymazány {n} záznamy (před = {before}, po = {after})",
 | 
				
			||||||
 | 
					        "other": "Vymazáno {n} záznamů (před = {before}, po = {after})"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "xAndNMoreUpdatesAvailable": {
 | 
					    "xAndNMoreUpdatesAvailable": {
 | 
				
			||||||
        "one": "{} a 1 další aplikace mají aktualizace.",
 | 
					        "one": "{} a 1 další aplikace mají aktualizace.",
 | 
				
			||||||
        "other": "{} a {} další aplikace mají aktualizace."
 | 
					        "few": "{} a {} další aplikace mají aktualizace.",
 | 
				
			||||||
 | 
					        "other": "{} a {} dalších aplikací má aktualizace."
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "xAndNMoreUpdatesInstalled": {
 | 
					    "xAndNMoreUpdatesInstalled": {
 | 
				
			||||||
        "one": "{} a 1 další aplikace mají aktualizace.",
 | 
					        "one": "{} a 1 další aplikace byly aktualizovány.",
 | 
				
			||||||
        "other": "{} a {} další aplikace byly aktualizovány."
 | 
					        "few": "{} a {} další aplikace byly aktualizovány.",
 | 
				
			||||||
 | 
					        "other": "{} a {} dalších aplikací bylo aktualizováno."
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "xAndNMoreUpdatesFailed": {
 | 
					    "xAndNMoreUpdatesFailed": {
 | 
				
			||||||
        "one": "Nepodařilo se aktualizovat {} a 1 další aplikaci.",
 | 
					        "one": "Nepodařilo se aktualizovat {} a 1 další aplikaci.",
 | 
				
			||||||
        "other": "Nepodařilo se aktualizovat {} a {} další aplikace."
 | 
					        "few": "Nepodařilo se aktualizovat {} a {} další aplikace.",
 | 
				
			||||||
 | 
					        "other": "Nepodařilo se aktualizovat {} a {} dalších aplikací."
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "xAndNMoreUpdatesPossiblyInstalled": {
 | 
					    "xAndNMoreUpdatesPossiblyInstalled": {
 | 
				
			||||||
        "one": "{} a 1 další aplikace možno aktualizovat",
 | 
					        "one": "{} a 1 další aplikace možná byly aktualizovány.",
 | 
				
			||||||
        "other": "{} a {} další aplikace mohou být aktualizovány."
 | 
					        "few": "{} a {} další aplikace možná byly aktualizovány.",
 | 
				
			||||||
 | 
					        "other": "{} a {} dalších aplikací možná bylo aktualizováno."
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "apk": {
 | 
					    "apk": {
 | 
				
			||||||
        "one": "{} APK",
 | 
					        "one": "{} APK",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,6 +167,7 @@
 | 
				
			|||||||
    "versionCorrectionDisabled": "Versionskorrektion 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",
 | 
				
			||||||
 | 
					    "all": "Alle",
 | 
				
			||||||
    "never": "Aldrig",
 | 
					    "never": "Aldrig",
 | 
				
			||||||
    "latestVersionX": "Seneste: {}",
 | 
					    "latestVersionX": "Seneste: {}",
 | 
				
			||||||
    "installedVersionX": "Installeret: {}",
 | 
					    "installedVersionX": "Installeret: {}",
 | 
				
			||||||
@@ -333,6 +334,7 @@
 | 
				
			|||||||
    "foregroundService": "Obtainium forgrundstjeneste",
 | 
					    "foregroundService": "Obtainium forgrundstjeneste",
 | 
				
			||||||
    "foregroundServiceExplanation": "Brug en forgrundstjeneste til opdateringskontrol (mere pålidelig, bruger mere strøm)",
 | 
					    "foregroundServiceExplanation": "Brug en forgrundstjeneste til opdateringskontrol (mere pålidelig, bruger mere strøm)",
 | 
				
			||||||
    "fgServiceNotice": "Denne meddelelse er nødvendig for baggrundsopdateringskontrol (den kan skjules i OS-indstillingerne).",
 | 
					    "fgServiceNotice": "Denne meddelelse er nødvendig for baggrundsopdateringskontrol (den kan skjules i OS-indstillingerne).",
 | 
				
			||||||
 | 
					    "excludeSecrets": "Udeluk hemmeligheder",
 | 
				
			||||||
    "removeAppQuestion": {
 | 
					    "removeAppQuestion": {
 | 
				
			||||||
        "one": "Fjern app?",
 | 
					        "one": "Fjern app?",
 | 
				
			||||||
        "other": "Fjern apps?"
 | 
					        "other": "Fjern apps?"
 | 
				
			||||||
@@ -358,16 +360,16 @@
 | 
				
			|||||||
        "other": "{} URL'er"
 | 
					        "other": "{} URL'er"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "minute": {
 | 
					    "minute": {
 | 
				
			||||||
        "one": "{} Minut",
 | 
					        "one": "{} minut",
 | 
				
			||||||
        "other": "{} Minutter"
 | 
					        "other": "{} minutter"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "hour": {
 | 
					    "hour": {
 | 
				
			||||||
        "one": "{} Time",
 | 
					        "one": "{} time",
 | 
				
			||||||
        "other": "{} Timer"
 | 
					        "other": "{} timer"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "day": {
 | 
					    "day": {
 | 
				
			||||||
        "one": "{} Dag",
 | 
					        "one": "{} dag",
 | 
				
			||||||
        "other": "{} Dage"
 | 
					        "other": "{} dage"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "clearedNLogsBeforeXAfterY": {
 | 
					    "clearedNLogsBeforeXAfterY": {
 | 
				
			||||||
        "one": "Ryddet {n} log (før = {before}, efter = {after})",
 | 
					        "one": "Ryddet {n} log (før = {before}, efter = {after})",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,6 +167,7 @@
 | 
				
			|||||||
    "versionCorrectionDisabled": "Versionskorrektur deaktiviert (Plugin scheint nicht zu funktionieren)",
 | 
					    "versionCorrectionDisabled": "Versionskorrektur deaktiviert (Plugin scheint nicht zu funktionieren)",
 | 
				
			||||||
    "unknown": "Unbekannt",
 | 
					    "unknown": "Unbekannt",
 | 
				
			||||||
    "none": "Keine",
 | 
					    "none": "Keine",
 | 
				
			||||||
 | 
					    "all": "Alle",
 | 
				
			||||||
    "never": "Nie",
 | 
					    "never": "Nie",
 | 
				
			||||||
    "latestVersionX": "Neueste Version: {}",
 | 
					    "latestVersionX": "Neueste Version: {}",
 | 
				
			||||||
    "installedVersionX": "Installierte Version: {}",
 | 
					    "installedVersionX": "Installierte Version: {}",
 | 
				
			||||||
@@ -232,7 +233,7 @@
 | 
				
			|||||||
    "requiresCredentialsInSettings": "{}: Benötigt zusätzliche Anmeldedaten (in den Einstellungen)",
 | 
					    "requiresCredentialsInSettings": "{}: Benötigt zusätzliche Anmeldedaten (in den Einstellungen)",
 | 
				
			||||||
    "checkOnStart": "Einmalig beim Start auf Aktualisierungen prüfen",
 | 
					    "checkOnStart": "Einmalig beim Start auf Aktualisierungen prüfen",
 | 
				
			||||||
    "tryInferAppIdFromCode": "Versuchen, die App-ID aus dem Quellcode zu ermitteln",
 | 
					    "tryInferAppIdFromCode": "Versuchen, die App-ID aus dem Quellcode zu ermitteln",
 | 
				
			||||||
    "removeOnExternalUninstall": "Extern deinstallierte Apps automatische entfernen",
 | 
					    "removeOnExternalUninstall": "Extern deinstallierte Apps automatisch entfernen",
 | 
				
			||||||
    "pickHighestVersionCode": "Automatische Auswahl des APK mit höchstem Versionscode",
 | 
					    "pickHighestVersionCode": "Automatische Auswahl des APK mit höchstem Versionscode",
 | 
				
			||||||
    "checkUpdateOnDetailPage": "Nach Aktualisierungen suchen, wenn eine App-Detailseite geöffnet wird",
 | 
					    "checkUpdateOnDetailPage": "Nach Aktualisierungen suchen, wenn eine App-Detailseite geöffnet wird",
 | 
				
			||||||
    "disablePageTransitions": "Animationen für Seitenübergänge deaktivieren",
 | 
					    "disablePageTransitions": "Animationen für Seitenübergänge deaktivieren",
 | 
				
			||||||
@@ -314,8 +315,8 @@
 | 
				
			|||||||
    "beforeNewInstallsShareToAppVerifier": "Neue Apps mit AppVerifier teilen (falls verfügbar)",
 | 
					    "beforeNewInstallsShareToAppVerifier": "Neue Apps mit AppVerifier teilen (falls verfügbar)",
 | 
				
			||||||
    "appVerifierInstructionToast": "Teile die Daten mit AppVerifier und kehre im Anschluss hierher zurück.",
 | 
					    "appVerifierInstructionToast": "Teile die Daten mit AppVerifier und kehre im Anschluss hierher zurück.",
 | 
				
			||||||
    "wiki": "Hilfe/Wiki",
 | 
					    "wiki": "Hilfe/Wiki",
 | 
				
			||||||
    "crowdsourcedConfigsLabel": "Crowdsourced App-Konfigurationen (Verwendung auf eigene Gefahr)",
 | 
					    "crowdsourcedConfigsLabel": "Komplexe Appkonfigurationen (Verwendung auf eigene Gefahr)",
 | 
				
			||||||
    "crowdsourcedConfigsShort": "Crowdsourced App-Konfigurationen",
 | 
					    "crowdsourcedConfigsShort": "Komplexe Appkonfigurationen",
 | 
				
			||||||
    "allowInsecure": "Unsichere HTTP-Anfragen zulassen",
 | 
					    "allowInsecure": "Unsichere HTTP-Anfragen zulassen",
 | 
				
			||||||
    "stayOneVersionBehind": "Eine Version hinter der neuesten Version bleiben",
 | 
					    "stayOneVersionBehind": "Eine Version hinter der neuesten Version bleiben",
 | 
				
			||||||
    "useFirstApkOfVersion": "Automatische Auswahl der ersten von mehreren APKs",
 | 
					    "useFirstApkOfVersion": "Automatische Auswahl der ersten von mehreren APKs",
 | 
				
			||||||
@@ -331,8 +332,9 @@
 | 
				
			|||||||
    "batteryOptimizationNote": "Beachten Sie, dass Downloads im Hintergrund möglicherweise zuverlässiger funktionieren, wenn Sie die Batterieoptimierung des Betriebssystems für Obtainium deaktivieren.",
 | 
					    "batteryOptimizationNote": "Beachten Sie, dass Downloads im Hintergrund möglicherweise zuverlässiger funktionieren, wenn Sie die Batterieoptimierung des Betriebssystems für Obtainium deaktivieren.",
 | 
				
			||||||
    "fileDeletionError": "Die Datei konnte nicht gelöscht werden (versuchen Sie, sie manuell zu löschen und versuchen Sie es dann erneut): \"{}\"",
 | 
					    "fileDeletionError": "Die Datei konnte nicht gelöscht werden (versuchen Sie, sie manuell zu löschen und versuchen Sie es dann erneut): \"{}\"",
 | 
				
			||||||
    "foregroundService": "Obtainium-Vordergrunddienst",
 | 
					    "foregroundService": "Obtainium-Vordergrunddienst",
 | 
				
			||||||
    "foregroundServiceExplanation": "Verwendung eines Dienstes im Vordergrund für die Aktualisierungsprüfung (zuverlässiger, verbraucht mehr Strom)",
 | 
					    "foregroundServiceExplanation": "Aktualisierungsprüfung im Vordergrund durchführen (zuverlässiger, verbraucht mehr Strom)",
 | 
				
			||||||
    "fgServiceNotice": "Diese Benachrichtigung ist für die Prüfung von Updates im Hintergrund erforderlich (sie kann in den Betriebssystemeinstellungen ausgeblendet werden)",
 | 
					    "fgServiceNotice": "Diese Benachrichtigung ist für die Prüfung von Updates im Hintergrund erforderlich (sie kann in den Betriebssystemeinstellungen ausgeblendet werden)",
 | 
				
			||||||
 | 
					    "excludeSecrets": "Geheimnisse ausschließen",
 | 
				
			||||||
    "removeAppQuestion": {
 | 
					    "removeAppQuestion": {
 | 
				
			||||||
        "one": "App entfernen?",
 | 
					        "one": "App entfernen?",
 | 
				
			||||||
        "other": "Apps entfernen?"
 | 
					        "other": "Apps entfernen?"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,6 +167,7 @@
 | 
				
			|||||||
    "versionCorrectionDisabled": "Versiokorekto malaktivigita (ŝajnas, ke la kromaĵo ne funkcias)",
 | 
					    "versionCorrectionDisabled": "Versiokorekto malaktivigita (ŝajnas, ke la kromaĵo ne funkcias)",
 | 
				
			||||||
    "unknown": "Nekonata",
 | 
					    "unknown": "Nekonata",
 | 
				
			||||||
    "none": "Nenio",
 | 
					    "none": "Nenio",
 | 
				
			||||||
 | 
					    "all": "All",
 | 
				
			||||||
    "never": "Neniam",
 | 
					    "never": "Neniam",
 | 
				
			||||||
    "latestVersionX": "Lasta versio: {}",
 | 
					    "latestVersionX": "Lasta versio: {}",
 | 
				
			||||||
    "installedVersionX": "Instalita versio: {}",
 | 
					    "installedVersionX": "Instalita versio: {}",
 | 
				
			||||||
@@ -327,12 +328,13 @@
 | 
				
			|||||||
    "smartname": "Name (Smart)",
 | 
					    "smartname": "Name (Smart)",
 | 
				
			||||||
    "sortMethod": "Sort Method",
 | 
					    "sortMethod": "Sort Method",
 | 
				
			||||||
    "welcome": "Welcome",
 | 
					    "welcome": "Welcome",
 | 
				
			||||||
    "documentationLinksNote": "The Obtainium GitHub page linked below contains links to videos, articles, discussions and other resources that will help you understand how to use the app.",
 | 
					    "documentationLinksNote": "The Obtainium GitHub page linked below contains links to videos, articles, discussions, and other resources that will help you understand how to use the app.",
 | 
				
			||||||
    "batteryOptimizationNote": "Note that background downloads may work more reliably if you disable OS battery optimizations for Obtainium.",
 | 
					    "batteryOptimizationNote": "Note that background downloads may work more reliably if you disable OS battery optimizations for Obtainium.",
 | 
				
			||||||
    "fileDeletionError": "Failed to delete file (try deleting it manually then try again): \"{}\"",
 | 
					    "fileDeletionError": "Failed to delete file (try deleting it manually then try again): \"{}\"",
 | 
				
			||||||
    "foregroundService": "Obtainium foreground service",
 | 
					    "foregroundService": "Obtainium foreground service",
 | 
				
			||||||
    "foregroundServiceExplanation": "Use a foreground service for update checking (more reliable, consumes more power)",
 | 
					    "foregroundServiceExplanation": "Use a foreground service for update checking (more reliable, consumes more power)",
 | 
				
			||||||
    "fgServiceNotice": "This notification is required for background update checking (it can be hidden in the OS settings)",
 | 
					    "fgServiceNotice": "This notification is required for background update checking (it can be hidden in the OS settings)",
 | 
				
			||||||
 | 
					    "excludeSecrets": "Exclude secrets",
 | 
				
			||||||
    "removeAppQuestion": {
 | 
					    "removeAppQuestion": {
 | 
				
			||||||
        "one": "Forigi la aplikaĵon?",
 | 
					        "one": "Forigi la aplikaĵon?",
 | 
				
			||||||
        "other": "Forigi la aplikaĵojn?"
 | 
					        "other": "Forigi la aplikaĵojn?"
 | 
				
			||||||
@@ -358,16 +360,16 @@
 | 
				
			|||||||
        "other": "{} URLj"
 | 
					        "other": "{} URLj"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "minute": {
 | 
					    "minute": {
 | 
				
			||||||
        "one": "{} Minuto",
 | 
					        "one": "{} minuto",
 | 
				
			||||||
        "other": "{} Minutoj"
 | 
					        "other": "{} minutoj"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "hour": {
 | 
					    "hour": {
 | 
				
			||||||
        "one": "{} Horo",
 | 
					        "one": "{} horo",
 | 
				
			||||||
        "other": "{} Horoj"
 | 
					        "other": "{} horoj"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "day": {
 | 
					    "day": {
 | 
				
			||||||
        "one": "{} Tago",
 | 
					        "one": "{} tago",
 | 
				
			||||||
        "other": "{} Tagoj"
 | 
					        "other": "{} tagoj"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "clearedNLogsBeforeXAfterY": {
 | 
					    "clearedNLogsBeforeXAfterY": {
 | 
				
			||||||
        "one": "Purigis {n} protokolon (antaŭe = {before}, malantaŭe = {after})",
 | 
					        "one": "Purigis {n} protokolon (antaŭe = {before}, malantaŭe = {after})",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -25,7 +25,7 @@
 | 
				
			|||||||
    "standard": "Standard",
 | 
					    "standard": "Standard",
 | 
				
			||||||
    "custom": "Custom",
 | 
					    "custom": "Custom",
 | 
				
			||||||
    "useMaterialYou": "Use Material You",
 | 
					    "useMaterialYou": "Use Material You",
 | 
				
			||||||
    "githubStarredRepos": "GitHub starred repos",
 | 
					    "githubStarredRepos": "GitHub starred repositories",
 | 
				
			||||||
    "uname": "Username",
 | 
					    "uname": "Username",
 | 
				
			||||||
    "wrongArgNum": "Wrong number of arguments provided",
 | 
					    "wrongArgNum": "Wrong number of arguments provided",
 | 
				
			||||||
    "xIsTrackOnly": "{} is track-only",
 | 
					    "xIsTrackOnly": "{} is track-only",
 | 
				
			||||||
@@ -167,6 +167,7 @@
 | 
				
			|||||||
    "versionCorrectionDisabled": "Version correction disabled (plugin doesn't seem to work)",
 | 
					    "versionCorrectionDisabled": "Version correction disabled (plugin doesn't seem to work)",
 | 
				
			||||||
    "unknown": "Unknown",
 | 
					    "unknown": "Unknown",
 | 
				
			||||||
    "none": "None",
 | 
					    "none": "None",
 | 
				
			||||||
 | 
					    "all": "All",
 | 
				
			||||||
    "never": "Never",
 | 
					    "never": "Never",
 | 
				
			||||||
    "latestVersionX": "Latest: {}",
 | 
					    "latestVersionX": "Latest: {}",
 | 
				
			||||||
    "installedVersionX": "Installed: {}",
 | 
					    "installedVersionX": "Installed: {}",
 | 
				
			||||||
@@ -313,7 +314,7 @@
 | 
				
			|||||||
    "badDownload": "The APK could not be parsed (incompatible or partial download)",
 | 
					    "badDownload": "The APK could not be parsed (incompatible or partial download)",
 | 
				
			||||||
    "beforeNewInstallsShareToAppVerifier": "Share new apps with AppVerifier (if available)",
 | 
					    "beforeNewInstallsShareToAppVerifier": "Share new apps with AppVerifier (if available)",
 | 
				
			||||||
    "appVerifierInstructionToast": "Share to AppVerifier, then return here when ready.",
 | 
					    "appVerifierInstructionToast": "Share to AppVerifier, then return here when ready.",
 | 
				
			||||||
    "wiki": "Help/Wiki",
 | 
					    "wiki": "Help/wiki",
 | 
				
			||||||
    "crowdsourcedConfigsLabel": "Crowdsourced app configurations (use at your own risk)",
 | 
					    "crowdsourcedConfigsLabel": "Crowdsourced app configurations (use at your own risk)",
 | 
				
			||||||
    "crowdsourcedConfigsShort": "Crowdsourced app configurations",
 | 
					    "crowdsourcedConfigsShort": "Crowdsourced app configurations",
 | 
				
			||||||
    "allowInsecure": "Allow insecure HTTP requests",
 | 
					    "allowInsecure": "Allow insecure HTTP requests",
 | 
				
			||||||
@@ -327,12 +328,13 @@
 | 
				
			|||||||
    "smartname": "Name (smart)",
 | 
					    "smartname": "Name (smart)",
 | 
				
			||||||
    "sortMethod": "Sort method",
 | 
					    "sortMethod": "Sort method",
 | 
				
			||||||
    "welcome": "Welcome",
 | 
					    "welcome": "Welcome",
 | 
				
			||||||
    "documentationLinksNote": "The Obtainium GitHub page linked below contains links to videos, articles, discussions and other resources that will help you understand how to use the app.",
 | 
					    "documentationLinksNote": "The Obtainium GitHub page linked below contains links to videos, articles, discussions, and other resources that will help you understand how to use the app.",
 | 
				
			||||||
    "batteryOptimizationNote": "Note that background downloads may work more reliably if you switch to the \"foreground service\" in the Obtainium settings and/or disable battery optimization for Obtainium in your OS settings.",
 | 
					    "batteryOptimizationNote": "Note that background downloads may work more reliably if you switch to the \"foreground service\" in the Obtainium settings and/or disable battery optimization for Obtainium in your OS settings.",
 | 
				
			||||||
    "fileDeletionError": "Failed to delete file (try deleting it manually then try again): \"{}\"",
 | 
					    "fileDeletionError": "Failed to delete file (try deleting it manually then try again): \"{}\"",
 | 
				
			||||||
    "foregroundService": "Obtainium foreground service",
 | 
					    "foregroundService": "Obtainium foreground service",
 | 
				
			||||||
    "foregroundServiceExplanation": "Use a foreground service for update checking (more reliable, consumes more power)",
 | 
					    "foregroundServiceExplanation": "Use a foreground service for update checking (more reliable, consumes more power)",
 | 
				
			||||||
    "fgServiceNotice": "This notification is required for background update checking (it can be hidden in the OS settings)",
 | 
					    "fgServiceNotice": "This notification is required for background update checking (it can be hidden in the OS settings)",
 | 
				
			||||||
 | 
					    "excludeSecrets": "Exclude secrets",
 | 
				
			||||||
    "removeAppQuestion": {
 | 
					    "removeAppQuestion": {
 | 
				
			||||||
        "one": "Remove app?",
 | 
					        "one": "Remove app?",
 | 
				
			||||||
        "other": "Remove apps?"
 | 
					        "other": "Remove apps?"
 | 
				
			||||||
@@ -358,16 +360,16 @@
 | 
				
			|||||||
        "other": "{} URLs"
 | 
					        "other": "{} URLs"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "minute": {
 | 
					    "minute": {
 | 
				
			||||||
        "one": "{} Minute",
 | 
					        "one": "{} minute",
 | 
				
			||||||
        "other": "{} Minutes"
 | 
					        "other": "{} minutes"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "hour": {
 | 
					    "hour": {
 | 
				
			||||||
        "one": "{} Hour",
 | 
					        "one": "{} hour",
 | 
				
			||||||
        "other": "{} Hours"
 | 
					        "other": "{} hours"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "day": {
 | 
					    "day": {
 | 
				
			||||||
        "one": "{} Day",
 | 
					        "one": "{} day",
 | 
				
			||||||
        "other": "{} Days"
 | 
					        "other": "{} days"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "clearedNLogsBeforeXAfterY": {
 | 
					    "clearedNLogsBeforeXAfterY": {
 | 
				
			||||||
        "one": "Cleared {n} log (before = {before}, after = {after})",
 | 
					        "one": "Cleared {n} log (before = {before}, after = {after})",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,6 +167,7 @@
 | 
				
			|||||||
    "versionCorrectionDisabled": "Corrección de versiones desactivada (el plugin parece no funcionar)",
 | 
					    "versionCorrectionDisabled": "Corrección de versiones desactivada (el plugin parece no funcionar)",
 | 
				
			||||||
    "unknown": "Desconocido",
 | 
					    "unknown": "Desconocido",
 | 
				
			||||||
    "none": "Ninguno",
 | 
					    "none": "Ninguno",
 | 
				
			||||||
 | 
					    "all": "Todos",
 | 
				
			||||||
    "never": "Nunca",
 | 
					    "never": "Nunca",
 | 
				
			||||||
    "latestVersionX": "Última versión: {}",
 | 
					    "latestVersionX": "Última versión: {}",
 | 
				
			||||||
    "installedVersionX": "Versión instalada: {}",
 | 
					    "installedVersionX": "Versión instalada: {}",
 | 
				
			||||||
@@ -333,6 +334,7 @@
 | 
				
			|||||||
    "foregroundService": "Obtainium servicio en primer plano",
 | 
					    "foregroundService": "Obtainium servicio en primer plano",
 | 
				
			||||||
    "foregroundServiceExplanation": "Utilizar un servicio en primer plano para comprobar las actualizaciones (más fiable, consume más energía).",
 | 
					    "foregroundServiceExplanation": "Utilizar un servicio en primer plano para comprobar las actualizaciones (más fiable, consume más energía).",
 | 
				
			||||||
    "fgServiceNotice": "Esta notificación es necesaria para la comprobación de actualizaciones en segundo plano (puede ocultarse en la configuración del sistema operativo).",
 | 
					    "fgServiceNotice": "Esta notificación es necesaria para la comprobación de actualizaciones en segundo plano (puede ocultarse en la configuración del sistema operativo).",
 | 
				
			||||||
 | 
					    "excludeSecrets": "Excluir secretos",
 | 
				
			||||||
    "removeAppQuestion": {
 | 
					    "removeAppQuestion": {
 | 
				
			||||||
        "one": "¿Eliminar aplicación?",
 | 
					        "one": "¿Eliminar aplicación?",
 | 
				
			||||||
        "other": "¿Eliminar aplicaciones?"
 | 
					        "other": "¿Eliminar aplicaciones?"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,6 +167,7 @@
 | 
				
			|||||||
    "versionCorrectionDisabled": "تصحیح نسخه غیرفعال شد (به نظر می رسد افزونه کار نمی کند)",
 | 
					    "versionCorrectionDisabled": "تصحیح نسخه غیرفعال شد (به نظر می رسد افزونه کار نمی کند)",
 | 
				
			||||||
    "unknown": "ناشناخته",
 | 
					    "unknown": "ناشناخته",
 | 
				
			||||||
    "none": "هیچ",
 | 
					    "none": "هیچ",
 | 
				
			||||||
 | 
					    "all": "All",
 | 
				
			||||||
    "never": "هرگز",
 | 
					    "never": "هرگز",
 | 
				
			||||||
    "latestVersionX": "آخرین نسخه: {}",
 | 
					    "latestVersionX": "آخرین نسخه: {}",
 | 
				
			||||||
    "installedVersionX": "نسخه نصب شده: {}",
 | 
					    "installedVersionX": "نسخه نصب شده: {}",
 | 
				
			||||||
@@ -327,12 +328,13 @@
 | 
				
			|||||||
    "smartname": "Name (Smart)",
 | 
					    "smartname": "Name (Smart)",
 | 
				
			||||||
    "sortMethod": "Sort Method",
 | 
					    "sortMethod": "Sort Method",
 | 
				
			||||||
    "welcome": "Welcome",
 | 
					    "welcome": "Welcome",
 | 
				
			||||||
    "documentationLinksNote": "The Obtainium GitHub page linked below contains links to videos, articles, discussions and other resources that will help you understand how to use the app.",
 | 
					    "documentationLinksNote": "The Obtainium GitHub page linked below contains links to videos, articles, discussions, and other resources that will help you understand how to use the app.",
 | 
				
			||||||
    "batteryOptimizationNote": "Note that background downloads may work more reliably if you disable OS battery optimizations for Obtainium.",
 | 
					    "batteryOptimizationNote": "Note that background downloads may work more reliably if you disable OS battery optimizations for Obtainium.",
 | 
				
			||||||
    "fileDeletionError": "Failed to delete file (try deleting it manually then try again): \"{}\"",
 | 
					    "fileDeletionError": "Failed to delete file (try deleting it manually then try again): \"{}\"",
 | 
				
			||||||
    "foregroundService": "Obtainium foreground service",
 | 
					    "foregroundService": "Obtainium foreground service",
 | 
				
			||||||
    "foregroundServiceExplanation": "Use a foreground service for update checking (more reliable, consumes more power)",
 | 
					    "foregroundServiceExplanation": "Use a foreground service for update checking (more reliable, consumes more power)",
 | 
				
			||||||
    "fgServiceNotice": "This notification is required for background update checking (it can be hidden in the OS settings)",
 | 
					    "fgServiceNotice": "This notification is required for background update checking (it can be hidden in the OS settings)",
 | 
				
			||||||
 | 
					    "excludeSecrets": "Exclude secrets",
 | 
				
			||||||
    "removeAppQuestion": {
 | 
					    "removeAppQuestion": {
 | 
				
			||||||
        "one": "برنامه حذف شود؟",
 | 
					        "one": "برنامه حذف شود؟",
 | 
				
			||||||
        "other": "برنامه ها حذف شوند؟"
 | 
					        "other": "برنامه ها حذف شوند؟"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,6 +167,7 @@
 | 
				
			|||||||
    "versionCorrectionDisabled": "Correction de version désactivée (le plugin ne semble pas fonctionner)",
 | 
					    "versionCorrectionDisabled": "Correction de version désactivée (le plugin ne semble pas fonctionner)",
 | 
				
			||||||
    "unknown": "Inconnu",
 | 
					    "unknown": "Inconnu",
 | 
				
			||||||
    "none": "Aucun",
 | 
					    "none": "Aucun",
 | 
				
			||||||
 | 
					    "all": "Tous",
 | 
				
			||||||
    "never": "Jamais",
 | 
					    "never": "Jamais",
 | 
				
			||||||
    "latestVersionX": "Dernière version : {}",
 | 
					    "latestVersionX": "Dernière version : {}",
 | 
				
			||||||
    "installedVersionX": "Version installée : {}",
 | 
					    "installedVersionX": "Version installée : {}",
 | 
				
			||||||
@@ -333,6 +334,7 @@
 | 
				
			|||||||
    "foregroundService": "Service d'avant-plan Obtainium",
 | 
					    "foregroundService": "Service d'avant-plan Obtainium",
 | 
				
			||||||
    "foregroundServiceExplanation": "Utiliser un service de premier plan pour la vérification des mises à jour (plus fiable, consomme plus d'énergie)",
 | 
					    "foregroundServiceExplanation": "Utiliser un service de premier plan pour la vérification des mises à jour (plus fiable, consomme plus d'énergie)",
 | 
				
			||||||
    "fgServiceNotice": "Cette notification est nécessaire pour la vérification des mises à jour en arrière-plan (elle peut être masquée dans les paramètres du système d'exploitation).",
 | 
					    "fgServiceNotice": "Cette notification est nécessaire pour la vérification des mises à jour en arrière-plan (elle peut être masquée dans les paramètres du système d'exploitation).",
 | 
				
			||||||
 | 
					    "excludeSecrets": "Exclure les secrets",
 | 
				
			||||||
    "removeAppQuestion": {
 | 
					    "removeAppQuestion": {
 | 
				
			||||||
        "one": "Supprimer l'application ?",
 | 
					        "one": "Supprimer l'application ?",
 | 
				
			||||||
        "other": "Supprimer les applications ?"
 | 
					        "other": "Supprimer les applications ?"
 | 
				
			||||||
@@ -358,16 +360,16 @@
 | 
				
			|||||||
        "other": "{} URLs"
 | 
					        "other": "{} URLs"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "minute": {
 | 
					    "minute": {
 | 
				
			||||||
        "one": "{} Minute",
 | 
					        "one": "{} minute",
 | 
				
			||||||
        "other": "{} Minutes"
 | 
					        "other": "{} minutes"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "hour": {
 | 
					    "hour": {
 | 
				
			||||||
        "one": "{} Heure",
 | 
					        "one": "{} heure",
 | 
				
			||||||
        "other": "{} Heures"
 | 
					        "other": "{} heures"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "day": {
 | 
					    "day": {
 | 
				
			||||||
        "one": "{} Jour",
 | 
					        "one": "{} jour",
 | 
				
			||||||
        "other": "{} Jours"
 | 
					        "other": "{} jours"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "clearedNLogsBeforeXAfterY": {
 | 
					    "clearedNLogsBeforeXAfterY": {
 | 
				
			||||||
        "one": "Nettoyage du journal {n} (avant = {before}, après = {after})",
 | 
					        "one": "Nettoyage du journal {n} (avant = {before}, après = {after})",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,19 +20,19 @@
 | 
				
			|||||||
    "cancel": "Mégse",
 | 
					    "cancel": "Mégse",
 | 
				
			||||||
    "continue": "Folytatás",
 | 
					    "continue": "Folytatás",
 | 
				
			||||||
    "requiredInBrackets": "(Szükséges)",
 | 
					    "requiredInBrackets": "(Szükséges)",
 | 
				
			||||||
    "dropdownNoOptsError": "HIBA: A LEGÖRDÜLŐ LISTÁNAK LEGALÁBB EGY OPCIÓVAL KELL RENDELKEZNIE",
 | 
					    "dropdownNoOptsError": "HIBA: A LEGÖRDÜLŐ LISTÁNAK LEGALÁBB EGY KIVÁLASZTHATÓ BEÁLLÍTÁSSAL KELL RENDELKEZNIE",
 | 
				
			||||||
    "colour": "Szín",
 | 
					    "colour": "Szín",
 | 
				
			||||||
    "standard": "Általános",
 | 
					    "standard": "Általános",
 | 
				
			||||||
    "custom": "Egyéni",
 | 
					    "custom": "Egyéni",
 | 
				
			||||||
    "useMaterialYou": "Material You használata",
 | 
					    "useMaterialYou": "Material You használata",
 | 
				
			||||||
    "githubStarredRepos": "Csillagozott GitHub tárolók",
 | 
					    "githubStarredRepos": "Csillagozott GitHub-tárolók",
 | 
				
			||||||
    "uname": "Felhasználónév",
 | 
					    "uname": "Felhasználónév",
 | 
				
			||||||
    "wrongArgNum": "A megadott argumentumok száma nem megfelelő",
 | 
					    "wrongArgNum": "A megadott argumentumok száma nem megfelelő",
 | 
				
			||||||
    "xIsTrackOnly": "A(z) {} csak nyomon követhető",
 | 
					    "xIsTrackOnly": "A(z) {} csak nyomon követhető",
 | 
				
			||||||
    "source": "Forrás",
 | 
					    "source": "Forrás",
 | 
				
			||||||
    "app": "Alkalmazás",
 | 
					    "app": "Alkalmazás",
 | 
				
			||||||
    "appsFromSourceAreTrackOnly": "Az ebből a forrásból származó alkalmazások „csak nyomon követhetők”.",
 | 
					    "appsFromSourceAreTrackOnly": "Az ebből a forrásból származó alkalmazások „csak nyomon követhetők”.",
 | 
				
			||||||
    "youPickedTrackOnly": "„Csak nyomon követés” opciót választotta.",
 | 
					    "youPickedTrackOnly": "„Csak nyomon követés” beállítást választotta.",
 | 
				
			||||||
    "trackOnlyAppDescription": "Az alkalmazás frissítéseit nyomon követi, de az Obtainium nem tudja letölteni vagy telepíteni.",
 | 
					    "trackOnlyAppDescription": "Az alkalmazás frissítéseit nyomon követi, de az Obtainium nem tudja letölteni vagy telepíteni.",
 | 
				
			||||||
    "cancelled": "Visszavonva",
 | 
					    "cancelled": "Visszavonva",
 | 
				
			||||||
    "appAlreadyAdded": "Az alkalmazás már hozzá van adva",
 | 
					    "appAlreadyAdded": "Az alkalmazás már hozzá van adva",
 | 
				
			||||||
@@ -114,7 +114,7 @@
 | 
				
			|||||||
    "light": "Világos",
 | 
					    "light": "Világos",
 | 
				
			||||||
    "followSystem": "Rendszerbeállítás használata",
 | 
					    "followSystem": "Rendszerbeállítás használata",
 | 
				
			||||||
    "followSystemThemeExplanation": "A következő rendszer téma csak harmadik féltől származó alkalmazások használatával lehetséges",
 | 
					    "followSystemThemeExplanation": "A következő rendszer téma csak harmadik féltől származó alkalmazások használatával lehetséges",
 | 
				
			||||||
    "useBlackTheme": "Használjon teljesen fekete sötét témát",
 | 
					    "useBlackTheme": "Teljesen fekete sötét téma használata",
 | 
				
			||||||
    "appSortBy": "Rendezési szempont",
 | 
					    "appSortBy": "Rendezési szempont",
 | 
				
			||||||
    "authorName": "Szerző/Név",
 | 
					    "authorName": "Szerző/Név",
 | 
				
			||||||
    "nameAuthor": "Név/Szerző",
 | 
					    "nameAuthor": "Név/Szerző",
 | 
				
			||||||
@@ -136,12 +136,12 @@
 | 
				
			|||||||
    "share": "Megosztás",
 | 
					    "share": "Megosztás",
 | 
				
			||||||
    "appNotFound": "Az alkalmazás nem található",
 | 
					    "appNotFound": "Az alkalmazás nem található",
 | 
				
			||||||
    "obtainiumExportHyphenatedLowercase": "obtainium-adat",
 | 
					    "obtainiumExportHyphenatedLowercase": "obtainium-adat",
 | 
				
			||||||
    "pickAnAPK": "Válasszon egy APK-t",
 | 
					    "pickAnAPK": "Válasszon ki egy APK-t",
 | 
				
			||||||
    "appHasMoreThanOnePackage": "A(z) {} egynél több csomaggal rendelkezik:",
 | 
					    "appHasMoreThanOnePackage": "A(z) {} egynél több csomaggal rendelkezik:",
 | 
				
			||||||
    "deviceSupportsXArch": "Ez az eszköz támogatja a(z) {} CPU architektúrát.",
 | 
					    "deviceSupportsXArch": "Ez az eszköz támogatja a(z) {} CPU-architektúrát.",
 | 
				
			||||||
    "deviceSupportsFollowingArchs": "Ez az eszköz a következő CPU architektúrákat támogatja:",
 | 
					    "deviceSupportsFollowingArchs": "Ez az eszköz a következő CPU-architektúrákat támogatja:",
 | 
				
			||||||
    "warning": "Figyelem",
 | 
					    "warning": "Figyelem",
 | 
				
			||||||
    "sourceIsXButPackageFromYPrompt": "Az alkalmazás forrása a(z) „{}” tároló, de a kiadási csomag innen származik: „{}”. Folytatja?",
 | 
					    "sourceIsXButPackageFromYPrompt": "Az alkalmazás forrása a(z) „{}-tároló”, de a kiadási csomag innen származik: „{}”. Folytatja?",
 | 
				
			||||||
    "updatesAvailable": "Frissítések érhetők el",
 | 
					    "updatesAvailable": "Frissítések érhetők el",
 | 
				
			||||||
    "updatesAvailableNotifDescription": "Értesíti a felhasználót, hogy egy vagy több, az Obtainium által nyomon követett alkalmazáshoz frissítések állnak rendelkezésre",
 | 
					    "updatesAvailableNotifDescription": "Értesíti a felhasználót, hogy egy vagy több, az Obtainium által nyomon követett alkalmazáshoz frissítések állnak rendelkezésre",
 | 
				
			||||||
    "noNewUpdates": "Nincsenek új frissítések.",
 | 
					    "noNewUpdates": "Nincsenek új frissítések.",
 | 
				
			||||||
@@ -164,9 +164,10 @@
 | 
				
			|||||||
    "pleaseAllowInstallPerm": "Engedélyezze az Obtainiumnak az alkalmazások telepítését",
 | 
					    "pleaseAllowInstallPerm": "Engedélyezze az Obtainiumnak az alkalmazások telepítését",
 | 
				
			||||||
    "trackOnly": "Csak nyomon követés",
 | 
					    "trackOnly": "Csak nyomon követés",
 | 
				
			||||||
    "errorWithHttpStatusCode": "Hiba {}",
 | 
					    "errorWithHttpStatusCode": "Hiba {}",
 | 
				
			||||||
    "versionCorrectionDisabled": "Verzió-korrekció letiltva (úgy tűnik, hogy a bővítmény nem működik)",
 | 
					    "versionCorrectionDisabled": "Verziókorrekció letiltva (úgy tűnik, hogy a bővítmény nem működik)",
 | 
				
			||||||
    "unknown": "Ismeretlen",
 | 
					    "unknown": "Ismeretlen",
 | 
				
			||||||
    "none": "Semmi",
 | 
					    "none": "Semmi",
 | 
				
			||||||
 | 
					    "all": "Összes",
 | 
				
			||||||
    "never": "Soha",
 | 
					    "never": "Soha",
 | 
				
			||||||
    "latestVersionX": "Legújabb verzió: {}",
 | 
					    "latestVersionX": "Legújabb verzió: {}",
 | 
				
			||||||
    "installedVersionX": "Telepített verzió: {}",
 | 
					    "installedVersionX": "Telepített verzió: {}",
 | 
				
			||||||
@@ -174,25 +175,25 @@
 | 
				
			|||||||
    "remove": "Eltávolítás",
 | 
					    "remove": "Eltávolítás",
 | 
				
			||||||
    "yesMarkUpdated": "Igen, megjelölés frissítettként",
 | 
					    "yesMarkUpdated": "Igen, megjelölés frissítettként",
 | 
				
			||||||
    "fdroid": "F-Droid hivatalos",
 | 
					    "fdroid": "F-Droid hivatalos",
 | 
				
			||||||
    "appIdOrName": "Az alkalmazás-azonosító vagy név",
 | 
					    "appIdOrName": "Alkalmazás-azonosító vagy név",
 | 
				
			||||||
    "appId": "Alkalmazás-azonosító",
 | 
					    "appId": "Alkalmazás-azonosító",
 | 
				
			||||||
    "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": "Egyes tárolók több alkalmazást is tartalmazhatnak",
 | 
				
			||||||
    "fdroidThirdPartyRepo": "F-Droid harmadik féltől származó tároló",
 | 
					    "fdroidThirdPartyRepo": "F-Droid-tároló (harmadik fél)",
 | 
				
			||||||
    "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",
 | 
				
			||||||
    "markUpdated": "Frissítettnek jelölés",
 | 
					    "markUpdated": "Frissítettnek jelölés",
 | 
				
			||||||
    "additionalOptions": "További beállítások",
 | 
					    "additionalOptions": "További beállítások",
 | 
				
			||||||
    "disableVersionDetection": "Verzió-érzékelés letiltása",
 | 
					    "disableVersionDetection": "Verzióérzékelés letiltása",
 | 
				
			||||||
    "noVersionDetectionExplanation": "Ezt a beállítást csak olyan alkalmazásoknál szabad használni, ahol a verzió-érzékelés nem működik megfelelően.",
 | 
					    "noVersionDetectionExplanation": "Ezt a beállítást csak olyan alkalmazásoknál szabad használni, ahol a verzióérzékelés nem működik megfelelően.",
 | 
				
			||||||
    "downloadingX": "{} letöltése",
 | 
					    "downloadingX": "{} letöltése",
 | 
				
			||||||
    "downloadX": "{} letöltése",
 | 
					    "downloadX": "{} letöltése",
 | 
				
			||||||
    "downloadedX": "{} letöltve",
 | 
					    "downloadedX": "{} letöltve",
 | 
				
			||||||
    "releaseAsset": "Kiadási csomag",
 | 
					    "releaseAsset": "Kiadási csomag",
 | 
				
			||||||
    "downloadNotifDescription": "Értesíti a felhasználót az alkalmazás letöltésének előrehaladásáról",
 | 
					    "downloadNotifDescription": "Értesíti a felhasználót az alkalmazás letöltésének előrehaladásáról",
 | 
				
			||||||
    "noAPKFound": "Nem található APK",
 | 
					    "noAPKFound": "Nem található APK",
 | 
				
			||||||
    "noVersionDetection": "Nincs verzió-érzékelés",
 | 
					    "noVersionDetection": "Nincs verzióérzékelés",
 | 
				
			||||||
    "categorize": "Kategorizálás",
 | 
					    "categorize": "Kategorizálás",
 | 
				
			||||||
    "categories": "Kategóriák",
 | 
					    "categories": "Kategóriák",
 | 
				
			||||||
    "category": "Kategória",
 | 
					    "category": "Kategória",
 | 
				
			||||||
@@ -206,34 +207,34 @@
 | 
				
			|||||||
    "copiedToClipboard": "Másolva a vágólapra",
 | 
					    "copiedToClipboard": "Másolva a vágólapra",
 | 
				
			||||||
    "storagePermissionDenied": "Tárhely engedély megtagadva",
 | 
					    "storagePermissionDenied": "Tárhely engedély megtagadva",
 | 
				
			||||||
    "selectedCategorizeWarning": "Ez felváltja a kiválasztott alkalmazások meglévő kategória-beállításait.",
 | 
					    "selectedCategorizeWarning": "Ez felváltja a kiválasztott alkalmazások meglévő kategória-beállításait.",
 | 
				
			||||||
    "filterAPKsByRegEx": "Az APK-k szűrése reguláris kifejezéssel",
 | 
					    "filterAPKsByRegEx": "APK-k szűrése reguláris kifejezéssel",
 | 
				
			||||||
    "removeFromObtainium": "Eltávolítás az Obtainiumból",
 | 
					    "removeFromObtainium": "Eltávolítás az Obtainiumból",
 | 
				
			||||||
    "uninstallFromDevice": "Eltávolítás az eszközről",
 | 
					    "uninstallFromDevice": "Eltávolítás az eszközről",
 | 
				
			||||||
    "onlyWorksWithNonVersionDetectApps": "Csak azoknál az alkalmazásoknál működik, amelyeknél a verzió-érzékelés le van tiltva.",
 | 
					    "onlyWorksWithNonVersionDetectApps": "Csak azoknál az alkalmazásoknál működik, amelyeknél a verzióérzékelés le van tiltva.",
 | 
				
			||||||
    "releaseDateAsVersion": "Használja a kiadás dátumát verzió-karakterláncként",
 | 
					    "releaseDateAsVersion": "Kiadás dátumának használata verzió-karakterláncként",
 | 
				
			||||||
    "releaseTitleAsVersion": "Használja a kiadás címét verzió-karakterláncként",
 | 
					    "releaseTitleAsVersion": "Kiadás címének használata verzió-karakterláncként",
 | 
				
			||||||
    "releaseDateAsVersionExplanation": "Ezt a beállítást csak olyan alkalmazásoknál szabad használni, ahol a verzió-érzékelés nem működik megfelelően, de elérhető a kiadás dátuma.",
 | 
					    "releaseDateAsVersionExplanation": "Ezt a beállítást csak olyan alkalmazásoknál szabad használni, ahol a verzióérzékelés nem működik megfelelően, de elérhető a kiadás dátuma.",
 | 
				
			||||||
    "changes": "Változáslista",
 | 
					    "changes": "Változáslista",
 | 
				
			||||||
    "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 (például: 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",
 | 
				
			||||||
    "versionDetection": "Verzió-érzékelés",
 | 
					    "versionDetection": "Verzióérzékelés",
 | 
				
			||||||
    "standardVersionDetection": "Alapértelmezett verzió-érzékelés",
 | 
					    "standardVersionDetection": "Alapértelmezett verzióérzékelés",
 | 
				
			||||||
    "groupByCategory": "Csoportosítás kategória alapján",
 | 
					    "groupByCategory": "Csoportosítás kategória alapján",
 | 
				
			||||||
    "autoApkFilterByArch": "Ha lehetséges, próbálja meg az APK-kat CPU-architektúra szerint szűrni",
 | 
					    "autoApkFilterByArch": "APK-k CPU-architektúra szerinti szűrése, ha lehetséges",
 | 
				
			||||||
    "autoLinkFilterByArch": "Ha lehetséges, próbálja meg a hivatkozásokat CPU-architektúra szerint szűrni",
 | 
					    "autoLinkFilterByArch": "Hivatkozások CPU-architektúra szerinti szűrése, ha lehetséges",
 | 
				
			||||||
    "overrideSource": "Forrás felülírása",
 | 
					    "overrideSource": "Forrás felülírása",
 | 
				
			||||||
    "dontShowAgain": "Ne jelenítse meg ezt többé",
 | 
					    "dontShowAgain": "Ne jelenítse meg ezt többé",
 | 
				
			||||||
    "dontShowTrackOnlyWarnings": "Ne jelenítse meg a „Csak nyomon követés” figyelmeztetést",
 | 
					    "dontShowTrackOnlyWarnings": "„Csak nyomon követés” figyelmeztetés elrejtése",
 | 
				
			||||||
    "dontShowAPKOriginWarnings": "Ne jelenítse meg az APK eredetére vonatkozó figyelmeztetéseket",
 | 
					    "dontShowAPKOriginWarnings": "APK eredetére vonatkozó figyelmeztetések elrejtése",
 | 
				
			||||||
    "moveNonInstalledAppsToBottom": "Helyezze át a nem telepített alkalmazásokat az alkalmazásnézet aljára",
 | 
					    "moveNonInstalledAppsToBottom": "Nem telepített alkalmazások áthelyezése az alkalmazásnézet aljára",
 | 
				
			||||||
    "gitlabPATLabel": "GitLab személyes hozzáférési token",
 | 
					    "gitlabPATLabel": "GitLab személyes hozzáférési token",
 | 
				
			||||||
    "about": "Névjegy",
 | 
					    "about": "Névjegy",
 | 
				
			||||||
    "requiresCredentialsInSettings": "A(z) {} alkalmazásnak további hitelesítő adatokra van szüksége (a beállításokban)",
 | 
					    "requiresCredentialsInSettings": "A(z) {} alkalmazásnak további hitelesítő adatokra van szüksége (a beállításokban)",
 | 
				
			||||||
    "checkOnStart": "Frissítések ellenőrzése az alkalmazás megnyitásakor",
 | 
					    "checkOnStart": "Frissítések ellenőrzése az alkalmazás megnyitásakor",
 | 
				
			||||||
    "tryInferAppIdFromCode": "Próbálja meg kikövetkeztetni az alkalmazás azonosítóját a forráskódból",
 | 
					    "tryInferAppIdFromCode": "Alkalmazás azonosítójának kikövetkeztetése a forráskódból, ha lehetséges",
 | 
				
			||||||
    "removeOnExternalUninstall": "A külsőleg eltávolított alkalmazások automatikus eltávolítása",
 | 
					    "removeOnExternalUninstall": "Külsőleg eltávolított alkalmazások automatikus eltávolítása",
 | 
				
			||||||
    "pickHighestVersionCode": "A legmagasabb verziószámú APK automatikus kiválasztása",
 | 
					    "pickHighestVersionCode": "Legmagasabb verziókódú APK automatikus kiválasztása",
 | 
				
			||||||
    "checkUpdateOnDetailPage": "Frissítések ellenőrzése az alkalmazás részleteit tartalmazó oldal megnyitásakor",
 | 
					    "checkUpdateOnDetailPage": "Frissítések ellenőrzése az alkalmazás részleteit tartalmazó oldal megnyitásakor",
 | 
				
			||||||
    "disablePageTransitions": "Lap áttűnési animációk letiltása",
 | 
					    "disablePageTransitions": "Lap áttűnési animációk letiltása",
 | 
				
			||||||
    "reversePageTransitions": "Fordított lap áttűnési animációk",
 | 
					    "reversePageTransitions": "Fordított lap áttűnési animációk",
 | 
				
			||||||
@@ -258,18 +259,18 @@
 | 
				
			|||||||
    "exemptFromBackgroundUpdates": "Mentes a háttérben történő frissítések alól (ha engedélyezett)",
 | 
					    "exemptFromBackgroundUpdates": "Mentes a háttérben történő frissítések alól (ha engedélyezett)",
 | 
				
			||||||
    "bgUpdatesOnWiFiOnly": "Háttérfrissítések letiltása, amikor az eszköz nem csatlakozik a Wi-Fi-hez",
 | 
					    "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",
 | 
					    "bgUpdatesWhileChargingOnly": "Háttérfrissítések letiltása, amikor az eszköz nincs a töltőn",
 | 
				
			||||||
    "autoSelectHighestVersionCode": "A legmagasabb verziókódú APK automatikus kiválasztása",
 | 
					    "autoSelectHighestVersionCode": "Legmagasabb verziókódú APK automatikus kiválasztása",
 | 
				
			||||||
    "versionExtractionRegEx": "Verzió-karakterlánc kivonatolása reguláris kifejezéssel",
 | 
					    "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",
 | 
				
			||||||
    "matchGroupToUseForX": "A(z) „{}” esetén használandó csoport egyeztetése",
 | 
					    "matchGroupToUseForX": "A(z) „{}” esetén használandó csoport egyeztetése",
 | 
				
			||||||
    "matchGroupToUse": "A verzió-karakterlánc kivonatolásához használandó csoport reguláris kifejezéssel való egyeztetése",
 | 
					    "matchGroupToUse": "Verzió-karakterlánc kivonatolásához használandó csoport reguláris kifejezéssel való egyeztetése",
 | 
				
			||||||
    "highlightTouchTargets": "A kevésbé nyilvánvaló érintési pontok kiemelése",
 | 
					    "highlightTouchTargets": "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áltoztatá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 kiválasztani 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": "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",
 | 
				
			||||||
    "skipSort": "Rendezés kihagyása",
 | 
					    "skipSort": "Rendezés kihagyása",
 | 
				
			||||||
@@ -278,7 +279,7 @@
 | 
				
			|||||||
    "runBgCheckNow": "Frissítések ellenőrzése a háttérben most",
 | 
					    "runBgCheckNow": "Frissítések ellenőrzése a háttérben most",
 | 
				
			||||||
    "versionExtractWholePage": "„Verzió-karakterlánc kivonatolása reguláris kifejezéssel” alkalmazása az egész oldalra",
 | 
					    "versionExtractWholePage": "„Verzió-karakterlánc kivonatolása reguláris kifejezéssel” alkalmazása az egész oldalra",
 | 
				
			||||||
    "installing": "Telepítés",
 | 
					    "installing": "Telepítés",
 | 
				
			||||||
    "skipUpdateNotifications": "A frissítési értesítések kihagyása",
 | 
					    "skipUpdateNotifications": "Frissítési értesítések kihagyása",
 | 
				
			||||||
    "updatesAvailableNotifChannel": "Frissítések érhetők el",
 | 
					    "updatesAvailableNotifChannel": "Frissítések érhetők el",
 | 
				
			||||||
    "appsUpdatedNotifChannel": "Alkalmazások frissítve",
 | 
					    "appsUpdatedNotifChannel": "Alkalmazások frissítve",
 | 
				
			||||||
    "appsPossiblyUpdatedNotifChannel": "Megkísérelt alkalmazás-frissítések",
 | 
					    "appsPossiblyUpdatedNotifChannel": "Megkísérelt alkalmazás-frissítések",
 | 
				
			||||||
@@ -288,22 +289,22 @@
 | 
				
			|||||||
    "completeAppInstallationNotifChannel": "Teljes alkalmazás telepítés",
 | 
					    "completeAppInstallationNotifChannel": "Teljes alkalmazás telepítés",
 | 
				
			||||||
    "checkingForUpdatesNotifChannel": "Frissítések ellenőrzése",
 | 
					    "checkingForUpdatesNotifChannel": "Frissítések ellenőrzése",
 | 
				
			||||||
    "onlyCheckInstalledOrTrackOnlyApps": "Csak a telepített és a csak nyomon követhető alkalmazások frissítéseinek ellenőrzése",
 | 
					    "onlyCheckInstalledOrTrackOnlyApps": "Csak a telepített és a csak nyomon követhető alkalmazások frissítéseinek ellenőrzése",
 | 
				
			||||||
    "supportFixedAPKURL": "Támogatja a rögzített APK webcímeket",
 | 
					    "supportFixedAPKURL": "Támogatja a rögzített APK-webcímeket",
 | 
				
			||||||
    "selectX": "{} kiválasztása",
 | 
					    "selectX": "{} kiválasztása",
 | 
				
			||||||
    "parallelDownloads": "Párhuzamos letöltések engedélyezése",
 | 
					    "parallelDownloads": "Párhuzamos letöltések engedélyezése",
 | 
				
			||||||
    "useShizuku": "Shizuku vagy Sui használata a telepítéshez",
 | 
					    "useShizuku": "Shizuku vagy Sui használata a telepítéshez",
 | 
				
			||||||
    "shizukuBinderNotFound": "A Shizuku szolgáltatás nem fut",
 | 
					    "shizukuBinderNotFound": "A Shizuku szolgáltatás nem fut",
 | 
				
			||||||
    "shizukuOld": "Régi Shizuku verzió (<11) - frissítse",
 | 
					    "shizukuOld": "Régi Shizuku verzió (<11) - frissítse",
 | 
				
			||||||
    "shizukuOldAndroidWithADB": "A Shizuku csak Android < 8.1 ADB-vel fut - frissítse az Androidot vagy használja a Sui-t helyette",
 | 
					    "shizukuOldAndroidWithADB": "A Shizuku csak Android < 8.1 ADB-vel fut - frissítse az Androidot vagy használja a Suit helyette",
 | 
				
			||||||
    "shizukuPretendToBeGooglePlay": "A Google Play beállítása telepítési forrásként (ha Shizukut használ)",
 | 
					    "shizukuPretendToBeGooglePlay": "Google Play beállítása telepítési forrásként (ha Shizukut használ)",
 | 
				
			||||||
    "useSystemFont": "A rendszer betűtípusának használata",
 | 
					    "useSystemFont": "Rendszer betűtípusának használata",
 | 
				
			||||||
    "useVersionCodeAsOSVersion": "Az alkalmazás verziókódjának használata a rendszer által érzékelt verzióként",
 | 
					    "useVersionCodeAsOSVersion": "Alkalmazás verziókódjának használata a rendszer által érzékelt verzióként",
 | 
				
			||||||
    "requestHeader": "Kérelemfejléc",
 | 
					    "requestHeader": "Kérelemfejléc",
 | 
				
			||||||
    "useLatestAssetDateAsReleaseDate": "A kiadás dátumaként használja a legutóbbi csomagfeltöltést",
 | 
					    "useLatestAssetDateAsReleaseDate": "Legutóbbi csomagfeltöltés használata a kiadás dátumaként",
 | 
				
			||||||
    "defaultPseudoVersioningMethod": "Alapértelmezett pszeudoverziós módszer",
 | 
					    "defaultPseudoVersioningMethod": "Alapértelmezett pszeudoverziós módszer",
 | 
				
			||||||
    "partialAPKHash": "Részleges APK hasító értéke",
 | 
					    "partialAPKHash": "Részleges APK-hasítóérték",
 | 
				
			||||||
    "APKLinkHash": "APK hivatkozás hasító értéke",
 | 
					    "APKLinkHash": "APK-hivatkozás-hasítóérték",
 | 
				
			||||||
    "directAPKLink": "Közvetlen APK hivatkozás",
 | 
					    "directAPKLink": "Közvetlen APK-hivatkozás",
 | 
				
			||||||
    "pseudoVersionInUse": "Egy pszeudoverzió van használatban",
 | 
					    "pseudoVersionInUse": "Egy pszeudoverzió van használatban",
 | 
				
			||||||
    "installed": "Telepített",
 | 
					    "installed": "Telepített",
 | 
				
			||||||
    "latest": "Legújabb",
 | 
					    "latest": "Legújabb",
 | 
				
			||||||
@@ -318,11 +319,11 @@
 | 
				
			|||||||
    "crowdsourcedConfigsShort": "Alkalmazáslista",
 | 
					    "crowdsourcedConfigsShort": "Alkalmazáslista",
 | 
				
			||||||
    "allowInsecure": "Nem biztonságos HTTP-kérések engedélyezése",
 | 
					    "allowInsecure": "Nem biztonságos HTTP-kérések engedélyezése",
 | 
				
			||||||
    "stayOneVersionBehind": "Maradjon egy verzióval a legújabb mögött",
 | 
					    "stayOneVersionBehind": "Maradjon egy verzióval a legújabb mögött",
 | 
				
			||||||
    "useFirstApkOfVersion": "A legelső APK automatikus kiválasztása, ha több APK is található",
 | 
					    "useFirstApkOfVersion": "Legelső APK automatikus kiválasztása, ha több APK is található",
 | 
				
			||||||
    "refreshBeforeDownload": "Az alkalmazás adatainak frissítése a letöltés előtt",
 | 
					    "refreshBeforeDownload": "Alkalmazás adatainak frissítése a letöltés előtt",
 | 
				
			||||||
    "tencentAppStore": "Tencent Appstore",
 | 
					    "tencentAppStore": "Tencent Appstore",
 | 
				
			||||||
    "coolApk": "CoolApk",
 | 
					    "coolApk": "CoolApk",
 | 
				
			||||||
    "vivoAppStore": "vivo App Store (CN)",
 | 
					    "vivoAppStore": "Vivo App Store (CN)",
 | 
				
			||||||
    "name": "Név",
 | 
					    "name": "Név",
 | 
				
			||||||
    "smartname": "Név (Okos)",
 | 
					    "smartname": "Név (Okos)",
 | 
				
			||||||
    "sortMethod": "Rendezési eljárás",
 | 
					    "sortMethod": "Rendezési eljárás",
 | 
				
			||||||
@@ -330,9 +331,10 @@
 | 
				
			|||||||
    "documentationLinksNote": "Az alábbi hivatkozás az Obtainium GitHub oldalára vezet, amely további videók, cikkek, beszélgetések és egyéb források hivatkozásait tartalmazza, amelyek segítenek megérteni az alkalmazás használatát.",
 | 
					    "documentationLinksNote": "Az alábbi hivatkozás az Obtainium GitHub oldalára vezet, amely további videók, cikkek, beszélgetések és egyéb források hivatkozásait tartalmazza, amelyek segítenek megérteni az alkalmazás használatát.",
 | 
				
			||||||
    "batteryOptimizationNote": "Megjegyzés: A háttérfrissítések megbízhatóbban működhetnek, ha kikapcsolja a rendszer akkumulátor-optimalizálását az Obtainium számára.",
 | 
					    "batteryOptimizationNote": "Megjegyzés: A háttérfrissítések megbízhatóbban működhetnek, ha kikapcsolja a rendszer akkumulátor-optimalizálását az Obtainium számára.",
 | 
				
			||||||
    "fileDeletionError": "Nem sikerült törölni a fájlt (próbálja meg kézzel törölni, majd próbálja meg újra): \"{}\"",
 | 
					    "fileDeletionError": "Nem sikerült törölni a fájlt (próbálja meg kézzel törölni, majd próbálja meg újra): \"{}\"",
 | 
				
			||||||
    "foregroundService": "Obtainium új szolgáltatás",
 | 
					    "foregroundService": "Obtainium előtér-szolgáltatás",
 | 
				
			||||||
    "foregroundServiceExplanation": "Frissítésellenőrzéshez előtérben lévő szolgáltatás használata (megbízhatóbb, de több energiát fogyaszt)",
 | 
					    "foregroundServiceExplanation": "Előtér-szolgáltatás használata a frissítések ellenőrzéséhez (megbízhatóbb, de több energiát fogyaszt)",
 | 
				
			||||||
    "fgServiceNotice": "Ez az értesítés a háttérben történő frissítésellenőrzéshez szükséges (az operációs rendszer beállításaiban elrejthető).",
 | 
					    "fgServiceNotice": "Ez az értesítés a háttérben történő frissítésellenőrzéshez szükséges (a rendszer beállításaiban elrejthető).",
 | 
				
			||||||
 | 
					    "excludeSecrets": "Érzékeny adatok (például: személyes hozzáférési tokenek) kihagyása",
 | 
				
			||||||
    "removeAppQuestion": {
 | 
					    "removeAppQuestion": {
 | 
				
			||||||
        "one": "Eltávolítja az alkalmazást?",
 | 
					        "one": "Eltávolítja az alkalmazást?",
 | 
				
			||||||
        "other": "Eltávolítja az alkalmazásokat?"
 | 
					        "other": "Eltávolítja az alkalmazásokat?"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,6 +167,7 @@
 | 
				
			|||||||
    "versionCorrectionDisabled": "Koreksi versi dinonaktifkan (sepertinya plugin tidak berfungsi)",
 | 
					    "versionCorrectionDisabled": "Koreksi versi dinonaktifkan (sepertinya plugin tidak berfungsi)",
 | 
				
			||||||
    "unknown": "Tidak diketahui",
 | 
					    "unknown": "Tidak diketahui",
 | 
				
			||||||
    "none": "Tidak ada",
 | 
					    "none": "Tidak ada",
 | 
				
			||||||
 | 
					    "all": "Semua",
 | 
				
			||||||
    "never": "Tidak pernah",
 | 
					    "never": "Tidak pernah",
 | 
				
			||||||
    "latestVersionX": "Terbaru: {}",
 | 
					    "latestVersionX": "Terbaru: {}",
 | 
				
			||||||
    "installedVersionX": "Terpasang: {}",
 | 
					    "installedVersionX": "Terpasang: {}",
 | 
				
			||||||
@@ -333,6 +334,7 @@
 | 
				
			|||||||
    "foregroundService": "Layanan latar depan Obtainium",
 | 
					    "foregroundService": "Layanan latar depan Obtainium",
 | 
				
			||||||
    "foregroundServiceExplanation": "Gunakan layanan latar depan untuk pemeriksaan pembaruan (lebih dapat diandalkan, menghabiskan lebih banyak daya)",
 | 
					    "foregroundServiceExplanation": "Gunakan layanan latar depan untuk pemeriksaan pembaruan (lebih dapat diandalkan, menghabiskan lebih banyak daya)",
 | 
				
			||||||
    "fgServiceNotice": "Pemberitahuan ini diperlukan untuk pemeriksaan pembaruan latar belakang (dapat disembunyikan dalam pengaturan OS)",
 | 
					    "fgServiceNotice": "Pemberitahuan ini diperlukan untuk pemeriksaan pembaruan latar belakang (dapat disembunyikan dalam pengaturan OS)",
 | 
				
			||||||
 | 
					    "excludeSecrets": "Mengecualikan rahasia",
 | 
				
			||||||
    "removeAppQuestion": {
 | 
					    "removeAppQuestion": {
 | 
				
			||||||
        "one": "Hapus aplikasi?",
 | 
					        "one": "Hapus aplikasi?",
 | 
				
			||||||
        "other": "Hapus aplikasi?"
 | 
					        "other": "Hapus aplikasi?"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,6 +167,7 @@
 | 
				
			|||||||
    "versionCorrectionDisabled": "Correzione della versione disattivata (il plugin sembra non funzionare)",
 | 
					    "versionCorrectionDisabled": "Correzione della versione disattivata (il plugin sembra non funzionare)",
 | 
				
			||||||
    "unknown": "Sconosciuto",
 | 
					    "unknown": "Sconosciuto",
 | 
				
			||||||
    "none": "Nessuno",
 | 
					    "none": "Nessuno",
 | 
				
			||||||
 | 
					    "all": "Tutti",
 | 
				
			||||||
    "never": "Mai",
 | 
					    "never": "Mai",
 | 
				
			||||||
    "latestVersionX": "Ultima versione: {}",
 | 
					    "latestVersionX": "Ultima versione: {}",
 | 
				
			||||||
    "installedVersionX": "Versione installata: {}",
 | 
					    "installedVersionX": "Versione installata: {}",
 | 
				
			||||||
@@ -333,6 +334,7 @@
 | 
				
			|||||||
    "foregroundService": "Servizio Obtainium in primo piano",
 | 
					    "foregroundService": "Servizio Obtainium in primo piano",
 | 
				
			||||||
    "foregroundServiceExplanation": "Utilizzare un servizio in primo piano per il controllo degli aggiornamenti (più affidabile, consuma più energia)",
 | 
					    "foregroundServiceExplanation": "Utilizzare un servizio in primo piano per il controllo degli aggiornamenti (più affidabile, consuma più energia)",
 | 
				
			||||||
    "fgServiceNotice": "Questa notifica è necessaria per il controllo degli aggiornamenti in background (può essere nascosta nelle impostazioni del sistema operativo).",
 | 
					    "fgServiceNotice": "Questa notifica è necessaria per il controllo degli aggiornamenti in background (può essere nascosta nelle impostazioni del sistema operativo).",
 | 
				
			||||||
 | 
					    "excludeSecrets": "Escludere i segreti",
 | 
				
			||||||
    "removeAppQuestion": {
 | 
					    "removeAppQuestion": {
 | 
				
			||||||
        "one": "Rimuovere l'app?",
 | 
					        "one": "Rimuovere l'app?",
 | 
				
			||||||
        "other": "Rimuovere le app?"
 | 
					        "other": "Rimuovere le app?"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,6 +167,7 @@
 | 
				
			|||||||
    "versionCorrectionDisabled": "バージョン補正無効 (プラグインが動作していません)",
 | 
					    "versionCorrectionDisabled": "バージョン補正無効 (プラグインが動作していません)",
 | 
				
			||||||
    "unknown": "不明",
 | 
					    "unknown": "不明",
 | 
				
			||||||
    "none": "なし",
 | 
					    "none": "なし",
 | 
				
			||||||
 | 
					    "all": "すべて",
 | 
				
			||||||
    "never": "しない",
 | 
					    "never": "しない",
 | 
				
			||||||
    "latestVersionX": "最新のバージョン: {}",
 | 
					    "latestVersionX": "最新のバージョン: {}",
 | 
				
			||||||
    "installedVersionX": "インストールされたバージョン: {}",
 | 
					    "installedVersionX": "インストールされたバージョン: {}",
 | 
				
			||||||
@@ -221,7 +222,7 @@
 | 
				
			|||||||
    "standardVersionDetection": "標準のバージョン検出",
 | 
					    "standardVersionDetection": "標準のバージョン検出",
 | 
				
			||||||
    "groupByCategory": "カテゴリ別にグループ化する",
 | 
					    "groupByCategory": "カテゴリ別にグループ化する",
 | 
				
			||||||
    "autoApkFilterByArch": "可能であれば、CPUアーキテクチャによるAPKのフィルタリングを試みる",
 | 
					    "autoApkFilterByArch": "可能であれば、CPUアーキテクチャによるAPKのフィルタリングを試みる",
 | 
				
			||||||
    "autoLinkFilterByArch": "可能であれば、CPUアーキテクチャによるリンクのフィルタリングを試みる。",
 | 
					    "autoLinkFilterByArch": "可能であれば、CPUアーキテクチャによるリンクのフィルタリングを試みる",
 | 
				
			||||||
    "overrideSource": "ソースの上書き",
 | 
					    "overrideSource": "ソースの上書き",
 | 
				
			||||||
    "dontShowAgain": "二度と表示しない",
 | 
					    "dontShowAgain": "二度と表示しない",
 | 
				
			||||||
    "dontShowTrackOnlyWarnings": "「追跡のみ」の警告を表示しない",
 | 
					    "dontShowTrackOnlyWarnings": "「追跡のみ」の警告を表示しない",
 | 
				
			||||||
@@ -321,18 +322,19 @@
 | 
				
			|||||||
    "useFirstApkOfVersion": "複数のAPKから最初のAPKを自動選択する",
 | 
					    "useFirstApkOfVersion": "複数のAPKから最初のAPKを自動選択する",
 | 
				
			||||||
    "refreshBeforeDownload": "ダウンロード前にアプリの詳細を更新する",
 | 
					    "refreshBeforeDownload": "ダウンロード前にアプリの詳細を更新する",
 | 
				
			||||||
    "tencentAppStore": "Tencent App Store",
 | 
					    "tencentAppStore": "Tencent App Store",
 | 
				
			||||||
    "coolApk": "クールApk",
 | 
					    "coolApk": "Cool Apk",
 | 
				
			||||||
    "vivoAppStore": "vivo App Store (CN)",
 | 
					    "vivoAppStore": "vivo App Store (CN)",
 | 
				
			||||||
    "name": "名称",
 | 
					    "name": "アプリ名",
 | 
				
			||||||
    "smartname": "名前(スマート)",
 | 
					    "smartname": "アプリ名(スマート)",
 | 
				
			||||||
    "sortMethod": "ソート方法",
 | 
					    "sortMethod": "ソート方法",
 | 
				
			||||||
    "welcome": "ようこそ",
 | 
					    "welcome": "ようこそ",
 | 
				
			||||||
    "documentationLinksNote": "以下のリンクにあるObtainium GitHubページには、ビデオ、記事、ディスカッション、その他のリソースへのリンクがあり、アプリの使い方を理解するのに役立ちます。",
 | 
					    "documentationLinksNote": "以下のリンクにあるObtainium GitHubページには、ビデオ、記事、ディスカッション、その他のリソースへのリンクがあり、アプリの使い方を理解するのに役立ちます。",
 | 
				
			||||||
    "batteryOptimizationNote": "ObtainiumのOSバッテリー最適化を無効にすると、バックグラウンドダウンロードがより確実に動作するようになります。",
 | 
					    "batteryOptimizationNote": "ObtainiumのOSバッテリー最適化を無効にすると、バックグラウンドダウンロードがより確実に動作するようになります。",
 | 
				
			||||||
    "fileDeletionError": "ファイルの削除に失敗しました(手動で削除してから再試行してください):\"{}\"",
 | 
					    "fileDeletionError": "ファイルの削除に失敗しました(手動で削除してから再試行してください):\"{}\"",
 | 
				
			||||||
    "foregroundService": "フォアグラウンド・サービス",
 | 
					    "foregroundService": "Obtainium フォアグラウンドサービス",
 | 
				
			||||||
    "foregroundServiceExplanation": "更新チェックにフォアグラウンド・サービスを使用する(より信頼性が高いが、より電力を消費する)",
 | 
					    "foregroundServiceExplanation": "アップデート確認にフォアグラウンドサービスを使用する(より信頼性が高いが、より電力を消費する)",
 | 
				
			||||||
    "fgServiceNotice": "この通知は、バックグラウンドでアップデートをチェックするために必要です(OSの設定で非表示にできます)。",
 | 
					    "fgServiceNotice": "この通知は、バックグラウンドでアップデートを確認するために必要です(OSの設定で非表示にできます)。",
 | 
				
			||||||
 | 
					    "excludeSecrets": "秘密を除く",
 | 
				
			||||||
    "removeAppQuestion": {
 | 
					    "removeAppQuestion": {
 | 
				
			||||||
        "one": "アプリを削除しますか?",
 | 
					        "one": "アプリを削除しますか?",
 | 
				
			||||||
        "other": "アプリを削除しますか?"
 | 
					        "other": "アプリを削除しますか?"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,6 +167,7 @@
 | 
				
			|||||||
    "versionCorrectionDisabled": "버전 수정 비활성화됨 (플러그인이 작동하지 않는 것 같습니다)",
 | 
					    "versionCorrectionDisabled": "버전 수정 비활성화됨 (플러그인이 작동하지 않는 것 같습니다)",
 | 
				
			||||||
    "unknown": "알 수 없음",
 | 
					    "unknown": "알 수 없음",
 | 
				
			||||||
    "none": "없음",
 | 
					    "none": "없음",
 | 
				
			||||||
 | 
					    "all": "모두",
 | 
				
			||||||
    "never": "절대",
 | 
					    "never": "절대",
 | 
				
			||||||
    "latestVersionX": "최신: {}",
 | 
					    "latestVersionX": "최신: {}",
 | 
				
			||||||
    "installedVersionX": "설치됨: {}",
 | 
					    "installedVersionX": "설치됨: {}",
 | 
				
			||||||
@@ -333,6 +334,7 @@
 | 
				
			|||||||
    "foregroundService": "오베티움 포그라운드 서비스",
 | 
					    "foregroundService": "오베티움 포그라운드 서비스",
 | 
				
			||||||
    "foregroundServiceExplanation": "업데이트 확인을 위해 포그라운드 서비스 사용(안정성 향상, 전력 소비량 증가)",
 | 
					    "foregroundServiceExplanation": "업데이트 확인을 위해 포그라운드 서비스 사용(안정성 향상, 전력 소비량 증가)",
 | 
				
			||||||
    "fgServiceNotice": "이 알림은 백그라운드 업데이트 확인에 필요합니다(OS 설정에서 숨길 수 있음).",
 | 
					    "fgServiceNotice": "이 알림은 백그라운드 업데이트 확인에 필요합니다(OS 설정에서 숨길 수 있음).",
 | 
				
			||||||
 | 
					    "excludeSecrets": "비밀 제외",
 | 
				
			||||||
    "removeAppQuestion": {
 | 
					    "removeAppQuestion": {
 | 
				
			||||||
        "one": "앱을 제거하시겠습니까?",
 | 
					        "one": "앱을 제거하시겠습니까?",
 | 
				
			||||||
        "other": "앱을 제거하시겠습니까?"
 | 
					        "other": "앱을 제거하시겠습니까?"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,6 +167,7 @@
 | 
				
			|||||||
    "versionCorrectionDisabled": "പതിപ്പ് തിരുത്തൽ പ്രവർത്തനരഹിതമാക്കി (പ്ലഗിൻ പ്രവർത്തിക്കുന്നതായി തോന്നുന്നില്ല)",
 | 
					    "versionCorrectionDisabled": "പതിപ്പ് തിരുത്തൽ പ്രവർത്തനരഹിതമാക്കി (പ്ലഗിൻ പ്രവർത്തിക്കുന്നതായി തോന്നുന്നില്ല)",
 | 
				
			||||||
    "unknown": "അജ്ഞാതം",
 | 
					    "unknown": "അജ്ഞാതം",
 | 
				
			||||||
    "none": "ഒന്നുമില്ല",
 | 
					    "none": "ഒന്നുമില്ല",
 | 
				
			||||||
 | 
					    "all": "All",
 | 
				
			||||||
    "never": "ഒരിക്കലുമില്ല",
 | 
					    "never": "ഒരിക്കലുമില്ല",
 | 
				
			||||||
    "latestVersionX": "ഏറ്റവും പുതിയത്: {}",
 | 
					    "latestVersionX": "ഏറ്റവും പുതിയത്: {}",
 | 
				
			||||||
    "installedVersionX": "ഇൻസ്റ്റാൾ ചെയ്തത്: {}",
 | 
					    "installedVersionX": "ഇൻസ്റ്റാൾ ചെയ്തത്: {}",
 | 
				
			||||||
@@ -333,6 +334,7 @@
 | 
				
			|||||||
    "foregroundService": "Obtainium foreground service",
 | 
					    "foregroundService": "Obtainium foreground service",
 | 
				
			||||||
    "foregroundServiceExplanation": "Use a foreground service for update checking (more reliable, consumes more power)",
 | 
					    "foregroundServiceExplanation": "Use a foreground service for update checking (more reliable, consumes more power)",
 | 
				
			||||||
    "fgServiceNotice": "This notification is required for background update checking (it can be hidden in the OS settings)",
 | 
					    "fgServiceNotice": "This notification is required for background update checking (it can be hidden in the OS settings)",
 | 
				
			||||||
 | 
					    "excludeSecrets": "Exclude secrets",
 | 
				
			||||||
    "removeAppQuestion": {
 | 
					    "removeAppQuestion": {
 | 
				
			||||||
        "one": "ആപ്പ് നീക്കം ചെയ്യണോ?",
 | 
					        "one": "ആപ്പ് നീക്കം ചെയ്യണോ?",
 | 
				
			||||||
        "other": "ആപ്പുകൾ നീക്കം ചെയ്യണോ?"
 | 
					        "other": "ആപ്പുകൾ നീക്കം ചെയ്യണോ?"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,6 +167,7 @@
 | 
				
			|||||||
    "versionCorrectionDisabled": "Versiecorrectie uitgeschakeld (de plug-in lijkt niet te werken)",
 | 
					    "versionCorrectionDisabled": "Versiecorrectie uitgeschakeld (de plug-in lijkt niet te werken)",
 | 
				
			||||||
    "unknown": "Onbekend",
 | 
					    "unknown": "Onbekend",
 | 
				
			||||||
    "none": "Geen",
 | 
					    "none": "Geen",
 | 
				
			||||||
 | 
					    "all": "Alle",
 | 
				
			||||||
    "never": "Nooit",
 | 
					    "never": "Nooit",
 | 
				
			||||||
    "latestVersionX": "Laatste versie: {}",
 | 
					    "latestVersionX": "Laatste versie: {}",
 | 
				
			||||||
    "installedVersionX": "Geïnstalleerde versie: {}",
 | 
					    "installedVersionX": "Geïnstalleerde versie: {}",
 | 
				
			||||||
@@ -313,7 +314,7 @@
 | 
				
			|||||||
    "badDownload": "De APK kon niet worden verwerkt (incompatibele of gedeeltelijke download)",
 | 
					    "badDownload": "De APK kon niet worden verwerkt (incompatibele of gedeeltelijke download)",
 | 
				
			||||||
    "beforeNewInstallsShareToAppVerifier": "Nieuwe Apps delen met AppVerifier (indien beschikbaar)",
 | 
					    "beforeNewInstallsShareToAppVerifier": "Nieuwe Apps delen met AppVerifier (indien beschikbaar)",
 | 
				
			||||||
    "appVerifierInstructionToast": "Deel het met AppVerifier en keer daarna hier terug.",
 | 
					    "appVerifierInstructionToast": "Deel het met AppVerifier en keer daarna hier terug.",
 | 
				
			||||||
    "wiki": "Help/Wiki",
 | 
					    "wiki": "Help/wiki",
 | 
				
			||||||
    "crowdsourcedConfigsLabel": "Crowdsourced App-configuraties (gebruik op eigen risico)",
 | 
					    "crowdsourcedConfigsLabel": "Crowdsourced App-configuraties (gebruik op eigen risico)",
 | 
				
			||||||
    "crowdsourcedConfigsShort": "App-configuraties door menigte",
 | 
					    "crowdsourcedConfigsShort": "App-configuraties door menigte",
 | 
				
			||||||
    "allowInsecure": "Onveilige HTTP-verzoeken toestaan",
 | 
					    "allowInsecure": "Onveilige HTTP-verzoeken toestaan",
 | 
				
			||||||
@@ -333,6 +334,7 @@
 | 
				
			|||||||
    "foregroundService": "Obtainium foreground service",
 | 
					    "foregroundService": "Obtainium foreground service",
 | 
				
			||||||
    "foregroundServiceExplanation": "Gebruik een voorgronddienst voor het controleren van updates (betrouwbaarder, verbruikt meer stroom)",
 | 
					    "foregroundServiceExplanation": "Gebruik een voorgronddienst voor het controleren van updates (betrouwbaarder, verbruikt meer stroom)",
 | 
				
			||||||
    "fgServiceNotice": "Deze melding is nodig voor het controleren van updates op de achtergrond (kan worden verborgen in de OS-instellingen)",
 | 
					    "fgServiceNotice": "Deze melding is nodig voor het controleren van updates op de achtergrond (kan worden verborgen in de OS-instellingen)",
 | 
				
			||||||
 | 
					    "excludeSecrets": "Geheimen uitsluiten",
 | 
				
			||||||
    "removeAppQuestion": {
 | 
					    "removeAppQuestion": {
 | 
				
			||||||
        "one": "App verwijderen?",
 | 
					        "one": "App verwijderen?",
 | 
				
			||||||
        "other": "Apps verwijderen?"
 | 
					        "other": "Apps verwijderen?"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,6 +167,7 @@
 | 
				
			|||||||
    "versionCorrectionDisabled": "Korekta wersji wyłączona (wtyczka wydaje się nie działać)",
 | 
					    "versionCorrectionDisabled": "Korekta wersji wyłączona (wtyczka wydaje się nie działać)",
 | 
				
			||||||
    "unknown": "Nieznane",
 | 
					    "unknown": "Nieznane",
 | 
				
			||||||
    "none": "Brak",
 | 
					    "none": "Brak",
 | 
				
			||||||
 | 
					    "all": "Wszystkie",
 | 
				
			||||||
    "never": "Nigdy",
 | 
					    "never": "Nigdy",
 | 
				
			||||||
    "latestVersionX": "Najnowsza wersja: {}",
 | 
					    "latestVersionX": "Najnowsza wersja: {}",
 | 
				
			||||||
    "installedVersionX": "Zainstalowana wersja: {}",
 | 
					    "installedVersionX": "Zainstalowana wersja: {}",
 | 
				
			||||||
@@ -333,6 +334,7 @@
 | 
				
			|||||||
    "foregroundService": "Usługa nowej generacji Obtainium",
 | 
					    "foregroundService": "Usługa nowej generacji Obtainium",
 | 
				
			||||||
    "foregroundServiceExplanation": "Używanie usługi pierwszoplanowej do sprawdzania aktualizacji (bardziej niezawodne, zużywa więcej energii)",
 | 
					    "foregroundServiceExplanation": "Używanie usługi pierwszoplanowej do sprawdzania aktualizacji (bardziej niezawodne, zużywa więcej energii)",
 | 
				
			||||||
    "fgServiceNotice": "To powiadomienie jest wymagane do sprawdzania aktualizacji w tle (można je ukryć w ustawieniach systemu operacyjnego).",
 | 
					    "fgServiceNotice": "To powiadomienie jest wymagane do sprawdzania aktualizacji w tle (można je ukryć w ustawieniach systemu operacyjnego).",
 | 
				
			||||||
 | 
					    "excludeSecrets": "Wyklucz sekrety",
 | 
				
			||||||
    "removeAppQuestion": {
 | 
					    "removeAppQuestion": {
 | 
				
			||||||
        "one": "Usunąć aplikację?",
 | 
					        "one": "Usunąć aplikację?",
 | 
				
			||||||
        "few": "Usunąć aplikacje?",
 | 
					        "few": "Usunąć aplikacje?",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,6 +167,7 @@
 | 
				
			|||||||
    "versionCorrectionDisabled": "Correção de versão desativada (o plugin parece não funcionar)",
 | 
					    "versionCorrectionDisabled": "Correção de versão desativada (o plugin parece não funcionar)",
 | 
				
			||||||
    "unknown": "Desconhecido",
 | 
					    "unknown": "Desconhecido",
 | 
				
			||||||
    "none": "Nenhum",
 | 
					    "none": "Nenhum",
 | 
				
			||||||
 | 
					    "all": "Todos",
 | 
				
			||||||
    "never": "Nunca",
 | 
					    "never": "Nunca",
 | 
				
			||||||
    "latestVersionX": "Mais recente: {}",
 | 
					    "latestVersionX": "Mais recente: {}",
 | 
				
			||||||
    "installedVersionX": "Instalado: {}",
 | 
					    "installedVersionX": "Instalado: {}",
 | 
				
			||||||
@@ -333,6 +334,7 @@
 | 
				
			|||||||
    "foregroundService": "Serviço de primeiro plano do Obtainium",
 | 
					    "foregroundService": "Serviço de primeiro plano do Obtainium",
 | 
				
			||||||
    "foregroundServiceExplanation": "Usar um serviço em primeiro plano para verificação de atualizações (mais confiável, consome mais energia)",
 | 
					    "foregroundServiceExplanation": "Usar um serviço em primeiro plano para verificação de atualizações (mais confiável, consome mais energia)",
 | 
				
			||||||
    "fgServiceNotice": "Essa notificação é necessária para a verificação de atualizações em segundo plano (ela pode ser ocultada nas configurações do sistema operacional)",
 | 
					    "fgServiceNotice": "Essa notificação é necessária para a verificação de atualizações em segundo plano (ela pode ser ocultada nas configurações do sistema operacional)",
 | 
				
			||||||
 | 
					    "excludeSecrets": "Excluir segredos",
 | 
				
			||||||
    "removeAppQuestion": {
 | 
					    "removeAppQuestion": {
 | 
				
			||||||
        "one": "Remover app?",
 | 
					        "one": "Remover app?",
 | 
				
			||||||
        "other": "Remover apps?"
 | 
					        "other": "Remover apps?"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,6 +167,7 @@
 | 
				
			|||||||
    "versionCorrectionDisabled": "Correção de versão desativada (plugin parece não funcionar)",
 | 
					    "versionCorrectionDisabled": "Correção de versão desativada (plugin parece não funcionar)",
 | 
				
			||||||
    "unknown": "Desconhecido",
 | 
					    "unknown": "Desconhecido",
 | 
				
			||||||
    "none": "Nenhum",
 | 
					    "none": "Nenhum",
 | 
				
			||||||
 | 
					    "all": "Todos",
 | 
				
			||||||
    "never": "Nunca",
 | 
					    "never": "Nunca",
 | 
				
			||||||
    "latestVersionX": "Última versão: {}",
 | 
					    "latestVersionX": "Última versão: {}",
 | 
				
			||||||
    "installedVersionX": "Versão instalada: {}",
 | 
					    "installedVersionX": "Versão instalada: {}",
 | 
				
			||||||
@@ -333,6 +334,7 @@
 | 
				
			|||||||
    "foregroundService": "Serviço de primeiro plano Obtainium",
 | 
					    "foregroundService": "Serviço de primeiro plano Obtainium",
 | 
				
			||||||
    "foregroundServiceExplanation": "Utilizar um serviço em primeiro plano para verificação de actualizações (mais fiável, consome mais energia)",
 | 
					    "foregroundServiceExplanation": "Utilizar um serviço em primeiro plano para verificação de actualizações (mais fiável, consome mais energia)",
 | 
				
			||||||
    "fgServiceNotice": "Esta notificação é necessária para a verificação de actualizações em segundo plano (pode ser ocultada nas definições do SO)",
 | 
					    "fgServiceNotice": "Esta notificação é necessária para a verificação de actualizações em segundo plano (pode ser ocultada nas definições do SO)",
 | 
				
			||||||
 | 
					    "excludeSecrets": "Excluir segredos",
 | 
				
			||||||
    "removeAppQuestion": {
 | 
					    "removeAppQuestion": {
 | 
				
			||||||
        "one": "Remover aplicativo?",
 | 
					        "one": "Remover aplicativo?",
 | 
				
			||||||
        "other": "Remover aplicativos?"
 | 
					        "other": "Remover aplicativos?"
 | 
				
			||||||
@@ -358,16 +360,16 @@
 | 
				
			|||||||
        "other": "{} URLs"
 | 
					        "other": "{} URLs"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "minute": {
 | 
					    "minute": {
 | 
				
			||||||
        "one": "{} Minuto",
 | 
					        "one": "{} minuto",
 | 
				
			||||||
        "other": "{} Minutos"
 | 
					        "other": "{} minutos"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "hour": {
 | 
					    "hour": {
 | 
				
			||||||
        "one": "{} Hora",
 | 
					        "one": "{} hora",
 | 
				
			||||||
        "other": "{} Horas"
 | 
					        "other": "{} horas"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "day": {
 | 
					    "day": {
 | 
				
			||||||
        "one": "{} Dia",
 | 
					        "one": "{} dia",
 | 
				
			||||||
        "other": "{} Dias"
 | 
					        "other": "{} dias"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "clearedNLogsBeforeXAfterY": {
 | 
					    "clearedNLogsBeforeXAfterY": {
 | 
				
			||||||
        "one": "Foi limpo {n} log (antes = {antes}, depois = {depois})",
 | 
					        "one": "Foi limpo {n} log (antes = {antes}, depois = {depois})",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,6 +167,7 @@
 | 
				
			|||||||
    "versionCorrectionDisabled": "Коррекция версий отключена (плагин, кажется, не работает)",
 | 
					    "versionCorrectionDisabled": "Коррекция версий отключена (плагин, кажется, не работает)",
 | 
				
			||||||
    "unknown": "Неизвестно",
 | 
					    "unknown": "Неизвестно",
 | 
				
			||||||
    "none": "Отсутствует",
 | 
					    "none": "Отсутствует",
 | 
				
			||||||
 | 
					    "all": "Все",
 | 
				
			||||||
    "never": "Никогда",
 | 
					    "never": "Никогда",
 | 
				
			||||||
    "latestVersionX": "Последняя версия: {}",
 | 
					    "latestVersionX": "Последняя версия: {}",
 | 
				
			||||||
    "installedVersionX": "Установленная версия: {}",
 | 
					    "installedVersionX": "Установленная версия: {}",
 | 
				
			||||||
@@ -292,7 +293,7 @@
 | 
				
			|||||||
    "selectX": "Выбрать {}",
 | 
					    "selectX": "Выбрать {}",
 | 
				
			||||||
    "parallelDownloads": "Использовать параллельные загрузки",
 | 
					    "parallelDownloads": "Использовать параллельные загрузки",
 | 
				
			||||||
    "useShizuku": "Использовать Shizuku или Sui для установки",
 | 
					    "useShizuku": "Использовать Shizuku или Sui для установки",
 | 
				
			||||||
    "shizukuBinderNotFound": "Совместимый сервис Shizuku не найден, возможно он не запущен",
 | 
					    "shizukuBinderNotFound": "Совместимая служба Shizuku не найдена, возможно, она не запущена",
 | 
				
			||||||
    "shizukuOld": "Устаревшая версия Shizuku (<11), обновите",
 | 
					    "shizukuOld": "Устаревшая версия Shizuku (<11), обновите",
 | 
				
			||||||
    "shizukuOldAndroidWithADB": "Shizuku работает на Android < 8.1 с ADB, обновите Android или используйте Sui",
 | 
					    "shizukuOldAndroidWithADB": "Shizuku работает на Android < 8.1 с ADB, обновите Android или используйте Sui",
 | 
				
			||||||
    "shizukuPretendToBeGooglePlay": "Указывать Google Play как источник установки (если используется Shizuku)",
 | 
					    "shizukuPretendToBeGooglePlay": "Указывать Google Play как источник установки (если используется Shizuku)",
 | 
				
			||||||
@@ -330,9 +331,10 @@
 | 
				
			|||||||
    "documentationLinksNote": "На странице Obtainium в GitHub, ссылка на которую приведена ниже, содержатся ссылки на видео, статьи, обсуждения и другие ресурсы, которые помогут вам понять, как пользоваться приложением.",
 | 
					    "documentationLinksNote": "На странице Obtainium в GitHub, ссылка на которую приведена ниже, содержатся ссылки на видео, статьи, обсуждения и другие ресурсы, которые помогут вам понять, как пользоваться приложением.",
 | 
				
			||||||
    "batteryOptimizationNote": "Обратите внимание, что фоновая загрузка может работать более надёжно, если отключить оптимизацию батареи ОС для Obtainium.",
 | 
					    "batteryOptimizationNote": "Обратите внимание, что фоновая загрузка может работать более надёжно, если отключить оптимизацию батареи ОС для Obtainium.",
 | 
				
			||||||
    "fileDeletionError": "Не удалось удалить файл (попробуйте удалить его вручную, а затем повторите попытку): «{}»",
 | 
					    "fileDeletionError": "Не удалось удалить файл (попробуйте удалить его вручную, а затем повторите попытку): «{}»",
 | 
				
			||||||
    "foregroundService": "Передний план службы Obtainium",
 | 
					    "foregroundService": "Приоритетная служба Obtainium",
 | 
				
			||||||
    "foregroundServiceExplanation": "Используйте службу переднего плана для проверки обновлений (более надежно, потребляет больше энергии).",
 | 
					    "foregroundServiceExplanation": "Использовать приоритетную службу для проверки обновлений (надёжнее, энергозатратнее)",
 | 
				
			||||||
    "fgServiceNotice": "Это уведомление необходимо для фоновой проверки обновлений (его можно скрыть в настройках ОС)",
 | 
					    "fgServiceNotice": "Это уведомление необходимо для фоновой проверки обновлений (оно может быть скрыто в настройках ОС)",
 | 
				
			||||||
 | 
					    "excludeSecrets": "Исключить секреты",
 | 
				
			||||||
    "removeAppQuestion": {
 | 
					    "removeAppQuestion": {
 | 
				
			||||||
        "one": "Удалить приложение?",
 | 
					        "one": "Удалить приложение?",
 | 
				
			||||||
        "other": "Удалить приложения?"
 | 
					        "other": "Удалить приложения?"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,6 +167,7 @@
 | 
				
			|||||||
    "versionCorrectionDisabled": "Versionskorrigering inaktiverat (plugin verkar inte fungera)",
 | 
					    "versionCorrectionDisabled": "Versionskorrigering inaktiverat (plugin verkar inte fungera)",
 | 
				
			||||||
    "unknown": "Okänd",
 | 
					    "unknown": "Okänd",
 | 
				
			||||||
    "none": "Ingen",
 | 
					    "none": "Ingen",
 | 
				
			||||||
 | 
					    "all": "Alla",
 | 
				
			||||||
    "never": "Aldrig",
 | 
					    "never": "Aldrig",
 | 
				
			||||||
    "latestVersionX": "Senaste Version: {}",
 | 
					    "latestVersionX": "Senaste Version: {}",
 | 
				
			||||||
    "installedVersionX": "Installerad Version: {}",
 | 
					    "installedVersionX": "Installerad Version: {}",
 | 
				
			||||||
@@ -333,6 +334,7 @@
 | 
				
			|||||||
    "foregroundService": "Obtainium förgrundstjänst",
 | 
					    "foregroundService": "Obtainium förgrundstjänst",
 | 
				
			||||||
    "foregroundServiceExplanation": "Använd en förgrundstjänst för uppdateringskontroll (mer tillförlitlig, förbrukar mer ström)",
 | 
					    "foregroundServiceExplanation": "Använd en förgrundstjänst för uppdateringskontroll (mer tillförlitlig, förbrukar mer ström)",
 | 
				
			||||||
    "fgServiceNotice": "Detta meddelande krävs för bakgrundsuppdateringskontroll (det kan döljas i OS-inställningarna)",
 | 
					    "fgServiceNotice": "Detta meddelande krävs för bakgrundsuppdateringskontroll (det kan döljas i OS-inställningarna)",
 | 
				
			||||||
 | 
					    "excludeSecrets": "Utesluta hemligheter",
 | 
				
			||||||
    "removeAppQuestion": {
 | 
					    "removeAppQuestion": {
 | 
				
			||||||
        "one": "Ta Bort App?",
 | 
					        "one": "Ta Bort App?",
 | 
				
			||||||
        "other": "Ta Bort Appar?"
 | 
					        "other": "Ta Bort Appar?"
 | 
				
			||||||
@@ -358,16 +360,16 @@
 | 
				
			|||||||
        "other": "{} URL:er"
 | 
					        "other": "{} URL:er"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "minute": {
 | 
					    "minute": {
 | 
				
			||||||
        "one": "{} Minut",
 | 
					        "one": "{} minut",
 | 
				
			||||||
        "other": "{} Minuter"
 | 
					        "other": "{} minuter"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "hour": {
 | 
					    "hour": {
 | 
				
			||||||
        "one": "{} Timme",
 | 
					        "one": "{} timme",
 | 
				
			||||||
        "other": "{} Timmar"
 | 
					        "other": "{} timmar"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "day": {
 | 
					    "day": {
 | 
				
			||||||
        "one": "{} Dag",
 | 
					        "one": "{} dag",
 | 
				
			||||||
        "other": "{} Dagar"
 | 
					        "other": "{} dagar"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "clearedNLogsBeforeXAfterY": {
 | 
					    "clearedNLogsBeforeXAfterY": {
 | 
				
			||||||
        "one": "Rensade {n} logg (före = {before}, efter = {after})",
 | 
					        "one": "Rensade {n} logg (före = {before}, efter = {after})",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,6 +167,7 @@
 | 
				
			|||||||
    "versionCorrectionDisabled": "Sürüm düzeltme devre dışı bırakıldı (eklenti çalışmıyor gibi görünüyor)",
 | 
					    "versionCorrectionDisabled": "Sürüm düzeltme devre dışı bırakıldı (eklenti çalışmıyor gibi görünüyor)",
 | 
				
			||||||
    "unknown": "Bilinmiyor",
 | 
					    "unknown": "Bilinmiyor",
 | 
				
			||||||
    "none": "Hiçbiri",
 | 
					    "none": "Hiçbiri",
 | 
				
			||||||
 | 
					    "all": "Tümü",
 | 
				
			||||||
    "never": "Asla",
 | 
					    "never": "Asla",
 | 
				
			||||||
    "latestVersionX": "En Son Sürüm: {}",
 | 
					    "latestVersionX": "En Son Sürüm: {}",
 | 
				
			||||||
    "installedVersionX": "Yüklenen Sürüm: {}",
 | 
					    "installedVersionX": "Yüklenen Sürüm: {}",
 | 
				
			||||||
@@ -333,6 +334,7 @@
 | 
				
			|||||||
    "foregroundService": "Obtainium ön plan hizmeti",
 | 
					    "foregroundService": "Obtainium ön plan hizmeti",
 | 
				
			||||||
    "foregroundServiceExplanation": "Güncelleme denetimi için bir ön plan hizmeti kullanın (daha güvenilir, daha fazla güç tüketir)",
 | 
					    "foregroundServiceExplanation": "Güncelleme denetimi için bir ön plan hizmeti kullanın (daha güvenilir, daha fazla güç tüketir)",
 | 
				
			||||||
    "fgServiceNotice": "Bu bildirim arka planda güncelleme kontrolü için gereklidir (işletim sistemi ayarlarından gizlenebilir)",
 | 
					    "fgServiceNotice": "Bu bildirim arka planda güncelleme kontrolü için gereklidir (işletim sistemi ayarlarından gizlenebilir)",
 | 
				
			||||||
 | 
					    "excludeSecrets": "Sırları hariç tut",
 | 
				
			||||||
    "removeAppQuestion": {
 | 
					    "removeAppQuestion": {
 | 
				
			||||||
        "one": "Uygulamayı Kaldır?",
 | 
					        "one": "Uygulamayı Kaldır?",
 | 
				
			||||||
        "other": "Uygulamaları Kaldır?"
 | 
					        "other": "Uygulamaları Kaldır?"
 | 
				
			||||||
@@ -358,16 +360,16 @@
 | 
				
			|||||||
        "other": "{} URL"
 | 
					        "other": "{} URL"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "minute": {
 | 
					    "minute": {
 | 
				
			||||||
        "one": "{} Dakika",
 | 
					        "one": "{} dakika",
 | 
				
			||||||
        "other": "{} Dakika"
 | 
					        "other": "{} dakika"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "hour": {
 | 
					    "hour": {
 | 
				
			||||||
        "one": "{} Saat",
 | 
					        "one": "{} saat",
 | 
				
			||||||
        "other": "{} Saat"
 | 
					        "other": "{} saat"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "day": {
 | 
					    "day": {
 | 
				
			||||||
        "one": "{} Gün",
 | 
					        "one": "{} gün",
 | 
				
			||||||
        "other": "{} Gün"
 | 
					        "other": "{} gün"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "clearedNLogsBeforeXAfterY": {
 | 
					    "clearedNLogsBeforeXAfterY": {
 | 
				
			||||||
        "one": "{n} log temizlendi (önce = {before}, sonra = {after})",
 | 
					        "one": "{n} log temizlendi (önce = {before}, sonra = {after})",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,6 +167,7 @@
 | 
				
			|||||||
    "versionCorrectionDisabled": "Виправлення версії вимкнено (здається, плагін не працює)",
 | 
					    "versionCorrectionDisabled": "Виправлення версії вимкнено (здається, плагін не працює)",
 | 
				
			||||||
    "unknown": "Невідомо",
 | 
					    "unknown": "Невідомо",
 | 
				
			||||||
    "none": "Нічого",
 | 
					    "none": "Нічого",
 | 
				
			||||||
 | 
					    "all": "Усе.",
 | 
				
			||||||
    "never": "Ніколи",
 | 
					    "never": "Ніколи",
 | 
				
			||||||
    "latestVersionX": "Остання версія: {}",
 | 
					    "latestVersionX": "Остання версія: {}",
 | 
				
			||||||
    "installedVersionX": "Встановлено: {}",
 | 
					    "installedVersionX": "Встановлено: {}",
 | 
				
			||||||
@@ -333,6 +334,7 @@
 | 
				
			|||||||
    "foregroundService": "Обслуговування переднього плану Obtainium",
 | 
					    "foregroundService": "Обслуговування переднього плану Obtainium",
 | 
				
			||||||
    "foregroundServiceExplanation": "Використовуйте службу переднього плану для перевірки оновлень (надійніша, споживає більше енергії)",
 | 
					    "foregroundServiceExplanation": "Використовуйте службу переднього плану для перевірки оновлень (надійніша, споживає більше енергії)",
 | 
				
			||||||
    "fgServiceNotice": "Це сповіщення необхідне для фонової перевірки оновлень (його можна приховати в налаштуваннях ОС)",
 | 
					    "fgServiceNotice": "Це сповіщення необхідне для фонової перевірки оновлень (його можна приховати в налаштуваннях ОС)",
 | 
				
			||||||
 | 
					    "excludeSecrets": "Виключити секрети",
 | 
				
			||||||
    "removeAppQuestion": {
 | 
					    "removeAppQuestion": {
 | 
				
			||||||
        "one": "Видалити застосунок?",
 | 
					        "one": "Видалити застосунок?",
 | 
				
			||||||
        "other": "Видалити застосунки?"
 | 
					        "other": "Видалити застосунки?"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,6 +167,7 @@
 | 
				
			|||||||
    "versionCorrectionDisabled": "Tính năng sửa phiên bản bị vô hiệu hóa (plugin dường như không hoạt động)",
 | 
					    "versionCorrectionDisabled": "Tính năng sửa phiên bản bị vô hiệu hóa (plugin dường như không hoạt động)",
 | 
				
			||||||
    "unknown": "Không xác định",
 | 
					    "unknown": "Không xác định",
 | 
				
			||||||
    "none": "Không",
 | 
					    "none": "Không",
 | 
				
			||||||
 | 
					    "all": "Tất cả",
 | 
				
			||||||
    "never": "Không bao giờ",
 | 
					    "never": "Không bao giờ",
 | 
				
			||||||
    "latestVersionX": "Phiên bản mới nhất: {}",
 | 
					    "latestVersionX": "Phiên bản mới nhất: {}",
 | 
				
			||||||
    "installedVersionX": "Phiên bản đã cài đặt: {}",
 | 
					    "installedVersionX": "Phiên bản đã cài đặt: {}",
 | 
				
			||||||
@@ -333,6 +334,7 @@
 | 
				
			|||||||
    "foregroundService": "Dịch vụ nền Obtainium",
 | 
					    "foregroundService": "Dịch vụ nền Obtainium",
 | 
				
			||||||
    "foregroundServiceExplanation": "Sử dụng dịch vụ nền trước để kiểm tra cập nhật (đáng tin cậy hơn, tiêu tốn nhiều pin hơn)",
 | 
					    "foregroundServiceExplanation": "Sử dụng dịch vụ nền trước để kiểm tra cập nhật (đáng tin cậy hơn, tiêu tốn nhiều pin hơn)",
 | 
				
			||||||
    "fgServiceNotice": "Thông báo này là bắt buộc để kiểm tra cập nhật nền (có thể ẩn trong cài đặt hệ điều hành).",
 | 
					    "fgServiceNotice": "Thông báo này là bắt buộc để kiểm tra cập nhật nền (có thể ẩn trong cài đặt hệ điều hành).",
 | 
				
			||||||
 | 
					    "excludeSecrets": "Loại trừ thông tin bí mật",
 | 
				
			||||||
    "removeAppQuestion": {
 | 
					    "removeAppQuestion": {
 | 
				
			||||||
        "one": "Gỡ ứng dụng?",
 | 
					        "one": "Gỡ ứng dụng?",
 | 
				
			||||||
        "other": "Gỡ ứng dụng?"
 | 
					        "other": "Gỡ ứng dụng?"
 | 
				
			||||||
@@ -358,15 +360,15 @@
 | 
				
			|||||||
        "other": "{} URL"
 | 
					        "other": "{} URL"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "minute": {
 | 
					    "minute": {
 | 
				
			||||||
        "one": "{} Phút",
 | 
					        "one": "{} phút",
 | 
				
			||||||
        "other": "{} Phút"
 | 
					        "other": "{} phút"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "hour": {
 | 
					    "hour": {
 | 
				
			||||||
        "one": "{} Giờ",
 | 
					        "one": "{} giờ",
 | 
				
			||||||
        "other": "{} Giờ"
 | 
					        "other": "{} giờ"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "day": {
 | 
					    "day": {
 | 
				
			||||||
        "one": "{} Ngày",
 | 
					        "one": "{} ngày",
 | 
				
			||||||
        "other": "{} ngày"
 | 
					        "other": "{} ngày"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "clearedNLogsBeforeXAfterY": {
 | 
					    "clearedNLogsBeforeXAfterY": {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,6 +167,7 @@
 | 
				
			|||||||
    "versionCorrectionDisabled": "版本校正已停用(外掛程式似乎無法正常工作)",
 | 
					    "versionCorrectionDisabled": "版本校正已停用(外掛程式似乎無法正常工作)",
 | 
				
			||||||
    "unknown": "未知",
 | 
					    "unknown": "未知",
 | 
				
			||||||
    "none": "無",
 | 
					    "none": "無",
 | 
				
			||||||
 | 
					    "all": "All",
 | 
				
			||||||
    "never": "從不",
 | 
					    "never": "從不",
 | 
				
			||||||
    "latestVersionX": "最新版本:{}",
 | 
					    "latestVersionX": "最新版本:{}",
 | 
				
			||||||
    "installedVersionX": "已安裝版本:{}",
 | 
					    "installedVersionX": "已安裝版本:{}",
 | 
				
			||||||
@@ -333,6 +334,7 @@
 | 
				
			|||||||
    "foregroundService": "Obtainium foreground service",
 | 
					    "foregroundService": "Obtainium foreground service",
 | 
				
			||||||
    "foregroundServiceExplanation": "Use a foreground service for update checking (more reliable, consumes more power)",
 | 
					    "foregroundServiceExplanation": "Use a foreground service for update checking (more reliable, consumes more power)",
 | 
				
			||||||
    "fgServiceNotice": "This notification is required for background update checking (it can be hidden in the OS settings)",
 | 
					    "fgServiceNotice": "This notification is required for background update checking (it can be hidden in the OS settings)",
 | 
				
			||||||
 | 
					    "excludeSecrets": "Exclude secrets",
 | 
				
			||||||
    "removeAppQuestion": {
 | 
					    "removeAppQuestion": {
 | 
				
			||||||
        "one": "移除應用程式?",
 | 
					        "one": "移除應用程式?",
 | 
				
			||||||
        "other": "移除應用程式?"
 | 
					        "other": "移除應用程式?"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,7 +23,7 @@
 | 
				
			|||||||
    "dropdownNoOptsError": "错误:下拉菜单必须包含至少一个选项",
 | 
					    "dropdownNoOptsError": "错误:下拉菜单必须包含至少一个选项",
 | 
				
			||||||
    "colour": "配色",
 | 
					    "colour": "配色",
 | 
				
			||||||
    "standard": "标准",
 | 
					    "standard": "标准",
 | 
				
			||||||
    "custom": "定制",
 | 
					    "custom": "自定义",
 | 
				
			||||||
    "useMaterialYou": "使用 Material You",
 | 
					    "useMaterialYou": "使用 Material You",
 | 
				
			||||||
    "githubStarredRepos": "已星标的 GitHub 仓库",
 | 
					    "githubStarredRepos": "已星标的 GitHub 仓库",
 | 
				
			||||||
    "uname": "用户名",
 | 
					    "uname": "用户名",
 | 
				
			||||||
@@ -50,7 +50,7 @@
 | 
				
			|||||||
    "appsString": "应用列表",
 | 
					    "appsString": "应用列表",
 | 
				
			||||||
    "noApps": "无应用",
 | 
					    "noApps": "无应用",
 | 
				
			||||||
    "noAppsForFilter": "没有符合条件的应用",
 | 
					    "noAppsForFilter": "没有符合条件的应用",
 | 
				
			||||||
    "byX": "作者:{}",
 | 
					    "byX": "开发者:{}",
 | 
				
			||||||
    "percentProgress": "进度:{}%",
 | 
					    "percentProgress": "进度:{}%",
 | 
				
			||||||
    "pleaseWait": "请稍候",
 | 
					    "pleaseWait": "请稍候",
 | 
				
			||||||
    "updateAvailable": "更新可用",
 | 
					    "updateAvailable": "更新可用",
 | 
				
			||||||
@@ -157,8 +157,8 @@
 | 
				
			|||||||
    "appsRemovedNotifDescription": "当应用因加载出错而被删除时发送通知",
 | 
					    "appsRemovedNotifDescription": "当应用因加载出错而被删除时发送通知",
 | 
				
			||||||
    "xWasRemovedDueToErrorY": "“{}”由于以下错误被删除:{}",
 | 
					    "xWasRemovedDueToErrorY": "“{}”由于以下错误被删除:{}",
 | 
				
			||||||
    "completeAppInstallation": "完成应用安装",
 | 
					    "completeAppInstallation": "完成应用安装",
 | 
				
			||||||
    "obtainiumMustBeOpenToInstallApps": "必须启动 Obtainium 才能安装应用",
 | 
					    "obtainiumMustBeOpenToInstallApps": "必须开启 Obtainium 才能安装应用",
 | 
				
			||||||
    "completeAppInstallationNotifDescription": "提示返回 Obtainium 以完成应用的安装",
 | 
					    "completeAppInstallationNotifDescription": "提示返回 Obtainium 以完成应用安装",
 | 
				
			||||||
    "checkingForUpdates": "正在检查更新",
 | 
					    "checkingForUpdates": "正在检查更新",
 | 
				
			||||||
    "checkingForUpdatesNotifDescription": "检查更新时短暂显示的通知",
 | 
					    "checkingForUpdatesNotifDescription": "检查更新时短暂显示的通知",
 | 
				
			||||||
    "pleaseAllowInstallPerm": "请授予 Obtainium 安装应用的权限",
 | 
					    "pleaseAllowInstallPerm": "请授予 Obtainium 安装应用的权限",
 | 
				
			||||||
@@ -167,6 +167,7 @@
 | 
				
			|||||||
    "versionCorrectionDisabled": "禁用版本号更正(插件似乎未起作用)",
 | 
					    "versionCorrectionDisabled": "禁用版本号更正(插件似乎未起作用)",
 | 
				
			||||||
    "unknown": "未知",
 | 
					    "unknown": "未知",
 | 
				
			||||||
    "none": "无",
 | 
					    "none": "无",
 | 
				
			||||||
 | 
					    "all": "全部",
 | 
				
			||||||
    "never": "从未",
 | 
					    "never": "从未",
 | 
				
			||||||
    "latestVersionX": "最新版本:{}",
 | 
					    "latestVersionX": "最新版本:{}",
 | 
				
			||||||
    "installedVersionX": "当前版本:{}",
 | 
					    "installedVersionX": "当前版本:{}",
 | 
				
			||||||
@@ -199,7 +200,7 @@
 | 
				
			|||||||
    "noCategory": "无类别",
 | 
					    "noCategory": "无类别",
 | 
				
			||||||
    "noCategories": "无类别",
 | 
					    "noCategories": "无类别",
 | 
				
			||||||
    "deleteCategoriesQuestion": "是否删除选中的类别?",
 | 
					    "deleteCategoriesQuestion": "是否删除选中的类别?",
 | 
				
			||||||
    "categoryDeleteWarning": "被删除类别的应用将恢复为未分类状态。",
 | 
					    "categoryDeleteWarning": "被删除类别下的应用将恢复为未分类状态。",
 | 
				
			||||||
    "addCategory": "添加类别",
 | 
					    "addCategory": "添加类别",
 | 
				
			||||||
    "label": "标签",
 | 
					    "label": "标签",
 | 
				
			||||||
    "language": "语言",
 | 
					    "language": "语言",
 | 
				
			||||||
@@ -211,7 +212,7 @@
 | 
				
			|||||||
    "uninstallFromDevice": "从设备中卸载",
 | 
					    "uninstallFromDevice": "从设备中卸载",
 | 
				
			||||||
    "onlyWorksWithNonVersionDetectApps": "仅适用于禁用版本检测的应用。",
 | 
					    "onlyWorksWithNonVersionDetectApps": "仅适用于禁用版本检测的应用。",
 | 
				
			||||||
    "releaseDateAsVersion": "将发行日期作为版本号",
 | 
					    "releaseDateAsVersion": "将发行日期作为版本号",
 | 
				
			||||||
    "releaseTitleAsVersion": "使用版本标题作为版本字符串",
 | 
					    "releaseTitleAsVersion": "将发行标题作为版本字符串",
 | 
				
			||||||
    "releaseDateAsVersionExplanation": "此选项应该仅用于无法进行版本检测但能够获取发行日期的应用。",
 | 
					    "releaseDateAsVersionExplanation": "此选项应该仅用于无法进行版本检测但能够获取发行日期的应用。",
 | 
				
			||||||
    "changes": "更新日志",
 | 
					    "changes": "更新日志",
 | 
				
			||||||
    "releaseDate": "发行日期",
 | 
					    "releaseDate": "发行日期",
 | 
				
			||||||
@@ -220,8 +221,8 @@
 | 
				
			|||||||
    "versionDetection": "版本检测",
 | 
					    "versionDetection": "版本检测",
 | 
				
			||||||
    "standardVersionDetection": "常规版本检测",
 | 
					    "standardVersionDetection": "常规版本检测",
 | 
				
			||||||
    "groupByCategory": "按类别分组显示",
 | 
					    "groupByCategory": "按类别分组显示",
 | 
				
			||||||
    "autoApkFilterByArch": "如果可能,尝试按设备支持的 CPU 架构筛选 APK 文件",
 | 
					    "autoApkFilterByArch": "尽可能按设备支持的 CPU 架构筛选 APK 文件",
 | 
				
			||||||
    "autoLinkFilterByArch": "尽可能按 CPU 架构过滤链接",
 | 
					    "autoLinkFilterByArch": "尽可能按设备支持的 CPU 架构筛选链接",
 | 
				
			||||||
    "overrideSource": "覆盖来源",
 | 
					    "overrideSource": "覆盖来源",
 | 
				
			||||||
    "dontShowAgain": "不再显示",
 | 
					    "dontShowAgain": "不再显示",
 | 
				
			||||||
    "dontShowTrackOnlyWarnings": "忽略“仅追踪”模式警告",
 | 
					    "dontShowTrackOnlyWarnings": "忽略“仅追踪”模式警告",
 | 
				
			||||||
@@ -249,7 +250,7 @@
 | 
				
			|||||||
    "xWasPossiblyUpdatedToY": "已尝试将“{}”更新至 {}。",
 | 
					    "xWasPossiblyUpdatedToY": "已尝试将“{}”更新至 {}。",
 | 
				
			||||||
    "enableBackgroundUpdates": "启用全局后台更新",
 | 
					    "enableBackgroundUpdates": "启用全局后台更新",
 | 
				
			||||||
    "backgroundUpdateReqsExplanation": "后台更新未必适用于所有的应用。",
 | 
					    "backgroundUpdateReqsExplanation": "后台更新未必适用于所有的应用。",
 | 
				
			||||||
    "backgroundUpdateLimitsExplanation": "只有在启动 Obtainium 时才能确认安装是否成功。",
 | 
					    "backgroundUpdateLimitsExplanation": "只有在开启 Obtainium 时才能确认是否安装成功。",
 | 
				
			||||||
    "verifyLatestTag": "验证“Latest”标签",
 | 
					    "verifyLatestTag": "验证“Latest”标签",
 | 
				
			||||||
    "intermediateLinkRegex": "筛选中转链接的正则表达式",
 | 
					    "intermediateLinkRegex": "筛选中转链接的正则表达式",
 | 
				
			||||||
    "filterByLinkText": "根据链接文本进行筛选",
 | 
					    "filterByLinkText": "根据链接文本进行筛选",
 | 
				
			||||||
@@ -257,12 +258,12 @@
 | 
				
			|||||||
    "intermediateLink": "中转链接",
 | 
					    "intermediateLink": "中转链接",
 | 
				
			||||||
    "exemptFromBackgroundUpdates": "禁用后台更新(仅此应用生效,即使已启用全局后台更新)",
 | 
					    "exemptFromBackgroundUpdates": "禁用后台更新(仅此应用生效,即使已启用全局后台更新)",
 | 
				
			||||||
    "bgUpdatesOnWiFiOnly": "未连接 Wi-Fi 时禁用后台更新",
 | 
					    "bgUpdatesOnWiFiOnly": "未连接 Wi-Fi 时禁用后台更新",
 | 
				
			||||||
    "bgUpdatesWhileChargingOnly": "不充电时禁用后台更新",
 | 
					    "bgUpdatesWhileChargingOnly": "未充电时禁用后台更新",
 | 
				
			||||||
    "autoSelectHighestVersionCode": "自动选择内部版本号最高的 APK 文件",
 | 
					    "autoSelectHighestVersionCode": "自动选择内部版本号最高的 APK 文件",
 | 
				
			||||||
    "versionExtractionRegEx": "提取版本号的正则表达式",
 | 
					    "versionExtractionRegEx": "提取版本号的正则表达式",
 | 
				
			||||||
    "trimVersionString": "使用 RegEx 修剪版本字符串",
 | 
					    "trimVersionString": "修剪版本字符串的正则表达式",
 | 
				
			||||||
    "matchGroupToUseForX": "用于\"{}\"的匹配组",
 | 
					    "matchGroupToUseForX": "“{}”中引用的捕获组",
 | 
				
			||||||
    "matchGroupToUse": "从上述匹配结果中引用的捕获组",
 | 
					    "matchGroupToUse": "“提取版本字符串的正则表达式”中引用的捕获组",
 | 
				
			||||||
    "highlightTouchTargets": "突出展示不明显的可交互区域",
 | 
					    "highlightTouchTargets": "突出展示不明显的可交互区域",
 | 
				
			||||||
    "pickExportDir": "选择导出文件夹",
 | 
					    "pickExportDir": "选择导出文件夹",
 | 
				
			||||||
    "autoExportOnChanges": "数据变更时自动导出",
 | 
					    "autoExportOnChanges": "数据变更时自动导出",
 | 
				
			||||||
@@ -314,32 +315,33 @@
 | 
				
			|||||||
    "beforeNewInstallsShareToAppVerifier": "通过 AppVerifier 校验新应用(如果可用)",
 | 
					    "beforeNewInstallsShareToAppVerifier": "通过 AppVerifier 校验新应用(如果可用)",
 | 
				
			||||||
    "appVerifierInstructionToast": "分享至 AppVerifier,完成后返回此处。",
 | 
					    "appVerifierInstructionToast": "分享至 AppVerifier,完成后返回此处。",
 | 
				
			||||||
    "wiki": "帮助/Wiki",
 | 
					    "wiki": "帮助/Wiki",
 | 
				
			||||||
    "crowdsourcedConfigsLabel": "众包应用程序配置(使用风险自负)",
 | 
					    "crowdsourcedConfigsLabel": "来自社区的应用配置(谨慎使用)",
 | 
				
			||||||
    "crowdsourcedConfigsShort": "众包应用程序配置",
 | 
					    "crowdsourcedConfigsShort": "来自社区的应用配置",
 | 
				
			||||||
    "allowInsecure": "允许不安全的 HTTP 请求",
 | 
					    "allowInsecure": "允许不安全的 HTTP 请求",
 | 
				
			||||||
    "stayOneVersionBehind": "比最新版本晚一个版本",
 | 
					    "stayOneVersionBehind": "始终延后一个版本进行更新",
 | 
				
			||||||
    "useFirstApkOfVersion": "从多个 APK 中自动选择第一个",
 | 
					    "useFirstApkOfVersion": "存在多个 APK 文件时自动选择第一个",
 | 
				
			||||||
    "refreshBeforeDownload": "下载前刷新应用程序详细信息",
 | 
					    "refreshBeforeDownload": "下载前刷新应用详情",
 | 
				
			||||||
    "tencentAppStore": "腾讯应用宝",
 | 
					    "tencentAppStore": "腾讯应用宝",
 | 
				
			||||||
    "coolApk": "酷安",
 | 
					    "coolApk": "酷安",
 | 
				
			||||||
    "vivoAppStore": "vivo 应用商店(中国)",
 | 
					    "vivoAppStore": "(中国)vivo应用商店",
 | 
				
			||||||
    "name": "名称",
 | 
					    "name": "发行名称",
 | 
				
			||||||
    "smartname": "姓名(智能)",
 | 
					    "smartname": "发行名称(智能)",
 | 
				
			||||||
    "sortMethod": "排序方法",
 | 
					    "sortMethod": "排序方法",
 | 
				
			||||||
    "welcome": "欢迎光临",
 | 
					    "welcome": "欢迎",
 | 
				
			||||||
    "documentationLinksNote": "下面链接的 Obtainium GitHub 页面包含视频、文章、讨论和其他资源的链接,可帮助您了解如何使用该应用程序。",
 | 
					    "documentationLinksNote": "下方链接的 GitHub 页面中包含关于 Obtainium 的视频、文章、讨论及其他资源,可帮助您了解本应用的使用方法。",
 | 
				
			||||||
    "batteryOptimizationNote": "请注意,如果为 Obtainium 禁用操作系统电池优化功能,后台下载可能会更稳定。",
 | 
					    "batteryOptimizationNote": "请注意,在设置中切换为“前台服务”,并/或关闭操作系统对 Obtainium 的电池优化,可能会让后台下载更稳定。",
 | 
				
			||||||
    "fileDeletionError": "删除文件失败(尝试手动删除,然后再试一次):\"{}\"",
 | 
					    "fileDeletionError": "删除文件失败(请手动删除后再次尝试):\"{}\"",
 | 
				
			||||||
    "foregroundService": "获取前台服务",
 | 
					    "foregroundService": "Obtainium 前台服务",
 | 
				
			||||||
    "foregroundServiceExplanation": "使用前台服务进行更新检查(更可靠,耗电量更大)",
 | 
					    "foregroundServiceExplanation": "使用前台服务检查更新(更稳定,但也更耗电)",
 | 
				
			||||||
    "fgServiceNotice": "后台更新检查需要此通知(可在操作系统设置中隐藏)。",
 | 
					    "fgServiceNotice": "后台检查更新时需要此通知(可在操作系统设置中隐藏)",
 | 
				
			||||||
 | 
					    "excludeSecrets": "排除机密",
 | 
				
			||||||
    "removeAppQuestion": {
 | 
					    "removeAppQuestion": {
 | 
				
			||||||
        "one": "是否删除应用?",
 | 
					        "one": "是否删除应用?",
 | 
				
			||||||
        "other": "是否删除应用?"
 | 
					        "other": "是否删除应用?"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "tooManyRequestsTryAgainInMinutes": {
 | 
					    "tooManyRequestsTryAgainInMinutes": {
 | 
				
			||||||
        "one": "API 请求过于频繁(速率限制)- 请在 {} 分钟后重试",
 | 
					        "one": "请求过于频繁(API 速率限制)- 请在 {} 分钟后重试",
 | 
				
			||||||
        "other": "API 请求过于频繁(速率限制)- 请在 {} 分钟后重试"
 | 
					        "other": "请求过于频繁(API 速率限制)- 请在 {} 分钟后重试"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "bgUpdateGotErrorRetryInMinutes": {
 | 
					    "bgUpdateGotErrorRetryInMinutes": {
 | 
				
			||||||
        "one": "后台更新检查遇到了“{}”问题,将于 {} 分钟后重试",
 | 
					        "one": "后台更新检查遇到了“{}”问题,将于 {} 分钟后重试",
 | 
				
			||||||
@@ -370,27 +372,27 @@
 | 
				
			|||||||
        "other": "{} 天"
 | 
					        "other": "{} 天"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "clearedNLogsBeforeXAfterY": {
 | 
					    "clearedNLogsBeforeXAfterY": {
 | 
				
			||||||
        "one": "清除了 {n} 个日志({before} 之前,{after} 之后)",
 | 
					        "one": "清除了 {n} 条日志(早于 {before},晚于 {after})",
 | 
				
			||||||
        "other": "清除了 {n} 个日志({before} 之前,{after} 之后)"
 | 
					        "other": "清除了 {n} 条日志(早于 {before},晚于 {after})"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "xAndNMoreUpdatesAvailable": {
 | 
					    "xAndNMoreUpdatesAvailable": {
 | 
				
			||||||
        "one": "“{}”和另外 1 个应用可以更新了。",
 | 
					        "one": "“{}”和另外 1 个应用可以更新了。",
 | 
				
			||||||
        "other": "“{}”和另外 {} 个应用可以更新了。"
 | 
					        "other": "“{}”和另外 {} 个应用可以更新了。"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "xAndNMoreUpdatesInstalled": {
 | 
					    "xAndNMoreUpdatesInstalled": {
 | 
				
			||||||
        "one": "{} 和另外 1 个应用已更新。",
 | 
					        "one": "“{}”和另外 1 个应用已更新。",
 | 
				
			||||||
        "other": "“{}”和另外 {} 个应用已更新。"
 | 
					        "other": "“{}”和另外 {} 个应用已更新。"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "xAndNMoreUpdatesFailed": {
 | 
					    "xAndNMoreUpdatesFailed": {
 | 
				
			||||||
        "one": "{} 和另外 1 个应用更新失败。",
 | 
					        "one": "“{}”和另外 1 个应用更新失败。",
 | 
				
			||||||
        "other": "{} 和另外 {} 个应用更新失败。"
 | 
					        "other": "“{}”和另外 {} 个应用更新失败。"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "xAndNMoreUpdatesPossiblyInstalled": {
 | 
					    "xAndNMoreUpdatesPossiblyInstalled": {
 | 
				
			||||||
        "one": "{} 和另外 1 个应用已尝试更新。",
 | 
					        "one": "已尝试更新“{}”和另外 1 个应用。",
 | 
				
			||||||
        "other": "“{}”和另外 {} 个应用已尝试更新。"
 | 
					        "other": "已尝试更新“{}”和另外 {} 个应用。"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "apk": {
 | 
					    "apk": {
 | 
				
			||||||
        "one": "{}APK",
 | 
					        "one": "{} 个 APK 文件",
 | 
				
			||||||
        "other": "{}APK"
 | 
					        "other": "{} 个 APK 文件"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,7 @@ import 'package:obtainium/custom_errors.dart';
 | 
				
			|||||||
import 'package:obtainium/providers/source_provider.dart';
 | 
					import 'package:obtainium/providers/source_provider.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Codeberg extends AppSource {
 | 
					class Codeberg extends AppSource {
 | 
				
			||||||
  GitHub gh = GitHub();
 | 
					  GitHub gh = GitHub(hostChanged: true);
 | 
				
			||||||
  Codeberg() {
 | 
					  Codeberg() {
 | 
				
			||||||
    name = 'Forgejo (Codeberg)';
 | 
					    name = 'Forgejo (Codeberg)';
 | 
				
			||||||
    hosts = ['codeberg.org'];
 | 
					    hosts = ['codeberg.org'];
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										76
									
								
								lib/app_sources/farsroid.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								lib/app_sources/farsroid.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,76 @@
 | 
				
			|||||||
 | 
					import 'dart:convert';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import 'package:html/parser.dart';
 | 
				
			||||||
 | 
					import 'package:obtainium/app_sources/html.dart';
 | 
				
			||||||
 | 
					import 'package:obtainium/custom_errors.dart';
 | 
				
			||||||
 | 
					import 'package:obtainium/providers/source_provider.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Farsroid extends AppSource {
 | 
				
			||||||
 | 
					  Farsroid() {
 | 
				
			||||||
 | 
					    hosts = ['farsroid.com'];
 | 
				
			||||||
 | 
					    name = 'Farsroid';
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  String sourceSpecificStandardizeURL(String url, {bool forSelection = false}) {
 | 
				
			||||||
 | 
					    RegExp standardUrlRegEx = RegExp(
 | 
				
			||||||
 | 
					      '^https?://([^\\.]+\\.)${getSourceRegex(hosts)}/[^/]+',
 | 
				
			||||||
 | 
					      caseSensitive: false,
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					    RegExpMatch? match = standardUrlRegEx.firstMatch(url);
 | 
				
			||||||
 | 
					    if (match == null) {
 | 
				
			||||||
 | 
					      throw InvalidURLError(name);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return match.group(0)!;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  Future<APKDetails> getLatestAPKDetails(
 | 
				
			||||||
 | 
					    String standardUrl,
 | 
				
			||||||
 | 
					    Map<String, dynamic> additionalSettings,
 | 
				
			||||||
 | 
					  ) async {
 | 
				
			||||||
 | 
					    String appName = Uri.parse(standardUrl).pathSegments.last;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    var res = await sourceRequest(standardUrl, additionalSettings);
 | 
				
			||||||
 | 
					    if (res.statusCode != 200) {
 | 
				
			||||||
 | 
					      throw getObtainiumHttpError(res);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    var html = parse(res.body);
 | 
				
			||||||
 | 
					    var dlinks = html.querySelectorAll('.download-links');
 | 
				
			||||||
 | 
					    if (dlinks.isEmpty) {
 | 
				
			||||||
 | 
					      throw NoReleasesError();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    var postId = dlinks.first.attributes['data-post-id'] ?? '';
 | 
				
			||||||
 | 
					    var version = dlinks.first.attributes['data-post-version'] ?? '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (postId.isEmpty || version.isEmpty) {
 | 
				
			||||||
 | 
					      throw NoVersionError();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    var res2 = await sourceRequest(
 | 
				
			||||||
 | 
					      Uri.encodeFull(
 | 
				
			||||||
 | 
					        'https://${hosts[0]}/api/download-box/?post_id=$postId&post_version=$version',
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      additionalSettings,
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					    var html2 = jsonDecode(res2.body)?['data']?['content'] as String? ?? '';
 | 
				
			||||||
 | 
					    if (html2.isEmpty) {
 | 
				
			||||||
 | 
					      throw NoAPKError();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    var apkLinks =
 | 
				
			||||||
 | 
					        (await grabLinksCommon(html2, res2.request!.url, additionalSettings))
 | 
				
			||||||
 | 
					            .map((l) => MapEntry(Uri.parse(l.key).pathSegments.last, l.key))
 | 
				
			||||||
 | 
					            .where(
 | 
				
			||||||
 | 
					              (l) => l.key.toLowerCase().startsWith(
 | 
				
			||||||
 | 
					                '$appName-$version'.toLowerCase(),
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					            .toList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (apkLinks.isEmpty) {
 | 
				
			||||||
 | 
					      throw NoAPKError();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return APKDetails(version, apkLinks, AppNames(name, appName));
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -112,13 +112,17 @@ class FDroid extends AppSource {
 | 
				
			|||||||
          bool isGitHub = false;
 | 
					          bool isGitHub = false;
 | 
				
			||||||
          bool isGitLab = false;
 | 
					          bool isGitLab = false;
 | 
				
			||||||
          try {
 | 
					          try {
 | 
				
			||||||
            GitHub().sourceSpecificStandardizeURL(details.changeLog!);
 | 
					            GitHub(
 | 
				
			||||||
 | 
					              hostChanged: true,
 | 
				
			||||||
 | 
					            ).sourceSpecificStandardizeURL(details.changeLog!);
 | 
				
			||||||
            isGitHub = true;
 | 
					            isGitHub = true;
 | 
				
			||||||
          } catch (e) {
 | 
					          } catch (e) {
 | 
				
			||||||
            //
 | 
					            //
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
          try {
 | 
					          try {
 | 
				
			||||||
            GitLab().sourceSpecificStandardizeURL(details.changeLog!);
 | 
					            GitLab(
 | 
				
			||||||
 | 
					              hostChanged: true,
 | 
				
			||||||
 | 
					            ).sourceSpecificStandardizeURL(details.changeLog!);
 | 
				
			||||||
            isGitLab = true;
 | 
					            isGitLab = true;
 | 
				
			||||||
          } catch (e) {
 | 
					          } catch (e) {
 | 
				
			||||||
            //
 | 
					            //
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,10 +13,11 @@ import 'package:obtainium/providers/source_provider.dart';
 | 
				
			|||||||
import 'package:url_launcher/url_launcher_string.dart';
 | 
					import 'package:url_launcher/url_launcher_string.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class GitHub extends AppSource {
 | 
					class GitHub extends AppSource {
 | 
				
			||||||
  GitHub() {
 | 
					  GitHub({hostChanged = false}) {
 | 
				
			||||||
    hosts = ['github.com'];
 | 
					    hosts = ['github.com'];
 | 
				
			||||||
    appIdInferIsOptional = true;
 | 
					    appIdInferIsOptional = true;
 | 
				
			||||||
    showReleaseDateAsVersionToggle = true;
 | 
					    showReleaseDateAsVersionToggle = true;
 | 
				
			||||||
 | 
					    this.hostChanged = hostChanged;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    sourceConfigSettingFormItems = [
 | 
					    sourceConfigSettingFormItems = [
 | 
				
			||||||
      GeneratedFormTextField(
 | 
					      GeneratedFormTextField(
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,10 +12,11 @@ import 'package:easy_localization/easy_localization.dart';
 | 
				
			|||||||
import 'package:url_launcher/url_launcher_string.dart';
 | 
					import 'package:url_launcher/url_launcher_string.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class GitLab extends AppSource {
 | 
					class GitLab extends AppSource {
 | 
				
			||||||
  GitLab() {
 | 
					  GitLab({bool hostChanged = false}) {
 | 
				
			||||||
    hosts = ['gitlab.com'];
 | 
					    hosts = ['gitlab.com'];
 | 
				
			||||||
    canSearch = true;
 | 
					    canSearch = true;
 | 
				
			||||||
    showReleaseDateAsVersionToggle = true;
 | 
					    showReleaseDateAsVersionToggle = true;
 | 
				
			||||||
 | 
					    this.hostChanged = hostChanged;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    sourceConfigSettingFormItems = [
 | 
					    sourceConfigSettingFormItems = [
 | 
				
			||||||
      GeneratedFormTextField(
 | 
					      GeneratedFormTextField(
 | 
				
			||||||
@@ -144,7 +145,7 @@ class GitLab extends AppSource {
 | 
				
			|||||||
    Map<String, dynamic> additionalSettings,
 | 
					    Map<String, dynamic> additionalSettings,
 | 
				
			||||||
  ) async {
 | 
					  ) async {
 | 
				
			||||||
    // Prepare request params
 | 
					    // Prepare request params
 | 
				
			||||||
    var names = GitHub().getAppNames(standardUrl);
 | 
					    var names = GitHub(hostChanged: true).getAppNames(standardUrl);
 | 
				
			||||||
    String projectUriComponent =
 | 
					    String projectUriComponent =
 | 
				
			||||||
        '${Uri.encodeComponent(names.author)}%2F${Uri.encodeComponent(names.name)}';
 | 
					        '${Uri.encodeComponent(names.author)}%2F${Uri.encodeComponent(names.name)}';
 | 
				
			||||||
    String? PAT = await getPATIfAny(hostChanged ? additionalSettings : {});
 | 
					    String? PAT = await getPATIfAny(hostChanged ? additionalSettings : {});
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -113,14 +113,23 @@ List<MapEntry<String, String>> getLinksInLines(String lines) =>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Given an HTTP response, grab some links according to the common additional settings
 | 
					// Given an HTTP response, grab some links according to the common additional settings
 | 
				
			||||||
// (those that apply to intermediate and final steps)
 | 
					// (those that apply to intermediate and final steps)
 | 
				
			||||||
Future<List<MapEntry<String, String>>> grabLinksCommon(
 | 
					Future<List<MapEntry<String, String>>> grabLinksCommonFromRes(
 | 
				
			||||||
  Response res,
 | 
					  Response res,
 | 
				
			||||||
  Map<String, dynamic> additionalSettings,
 | 
					  Map<String, dynamic> additionalSettings,
 | 
				
			||||||
) async {
 | 
					) async {
 | 
				
			||||||
  if (res.statusCode != 200) {
 | 
					  if (res.statusCode != 200) {
 | 
				
			||||||
    throw getObtainiumHttpError(res);
 | 
					    throw getObtainiumHttpError(res);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  var html = parse(res.body);
 | 
					  return grabLinksCommon(res.body, res.request!.url, additionalSettings);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Note keys are URLs, values are filenames (opposite to the AppSource apkUrls)
 | 
				
			||||||
 | 
					Future<List<MapEntry<String, String>>> grabLinksCommon(
 | 
				
			||||||
 | 
					  String rawBody,
 | 
				
			||||||
 | 
					  Uri reqUrl,
 | 
				
			||||||
 | 
					  Map<String, dynamic> additionalSettings,
 | 
				
			||||||
 | 
					) async {
 | 
				
			||||||
 | 
					  var html = parse(rawBody);
 | 
				
			||||||
  List<MapEntry<String, String>> allLinks = html
 | 
					  List<MapEntry<String, String>> allLinks = html
 | 
				
			||||||
      .querySelectorAll('a')
 | 
					      .querySelectorAll('a')
 | 
				
			||||||
      .map(
 | 
					      .map(
 | 
				
			||||||
@@ -132,21 +141,21 @@ Future<List<MapEntry<String, String>>> grabLinksCommon(
 | 
				
			|||||||
        ),
 | 
					        ),
 | 
				
			||||||
      )
 | 
					      )
 | 
				
			||||||
      .where((element) => element.key.isNotEmpty)
 | 
					      .where((element) => element.key.isNotEmpty)
 | 
				
			||||||
      .map((e) => MapEntry(ensureAbsoluteUrl(e.key, res.request!.url), e.value))
 | 
					      .map((e) => MapEntry(ensureAbsoluteUrl(e.key, reqUrl), e.value))
 | 
				
			||||||
      .toList();
 | 
					      .toList();
 | 
				
			||||||
  if (allLinks.isEmpty) {
 | 
					  if (allLinks.isEmpty) {
 | 
				
			||||||
    allLinks = getLinksInLines(res.body);
 | 
					    allLinks = getLinksInLines(rawBody);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  if (allLinks.isEmpty) {
 | 
					  if (allLinks.isEmpty) {
 | 
				
			||||||
    // Getting desperate
 | 
					    // Getting desperate
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      var jsonStrings = collectAllStringsFromJSONObject(jsonDecode(res.body));
 | 
					      var jsonStrings = collectAllStringsFromJSONObject(jsonDecode(rawBody));
 | 
				
			||||||
      allLinks = getLinksInLines(jsonStrings.join('\n'));
 | 
					      allLinks = getLinksInLines(jsonStrings.join('\n'));
 | 
				
			||||||
      if (allLinks.isEmpty) {
 | 
					      if (allLinks.isEmpty) {
 | 
				
			||||||
        allLinks = getLinksInLines(
 | 
					        allLinks = getLinksInLines(
 | 
				
			||||||
          jsonStrings
 | 
					          jsonStrings
 | 
				
			||||||
              .map((l) {
 | 
					              .map((l) {
 | 
				
			||||||
                return ensureAbsoluteUrl(l, res.request!.url);
 | 
					                return ensureAbsoluteUrl(l, reqUrl);
 | 
				
			||||||
              })
 | 
					              })
 | 
				
			||||||
              .join('\n'),
 | 
					              .join('\n'),
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
@@ -368,7 +377,7 @@ class HTML extends AppSource {
 | 
				
			|||||||
            .where((l) => l['customLinkFilterRegex'].isNotEmpty == true)
 | 
					            .where((l) => l['customLinkFilterRegex'].isNotEmpty == true)
 | 
				
			||||||
            .toList();
 | 
					            .toList();
 | 
				
			||||||
    for (int i = 0; i < (additionalSettings['intermediateLink'].length); i++) {
 | 
					    for (int i = 0; i < (additionalSettings['intermediateLink'].length); i++) {
 | 
				
			||||||
      var intLinks = await grabLinksCommon(
 | 
					      var intLinks = await grabLinksCommonFromRes(
 | 
				
			||||||
        await sourceRequest(currentUrl, additionalSettings),
 | 
					        await sourceRequest(currentUrl, additionalSettings),
 | 
				
			||||||
        additionalSettings['intermediateLink'][i],
 | 
					        additionalSettings['intermediateLink'][i],
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
@@ -392,7 +401,7 @@ class HTML extends AppSource {
 | 
				
			|||||||
          .join('\n')
 | 
					          .join('\n')
 | 
				
			||||||
          .split('\n')
 | 
					          .split('\n')
 | 
				
			||||||
          .join('\\n');
 | 
					          .join('\\n');
 | 
				
			||||||
      links = await grabLinksCommon(res, additionalSettings);
 | 
					      links = await grabLinksCommonFromRes(res, additionalSettings);
 | 
				
			||||||
      links = filterApks(
 | 
					      links = filterApks(
 | 
				
			||||||
        links,
 | 
					        links,
 | 
				
			||||||
        additionalSettings['apkFilterRegEx'],
 | 
					        additionalSettings['apkFilterRegEx'],
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -55,7 +55,7 @@ class Mullvad extends AppSource {
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
      String? changeLog;
 | 
					      String? changeLog;
 | 
				
			||||||
      try {
 | 
					      try {
 | 
				
			||||||
        changeLog = (await GitHub().getLatestAPKDetails(
 | 
					        changeLog = (await GitHub(hostChanged: true).getLatestAPKDetails(
 | 
				
			||||||
          'https://github.com/mullvad/mullvadvpn-app',
 | 
					          'https://github.com/mullvad/mullvadvpn-app',
 | 
				
			||||||
          {'fallbackToOlderReleases': true},
 | 
					          {'fallbackToOlderReleases': true},
 | 
				
			||||||
        )).changeLog;
 | 
					        )).changeLog;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -66,7 +66,7 @@ class RuStore extends AppSource {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    String appName = appDetails['appName'] ?? tr('app');
 | 
					    String appName = appDetails['appName'] ?? tr('app');
 | 
				
			||||||
    String author = appDetails['companyName'] ?? name;
 | 
					    String author = appDetails['companyName'] ?? name;
 | 
				
			||||||
    String? dateStr = appDetails['updatedAt'];
 | 
					    String? dateStr = appDetails['appVerUpdatedAt'];
 | 
				
			||||||
    String? version = appDetails['versionName'];
 | 
					    String? version = appDetails['versionName'];
 | 
				
			||||||
    String? changeLog = appDetails['whatsNew'];
 | 
					    String? changeLog = appDetails['whatsNew'];
 | 
				
			||||||
    if (version == null) {
 | 
					    if (version == null) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,6 +5,7 @@ import 'package:easy_localization/easy_localization.dart';
 | 
				
			|||||||
import 'package:flutter/material.dart';
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
import 'package:flutter/services.dart';
 | 
					import 'package:flutter/services.dart';
 | 
				
			||||||
import 'package:obtainium/providers/logs_provider.dart';
 | 
					import 'package:obtainium/providers/logs_provider.dart';
 | 
				
			||||||
 | 
					import 'package:obtainium/providers/source_provider.dart';
 | 
				
			||||||
import 'package:provider/provider.dart';
 | 
					import 'package:provider/provider.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ObtainiumError {
 | 
					class ObtainiumError {
 | 
				
			||||||
@@ -158,6 +159,7 @@ void showError(dynamic e, BuildContext context) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
String list2FriendlyString(List<String> list) {
 | 
					String list2FriendlyString(List<String> list) {
 | 
				
			||||||
 | 
					  var isUsingEnglish = isEnglish();
 | 
				
			||||||
  return list.length == 2
 | 
					  return list.length == 2
 | 
				
			||||||
      ? '${list[0]} ${tr('and')} ${list[1]}'
 | 
					      ? '${list[0]} ${tr('and')} ${list[1]}'
 | 
				
			||||||
      : list
 | 
					      : list
 | 
				
			||||||
@@ -169,7 +171,7 @@ String list2FriendlyString(List<String> list) {
 | 
				
			|||||||
                  (e.key == list.length - 1
 | 
					                  (e.key == list.length - 1
 | 
				
			||||||
                      ? ''
 | 
					                      ? ''
 | 
				
			||||||
                      : e.key == list.length - 2
 | 
					                      : e.key == list.length - 2
 | 
				
			||||||
                      ? ' and '
 | 
					                      ? '${isUsingEnglish ? ',' : ''} and '
 | 
				
			||||||
                      : ', '),
 | 
					                      : ', '),
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .join('');
 | 
					            .join('');
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -185,7 +185,6 @@ class _ObtainiumState extends State<Obtainium> {
 | 
				
			|||||||
    initPlatformState();
 | 
					    initPlatformState();
 | 
				
			||||||
    WidgetsBinding.instance.addPostFrameCallback((_) {
 | 
					    WidgetsBinding.instance.addPostFrameCallback((_) {
 | 
				
			||||||
      requestNonOptionalPermissions();
 | 
					      requestNonOptionalPermissions();
 | 
				
			||||||
      initForegroundService();
 | 
					 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -201,28 +200,32 @@ class _ObtainiumState extends State<Obtainium> {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void initForegroundService() {
 | 
					  void initForegroundService() {
 | 
				
			||||||
    FlutterForegroundTask.init(
 | 
					    // ignore: invalid_use_of_visible_for_testing_member
 | 
				
			||||||
      androidNotificationOptions: AndroidNotificationOptions(
 | 
					    if (!FlutterForegroundTask.isInitialized) {
 | 
				
			||||||
        channelId: 'bg_update',
 | 
					      FlutterForegroundTask.init(
 | 
				
			||||||
        channelName: tr('foregroundService'),
 | 
					        androidNotificationOptions: AndroidNotificationOptions(
 | 
				
			||||||
        channelDescription: tr('foregroundService'),
 | 
					          channelId: 'bg_update',
 | 
				
			||||||
        onlyAlertOnce: true,
 | 
					          channelName: tr('foregroundService'),
 | 
				
			||||||
      ),
 | 
					          channelDescription: tr('foregroundService'),
 | 
				
			||||||
      iosNotificationOptions: const IOSNotificationOptions(
 | 
					          onlyAlertOnce: true,
 | 
				
			||||||
        showNotification: false,
 | 
					        ),
 | 
				
			||||||
        playSound: false,
 | 
					        iosNotificationOptions: const IOSNotificationOptions(
 | 
				
			||||||
      ),
 | 
					          showNotification: false,
 | 
				
			||||||
      foregroundTaskOptions: ForegroundTaskOptions(
 | 
					          playSound: false,
 | 
				
			||||||
        eventAction: ForegroundTaskEventAction.repeat(900000),
 | 
					        ),
 | 
				
			||||||
        autoRunOnBoot: true,
 | 
					        foregroundTaskOptions: ForegroundTaskOptions(
 | 
				
			||||||
        autoRunOnMyPackageReplaced: true,
 | 
					          eventAction: ForegroundTaskEventAction.repeat(900000),
 | 
				
			||||||
        allowWakeLock: true,
 | 
					          autoRunOnBoot: true,
 | 
				
			||||||
        allowWifiLock: true,
 | 
					          autoRunOnMyPackageReplaced: true,
 | 
				
			||||||
      ),
 | 
					          allowWakeLock: true,
 | 
				
			||||||
    );
 | 
					          allowWifiLock: true,
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Future<ServiceRequestResult?> startForegroundService(bool restart) async {
 | 
					  Future<ServiceRequestResult?> startForegroundService(bool restart) async {
 | 
				
			||||||
 | 
					    initForegroundService();
 | 
				
			||||||
    if (await FlutterForegroundTask.isRunningService) {
 | 
					    if (await FlutterForegroundTask.isRunningService) {
 | 
				
			||||||
      if (restart) {
 | 
					      if (restart) {
 | 
				
			||||||
        return FlutterForegroundTask.restartService();
 | 
					        return FlutterForegroundTask.restartService();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -232,7 +232,10 @@ class _AppPageState extends State<AppPage> {
 | 
				
			|||||||
                        : const EdgeInsetsDirectional.fromSTEB(0, 6, 0, 6),
 | 
					                        : const EdgeInsetsDirectional.fromSTEB(0, 6, 0, 6),
 | 
				
			||||||
                    margin: const EdgeInsetsDirectional.fromSTEB(0, 6, 0, 0),
 | 
					                    margin: const EdgeInsetsDirectional.fromSTEB(0, 6, 0, 0),
 | 
				
			||||||
                    child: Text(
 | 
					                    child: Text(
 | 
				
			||||||
                      tr('downloadX', args: [tr('releaseAsset').toLowerCase()]),
 | 
					                      tr(
 | 
				
			||||||
 | 
					                        'downloadX',
 | 
				
			||||||
 | 
					                        args: [lowerCaseIfEnglish(tr('releaseAsset'))],
 | 
				
			||||||
 | 
					                      ),
 | 
				
			||||||
                      textAlign: TextAlign.center,
 | 
					                      textAlign: TextAlign.center,
 | 
				
			||||||
                      style: Theme.of(context).textTheme.labelSmall!.copyWith(
 | 
					                      style: Theme.of(context).textTheme.labelSmall!.copyWith(
 | 
				
			||||||
                        decoration: TextDecoration.underline,
 | 
					                        decoration: TextDecoration.underline,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1037,7 +1037,7 @@ class AppsPageState extends State<AppsPage> {
 | 
				
			|||||||
                            var exportJSON = encoder.convert(
 | 
					                            var exportJSON = encoder.convert(
 | 
				
			||||||
                              appsProvider.generateExportJSON(
 | 
					                              appsProvider.generateExportJSON(
 | 
				
			||||||
                                appIds: selectedApps.map((e) => e.id).toList(),
 | 
					                                appIds: selectedApps.map((e) => e.id).toList(),
 | 
				
			||||||
                                overrideExportSettings: false,
 | 
					                                overrideExportSettings: 0,
 | 
				
			||||||
                              ),
 | 
					                              ),
 | 
				
			||||||
                            );
 | 
					                            );
 | 
				
			||||||
                            String fn =
 | 
					                            String fn =
 | 
				
			||||||
@@ -1072,7 +1072,10 @@ class AppsPageState extends State<AppsPage> {
 | 
				
			|||||||
                      Navigator.of(context).pop();
 | 
					                      Navigator.of(context).pop();
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    child: Text(
 | 
					                    child: Text(
 | 
				
			||||||
                      tr('downloadX', args: [tr('releaseAsset').toLowerCase()]),
 | 
					                      tr(
 | 
				
			||||||
 | 
					                        'downloadX',
 | 
				
			||||||
 | 
					                        args: [lowerCaseIfEnglish(tr('releaseAsset'))],
 | 
				
			||||||
 | 
					                      ),
 | 
				
			||||||
                    ),
 | 
					                    ),
 | 
				
			||||||
                  ),
 | 
					                  ),
 | 
				
			||||||
                  const Divider(),
 | 
					                  const Divider(),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,6 @@ import 'package:obtainium/pages/import_export.dart';
 | 
				
			|||||||
import 'package:obtainium/pages/settings.dart';
 | 
					import 'package:obtainium/pages/settings.dart';
 | 
				
			||||||
import 'package:obtainium/providers/apps_provider.dart';
 | 
					import 'package:obtainium/providers/apps_provider.dart';
 | 
				
			||||||
import 'package:obtainium/providers/settings_provider.dart';
 | 
					import 'package:obtainium/providers/settings_provider.dart';
 | 
				
			||||||
import 'package:obtainium/providers/source_provider.dart';
 | 
					 | 
				
			||||||
import 'package:provider/provider.dart';
 | 
					import 'package:provider/provider.dart';
 | 
				
			||||||
import 'package:url_launcher/url_launcher_string.dart';
 | 
					import 'package:url_launcher/url_launcher_string.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -201,14 +200,6 @@ class _HomePageState extends State<HomePage> {
 | 
				
			|||||||
              ),
 | 
					              ),
 | 
				
			||||||
              context,
 | 
					              context,
 | 
				
			||||||
            );
 | 
					            );
 | 
				
			||||||
            await appsProvider
 | 
					 | 
				
			||||||
                .checkUpdates(specificIds: result.key.map((e) => e.id).toList())
 | 
					 | 
				
			||||||
                .catchError((e) {
 | 
					 | 
				
			||||||
                  if (e is Map && e['errors'] is MultiAppMultiError) {
 | 
					 | 
				
			||||||
                    showError(e['errors'].toString(), context);
 | 
					 | 
				
			||||||
                  }
 | 
					 | 
				
			||||||
                  return <App>[];
 | 
					 | 
				
			||||||
                });
 | 
					 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
          throw ObtainiumError(tr('unknown'));
 | 
					          throw ObtainiumError(tr('unknown'));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -396,9 +396,7 @@ class _ImportExportPageState extends State<ImportExportPage> {
 | 
				
			|||||||
                              Expanded(
 | 
					                              Expanded(
 | 
				
			||||||
                                child: TextButton(
 | 
					                                child: TextButton(
 | 
				
			||||||
                                  style: outlineButtonStyle,
 | 
					                                  style: outlineButtonStyle,
 | 
				
			||||||
                                  onPressed:
 | 
					                                  onPressed: importInProgress
 | 
				
			||||||
                                      appsProvider.apps.isEmpty ||
 | 
					 | 
				
			||||||
                                          importInProgress
 | 
					 | 
				
			||||||
                                      ? null
 | 
					                                      ? null
 | 
				
			||||||
                                      : () {
 | 
					                                      : () {
 | 
				
			||||||
                                          runObtainiumExport(pickOnly: true);
 | 
					                                          runObtainiumExport(pickOnly: true);
 | 
				
			||||||
@@ -414,9 +412,7 @@ class _ImportExportPageState extends State<ImportExportPage> {
 | 
				
			|||||||
                                child: TextButton(
 | 
					                                child: TextButton(
 | 
				
			||||||
                                  style: outlineButtonStyle,
 | 
					                                  style: outlineButtonStyle,
 | 
				
			||||||
                                  onPressed:
 | 
					                                  onPressed:
 | 
				
			||||||
                                      appsProvider.apps.isEmpty ||
 | 
					                                      importInProgress || snapshot.data == null
 | 
				
			||||||
                                          importInProgress ||
 | 
					 | 
				
			||||||
                                          snapshot.data == null
 | 
					 | 
				
			||||||
                                      ? null
 | 
					                                      ? null
 | 
				
			||||||
                                      : runObtainiumExport,
 | 
					                                      : runObtainiumExport,
 | 
				
			||||||
                                  child: Text(
 | 
					                                  child: Text(
 | 
				
			||||||
@@ -459,11 +455,17 @@ class _ImportExportPageState extends State<ImportExportPage> {
 | 
				
			|||||||
                                      ),
 | 
					                                      ),
 | 
				
			||||||
                                    ],
 | 
					                                    ],
 | 
				
			||||||
                                    [
 | 
					                                    [
 | 
				
			||||||
                                      GeneratedFormSwitch(
 | 
					                                      GeneratedFormDropdown(
 | 
				
			||||||
                                        'exportSettings',
 | 
					                                        'exportSettings',
 | 
				
			||||||
 | 
					                                        [
 | 
				
			||||||
 | 
					                                          MapEntry('0', tr('none')),
 | 
				
			||||||
 | 
					                                          MapEntry('1', tr('excludeSecrets')),
 | 
				
			||||||
 | 
					                                          MapEntry('2', tr('all')),
 | 
				
			||||||
 | 
					                                        ],
 | 
				
			||||||
                                        label: tr('includeSettings'),
 | 
					                                        label: tr('includeSettings'),
 | 
				
			||||||
                                        defaultValue:
 | 
					                                        defaultValue: settingsProvider
 | 
				
			||||||
                                            settingsProvider.exportSettings,
 | 
					                                            .exportSettings
 | 
				
			||||||
 | 
					                                            .toString(),
 | 
				
			||||||
                                      ),
 | 
					                                      ),
 | 
				
			||||||
                                    ],
 | 
					                                    ],
 | 
				
			||||||
                                  ],
 | 
					                                  ],
 | 
				
			||||||
@@ -477,7 +479,7 @@ class _ImportExportPageState extends State<ImportExportPage> {
 | 
				
			|||||||
                                      }
 | 
					                                      }
 | 
				
			||||||
                                      if (value['exportSettings'] != null) {
 | 
					                                      if (value['exportSettings'] != null) {
 | 
				
			||||||
                                        settingsProvider.exportSettings =
 | 
					                                        settingsProvider.exportSettings =
 | 
				
			||||||
                                            value['exportSettings'] == true;
 | 
					                                            int.parse(value['exportSettings']);
 | 
				
			||||||
                                      }
 | 
					                                      }
 | 
				
			||||||
                                    }
 | 
					                                    }
 | 
				
			||||||
                                  },
 | 
					                                  },
 | 
				
			||||||
@@ -499,7 +501,7 @@ class _ImportExportPageState extends State<ImportExportPage> {
 | 
				
			|||||||
                  else
 | 
					                  else
 | 
				
			||||||
                    Column(
 | 
					                    Column(
 | 
				
			||||||
                      children: [
 | 
					                      children: [
 | 
				
			||||||
                        const Divider(height: 32),
 | 
					                        SizedBox(height: 32),
 | 
				
			||||||
                        Row(
 | 
					                        Row(
 | 
				
			||||||
                          children: [
 | 
					                          children: [
 | 
				
			||||||
                            Expanded(
 | 
					                            Expanded(
 | 
				
			||||||
@@ -543,7 +545,7 @@ class _ImportExportPageState extends State<ImportExportPage> {
 | 
				
			|||||||
                                child: Text(
 | 
					                                child: Text(
 | 
				
			||||||
                                  tr(
 | 
					                                  tr(
 | 
				
			||||||
                                    'searchX',
 | 
					                                    'searchX',
 | 
				
			||||||
                                    args: [tr('source').toLowerCase()],
 | 
					                                    args: [lowerCaseIfEnglish(tr('source'))],
 | 
				
			||||||
                                  ),
 | 
					                                  ),
 | 
				
			||||||
                                ),
 | 
					                                ),
 | 
				
			||||||
                              ),
 | 
					                              ),
 | 
				
			||||||
@@ -710,6 +712,12 @@ class _SelectionModalState extends State<SelectionModal> {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void selectAll({bool deselect = false}) {
 | 
				
			||||||
 | 
					    for (var e in entrySelections.keys) {
 | 
				
			||||||
 | 
					      entrySelections[e] = !deselect;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @override
 | 
					  @override
 | 
				
			||||||
  Widget build(BuildContext context) {
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
    Map<MapEntry<String, List<String>>, bool> filteredEntrySelections = {};
 | 
					    Map<MapEntry<String, List<String>>, bool> filteredEntrySelections = {};
 | 
				
			||||||
@@ -731,6 +739,32 @@ class _SelectionModalState extends State<SelectionModal> {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
      });
 | 
					      });
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    getSelectAllButton() {
 | 
				
			||||||
 | 
					      if (widget.onlyOneSelectionAllowed) {
 | 
				
			||||||
 | 
					        return SizedBox.shrink();
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      var noneSelected = entrySelections.values.where((v) => v == true).isEmpty;
 | 
				
			||||||
 | 
					      return noneSelected
 | 
				
			||||||
 | 
					          ? TextButton(
 | 
				
			||||||
 | 
					              style: const ButtonStyle(visualDensity: VisualDensity.compact),
 | 
				
			||||||
 | 
					              onPressed: () {
 | 
				
			||||||
 | 
					                setState(() {
 | 
				
			||||||
 | 
					                  selectAll();
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					              child: Text(tr('selectAll')),
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					          : TextButton(
 | 
				
			||||||
 | 
					              style: const ButtonStyle(visualDensity: VisualDensity.compact),
 | 
				
			||||||
 | 
					              onPressed: () {
 | 
				
			||||||
 | 
					                setState(() {
 | 
				
			||||||
 | 
					                  selectAll(deselect: true);
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					              child: Text(tr('deselectX', args: [''])),
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return AlertDialog(
 | 
					    return AlertDialog(
 | 
				
			||||||
      scrollable: true,
 | 
					      scrollable: true,
 | 
				
			||||||
      title: Text(widget.title ?? tr('pick')),
 | 
					      title: Text(widget.title ?? tr('pick')),
 | 
				
			||||||
@@ -900,6 +934,7 @@ class _SelectionModalState extends State<SelectionModal> {
 | 
				
			|||||||
        ],
 | 
					        ],
 | 
				
			||||||
      ),
 | 
					      ),
 | 
				
			||||||
      actions: [
 | 
					      actions: [
 | 
				
			||||||
 | 
					        getSelectAllButton(),
 | 
				
			||||||
        TextButton(
 | 
					        TextButton(
 | 
				
			||||||
          onPressed: () {
 | 
					          onPressed: () {
 | 
				
			||||||
            Navigator.of(context).pop();
 | 
					            Navigator.of(context).pop();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1025,13 +1025,19 @@ class AppsProvider with ChangeNotifier {
 | 
				
			|||||||
      );
 | 
					      );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    getHost(String url) {
 | 
					    getHost(String url) {
 | 
				
			||||||
 | 
					      if (url == 'placeholder') {
 | 
				
			||||||
 | 
					        return null;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
      var temp = Uri.parse(url).host.split('.');
 | 
					      var temp = Uri.parse(url).host.split('.');
 | 
				
			||||||
      return temp.sublist(temp.length - 2).join('.');
 | 
					      return temp.sublist(temp.length - 2).join('.');
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // If the picked APK comes from an origin different from the source, get user confirmation (if context provided)
 | 
					    // If the picked APK comes from an origin different from the source, get user confirmation (if context provided)
 | 
				
			||||||
    if (appFileUrl != null &&
 | 
					    if (appFileUrl != null &&
 | 
				
			||||||
        getHost(appFileUrl.value) != getHost(app.url) &&
 | 
					        ![
 | 
				
			||||||
 | 
					          getHost(app.url),
 | 
				
			||||||
 | 
					          'placeholder',
 | 
				
			||||||
 | 
					        ].contains(getHost(appFileUrl.value)) &&
 | 
				
			||||||
        context != null) {
 | 
					        context != null) {
 | 
				
			||||||
      if (!(settingsProvider.hideAPKOriginWarning) &&
 | 
					      if (!(settingsProvider.hideAPKOriginWarning) &&
 | 
				
			||||||
          await showDialog(
 | 
					          await showDialog(
 | 
				
			||||||
@@ -1077,7 +1083,8 @@ class AppsProvider with ChangeNotifier {
 | 
				
			|||||||
      MapEntry<String, String>? apkUrl;
 | 
					      MapEntry<String, String>? apkUrl;
 | 
				
			||||||
      var trackOnly = apps[id]!.app.additionalSettings['trackOnly'] == true;
 | 
					      var trackOnly = apps[id]!.app.additionalSettings['trackOnly'] == true;
 | 
				
			||||||
      var refreshBeforeDownload =
 | 
					      var refreshBeforeDownload =
 | 
				
			||||||
          apps[id]!.app.additionalSettings['refreshBeforeDownload'] == true;
 | 
					          apps[id]!.app.additionalSettings['refreshBeforeDownload'] == true ||
 | 
				
			||||||
 | 
					          apps[id]!.app.apkUrls.first.value == 'placeholder';
 | 
				
			||||||
      if (refreshBeforeDownload) {
 | 
					      if (refreshBeforeDownload) {
 | 
				
			||||||
        await checkUpdate(apps[id]!.app.id);
 | 
					        await checkUpdate(apps[id]!.app.id);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@@ -1121,6 +1128,7 @@ class AppsProvider with ChangeNotifier {
 | 
				
			|||||||
      obtainiumId,
 | 
					      obtainiumId,
 | 
				
			||||||
      strB: obtainiumTempId,
 | 
					      strB: obtainiumTempId,
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					    appsToInstall = moveStrToEnd(appsToInstall, '$obtainiumId.fdroid');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Future<void> installFn(
 | 
					    Future<void> installFn(
 | 
				
			||||||
      String id,
 | 
					      String id,
 | 
				
			||||||
@@ -1300,7 +1308,8 @@ class AppsProvider with ChangeNotifier {
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
      MapEntry<String, String>? fileUrl;
 | 
					      MapEntry<String, String>? fileUrl;
 | 
				
			||||||
      var refreshBeforeDownload =
 | 
					      var refreshBeforeDownload =
 | 
				
			||||||
          apps[id]!.app.additionalSettings['refreshBeforeDownload'] == true;
 | 
					          apps[id]!.app.additionalSettings['refreshBeforeDownload'] == true ||
 | 
				
			||||||
 | 
					          apps[id]!.app.apkUrls.first.value == 'placeholder';
 | 
				
			||||||
      if (refreshBeforeDownload) {
 | 
					      if (refreshBeforeDownload) {
 | 
				
			||||||
        await checkUpdate(apps[id]!.app.id);
 | 
					        await checkUpdate(apps[id]!.app.id);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@@ -1964,7 +1973,7 @@ class AppsProvider with ChangeNotifier {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  Map<String, dynamic> generateExportJSON({
 | 
					  Map<String, dynamic> generateExportJSON({
 | 
				
			||||||
    List<String>? appIds,
 | 
					    List<String>? appIds,
 | 
				
			||||||
    bool? overrideExportSettings,
 | 
					    int? overrideExportSettings,
 | 
				
			||||||
  }) {
 | 
					  }) {
 | 
				
			||||||
    Map<String, dynamic> finalExport = {};
 | 
					    Map<String, dynamic> finalExport = {};
 | 
				
			||||||
    finalExport['apps'] = apps.values
 | 
					    finalExport['apps'] = apps.values
 | 
				
			||||||
@@ -1977,15 +1986,18 @@ class AppsProvider with ChangeNotifier {
 | 
				
			|||||||
        })
 | 
					        })
 | 
				
			||||||
        .map((e) => e.app.toJson())
 | 
					        .map((e) => e.app.toJson())
 | 
				
			||||||
        .toList();
 | 
					        .toList();
 | 
				
			||||||
    bool shouldExportSettings = settingsProvider.exportSettings;
 | 
					    int shouldExportSettings = settingsProvider.exportSettings;
 | 
				
			||||||
    if (overrideExportSettings != null) {
 | 
					    if (overrideExportSettings != null) {
 | 
				
			||||||
      shouldExportSettings = overrideExportSettings;
 | 
					      shouldExportSettings = overrideExportSettings;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (shouldExportSettings) {
 | 
					    if (shouldExportSettings > 0) {
 | 
				
			||||||
 | 
					      var settingsValueKeys = settingsProvider.prefs?.getKeys();
 | 
				
			||||||
 | 
					      if (shouldExportSettings < 2) {
 | 
				
			||||||
 | 
					        settingsValueKeys?.removeWhere((k) => k.endsWith('-creds'));
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
      finalExport['settings'] = Map<String, Object?>.fromEntries(
 | 
					      finalExport['settings'] = Map<String, Object?>.fromEntries(
 | 
				
			||||||
        (settingsProvider.prefs
 | 
					        (settingsValueKeys
 | 
				
			||||||
                ?.getKeys()
 | 
					                ?.map((key) => MapEntry(key, settingsProvider.prefs?.get(key)))
 | 
				
			||||||
                .map((key) => MapEntry(key, settingsProvider.prefs?.get(key)))
 | 
					 | 
				
			||||||
                .toList()) ??
 | 
					                .toList()) ??
 | 
				
			||||||
            [],
 | 
					            [],
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
@@ -2152,7 +2164,7 @@ class _AppFilePickerState extends State<AppFilePicker> {
 | 
				
			|||||||
      scrollable: true,
 | 
					      scrollable: true,
 | 
				
			||||||
      title: Text(
 | 
					      title: Text(
 | 
				
			||||||
        widget.pickAnyAsset
 | 
					        widget.pickAnyAsset
 | 
				
			||||||
            ? tr('selectX', args: [tr('releaseAsset').toLowerCase()])
 | 
					            ? tr('selectX', args: [lowerCaseIfEnglish(tr('releaseAsset'))])
 | 
				
			||||||
            : tr('pickAnAPK'),
 | 
					            : tr('pickAnAPK'),
 | 
				
			||||||
      ),
 | 
					      ),
 | 
				
			||||||
      content: Column(
 | 
					      content: Column(
 | 
				
			||||||
@@ -2511,7 +2523,10 @@ Future<void> bgUpdateCheck(String taskId, Map<String, dynamic>? params) async {
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (toInstall.isNotEmpty) {
 | 
					    if (toInstall.isNotEmpty) {
 | 
				
			||||||
      var tempObtArr = toInstall.where((element) => element.key == obtainiumId);
 | 
					      var tempObtArr = toInstall.where(
 | 
				
			||||||
 | 
					        (element) =>
 | 
				
			||||||
 | 
					            element.key == obtainiumId || element.key == '$obtainiumId.fdroid',
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
      if (tempObtArr.isNotEmpty) {
 | 
					      if (tempObtArr.isNotEmpty) {
 | 
				
			||||||
        // Move obtainium to the end of the list as it must always install last
 | 
					        // Move obtainium to the end of the list as it must always install last
 | 
				
			||||||
        var obt = tempObtArr.first;
 | 
					        var obt = tempObtArr.first;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -453,12 +453,19 @@ class SettingsProvider with ChangeNotifier {
 | 
				
			|||||||
    notifyListeners();
 | 
					    notifyListeners();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  bool get exportSettings {
 | 
					  int get exportSettings {
 | 
				
			||||||
    return prefs?.getBool('exportSettings') ?? false;
 | 
					    try {
 | 
				
			||||||
 | 
					      return prefs?.getInt('exportSettings') ??
 | 
				
			||||||
 | 
					          1; // 0 for no, 1 for yes but no secrets, 2 for everything
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      var val = prefs?.getBool('exportSettings') == true ? 1 : 0;
 | 
				
			||||||
 | 
					      prefs?.setInt('exportSettings', val);
 | 
				
			||||||
 | 
					      return val;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  set exportSettings(bool val) {
 | 
					  set exportSettings(int val) {
 | 
				
			||||||
    prefs?.setBool('exportSettings', val);
 | 
					    prefs?.setInt('exportSettings', val > 2 || val < 0 ? 1 : val);
 | 
				
			||||||
    notifyListeners();
 | 
					    notifyListeners();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,6 +16,7 @@ import 'package:obtainium/app_sources/aptoide.dart';
 | 
				
			|||||||
import 'package:obtainium/app_sources/codeberg.dart';
 | 
					import 'package:obtainium/app_sources/codeberg.dart';
 | 
				
			||||||
import 'package:obtainium/app_sources/coolapk.dart';
 | 
					import 'package:obtainium/app_sources/coolapk.dart';
 | 
				
			||||||
import 'package:obtainium/app_sources/directAPKLink.dart';
 | 
					import 'package:obtainium/app_sources/directAPKLink.dart';
 | 
				
			||||||
 | 
					import 'package:obtainium/app_sources/farsroid.dart';
 | 
				
			||||||
import 'package:obtainium/app_sources/fdroid.dart';
 | 
					import 'package:obtainium/app_sources/fdroid.dart';
 | 
				
			||||||
import 'package:obtainium/app_sources/fdroidrepo.dart';
 | 
					import 'package:obtainium/app_sources/fdroidrepo.dart';
 | 
				
			||||||
import 'package:obtainium/app_sources/github.dart';
 | 
					import 'package:obtainium/app_sources/github.dart';
 | 
				
			||||||
@@ -63,11 +64,13 @@ class APKDetails {
 | 
				
			|||||||
  });
 | 
					  });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
List<List<String>> stringMapListTo2DList(List<MapEntry<String, String>> mapList) =>
 | 
					List<List<String>> stringMapListTo2DList(
 | 
				
			||||||
    mapList.map((e) => [e.key, e.value]).toList();
 | 
					  List<MapEntry<String, String>> mapList,
 | 
				
			||||||
 | 
					) => mapList.map((e) => [e.key, e.value]).toList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
List<MapEntry<String, String>> assumed2DlistToStringMapList(List<dynamic> arr) =>
 | 
					List<MapEntry<String, String>> assumed2DlistToStringMapList(
 | 
				
			||||||
    arr.map((e) => MapEntry(e[0] as String, e[1] as String)).toList();
 | 
					  List<dynamic> arr,
 | 
				
			||||||
 | 
					) => arr.map((e) => MapEntry(e[0] as String, e[1] as String)).toList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// App JSON schema has changed multiple times over the many versions of Obtainium
 | 
					// App JSON schema has changed multiple times over the many versions of Obtainium
 | 
				
			||||||
// This function takes an App JSON and modifies it if needed to conform to the latest (current) version
 | 
					// This function takes an App JSON and modifies it if needed to conform to the latest (current) version
 | 
				
			||||||
@@ -1049,6 +1052,9 @@ List<MapEntry<String, String>> filterApks(
 | 
				
			|||||||
  return apkUrls;
 | 
					  return apkUrls;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool isEnglish() => tr('and') == 'and'; // Quick hack, find a better way
 | 
				
			||||||
 | 
					String lowerCaseIfEnglish(String str) => isEnglish() ? str.toLowerCase() : str;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool isVersionPseudo(App app) =>
 | 
					bool isVersionPseudo(App app) =>
 | 
				
			||||||
    app.additionalSettings['trackOnly'] == true ||
 | 
					    app.additionalSettings['trackOnly'] == true ||
 | 
				
			||||||
    (app.installedVersion != null &&
 | 
					    (app.installedVersion != null &&
 | 
				
			||||||
@@ -1074,6 +1080,7 @@ class SourceProvider {
 | 
				
			|||||||
    Jenkins(),
 | 
					    Jenkins(),
 | 
				
			||||||
    APKMirror(),
 | 
					    APKMirror(),
 | 
				
			||||||
    RuStore(),
 | 
					    RuStore(),
 | 
				
			||||||
 | 
					    Farsroid(),
 | 
				
			||||||
    TelegramApp(),
 | 
					    TelegramApp(),
 | 
				
			||||||
    NeutronCode(),
 | 
					    NeutronCode(),
 | 
				
			||||||
    DirectAPKLink(),
 | 
					    DirectAPKLink(),
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										44
									
								
								pubspec.lock
									
									
									
									
									
								
							
							
						
						
									
										44
									
								
								pubspec.lock
									
									
									
									
									
								
							@@ -96,10 +96,10 @@ packages:
 | 
				
			|||||||
    dependency: "direct main"
 | 
					    dependency: "direct main"
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: background_fetch
 | 
					      name: background_fetch
 | 
				
			||||||
      sha256: "442e82f508708be89fd0cc7e1dc3b27bc7c6c8c39a47967ccb7ed1c57b9108b5"
 | 
					      sha256: e767745c31f71660063985c982497995d0a71755d3f1b0c8e8c96988d64d3003
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "1.3.8"
 | 
					    version: "1.4.0"
 | 
				
			||||||
  battery_plus:
 | 
					  battery_plus:
 | 
				
			||||||
    dependency: "direct main"
 | 
					    dependency: "direct main"
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -240,10 +240,10 @@ packages:
 | 
				
			|||||||
    dependency: "direct main"
 | 
					    dependency: "direct main"
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: easy_localization
 | 
					      name: easy_localization
 | 
				
			||||||
      sha256: "0f5239c7b8ab06c66440cfb0e9aa4b4640429c6668d5a42fe389c5de42220b12"
 | 
					      sha256: "2ccdf9db8fe4d9c5a75c122e6275674508fd0f0d49c827354967b8afcc56bbed"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "3.0.7+1"
 | 
					    version: "3.0.8"
 | 
				
			||||||
  easy_logger:
 | 
					  easy_logger:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -288,10 +288,10 @@ packages:
 | 
				
			|||||||
    dependency: "direct main"
 | 
					    dependency: "direct main"
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: file_picker
 | 
					      name: file_picker
 | 
				
			||||||
      sha256: ef9908739bdd9c476353d6adff72e88fd00c625f5b959ae23f7567bd5137db0a
 | 
					      sha256: "13ba4e627ef24503a465d1d61b32596ce10eb6b8903678d362a528f9939b4aa8"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "10.2.0"
 | 
					    version: "10.2.1"
 | 
				
			||||||
  fixnum:
 | 
					  fixnum:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -341,18 +341,18 @@ packages:
 | 
				
			|||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: flutter_charset_detector_android
 | 
					      name: flutter_charset_detector_android
 | 
				
			||||||
      sha256: "443145e8fc8515b3b32aee375691e40dd59197a86a2ae153166bc88c8200d83b"
 | 
					      sha256: "617345b0f78ad56c2633ea6132e57c2e374f6970792afbe9743237f683eeae8e"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "3.0.0"
 | 
					    version: "3.1.1"
 | 
				
			||||||
  flutter_charset_detector_darwin:
 | 
					  flutter_charset_detector_darwin:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: flutter_charset_detector_darwin
 | 
					      name: flutter_charset_detector_darwin
 | 
				
			||||||
      sha256: daac20390275efb92fbb14350fe11286c5e29c7b80d6b0867f52d760f0d69763
 | 
					      sha256: "8cf51c3e16c2fb4ec4e309f16f6046a0ddf1ff57d1b6b696410d077a9ffbfb15"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "1.1.0"
 | 
					    version: "1.2.1"
 | 
				
			||||||
  flutter_charset_detector_platform_interface:
 | 
					  flutter_charset_detector_platform_interface:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -716,10 +716,10 @@ packages:
 | 
				
			|||||||
    dependency: "direct main"
 | 
					    dependency: "direct main"
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: permission_handler
 | 
					      name: permission_handler
 | 
				
			||||||
      sha256: "2d070d8684b68efb580a5997eb62f675e8a885ef0be6e754fb9ef489c177470f"
 | 
					      sha256: bc917da36261b00137bbc8896bf1482169cd76f866282368948f032c8c1caae1
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "12.0.0+1"
 | 
					    version: "12.0.1"
 | 
				
			||||||
  permission_handler_android:
 | 
					  permission_handler_android:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -955,10 +955,10 @@ packages:
 | 
				
			|||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: sqflite_common
 | 
					      name: sqflite_common
 | 
				
			||||||
      sha256: "84731e8bfd8303a3389903e01fb2141b6e59b5973cacbb0929021df08dddbe8b"
 | 
					      sha256: "6ef422a4525ecc601db6c0a2233ff448c731307906e92cabc9ba292afaae16a6"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "2.5.5"
 | 
					    version: "2.5.6"
 | 
				
			||||||
  sqflite_darwin:
 | 
					  sqflite_darwin:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -1051,10 +1051,10 @@ packages:
 | 
				
			|||||||
    dependency: "direct main"
 | 
					    dependency: "direct main"
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: url_launcher
 | 
					      name: url_launcher
 | 
				
			||||||
      sha256: "9d06212b1362abc2f0f0d78e6f09f726608c74e3b9462e8368bb03314aa8d603"
 | 
					      sha256: f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "6.3.1"
 | 
					    version: "6.3.2"
 | 
				
			||||||
  url_launcher_android:
 | 
					  url_launcher_android:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -1155,26 +1155,26 @@ packages:
 | 
				
			|||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: webview_flutter_android
 | 
					      name: webview_flutter_android
 | 
				
			||||||
      sha256: f6e6afef6e234801da77170f7a1847ded8450778caf2fe13979d140484be3678
 | 
					      sha256: "9573ad97890d199ac3ab32399aa33a5412163b37feb573eb5b0a76b35e9ffe41"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "4.7.0"
 | 
					    version: "4.8.2"
 | 
				
			||||||
  webview_flutter_platform_interface:
 | 
					  webview_flutter_platform_interface:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: webview_flutter_platform_interface
 | 
					      name: webview_flutter_platform_interface
 | 
				
			||||||
      sha256: f0dc2dc3a2b1e3a6abdd6801b9355ebfeb3b8f6cde6b9dc7c9235909c4a1f147
 | 
					      sha256: "63d26ee3aca7256a83ccb576a50272edd7cfc80573a4305caa98985feb493ee0"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "2.13.1"
 | 
					    version: "2.14.0"
 | 
				
			||||||
  webview_flutter_wkwebview:
 | 
					  webview_flutter_wkwebview:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: webview_flutter_wkwebview
 | 
					      name: webview_flutter_wkwebview
 | 
				
			||||||
      sha256: a3d461fe3467014e05f3ac4962e5fdde2a4bf44c561cb53e9ae5c586600fdbc3
 | 
					      sha256: "71523b9048cf510cfa1fd4e0a3fa5e476a66e0884d5df51d59d5023dba237107"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "3.22.0"
 | 
					    version: "3.22.1"
 | 
				
			||||||
  win32:
 | 
					  win32:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
 | 
				
			|||||||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
 | 
					# 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.2.0+2316
 | 
					version: 1.2.2+2318
 | 
				
			||||||
 | 
					
 | 
				
			||||||
environment:
 | 
					environment:
 | 
				
			||||||
  sdk: ^3.8.1
 | 
					  sdk: ^3.8.1
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user