From 600e160bf0b8be976efcc7e92d95e38fb28dacaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Koby=C5=82ko?= Date: Sun, 5 Mar 2023 21:01:19 +0100 Subject: [PATCH 1/7] Add PT language --- .../{values-de => values-de-rDE}/strings.xml | 10 +- .../src/main/res/values-pt-rPT/strings.xml | 715 ++++++++++++++++++ core/locale/src/main/res/values/strings.xml | 6 +- gradle/libs.versions.toml | 2 +- .../{values-de => values-de-rDE}/strings.xml | 10 +- .../src/main/res/values-pt-rPT/strings.xml | 715 ++++++++++++++++++ resources/src/main/res/values/strings.xml | 6 +- 7 files changed, 1451 insertions(+), 13 deletions(-) rename core/locale/src/main/res/{values-de => values-de-rDE}/strings.xml (99%) create mode 100644 core/locale/src/main/res/values-pt-rPT/strings.xml rename resources/src/main/res/{values-de => values-de-rDE}/strings.xml (99%) create mode 100644 resources/src/main/res/values-pt-rPT/strings.xml diff --git a/core/locale/src/main/res/values-de/strings.xml b/core/locale/src/main/res/values-de-rDE/strings.xml similarity index 99% rename from core/locale/src/main/res/values-de/strings.xml rename to core/locale/src/main/res/values-de-rDE/strings.xml index 820f96c9..592403db 100644 --- a/core/locale/src/main/res/values-de/strings.xml +++ b/core/locale/src/main/res/values-de-rDE/strings.xml @@ -5,7 +5,7 @@ Release: Working copy Locale: de-DE, German (Germany) Exported by: rafakob - Exported at: Thu, 23 Feb 2023 14:33:22 -0800 + Exported at: Sun, 05 Mar 2023 11:46:31 -0800 --> Es gibt keinen korrekten QR-Code in dem ausgewählten Bild. Bitte versuch ein anderes Bild. Dienst auswählen @@ -681,8 +681,8 @@ Google Drive Sync Möchtest du deine Sicherungsdatei aus Google Drive löschen? Google Sync wird deaktiviert sein. Deine Tokens werden lokal bestehen bleiben, aber die 2FAS App wird aus deinem Google Account auf diesem und deinen anderen synchronisierten Geräten ausgeloggt. - Warten auf Synchronisierung… - Synchronisiere… + Warten auf Synchronisierung... + Synchronisiere... Du wirst eine verschlüsselte Sicherungsdatei importieren. Wähle eine JSON Datei aus Exportiere deine Konten von Aegis in eine unverschlüsselte JSON Datei und lade sie über die \"JSON Datei auswählen\" Option aus. Vergiss nicht nach einem erfolgreichen Import die Datei zu entfernen. @@ -710,4 +710,6 @@ Ein SSL-Fehler ist aufgetreten, wodurch eine sichere Verbindung zum Server nicht hergestellt werden kann. Stelle sicher, dass du die neueste App-Version hast oder versuche, das Netzwerk zu ändern. Die Datei, die du versuchst zu importieren, ist zu groß. Die Größenbeschränkung beträgt 10 MB. Die Datei, die du versuchst zu importieren, ist ungültig oder beschädigt. Bitte wähle eine andere Datei. + Aktive Suche + Aktive Suche beim Starten diff --git a/core/locale/src/main/res/values-pt-rPT/strings.xml b/core/locale/src/main/res/values-pt-rPT/strings.xml new file mode 100644 index 00000000..02d7a761 --- /dev/null +++ b/core/locale/src/main/res/values-pt-rPT/strings.xml @@ -0,0 +1,715 @@ + + + + + Usada para digitalizar códigos QR. + Podes usar o Face ID para desbloqueares a aplicação. + + 2FAS Authenticator + 2FA Authenticator (2FAS App) + OK + Adicionar + + Cancelar + Notificações + + %1$d de %2$d + + O serviço já foi removido da cópia de segurança. + + O serviço já foi modificado da cópia de segurança. + + O utilizador está acima da cota no iCloud + + O iCloud não está disponível + + O iCloud foi desativado pelo utilizador + + Cópia de Segurança 2FAS + Fechar + Continuar + Copiar + Remover + Dispensar + Concluído + Editar + Digitar código manualmente + Erro + Informação + Próximo + Aviso + Desligado + Ligado + + Aponta a tua câmara à tela para digitalizares o código QR + Renomear + Tentar novamente + Guardar + Digitalizar Código QR + Serviço + Definir + Saltar + Tokens + Atenção + Sem resultados + Customizar + Confirmar + Recusar + + O texto fornecido é muito longo (máximo de %d caracteres) + Entendido! + A verificar... + + Confirma a tua impressão digital para continuar. + + Usa o teu PIN desta vez + + És incrível! + O teu telemóvel acabou de se tornar numa privada e segura chave para os teus serviços online graças à aplicação 2FAS - confiada por mais de 3 milhões de utilizadores mundialmente. + Simples + Conecta o 2FAS com os teus serviços online. Ativa a segurança de dois fatores em segundos com o teu código QR. + Privado + O 2FAS respeita e protege a tua privacidade. Esta aplicação nunca irá coletar, processar, ou usar quaisquer dados pessoais. + Seguro + Os teus tokens estão guardados offline no armazenamento do teu dispositivo, por isso lembra-te de fazer uma cópia de segurança aos teus serviços! Utiliza a Sincronização através do iCloud e uma palavra-passe ou PIN para os proteger de acesso não autorizado e dano ao dispositivo. + + Começa a usar o 2FAS + Termos de serviço + Conecta as tuas contas de serviços online com o 2FAS ou importa os teus tokens. + Conecta um novo serviço + + Importa um ficheiro de cópia de segurança 2FAS + + Importa do Google Authenticator + + Não sabes o que fazer? + + Exporta as tuas contas do Google Authenticator para um código QR através da opção \"Transferir Contas\". De seguida, captura a tela e usa o botão \"Escolher código QR\" abaixo. Se estiveres a importar códigos de outro dispositivo, usa o botão \"Digitalizar código QR\". + + Escolher código QR + + Digitalizar código QR + + A adicionar um novo código + + A Chave do Serviço foi copiada + + Este token já está presente na lista + O Contador foi copiado + O Token foi copiado + O Token seguinte foi copiado + + Queres adicionar este código: %s? + + Abrir Definições + PIN incorreto + Mudar o PIN + Por favor, confirma que és o dono deste dispositivo + + Por favor, confirma o teu novo PIN + Criar PIN + Por favor, digita o teu PIN atual + + Por favor, digita o teu novo PIN + + Por favor, digita o teu PIN + + Muitas tentativas. Por favor, tenta novamente %s + Muitas tentativas. Por favor, tenta novamente em %s minutos. + + Muitas tentativas. Por favor, tenta novamente mais tarde. + + Muitas tentativas. Por favor, tenta em um minuto + Cópia de Segurança e Sincronização + Escolher tópico + Configura o serviço de e-mail e tenta novamente + Geral + Os serviços de e-mail não estão disponíveis + Problema + Segurança + Selecionar tamanho do PIN + Definições + + Sugestão + Avançado + Widgets + Mostrar os serviços selecionados nos Widgets da Página Inicial + + Depois de ativares os widgets, todos os teus tokens irão ser acessíveis sem precisar de código PIN.\n\nTens a certeza que queres ativar os widgets? + Mostrar token seguinte + Mostrar os tokens recebidos na lista. + Lixo + Restaurar + O Lixo está vazio + Partilhar aplicação + + Tens a certeza que queres eliminar o token de: + Mover para o Lixo + Informação adicional + Escolher método + Chave de Serviço duplicada + + Chave de Serviço incorreta (apenas números 2 a 7, letras), máx, 512 caracteres + Ok, vamos tentar novamente + + Aponta a tua câmara ao ecrã para digitalizar o código QR + + Chave do Serviço + Este código QR leva-te à App Store + + Eliminar Token + + Procurar serviço + + Desculpa, o serviço não foi encontrado + + Tenta novamente com um termo de pesquisa diferente + A chave é muito pequena. Mínimo 4 caracteres + Nome do Serviço + + A chave de serviço do código digitalizado já está a ser utilizada em %s. Deves estar a digitalizá-lo novamente + Este código está incorreto ou não é suportado. Tenta novamente. + Tipo de Nome do Serviço + Digita o Nome do Serviço + + Infelizmente, não sabemos esse serviço. Como queres nomeá-lo? + + Não irás poder mais restaurar este token. + Cor do emblema + Mudar ícone da marca + Mudar nome + Informação do Serviço + Personalização + Ícone da marca + Nome + + Eliminar este serviço da aplicação 2FAS + + Nome (1 ou 2 caracteres): + Escolher cor do fundo: + %s foi adicionado + Próximo Token: %s + Valor do Token seguinte + Os meus Tokens + A eliminar grupo + + Todos os tokens irão ser movidos para o grupo: \"Os meus tokens\" + Adicionar grupo + Nome do grupo: + Selecionar da Galeria + A câmara está indisponível + + Verifica se a aplicação possuí as permissões necessárias nas Definições do Sistema + Não foram encontrados códigos QR + + Não existe um código QR correto na imagem selecionada. Por favor tenta uma imagem diferente. + Selecionar serviço + Qual é o serviço que queres adicionar? + Digita este token novamente + + Desbloqueia e digita este token novamente + Grupo + Selecionar grupo + Importar tokens 2FA da aplicação Google Authenticator + Este código QR permite importar tokens do Google Authenticator + + %1$d de %2$d + Os tokens irão ser importados. + Ordenar por + + A - Z + + Z - A + Manual + Avançado + + Alerta + + Mudar definições avançadas não é recomendado. Fá-lo apenas quando o fornecedor do 2FA pedir e quando tiveres instruções claras. + Definições do token + Autenticação OTP + Algoritmo + Tempo de atualização + Número de dígitos + Contador + Contador inicial + + %d s + HOTP + TOTP + Mudar definições avançadas não é recomendado. Fá-lo apenas quando o fornecedor do 2FA pedir e quando tiveres instruções claras. + Melhor prática + O serviço foi adicionado com sucesso. Nós recomendamos fortemente que tu + elimines o código QR da tua galeria. + Se alguém tiver acesso a este código QR, irão poder usar os códigos 2FA para este serviço. + Pedir um ícone + Avisa-nos no Discord + Entra no nosso servidor de Discord + e deixa os utilizadores votarem para os ícones pedidos. + ou + Avisa o fornecedor do serviço + Podes usar Redes Sociais ou e-mail e partilhar este texto com eles: + Olá! Estou a usar a aplicação 2FAS para entrar no teu serviço com autenticação de dois fatores. Contudo, o teu ícone está a faltar! Podes submeter o teu ícone aqui: https://2fas.com/yb + https://2fas.com/yb + Não te esqueças de mencionar a conta oficial da empresa! + Não consegues encontrar um ícone de uma marca na aplicação 2FAS? + Pedir um ícone de uma marca + Pedir um ícone de uma marca + Seleciona o método pedido + Pedir um ícone enquanto utilizador + Envia um ícone enquanto empresa + + Não vais conseguir entrar na tua conta %s sem este token enquanto tiveres ativado a autenticação de dois fatores para essa conta. + Mostrar a Chave do Serviço + Copiar a Chave do Serviço + + Contador com os segundos restantes para a mudança do token + Remover + Serviço removido + + Este campo contém uma Chave Secreta. Para a revelar, usa o botão Mostrar. Só irá funcionar se tiveres configurado o PIN da aplicação para o ecrã bloqueado + Nome do serviço: %s + Informação adicional: %s + Token %s. Clica para copiares + Editar %s + Etiqueta do serviço com o nome %1$s e cor %2$s + Ícone do serviço %s + Selecionado + Não selecionado + Cor do emblema: %s + Dispensado + Apenas números de 2 a 9, letras. Pelo menos 4 caracteres + Adicionar serviço + Adicionar grupo + + Usa o botão Adicionar Serviço para adicionar um novo serviço + Sem resultados para a pesquisa + + Usa Ordenar Por para definir a ordenação dos serviços + A carregar conteúdo + Não foi possível fazer a cópia de segurança dos tokens porque a chave secreta de \"%s\" contém caracteres inválidos. Remove-a da lista e tenta novamente. + Importar + Exportar + A cópia de segurança 2FAS irá ser desativada para proteger a sua integridade + Erro ao exportar o ficheiro + A importação foi concluída com sucesso + + Uma outra aplicação está a usar a câmara. Se fechar outras aplicações não funcionar, tenta reiniciar o dispositivo + + A câmara não está disponível devido a sobrecarga do sistema. Tenta reiniciar o dispositivo + Não é possível iniciar a câmara. Tenta reiniciar o dispositivo + Não é possível iniciar a câmara em modo de ecrã dividido. Abre a aplicação em tela cheia e tenta novamente + Como restaurar a aplicação 2FAS? + Restauro da aplicação + + Se te esqueceste do PIN ou queres formatar a aplicação 2FAS, tens de reinstalar a aplicação. + + Avisamos que se não tiveres uma cópia de segurança e formatares a aplicação, irás perder o acesso aos teus códigos. E, por isso, irás perder acesso às tuas contas protegidas por autenticação de dois fatores. + + Se tiveres uma cópia de segurança, não te preocupes, irás poder restaurar todos os teus códigos. + Cópia de Segurança na nuvem + Sincronização através do iCloud + RECOMENDAÇÃO: A sincronização através do iCloud mantém os teus tokens seguros em caso de perca ou dano do teu dispositivo. Deixa-a ligada. + Ficheiro de Cópia de Segurança + + Usa o Ficheiro de Cópia de Segurança para teres acesso offline dos teus tokens + Remoção da Cópia de Segurança + Eliminar cópia de segurança 2FAS + Atenção! Se eliminares a Cópia de Segurança 2FAS, irás apagar também todos os tokens de outros dispositivos sincronizados com esta conta. Para preservar os tokens noutros dispositivos, verifica que desativaste a cópia de segurança 2FAS antes da eliminação + + Eu quero eliminar esta Cópia de Segurança + Exportar cópia de segurança para ficheiro + + Podes importar ficheiros exportados de outros dispositivos com a aplicação 2FAS + Exportar para ficheiro + Verificar PIN + Guardar ficheiro + Importar ficheiro de cópia de segurança + + Irás importar um ficheiro de cópia de segurança a conter + Importar ficheiro + Escolher outro ficheiro + Nada para importar + Erro de ficheiro! + + Os serviços do ficheiro irão ser fundidos com os da aplicação + Ou este ficheiro está vazio, ou todos os serviços dentro dele já se encontram disponíveis na aplicação + Precisas de uma versão mais recente da aplicação para importares o conteúdo do ficheiro. Podes encontrar a versão mais recente na App Store + Não foi possível ler este ficheiro. Pode estar danificado, ou ocorreu um erro ao acessá-lo. Por favor escolhe outro + Palavra-passe + Repetir palavra-passe + Caráter incorreto. Usa letras de A-Z, dígitos e caracteres especiais: -_/!#$%&+*~@?=^.,\'(){}[]:;<>| + A frase fornecida é muito curta (mín. 3 caracteres) + As palavras-passes não coincidem + Guardar e exportar + Para aumentar a proteção do teu ficheiro de cópia de segurança, por favor, define a palavra-passe + Digita a palavra-passe para este ficheiro de cópia de segurança para proceder ao processo de importação + Define uma palavra-passe para este ficheiro de cópia de segurança + Palavra-passe Incorreta + + %s novo(s) serviço(s) + + %s serviço(s) importado(s) de ficheiro + + Existe um problema com o iCloud. Verifica as definições do sistema + + Este ficheiro está numa versão de formato mais recente do que a aplicação suporta + + Este ficheiro está encriptado. Nós suportamos apenas ficheiros não encriptados. + Copiar token + + Sim, eu quero eliminar este serviço + Neutro + Azul claro + Índigo + Roxo + Turquesa + Verde + Vermelho + Laranja + Amarelo + Conhecimento + Ajuda e Partilha + Diz a um amigo + Escreve uma crítica + Sobre + Política de Privacidade + Termos de Serviço + Versão da aplicação: %s + Sem limite + Código PIN + Segurança da aplicação + Definições de bloqueio + Face ID + Touch ID + + Bloquear após X tentativas falhadas: + Selecionar o número máximo de tentativas de códigos mal sucedidos antes de bloquear a aplicação + Tempo de bloqueio + 3 minutos + 5 minutos + 10 minutos + Máximo de tentativas falhadas + Código de 4 dígitos + Código de 6 dígitos + Autenticação Biométrica + Doações + Doar a 2FAS + Nova versão + Uma nova versão de 2FAS está disponível na AppStore. Atualiza agora! + Atualiza agora + + Saltar esta versão + + Atualizar depois + Extensão do Navegador de Internet + Extensão de Navegador de Internet 2FAS + Instala a extensão do navegador de Internet 2FAS no teu computador + Conecta-a com a aplicação 2FAS + Mais informação: + 2fas.com/be + Conecta com o navegador de Internet + https://www.2fas.com/be + Conexão bem sucedida! + O 2FAS irá enviar uma notificação sempre que entrares nos teus serviços online ao usar este navegador de internet. Não irás precisar mais de digitar novamente os teus tokens a cada uso. + A conexão falhou :( + Este código QR não foi reconhecido, e a 2FAS não conseguiu conectar este dispositivo com a extensão do navegador de Internet. Por favor, tenta novamente. + + Já está conectado! + + Esta extensão do navegador de Internet já está conectada com este dispositivo. + Entrar em contacto + Conexão com o navegador de Internet + + Dispositivos conectados (navegadores de Internet) + Adicionar novo + + Nome do dispositivo + Nome do dispositivo + Nome + Este nome irá ajudar-te a identificar este dispositivo entre outros conectados com a extensão do navegador de Internet 2FAS + Definições da Extensão do Navegador de Internet + <NOME_DESCONHECIDO> + %1$s pediu um token 2FA para %2$s. Seleciona um serviço para autorizar e guardar com este domínio. + Pedido do Navegador de Internet + + O token foi enviado com sucesso! + Erro ao enviar o código. %s + Eliminar dispositivo + Tens a certeza que queres eliminar este dispositivo? + Data de conexão + Esquecer este navegador de internet + + Lista de domínios conectados + Eliminar domínio? + A próxima vez que usares a extensão do navegador para entrar em %s, irá te ser pedido para conectares este domínio novamente. + Notificações + Para teres acesso a funções como a Extensão do Navegador de Internet, a aplicação precisa de acesso para enviar notificações. Podes mudar esta definição nas Definições do Sistema a qualquer momento. + Pedido expirado + Pedido de Token 2FA + Queres partilhar o código 2FA de\u0020 + Sem notificações + 2 F A S + 2FAS + O Google Drive não está disponível + O Google Drive foi desativado pelo utilizador + Precisas de uma versão mais recente da aplicação para importares o conteúdo do ficheiro. Podes encontrar a versão mais recente na Google Play Store + Este código QR leva-te à Google Play Store + Os teus tokens estão guardados offline no armazenamento do teu dispositivo, por isso lembra-te de fazer uma cópia de segurança aos teus serviços! Utiliza a Sincronização através do Google Drive e uma palavra-passe ou PIN para os proteger de acesso não autorizado e dano ao dispositivo. + Uma nova versão de 2FAS está disponível na Google Play Store. Atualiza agora! + O PIN não coincide! Por favor, tenta novamente. + Opções de Desenvolvedor + Importar tokens + Resultado da conexão + ATENÇÃO + Aponta a tua câmara para o código QR certo e digitaliza novamente. + Queres descartar as alterações? + Mudanças não guardadas + A chave tem um formato inválido + Erro de sistema! Não existe uma aplicação de galeria no sistema. + Permissão do Google Drive + Precisamos de permissão do Google Drive para guardar os ficheiros de cópia de segurança nos dados de aplicações. + É necessária uma conexão de Internet + Para sincronizares com o Google, precisas de uma conexão de Internet. + Para removeres o acesso do Google Drive, precisas de uma conexão de Internet. + Guarda e sincroniza automaticamente o teu ficheiro de cópia de segurança na pasta escondida no teu Google Drive. Só a aplicação 2FAS consegue aceder a esta pasta. + Ocorreu um erro na sincronização da cópia de segurança. Por favor, reinicia a aplicação depois de alguns minutos e tenta novamente. + Ocorreu um erro na criptografia da cópia de segurança. Por favor, coloca a tua palavra-passe novamente. + Ocorreu um erro na descriptografia da cópia de segurança. Por favor, coloca a tua palavra-passe novamente. + Existe um problema com o iCloud. Verifica as definições do sistema + Houve um problema com as permissões da tua conta do Google Drive. Tenta ativar e desativar a sincronização. + A tua cópia de segurança está protegida por palavra-passe. Liga-a e digita a tua palavra-passe. + A tua cópia de segurança está protegida por palavra-passe mas a que forneceste está incorreta. Liga-a e digita a tua palavra-passe. + Atribuição de Serviço + Personalização + Mudar emblema + Avançado + Pedir um ícone + Editar nome + Tens a certeza que queres eliminar este grupo? + O teu ficheiro de cópia de segurança está pronto para exportar + Exporta este ficheiro para manter os teus tokens 2FAS numa cópia de segurança segura. Irás poder importá-lo depois para este ou outros dispositivos com a aplicação 2FAS. + Exportar ficheiro sem palavra-passe (não recomendado) + O ficheiro irá ser sincronizado com a lista de serviços da aplicação. + Talvez depois + Ligar + Não foram adicionados serviços + RECOMENDAÇÃO: A sincronização através do Google Drive mantém os teus tokens seguros em caso de perca ou dano do teu dispositivo. Deixa-a ligada. + Estás a desligar a Sincronização do Google Drive? + Os tokens 2FA irão continuar no teu dispositivo e no teu Google Drive, mas não irão ser sincronizados. Irás também desconectar a tua Conta Google. + Lembra-te, em caso de perca ou dano deste dispositivo ou a eliminação da aplicação, poderás não conseguir recuperar os teus tokens, e irás perder acesso às tuas contas online protegidas com 2FA. + Protege um ficheiro de cópia de segurança do Google Drive com uma palavra-passe + Eliminar palavra-passe + Eliminar a palavra-passe do ficheiro da cópia de segurança do teu Google Drive + Conta Google + Última sincronização + O 2FAS irá enviar uma notificação sempre que entrares nos teus serviços online ao usar este navegador de internet. Não irás precisar mais de digitar novamente os teus tokens a cada uso. + Nome do Navegador de Internet + Autenticar + Usa as tuas credenciais biométricas + Licenças de código aberto + Podes importar os teus tokens para a 2FAS de aplicações diferentes. Escolhe uma aplicação da lista e segue as instruções. + Selecionar aplicação + Google Authenticator + Aegis + Raivo OTP + Autenticação 2FAS + Sim + Não + Procurar + Nenhuma aplicação suporta esta ligação + Permissão da Câmara + A permissão da câmara é necessária para digitalizares códigos QR. Se quiseres usar esta função, vai a Informações da Aplicação, Permissões e ativa a Câmara. + Desativar PIN + Por favor digita o teu novo PIN de %s + PIN incorreto! Por favor tenta outra vez + Biometria + Ajuda 2FAS + Opções de Desenvolvedor + Bloqueio Biométrico + Tema + Auto + Auto - Definição do Sistema + Escuro + Claro + O token foi copiado para a área de transferência! + O token seguinte foi copiado para a área de transferência! + Queres eliminar permanentemente este serviço de 2FA? + Adicionar manualmente + Este código QR não funciona! + + Não foi possível ler o código QR da imagem! + Tenta selecionar uma imagem diferente. + Eliminar serviço permanentemente + + O serviço não foi adicionado porque a Chave de Serviço é inválida. Tenta novamente. + + Um serviço com esta chave já existe. Queres sobrepô-lo? + A chave contém caracteres inválidos + Mostrar a Chave do Serviço + + A tua Chave de Serviço está protegida. Por favor, adiciona um PIN ou um bloqueio por impressão digital para a ver. + A lista de serviços está vazia + Usa o butão \"+\" para adicionar um novo serviço + Não irás poder entrar na tua conta %s sem este token enquanto tiveres a autenticação de dois fatores ativada para essa conta.\n\nNão irás poder restaurar este token do lixo da 2FAS. + Os serviços foram importados com sucesso! + + Precisas de uma conexão de Internet para sincronizar a tua cópia de segurança. Por favor, liga-te à Internet e tenta novamente. + Atualizar aplicação + + Por favor atualiza para a versão mais recente de 2FAS para adquirir todas as funções e manter um nível de segurança elevado. + Estás a eliminar + + da tua lista de serviços 2FAS.\n\nLembra-te, enquanto tiveres a autenticação de dois fatores ativada, não irás poder entrar na tua conta %s sem este token. + Apagar + Exportar + Partilhar + Importar cópia de segurança do ficheiro + Tu irás importar o ficheiro de cópia de segurança com + Importar + Os tokens visíveis no widget não são protegidos pelo teu código PIN. Tens a certeza que os queres apresentar no widget? + ATENÇÃO! + Sim, tenho a certeza + Cópia de Segurança 2FAS + Liga a cópia de segurança 2FAS e mantém os teus códigos seguros no Google Drive. + Desculpa, marca não encontrada + + Seleciona que serviços vão estar visíveis no widget: + Desativar Sincronização + Cancelar + Definir palavra-passe + Eliminar cópia de segurança do Google Drive + + Se eliminares este ficheiro do teu Google Drive, a sincronização em todos os teus dispositivos irá ser desativada, e os teus tokens irão permanecer apenas neste e noutros dispositivos através do armazenamento local. + A tua aplicação 2FAS já está conectada com este navegador de Internet. + + Digitaliza o código QR novamente + Erro + + O código QR digitalizado contém um formato que não é suportado. Por favor, tenta novamente. + Ocorreu um erro desconhecido ao digitalizar o código QR. Por favor, tenta novamente. + Usar o PIN desta vez + Ativar autenticação + Cancelar + + Para ativar o Bloqueio por Biometria, precisas de ativar e definir um código PIN. + Seleciona o tempo para o qual a aplicação será bloqueada. + Parece que, ou ficaste sem espaço no disco, ou um evento no passado danificou a base de dados + A cópia de segurança na nuvem foi transferida para a nova versão. Atualiza a aplicação + A cópia de segurança na nuvem está encriptada. Atualiza a aplicação para suportar esta função + Continuar para a aplicação + Cancelar + Autorizar + Dispensar + Pedido enviado + Enviar token? + %1$s pediu um token 2FAS para %2$s + Erro ao enviar token + Este website não foi conectado + Abre a aplicação e seleciona um serviço para este domínio + Abre a aplicação e verifica se a extensão do navegador de Internet está devidamente conectada + Houve um problema com a conexão + Por favor tenta novamente + Erro + Para a extensão do navegador de internet funcionar, por favor adiciona serviços à aplicação 2FAS + Aprovar + Recusar + Liga o código PIN e a autenticação por Face ID para prevenir acesso não autorizado aos teus tokens neste dispositivo. + Liga o código PIN e a autenticação por Touch ID para prevenir acesso não autorizado aos teus tokens neste dispositivo. + O código fornecido está incorreto. Por favor, verifica novamente + O código fornecido expirou. Por favor contacta-nos para obter um novo + Não existe acesso à Internet. Por favor verifica a conexão e tenta novamente + Parece haver um problema com o nosso servidor. Se continuar por favor contacta-nos\u0020 + A operação falhou + Registros enviados + Vamos verificar, mas pode demorar algum tempo. + Enviar + A enviar registros + O código fornecido pela equipa de ajuda foi preenchido automaticamente. Enviar registros? + Por favor digita ou cola o código fornecido pela nossa equipa de ajuda + Enviar registros + Vê só esta aplicação de autenticação em 2 fatores: https://2fas.com + Reconhecimentos + Importar de uma aplicação externa + + momento atrás + momentos atrás + + + %d minuto atrás + %d minutos atrás + + + %d hora atrás + %d horas atrás + + + %d dia atrás + %d dias atrás + + + %d semana atrás + %d semanas atrás + + + %d mês atrás + %d meses atrás + + Ocorreu um erro desconhecido! Tenta novamente! + O ficheiro foi guardado com sucesso! + Não foi possível partilhar o ficheiro! + Escreve a tua palavra-passe + Digita a palavra-passe de segurança para proceder com a remoção. + Digita a palavra-passe de segurança para proceder com a remoção do acesso ao Google. + Definições de sincronização + Ficheiro local + Sincronização através do Google Drive + Queres eliminar o teu ficheiro de cópia de segurança do Google Drive? + A sincronização através do Google irá ser desativada. Os teus tokens irão permanecer localmente, mas a aplicação 2FAS será desconectada da tua Conta Google, neste e noutros dispositivos sincronizados. + A aguardar para sincronizar... + A sincronizar... + Irás importar um ficheiro de cópia de segurança encriptado. + Escolhe o ficheiro JSON + Exporta as tuas contas da aplicação Aegis para um ficheiro JSON não encriptado e usa o botão \"Escolhe o ficheiro JSON\" para importá-lo. Lembra-te de remover o ficheiro após importares com sucesso. + Usa a opção \"Exporta OTPs para ficheiro ZIP\" nas definições da aplicação Raivo, guarda o ficheiro ZIP, extrai-o e usa o botão \"Escolhe o ficheiro JSON\" para importar o ficheiro JSON. + Contudo, não existe nenhum serviço que pode ser importado. + Tenta novamente + Prosseguir + A importar tokens 2FA da aplicação Google Authenticator + A importar tokens 2FA da aplicação Aegis + A importar tokens 2FA da aplicação Raivo + Este código QR permite importar tokens do Google Authenticator + Este ficheiro JSON permite importar tokens da aplicação Aegis. + Este ficheiro JSON permite importar tokens da aplicação Raivo. + Não foi possível ler nenhum token. Tenta selecionar um ficheiro diferente. + Informação da sincronização através do Google Drive + Tens a certeza? Sem a sincronização através do Google Drive, não irás poder restaurar os teus tokens se perderes ou formatares o teu telemóvel! + O código foi enviado com sucesso + Ocorreu um erro ao enviar o código + Adicionar novo serviço + Customizar serviço + Sugerido + Todos os serviços + Outros serviços + Erro SSL + Ocorreu um erro SSL, logo não foi possível fazer uma conexão segura ao servidor. Garante que tens a versão mais recente da aplicação ou tenta mudar a conexão de Internet. + O ficheiro que estás a tentar importar é muito grande. O limite de tamanho é 10 MB. + O ficheiro que estás a tentar importar é inválido ou está danificado. Por favor, escolhe outro ficheiro. + Pesquisa ativa + Pesquisa ativa ao iniciar + diff --git a/core/locale/src/main/res/values/strings.xml b/core/locale/src/main/res/values/strings.xml index a00845cb..f542b69c 100644 --- a/core/locale/src/main/res/values/strings.xml +++ b/core/locale/src/main/res/values/strings.xml @@ -5,7 +5,7 @@ Release: Working copy Locale: en, English Exported by: rafakob - Exported at: Thu, 23 Feb 2023 14:33:22 -0800 + Exported at: Sun, 05 Mar 2023 11:46:31 -0800 --> There is no correct QR code in the selected image. Please try a different image. Select Service @@ -710,4 +710,6 @@ An SSL error has occurred and a secure connection to the server cannot be made. Ensure you have the latest version of the app or try to change the network. The file you are trying to import is too big. Size limit is 10 MB. The file you are trying to import is invalid or damaged. Please choose another file. + Active search + Active search on startup diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 12c5efe6..f24ab043 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,6 @@ [versions] accompanist = "0.27.0" -agp = "8.1.0-alpha06" +agp = "8.1.0-alpha07" coil = "2.2.2" compose = "1.3.0" composeActivity = "1.6.1" diff --git a/resources/src/main/res/values-de/strings.xml b/resources/src/main/res/values-de-rDE/strings.xml similarity index 99% rename from resources/src/main/res/values-de/strings.xml rename to resources/src/main/res/values-de-rDE/strings.xml index 820f96c9..592403db 100644 --- a/resources/src/main/res/values-de/strings.xml +++ b/resources/src/main/res/values-de-rDE/strings.xml @@ -5,7 +5,7 @@ Release: Working copy Locale: de-DE, German (Germany) Exported by: rafakob - Exported at: Thu, 23 Feb 2023 14:33:22 -0800 + Exported at: Sun, 05 Mar 2023 11:46:31 -0800 --> Es gibt keinen korrekten QR-Code in dem ausgewählten Bild. Bitte versuch ein anderes Bild. Dienst auswählen @@ -681,8 +681,8 @@ Google Drive Sync Möchtest du deine Sicherungsdatei aus Google Drive löschen? Google Sync wird deaktiviert sein. Deine Tokens werden lokal bestehen bleiben, aber die 2FAS App wird aus deinem Google Account auf diesem und deinen anderen synchronisierten Geräten ausgeloggt. - Warten auf Synchronisierung… - Synchronisiere… + Warten auf Synchronisierung... + Synchronisiere... Du wirst eine verschlüsselte Sicherungsdatei importieren. Wähle eine JSON Datei aus Exportiere deine Konten von Aegis in eine unverschlüsselte JSON Datei und lade sie über die \"JSON Datei auswählen\" Option aus. Vergiss nicht nach einem erfolgreichen Import die Datei zu entfernen. @@ -710,4 +710,6 @@ Ein SSL-Fehler ist aufgetreten, wodurch eine sichere Verbindung zum Server nicht hergestellt werden kann. Stelle sicher, dass du die neueste App-Version hast oder versuche, das Netzwerk zu ändern. Die Datei, die du versuchst zu importieren, ist zu groß. Die Größenbeschränkung beträgt 10 MB. Die Datei, die du versuchst zu importieren, ist ungültig oder beschädigt. Bitte wähle eine andere Datei. + Aktive Suche + Aktive Suche beim Starten diff --git a/resources/src/main/res/values-pt-rPT/strings.xml b/resources/src/main/res/values-pt-rPT/strings.xml new file mode 100644 index 00000000..02d7a761 --- /dev/null +++ b/resources/src/main/res/values-pt-rPT/strings.xml @@ -0,0 +1,715 @@ + + + + + Usada para digitalizar códigos QR. + Podes usar o Face ID para desbloqueares a aplicação. + + 2FAS Authenticator + 2FA Authenticator (2FAS App) + OK + Adicionar + + Cancelar + Notificações + + %1$d de %2$d + + O serviço já foi removido da cópia de segurança. + + O serviço já foi modificado da cópia de segurança. + + O utilizador está acima da cota no iCloud + + O iCloud não está disponível + + O iCloud foi desativado pelo utilizador + + Cópia de Segurança 2FAS + Fechar + Continuar + Copiar + Remover + Dispensar + Concluído + Editar + Digitar código manualmente + Erro + Informação + Próximo + Aviso + Desligado + Ligado + + Aponta a tua câmara à tela para digitalizares o código QR + Renomear + Tentar novamente + Guardar + Digitalizar Código QR + Serviço + Definir + Saltar + Tokens + Atenção + Sem resultados + Customizar + Confirmar + Recusar + + O texto fornecido é muito longo (máximo de %d caracteres) + Entendido! + A verificar... + + Confirma a tua impressão digital para continuar. + + Usa o teu PIN desta vez + + És incrível! + O teu telemóvel acabou de se tornar numa privada e segura chave para os teus serviços online graças à aplicação 2FAS - confiada por mais de 3 milhões de utilizadores mundialmente. + Simples + Conecta o 2FAS com os teus serviços online. Ativa a segurança de dois fatores em segundos com o teu código QR. + Privado + O 2FAS respeita e protege a tua privacidade. Esta aplicação nunca irá coletar, processar, ou usar quaisquer dados pessoais. + Seguro + Os teus tokens estão guardados offline no armazenamento do teu dispositivo, por isso lembra-te de fazer uma cópia de segurança aos teus serviços! Utiliza a Sincronização através do iCloud e uma palavra-passe ou PIN para os proteger de acesso não autorizado e dano ao dispositivo. + + Começa a usar o 2FAS + Termos de serviço + Conecta as tuas contas de serviços online com o 2FAS ou importa os teus tokens. + Conecta um novo serviço + + Importa um ficheiro de cópia de segurança 2FAS + + Importa do Google Authenticator + + Não sabes o que fazer? + + Exporta as tuas contas do Google Authenticator para um código QR através da opção \"Transferir Contas\". De seguida, captura a tela e usa o botão \"Escolher código QR\" abaixo. Se estiveres a importar códigos de outro dispositivo, usa o botão \"Digitalizar código QR\". + + Escolher código QR + + Digitalizar código QR + + A adicionar um novo código + + A Chave do Serviço foi copiada + + Este token já está presente na lista + O Contador foi copiado + O Token foi copiado + O Token seguinte foi copiado + + Queres adicionar este código: %s? + + Abrir Definições + PIN incorreto + Mudar o PIN + Por favor, confirma que és o dono deste dispositivo + + Por favor, confirma o teu novo PIN + Criar PIN + Por favor, digita o teu PIN atual + + Por favor, digita o teu novo PIN + + Por favor, digita o teu PIN + + Muitas tentativas. Por favor, tenta novamente %s + Muitas tentativas. Por favor, tenta novamente em %s minutos. + + Muitas tentativas. Por favor, tenta novamente mais tarde. + + Muitas tentativas. Por favor, tenta em um minuto + Cópia de Segurança e Sincronização + Escolher tópico + Configura o serviço de e-mail e tenta novamente + Geral + Os serviços de e-mail não estão disponíveis + Problema + Segurança + Selecionar tamanho do PIN + Definições + + Sugestão + Avançado + Widgets + Mostrar os serviços selecionados nos Widgets da Página Inicial + + Depois de ativares os widgets, todos os teus tokens irão ser acessíveis sem precisar de código PIN.\n\nTens a certeza que queres ativar os widgets? + Mostrar token seguinte + Mostrar os tokens recebidos na lista. + Lixo + Restaurar + O Lixo está vazio + Partilhar aplicação + + Tens a certeza que queres eliminar o token de: + Mover para o Lixo + Informação adicional + Escolher método + Chave de Serviço duplicada + + Chave de Serviço incorreta (apenas números 2 a 7, letras), máx, 512 caracteres + Ok, vamos tentar novamente + + Aponta a tua câmara ao ecrã para digitalizar o código QR + + Chave do Serviço + Este código QR leva-te à App Store + + Eliminar Token + + Procurar serviço + + Desculpa, o serviço não foi encontrado + + Tenta novamente com um termo de pesquisa diferente + A chave é muito pequena. Mínimo 4 caracteres + Nome do Serviço + + A chave de serviço do código digitalizado já está a ser utilizada em %s. Deves estar a digitalizá-lo novamente + Este código está incorreto ou não é suportado. Tenta novamente. + Tipo de Nome do Serviço + Digita o Nome do Serviço + + Infelizmente, não sabemos esse serviço. Como queres nomeá-lo? + + Não irás poder mais restaurar este token. + Cor do emblema + Mudar ícone da marca + Mudar nome + Informação do Serviço + Personalização + Ícone da marca + Nome + + Eliminar este serviço da aplicação 2FAS + + Nome (1 ou 2 caracteres): + Escolher cor do fundo: + %s foi adicionado + Próximo Token: %s + Valor do Token seguinte + Os meus Tokens + A eliminar grupo + + Todos os tokens irão ser movidos para o grupo: \"Os meus tokens\" + Adicionar grupo + Nome do grupo: + Selecionar da Galeria + A câmara está indisponível + + Verifica se a aplicação possuí as permissões necessárias nas Definições do Sistema + Não foram encontrados códigos QR + + Não existe um código QR correto na imagem selecionada. Por favor tenta uma imagem diferente. + Selecionar serviço + Qual é o serviço que queres adicionar? + Digita este token novamente + + Desbloqueia e digita este token novamente + Grupo + Selecionar grupo + Importar tokens 2FA da aplicação Google Authenticator + Este código QR permite importar tokens do Google Authenticator + + %1$d de %2$d + Os tokens irão ser importados. + Ordenar por + + A - Z + + Z - A + Manual + Avançado + + Alerta + + Mudar definições avançadas não é recomendado. Fá-lo apenas quando o fornecedor do 2FA pedir e quando tiveres instruções claras. + Definições do token + Autenticação OTP + Algoritmo + Tempo de atualização + Número de dígitos + Contador + Contador inicial + + %d s + HOTP + TOTP + Mudar definições avançadas não é recomendado. Fá-lo apenas quando o fornecedor do 2FA pedir e quando tiveres instruções claras. + Melhor prática + O serviço foi adicionado com sucesso. Nós recomendamos fortemente que tu + elimines o código QR da tua galeria. + Se alguém tiver acesso a este código QR, irão poder usar os códigos 2FA para este serviço. + Pedir um ícone + Avisa-nos no Discord + Entra no nosso servidor de Discord + e deixa os utilizadores votarem para os ícones pedidos. + ou + Avisa o fornecedor do serviço + Podes usar Redes Sociais ou e-mail e partilhar este texto com eles: + Olá! Estou a usar a aplicação 2FAS para entrar no teu serviço com autenticação de dois fatores. Contudo, o teu ícone está a faltar! Podes submeter o teu ícone aqui: https://2fas.com/yb + https://2fas.com/yb + Não te esqueças de mencionar a conta oficial da empresa! + Não consegues encontrar um ícone de uma marca na aplicação 2FAS? + Pedir um ícone de uma marca + Pedir um ícone de uma marca + Seleciona o método pedido + Pedir um ícone enquanto utilizador + Envia um ícone enquanto empresa + + Não vais conseguir entrar na tua conta %s sem este token enquanto tiveres ativado a autenticação de dois fatores para essa conta. + Mostrar a Chave do Serviço + Copiar a Chave do Serviço + + Contador com os segundos restantes para a mudança do token + Remover + Serviço removido + + Este campo contém uma Chave Secreta. Para a revelar, usa o botão Mostrar. Só irá funcionar se tiveres configurado o PIN da aplicação para o ecrã bloqueado + Nome do serviço: %s + Informação adicional: %s + Token %s. Clica para copiares + Editar %s + Etiqueta do serviço com o nome %1$s e cor %2$s + Ícone do serviço %s + Selecionado + Não selecionado + Cor do emblema: %s + Dispensado + Apenas números de 2 a 9, letras. Pelo menos 4 caracteres + Adicionar serviço + Adicionar grupo + + Usa o botão Adicionar Serviço para adicionar um novo serviço + Sem resultados para a pesquisa + + Usa Ordenar Por para definir a ordenação dos serviços + A carregar conteúdo + Não foi possível fazer a cópia de segurança dos tokens porque a chave secreta de \"%s\" contém caracteres inválidos. Remove-a da lista e tenta novamente. + Importar + Exportar + A cópia de segurança 2FAS irá ser desativada para proteger a sua integridade + Erro ao exportar o ficheiro + A importação foi concluída com sucesso + + Uma outra aplicação está a usar a câmara. Se fechar outras aplicações não funcionar, tenta reiniciar o dispositivo + + A câmara não está disponível devido a sobrecarga do sistema. Tenta reiniciar o dispositivo + Não é possível iniciar a câmara. Tenta reiniciar o dispositivo + Não é possível iniciar a câmara em modo de ecrã dividido. Abre a aplicação em tela cheia e tenta novamente + Como restaurar a aplicação 2FAS? + Restauro da aplicação + + Se te esqueceste do PIN ou queres formatar a aplicação 2FAS, tens de reinstalar a aplicação. + + Avisamos que se não tiveres uma cópia de segurança e formatares a aplicação, irás perder o acesso aos teus códigos. E, por isso, irás perder acesso às tuas contas protegidas por autenticação de dois fatores. + + Se tiveres uma cópia de segurança, não te preocupes, irás poder restaurar todos os teus códigos. + Cópia de Segurança na nuvem + Sincronização através do iCloud + RECOMENDAÇÃO: A sincronização através do iCloud mantém os teus tokens seguros em caso de perca ou dano do teu dispositivo. Deixa-a ligada. + Ficheiro de Cópia de Segurança + + Usa o Ficheiro de Cópia de Segurança para teres acesso offline dos teus tokens + Remoção da Cópia de Segurança + Eliminar cópia de segurança 2FAS + Atenção! Se eliminares a Cópia de Segurança 2FAS, irás apagar também todos os tokens de outros dispositivos sincronizados com esta conta. Para preservar os tokens noutros dispositivos, verifica que desativaste a cópia de segurança 2FAS antes da eliminação + + Eu quero eliminar esta Cópia de Segurança + Exportar cópia de segurança para ficheiro + + Podes importar ficheiros exportados de outros dispositivos com a aplicação 2FAS + Exportar para ficheiro + Verificar PIN + Guardar ficheiro + Importar ficheiro de cópia de segurança + + Irás importar um ficheiro de cópia de segurança a conter + Importar ficheiro + Escolher outro ficheiro + Nada para importar + Erro de ficheiro! + + Os serviços do ficheiro irão ser fundidos com os da aplicação + Ou este ficheiro está vazio, ou todos os serviços dentro dele já se encontram disponíveis na aplicação + Precisas de uma versão mais recente da aplicação para importares o conteúdo do ficheiro. Podes encontrar a versão mais recente na App Store + Não foi possível ler este ficheiro. Pode estar danificado, ou ocorreu um erro ao acessá-lo. Por favor escolhe outro + Palavra-passe + Repetir palavra-passe + Caráter incorreto. Usa letras de A-Z, dígitos e caracteres especiais: -_/!#$%&+*~@?=^.,\'(){}[]:;<>| + A frase fornecida é muito curta (mín. 3 caracteres) + As palavras-passes não coincidem + Guardar e exportar + Para aumentar a proteção do teu ficheiro de cópia de segurança, por favor, define a palavra-passe + Digita a palavra-passe para este ficheiro de cópia de segurança para proceder ao processo de importação + Define uma palavra-passe para este ficheiro de cópia de segurança + Palavra-passe Incorreta + + %s novo(s) serviço(s) + + %s serviço(s) importado(s) de ficheiro + + Existe um problema com o iCloud. Verifica as definições do sistema + + Este ficheiro está numa versão de formato mais recente do que a aplicação suporta + + Este ficheiro está encriptado. Nós suportamos apenas ficheiros não encriptados. + Copiar token + + Sim, eu quero eliminar este serviço + Neutro + Azul claro + Índigo + Roxo + Turquesa + Verde + Vermelho + Laranja + Amarelo + Conhecimento + Ajuda e Partilha + Diz a um amigo + Escreve uma crítica + Sobre + Política de Privacidade + Termos de Serviço + Versão da aplicação: %s + Sem limite + Código PIN + Segurança da aplicação + Definições de bloqueio + Face ID + Touch ID + + Bloquear após X tentativas falhadas: + Selecionar o número máximo de tentativas de códigos mal sucedidos antes de bloquear a aplicação + Tempo de bloqueio + 3 minutos + 5 minutos + 10 minutos + Máximo de tentativas falhadas + Código de 4 dígitos + Código de 6 dígitos + Autenticação Biométrica + Doações + Doar a 2FAS + Nova versão + Uma nova versão de 2FAS está disponível na AppStore. Atualiza agora! + Atualiza agora + + Saltar esta versão + + Atualizar depois + Extensão do Navegador de Internet + Extensão de Navegador de Internet 2FAS + Instala a extensão do navegador de Internet 2FAS no teu computador + Conecta-a com a aplicação 2FAS + Mais informação: + 2fas.com/be + Conecta com o navegador de Internet + https://www.2fas.com/be + Conexão bem sucedida! + O 2FAS irá enviar uma notificação sempre que entrares nos teus serviços online ao usar este navegador de internet. Não irás precisar mais de digitar novamente os teus tokens a cada uso. + A conexão falhou :( + Este código QR não foi reconhecido, e a 2FAS não conseguiu conectar este dispositivo com a extensão do navegador de Internet. Por favor, tenta novamente. + + Já está conectado! + + Esta extensão do navegador de Internet já está conectada com este dispositivo. + Entrar em contacto + Conexão com o navegador de Internet + + Dispositivos conectados (navegadores de Internet) + Adicionar novo + + Nome do dispositivo + Nome do dispositivo + Nome + Este nome irá ajudar-te a identificar este dispositivo entre outros conectados com a extensão do navegador de Internet 2FAS + Definições da Extensão do Navegador de Internet + <NOME_DESCONHECIDO> + %1$s pediu um token 2FA para %2$s. Seleciona um serviço para autorizar e guardar com este domínio. + Pedido do Navegador de Internet + + O token foi enviado com sucesso! + Erro ao enviar o código. %s + Eliminar dispositivo + Tens a certeza que queres eliminar este dispositivo? + Data de conexão + Esquecer este navegador de internet + + Lista de domínios conectados + Eliminar domínio? + A próxima vez que usares a extensão do navegador para entrar em %s, irá te ser pedido para conectares este domínio novamente. + Notificações + Para teres acesso a funções como a Extensão do Navegador de Internet, a aplicação precisa de acesso para enviar notificações. Podes mudar esta definição nas Definições do Sistema a qualquer momento. + Pedido expirado + Pedido de Token 2FA + Queres partilhar o código 2FA de\u0020 + Sem notificações + 2 F A S + 2FAS + O Google Drive não está disponível + O Google Drive foi desativado pelo utilizador + Precisas de uma versão mais recente da aplicação para importares o conteúdo do ficheiro. Podes encontrar a versão mais recente na Google Play Store + Este código QR leva-te à Google Play Store + Os teus tokens estão guardados offline no armazenamento do teu dispositivo, por isso lembra-te de fazer uma cópia de segurança aos teus serviços! Utiliza a Sincronização através do Google Drive e uma palavra-passe ou PIN para os proteger de acesso não autorizado e dano ao dispositivo. + Uma nova versão de 2FAS está disponível na Google Play Store. Atualiza agora! + O PIN não coincide! Por favor, tenta novamente. + Opções de Desenvolvedor + Importar tokens + Resultado da conexão + ATENÇÃO + Aponta a tua câmara para o código QR certo e digitaliza novamente. + Queres descartar as alterações? + Mudanças não guardadas + A chave tem um formato inválido + Erro de sistema! Não existe uma aplicação de galeria no sistema. + Permissão do Google Drive + Precisamos de permissão do Google Drive para guardar os ficheiros de cópia de segurança nos dados de aplicações. + É necessária uma conexão de Internet + Para sincronizares com o Google, precisas de uma conexão de Internet. + Para removeres o acesso do Google Drive, precisas de uma conexão de Internet. + Guarda e sincroniza automaticamente o teu ficheiro de cópia de segurança na pasta escondida no teu Google Drive. Só a aplicação 2FAS consegue aceder a esta pasta. + Ocorreu um erro na sincronização da cópia de segurança. Por favor, reinicia a aplicação depois de alguns minutos e tenta novamente. + Ocorreu um erro na criptografia da cópia de segurança. Por favor, coloca a tua palavra-passe novamente. + Ocorreu um erro na descriptografia da cópia de segurança. Por favor, coloca a tua palavra-passe novamente. + Existe um problema com o iCloud. Verifica as definições do sistema + Houve um problema com as permissões da tua conta do Google Drive. Tenta ativar e desativar a sincronização. + A tua cópia de segurança está protegida por palavra-passe. Liga-a e digita a tua palavra-passe. + A tua cópia de segurança está protegida por palavra-passe mas a que forneceste está incorreta. Liga-a e digita a tua palavra-passe. + Atribuição de Serviço + Personalização + Mudar emblema + Avançado + Pedir um ícone + Editar nome + Tens a certeza que queres eliminar este grupo? + O teu ficheiro de cópia de segurança está pronto para exportar + Exporta este ficheiro para manter os teus tokens 2FAS numa cópia de segurança segura. Irás poder importá-lo depois para este ou outros dispositivos com a aplicação 2FAS. + Exportar ficheiro sem palavra-passe (não recomendado) + O ficheiro irá ser sincronizado com a lista de serviços da aplicação. + Talvez depois + Ligar + Não foram adicionados serviços + RECOMENDAÇÃO: A sincronização através do Google Drive mantém os teus tokens seguros em caso de perca ou dano do teu dispositivo. Deixa-a ligada. + Estás a desligar a Sincronização do Google Drive? + Os tokens 2FA irão continuar no teu dispositivo e no teu Google Drive, mas não irão ser sincronizados. Irás também desconectar a tua Conta Google. + Lembra-te, em caso de perca ou dano deste dispositivo ou a eliminação da aplicação, poderás não conseguir recuperar os teus tokens, e irás perder acesso às tuas contas online protegidas com 2FA. + Protege um ficheiro de cópia de segurança do Google Drive com uma palavra-passe + Eliminar palavra-passe + Eliminar a palavra-passe do ficheiro da cópia de segurança do teu Google Drive + Conta Google + Última sincronização + O 2FAS irá enviar uma notificação sempre que entrares nos teus serviços online ao usar este navegador de internet. Não irás precisar mais de digitar novamente os teus tokens a cada uso. + Nome do Navegador de Internet + Autenticar + Usa as tuas credenciais biométricas + Licenças de código aberto + Podes importar os teus tokens para a 2FAS de aplicações diferentes. Escolhe uma aplicação da lista e segue as instruções. + Selecionar aplicação + Google Authenticator + Aegis + Raivo OTP + Autenticação 2FAS + Sim + Não + Procurar + Nenhuma aplicação suporta esta ligação + Permissão da Câmara + A permissão da câmara é necessária para digitalizares códigos QR. Se quiseres usar esta função, vai a Informações da Aplicação, Permissões e ativa a Câmara. + Desativar PIN + Por favor digita o teu novo PIN de %s + PIN incorreto! Por favor tenta outra vez + Biometria + Ajuda 2FAS + Opções de Desenvolvedor + Bloqueio Biométrico + Tema + Auto + Auto - Definição do Sistema + Escuro + Claro + O token foi copiado para a área de transferência! + O token seguinte foi copiado para a área de transferência! + Queres eliminar permanentemente este serviço de 2FA? + Adicionar manualmente + Este código QR não funciona! + + Não foi possível ler o código QR da imagem! + Tenta selecionar uma imagem diferente. + Eliminar serviço permanentemente + + O serviço não foi adicionado porque a Chave de Serviço é inválida. Tenta novamente. + + Um serviço com esta chave já existe. Queres sobrepô-lo? + A chave contém caracteres inválidos + Mostrar a Chave do Serviço + + A tua Chave de Serviço está protegida. Por favor, adiciona um PIN ou um bloqueio por impressão digital para a ver. + A lista de serviços está vazia + Usa o butão \"+\" para adicionar um novo serviço + Não irás poder entrar na tua conta %s sem este token enquanto tiveres a autenticação de dois fatores ativada para essa conta.\n\nNão irás poder restaurar este token do lixo da 2FAS. + Os serviços foram importados com sucesso! + + Precisas de uma conexão de Internet para sincronizar a tua cópia de segurança. Por favor, liga-te à Internet e tenta novamente. + Atualizar aplicação + + Por favor atualiza para a versão mais recente de 2FAS para adquirir todas as funções e manter um nível de segurança elevado. + Estás a eliminar + + da tua lista de serviços 2FAS.\n\nLembra-te, enquanto tiveres a autenticação de dois fatores ativada, não irás poder entrar na tua conta %s sem este token. + Apagar + Exportar + Partilhar + Importar cópia de segurança do ficheiro + Tu irás importar o ficheiro de cópia de segurança com + Importar + Os tokens visíveis no widget não são protegidos pelo teu código PIN. Tens a certeza que os queres apresentar no widget? + ATENÇÃO! + Sim, tenho a certeza + Cópia de Segurança 2FAS + Liga a cópia de segurança 2FAS e mantém os teus códigos seguros no Google Drive. + Desculpa, marca não encontrada + + Seleciona que serviços vão estar visíveis no widget: + Desativar Sincronização + Cancelar + Definir palavra-passe + Eliminar cópia de segurança do Google Drive + + Se eliminares este ficheiro do teu Google Drive, a sincronização em todos os teus dispositivos irá ser desativada, e os teus tokens irão permanecer apenas neste e noutros dispositivos através do armazenamento local. + A tua aplicação 2FAS já está conectada com este navegador de Internet. + + Digitaliza o código QR novamente + Erro + + O código QR digitalizado contém um formato que não é suportado. Por favor, tenta novamente. + Ocorreu um erro desconhecido ao digitalizar o código QR. Por favor, tenta novamente. + Usar o PIN desta vez + Ativar autenticação + Cancelar + + Para ativar o Bloqueio por Biometria, precisas de ativar e definir um código PIN. + Seleciona o tempo para o qual a aplicação será bloqueada. + Parece que, ou ficaste sem espaço no disco, ou um evento no passado danificou a base de dados + A cópia de segurança na nuvem foi transferida para a nova versão. Atualiza a aplicação + A cópia de segurança na nuvem está encriptada. Atualiza a aplicação para suportar esta função + Continuar para a aplicação + Cancelar + Autorizar + Dispensar + Pedido enviado + Enviar token? + %1$s pediu um token 2FAS para %2$s + Erro ao enviar token + Este website não foi conectado + Abre a aplicação e seleciona um serviço para este domínio + Abre a aplicação e verifica se a extensão do navegador de Internet está devidamente conectada + Houve um problema com a conexão + Por favor tenta novamente + Erro + Para a extensão do navegador de internet funcionar, por favor adiciona serviços à aplicação 2FAS + Aprovar + Recusar + Liga o código PIN e a autenticação por Face ID para prevenir acesso não autorizado aos teus tokens neste dispositivo. + Liga o código PIN e a autenticação por Touch ID para prevenir acesso não autorizado aos teus tokens neste dispositivo. + O código fornecido está incorreto. Por favor, verifica novamente + O código fornecido expirou. Por favor contacta-nos para obter um novo + Não existe acesso à Internet. Por favor verifica a conexão e tenta novamente + Parece haver um problema com o nosso servidor. Se continuar por favor contacta-nos\u0020 + A operação falhou + Registros enviados + Vamos verificar, mas pode demorar algum tempo. + Enviar + A enviar registros + O código fornecido pela equipa de ajuda foi preenchido automaticamente. Enviar registros? + Por favor digita ou cola o código fornecido pela nossa equipa de ajuda + Enviar registros + Vê só esta aplicação de autenticação em 2 fatores: https://2fas.com + Reconhecimentos + Importar de uma aplicação externa + + momento atrás + momentos atrás + + + %d minuto atrás + %d minutos atrás + + + %d hora atrás + %d horas atrás + + + %d dia atrás + %d dias atrás + + + %d semana atrás + %d semanas atrás + + + %d mês atrás + %d meses atrás + + Ocorreu um erro desconhecido! Tenta novamente! + O ficheiro foi guardado com sucesso! + Não foi possível partilhar o ficheiro! + Escreve a tua palavra-passe + Digita a palavra-passe de segurança para proceder com a remoção. + Digita a palavra-passe de segurança para proceder com a remoção do acesso ao Google. + Definições de sincronização + Ficheiro local + Sincronização através do Google Drive + Queres eliminar o teu ficheiro de cópia de segurança do Google Drive? + A sincronização através do Google irá ser desativada. Os teus tokens irão permanecer localmente, mas a aplicação 2FAS será desconectada da tua Conta Google, neste e noutros dispositivos sincronizados. + A aguardar para sincronizar... + A sincronizar... + Irás importar um ficheiro de cópia de segurança encriptado. + Escolhe o ficheiro JSON + Exporta as tuas contas da aplicação Aegis para um ficheiro JSON não encriptado e usa o botão \"Escolhe o ficheiro JSON\" para importá-lo. Lembra-te de remover o ficheiro após importares com sucesso. + Usa a opção \"Exporta OTPs para ficheiro ZIP\" nas definições da aplicação Raivo, guarda o ficheiro ZIP, extrai-o e usa o botão \"Escolhe o ficheiro JSON\" para importar o ficheiro JSON. + Contudo, não existe nenhum serviço que pode ser importado. + Tenta novamente + Prosseguir + A importar tokens 2FA da aplicação Google Authenticator + A importar tokens 2FA da aplicação Aegis + A importar tokens 2FA da aplicação Raivo + Este código QR permite importar tokens do Google Authenticator + Este ficheiro JSON permite importar tokens da aplicação Aegis. + Este ficheiro JSON permite importar tokens da aplicação Raivo. + Não foi possível ler nenhum token. Tenta selecionar um ficheiro diferente. + Informação da sincronização através do Google Drive + Tens a certeza? Sem a sincronização através do Google Drive, não irás poder restaurar os teus tokens se perderes ou formatares o teu telemóvel! + O código foi enviado com sucesso + Ocorreu um erro ao enviar o código + Adicionar novo serviço + Customizar serviço + Sugerido + Todos os serviços + Outros serviços + Erro SSL + Ocorreu um erro SSL, logo não foi possível fazer uma conexão segura ao servidor. Garante que tens a versão mais recente da aplicação ou tenta mudar a conexão de Internet. + O ficheiro que estás a tentar importar é muito grande. O limite de tamanho é 10 MB. + O ficheiro que estás a tentar importar é inválido ou está danificado. Por favor, escolhe outro ficheiro. + Pesquisa ativa + Pesquisa ativa ao iniciar + diff --git a/resources/src/main/res/values/strings.xml b/resources/src/main/res/values/strings.xml index a00845cb..f542b69c 100644 --- a/resources/src/main/res/values/strings.xml +++ b/resources/src/main/res/values/strings.xml @@ -5,7 +5,7 @@ Release: Working copy Locale: en, English Exported by: rafakob - Exported at: Thu, 23 Feb 2023 14:33:22 -0800 + Exported at: Sun, 05 Mar 2023 11:46:31 -0800 --> There is no correct QR code in the selected image. Please try a different image. Select Service @@ -710,4 +710,6 @@ An SSL error has occurred and a secure connection to the server cannot be made. Ensure you have the latest version of the app or try to change the network. The file you are trying to import is too big. Size limit is 10 MB. The file you are trying to import is invalid or damaged. Please choose another file. + Active search + Active search on startup From f000f4e38345ed1ea7c0e80d62300aec87aa8cd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Koby=C5=82ko?= Date: Sun, 5 Mar 2023 21:02:10 +0100 Subject: [PATCH 2/7] Bump version --- .../src/main/java/com/twofasapp/buildlogic/version/AppConfig.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildlogic/src/main/java/com/twofasapp/buildlogic/version/AppConfig.kt b/buildlogic/src/main/java/com/twofasapp/buildlogic/version/AppConfig.kt index 6c49f583..0232e369 100644 --- a/buildlogic/src/main/java/com/twofasapp/buildlogic/version/AppConfig.kt +++ b/buildlogic/src/main/java/com/twofasapp/buildlogic/version/AppConfig.kt @@ -7,7 +7,7 @@ object AppConfig { private const val verMajor = 4 private const val verMinor = 2 - private const val verPatch = 4 + private const val verPatch = 5 private const val verInternal = 0 const val versionCode = verMajor * 1000000 + verMinor * 10000 + verPatch * 100 + verInternal From abc04795bc2fec8b35759790e26620ad233c52ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Koby=C5=82ko?= Date: Sun, 5 Mar 2023 21:04:56 +0100 Subject: [PATCH 3/7] New icons --- .../006a974f-48c9-4c94-b913-45dac870b52f.png | Bin 0 -> 2363 bytes .../040cc5d8-5bb2-48e3-b2d9-1c9e030f2a32.png | Bin 0 -> 3279 bytes .../11361929-9c24-4237-a01a-810000abaf29.png | Bin 0 -> 14675 bytes .../181d343a-a7fc-49f1-a34c-9c9c91052b04.png | Bin 0 -> 5236 bytes .../2fab006b-31d8-4bce-9048-e93256412b08.png | Bin 0 -> 1913 bytes .../3625c1e6-c020-49c8-912e-ffd5f19f6f1f.png | Bin 0 -> 10755 bytes .../4bb70c6d-ce78-4580-9aaa-e84b6355fc47.png | Bin 0 -> 2246 bytes .../522719dd-9fd6-4829-b5d0-828bee041d96.png | Bin 0 -> 4546 bytes .../56919108-2ea3-4c16-9ccb-3b196c4d7347.png | Bin 0 -> 2302 bytes .../651adfb1-9ed0-4a58-bcab-7d1a24f6f19a.png | Bin 0 -> 8164 bytes .../8cc53f9a-5965-4cd3-a466-816474270fb0.png | Bin 0 -> 4491 bytes .../8f60f1d9-cd4b-4213-90fe-3d8d32541075.png | Bin 0 -> 6332 bytes .../dbccab97-41e7-4c6e-86e8-1b24c213b22f.png | Bin 0 -> 6731 bytes .../f29a4de6-572b-400b-acb2-76252c497189.png | Bin 0 -> 5512 bytes .../f9a680a5-7d15-4e84-9478-c8049bc862f9.png | Bin 0 -> 389 bytes .../com/twofasapp/parsers/SupportedServices.kt | 14 ++++++++++++++ 16 files changed, 14 insertions(+) create mode 100644 parsers/src/main/assets/icons/006a974f-48c9-4c94-b913-45dac870b52f.png create mode 100644 parsers/src/main/assets/icons/040cc5d8-5bb2-48e3-b2d9-1c9e030f2a32.png create mode 100644 parsers/src/main/assets/icons/11361929-9c24-4237-a01a-810000abaf29.png create mode 100644 parsers/src/main/assets/icons/181d343a-a7fc-49f1-a34c-9c9c91052b04.png create mode 100644 parsers/src/main/assets/icons/2fab006b-31d8-4bce-9048-e93256412b08.png create mode 100644 parsers/src/main/assets/icons/3625c1e6-c020-49c8-912e-ffd5f19f6f1f.png create mode 100644 parsers/src/main/assets/icons/4bb70c6d-ce78-4580-9aaa-e84b6355fc47.png create mode 100644 parsers/src/main/assets/icons/522719dd-9fd6-4829-b5d0-828bee041d96.png create mode 100644 parsers/src/main/assets/icons/56919108-2ea3-4c16-9ccb-3b196c4d7347.png create mode 100644 parsers/src/main/assets/icons/651adfb1-9ed0-4a58-bcab-7d1a24f6f19a.png create mode 100644 parsers/src/main/assets/icons/8cc53f9a-5965-4cd3-a466-816474270fb0.png create mode 100644 parsers/src/main/assets/icons/8f60f1d9-cd4b-4213-90fe-3d8d32541075.png create mode 100644 parsers/src/main/assets/icons/dbccab97-41e7-4c6e-86e8-1b24c213b22f.png create mode 100644 parsers/src/main/assets/icons/f29a4de6-572b-400b-acb2-76252c497189.png create mode 100644 parsers/src/main/assets/icons/f9a680a5-7d15-4e84-9478-c8049bc862f9.png diff --git a/parsers/src/main/assets/icons/006a974f-48c9-4c94-b913-45dac870b52f.png b/parsers/src/main/assets/icons/006a974f-48c9-4c94-b913-45dac870b52f.png new file mode 100644 index 0000000000000000000000000000000000000000..e5407bb8571a9f9bf083a5baf1a39f356d7ca2cc GIT binary patch literal 2363 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 N002ovPDHLkV1gTrbBh1~ literal 0 HcmV?d00001 diff --git a/parsers/src/main/assets/icons/11361929-9c24-4237-a01a-810000abaf29.png b/parsers/src/main/assets/icons/11361929-9c24-4237-a01a-810000abaf29.png new file mode 100644 index 0000000000000000000000000000000000000000..fbb4fe960951f7c3be9f2bf775b501fce606f9c1 GIT binary patch literal 14675 zcmV-ZIjqKsP)&;x>0rS~GJ6agE89aO4H z5fCgOiWE`60#;B|1W{3nROt#xM@oQ@9#U`Hd$-Q_$4xM~_a-DjK>dC1^DNwKnVsEt zXXeZ~XU-v%QdAWvr67cqd(8iT|LgpJ11MEy(QyVq0)Ti*X&nI3gpe2j;Q*{fn-PGe z=rT6|4*&-MJAga@8I;m&0OtXu0=Pg35wCXtiauv~zpD~lmEWNXKq;*apcNtH4njy1 z0Eqx<0D&*RGVr@L6ToQzCn%){0sK+)_rD6{U($k20J>62dl5o9187=hl`bD=DWy9B zYzDB65R&U(Uw_={7W_{qxGSY}5P%_skjN^l=rw>+>H@I3Xxl^xk;^#m{|WXZIDt|+ z48X&LkOtRqTcyPRk|ZfQQIb`UAWB}Zqym6O!@_LPX>~e{hT~W-02Y7-04@4mS)@`* zzX7nE5ON~ebC&nJD)CPuxFdkkgpk1in2O#4fRLG0Ae~OiAm@^^aVaea$*H-d!0u)< zE*E;7PLD~H72*{nNf3(&=2&9X>ohto%j)%7S4>o>Cd_6+jo4~Rt+;SfuT~UoP^UVn z86U|3&{m>80I-2l`aU7#Xa9Hbze;c$0M8Rb?ypFZ0L1i+JZ1l%N$UQC=Wy`YMfJ}U z$;6SFuZ7FY0tyGP0LKD)jqiVk04xJAO!3VDSp`%TP*lJx076#$W8&?)-J5V=|7 znriFY6Udz{>e99?>oK(xqFDes09R#(Qo4x{GM`eq`G1w*L;%wXArD=x7y!cIV;AKO zTMnz6cOGXB9>2)AQgS%Rq6S($L8uv8qYfO)T=z?(6i`$Zf=2`jU4X{}5LVL0g-gvF z*HpT9xD9=~H$(e24LJaMT!m~(=>|f`>j3uuPY_HgH34{&5HjW}m&>W?xt^8Z?V{hW zKS2ICbdE!Qp%xk)i)vQrO?t2_<71=>K?s4OQh0bTkmm#h4~5w*G`_vIG~ljQbm)+d zB(Xu99=cf0E$40lW_&zMRXXLr2bgmoDF;u2{XB^`vGPpfj>e zR45F3Edc6k)3*Wy03i?r8S>>qfOo2h2=_eLudO`d(H>0Kj<;#y>%z-|gHk$*5c1`J zieO5qjS#W~z|e9|7dLM|>Rs~jM*R5m9~w9c4Ty|@Db(U?rB&QgD-8k=hJnk$0~wbA zy}{eHR}1mk$9vHs1KR1}>%N16Qn~@avxJaKRbI`TK=54vJ_S&{jML=32hQ*_-(HQ4 zYxioQNP1Eu3MP{tR8cE-BT^(c$qGb40z3lX5q$#G72zq!MJxlbETH88qYjKt1D#F- zrjjj-unfFj3375404lWW)k=7I;vn?t(LxWO6dnv7O6dqf$d{G6StU_r1Q(V2G9hGU zS?3fuc=yy-S4bbe|BDua$H>)+gັ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 O3mxqC+TK6~AN>#NDBwK+ literal 0 HcmV?d00001 diff --git a/parsers/src/main/assets/icons/2fab006b-31d8-4bce-9048-e93256412b08.png b/parsers/src/main/assets/icons/2fab006b-31d8-4bce-9048-e93256412b08.png new file mode 100644 index 0000000000000000000000000000000000000000..1bcdecaa461e57411e5c67147f6a242a8c523c22 GIT binary patch literal 1913 zcmb7F`#;l-7yk^~n5Zuq#ZaD*OIFHd?nSwiNHUsR>TA{7R`$5;^|6u)6@ATZ?$gXI zDa)<;>`T$JQl^m59`&@wT-MNo=)31n`2O%d@7H;~&Uv46Uaxar=SFbg5e?LK6aWAk zKHi=o3a0%7RfNJi#@h)Mq(<_Npa6in_CJ6DB`iGvKwA2EdW6zgvlC|wZcvUv)= z;JDA7{qh$fYO!V|!6z+Z?|;!^)zif6KI_>EYfXfgo@3w*t#{4a_tKOaw0qBU1iCou5DL+iiX!-;$<^ znKl7`7dqaYLY>bu(sEHHnw8a>H;b&J0E1naYVT$dp3a*#l^A$Y;1}%f67j8Jcs{XH z#o-h#ORZV-N&>kGcleXwiKl&#*xF_IOmHg16*~HJ)A^9&iJ!j+vqr<25828^p)-t2 zb;*c(-eN3w7_QtGyV6qIsY_fMQ*Rde2x0yWsr)R3L=#UTF|Q;wE$ewShR(^yF^b2s93?js1Rejcqx_)45NQw% zwbGU8aJtG<4J{jMLUG`21ZbPlkR45ua%R9cU;)$xwHnKwTCAqC@`_pdPKFNqesyj& zULHCCH9&Hx)MIKrZebns$FEJ3ccnh8Y;Zo#?TOj)(7NA1uw}kegf{31)sF`0KBuST z6VORv2{x;qqPEeXPr2*V5~^NlXszg;Nrru_Te{=&&<$Y>F}RIUdQZ7R5r0m~86NM7 zI2fjm(DPd!9ey0^HgO2&|E!+O59kAo`sn|jokavpXEAn^3f6q3918o&Vkv#MUTfoz zUV2KRl+#x9G4d+iqW!GlLW^aG?fMC9d}7b}Le0U=t8D~uke14=T!c zVygex4y8!8xSRph$1i?w*&qV?>|={(!dvs#(v#x<>!u;Hk!*z*Dd9~p)r?_#uuZrd zMW#qOslHitMHTw-adkv2x;-4{`TXZwVAz{u{+1x+9IHJP+HbER(pRK*1>oGhh$_eJ z8NHENQAx6RdkYmX%pyd;BnxfiXS!FEA^~(3U_{ruZ3nT})y(?no%gA#F@7-=z90Nb z5%~rch`9hUlNN9tR)_H?KFjbG_1;Yx-J-N>{F&;!n_}1y`;hAIRVx8AD<8#zH!8D5NpIQsaD-k)kC>#j>2xGfm*l6L3jAa{@3GaEmy`w=%vNSgOHg5yFsP*yl zF2wHarOlN@nf8MJjLkK4x5|mIlPt17Q!}`FEtJh`|Jmim_n0~>x)owloLoc&^BduF zMyrC$HOA#Hnkhp_U!?g z>pnCmEmg7qQePb|?{UwWNYWkJFIYG*7GJORp&Mal5zj?s*gG^q#*rLPi;AY8 z?NJ)9FcNr;#(^iAPKVP*|7H*7LYs8BZiiC_ufxSPE(6H%*<1CA1K=^`(tC%(x>fWXk_Mg{e@(sJ02X%L`n*+wA&}Y+RbR&K zad3l??N)-faH#VDhwFXmKtxM}TBOI+IUtbV^fDoG6U$-Dkm3~ereEOas{W%G&r~Uz zoGtnIC?L7?wf)G$IJYSHIGp&*T5$33q7C+x*YspGS~$cSGnN?w_wvh*Uc4#CV4FtB zRbZrp%8kcL4tli4kpxG;8E#O&v#s%Zrp`V~SMTmi9#gM(>Kn>^{v~Lvy8m)H-zFq) zwW%%>o$~RDVl>m#jh^T6rP~sz&+eAV-GaTQ-&gBK|82c4_sjK>a@4_WaK(K>tk(7r zO#_Jr@8|DL_Kw=>fA8V;#ku8X-0lC0Dudo zs|pk57s~E!<`$kLHKb{8oZf)DOF2%;+AnV|_s?Y)3kHW@JG}qRbd=(k0zO`Wp3MgdjQ;^omzFC4 literal 0 HcmV?d00001 diff --git a/parsers/src/main/assets/icons/3625c1e6-c020-49c8-912e-ffd5f19f6f1f.png b/parsers/src/main/assets/icons/3625c1e6-c020-49c8-912e-ffd5f19f6f1f.png new file mode 100644 index 0000000000000000000000000000000000000000..26135954ad3d5b4ba1ca4538827ce876fb9df8fb GIT binary patch literal 10755 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 UI)S6y_1#TXMJ+^?yjA%B0VMdG?EnA( literal 0 HcmV?d00001 diff --git a/parsers/src/main/assets/icons/4bb70c6d-ce78-4580-9aaa-e84b6355fc47.png b/parsers/src/main/assets/icons/4bb70c6d-ce78-4580-9aaa-e84b6355fc47.png new file mode 100644 index 0000000000000000000000000000000000000000..9259b50691b3c4c1bf1cf7bc40ed537ab2368262 GIT binary patch literal 2246 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 h{>1fDg@1Gf@n6UCNqrZxr@GH|s zhc)O>VD3G8ueHy;?EOpb2bgo#UYY-0d(PQ=?X|i&=g0)n3-~H9vg6->DAAWa=#~Zc z;%ML;U?Ok=(4*u3-v&mP<<#D2EZc!P;sD@$;BsKhKCbB(&z1t8+ZK45xge@fyaT9Jnmhg z>q(IdYH3j=^xkqGu>EpViYH;Uwk zESbgT5+*LdpA>viCkqTSfC&nA<|x=uC-o`%+rVPNzvyoO#|3+1K*|x^2;76t@8EU? z8z!VI@HC1oV(g1mz-$FOCZsw=ABa5lR$5!Gh94piX*Efz5qtqU;x43y#f5Yu_zmFL zKpUSR8~y(Z_QsGDBX~67;sRVqjf)Fu3VfD=jb8xs73`RkqQIvG-hV$La9xnv-{9`R zW+eT_hewdKoi;U(j7cqmhvP5qoxr)&k+_iFcHzj%m+V0+Fco-E*_SA!7Qu%Wy#CL~ z6L(#T3+V~mzsl>Hfgb?h1^#L0jyI#&O4<)C7JH$zARVYy?&! znH-BdKAX#O%!<@rlK{FQ=ZRX&b|eP1C~z-e6!OH|ALtA8Mxtv2uo_uQE<>P3Gsh%k)#_Uc z_B!(sa>VowWKY@_=UnX1DbBgY&W`2Ixhc-Mz6JeiaLzS3=l(w~WDN;4$C<;05+Qg^xfY^&(_Cj?EU}m%yzUEQ7`nxB<8txCy_% zUmARjyxT5Crt<@UV}K_7mM<-6M%KDlY8tf`cmR@+)?_)ze#B-ZooJqxLCdAek-##t zxJBrLoRIjLmO(3l#~`mRHFs90PPiSIu3^YxiXMZ!pAOVEoFG>ruT$P=3p^Nj1vp&O zXu|9S&L$xLOH<$jfhE-F8J#+&1^Jz>_PJT}Z}1&taV=Oxz%G|o1b+|NOU>x96{*Q} zZ-@~Mf%_r5CSM9Ql=+Mgkj;(eP(vEKNjH+k)nqkNpX=Wm#zG@_2$HkZqtb<$s!$ad z!XL73Ad9QTMr0#KOdkz$dDEksh0n5=`d!2z-LN7wPd7hEL9&@e#P1 zqa~THc_!9CMFl{ z!u1$G&-e)ZcXcn)3p(Khn>K9q;Q-%J`vo8LhXpmXEXp0QGG|4 z!p41wmKB%?LxD#zsFvU>@bju(WB^V@8eewTH0pc0upg3Jr0Prtkh)k?QA)1xjo=of z-%v)MA0s7&RSp=0i7omBGO#z>qTx16?k^w{h4Ak0Y?E@l$qYW62 zXAZUYVdS4H+sjB-bMFLsi{6D#AbpfF;cP>8l)MGDC?_zTTnRvnI|)4AVj=L`!0!y~ zrp88KMyL_14&Yw|-bFgIWc-+dLdjvPiZ7dhYmIEDz*68o4MSED43dTLEV6!@sh)OZ z&-X12W0p0W9B?U-3xDkg+>DaAU>m`^xCEu?CIMbYS{Aiw8H^z?Nan}n7z5QYTac+) zwNXc`vU*d=l>sVo6$V{cVnr}W`}dd0^)C0uBN)waF$-fh16M>GuU=S#;Yt6fl}~|t zkj3+i&} zhrsE;e@Ys^Y<>;g7Gt0?rs&QLN76tKk1$pn(lvEGlK!$2sruR<7(%={&c6b#i!@g0 z0)w>bSqL1ZY_}a*3!jf1+Ioks+sPe_G~R3iCZXQ|yB)X^$&QRhEeH$}MKggj6>R+t zxEq)Qd>mkB9I`+&necb_wZM58RnqAa=Ugp)E^^LoaK+i?oO{4IH`c(X0nWK=oO5eD z{AzX1&2Y~3Ht?&ePpw37XZj$KGX<%RzAv^Rr{HHJ$5^fV5p_da>z)Ig42)s#52+4W z)R}`6RatNBSC`bHz?~U|oLn4+6kcls)&Xw<%Ym(>c_v@PQNUq9Ba(-<4mlKGGnMiG Y2X&g?t^9Od0{{R307*qoM6N<$f>eMhz5oCK literal 0 HcmV?d00001 diff --git a/parsers/src/main/assets/icons/651adfb1-9ed0-4a58-bcab-7d1a24f6f19a.png b/parsers/src/main/assets/icons/651adfb1-9ed0-4a58-bcab-7d1a24f6f19a.png new file mode 100644 index 0000000000000000000000000000000000000000..ba7293019434073297478b0cc6e68e0f95571474 GIT binary patch literal 8164 zcma)hcRZVGAGf_{jn*b+Z81vF))sq{+9QY+jUZ;xqNS9ewpK-J&(^5Xv}zPZ)t;eL zDH_D6w)&<$&vVXs-t#`s=l$cplI!|@f9tw_zhCbA&K(Og14cS-Iua5RMzEo-74Z}G z>!P6|j%r>i<0K@MoG=>)q=Tsm$P*qY>+S{jfXbo*gNZl^iN+OFu)C)}6e;Kd^??Ox z0={&-00_doGy(R?rt+r2I#6GjVI%@-9cgCc8R_q-<^{NNnN9-*A}R=kBHaa1fdN4w zAe1KHw_XtO`>$m=fZ%Tm(q9wcU}_<#14lpwm1UJ>8L2Esi?>RWfgvNf1Ml10)~PHIOxIx zp+OLLAW#q}D=(|`pCaMDP@=m3>m>h{E^_~JP3~7+|JyeWxqo=C@tg3sMnIJN zV~yBgh@DFA&sIg8{MqcFLBupd5L+2Z8QC%k328ixm=OO+1QHU7%+SnsV;wD)s2% z^w-toSkJv42C6Tgh55`BQyR-xVhD4jhULu#H^x6ZI5;6Du6VvQQ(wHB#O_?oXhKox zClEf7x7P=qs*2rp^-s|arS#*z)z5A_L}yMrS_8GsYE9fR0zwg$hSwwWZ!@uvwF3Uh_rfBv>zpKAo}(lA^NIEE=n8}E4H`lR&YHU zb-_#5n^|^&Fq9(smAv=68W3GQP=hw`%u%InQq_A4KCF11_sNnAyzl+<=aKC_#&+Y$ z!Y+$ruM6-lix-s3lszXJN_W2qH(Y+D_q^zVTHH$bJ9=oXk3axVa2RCjm3nYDEg!R= zAw7p^b(<*X&1p7Y$gLKCUnkka?eGU5qG;-d?44ik@)O=f%nvg6KK5k|48bK6f0Jl~ z4Iv>UB=l^*E>e<$q6;J>7dF7US~jSno#Ke6PI|@tSB}@A!s_m{@hmh^GnDKUd>1Ss zeER)2$><_8SoKtQd)nmdZeoMklPuq{=4Pq|38pmB-DTmNO}H9&HBMSY=*>`f_m29F z=<2rP(9^Kx*u~;b@gJHSC9(D2ma3i~R-aDR$2w}!%RC*^{vX4d(Ci$eFO`TW=8N5F zcqw2onobaWE+@t#&clMuVcfzk%1zuYIXI14KgnN0UOJkI_QB*5gVaW3P*eCy)OTzZe%77iNM*iC%S-c(lajbQ&%< z##ZO@P~C|>J~wU_+l+O3NX~o<3PuyyV>hWhuq>*>eU>ZSq}ybjY^s!bNj|RX7gqpH zinZ#|M`O7(dnpuv14znv{5v}Yl-erlW6I7@i`2OrYk^nLbbMO8yJZ8JoJ8XCA3+4puz!d?yB0D(Z|gbr{W86wx#%#wSsFZTFM?_0S@pTW#j6 zwZ>W87{rcLtzO+@yzwQ8`rsvs#jBBI@$jvB6NS5yU z=sG@T?7~W6%dj!nMU-y%s^yDG%nUYA-(5Qm+Z=X5%-iuqwh6yNfKFy~d)|Nhg^8Dm zm()bM7U-mzNB@JXjj#DQ|Jm^NV^-DSi8ojq91>TSXR232&gp)1N`V)~t>`zDlLhjm z+)*q*z7>eS)57N>dGty#$X>eqUO-p}-6QfgrZx^abL05(2yLexT4~q?{$g=5aq?uc z`K0Hdc*?x>C3+2pP8wO?yqg@s^Q&56++wRJlTUkj8RXv7??{lD zbb+Jf%jEnfXiUd$E`y>M16~NHh>9ZThko9h!ujFSy&IRulES2GiW!PXI$7yeL(f0> zdUw92?ffp5uS3bn6772a@}<@MmJ;NY?Hp4t6mSGnuYAo9jZ;8n^!a<7@ES|LCy?AD z@yVehf7aEm#Hq^JCK25i_%?bt_6EbkT#cqnUitgIg0IZjy@?lgK@a6#PI>H1T6Gp_ z2wdI}2RBuYJm;nY&u0X^6Z4Gl(R<+?Ji}x{eVM9LoxRA-@+T)w92)~h*HpgPgnnM8 zJW(G`SWa>ELtRPP>Qf9R6`P|+nS*j0?y|6-Be&(44K_3qDVE)YfSrvRO~#jv3s@Yy z6}N(N2@&8Bk=l%jvblFsusfJ9Mj)$kezce|w*bZKX*rR!OoANR&Ku-ki}4rD30mN> z^(n+OqDQg`)7*FFq+nT?b+otPX*Q-uB+XCXky=?~hmU5qcoXX*QY-~SW^M7xY$}0Y zWK2MW-On4IreSVm5$wt(2RNHDAp1h-ptr*%LE!MD^lD>^YKt!==(_Bu6;!Xnj0-Mq z0>NLhpVrm{M=Ua!ceG*kk&Mzu zecXF6dKixMB&+^O5=_~0VAms7Q}>PEF0}g^y(RfxQnEi!XYU;CeBl#M=vyX-_Z-DE z`WajA{Pmuu=+WCR2-o-bWuFJ{yg2|K2Z*ThPJmbtv(=sb-!Ctv=zixs(ayTvA%j=L zX{4|obKo|xhhVgZrH-bKe6p%^^zQ9DAjZ#c#m6*c>=W9xSYa`IQzmbFzC34l0Bq{v zuH)7LuVudhnzFw_am_3I?(0VeSt9xN53eh0*`2vE79}dHOa?RK1+dO~!-?oVPx>iV zhl@>@TGa2AM+*>eOvU%qBQCZm)(eM9`3m5%@XYuuJ`swN6+}`s4As;U9}L!A;iBUJW&Vs>F)p zhvHn%fEpg$bl?wh^=`E`qO1BsTT*$VxwbKbThEK}CYl1xE7As^`V`&NTsnSIeCPjW zRr}VjI-%hbfBj2pQXfyP5Z=i)1-N=WJ6dvtDF1voS3c^<^*eq)TM8 z8r>py8~|1ejF-1JnsX>O*m>`l5Gi*T?`pqk2#(Yqzb={2 zxPP@sc2g4kS@F1@e$+__)-k>@_|&rk^FuU7zhtvZZO7sK?Z`4rxFNSo?KUa(tWik2 zmF58zSOBK28Mt5bxk7s(2W@6cYs|P4-HJ(`uopjT!WfJ2S;RHm8J@Z#9&+2Ng})Iz zE{vAVMpj_rSF>!@y+US-^K+xj#!F2re8R!u5;s~5y>E(V3+>9!azB+1f!AY}-#p*f zrpO3g2p_O(&=|f?AO%|+%_~Rm=o08h3_G?I#7%mDozGhqM*&*s|`EmAWY$a9k zST;vSPmfkzdz`CkSaWKCvsqJVW+s?_Eq^a(*tjm6P%1W|C^TH8K^SoII!12{HXd$> z#^^5jaa2a3G4&U3Oa-BlFEGcKPP=q|>@;mFC_EK)QBR8HDic%V(S1@Eqqtm)jq20? z@OB0+#cUks-=Hm=8ct^KQO$@Fh!VnY0C-~a*<5^9n?m- z(#bVh>uE97ts(;NoK!>)7RhQtVHZSpn2T&y?&n}zjcpRk;!_)UFSUG*#$^J;v><`R z#u2F28t|I;!z#e#fjbF9kK#Vf_sa&JsS_4fF`@18=bkz9;2E5Ct1JtRtM;zl;XB{K z%@H!09$Gy+lQ+)|d!1{0VSj*%m`X?<*N72dW+{GIw<3*e>`H&s}&Aal`3 z?+8;T&fU#SLQ>~`$X2IxavNI7Ty1L<4NNjRz2BMM*YsRuQ5yE*YD1UTrg}9JBD$G? zkLnRKdLgt4h`7;iR!C3LwI6#x3o$%>jyWDo7;!=-4iwDEg zz~k>teaBpK^y=#k7dzo~Fsr3;UeV26{8`sN=Z^mDy+~BshH69yXQSPC{TgZ4AuW&4 zm)<1~n(O(}p>+eB4-E-SkhjM?;N`6HfzextBfE?w=uPZ1wRNQNbA8d%pop=W;f3RF z?&S?fj=3{x+g6EU!D@-9R~?sSH+#^1x0aI!Qc7p@5$E3&H7JdQC*gI=nUm+;!%7mEn)kNP;6lK1k-cs5~^jAB=ASI%PN8J*%2w7rLBSy-$Jb4F`$|}!tvyjK+MjPc zoYC|NY)>W=`kAE!?>oR!XNf>E+r?i-ZDlF$d{e^@#TW6`a>p00zGV$|+&m8~Of|}t zJQZvk@=8_Yg%|{cY-&zw(iX1`As|`y%!O@osDcHe^#% zoN_aU%5MJ!RfK&of91WC`Ud}ETWdQTf8P7KO__%Ih13O48IE^m`a-5ld69%1XeY(RZGF#zn0D6Y`OEy(B2(UDZHcx;xNe1?wfny%8GAS`}lJ%$*GTA;C*@B63q4=u+N3#Tgh{5%AB#U;yb^{=nXe(@XavaBQTk) zt(#UIaQLxVY;kxu#XA-X86GspLD1fo`Pjv^A!hP(v&yPs%iK4o%f0W82Nl^j2IFl| zk6qYfa{Y`_UFf9c$Z2;_j_6*wh6GQ^C2Ho<8}GK)$L_RpIdZ2dQ83VLsy*VP=YlvT z+&L55E@+}pkG*o6Y_Gz044imqZ#91FP^MJ7Ko#n8ubETGfaBz zZf{lRCJG)&yM=qze^y-UqkD8tMN3xLIE{@f#^=UHa z-!8K}wSIKJC*3og{8k>WP27oQn4&IM6X3Bw+T6(Atq21SpEVr1&p7Tmul&qo>2R@j z(vA&~%X2H7Ee{zpb1ff=Gf*$Ftv1a09%UCL;d>plC*9#Nejc3VwtJT??t$gUcc?Qh zHNseKOg}@@p$AP)j!J5GOINdWU zFxsKm1sL?$iqBOP*`d_oW`qB@OwFh{C8O~U6;T=xq|#lYNL6G>@( zH2c#NK>=Q$dW$2;MBHH2l!cu1JadyXJ~qfEie5|)5P;ZlCXOv1{H`om(O3f#1vi5?d@ zTS0*MW;DTYaNgGc84h9xGC$OE*I)$oT`?teemuF8F<(K~!XK1&8lXuRJkqf5U`fLUFLNb5svZ zqfKkAraUn!A2Ly0GNJa7+);TnLu9Vf<1MvmEn{k_!7?M_cb^^Llf8XlmlCv+u9k;UcX_ z_jGZRYF5IMj`u&f5mdR(I8;r^HD}v+B@ScC8^H%6d=Q`f^Vy-{mk=M))^15E__>u~ zjyY@OG705$p>_8O_a&hwXhQ$6;v#~5Wlt+A856kXCC{U+zA?aBKtA@12T)+FM5U`=qXz8KOrj@!PvwQTTo?$&3Qm5ljd?5j1TSSyr_%PJCt!+~VPs zR8t~wgMGk}g+=Q=;E%`cD;?HrJy(usr_bi*8jbg*yM^A*FoD&lAxrn9kVmG7l23?H zrp%kufa;R6gi7*t{9B_+;^S;p8zV#D18MQ(D5IDU#UA`=hw-@b{HVyaa_Aji)Fo?v z>BB9~t>hwSSsv9Nv!Ee$@YlwdsiJ)LE3?AuB=T<*H*eU=54w)uuouKrftM}fzh46y z%$Q#``jm*5%|W;65eC&-OR|xT!$+;Lgi=iA77x$&M_Z}8%l7H@GRZ;UpE=X-5E7r) zjeJHy5sTGxmO!47AxXgqQ%ybPq5-tfQT~49x7$Ti?uo+%K1QdtMOJ&N5&2xG@n@JD zcFRw7&J%J65QH0cAh})>Tf=+_<7cx_&j?@F-lKtz1oJAm-m1|7hJHpc+0lQqL0rTUDWx_CgXP| z7BR`n{n6R=xc9!2iG2(v1MO8oGF&S@)0RuITZLg2?8Y`%KV`DjMmxd8ic|}I-l%Dg zE=;~Lv;XAvo`=`JY! z<~8Z~mI;RtD|Gb_;c(*&Arq>i3vD7%F|!Nk6d4^sklC8}PL(PBv{fbykbNZky0AJr z=#PI0@XLH}(7$qck~OnHd~tGT`W57vKEM#fdvY<%WvIs~+HCwS6ameaYUYay#m0m~5ap`>&`)I`NXn~};7Q}prU9^f<{zo-I?g4=nt zlBOor_@LAK@^R^}(sv-G{-Pts5$Bn-oNvcG$juoF6Mt~BPg`_l-(q|J8pWc+sq?Lv z-1$a=hC+0h=kmw0ERjl4+Tn-#Jrta?(cu?@xtFN;beHkzLA)^yd4#yNMAUM7k&@h` zzRAO4d?l_QXA<(Gk%06F$K}sF_{xu~zj^)2ysMH8fH43iQW9$2u#9hX&~mN%nlcLq zf$u4fmPGQ+U!ohu0s_QDP*J}ReZL)#e&65Y_s4smz2DF0>wLdnug@OKa;4fyB2|zO2t?As-r5a( z@)nn2B=bn10w$eHL-UwX(Xk|+ z8D>c@3H-izjKiRpDBMUhjE}P`n!@7H(S}$r zxcK;ZY`i{}#RZ#t~$vB4Y$o6BHDqZf73 zwy@&3W*7{JqyO=Y$^Nc9I`;4A!93u2G&W8Ti^u&;W{0!5tk`hYzleN?e-oth7(Zh8 z#mpk|8=cDt{TKQo@*5q@wX^g8j)KYjC6HLI%~miGe<$@9hyIB>)+2#U$GOpCS#g|T zy3JO4G*@FO7oar~g+r%t>DJ&f!w~QUeO)|3mq7H;Ga?xfNd^QRydEC^o$SmCVT309 zP9~D{O-OqBAer>t<(#cCeus>6sWA=@PJdOWehKBe^no^e7)|29q8g3)Yw!Mvw3<>>sG_ zzoARk-NEJpO?*?ic()`6CM}Ha%?RO!|IqdWaH2wQB>Swk$Xlnz*{9OIk+U` z^8+)(5DB=S4Eg>BEw&Asyi`midqymm#YtE?`qoSC^q6nEZ`&xwQWK%kOQl4j1uxn+ z!>~E5khoxa$dU`7x^HMKE0h~gk@#>r zsP5;R{Iy(gf4hcT?CXDgBjbMap1ef(X%K*N-_F1R15PU3_fZ9Iz7IQkG+0I)aFpFB zJ~0P@K=}-?Abu+Z2t=zOuAob&ji%NfIFz}+!dOe{u>rNsDJ#28p^V*MA+c{f(&E0+ zX>tSJI3RDo@ta<%d4{yo))t;hS=2-@=+hIXq>8e zk=~xZ#(V1EwV^B35u|#pq_uDE{>9CcR^QF}PJ&b@TMu zj80kYo@ehfn=rj7*`niXLPC55pT1tGvE=~Xr{7Lf#)}xOah4Aik`$e$rn(I-T_n{dS){^CRfKhG+Pd@cbD@!bBxy7FX%CE zpIzp=ucm4HL$jA9Q)kjwl#hqQ214aZz;}`u+uk=80ue_oE-2(+sS*T&%yqD~^x&0_ zA4<*l@>FiOn5}D`AJl>Qr2(12a!2>>zbL$$8th?3D5mdmj4&b^wpTD5A3C~a&dX000+~uLs+=BOt)lF_^3NS*AK|`xv+rY@XQ$g^154=fkCWpcZ+lxan-r=P z`Y3s}^hNTeZJi07ja^e}cqIwp9hZafO1m>gGjc~W%DCrQV-fwX%I%V>YDBU~KP1W4 z+d{HQ#b_EtDQQ^%GRSgzvZCK~a<9-H0&Gp@Xoh~;2L2SktZZK!cyQp1r zu1SVsKD$N9r!QSl<%@t}Q22thZD}!Cac{t+?or$AF1eo`8twP0k*$L;74eQ;j?x#tq%ZW)A zg@IFgfWttkRlz}E<6wKphz{@o-&v&KCS%MwiWTXE=eB27`35uXJK)aaf-2QO>$M*Q-uM9!)R&5O9L{U>DG;vfFs$gZ#jlS$HZ!9b&YxZmZYShHHxb-er8l z8wdYr?;3*6!+fOPAO^L3J&zoF{vPhVt0n^?NP7nrbnM&LvVy0=L-=@)hmYqxMXuYm z?!ijB(&Uwtt295MsFNWVeIs{VL-|AmoI^)O&q(`0s+`TF`x1lVQmOaWYnK46B%wJO zw&P%hM-C=x`1&cM2Th)KQ`eUDd$*;D=c_0-es=O|ZrxSb_?eJ6QY8iu%8kRmSh(DN zHY@&$)G#M6yE*b@dVulDUH1|U?f~*PDvM<Lr z)ow35|8>M=cn&A*d@xagC(Uu4giPR9MY`Oa2|uPT^e8(7H!OrGJ`L9%D%+bVGiNwb zbEEM?qNCT_2YnIRO+a&jM{f>*b?h_M9x5`nLHR(d0fD{kXmauCuN9GQO>zz+iu}*{ z=W@cD658VSQ2Ad^R{wS8=v_#E`p#GL>pHdjV<_U`xm6d>b!*qwSKdw8wdskH5qhZf zl55=ztX`!@mwF0#ejyRB`-##^wi&DB*4ncAAD4b}N&8+BiroSN?Kt}iqc zSKZ|4MBTmi>8p^{9eYNW@%+6<-{%Dd=0N+nPC=X9Q6(qBR+-B?d_HZ0Zy|!?2=P4s zw&+{LqwZc_l19HbWuiAqbBqaK;h@X9cOtKGr>!FH2syD>m;ICIVk^ zxo~YAvLWYYDw<|o!tDP||w3_?Ct3os}JzLr(aqvF)A%56wlXRY%w(5bxRG8DfsK7vS zdGn6f3J!sW8e^NplOHt9DNf)CvPSN8gHSc%JY-_c`kGt4>98-7WaRwv_pXm^rQ{A4 zL?%?gPp&lI*?K2{4jUN;1gTYmqAzx}#a0t(T|ENXQdm9gvCx+^YkM{I8`H1}Id)=B zy;pYno*RrCQ9bGl(u4@r4qKb%uMmH3e9r}7lOfg%BW16gE(afwI1N|F<@K41=2vQI z^QGyccyfA56^%JEP~BwuDtULwj%=MY*1d=CdB_H#1DwE0qr)9BZQ6j;WFT)HcC$!@ z@Zsuli6$o(esY{doni~(z~E-vrw87`QY`Xi&3A$CPUlR)-jfkT(o2LNtgBTotFy`F zZYv4ZpxpTAxkGvDeH74{Qt>3h2e}SX(brFXl%U?9?-7Qn_1JDIt=wpumgiQdo+l^+ z1hb@Q9#OW=ugm>I6Cen#E_ct$c)2b?y>63F=2iVTuP^5<1quyH`;S#FoE8X~pdBT| z19OD@M4IcR zpVM^UT`9V{@E$7Ut3KyKkH7ZNu^q%T8-AEYNrg=1k+n8?Z=Y)%_%P7gRh#GsB~HA# zDrN8q6UTpY^oBTpMbTG(S3kZutSbf2q@Xom`(lRKMzSrl$Ida8HT??=<6{RiiaUw{ zNUmxwWlPy4*LSbgd{zQKEbQhH`=O54mLmf-n6BJQJIG$QNYyujdmDXGiUhLNar^dJ zw9C2B6H!!_)-#788z7q>Hb%NslXV*za6P6?1~|brE4Mctu7LMvAjYc2$o_V(Bceh! z2N}Pl=fOLLOVEuJMlH%AGQl;zAu`~Z)d(f4X9Lz2L(R48p>sdU*1)@0|}W)ZSO3*laeD)??neChU>HjVtu?z{F<_wY?yx=HyMJ!svX m0ZBwM-Rhs;fD#YqEc^qrik>X{oZnC+y4V*he{^^ literal 0 HcmV?d00001 diff --git a/parsers/src/main/assets/icons/8f60f1d9-cd4b-4213-90fe-3d8d32541075.png b/parsers/src/main/assets/icons/8f60f1d9-cd4b-4213-90fe-3d8d32541075.png new file mode 100644 index 0000000000000000000000000000000000000000..819ff34323a9b206f52d2a7a8d40ca7024da2918 GIT binary patch literal 6332 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 literal 0 HcmV?d00001 diff --git a/parsers/src/main/assets/icons/f29a4de6-572b-400b-acb2-76252c497189.png b/parsers/src/main/assets/icons/f29a4de6-572b-400b-acb2-76252c497189.png new file mode 100644 index 0000000000000000000000000000000000000000..3467e9c44b8218680ba9b03aa5eac241ba3bd0e7 GIT binary patch literal 5512 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 aO^=xeT~WGwi|ykKkg%t#pUXO@geCwK$C6n9 literal 0 HcmV?d00001 diff --git a/parsers/src/main/java/com/twofasapp/parsers/SupportedServices.kt b/parsers/src/main/java/com/twofasapp/parsers/SupportedServices.kt index 838d702a..fdb86b2a 100644 --- a/parsers/src/main/java/com/twofasapp/parsers/SupportedServices.kt +++ b/parsers/src/main/java/com/twofasapp/parsers/SupportedServices.kt @@ -11,6 +11,7 @@ object SupportedServices { val list = listOf( SupportedService(id = "002fd04d-4046-4629-952b-ee92f17e2e09", name = "IONOS", issuers = listOf("IONOS"), tags = listOf(), iconCollection = IconCollection(id = "a70bea5a-ea3a-46c0-baaf-e837a66aac19", name = "IONOS", icons = listOf(IconCollection.Icon(id = "a0f2843a-b865-433f-8267-45e57540ee08", type = Light),)), matchRules = listOf()), SupportedService(id = "0336adda-650e-4082-a24b-4a2165c3a043", name = "USPTO", issuers = listOf("MyUSPTO"), tags = listOf(), iconCollection = IconCollection(id = "13838d86-6882-4851-81c1-272b128feb5d", name = "USPTO", icons = listOf(IconCollection.Icon(id = "8a10866e-9a2d-4014-886a-092e3329dd80", type = Dark),IconCollection.Icon(id = "da8f89ed-7f3f-4aa4-9c84-31d74b87160d", type = Light),)), matchRules = listOf()), + SupportedService(id = "036733dc-870c-4a5e-b0df-f4dde5cc2a4a", name = "Trading 212", issuers = listOf("Trading 212"), tags = listOf(), iconCollection = IconCollection(id = "90ae4dbd-22cd-491d-9211-347df50aabe2", name = "Trading 212", icons = listOf(IconCollection.Icon(id = "006a974f-48c9-4c94-b913-45dac870b52f", type = Light),)), matchRules = listOf()), SupportedService(id = "03bc1020-723f-445e-b9a8-530b8c37cc71", name = "Stackhero", issuers = listOf("Stackhero"), tags = listOf(), iconCollection = IconCollection(id = "236f8ce2-36d4-4c65-a7db-645b2be0261e", name = "Stackhero", icons = listOf(IconCollection.Icon(id = "823b2ffb-fc12-440b-80ea-a89fce2bb926", type = Dark),IconCollection.Icon(id = "9c775e93-f629-47c1-809d-da1e08b44e59", type = Light),)), matchRules = listOf()), SupportedService(id = "043d0156-95ac-4d35-b9ea-7ca2cd8ea8af", name = "Aternos", issuers = listOf("Aternos"), tags = listOf(), iconCollection = IconCollection(id = "f5b2dde6-8f5d-4ca3-9b19-d10ef552d8b1", name = "Aternos", icons = listOf(IconCollection.Icon(id = "b57bc046-633d-436f-b28b-488d2839691a", type = Light),IconCollection.Icon(id = "bdaeaae4-4d21-4662-b347-845e9fe182b2", type = Dark),)), matchRules = listOf()), SupportedService(id = "044d1095-ede6-4033-938c-4a409ab3a2c6", name = "Ring", issuers = listOf("Ring.com"), tags = listOf(), iconCollection = IconCollection(id = "97f2c094-5a55-4406-b06a-3229b0e08db5", name = "Ring", icons = listOf(IconCollection.Icon(id = "26d95dc7-24b7-4de5-b777-b190e085a596", type = Light),)), matchRules = listOf()), @@ -76,6 +77,7 @@ object SupportedServices { SupportedService(id = "2ee903ff-a9fd-44ce-970e-47fea122a860", name = "Nord Account", issuers = listOf("Nord+Account"), tags = listOf(), iconCollection = IconCollection(id = "f7a9cbe9-7a5d-42bc-9b2f-93a8254a2660", name = "Nord Account", icons = listOf(IconCollection.Icon(id = "ddaecc33-2298-471b-8a6d-f728407c3045", type = Light),IconCollection.Icon(id = "fbd08b46-4cc9-4939-aeda-76f1ce8e4b5a", type = Dark),)), matchRules = listOf()), SupportedService(id = "2f17c720-647e-48ac-a306-b680954f545c", name = "Nuclino", issuers = listOf("Nuclino"), tags = listOf(), iconCollection = IconCollection(id = "65608700-0814-41ea-bcc7-7ba73e00dce8", name = "Nuclino", icons = listOf(IconCollection.Icon(id = "179e17e5-2f3c-4466-95e1-49b3fadd257d", type = Light),)), matchRules = listOf()), SupportedService(id = "316212f6-5086-4bb2-8ca1-fdd411280a23", name = "Intuit", issuers = listOf("Intuit"), tags = listOf(), iconCollection = IconCollection(id = "a9dac0da-53ef-4c0d-b4d0-b7a23666be93", name = "Intuit", icons = listOf(IconCollection.Icon(id = "55799bee-7e26-460e-a643-29e6ece35361", type = Light),)), matchRules = listOf()), + SupportedService(id = "31aa8c45-8c81-4039-a617-22fad52486af", name = "Jottacloud", issuers = listOf("Jottacloud"), tags = listOf(), iconCollection = IconCollection(id = "5847170f-ef51-49ef-a349-72874dc4afe7", name = "Jottacloud", icons = listOf(IconCollection.Icon(id = "2fab006b-31d8-4bce-9048-e93256412b08", type = Light),)), matchRules = listOf()), SupportedService(id = "31e746da-d4d7-400b-ac87-006cf7f77e39", name = "Rec Room", issuers = listOf("RecRoom"), tags = listOf(), iconCollection = IconCollection(id = "c924f5d5-dc50-4121-b96f-b61dc8364ea6", name = "Rec Room", icons = listOf(IconCollection.Icon(id = "64192027-e51f-4f60-a10f-5abdeeb1b744", type = Dark),IconCollection.Icon(id = "9a019bbf-9b58-4ec7-8961-df0a5e8f6c56", type = Light),)), matchRules = listOf()), SupportedService(id = "323a5859-1da6-4fa8-8ec9-e90e44575f6d", name = "USCIS", issuers = listOf("USCIS+myAccount"), tags = listOf(), iconCollection = IconCollection(id = "55a7126c-c74b-4030-be46-33baf1d41794", name = "USCIS", icons = listOf(IconCollection.Icon(id = "68cd26a5-04f1-4d74-aaac-129dacfbfddb", type = Light),)), matchRules = listOf()), SupportedService(id = "3299e7f3-8231-45e4-8837-3277574f2368", name = "Glassdoor", issuers = listOf("mfa.glassdoor.com"), tags = listOf(), iconCollection = IconCollection(id = "e2383048-3ced-4f07-b637-22ac5781ed75", name = "Glassdoor", icons = listOf(IconCollection.Icon(id = "deb814e0-f5de-4b32-b588-f86d33619de4", type = Light),)), matchRules = listOf()), @@ -103,6 +105,7 @@ object SupportedServices { SupportedService(id = "450cab07-490e-4645-a336-126a798314ae", name = "Kraken", issuers = listOf("kraken.com"), tags = listOf(), iconCollection = IconCollection(id = "96d6723e-b5d2-4b90-9ce3-bccb3f919642", name = "Kraken", icons = listOf(IconCollection.Icon(id = "10a4ddaf-b0f9-4a30-8e60-3b9dae01de11", type = Dark),IconCollection.Icon(id = "7218bb8e-f2a8-49dc-a1fa-cccf92294f78", type = Light),)), matchRules = listOf()), SupportedService(id = "454f77f3-c3b6-421b-8bb2-f2f0d627139f", name = "Cash App", issuers = listOf(), tags = listOf(), iconCollection = IconCollection(id = "f2bc2c98-a5bf-4be8-948c-28693d1600ea", name = "Cash App", icons = listOf(IconCollection.Icon(id = "8fbffd24-7fb2-4a2f-b15a-a026361a16ea", type = Light),)), matchRules = listOf(MatchRule(text = "Cash App", field = Label, matcher = Contains, ignoreCase = true),MatchRule(text = "CashApp", field = Label, matcher = Contains, ignoreCase = true),)), SupportedService(id = "45741eb0-3388-4d54-8816-20a4bba036eb", name = "Zoom", issuers = listOf("Zoom"), tags = listOf(), iconCollection = IconCollection(id = "8e3326a2-13c9-49bb-b28d-c4465b0ce62d", name = "Zoom", icons = listOf(IconCollection.Icon(id = "e9f019ab-034f-4e2c-904b-f649961fc640", type = Light),)), matchRules = listOf()), + SupportedService(id = "46d677ea-9678-4d03-a737-d53750c97f91", name = "Ubuntu", issuers = listOf(), tags = listOf(), iconCollection = IconCollection(id = "", name = "", icons = listOf()), matchRules = listOf(MatchRule(text = "UbuntuSSO", field = Label, matcher = Contains, ignoreCase = true),)), SupportedService(id = "473b0856-b105-4f77-b7ef-f5bf4529837c", name = "NiceHash Withdraw", issuers = listOf("NiceHash - withdraw"), tags = listOf(), iconCollection = IconCollection(id = "c8019718-56b2-406f-bf21-2addda6b21fd", name = "NiceHash", icons = listOf(IconCollection.Icon(id = "cb0edba6-9027-49cc-b99d-1b31041e5073", type = Light),)), matchRules = listOf()), SupportedService(id = "481437e0-6b0c-4289-98ea-ed30ac4d5a0f", name = "Mathworks", issuers = listOf("Mathworks"), tags = listOf(), iconCollection = IconCollection(id = "69123308-c433-4acb-a876-d5045d25cc83", name = "Mathworks", icons = listOf(IconCollection.Icon(id = "adc64626-384a-44b6-8c47-ac3a36548a7b", type = Light),)), matchRules = listOf()), SupportedService(id = "48223642-089d-4e35-97da-4fbc4ba81c35", name = "PyPI", issuers = listOf("PyPI"), tags = listOf(), iconCollection = IconCollection(id = "eccafcdf-9e15-47d8-84c9-7da00d236135", name = "PyPI", icons = listOf(IconCollection.Icon(id = "e5c1ce9d-61db-4cdc-9f52-9b297a22d010", type = Light),)), matchRules = listOf()), @@ -135,8 +138,10 @@ object SupportedServices { SupportedService(id = "5c9efdde-cb62-4304-9f04-d120084a53dd", name = "Discord", issuers = listOf("Discord"), tags = listOf(), iconCollection = IconCollection(id = "f260ffa4-f41f-408a-aa2a-03d943efe371", name = "Discord", icons = listOf(IconCollection.Icon(id = "df6e1b0c-1a81-4a7f-863e-654b22f6d9b2", type = Light),)), matchRules = listOf()), SupportedService(id = "5cf8be69-25f5-4d43-aa51-2d54930d247a", name = "PayPal", issuers = listOf("PayPal"), tags = listOf(), iconCollection = IconCollection(id = "ff415e4a-32f1-47be-9274-44ab42f79720", name = "PayPal", icons = listOf(IconCollection.Icon(id = "5231ab25-fad9-4896-b984-5c40f2a6ec4b", type = Light),)), matchRules = listOf()), SupportedService(id = "5d2778b3-e293-49e7-a39e-66d86c21dd96", name = "Dropbox", issuers = listOf("Dropbox"), tags = listOf(), iconCollection = IconCollection(id = "3c82e6ee-906c-4d6a-9992-01ab376614db", name = "Dropbox", icons = listOf(IconCollection.Icon(id = "9f71451b-676a-4226-962b-9f1040986ebc", type = Dark),IconCollection.Icon(id = "b44f8e4c-d17a-447d-956b-ada61c5823ef", type = Light),)), matchRules = listOf()), + SupportedService(id = "5d4710e6-1eb7-4d29-b1aa-1c416a20773d", name = "ClouDNS", issuers = listOf(), tags = listOf(), iconCollection = IconCollection(id = "", name = "", icons = listOf()), matchRules = listOf(MatchRule(text = "ClouDNS", field = Issuer, matcher = StartsWith, ignoreCase = true),)), SupportedService(id = "5d4c1ad0-35e7-4205-811b-52d596651ca2", name = "AngelList", issuers = listOf("AngelList"), tags = listOf(), iconCollection = IconCollection(id = "6900249f-744b-43df-86bd-8ad8fb51965a", name = "AngelList", icons = listOf(IconCollection.Icon(id = "297942dd-8733-4200-8044-1cbfac87651a", type = Dark),IconCollection.Icon(id = "59ef6432-8054-4db9-8968-0d176c01467c", type = Light),)), matchRules = listOf()), SupportedService(id = "5da3a886-876e-485e-9a37-5c5d1c258ecd", name = "ENEBA", issuers = listOf("ENEBA"), tags = listOf(), iconCollection = IconCollection(id = "d0239931-f1fb-4d08-ad44-06104a85c83c", name = "ENEBA", icons = listOf(IconCollection.Icon(id = "b655c71a-6b40-464d-8f58-43705c6c071d", type = Light),)), matchRules = listOf()), + SupportedService(id = "5dfa53b5-48c3-48eb-a134-db9ac58e8d34", name = "Privacy", issuers = listOf("Privacy.com"), tags = listOf(), iconCollection = IconCollection(id = "4fe59ffa-9851-47df-88a2-15104ea2985a", name = "Privacy", icons = listOf(IconCollection.Icon(id = "040cc5d8-5bb2-48e3-b2d9-1c9e030f2a32", type = Light),)), matchRules = listOf()), SupportedService(id = "5e62a68a-88f4-4f3f-ad60-df8ea34bdc57", name = "MongoDB", issuers = listOf("auth.mongodb.com"), tags = listOf(), iconCollection = IconCollection(id = "e082188e-0759-4827-96ff-acfb35702a52", name = "MongoDB", icons = listOf(IconCollection.Icon(id = "44799abb-abd0-4984-a008-e88ab9070367", type = Light),)), matchRules = listOf()), SupportedService(id = "5f6cf4bf-e408-41bb-a520-4c27417ba474", name = "Infomaniak", issuers = listOf("Infomaniak"), tags = listOf(), iconCollection = IconCollection(id = "5faf5121-0161-4b23-a875-b347574b891b", name = "Infomaniak", icons = listOf(IconCollection.Icon(id = "47d76376-6a44-41b3-a800-c69cdd8fe393", type = Light),)), matchRules = listOf()), SupportedService(id = "5fac27e0-e0e4-4e5c-ba7c-54ca0c5f1482", name = "Coinbase", issuers = listOf("Coinbase"), tags = listOf(), iconCollection = IconCollection(id = "5bd3cbd6-32b6-41f0-baa3-3fccaf624269", name = "Coinbase", icons = listOf(IconCollection.Icon(id = "ea3196b2-7a7d-45ed-a4e8-144e837a013e", type = Light),)), matchRules = listOf()), @@ -147,6 +152,7 @@ object SupportedServices { SupportedService(id = "63f0bdaf-94fe-4b4c-983f-90442877f0ec", name = "Uber", issuers = listOf("Uber"), tags = listOf(), iconCollection = IconCollection(id = "b73cc164-8763-4826-8603-0c79f08a1eb5", name = "Uber", icons = listOf(IconCollection.Icon(id = "3a0b50f1-8fc6-46dc-afb7-de1cb61bb8d2", type = Light),)), matchRules = listOf()), SupportedService(id = "6481dfa9-0bb0-4a14-a431-0e1a3ac8ceab", name = "CosmicPvP", issuers = listOf("CosmicPvP"), tags = listOf(), iconCollection = IconCollection(id = "a3e24799-f3f1-4daa-b5d2-244bfe53a19f", name = "CosmicPvP", icons = listOf(IconCollection.Icon(id = "43529436-e2b5-4ccc-9c3e-9464638aef8e", type = Light),)), matchRules = listOf(MatchRule(text = "cosmicpvp", field = Label, matcher = Contains, ignoreCase = true),)), SupportedService(id = "66917fb1-38a9-4ae7-95e6-f0ec44746d05", name = "Storj.io", issuers = listOf(), tags = listOf(), iconCollection = IconCollection(id = "c6360125-33fe-492a-a2cd-57dd72c18cd3", name = "Storj.io", icons = listOf(IconCollection.Icon(id = "5c986ac9-8e6c-47ca-86f7-93799ed8dd05", type = Light),)), matchRules = listOf(MatchRule(text = "STORJ", field = Issuer, matcher = StartsWith, ignoreCase = true),)), + SupportedService(id = "678bf6be-c919-49c4-ad4e-3ff5d2141803", name = "Dr. Windows", issuers = listOf("Dr. Windows"), tags = listOf(), iconCollection = IconCollection(id = "b92626fe-68ff-449e-ba64-3e92d55ac2d2", name = "Dr. Windows", icons = listOf(IconCollection.Icon(id = "11361929-9c24-4237-a01a-810000abaf29", type = Light),)), matchRules = listOf()), SupportedService(id = "689e8b6b-63d2-41e3-a7bb-6f935260d0cf", name = "WeVPN", issuers = listOf(), tags = listOf(), iconCollection = IconCollection(id = "bf159c1f-31b1-4db3-a8bd-802345ec8a4d", name = "WeVPN", icons = listOf(IconCollection.Icon(id = "88501443-4a33-4f02-883e-e5eb8ea5cdda", type = Light),IconCollection.Icon(id = "c5d4d7bd-1a3d-41ff-b223-94390fa472e5", type = Dark),)), matchRules = listOf(MatchRule(text = "WeVPN", field = Label, matcher = StartsWith, ignoreCase = true),)), SupportedService(id = "68c47a3b-5a05-4f56-8096-078a5b9b8e1f", name = "itch.io", issuers = listOf("itch.io"), tags = listOf(), iconCollection = IconCollection(id = "3ce6bb6a-a1d6-4ac3-8125-a556deee362a", name = "itch.io", icons = listOf(IconCollection.Icon(id = "003f4679-36b8-4fe3-bb99-b8c08cbf31c5", type = Light),IconCollection.Icon(id = "4abe62ee-7869-4324-9679-363e24216960", type = Dark),)), matchRules = listOf()), SupportedService(id = "690233b0-1e1d-4e7a-a89b-375862cc4666", name = "BitSkins", issuers = listOf("BitSkins"), tags = listOf(), iconCollection = IconCollection(id = "cd08463b-4344-4269-8561-60029f98ba5b", name = "BitSkins", icons = listOf(IconCollection.Icon(id = "09b37953-f46b-41a2-9888-903ab6ab16ff", type = Light),)), matchRules = listOf()), @@ -171,9 +177,11 @@ object SupportedServices { SupportedService(id = "7c839f74-7df8-4ea8-9e45-e9ad8ac37197", name = "Jagex", issuers = listOf("Jagex"), tags = listOf(), iconCollection = IconCollection(id = "bba6e836-305e-4ab5-b02e-40e8587a10d5", name = "Jagex", icons = listOf(IconCollection.Icon(id = "61a569da-5b9c-439b-a439-ff06a4c2f24a", type = Light),)), matchRules = listOf()), SupportedService(id = "7d012425-7019-4320-90a5-38963e4a022e", name = "Brave", issuers = listOf("Brave+Rewards"), tags = listOf(), iconCollection = IconCollection(id = "e4e7da2f-3d8b-4686-8c2c-fd94a23864ad", name = "Brave", icons = listOf(IconCollection.Icon(id = "c0d07326-5451-4ed1-8897-6b077e1bbfc1", type = Light),)), matchRules = listOf()), SupportedService(id = "7dfa2136-3dcb-4b38-9038-7e7a39612fc3", name = "Sync", issuers = listOf("Sync"), tags = listOf(), iconCollection = IconCollection(id = "3aa1b5aa-0f1d-41a1-8ce2-a3e76741ebb8", name = "Sync", icons = listOf(IconCollection.Icon(id = "348d6ba7-61e5-4247-a0d3-1a471e65fea2", type = Light),IconCollection.Icon(id = "b6e826a6-807c-4259-b788-44fbd238e347", type = Dark),)), matchRules = listOf()), + SupportedService(id = "7e3248ab-9cc7-4213-8e46-db814bcd98b7", name = "Squarespace", issuers = listOf("Squarespace"), tags = listOf(), iconCollection = IconCollection(id = "614e0e97-27e3-4db2-9f6b-34d6027fa9d2", name = "Squarespace", icons = listOf(IconCollection.Icon(id = "181d343a-a7fc-49f1-a34c-9c9c91052b04", type = Light),IconCollection.Icon(id = "f29a4de6-572b-400b-acb2-76252c497189", type = Dark),)), matchRules = listOf()), SupportedService(id = "7ec6284a-152f-4ac6-a702-95a21bfb7e02", name = "IFTTT", issuers = listOf("IFTTT"), tags = listOf(), iconCollection = IconCollection(id = "c5879187-e23d-4700-93f3-a6f868acabac", name = "IFTTT", icons = listOf(IconCollection.Icon(id = "9bf53643-6851-4ff7-8813-42e13ffd310a", type = Dark),IconCollection.Icon(id = "a474e176-b524-4f47-9136-8d5bbe082360", type = Light),)), matchRules = listOf()), SupportedService(id = "7f1b59e5-fd1d-4e2f-a6c3-c38c44c53c6e", name = "Digital Ocean", issuers = listOf("DigitalOcean"), tags = listOf(), iconCollection = IconCollection(id = "bedb3c09-c11e-4a34-9c30-1855a5b546b8", name = "Digital Ocean", icons = listOf(IconCollection.Icon(id = "d118a635-ecff-4245-8efa-a16ed0e2968c", type = Light),)), matchRules = listOf()), SupportedService(id = "7fc06c13-d09b-40da-a740-099cc0743da8", name = "Help Scout", issuers = listOf("Help Scout"), tags = listOf(), iconCollection = IconCollection(id = "dbedb8f2-02a7-48c5-a41f-a009b989430c", name = "Help Scout", icons = listOf(IconCollection.Icon(id = "0f8ca18e-d6d4-4547-8e5d-2c024fd1bf90", type = Light),)), matchRules = listOf()), + SupportedService(id = "802b7e13-9f6c-4546-b188-38b7ade15b67", name = "Unstoppable Domains", issuers = listOf("unstoppabledomains.com"), tags = listOf(), iconCollection = IconCollection(id = "07a242e2-8f53-4a02-86d2-bd3d1589f0bc", name = "Unstoppable Domains", icons = listOf(IconCollection.Icon(id = "8cc53f9a-5965-4cd3-a466-816474270fb0", type = Light),)), matchRules = listOf()), SupportedService(id = "80f023af-b7e2-4395-a700-769bf968dcf6", name = "JetBrains", issuers = listOf("JetBrains+Account"), tags = listOf(), iconCollection = IconCollection(id = "2143b701-156b-4d92-919f-00fa12423913", name = "JetBrains", icons = listOf(IconCollection.Icon(id = "18848da5-dfa6-4b4b-8a3b-d5dc3f7582b7", type = Light),)), matchRules = listOf()), SupportedService(id = "80ffdc39-f0ba-40a1-826a-0afb5084f8a0", name = "Ubiquiti", issuers = listOf(), tags = listOf(), iconCollection = IconCollection(id = "d4933ce4-1942-416a-aea0-97e802b741cc", name = "Ubiquiti", icons = listOf(IconCollection.Icon(id = "0b2c56d8-6e97-4725-bd03-0de05d9fa00f", type = Light),)), matchRules = listOf(MatchRule(text = "Ubiquiti", field = Label, matcher = Contains, ignoreCase = true),)), SupportedService(id = "81243ec1-475c-4d34-960c-18ab2ea3f112", name = "CoinTracker", issuers = listOf("CoinTracker"), tags = listOf(), iconCollection = IconCollection(id = "16a18da2-f83a-4af4-989d-bef141971c43", name = "CoinTracker", icons = listOf(IconCollection.Icon(id = "35819712-7fae-4426-8fe9-d718da5a11e2", type = Light),)), matchRules = listOf()), @@ -256,6 +264,7 @@ object SupportedServices { SupportedService(id = "bb0cf5e7-d66f-442a-9f15-1623cfcfc57e", name = "cPanel", issuers = listOf(), tags = listOf("hosting","panel"), iconCollection = IconCollection(id = "ae7eba01-f217-4138-9389-0dbac94a8f7e", name = "cPanel", icons = listOf(IconCollection.Icon(id = "89bfbb1f-97c5-4672-9507-a30512a0dffd", type = Light),)), matchRules = listOf()), SupportedService(id = "bbf98616-dab0-48d4-859a-0877ad00766a", name = "TeamViewer", issuers = listOf("TeamViewer"), tags = listOf(), iconCollection = IconCollection(id = "e478edd8-ec9b-4e06-b0f8-1089ce988125", name = "TeamViewer", icons = listOf(IconCollection.Icon(id = "726d138f-a418-4950-b2bd-59bec2b66a36", type = Light),)), matchRules = listOf()), SupportedService(id = "bc1329ad-925b-4f51-8ff2-0079975d9bc0", name = "Kaspersky", issuers = listOf("Kaspersky"), tags = listOf(), iconCollection = IconCollection(id = "7f5d563c-229a-4e2c-bbbd-50c7d27f5bdb", name = "Kaspersky", icons = listOf(IconCollection.Icon(id = "4fbf4cbd-7580-4b1a-9e59-3ec522329b48", type = Light),IconCollection.Icon(id = "f6e42320-6170-4bc2-9fd1-23639c23583a", type = Dark),)), matchRules = listOf()), + SupportedService(id = "bd82b421-51cf-436f-86e9-b9c98487f439", name = "Filen", issuers = listOf("Filen"), tags = listOf(), iconCollection = IconCollection(id = "5c7adbb7-3438-424b-a7d9-f82b7360516c", name = "Filen", icons = listOf(IconCollection.Icon(id = "8f60f1d9-cd4b-4213-90fe-3d8d32541075", type = Light),IconCollection.Icon(id = "dbccab97-41e7-4c6e-86e8-1b24c213b22f", type = Dark),)), matchRules = listOf()), SupportedService(id = "be114956-58bb-4909-8668-44e728554556", name = "NextDNS", issuers = listOf("NextDNS"), tags = listOf(), iconCollection = IconCollection(id = "88e25804-b257-416a-8cdc-68f71cae5f32", name = "NextDNS", icons = listOf(IconCollection.Icon(id = "c8256b5f-bd3f-415b-8213-1c5401cb5f29", type = Light),)), matchRules = listOf()), SupportedService(id = "be87d55c-5786-41a2-8851-84ba49c7d4d0", name = "DB", issuers = listOf("Deutsche Bahn"), tags = listOf("Deutsche","bahn"), iconCollection = IconCollection(id = "2da66dfc-d49d-443c-9322-57ae6c623007", name = "DB", icons = listOf(IconCollection.Icon(id = "a6971039-20f4-4234-a902-b80e9c580f50", type = Light),)), matchRules = listOf()), SupportedService(id = "be900c77-fe67-4f9b-805b-10c899125fa5", name = "Microsoft", issuers = listOf("Microsoft"), tags = listOf(), iconCollection = IconCollection(id = "5336cd6b-2971-4a3f-bdd9-7d32ea2abe27", name = "Microsoft", icons = listOf(IconCollection.Icon(id = "6f13e903-ea3f-4f08-bce7-b1d142d69149", type = Light),)), matchRules = listOf()), @@ -264,7 +273,9 @@ object SupportedServices { SupportedService(id = "bf211001-f2a2-4385-b857-9740b1edc85a", name = "WitherHosting", issuers = listOf("WitherHosting"), tags = listOf(), iconCollection = IconCollection(id = "2d0e42e8-e91d-4983-8364-d005429d57ad", name = "WitherHosting", icons = listOf(IconCollection.Icon(id = "0dc68b55-50ce-49c5-bb76-1e2a857854c8", type = Light),IconCollection.Icon(id = "78552165-4cf8-42bd-be9c-8c7a4b83ba62", type = Dark),)), matchRules = listOf()), SupportedService(id = "c103519f-e4fe-4c5a-9c75-e55b42d94a17", name = "AnonAddy", issuers = listOf("AnonAddy"), tags = listOf(), iconCollection = IconCollection(id = "928647e4-14de-434a-8210-817202d36d73", name = "AnonAddy", icons = listOf(IconCollection.Icon(id = "691fc930-60f7-43f3-8314-39a223a54799", type = Dark),IconCollection.Icon(id = "f2bca57c-c9da-4740-9f3c-09a8d63223af", type = Light),)), matchRules = listOf()), SupportedService(id = "c1ca5186-2e6d-4d70-b8c9-a5410b791664", name = "Stake", issuers = listOf(), tags = listOf(), iconCollection = IconCollection(id = "5430258c-8064-46bb-9adf-9a36e276407b", name = "Stake", icons = listOf(IconCollection.Icon(id = "7c665366-cfc1-4554-a50c-dcdf72743a1e", type = Light),IconCollection.Icon(id = "fc17da47-5439-4452-8df2-875ff991778d", type = Dark),)), matchRules = listOf(MatchRule(text = "Stake.com", field = Label, matcher = Contains, ignoreCase = true),)), + SupportedService(id = "c27a237e-d224-402e-b40c-fc307942eaa6", name = "Huawei", issuers = listOf("See description"), tags = listOf(), iconCollection = IconCollection(id = "", name = "", icons = listOf()), matchRules = listOf(MatchRule(text = "huawei", field = Label, matcher = StartsWith, ignoreCase = true),)), SupportedService(id = "c2a740ba-8823-4add-9f60-3f87797251f0", name = "Wealthsimple", issuers = listOf("Wealthsimple"), tags = listOf(), iconCollection = IconCollection(id = "699d4dd1-5144-49e6-9c77-bf065e7bcd14", name = "Wealthsimple", icons = listOf(IconCollection.Icon(id = "10909efb-986e-4c81-b64e-b7c242ecd3a7", type = Light),IconCollection.Icon(id = "78a660a2-d2d1-42db-8cec-1d0288621bd0", type = Dark),)), matchRules = listOf()), + SupportedService(id = "c3cf42df-5f28-4812-a954-7364473d5723", name = "VMware", issuers = listOf("VMware+Cloud+Services","VMware Cloud Services"), tags = listOf(), iconCollection = IconCollection(id = "91779097-9ee2-4e9d-a208-20d3d01d1643", name = "VMware", icons = listOf(IconCollection.Icon(id = "522719dd-9fd6-4829-b5d0-828bee041d96", type = Light),)), matchRules = listOf()), SupportedService(id = "c4c182d1-88d7-4c0a-bc67-1aeb28fa21db", name = "coindeal.io", issuers = listOf("coindeal.io"), tags = listOf(), iconCollection = IconCollection(id = "163316f8-fb4a-45c4-a349-1187e51bfe72", name = "coindeal.io", icons = listOf(IconCollection.Icon(id = "0afb5eb7-9f44-4a00-89e2-502e213f6606", type = Light),IconCollection.Icon(id = "70eeb019-0bda-4199-b51b-00aa82536780", type = Dark),)), matchRules = listOf()), SupportedService(id = "c679176d-d306-4a06-876a-3334b47d3975", name = "AnyDesk", issuers = listOf("anydesk.com"), tags = listOf(), iconCollection = IconCollection(id = "5fb9027d-e589-43ab-88a7-13f39799ef94", name = "AnyDesk", icons = listOf(IconCollection.Icon(id = "dcfefd8c-18e3-4eca-a8a3-c6415f734160", type = Light),)), matchRules = listOf()), SupportedService(id = "c6a0e139-d7b3-4351-8741-cfdd296b5802", name = "Bitcoin Meester", issuers = listOf("Bitcoinmeester"), tags = listOf(), iconCollection = IconCollection(id = "4e2c56b1-02ce-4756-8569-ef872d405874", name = "Bitcoin Meester", icons = listOf(IconCollection.Icon(id = "dd4e5b0f-d693-47ea-9f85-ea5b81ab33c9", type = Light),)), matchRules = listOf()), @@ -302,10 +313,12 @@ object SupportedServices { SupportedService(id = "dcbc5cc0-60d3-4235-9430-4a8c06286283", name = "Nextcloud", issuers = listOf("Nextcloud"), tags = listOf(), iconCollection = IconCollection(id = "caa08091-57d6-409d-a45e-f684cdbc79b0", name = "Nextcloud", icons = listOf(IconCollection.Icon(id = "1d3c6f8b-dd46-4529-812e-f2d3c4bf9567", type = Light),)), matchRules = listOf()), SupportedService(id = "dd1fc65b-34a9-4c97-b3a1-f7da1385ce61", name = "Minergate", issuers = listOf("minergate.com"), tags = listOf(), iconCollection = IconCollection(id = "1054c554-f8bc-46c5-9c79-f7a8b74dd5fe", name = "Minergate", icons = listOf(IconCollection.Icon(id = "6b9ce89a-9add-4b34-83c4-13c5cc1e8dba", type = Light),)), matchRules = listOf()), SupportedService(id = "dd201816-6a50-43ee-ac67-220f3d569bdb", name = "SPID", issuers = listOf("ARUBA"), tags = listOf(), iconCollection = IconCollection(id = "2a90f267-5e37-4003-a114-e05892e5f4df", name = "SPID", icons = listOf(IconCollection.Icon(id = "6446f8ea-5d6c-4f8d-b453-9058295c77e6", type = Light),IconCollection.Icon(id = "b179582b-fb0f-4bd6-938c-dac6d6beaae2", type = Dark),)), matchRules = listOf()), + SupportedService(id = "dd6a9a01-52d7-4b5e-9f74-0ca68538a070", name = "Crowdin", issuers = listOf("crowdin.com"), tags = listOf(), iconCollection = IconCollection(id = "6059f9e8-d90b-4cca-acea-ae8797837adb", name = "Crowdin", icons = listOf(IconCollection.Icon(id = "3625c1e6-c020-49c8-912e-ffd5f19f6f1f", type = Light),IconCollection.Icon(id = "651adfb1-9ed0-4a58-bcab-7d1a24f6f19a", type = Dark),)), matchRules = listOf()), SupportedService(id = "deead8dd-c9e3-463a-8c73-1e75c5ec13cf", name = "Rockstar Games", issuers = listOf("Rockstar+Games","Rockstar Games"), tags = listOf(), iconCollection = IconCollection(id = "fcb5345a-dacd-4898-884d-162c8263fd62", name = "Rockstar Games", icons = listOf(IconCollection.Icon(id = "8831a88a-d05d-4ae0-95fe-00d5684c4656", type = Light),)), matchRules = listOf()), SupportedService(id = "df8f7dea-9b3d-4058-bd1e-4a2e8d93f45e", name = "NetSuite", issuers = listOf("production.netsuite.com"), tags = listOf(), iconCollection = IconCollection(id = "cb4c0bb5-5c0c-43de-aa26-6ada823f0466", name = "NetSuite", icons = listOf(IconCollection.Icon(id = "797abb98-44a6-4422-952f-e19826fcdd00", type = Light),)), matchRules = listOf()), SupportedService(id = "dfc48abc-3fd9-4456-833f-fcaa52691ccc", name = "Stripe", issuers = listOf("Stripe"), tags = listOf(), iconCollection = IconCollection(id = "755cdcde-a73e-49a1-adf4-a6cc2b85174c", name = "Stripe", icons = listOf(IconCollection.Icon(id = "b4bcbfdb-661a-4e9f-805e-857e91854bde", type = Light),)), matchRules = listOf()), SupportedService(id = "e085ea95-678d-4b5d-97b4-2b7107567069", name = "Robinhood", issuers = listOf("Robinhood"), tags = listOf(), iconCollection = IconCollection(id = "6582193f-c4bb-4aa2-b7fe-6efa02bd6995", name = "Robinhood", icons = listOf(IconCollection.Icon(id = "47ac04e8-1771-49da-9c8f-b7b60a7c8980", type = Light),)), matchRules = listOf()), + SupportedService(id = "e0a0a866-8269-4b7e-b659-3758ecd06100", name = "Apple", issuers = listOf(), tags = listOf(), iconCollection = IconCollection(id = "90caf674-4269-4193-9749-4849f97cfb53", name = "Apple", icons = listOf(IconCollection.Icon(id = "4bb70c6d-ce78-4580-9aaa-e84b6355fc47", type = Light),IconCollection.Icon(id = "56919108-2ea3-4c16-9ccb-3b196c4d7347", type = Dark),)), matchRules = listOf(MatchRule(text = "apple", field = Label, matcher = Contains, ignoreCase = true),)), SupportedService(id = "e0d3d638-1fa2-4aa4-8242-4920bd151226", name = "Blockchain.com", issuers = listOf("blockchain.info"), tags = listOf(), iconCollection = IconCollection(id = "01f35a89-4444-4208-a405-c914340df362", name = "Blockchain", icons = listOf(IconCollection.Icon(id = "f67a5aed-47dc-4487-ab7f-bdc1ffa93ec8", type = Light),)), matchRules = listOf()), SupportedService(id = "e325587d-695f-49b2-82a3-130e10640db1", name = "Tumblr", issuers = listOf("Tumblr"), tags = listOf(), iconCollection = IconCollection(id = "7e039b98-b8b9-4a7c-a3f9-2059ab85a9ea", name = "Tumblr", icons = listOf(IconCollection.Icon(id = "d6701bed-a9c5-48eb-acd8-303059858dee", type = Light),)), matchRules = listOf()), SupportedService(id = "e32cb9ed-f0a0-46e5-8011-0c8d33617adf", name = "Tebex.io", issuers = listOf("Tebex.io"), tags = listOf(), iconCollection = IconCollection(id = "29b478a1-d863-42de-ac32-095af746914c", name = "Tebex.io", icons = listOf(IconCollection.Icon(id = "9e6d1f75-c4fc-4f52-bb07-d15bcf319958", type = Light),)), matchRules = listOf()), @@ -339,6 +352,7 @@ object SupportedServices { SupportedService(id = "f506d1b4-099d-495e-a1a4-c7ecec4d007d", name = "HurricaneElectric", issuers = listOf("ipv6.he.net"), tags = listOf(), iconCollection = IconCollection(id = "1d9af0ec-056c-4d54-9f99-74011dd76dc5", name = "HurricaneElectric", icons = listOf(IconCollection.Icon(id = "a0288553-c0ff-4baf-93b1-97b871c4163b", type = Light),)), matchRules = listOf()), SupportedService(id = "f5a9a8e5-3167-4b11-a680-03d8aad50784", name = "Joomla", issuers = listOf("Joomla"), tags = listOf(), iconCollection = IconCollection(id = "fb3f31b8-6ea6-44f9-9129-9094f54ff8f5", name = "Joomla", icons = listOf(IconCollection.Icon(id = "e4660cc9-7c81-4ac0-9c5c-f020f18a8ebc", type = Light),)), matchRules = listOf()), SupportedService(id = "f6de2caf-aa67-4e98-a6aa-3682b826a21c", name = "BTCMarkets", issuers = listOf("BtcMarkets"), tags = listOf(), iconCollection = IconCollection(id = "2f4917ca-8e34-4271-9e6c-5d234a181a94", name = "BTCMarkets", icons = listOf(IconCollection.Icon(id = "63725a39-7e60-4f11-9c2a-640a270ef96c", type = Light),)), matchRules = listOf()), + SupportedService(id = "f73f0f10-fa7f-471d-980c-7f97a1546688", name = "DEGIRO", issuers = listOf("DEGIRO"), tags = listOf(), iconCollection = IconCollection(id = "38d29122-8fa4-484d-94ee-d10f1a5efbc3", name = "DEGIRO", icons = listOf(IconCollection.Icon(id = "f9a680a5-7d15-4e84-9478-c8049bc862f9", type = Light),)), matchRules = listOf()), SupportedService(id = "f762bea4-d385-4a35-be4a-ffcda80931e9", name = "Hetzner", issuers = listOf("Hetzner"), tags = listOf(), iconCollection = IconCollection(id = "86ee7a24-b59a-4f75-b2aa-18bb718b903a", name = "Hetzner", icons = listOf(IconCollection.Icon(id = "221c3b16-aac7-4240-acf9-e9eb3c921945", type = Light),IconCollection.Icon(id = "b2ba9cc5-047b-4bbe-98d1-2e526ba7fac4", type = Dark),)), matchRules = listOf()), SupportedService(id = "f76dc205-7c4a-4413-b80b-75bf8898502e", name = "Questrade", issuers = listOf("Questrade"), tags = listOf(), iconCollection = IconCollection(id = "46a1e2f1-6949-46f8-8929-92059652e041", name = "Questrade", icons = listOf(IconCollection.Icon(id = "c072cac6-531b-4ca1-ae13-d384f675fe69", type = Light),)), matchRules = listOf()), SupportedService(id = "fa0801c4-e26b-47b2-85b3-8e1f3dcd21c5", name = "Crypto.com", issuers = listOf("crypto.com"), tags = listOf(), iconCollection = IconCollection(id = "93d4f71f-05e8-4442-885b-24b742be8459", name = "Crypto.com", icons = listOf(IconCollection.Icon(id = "45965f47-72c5-4837-be53-824941c6c36c", type = Light),IconCollection.Icon(id = "9b5ba37c-271b-4022-bc99-567ed8f8e71a", type = Dark),)), matchRules = listOf()), From 413a7c0881bc410b1ed7f16f394ba0b5ae030896 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Koby=C5=82ko?= Date: Tue, 7 Mar 2023 23:24:35 +0100 Subject: [PATCH 4/7] Fix missing keys --- .../main/res/layout/activity_widget_settings.xml | 2 +- .../java/com/twofasapp/design/compose/InputEntry.kt | 12 +++++++----- .../twofasapp/design/compose/dialogs/InputDialog.kt | 13 ++++++++----- resources/src/main/res/values/strings.xml | 10 ++++++++-- .../main/res/layout/layout_widget_service_item.xml | 2 +- 5 files changed, 25 insertions(+), 14 deletions(-) diff --git a/app/src/main/res/layout/activity_widget_settings.xml b/app/src/main/res/layout/activity_widget_settings.xml index 61608b8d..15426682 100644 --- a/app/src/main/res/layout/activity_widget_settings.xml +++ b/app/src/main/res/layout/activity_widget_settings.xml @@ -21,7 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:menu="@menu/menu_widget_settings" - app:title="Widget settings" /> + app:title="@string/widgets__settings" /> diff --git a/design/src/main/java/com/twofasapp/design/compose/InputEntry.kt b/design/src/main/java/com/twofasapp/design/compose/InputEntry.kt index b35d0219..30c352e9 100644 --- a/design/src/main/java/com/twofasapp/design/compose/InputEntry.kt +++ b/design/src/main/java/com/twofasapp/design/compose/InputEntry.kt @@ -105,10 +105,10 @@ fun InputEntry( if (num >= 0) { null } else { - "Input must be integer number" + context.getString(com.twofasapp.resources.R.string.errors__input_integer_number) } } catch (e: Exception) { - "Input must be integer number" + context.getString(com.twofasapp.resources.R.string.errors__input_integer_number) } } InputType.NumberDecimal -> { @@ -116,7 +116,7 @@ fun InputEntry( inputText.toFloat() null } catch (e: Exception) { - "Input must be a number" + context.getString(com.twofasapp.resources.R.string.errors__input_number) } } } @@ -125,8 +125,10 @@ fun InputEntry( isValid = isInCharactersLimit && validationResult == Validation.Ok && invalidInputTypeError == null validationErrorText = when { - isInCharactersLimit.not() && inputText.length > maxChars -> "Input is too long. Limit: $maxChars" - isInCharactersLimit.not() && inputText.isEmpty() -> "Input can not be empty" + isInCharactersLimit.not() && inputText.length > maxChars -> context.getString(com.twofasapp.resources.R.string.errors__input_integer_number) + .format(maxChars) + + isInCharactersLimit.not() && inputText.isEmpty() -> context.getString(com.twofasapp.resources.R.string.errors__input_empty) invalidInputTypeError != null -> invalidInputTypeError validationResult is Validation.Error -> validationResult.msg ?: validationResult.msgRes?.let { context.getString(it) } diff --git a/design/src/main/java/com/twofasapp/design/compose/dialogs/InputDialog.kt b/design/src/main/java/com/twofasapp/design/compose/dialogs/InputDialog.kt index cc7443b9..13d34ff5 100644 --- a/design/src/main/java/com/twofasapp/design/compose/dialogs/InputDialog.kt +++ b/design/src/main/java/com/twofasapp/design/compose/dialogs/InputDialog.kt @@ -76,10 +76,10 @@ fun InputDialog( if (num >= 0) { null } else { - "Input must be integer number" + context.getString(com.twofasapp.resources.R.string.errors__input_integer_number) } } catch (e: Exception) { - "Input must be integer number" + context.getString(com.twofasapp.resources.R.string.errors__input_integer_number) } } InputType.NumberDecimal -> { @@ -87,7 +87,7 @@ fun InputDialog( inputText.toFloat() null } catch (e: Exception) { - "Input must be a number" + context.getString(com.twofasapp.resources.R.string.errors__input_number) } } InputType.Password -> null @@ -97,8 +97,11 @@ fun InputDialog( isPositiveEnabled = isInCharactersLimit && validationResult == Validation.Ok && invalidInputTypeError == null validationErrorText = when { - isInCharactersLimit.not() && inputText.length > (maxLength ?: 999999) -> "Input is too long. Limit: $maxLength" - isInCharactersLimit.not() && inputText.isEmpty() -> "Input can not be empty" + isInCharactersLimit.not() && inputText.length > (maxLength + ?: 999999) -> context.getString(com.twofasapp.resources.R.string.errors__input_integer_number) + .format(maxLength) + + isInCharactersLimit.not() && inputText.isEmpty() -> context.getString(com.twofasapp.resources.R.string.errors__input_empty) invalidInputTypeError != null -> invalidInputTypeError validationResult is Validation.Error -> validationResult.msg ?: validationResult.msgRes?.let { context.getString(it) } diff --git a/resources/src/main/res/values/strings.xml b/resources/src/main/res/values/strings.xml index f542b69c..4e6768f5 100644 --- a/resources/src/main/res/values/strings.xml +++ b/resources/src/main/res/values/strings.xml @@ -1,5 +1,4 @@ - - - %s novo(s) serviço(s) + %d novo(s) serviço(s) - %s serviço(s) importado(s) de ficheiro + %d serviço(s) importado(s) de ficheiro Existe um problema com o iCloud. Verifica as definições do sistema @@ -528,7 +528,7 @@ Google Authenticator Aegis Raivo OTP - Autenticação 2FAS + 2FAS Auth Sim Não Procurar @@ -712,4 +712,10 @@ O ficheiro que estás a tentar importar é inválido ou está danificado. Por favor, escolhe outro ficheiro. Pesquisa ativa Pesquisa ativa ao iniciar + Expira em: + Definições do Widget + O valor tem de ser um número inteiro + O valor tem de ser um número + O valor não pode estar vazio + O valor é muito longo. Limite: %d diff --git a/core/locale/src/main/res/values/strings.xml b/core/locale/src/main/res/values/strings.xml index f542b69c..41226fb8 100644 --- a/core/locale/src/main/res/values/strings.xml +++ b/core/locale/src/main/res/values/strings.xml @@ -5,7 +5,7 @@ Release: Working copy Locale: en, English Exported by: rafakob - Exported at: Sun, 05 Mar 2023 11:46:31 -0800 + Exported at: Thu, 09 Mar 2023 00:56:28 -0800 --> - %s novo(s) serviço(s) + %d novo(s) serviço(s) - %s serviço(s) importado(s) de ficheiro + %d serviço(s) importado(s) de ficheiro Existe um problema com o iCloud. Verifica as definições do sistema @@ -528,7 +528,7 @@ Google Authenticator Aegis Raivo OTP - Autenticação 2FAS + 2FAS Auth Sim Não Procurar @@ -712,4 +712,10 @@ O ficheiro que estás a tentar importar é inválido ou está danificado. Por favor, escolhe outro ficheiro. Pesquisa ativa Pesquisa ativa ao iniciar + Expira em: + Definições do Widget + O valor tem de ser um número inteiro + O valor tem de ser um número + O valor não pode estar vazio + O valor é muito longo. Limite: %d From a2d517d95ef1644d7801303700a27aa4d69a488e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Koby=C5=82ko?= Date: Thu, 9 Mar 2023 20:45:17 +0100 Subject: [PATCH 6/7] Downgrade AGP --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f24ab043..39e8ad52 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,6 @@ [versions] accompanist = "0.27.0" -agp = "8.1.0-alpha07" +agp = "7.4.1" coil = "2.2.2" compose = "1.3.0" composeActivity = "1.6.1" From 1c4cdb67b3120d1ceda07312b3447f33182fb2bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Koby=C5=82ko?= Date: Thu, 9 Mar 2023 20:45:47 +0100 Subject: [PATCH 7/7] Bump version --- .../src/main/java/com/twofasapp/buildlogic/version/AppConfig.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildlogic/src/main/java/com/twofasapp/buildlogic/version/AppConfig.kt b/buildlogic/src/main/java/com/twofasapp/buildlogic/version/AppConfig.kt index 0232e369..e9c2fccd 100644 --- a/buildlogic/src/main/java/com/twofasapp/buildlogic/version/AppConfig.kt +++ b/buildlogic/src/main/java/com/twofasapp/buildlogic/version/AppConfig.kt @@ -7,7 +7,7 @@ object AppConfig { private const val verMajor = 4 private const val verMinor = 2 - private const val verPatch = 5 + private const val verPatch = 6 private const val verInternal = 0 const val versionCode = verMajor * 1000000 + verMinor * 10000 + verPatch * 100 + verInternal