Merge pull request #2247 from ImranR98/dev

- Remove Oxford comma (#2245) 
- Show error dialog box when error notification tapped (#2246)
This commit is contained in:
Imran
2025-04-18 16:37:35 -04:00
committed by GitHub
31 changed files with 182 additions and 97 deletions

View File

@ -320,11 +320,12 @@
"stayOneVersionBehind": "Stay one version behind latest", "stayOneVersionBehind": "Stay one version behind latest",
"refreshBeforeDownload": "Refresh app details before download", "refreshBeforeDownload": "Refresh app details before download",
"tencentAppStore": "Tencent App Store", "tencentAppStore": "Tencent App Store",
"coolApk": "CoolApk",
"name": "Name", "name": "Name",
"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.",
"removeAppQuestion": { "removeAppQuestion": {
"one": "Želite li ukloniti aplikaciju?", "one": "Želite li ukloniti aplikaciju?",
"other": "Želite li ukloniti aplikacije?" "other": "Želite li ukloniti aplikacije?"

View File

@ -320,6 +320,7 @@
"stayOneVersionBehind": "Roman a la versió anterior a l'última", "stayOneVersionBehind": "Roman a la versió anterior a l'última",
"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",
"name": "Nom", "name": "Nom",
"smartname": "Nom (smart)", "smartname": "Nom (smart)",
"sortMethod": "Mètode d'ordenació", "sortMethod": "Mètode d'ordenació",

View File

@ -320,6 +320,7 @@
"stayOneVersionBehind": "Zůstaňte o jednu verzi pozadu za nejnovější", "stayOneVersionBehind": "Zůstaňte o jednu verzi pozadu za nejnovější",
"refreshBeforeDownload": "Obnovení údajů o aplikaci před stažením", "refreshBeforeDownload": "Obnovení údajů o aplikaci před stažením",
"tencentAppStore": "Tencent App Store", "tencentAppStore": "Tencent App Store",
"coolApk": "CoolApk",
"name": "Název", "name": "Název",
"smartname": "Název (Smart)", "smartname": "Název (Smart)",
"sortMethod": "Metoda třídění", "sortMethod": "Metoda třídění",

View File

@ -320,6 +320,7 @@
"stayOneVersionBehind": "Forbliv én version bagud den seneste", "stayOneVersionBehind": "Forbliv én version bagud den seneste",
"refreshBeforeDownload": "Opdater app-detaljer før download", "refreshBeforeDownload": "Opdater app-detaljer før download",
"tencentAppStore": "Tencent App Store", "tencentAppStore": "Tencent App Store",
"coolApk": "CoolApk",
"name": "Navn", "name": "Navn",
"smartname": "Navn (Smart)", "smartname": "Navn (Smart)",
"sortMethod": "Sorteringsmetode", "sortMethod": "Sorteringsmetode",

View File

@ -320,6 +320,7 @@
"stayOneVersionBehind": "Eine Version hinter der neuesten Version bleiben", "stayOneVersionBehind": "Eine Version hinter der neuesten Version bleiben",
"refreshBeforeDownload": "App-Details vor dem Download aktualisieren", "refreshBeforeDownload": "App-Details vor dem Download aktualisieren",
"tencentAppStore": "Tencent App Store", "tencentAppStore": "Tencent App Store",
"coolApk": "CoolApk",
"name": "Name", "name": "Name",
"smartname": "Name (Smart)", "smartname": "Name (Smart)",
"sortMethod": "Sortierverfahren", "sortMethod": "Sortierverfahren",

View File

@ -320,11 +320,12 @@
"stayOneVersionBehind": "Stay one version behind latest", "stayOneVersionBehind": "Stay one version behind latest",
"refreshBeforeDownload": "Refresh app details before download", "refreshBeforeDownload": "Refresh app details before download",
"tencentAppStore": "Tencent App Store", "tencentAppStore": "Tencent App Store",
"coolApk": "CoolApk",
"name": "Name", "name": "Name",
"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.",
"removeAppQuestion": { "removeAppQuestion": {
"one": "Forigi la aplikaĵon?", "one": "Forigi la aplikaĵon?",
"other": "Forigi la aplikaĵojn?" "other": "Forigi la aplikaĵojn?"

View File

@ -325,7 +325,7 @@
"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.",
"removeAppQuestion": { "removeAppQuestion": {
"one": "Remove App?", "one": "Remove App?",
"other": "Remove Apps?" "other": "Remove Apps?"

View File

@ -320,6 +320,7 @@
"stayOneVersionBehind": "Mantenerse una versión por detrás de la última", "stayOneVersionBehind": "Mantenerse una versión por detrás de la última",
"refreshBeforeDownload": "Actualiza los datos de la aplicación antes de descargarla", "refreshBeforeDownload": "Actualiza los datos de la aplicación antes de descargarla",
"tencentAppStore": "Tencent App Store", "tencentAppStore": "Tencent App Store",
"coolApk": "CoolApk",
"name": "Nombre", "name": "Nombre",
"smartname": "Nombre (Smart)", "smartname": "Nombre (Smart)",
"sortMethod": "Método de clasificación", "sortMethod": "Método de clasificación",

View File

@ -320,11 +320,12 @@
"stayOneVersionBehind": "یک نسخه از آخرین نسخه پشت سر بگذارید", "stayOneVersionBehind": "یک نسخه از آخرین نسخه پشت سر بگذارید",
"refreshBeforeDownload": "قبل از دانلود، جزئیات برنامه را بازخوانی کنید", "refreshBeforeDownload": "قبل از دانلود، جزئیات برنامه را بازخوانی کنید",
"tencentAppStore": "Tencent App Store", "tencentAppStore": "Tencent App Store",
"coolApk": "CoolApk",
"name": "Name", "name": "Name",
"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.",
"removeAppQuestion": { "removeAppQuestion": {
"one": "برنامه حذف شود؟", "one": "برنامه حذف شود؟",
"other": "برنامه ها حذف شوند؟" "other": "برنامه ها حذف شوند؟"

View File

@ -320,6 +320,7 @@
"stayOneVersionBehind": "Rester une version en arrière de la dernière", "stayOneVersionBehind": "Rester une version en arrière de la dernière",
"refreshBeforeDownload": "Actualiser les détails de l'application avant de la télécharger", "refreshBeforeDownload": "Actualiser les détails de l'application avant de la télécharger",
"tencentAppStore": "Tencent App Store", "tencentAppStore": "Tencent App Store",
"coolApk": "CoolApk",
"name": "Nom", "name": "Nom",
"smartname": "Nom (Smart)", "smartname": "Nom (Smart)",
"sortMethod": "Méthode de tri", "sortMethod": "Méthode de tri",

View File

@ -320,6 +320,7 @@
"stayOneVersionBehind": "Maradjon egy verzióval a legújabb mögött", "stayOneVersionBehind": "Maradjon egy verzióval a legújabb mögött",
"refreshBeforeDownload": "Az alkalmazás adatainak frissítése a letöltés előtt", "refreshBeforeDownload": "Az alkalmazás adatainak frissítése a letöltés előtt",
"tencentAppStore": "Tencent Appstore", "tencentAppStore": "Tencent Appstore",
"coolApk": "CoolApk",
"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",

View File

@ -320,6 +320,7 @@
"stayOneVersionBehind": "Tetap satu versi di belakang versi terbaru", "stayOneVersionBehind": "Tetap satu versi di belakang versi terbaru",
"refreshBeforeDownload": "Segarkan detail aplikasi sebelum mengunduh", "refreshBeforeDownload": "Segarkan detail aplikasi sebelum mengunduh",
"tencentAppStore": "Tencent App Store", "tencentAppStore": "Tencent App Store",
"coolApk": "CoolApk",
"name": "Nama", "name": "Nama",
"smartname": "Nama (Cerdas)", "smartname": "Nama (Cerdas)",
"sortMethod": "Metode Penyortiran", "sortMethod": "Metode Penyortiran",

View File

@ -320,6 +320,7 @@
"stayOneVersionBehind": "Rimanere una versione indietro rispetto alla più recente", "stayOneVersionBehind": "Rimanere una versione indietro rispetto alla più recente",
"refreshBeforeDownload": "Aggiornare i dettagli dell'app prima del download", "refreshBeforeDownload": "Aggiornare i dettagli dell'app prima del download",
"tencentAppStore": "Tencent App Store", "tencentAppStore": "Tencent App Store",
"coolApk": "CoolApk",
"name": "Nome", "name": "Nome",
"smartname": "Nome (intelligente)", "smartname": "Nome (intelligente)",
"sortMethod": "Metodo di ordinamento", "sortMethod": "Metodo di ordinamento",

View File

@ -320,6 +320,7 @@
"stayOneVersionBehind": "最新のバージョンから1つ前のものを使用する", "stayOneVersionBehind": "最新のバージョンから1つ前のものを使用する",
"refreshBeforeDownload": "ダウンロード前にアプリの詳細を更新する", "refreshBeforeDownload": "ダウンロード前にアプリの詳細を更新する",
"tencentAppStore": "Tencent App Store", "tencentAppStore": "Tencent App Store",
"coolApk": "CoolApk",
"name": "名称", "name": "名称",
"smartname": "名前(スマート)", "smartname": "名前(スマート)",
"sortMethod": "ソート方法", "sortMethod": "ソート方法",

View File

@ -320,6 +320,7 @@
"stayOneVersionBehind": "최신 버전보다 한 버전 뒤에 머무르기", "stayOneVersionBehind": "최신 버전보다 한 버전 뒤에 머무르기",
"refreshBeforeDownload": "다운로드 전에 앱 세부 정보 새로 고침", "refreshBeforeDownload": "다운로드 전에 앱 세부 정보 새로 고침",
"tencentAppStore": "텐센트 앱 스토어", "tencentAppStore": "텐센트 앱 스토어",
"coolApk": "CoolApk",
"name": "이름", "name": "이름",
"smartname": "이름(스마트)", "smartname": "이름(스마트)",
"sortMethod": "정렬 방법", "sortMethod": "정렬 방법",

View File

@ -320,6 +320,7 @@
"stayOneVersionBehind": "Blijf een versie achter op de nieuwste", "stayOneVersionBehind": "Blijf een versie achter op de nieuwste",
"refreshBeforeDownload": "Vernieuw app details voor download", "refreshBeforeDownload": "Vernieuw app details voor download",
"tencentAppStore": "Tencent App Store", "tencentAppStore": "Tencent App Store",
"coolApk": "CoolApk",
"name": "Naam", "name": "Naam",
"smartname": "Naam (Slim)", "smartname": "Naam (Slim)",
"sortMethod": "Sorteermethode", "sortMethod": "Sorteermethode",

View File

@ -320,6 +320,7 @@
"stayOneVersionBehind": "Pozostań jedną wersję w tyle za najnowszą", "stayOneVersionBehind": "Pozostań jedną wersję w tyle za najnowszą",
"refreshBeforeDownload": "Odśwież szczegóły aplikacji przed pobraniem", "refreshBeforeDownload": "Odśwież szczegóły aplikacji przed pobraniem",
"tencentAppStore": "Tencent App Store", "tencentAppStore": "Tencent App Store",
"coolApk": "CoolApk",
"name": "Nazwa", "name": "Nazwa",
"smartname": "Nazwa (Smart)", "smartname": "Nazwa (Smart)",
"sortMethod": "Metoda sortowania", "sortMethod": "Metoda sortowania",

View File

@ -1,7 +1,10 @@
{ {
"invalidURLForSource": "Não é uma URL de app válida de {}",
"noReleaseFound": "Não foi possível encontrar um lançamento adequado",
"noVersionFound": "Não foi possível determinar a versão do lançamento", "noVersionFound": "Não foi possível determinar a versão do lançamento",
"urlMatchesNoSource": "A URL não corresponde com nenhuma fonte conhecida", "urlMatchesNoSource": "A URL não corresponde com nenhuma fonte conhecida",
"cantInstallOlderVersion": "Não é possível instalar uma versão mais antiga de um app", "cantInstallOlderVersion": "Não é possível instalar uma versão mais antiga de um app",
"appIdMismatch": "O ID do pacote baixado não corresponde ao existente",
"functionNotImplemented": "Essa classe não implementou esse recurso ainda", "functionNotImplemented": "Essa classe não implementou esse recurso ainda",
"placeholder": "Espaço reservado", "placeholder": "Espaço reservado",
"someErrors": "Ocorreram alguns erros", "someErrors": "Ocorreram alguns erros",
@ -10,23 +13,27 @@
"and": "e", "and": "e",
"githubPATLabel": "Token de acesso pessoal do GitHub (aumenta o limite de taxa)", "githubPATLabel": "Token de acesso pessoal do GitHub (aumenta o limite de taxa)",
"includePrereleases": "Incluir pré-lançamentos", "includePrereleases": "Incluir pré-lançamentos",
"fallbackToOlderReleases": "Recorrer à lançamentos mais antigos",
"filterReleaseTitlesByRegEx": "Filtrar títulos de lançamentos por expressão regular", "filterReleaseTitlesByRegEx": "Filtrar títulos de lançamentos por expressão regular",
"invalidRegEx": "Expressão regular inválida", "invalidRegEx": "Expressão regular inválida",
"noDescription": "Sem descrição", "noDescription": "Sem descrição",
"cancel": "Cancelar", "cancel": "Cancelar",
"continue": "Continuar", "continue": "Continuar",
"requiredInBrackets": "(obrigatório)", "requiredInBrackets": "(obrigatório)",
"dropdownNoOptsError": "ERRO: O MENU DEVE TER PELO MENOS UMA OPÇÃO",
"colour": "Cor", "colour": "Cor",
"standard": "Padrão", "standard": "Padrão",
"custom": "Personalizado", "custom": "Personalizado",
"useMaterialYou": "Usar Material You", "useMaterialYou": "Usar Material You",
"githubStarredRepos": "Repositórios com estrela do GitHub", "githubStarredRepos": "Repositórios com estrela do GitHub",
"uname": "Nome de usuário", "uname": "Nome de usuário",
"wrongArgNum": "Número errado de argumentos fornecidos",
"xIsTrackOnly": "{} é somente de rastreio", "xIsTrackOnly": "{} é somente de rastreio",
"source": "Fonte", "source": "Fonte",
"app": "App", "app": "App",
"appsFromSourceAreTrackOnly": "Apps desta fonte são somente para rastreamento.", "appsFromSourceAreTrackOnly": "Apps desta fonte são somente para rastreamento.",
"youPickedTrackOnly": "Você selecionou a opção de somente rastreamento.", "youPickedTrackOnly": "Você selecionou a opção de somente rastreamento.",
"trackOnlyAppDescription": "As atualizações do app serão rastreadas, mas o Obtainium não baixará ou instalará elas.",
"cancelled": "Cancelado", "cancelled": "Cancelado",
"appAlreadyAdded": "O app já foi adicionado", "appAlreadyAdded": "O app já foi adicionado",
"alreadyUpToDateQuestion": "O app já está atualizado?", "alreadyUpToDateQuestion": "O app já está atualizado?",
@ -41,14 +48,17 @@
"trackOnlyInBrackets": "(somente rastreamento)", "trackOnlyInBrackets": "(somente rastreamento)",
"searchableInBrackets": "(pesquisável)", "searchableInBrackets": "(pesquisável)",
"appsString": "Apps", "appsString": "Apps",
"noApps": "Nenhum app",
"noAppsForFilter": "Nenhum app pro filtro", "noAppsForFilter": "Nenhum app pro filtro",
"byX": "Por {}", "byX": "Por {}",
"percentProgress": "Progresso: {}%", "percentProgress": "Progresso: {}%",
"pleaseWait": "Por favor aguarde", "pleaseWait": "Por favor aguarde",
"updateAvailable": "Atualização disponível",
"notInstalled": "Não instalado", "notInstalled": "Não instalado",
"pseudoVersion": "pseudo-versão", "pseudoVersion": "pseudo-versão",
"selectAll": "Selecionar tudo", "selectAll": "Selecionar tudo",
"deselectX": "Desselecionar {}", "deselectX": "Desselecionar {}",
"xWillBeRemovedButRemainInstalled": "{} será removido do Obtainium mas continuará instalado no dispositivo.",
"removeSelectedAppsQuestion": "Remover os apps selecionados?", "removeSelectedAppsQuestion": "Remover os apps selecionados?",
"removeSelectedApps": "Remover apps selecionados", "removeSelectedApps": "Remover apps selecionados",
"updateX": "Atualizar {}", "updateX": "Atualizar {}",
@ -57,12 +67,14 @@
"changeX": "Alterar {}", "changeX": "Alterar {}",
"installUpdateApps": "Instalar/atualizar apps", "installUpdateApps": "Instalar/atualizar apps",
"installUpdateSelectedApps": "Instalar/atualizar apps selecionados", "installUpdateSelectedApps": "Instalar/atualizar apps selecionados",
"markXSelectedAppsAsUpdated": "Marcar os {} apps selecionados como atualizados?",
"no": "Não", "no": "Não",
"yes": "Sim", "yes": "Sim",
"markSelectedAppsUpdated": "Marcar apps selecionados como atualizados", "markSelectedAppsUpdated": "Marcar apps selecionados como atualizados",
"pinToTop": "Fixar ao topo", "pinToTop": "Fixar ao topo",
"unpinFromTop": "Desfixar do topo", "unpinFromTop": "Desfixar do topo",
"resetInstallStatusForSelectedAppsQuestion": "Redefinir o estado de instalação dos apps selecionados?", "resetInstallStatusForSelectedAppsQuestion": "Redefinir o estado de instalação dos apps selecionados?",
"installStatusOfXWillBeResetExplanation": "Os estados de instalação dos apps selecionados serão redefinidos.\n\nIsso pode ajudar quando a versão exibida no Obtainium está incorreta devido a atualizações malsucedidas ou outros problemas.",
"customLinkMessage": "Esses links funcionarão em dispositivos com o Obtainium instalado", "customLinkMessage": "Esses links funcionarão em dispositivos com o Obtainium instalado",
"shareAppConfigLinks": "Compartilhar configuração do app como um link HTML", "shareAppConfigLinks": "Compartilhar configuração do app como um link HTML",
"shareSelectedAppURLs": "Compartilhar as URLs dos apps selecionados", "shareSelectedAppURLs": "Compartilhar as URLs dos apps selecionados",
@ -77,16 +89,20 @@
"upToDateApps": "Apps atualizados", "upToDateApps": "Apps atualizados",
"nonInstalledApps": "Apps não instalados", "nonInstalledApps": "Apps não instalados",
"importExport": "Importar/Exportar", "importExport": "Importar/Exportar",
"settings": "Configurações",
"exportedTo": "Exportado para {}", "exportedTo": "Exportado para {}",
"obtainiumExport": "Exportação do Obtainium", "obtainiumExport": "Exportação do Obtainium",
"invalidInput": "Entrada inválida", "invalidInput": "Entrada inválida",
"importedX": "{} importado(s)", "importedX": "{} importado(s)",
"obtainiumImport": "Importação do Obtainium", "obtainiumImport": "Importação do Obtainium",
"importFromURLList": "Importar da lista de URLs",
"searchQuery": "Consulta de pesquisa", "searchQuery": "Consulta de pesquisa",
"appURLList": "Lista de URLs dos apps", "appURLList": "Lista de URLs dos apps",
"line": "Linha",
"searchX": "Pesquisar {}", "searchX": "Pesquisar {}",
"noResults": "Nenhum resultado encontrado", "noResults": "Nenhum resultado encontrado",
"importX": "Importar {}", "importX": "Importar {}",
"importedAppsIdDisclaimer": "Os apps importados podem ser exibidos incorretamente como se não estivessem instalados.\nPara resolver isso, reinstale eles pelo Obtainium.\nIsso não afetará os dados dos apps.\n\nIsso somente afeta a URL e os métodos de importação de terceiros.",
"importErrors": "Erros de importação", "importErrors": "Erros de importação",
"importedXOfYApps": "{} de {} foram importados.", "importedXOfYApps": "{} de {} foram importados.",
"followingURLsHadErrors": "As seguintes URLs tiveram erros:", "followingURLsHadErrors": "As seguintes URLs tiveram erros:",
@ -97,6 +113,7 @@
"dark": "Escuro", "dark": "Escuro",
"light": "Claro", "light": "Claro",
"followSystem": "Seguir o sistema", "followSystem": "Seguir o sistema",
"followSystemThemeExplanation": "Só é possível seguir o tema do sistema ao usar aplicativos de terceiros",
"useBlackTheme": "Usar o tema escuro de preto profundo", "useBlackTheme": "Usar o tema escuro de preto profundo",
"appSortBy": "Ordenar apps por", "appSortBy": "Ordenar apps por",
"authorName": "Autor/nome", "authorName": "Autor/nome",
@ -108,6 +125,7 @@
"bgUpdateCheckInterval": "Intervalo de busca por atualizações em segundo plano", "bgUpdateCheckInterval": "Intervalo de busca por atualizações em segundo plano",
"neverManualOnly": "Nunca - somente manualmente", "neverManualOnly": "Nunca - somente manualmente",
"appearance": "Aparência", "appearance": "Aparência",
"showWebInAppView": "Mostrar a fonte da pagina web na tela de apps",
"pinUpdates": "Fixar atualizações no topo da tela de apps", "pinUpdates": "Fixar atualizações no topo da tela de apps",
"updates": "Atualizações", "updates": "Atualizações",
"sourceSpecific": "Específico à fonte", "sourceSpecific": "Específico à fonte",
@ -116,29 +134,37 @@
"appLogs": "Registros do app", "appLogs": "Registros do app",
"close": "Fechar", "close": "Fechar",
"share": "Compartilhar", "share": "Compartilhar",
"appNotFound": "O app não foi encontrado",
"obtainiumExportHyphenatedLowercase": "obtainium-export",
"pickAnAPK": "Selecione um APK", "pickAnAPK": "Selecione um APK",
"appHasMoreThanOnePackage": "{} tem mais de um pacote:", "appHasMoreThanOnePackage": "{} tem mais de um pacote:",
"deviceSupportsXArch": "Seu dispositivo suporta a arquitetura de CPU {}.", "deviceSupportsXArch": "Seu dispositivo suporta a arquitetura de CPU {}.",
"deviceSupportsFollowingArchs": "Seu dispositivo suporta as seguintes arquiteturas de CPU:",
"warning": "Alerta", "warning": "Alerta",
"sourceIsXButPackageFromYPrompt": "A fonte do app é '{}' mas o pacote de lançamento vem de '{}'. Continuar mesmo assim?", "sourceIsXButPackageFromYPrompt": "A fonte do app é '{}' mas o pacote de lançamento vem de '{}'. Continuar mesmo assim?",
"updatesAvailable": "Atualizações disponíveis", "updatesAvailable": "Atualizações disponíveis",
"updatesAvailableNotifDescription": "Notifica o usuário que atualizações estão disponíveis para um ou mais apps rastreados pelo Obtainium",
"noNewUpdates": "Nenhuma atualização disponível.", "noNewUpdates": "Nenhuma atualização disponível.",
"xHasAnUpdate": "{} tem uma atualização.", "xHasAnUpdate": "{} tem uma atualização.",
"appsUpdated": "Apps atualizados", "appsUpdated": "Apps atualizados",
"appsNotUpdated": "Falhou ao atualizar os aplicativos", "appsNotUpdated": "Falhou ao atualizar os aplicativos",
"appsUpdatedNotifDescription": "Notifica o usuário que atualizações de um ou mais apps foram aplicadas em segundo plano", "appsUpdatedNotifDescription": "Notifica o usuário que atualizações de um ou mais apps foram aplicadas em segundo plano",
"xWasUpdatedToY": "{} foi atualizado para a versão {}.",
"xWasNotUpdatedToY": "Falha ao atualizar {} para a versão {}.", "xWasNotUpdatedToY": "Falha ao atualizar {} para a versão {}.",
"errorCheckingUpdates": "Ocorreu um erro ao buscar atualizações", "errorCheckingUpdates": "Ocorreu um erro ao buscar atualizações",
"errorCheckingUpdatesNotifDescription": "Uma notificação que mostra quando a busca de atualizações em segundo plano falha",
"appsRemoved": "Apps removidos", "appsRemoved": "Apps removidos",
"appsRemovedNotifDescription": "Notifica o usuário que um ou mais apps foram removidos devido a erros ao carregá-los", "appsRemovedNotifDescription": "Notifica o usuário que um ou mais apps foram removidos devido a erros ao carregá-los",
"xWasRemovedDueToErrorY": "{} for removido devido ao erro: {}", "xWasRemovedDueToErrorY": "{} for removido devido ao erro: {}",
"completeAppInstallation": "Concluir instalação do app", "completeAppInstallation": "Concluir instalação do app",
"obtainiumMustBeOpenToInstallApps": "O Obtainium precisa estar aberto para instalar apps",
"completeAppInstallationNotifDescription": "Pede pro usuário voltar ao Obtainium para concluir a instalação de um app", "completeAppInstallationNotifDescription": "Pede pro usuário voltar ao Obtainium para concluir a instalação de um app",
"checkingForUpdates": "Buscando atualizações", "checkingForUpdates": "Buscando atualizações",
"checkingForUpdatesNotifDescription": "Notificação transitória que aparece ao buscar atualizações", "checkingForUpdatesNotifDescription": "Notificação transitória que aparece ao buscar atualizações",
"pleaseAllowInstallPerm": "Permita que o Obtainium instale apps", "pleaseAllowInstallPerm": "Permita que o Obtainium instale apps",
"trackOnly": "Somente rastreamento", "trackOnly": "Somente rastreamento",
"errorWithHttpStatusCode": "Erro {}", "errorWithHttpStatusCode": "Erro {}",
"versionCorrectionDisabled": "Correção de versão desativada (o plugin parece não funcionar)",
"unknown": "Desconhecido", "unknown": "Desconhecido",
"none": "Nenhum", "none": "Nenhum",
"never": "Nunca", "never": "Nunca",
@ -150,6 +176,7 @@
"fdroid": "Oficial do F-Droid", "fdroid": "Oficial do F-Droid",
"appIdOrName": "ID do app ou nome", "appIdOrName": "ID do app ou nome",
"appId": "ID do app", "appId": "ID do app",
"appWithIdOrNameNotFound": "Nenhum app foi encontrado com aquele ID ou nome",
"reposHaveMultipleApps": "Repositórios podem conter vários apps", "reposHaveMultipleApps": "Repositórios podem conter vários apps",
"fdroidThirdPartyRepo": "Repositório de terceiros do F-Droid", "fdroidThirdPartyRepo": "Repositório de terceiros do F-Droid",
"install": "Instalar", "install": "Instalar",
@ -157,6 +184,8 @@
"update": "Atualizar", "update": "Atualizar",
"markUpdated": "Marcar como atualizado", "markUpdated": "Marcar como atualizado",
"additionalOptions": "Opções adicionais", "additionalOptions": "Opções adicionais",
"disableVersionDetection": "Desativar detecção de versão",
"noVersionDetectionExplanation": "Essa opção só seve ser usada para apps aonde a detecção de versão não funciona corretamente.",
"downloadingX": "Baixando {}", "downloadingX": "Baixando {}",
"downloadX": "Baixar {}", "downloadX": "Baixar {}",
"downloadedX": "{} foi baixado", "downloadedX": "{} foi baixado",
@ -168,7 +197,9 @@
"categories": "Categorias", "categories": "Categorias",
"category": "Categoria", "category": "Categoria",
"noCategory": "Nenhuma categoria", "noCategory": "Nenhuma categoria",
"noCategories": "Nenhuma categoria",
"deleteCategoriesQuestion": "Excluir categorias?", "deleteCategoriesQuestion": "Excluir categorias?",
"categoryDeleteWarning": "Todos os apps em categorias excluídas ficarão sem categoria.",
"addCategory": "Adicionar categoria", "addCategory": "Adicionar categoria",
"label": "Rótulo", "label": "Rótulo",
"language": "Idioma", "language": "Idioma",
@ -177,8 +208,11 @@
"selectedCategorizeWarning": "Isso substituirá a configuração de categoria existente dos apps selecionados.", "selectedCategorizeWarning": "Isso substituirá a configuração de categoria existente dos apps selecionados.",
"filterAPKsByRegEx": "Filtrar APKs por expressão regular", "filterAPKsByRegEx": "Filtrar APKs por expressão regular",
"removeFromObtainium": "Remover do Obtainium", "removeFromObtainium": "Remover do Obtainium",
"uninstallFromDevice": "Desinstalar do dispositivo",
"onlyWorksWithNonVersionDetectApps": "Funciona somente em apps com a detecção de versão desativada.", "onlyWorksWithNonVersionDetectApps": "Funciona somente em apps com a detecção de versão desativada.",
"releaseDateAsVersion": "Usar data de lançamento como número da versão",
"releaseTitleAsVersion": "Usar título do lançamento como número da versão", "releaseTitleAsVersion": "Usar título do lançamento como número da versão",
"releaseDateAsVersionExplanation": "Essa opção só deve ser usada para apps quais a detecção de versão não funciona corretamente, mas uma data de lançamento está disponível.",
"changes": "Alterações", "changes": "Alterações",
"releaseDate": "Data de lançamento", "releaseDate": "Data de lançamento",
"importFromURLsInFile": "Importar das URLs em arquivo (como OPML)", "importFromURLsInFile": "Importar das URLs em arquivo (como OPML)",
@ -191,64 +225,81 @@
"overrideSource": "Sobrescrever fonte", "overrideSource": "Sobrescrever fonte",
"dontShowAgain": "Não mostrar isso novamente", "dontShowAgain": "Não mostrar isso novamente",
"dontShowTrackOnlyWarnings": "Não mostrar alertas de \"somente rastreamento\"", "dontShowTrackOnlyWarnings": "Não mostrar alertas de \"somente rastreamento\"",
"dontShowAPKOriginWarnings": "Não mostrar alertas de origem dos APKs",
"moveNonInstalledAppsToBottom": "Mover apps não instalados ao final da tela de apps", "moveNonInstalledAppsToBottom": "Mover apps não instalados ao final da tela de apps",
"gitlabPATLabel": "Token de acesso pessoal do GitLab", "gitlabPATLabel": "Token de acesso pessoal do GitLab",
"about": "Sobre", "about": "Sobre",
"requiresCredentialsInSettings": "{} precisa de credenciais adicionais (nas Configurações)", "requiresCredentialsInSettings": "{} precisa de credenciais adicionais (nas Configurações)",
"checkOnStart": "Buscar atualizações ao abrir o app", "checkOnStart": "Buscar atualizações ao abrir o app",
"tryInferAppIdFromCode": "Tentar inferir o ID do app pelo código fonte",
"removeOnExternalUninstall": "Remover automaticamente apps desinstalados externamente", "removeOnExternalUninstall": "Remover automaticamente apps desinstalados externamente",
"pickHighestVersionCode": "Selecionar APK de versão mais alta automaticamente", "pickHighestVersionCode": "Selecionar APK de versão mais alta automaticamente",
"checkUpdateOnDetailPage": "Buscar atualizações ao abrir a tela de detalhes de um app",
"disablePageTransitions": "Desativar animações de transição de tela", "disablePageTransitions": "Desativar animações de transição de tela",
"reversePageTransitions": "Inverter animações de transição de tela", "reversePageTransitions": "Inverter animações de transição de tela",
"minStarCount": "Número de estrelas mínimo", "minStarCount": "Número de estrelas mínimo",
"addInfoBelow": "Adicione essa informação abaixo.", "addInfoBelow": "Adicione essa informação abaixo.",
"addInfoInSettings": "Adicione essa informação nas Configurações.", "addInfoInSettings": "Adicione essa informação nas Configurações.",
"githubSourceNote": "O limite de taxa do GitHub pode ser evitado ao usar uma chave de API.",
"sortByLastLinkSegment": "Ordenar somente pelo ultimo segmento do link", "sortByLastLinkSegment": "Ordenar somente pelo ultimo segmento do link",
"filterReleaseNotesByRegEx": "Filtrar notas de lançamento por expressão regular", "filterReleaseNotesByRegEx": "Filtrar notas de lançamento por expressão regular",
"customLinkFilterRegex": "Filtro de link de APK personalizado por expressão regular (padrão '.apk$')",
"appsPossiblyUpdated": "Tentativas de atualização de apps", "appsPossiblyUpdated": "Tentativas de atualização de apps",
"appsPossiblyUpdatedNotifDescription": "Notifica o usuário que atualizações de um ou mais apps podem ter sido aplicadas em segundo plano",
"xWasPossiblyUpdatedToY": "{} pode ter sido atualizado para a versão {}.", "xWasPossiblyUpdatedToY": "{} pode ter sido atualizado para a versão {}.",
"enableBackgroundUpdates": "Ativar atualizações em segundo plano", "enableBackgroundUpdates": "Ativar atualizações em segundo plano",
"backgroundUpdateReqsExplanation": "Atualizações em segundo plano podem não funcionar com todos os apps.", "backgroundUpdateReqsExplanation": "Atualizações em segundo plano podem não funcionar com todos os apps.",
"backgroundUpdateLimitsExplanation": "O sucesso de uma instalação em segundo plano só pode ser determinada ao abrir o Obtainium.", "backgroundUpdateLimitsExplanation": "O sucesso de uma instalação em segundo plano só pode ser determinada ao abrir o Obtainium.",
"verifyLatestTag": "Verificar a tag 'mais recente'", "verifyLatestTag": "Verificar a tag 'mais recente'",
"intermediateLinkRegex": "Filtrar por um link 'intermediário' para visitar",
"filterByLinkText": "Filtrar links por texto do link", "filterByLinkText": "Filtrar links por texto do link",
"intermediateLinkNotFound": "Link intermediário não encontrado", "intermediateLinkNotFound": "Link intermediário não encontrado",
"intermediateLink": "Link intermediário", "intermediateLink": "Link intermediário",
"exemptFromBackgroundUpdates": "Isento de atualizações em segundo plano (caso ativadas)", "exemptFromBackgroundUpdates": "Isento de atualizações em segundo plano (caso ativadas)",
"bgUpdatesOnWiFiOnly": "Desativar atualizações em segundo plano fora do Wi-Fi",
"bgUpdatesWhileChargingOnly": "Desativar atualizações em segundo plano fora do carregador", "bgUpdatesWhileChargingOnly": "Desativar atualizações em segundo plano fora do carregador",
"autoSelectHighestVersionCode": "Selecionar automaticamente APK com o código de versão mais alto", "autoSelectHighestVersionCode": "Selecionar automaticamente APK com o código de versão mais alto",
"versionExtractionRegEx": "ExReg de extração do número da versão", "versionExtractionRegEx": "ExReg de extração do número da versão",
"trimVersionString": "Cortar número da versal com ExReg", "trimVersionString": "Cortar número da versal com ExReg",
"matchGroupToUseForX": "Corresponder grupo para o uso em \"{}\"", "matchGroupToUseForX": "Corresponder grupo para o uso em \"{}\"",
"matchGroupToUse": "Corresponder grupo para o uso para a extração do número da versão por ExReg",
"highlightTouchTargets": "Acentuar alvos de toque menos óbvios", "highlightTouchTargets": "Acentuar alvos de toque menos óbvios",
"pickExportDir": "Selecionar pasta de exportação", "pickExportDir": "Selecionar pasta de exportação",
"autoExportOnChanges": "Exportar automaticamente ao ocorrer alterações", "autoExportOnChanges": "Exportar automaticamente ao ocorrer alterações",
"includeSettings": "Incluir configurações", "includeSettings": "Incluir configurações",
"filterVersionsByRegEx": "Filtrar versões por expressão regular",
"trySelectingSuggestedVersionCode": "Tente selecionar o APK com o código de versão sugerido", "trySelectingSuggestedVersionCode": "Tente selecionar o APK com o código de versão sugerido",
"dontSortReleasesList": "Manter ordem de lançamento da API", "dontSortReleasesList": "Manter ordem de lançamento da API",
"reverseSort": "Ordem inversa", "reverseSort": "Ordem inversa",
"takeFirstLink": "Usar o primeiro link", "takeFirstLink": "Usar o primeiro link",
"skipSort": "Pular ordenação", "skipSort": "Pular ordenação",
"debugMenu": "Menu de depuração", "debugMenu": "Menu de depuração",
"bgTaskStarted": "Tarefa em segundo plano iniada - verifique os registros.",
"runBgCheckNow": "Executar busca por atualizações em segundo plano agora", "runBgCheckNow": "Executar busca por atualizações em segundo plano agora",
"versionExtractWholePage": "Aplicar ExReg de extração de número de versão à página inteira", "versionExtractWholePage": "Aplicar ExReg de extração de número de versão à página inteira",
"installing": "Instalando", "installing": "Instalando",
"skipUpdateNotifications": "Pular notificações de atualização",
"updatesAvailableNotifChannel": "Atualizações disponíveis", "updatesAvailableNotifChannel": "Atualizações disponíveis",
"appsUpdatedNotifChannel": "Apps atualizados", "appsUpdatedNotifChannel": "Apps atualizados",
"appsPossiblyUpdatedNotifChannel": "Tentativas de atualização de apps", "appsPossiblyUpdatedNotifChannel": "Tentativas de atualização de apps",
"errorCheckingUpdatesNotifChannel": "Erro ao buscar atualizações", "errorCheckingUpdatesNotifChannel": "Erro ao buscar atualizações",
"appsRemovedNotifChannel": "Apps removidos", "appsRemovedNotifChannel": "Apps removidos",
"downloadingXNotifChannel": "Baixando {}", "downloadingXNotifChannel": "Baixando {}",
"completeAppInstallationNotifChannel": "Concluir instalação do app",
"checkingForUpdatesNotifChannel": "Buscando atualizações", "checkingForUpdatesNotifChannel": "Buscando atualizações",
"onlyCheckInstalledOrTrackOnlyApps": "Buscar atualizações somente para apps instalados e de somente rastreamento", "onlyCheckInstalledOrTrackOnlyApps": "Buscar atualizações somente para apps instalados e de somente rastreamento",
"supportFixedAPKURL": "Suportar URLs de APK fixas", "supportFixedAPKURL": "Suportar URLs de APK fixas",
"selectX": "Selecionar {}",
"parallelDownloads": "Permitir downloads em paralelo", "parallelDownloads": "Permitir downloads em paralelo",
"useShizuku": "Usar Shizuku ou Sui para instalação",
"shizukuBinderNotFound": "Serviço Shizuku não está em execução", "shizukuBinderNotFound": "Serviço Shizuku não está em execução",
"shizukuOld": "Versão do Shizuku antiga (<11) - atualize", "shizukuOld": "Versão do Shizuku antiga (<11) - atualize",
"shizukuOldAndroidWithADB": "Shizuku sendo executado no Android < 8.1 com ADB - atualize o Android ou use o Sui",
"shizukuPretendToBeGooglePlay": "Definir Google Play como a fonte de instalação (se o Shizuku é usado)", "shizukuPretendToBeGooglePlay": "Definir Google Play como a fonte de instalação (se o Shizuku é usado)",
"useSystemFont": "Usar a fonte do sistema", "useSystemFont": "Usar a fonte do sistema",
"useVersionCodeAsOSVersion": "Usar código de versão do app como a versão detectada pelo sistema", "useVersionCodeAsOSVersion": "Usar código de versão do app como a versão detectada pelo sistema",
"requestHeader": "Cabeçalho da solicitação", "requestHeader": "Cabeçalho da solicitação",
"useLatestAssetDateAsReleaseDate": "Usar o envio de item mais recente como a data de lançamento",
"defaultPseudoVersioningMethod": "Método de pseudo-versão padrão", "defaultPseudoVersioningMethod": "Método de pseudo-versão padrão",
"partialAPKHash": "Hash do APK parcial", "partialAPKHash": "Hash do APK parcial",
"APKLinkHash": "Hash do link do APK", "APKLinkHash": "Hash do link do APK",
@ -258,18 +309,23 @@
"latest": "Mais recente", "latest": "Mais recente",
"invertRegEx": "Inverter expressão regular", "invertRegEx": "Inverter expressão regular",
"note": "Observação", "note": "Observação",
"selfHostedNote": "O menu de opções \"{}\" pode ser usado para alcançar instâncias hospedadas-por-você/personalizadas de qualquer fonte.",
"badDownload": "O APK não pode ser interpretado (incompatível ou baixado parcialmente)", "badDownload": "O APK não pode ser interpretado (incompatível ou baixado parcialmente)",
"beforeNewInstallsShareToAppVerifier": "Compartilhar apps novos com o AppVerifier (se disponível)", "beforeNewInstallsShareToAppVerifier": "Compartilhar apps novos com o AppVerifier (se disponível)",
"appVerifierInstructionToast": "Compartilhe com o AppVerifier, e volte aqui ao estar pronto.", "appVerifierInstructionToast": "Compartilhe com o AppVerifier, e volte aqui ao estar pronto.",
"wiki": "Ajuda/Wiki", "wiki": "Ajuda/Wiki",
"crowdsourcedConfigsLabel": "Configurações de app pela comunidade (use ao seu próprio risco)",
"crowdsourcedConfigsShort": "Configurações de app da comunidade", "crowdsourcedConfigsShort": "Configurações de app da comunidade",
"allowInsecure": "Permitir solicitações de HTTP inseguras", "allowInsecure": "Permitir solicitações de HTTP inseguras",
"stayOneVersionBehind": "Ficar uma versão antes da mais recente", "stayOneVersionBehind": "Ficar uma versão antes da mais recente",
"refreshBeforeDownload": "Atualizar detalhes do app antes de baixar", "refreshBeforeDownload": "Atualizar detalhes do app antes de baixar",
"tencentAppStore": "Loja de Apps da Tencent", "tencentAppStore": "Loja de Apps da Tencent",
"coolApk": "CoolApk",
"name": "Nome", "name": "Nome",
"smartname": "Nome (inteligente)", "smartname": "Nome (inteligente)",
"sortMethod": "Método de ordenação",
"welcome": "Boas vindas", "welcome": "Boas vindas",
"documentationLinksNote": "A página do Obtainium no GitHub visível abaixo contém links de vídeos, artigos, discussões, e outros recursos que podem te ajudar ao usar o app.",
"removeAppQuestion": { "removeAppQuestion": {
"one": "Remover app?", "one": "Remover app?",
"other": "Remover apps?" "other": "Remover apps?"
@ -282,6 +338,10 @@
"one": "A busca de atualizações em segundo plano encontrou um {}, será agendado uma nova tentativa em {} minuto", "one": "A busca de atualizações em segundo plano encontrou um {}, será agendado uma nova tentativa em {} minuto",
"other": "A busca de atualizações em segundo plano encontrou um {}, será agendado uma nova tentativa em {} minutos" "other": "A busca de atualizações em segundo plano encontrou um {}, será agendado uma nova tentativa em {} minutos"
}, },
"bgCheckFoundUpdatesWillNotifyIfNeeded": {
"one": "BG update checking found {} update - will notify user if needed",
"other": "BG update checking found {} updates - will notify user if needed"
},
"apps": { "apps": {
"one": "{} app", "one": "{} app",
"other": "{} apps" "other": "{} apps"
@ -302,6 +362,10 @@
"one": "{} dia", "one": "{} dia",
"other": "{} dias" "other": "{} dias"
}, },
"clearedNLogsBeforeXAfterY": {
"one": "Cleared {n} log (before = {before}, after = {after})",
"other": "Cleared {n} logs (before = {before}, after = {after})"
},
"xAndNMoreUpdatesAvailable": { "xAndNMoreUpdatesAvailable": {
"one": "{} e mais 1 app têm atualizações.", "one": "{} e mais 1 app têm atualizações.",
"other": "{} e mais {} apps têm atualizações." "other": "{} e mais {} apps têm atualizações."
@ -321,59 +385,5 @@
"apk": { "apk": {
"one": "{} APK", "one": "{} APK",
"other": "{} APKs" "other": "{} APKs"
}, }
"invalidURLForSource": "Não é uma URL de app válida de {}",
"noReleaseFound": "Não foi possível encontrar um lançamento adequado",
"appIdMismatch": "O ID do pacote baixado não corresponde ao existente",
"fallbackToOlderReleases": "Recorrer à lançamentos mais antigos",
"dropdownNoOptsError": "ERRO: O MENU DEVE TER PELO MENOS UMA OPÇÃO",
"wrongArgNum": "Número errado de argumentos fornecidos",
"trackOnlyAppDescription": "As atualizações do app serão rastreadas, mas o Obtainium não baixará ou instalará elas.",
"noApps": "Nenhum app",
"updateAvailable": "Atualização disponível",
"xWillBeRemovedButRemainInstalled": "{} será removido do Obtainium mas continuará instalado no dispositivo.",
"markXSelectedAppsAsUpdated": "Marcar os {} apps selecionados como atualizados?",
"installStatusOfXWillBeResetExplanation": "Os estados de instalação dos apps selecionados serão redefinidos.\n\nIsso pode ajudar quando a versão exibida no Obtainium está incorreta devido a atualizações malsucedidas ou outros problemas.",
"settings": "Configurações",
"importFromURLList": "Importar da lista de URLs",
"line": "Linha",
"importedAppsIdDisclaimer": "Os apps importados podem ser exibidos incorretamente como se não estivessem instalados.\nPara resolver isso, reinstale eles pelo Obtainium.\nIsso não afetará os dados dos apps.\n\nIsso somente afeta a URL e os métodos de importação de terceiros.",
"followSystemThemeExplanation": "Só é possível seguir o tema do sistema ao usar aplicativos de terceiros",
"appNotFound": "O app não foi encontrado",
"updatesAvailableNotifDescription": "Notifica o usuário que atualizações estão disponíveis para um ou mais apps rastreados pelo Obtainium",
"xWasUpdatedToY": "{} foi atualizado para a versão {}.",
"showWebInAppView": "Mostrar a fonte da pagina web na tela de apps",
"deviceSupportsFollowingArchs": "Seu dispositivo suporta as seguintes arquiteturas de CPU:",
"errorCheckingUpdatesNotifDescription": "Uma notificação que mostra quando a busca de atualizações em segundo plano falha",
"obtainiumMustBeOpenToInstallApps": "O Obtainium precisa estar aberto para instalar apps",
"versionCorrectionDisabled": "Correção de versão desativada (o plugin parece não funcionar)",
"appWithIdOrNameNotFound": "Nenhum app foi encontrado com aquele ID ou nome",
"disableVersionDetection": "Desativar detecção de versão",
"noVersionDetectionExplanation": "Essa opção só seve ser usada para apps aonde a detecção de versão não funciona corretamente.",
"noCategories": "Nenhuma categoria",
"categoryDeleteWarning": "Todos os apps em categorias excluídas ficarão sem categoria.",
"uninstallFromDevice": "Desinstalar do dispositivo",
"releaseDateAsVersion": "Usar data de lançamento como número da versão",
"dontShowAPKOriginWarnings": "Não mostrar alertas de origem dos APKs",
"tryInferAppIdFromCode": "Tentar inferir o ID do app pelo código fonte",
"checkUpdateOnDetailPage": "Buscar atualizações ao abrir a tela de detalhes de um app",
"githubSourceNote": "O limite de taxa do GitHub pode ser evitado ao usar uma chave de API.",
"customLinkFilterRegex": "Filtro de link de APK personalizado por expressão regular (padrão '.apk$')",
"appsPossiblyUpdatedNotifDescription": "Notifica o usuário que atualizações de um ou mais apps podem ter sido aplicadas em segundo plano",
"bgUpdatesOnWiFiOnly": "Desativar atualizações em segundo plano fora do Wi-Fi",
"matchGroupToUse": "Corresponder grupo para o uso para a extração do número da versão por ExReg",
"filterVersionsByRegEx": "Filtrar versões por expressão regular",
"completeAppInstallationNotifChannel": "Concluir instalação do app",
"useShizuku": "Usar Shizuku ou Sui para instalação",
"useLatestAssetDateAsReleaseDate": "Usar o envio de item mais recente como a data de lançamento",
"crowdsourcedConfigsLabel": "Configurações de app pela comunidade (use ao seu próprio risco)",
"releaseDateAsVersionExplanation": "Essa opção só deve ser usada para apps quais a detecção de versão não funciona corretamente, mas uma data de lançamento está disponível.",
"intermediateLinkRegex": "Filtrar por um link 'intermediário' para visitar",
"bgTaskStarted": "Tarefa em segundo plano iniada - verifique os registros.",
"skipUpdateNotifications": "Pular notificações de atualização",
"selectX": "Selecionar {}",
"shizukuOldAndroidWithADB": "Shizuku sendo executado no Android < 8.1 com ADB - atualize o Android ou use o Sui",
"selfHostedNote": "O menu de opções \"{}\" pode ser usado para alcançar instâncias hospedadas-por-você/personalizadas de qualquer fonte.",
"sortMethod": "Método de ordenação",
"documentationLinksNote": "A página do Obtainium no GitHub visível abaixo contém links de vídeos, artigos, discussões, e outros recursos que podem te ajudar ao usar o app."
} }

View File

@ -320,6 +320,7 @@
"stayOneVersionBehind": "Manter-se uma versão atrás da mais recente", "stayOneVersionBehind": "Manter-se uma versão atrás da mais recente",
"refreshBeforeDownload": "Atualizar os detalhes da aplicação antes da transferência", "refreshBeforeDownload": "Atualizar os detalhes da aplicação antes da transferência",
"tencentAppStore": "Tencent App Store", "tencentAppStore": "Tencent App Store",
"coolApk": "CoolApk",
"name": "Nome", "name": "Nome",
"smartname": "Nome (Smart)", "smartname": "Nome (Smart)",
"sortMethod": "Método de ordenação", "sortMethod": "Método de ordenação",

View File

@ -320,6 +320,7 @@
"stayOneVersionBehind": "Не отставайте от последней версии", "stayOneVersionBehind": "Не отставайте от последней версии",
"refreshBeforeDownload": "Обновляйте информацию о приложении перед загрузкой", "refreshBeforeDownload": "Обновляйте информацию о приложении перед загрузкой",
"tencentAppStore": "Tencent App Store", "tencentAppStore": "Tencent App Store",
"coolApk": "CoolApk",
"name": "Имя", "name": "Имя",
"smartname": "Имя (умное)", "smartname": "Имя (умное)",
"sortMethod": "Метод сортировки", "sortMethod": "Метод сортировки",

View File

@ -320,6 +320,7 @@
"stayOneVersionBehind": "Håll dig en version bakom den senaste", "stayOneVersionBehind": "Håll dig en version bakom den senaste",
"refreshBeforeDownload": "Uppdatera appdetaljerna före nedladdning", "refreshBeforeDownload": "Uppdatera appdetaljerna före nedladdning",
"tencentAppStore": "Tencent App Store", "tencentAppStore": "Tencent App Store",
"coolApk": "CoolApk",
"name": "Namn", "name": "Namn",
"smartname": "Namn (Smart)", "smartname": "Namn (Smart)",
"sortMethod": "Sorteringsmetod", "sortMethod": "Sorteringsmetod",

View File

@ -320,6 +320,7 @@
"stayOneVersionBehind": "En son sürümün bir sürüm gerisinde kalın", "stayOneVersionBehind": "En son sürümün bir sürüm gerisinde kalın",
"refreshBeforeDownload": "İndirmeden önce uygulama ayrıntılarını yenileyin", "refreshBeforeDownload": "İndirmeden önce uygulama ayrıntılarını yenileyin",
"tencentAppStore": "Tencent App Store", "tencentAppStore": "Tencent App Store",
"coolApk": "CoolApk",
"name": "İsim", "name": "İsim",
"smartname": "İsim (Akıllı)", "smartname": "İsim (Akıllı)",
"sortMethod": "Sıralama Yöntemi", "sortMethod": "Sıralama Yöntemi",

View File

@ -320,6 +320,7 @@
"stayOneVersionBehind": "Залишайтеся на одну версію актуальнішою", "stayOneVersionBehind": "Залишайтеся на одну версію актуальнішою",
"refreshBeforeDownload": "Оновіть інформацію про програму перед завантаженням", "refreshBeforeDownload": "Оновіть інформацію про програму перед завантаженням",
"tencentAppStore": "Tencent App Store", "tencentAppStore": "Tencent App Store",
"coolApk": "CoolApk",
"name": "Ім'я", "name": "Ім'я",
"smartname": "Ім'я (Smart)", "smartname": "Ім'я (Smart)",
"sortMethod": "Метод сортування", "sortMethod": "Метод сортування",

View File

@ -320,11 +320,12 @@
"stayOneVersionBehind": "Stay one version behind latest", "stayOneVersionBehind": "Stay one version behind latest",
"refreshBeforeDownload": "Refresh app details before download", "refreshBeforeDownload": "Refresh app details before download",
"tencentAppStore": "Tencent App Store", "tencentAppStore": "Tencent App Store",
"coolApk": "CoolApk",
"name": "Name", "name": "Name",
"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.",
"removeAppQuestion": { "removeAppQuestion": {
"one": "Gỡ ứng dụng?", "one": "Gỡ ứng dụng?",
"other": "Gỡ ứng dụng?" "other": "Gỡ ứng dụng?"

View File

@ -320,6 +320,7 @@
"stayOneVersionBehind": "保持比最新版本落後一個版本", "stayOneVersionBehind": "保持比最新版本落後一個版本",
"refreshBeforeDownload": "下載前刷新應用程式詳細資訊", "refreshBeforeDownload": "下載前刷新應用程式詳細資訊",
"tencentAppStore": "騰訊應用寶", "tencentAppStore": "騰訊應用寶",
"coolApk": "CoolApk",
"name": "名稱", "name": "名稱",
"smartname": "名稱(智慧)", "smartname": "名稱(智慧)",
"sortMethod": "排序方式", "sortMethod": "排序方式",

View File

@ -154,7 +154,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 ' ? ' and '
: ', ')) : ', '))
.join(''); .join('');
} }

View File

@ -34,7 +34,8 @@ List<MapEntry<Locale, String>> supportedLocales = const [
MapEntry(Locale('pl'), 'Polski'), MapEntry(Locale('pl'), 'Polski'),
MapEntry(Locale('ru'), 'Русский'), MapEntry(Locale('ru'), 'Русский'),
MapEntry(Locale('bs'), 'Bosanski'), MapEntry(Locale('bs'), 'Bosanski'),
MapEntry(Locale('pt'), 'Brasileiro'), MapEntry(Locale('pt'), 'Português'),
MapEntry(Locale('pt', 'BR'), 'Brasileiro'),
MapEntry(Locale('cs'), 'Česky'), MapEntry(Locale('cs'), 'Česky'),
MapEntry(Locale('sv'), 'Svenska'), MapEntry(Locale('sv'), 'Svenska'),
MapEntry(Locale('nl'), 'Nederlands'), MapEntry(Locale('nl'), 'Nederlands'),
@ -109,11 +110,13 @@ void main() async {
); );
SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge); SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge);
} }
final np = NotificationsProvider();
await np.initialize();
runApp(MultiProvider( runApp(MultiProvider(
providers: [ providers: [
ChangeNotifierProvider(create: (context) => AppsProvider()), ChangeNotifierProvider(create: (context) => AppsProvider()),
ChangeNotifierProvider(create: (context) => SettingsProvider()), ChangeNotifierProvider(create: (context) => SettingsProvider()),
Provider(create: (context) => NotificationsProvider()), Provider(create: (context) => np),
Provider(create: (context) => LogsProvider()) Provider(create: (context) => LogsProvider())
], ],
child: EasyLocalization( child: EasyLocalization(
@ -168,6 +171,7 @@ class _ObtainiumState extends State<Obtainium> {
SettingsProvider settingsProvider = context.watch<SettingsProvider>(); SettingsProvider settingsProvider = context.watch<SettingsProvider>();
AppsProvider appsProvider = context.read<AppsProvider>(); AppsProvider appsProvider = context.read<AppsProvider>();
LogsProvider logs = context.read<LogsProvider>(); LogsProvider logs = context.read<LogsProvider>();
NotificationsProvider notifs = context.read<NotificationsProvider>();
if (settingsProvider.prefs == null) { if (settingsProvider.prefs == null) {
settingsProvider.initializeSettings(); settingsProvider.initializeSettings();
@ -211,6 +215,10 @@ class _ObtainiumState extends State<Obtainium> {
} }
} }
WidgetsBinding.instance.addPostFrameCallback((_) {
notifs.checkLaunchByNotif();
});
return DynamicColorBuilder( return DynamicColorBuilder(
builder: (ColorScheme? lightDynamic, ColorScheme? darkDynamic) { builder: (ColorScheme? lightDynamic, ColorScheme? darkDynamic) {
// Decide on a colour/brightness scheme based on OS and user settings // Decide on a colour/brightness scheme based on OS and user settings

View File

@ -2,7 +2,9 @@
// Contains a set of pre-defined ObtainiumNotification objects that should be used throughout the app // Contains a set of pre-defined ObtainiumNotification objects that should be used throughout the app
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:obtainium/main.dart';
import 'package:obtainium/providers/settings_provider.dart'; import 'package:obtainium/providers/settings_provider.dart';
import 'package:obtainium/providers/source_provider.dart'; import 'package:obtainium/providers/source_provider.dart';
@ -16,10 +18,11 @@ class ObtainiumNotification {
Importance importance; Importance importance;
int? progPercent; int? progPercent;
bool onlyAlertOnce; bool onlyAlertOnce;
String? payload;
ObtainiumNotification(this.id, this.title, this.message, this.channelCode, ObtainiumNotification(this.id, this.title, this.message, this.channelCode,
this.channelName, this.channelDescription, this.importance, this.channelName, this.channelDescription, this.importance,
{this.onlyAlertOnce = false, this.progPercent}); {this.onlyAlertOnce = false, this.progPercent, this.payload});
} }
class UpdateNotification extends ObtainiumNotification { class UpdateNotification extends ObtainiumNotification {
@ -88,7 +91,8 @@ class ErrorCheckingUpdatesNotification extends ObtainiumNotification {
'BG_UPDATE_CHECK_ERROR', 'BG_UPDATE_CHECK_ERROR',
tr('errorCheckingUpdatesNotifChannel'), tr('errorCheckingUpdatesNotifChannel'),
tr('errorCheckingUpdatesNotifDescription'), tr('errorCheckingUpdatesNotifDescription'),
Importance.high); Importance.high,
payload: "${tr('errorCheckingUpdates')}\n$error");
} }
class AppsRemovedNotification extends ObtainiumNotification { class AppsRemovedNotification extends ObtainiumNotification {
@ -173,11 +177,48 @@ class NotificationsProvider {
}; };
Future<void> initialize() async { Future<void> initialize() async {
isInitialized = await notifications.initialize(const InitializationSettings( isInitialized = await notifications.initialize(
android: AndroidInitializationSettings('ic_notification'))) ?? const InitializationSettings(
android: AndroidInitializationSettings('ic_notification')),
onDidReceiveNotificationResponse: (NotificationResponse response) {
_showNotificationPayload(response.payload);
},
) ??
false; false;
} }
checkLaunchByNotif() async {
final NotificationAppLaunchDetails? launchDetails =
await notifications.getNotificationAppLaunchDetails();
if (launchDetails?.didNotificationLaunchApp ?? false) {
_showNotificationPayload(launchDetails!.notificationResponse?.payload,
doublePop: true);
}
}
_showNotificationPayload(String? payload, {bool doublePop = false}) {
var title = (payload ?? '\n\n').split('\n').first;
var content = (payload ?? '\n\n').split('\n').sublist(1).join('\n');
globalNavigatorKey.currentState?.push(
PageRouteBuilder(
pageBuilder: (context, _, __) => AlertDialog(
title: Text(title),
content: Text(content),
actions: [
TextButton(
onPressed: () {
Navigator.of(context).pop(null);
if (doublePop) {
Navigator.of(context).pop(null);
}
},
child: Text(tr('ok'))),
],
),
),
);
}
Future<void> cancel(int id) async { Future<void> cancel(int id) async {
if (!isInitialized) { if (!isInitialized) {
await initialize(); await initialize();
@ -195,7 +236,8 @@ class NotificationsProvider {
Importance importance, Importance importance,
{bool cancelExisting = false, {bool cancelExisting = false,
int? progPercent, int? progPercent,
bool onlyAlertOnce = false}) async { bool onlyAlertOnce = false,
String? payload}) async {
if (cancelExisting) { if (cancelExisting) {
await cancel(id); await cancel(id);
} }
@ -216,7 +258,8 @@ class NotificationsProvider {
maxProgress: 100, maxProgress: 100,
showProgress: progPercent != null, showProgress: progPercent != null,
onlyAlertOnce: onlyAlertOnce, onlyAlertOnce: onlyAlertOnce,
indeterminate: progPercent != null && progPercent < 0))); indeterminate: progPercent != null && progPercent < 0)),
payload: payload);
} }
Future<void> notify(ObtainiumNotification notif, Future<void> notify(ObtainiumNotification notif,
@ -225,5 +268,6 @@ class NotificationsProvider {
notif.channelName, notif.channelDescription, notif.importance, notif.channelName, notif.channelDescription, notif.importance,
cancelExisting: cancelExisting, cancelExisting: cancelExisting,
onlyAlertOnce: notif.onlyAlertOnce, onlyAlertOnce: notif.onlyAlertOnce,
progPercent: notif.progPercent); progPercent: notif.progPercent,
payload: notif.payload);
} }

View File

@ -80,10 +80,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: archive name: archive
sha256: "7dcbd0f87fe5f61cb28da39a1a8b70dbc106e2fe0516f7836eb7bb2948481a12" sha256: a7f37ff061d7abc2fcf213554b9dcaca713c5853afa5c065c44888bc9ccaf813
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.0.5" version: "4.0.6"
args: args:
dependency: transitive dependency: transitive
description: description:
@ -312,10 +312,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: file_picker name: file_picker
sha256: "36a1652d99cb6bf8ccc8b9f43aded1fd60b234d23ce78af422c07f950a436ef7" sha256: "8986dec4581b4bcd4b6df5d75a2ea0bede3db802f500635d05fa8be298f9467f"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "10.0.0" version: "10.1.2"
fixnum: fixnum:
dependency: transitive dependency: transitive
description: description:
@ -564,10 +564,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: html name: html
sha256: "1fc58edeaec4307368c60d59b7e15b9d658b57d7f3125098b6294153c75337ec" sha256: "9475be233c437f0e3637af55e7702cbbe5c23a68bd56e8a5fa2d426297b7c6c8"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.15.5" version: "0.15.5+1"
http: http:
dependency: "direct main" dependency: "direct main"
description: description:
@ -756,26 +756,26 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: permission_handler name: permission_handler
sha256: "59adad729136f01ea9e35a48f5d1395e25cba6cea552249ddbe9cf950f5d7849" sha256: "2d070d8684b68efb580a5997eb62f675e8a885ef0be6e754fb9ef489c177470f"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "11.4.0" version: "12.0.0+1"
permission_handler_android: permission_handler_android:
dependency: transitive dependency: transitive
description: description:
name: permission_handler_android name: permission_handler_android
sha256: d3971dcdd76182a0c198c096b5db2f0884b0d4196723d21a866fc4cdea057ebc sha256: "1e3bc410ca1bf84662104b100eb126e066cb55791b7451307f9708d4007350e6"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "12.1.0" version: "13.0.1"
permission_handler_apple: permission_handler_apple:
dependency: transitive dependency: transitive
description: description:
name: permission_handler_apple name: permission_handler_apple
sha256: f84a188e79a35c687c132a0a0556c254747a08561e99ab933f12f6ca71ef3c98 sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "9.4.6" version: "9.4.7"
permission_handler_html: permission_handler_html:
dependency: transitive dependency: transitive
description: description:
@ -860,10 +860,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: posix name: posix
sha256: a0117dc2167805aa9125b82eee515cc891819bac2f538c83646d355b16f58b9a sha256: f0d7856b6ca1887cfa6d1d394056a296ae33489db914e365e2044fdada449e62
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "6.0.1" version: "6.0.2"
provider: provider:
dependency: "direct main" dependency: "direct main"
description: description:
@ -900,10 +900,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: shared_preferences_android name: shared_preferences_android
sha256: "3ec7210872c4ba945e3244982918e502fa2bfb5230dff6832459ca0e1879b7ad" sha256: c2c8c46297b5d6a80bed7741ec1f2759742c77d272f1a1698176ae828f8e1a18
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.4.8" version: "2.4.9"
shared_preferences_foundation: shared_preferences_foundation:
dependency: transitive dependency: transitive
description: description:
@ -1195,34 +1195,34 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: webview_flutter name: webview_flutter
sha256: "889a0a678e7c793c308c68739996227c9661590605e70b1f6cf6b9a6634f7aec" sha256: caf0f5a1012aa3c2d33c4215adc72dc1194bb59a2d3ed901f457965626805e66
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.10.0" version: "4.11.0"
webview_flutter_android: webview_flutter_android:
dependency: transitive dependency: transitive
description: description:
name: webview_flutter_android name: webview_flutter_android
sha256: e09150b28a07933839adef0e4a088bb43e8c8d9e6b93025b01882d4067a58ab0 sha256: "3315f1306eb22f98c48fe203fb8a448fb23f9e49d55a4da6e17ab7d795774166"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.3.4" version: "4.4.0"
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: d937581d6e558908d7ae3dc1989c4f87b786891ab47bb9df7de548a151779d8d sha256: "18b1640839cf6546784a524c72aded5b6e86b23e7167dc2311cc96f7658b64bd"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.10.0" version: "2.11.0"
webview_flutter_wkwebview: webview_flutter_wkwebview:
dependency: transitive dependency: transitive
description: description:
name: webview_flutter_wkwebview name: webview_flutter_wkwebview
sha256: c14455137ce60a68e1ccaf4e8f2dae8cebcb3465ddaa2fcfb57584fb7c5afe4d sha256: c9f9be526fa0d3347374ceaa05c4b3acb85f4f112abd62f7d74b7d301fa515ff
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.18.5" version: "3.20.0"
win32: win32:
dependency: transitive dependency: transitive
description: description:

View File

@ -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.1.49+2306 version: 1.1.50+2307
environment: environment:
sdk: ^3.6.0 sdk: ^3.6.0
@ -44,7 +44,7 @@ dependencies:
html: ^0.15.0 html: ^0.15.0
shared_preferences: ^2.0.15 shared_preferences: ^2.0.15
url_launcher: ^6.1.5 url_launcher: ^6.1.5
permission_handler: ^11.0.0 permission_handler: ^12.0.0+1
fluttertoast: ^8.0.9 fluttertoast: ^8.0.9
device_info_plus: ^11.0.0 device_info_plus: ^11.0.0
file_picker: ^10.0.0 file_picker: ^10.0.0