From b6f4276c6cc2e5a53f0a4afb1536960427fa995e Mon Sep 17 00:00:00 2001 From: Alexis Degrugillier Date: Mon, 6 Oct 2025 15:09:01 -0400 Subject: Change regional language codes (#8065) * Change regional language codes According to `ISO-639-1` and `ISO-3166-1 alpha-2` recommendations, regional languages must be written with the language code in lowercase and the region in uppercase. For instance, we should have `en-US` instead of `en-us`. Folders have been updated to reflect those recommendations and regional language codes have been updated in the translation files. * Update README files * Fix configuration for typos * Revert language order in documentation * Remove unnecessary code * Change language configuration getter * Fix phpstan error * Fix typo * Add types * escape regex * Move language logic to avoid magic or deprecated methods * Minor fix on regex --- app/i18n/pt-br/admin.php | 240 ---------------------------- app/i18n/pt-br/api.php | 33 ---- app/i18n/pt-br/conf.php | 372 -------------------------------------------- app/i18n/pt-br/feedback.php | 152 ------------------ app/i18n/pt-br/gen.php | 277 --------------------------------- app/i18n/pt-br/index.php | 110 ------------- app/i18n/pt-br/install.php | 128 --------------- app/i18n/pt-br/sub.php | 307 ------------------------------------ app/i18n/pt-br/user.php | 54 ------- 9 files changed, 1673 deletions(-) delete mode 100644 app/i18n/pt-br/admin.php delete mode 100644 app/i18n/pt-br/api.php delete mode 100644 app/i18n/pt-br/conf.php delete mode 100644 app/i18n/pt-br/feedback.php delete mode 100644 app/i18n/pt-br/gen.php delete mode 100644 app/i18n/pt-br/index.php delete mode 100644 app/i18n/pt-br/install.php delete mode 100644 app/i18n/pt-br/sub.php delete mode 100644 app/i18n/pt-br/user.php (limited to 'app/i18n/pt-br') diff --git a/app/i18n/pt-br/admin.php b/app/i18n/pt-br/admin.php deleted file mode 100644 index 6e2a53ae8..000000000 --- a/app/i18n/pt-br/admin.php +++ /dev/null @@ -1,240 +0,0 @@ - array( - 'allow_anonymous' => 'Permitir a leitura anônima dos artigos pelo usuário padrão (%s)', - 'allow_anonymous_refresh' => 'Permitir atualização anônima dos artigos', - 'api_enabled' => 'Permitir acesso à API (Necessáiro para aplicativos móveis and sharing user queries)', // DIRTY - 'form' => 'Formulário Web(tradicional, Necessita de JavaScript)', - 'http' => 'HTTP (advanced: managed by Web server, OIDC, SSO…)', // TODO - 'none' => 'Nenhum (Perigoso)', - 'title' => 'Autenticação', - 'token' => 'Token de autenticação principal', - 'token_help' => 'Permite acesso a todos as saídas RSS do usuário bem como atualização dos feeds sem autenticação:', - 'type' => 'Método de autenticação', - 'unsafe_autologin' => 'Permitir login automático inseguro usando o seguinte formato: ', - ), - 'check_install' => array( - 'cache' => array( - 'nok' => 'Verifique as permissões no diretório ./data/cache. O servidor HTTP deve ter direitos para escrever dentro desta pasta.', - 'ok' => 'Permissões no diretório cache estão corretos.', - ), - 'categories' => array( - 'nok' => 'Tabela Category está configurada incorretamente.', - 'ok' => 'Tabela Category está ok.', - ), - 'connection' => array( - 'nok' => 'Conexão ao banco de dados não pode ser estabelecida.', - 'ok' => 'Conexão ao banco de dados está ok.', - ), - 'ctype' => array( - 'nok' => 'Não foi possível encontrar uma biblioteca necessária para verificação do tipo de caractere (php-ctype).', - 'ok' => 'Você tem a biblioteca necessária para verificação do tipo de caractere (ctype).', - ), - 'curl' => array( - 'nok' => 'Não foi possível encontrar a biblioteca cURL (php-curl).', - 'ok' => 'Você tem a biblioteca cURL.', - ), - 'data' => array( - 'nok' => 'Verifique as permissões no diretório ./data. O servidor HTTP deve ter direitos para escrever dentro desta pasta.', - 'ok' => 'Permissões no diretório data estão corretos.', - ), - 'database' => 'Instalação do banco de dados', - 'dom' => array( - 'nok' => 'Não foi possível encontrar uma biblioteca necessária para navegar pelo DOM (php-xml).', - 'ok' => 'Você tem a biblioteca necessária para navegar pelo DOM.', - ), - 'entries' => array( - 'nok' => 'Tabela Entry está configurada incorretamente.', - 'ok' => 'Tabela Entry está ok.', - ), - 'favicons' => array( - 'nok' => 'Verifique as permissões no diretório ./data/favicons. O servidor HTTP deve ter direitos para escrever dentro desta pasta.', - 'ok' => 'Permissões no diretório favicons estão corretos.', - ), - 'feeds' => array( - 'nok' => 'Tabela Feed está configurada incorretamente.', - 'ok' => 'Tabela Feed está ok.', - ), - 'fileinfo' => array( - 'nok' => 'Não foi possível encontrar a biblioteca fileinfo do PHP (fileinfo).', - 'ok' => 'Você tem a biblioteca fileinfo.', - ), - 'files' => 'Instalação de arquivos', - 'json' => array( - 'nok' => 'Não foi possível encontrar JSON (php-json).', - 'ok' => 'Você tem a extensão JSON.', - ), - 'mbstring' => array( - 'nok' => 'Não foi possível encontrar a biblioteca recomendada para Unicode (mbstring).', - 'ok' => 'Você tem a biblioteca recomendada para Unicode (mbstring).', - ), - 'pcre' => array( - 'nok' => 'Não foi possível encontrar uma biblioteca necessário para expressões regulares (php-pcre).', - 'ok' => 'Você tem a biblioteca necessária para expressões regulares (php-pcre).', - ), - 'pdo' => array( - 'nok' => 'Não foi encontrado o PDO ou um dos drivers suportados (pdo_mysql, pdo_sqlite, pdo_pgsql).', - 'ok' => 'Você tem o PDO e ao menos um dos drivers suportados (pdo_mysql, pdo_sqlite, pdo_pgsql).', - ), - 'php' => array( - '_' => 'Instação do PHP', - 'nok' => 'Sua versão do PHP é %s mas FreshRSS requer ao menos a versão %s.', - 'ok' => 'Sua versão do PHP é %s, que é compatível com o FreshRSS.', - ), - 'tables' => array( - 'nok' => 'Há uma ou mais tabelas inexistentes no banco de dados.', - 'ok' => 'As tabelas apropriadas existem no banco de dados.', - ), - 'title' => 'Verificação de instalação', - 'tokens' => array( - 'nok' => 'Verifique as permissões no diretório ./data/tokens. O servidor HTTP deve ter direitos para escrever dentro desta pasta.', - 'ok' => 'Permissões no diretório tokens estão corretos.', - ), - 'users' => array( - 'nok' => 'Verifiquei as permissões no diretório ./data/users. O servidor HTTP deve ter direitos para escrever dentro desta pasta.', - 'ok' => 'Permissões no diretório users estão corretos.', - ), - 'zip' => array( - 'nok' => 'Não foi possível localizar a extensão ZIP (php-zip).', - 'ok' => 'Você tem a extensão ZIP.', - ), - ), - 'extensions' => array( - 'author' => 'Autor', - 'community' => 'Extensões da comunidade disponíveis', - 'description' => 'Descrição', - 'disabled' => 'Desabilitado', - 'empty_list' => 'Não há extensões instaladas', - 'empty_list_help' => 'Check the logs to determine the reason behind the empty extension list.', // TODO - 'enabled' => 'Habilitada', - 'latest' => 'Instalado', - 'name' => 'Nome', - 'no_configure_view' => 'Esta extensão não pode ser configurada.', - 'system' => array( - '_' => 'Extensões do sistema', - 'no_rights' => 'Extensões do sistema (Você não tem direitos para isto)', - ), - 'title' => 'Extensões', - 'update' => 'Atualização disponível', - 'user' => 'Extensões do usuário', - 'version' => 'Versão', - ), - 'stats' => array( - '_' => 'Estatísticas', - 'all_feeds' => 'Todos os feeds', - 'category' => 'Categoria', - 'entry_count' => 'Contagem de entrada', - 'entry_per_category' => 'Entradas por categoria', - 'entry_per_day' => 'Entradas por dia (últimos 30 dias)', - 'entry_per_day_of_week' => 'Por dia da semana(média: %.2f mensagens)', - 'entry_per_hour' => 'Por hora (média: %.2f mensagens)', - 'entry_per_month' => 'Por mês(média: %.2f mensagens)', - 'entry_repartition' => 'Repartição de entradas', - 'feed' => 'Feed', // IGNORE - 'feed_per_category' => 'Feeds por categoria', - 'idle' => 'Feeds inativos', - 'main' => 'Estatísticas principais', - 'main_stream' => 'Stream principal', - 'no_idle' => 'Não há nenhum feed inativo!', - 'number_entries' => '%d artigos', - 'overview' => 'Overview', // TODO - 'percent_of_total' => '% do total', - 'repartition' => 'Repartição de artigos: %s', - 'status_favorites' => 'Favoritos', - 'status_read' => 'Lido', - 'status_total' => 'Total', // IGNORE - 'status_unread' => 'Não lidos', - 'title' => 'Estatísticas', - 'top_feed' => 'Top10 Feeds', - ), - 'system' => array( - '_' => 'Configuração do sistema', - 'auto-update-url' => 'URL do servidor para atualização automática', - 'base-url' => array( - '_' => 'URL Base', - 'recommendation' => 'Recomendação automática: %s', - ), - 'cookie-duration' => array( - 'help' => 'em segundos', - 'number' => 'Manter seção ativa durante', - ), - 'force_email_validation' => 'Força verificação do endereço de email', - 'instance-name' => 'Nome da instância', - 'max-categories' => 'Limite de categorias por usuário', - 'max-feeds' => 'Limite de Feeds por usuário', - 'registration' => array( - 'number' => 'Máximo número de contas', - 'select' => array( - 'label' => 'Formulário de Registro', - 'option' => array( - 'noform' => 'Desativado: Sem formulário de registro', - 'nolimit' => 'Ativado: Sem limites de contas', - 'setaccountsnumber' => 'Definir o máximo número de contas', - ), - ), - 'status' => array( - 'disabled' => 'Formulário desabilitado', - 'enabled' => 'Formulário habilitado', - ), - 'title' => 'Formulário de Cadastro de Usuário', - ), - 'sensitive-parameter' => 'Parâmetro sensível. Edite manualmente em ./data/config.php', - 'tos' => array( - 'disabled' => 'não fornecido', - 'enabled' => 'está ativado', - 'help' => 'Como habilitar os Termos de Serviço', - ), - 'websub' => array( - 'help' => 'Sobre WebSub', - ), - ), - 'update' => array( - '_' => 'Atualização do sistema', - 'apply' => 'Aplicar', - 'changelog' => 'Registro de alterações', - 'check' => 'Buscar por novas atualizações', - 'copiedFromURL' => 'update.php copiado de %s para ./data', - 'current_version' => 'Sua versão', - 'last' => 'Última verificação', - 'loading' => 'Atualizando…', - 'none' => 'Nenhuma atualização para se aplicar', - 'releaseChannel' => array( - '_' => 'Canal de Release', - 'edge' => 'Release contínua (“edge”)', - 'latest' => 'Release estável (“latest”)', - ), - 'title' => 'Sistema de atualização', - 'viaGit' => 'Atualização via git e GitHub.com iniciada', - ), - 'user' => array( - 'admin' => 'Administrador', - 'article_count' => 'Artigos', - 'back_to_manage' => '← Voltar para à lista de usuários', - 'create' => 'Criar novo usuário', - 'database_size' => 'Tamanho do banco de dados', - 'email' => 'Endereço de email', - 'enabled' => 'Habilitado', - 'feed_count' => 'Feeds', // IGNORE - 'is_admin' => 'É administrador', - 'language' => 'Idioma', - 'last_user_activity' => 'Última Atividade do Usuário', - 'list' => 'Lista de usuários', - 'number' => 'Há %d conta criada', - 'numbers' => 'Há %d contas criadas', - 'password_form' => 'Senha
(para o login pelo método do formulário)', - 'password_format' => 'Ao menos 7 caracteres', - 'title' => 'Gerenciar usuários', - 'username' => 'Usuário', - ), -); diff --git a/app/i18n/pt-br/api.php b/app/i18n/pt-br/api.php deleted file mode 100644 index 0021dfa98..000000000 --- a/app/i18n/pt-br/api.php +++ /dev/null @@ -1,33 +0,0 @@ - array( - 'address' => 'Your API address:', // TODO - 'output' => array( - 'encoding-support' => '⚠️ WARN: no %2F support, some clients might not work!', // TODO - 'invalid-configuration' => '⚠️ WARN: Probable invalid base URL in ./data/config.php', // TODO - 'pass' => '✔️ PASS', // TODO - 'unknown-error' => '❌ ', // TODO - ), - 'test' => array( - 'fever' => 'Fever API configuration test:', // TODO - 'greader' => 'Google Reader API configuration test:', // TODO - ), - 'title' => array( - '_' => 'FreshRSS API endpoints', // TODO - 'extension' => 'API for extensions', // TODO - 'fever' => 'Fever compatible API', // TODO - 'greader' => 'Google Reader compatible API', // TODO - ), - ), -); diff --git a/app/i18n/pt-br/conf.php b/app/i18n/pt-br/conf.php deleted file mode 100644 index 9f2daba08..000000000 --- a/app/i18n/pt-br/conf.php +++ /dev/null @@ -1,372 +0,0 @@ - array( - '_' => 'Arquivar', - 'exception' => 'Regras de exceção da limpeza', - 'help' => 'Mais opções estão disponíveis nas configurações individuais do Feed', - 'keep_favourites' => 'Nunca deletar os favoritos', - 'keep_labels' => 'Nunca deletar tags', - 'keep_max' => 'Número máximo de artigos para manter no feed', - 'keep_min_by_feed' => 'Número mínimo de artigos para manter no feed', - 'keep_period' => 'Idade máxima dos artigos a serem mantidos', - 'keep_unreads' => 'Nunca apagar os não lidos', - 'maintenance' => 'Manutenção', - 'optimize' => 'Otimizar banco de dados', - 'optimize_help' => 'Faça ocasionalmente para reduzir o tamanho do banco de dados', - 'policy' => 'Política de limpeza', - 'policy_warning' => 'Se nenhuma política de limpeza for selecionada, todos os artigos serão mantidos.', - 'purge_now' => 'Limpar agora', - 'title' => 'Arquivar', - 'ttl' => 'Não atualize automaticamente mais frequente que', - ), - 'display' => array( - '_' => 'Exibição', - 'darkMode' => array( - '_' => 'Modo noturno automático', - 'auto' => 'Automático', - 'help' => 'For compatible themes only', // TODO - 'no' => 'Não', - ), - 'icon' => array( - 'bottom_line' => 'Linha inferior', - 'display_authors' => 'Autores', - 'entry' => 'Ícones de artigos', - 'publication_date' => 'Data da publicação', - 'related_tags' => 'Tags relacionadas', - 'sharing' => 'Compartilhar', - 'summary' => 'Sumário', - 'top_line' => 'Linha superior', - ), - 'language' => 'Idioma', - 'notif_html5' => array( - 'seconds' => 'segundos (0 significa sem timeout)', - 'timeout' => 'Notificação em HTML5 de timeout', - ), - 'show_nav_buttons' => 'Mostrar botões de navegação', - 'theme' => array( - '_' => 'Tema', - 'deprecated' => array( - '_' => 'Depreciado', - 'description' => 'Este tema não é mais suportado e não estará mais disponível em uma versão futura do FreshRSS', - ), - ), - 'theme_not_available' => 'O tema “%s” não está mais disponível. Por favor escolha outro tema.', - 'thumbnail' => array( - 'label' => 'Miniatura', - 'landscape' => 'Modo paisagem', - 'none' => 'Nenhum', - 'portrait' => 'Modo retrato', - 'square' => 'Modo quadrado', - ), - 'timezone' => 'Fuso horário', - 'title' => 'Exibição', - 'website' => array( - 'full' => 'Ícone e nome', - 'icon' => 'Apenas ícone', - 'label' => 'Site', - 'name' => 'Apenas nome', - 'none' => 'Nenhum', - ), - 'width' => array( - 'content' => 'Largura do conteúdo', - 'large' => 'Largo', - 'medium' => 'Médio', - 'no_limit' => 'Sem limite', - 'thin' => 'Fino', - ), - ), - 'logs' => array( - 'loglist' => array( - 'level' => 'Nivel de Registro', - 'message' => 'Mensagem de Registro', - 'timestamp' => 'Data e Hora', - ), - 'pagination' => array( - 'first' => 'Primeiro', - 'last' => 'Último', - 'next' => 'Próximo', - 'previous' => 'Anterior', - ), - ), - 'mark_read_button' => array( - '_' => '“marcar todos como lido” button', // DIRTY - 'big' => 'Big', // TODO - 'none' => 'None', // TODO - 'small' => 'Small', // TODO - ), - 'notification_timeout' => array( - 'bad' => array( - 'label' => 'Show warning banner', // TODO - 'seconds' => 'seconds (at least 1)', // TODO - ), - 'good' => array( - 'label' => 'Show acknowledgement banner', // TODO - 'seconds' => 'seconds (0 means not shown)', // TODO - ), - ), - 'privacy' => array( - '_' => 'Privacy', // TODO - 'retrieve_extension_list' => 'Retrieve extension list', // TODO - ), - 'profile' => array( - '_' => 'Gerenciamento de perfil', - 'api' => array( - '_' => 'Administração da API', - 'api_not_set' => 'API password not set', // TODO - 'api_set' => 'API password set', // TODO - 'check_link' => 'Check API status via: %s', // TODO - 'disabled' => 'The API access is disabled.', // TODO - 'documentation_link' => 'See the documentation and list of known apps', // TODO - 'help' => 'See documentation', // TODO - ), - 'change_password' => 'Change password', // TODO - 'confirm_new_password' => 'Confirm new password', // TODO - 'current_password' => 'Current password
(for the Web-form login method)', // TODO - 'delete' => array( - '_' => 'Remover conta', - 'warn' => 'Sua conta e todos os dados relacionados serão removidos.', - ), - 'email' => 'Endereço de e-mail', - 'new_password' => 'New password', // TODO - 'password_api' => 'Senha da API
(p.s., para aplicativos móveis)', - 'password_format' => 'Ao menos 7 caracteres', - 'title' => 'Perfil', - ), - 'query' => array( - '_' => 'Consultas do usuário', - 'deprecated' => 'Esta não é mais válida. A categoria ou feed relacionado foi deletado.', - 'description' => 'Description', // TODO - 'filter' => array( - '_' => 'Filtro aplicado:', - 'categories' => 'Exibir por categoria', - 'feeds' => 'Exibir por feed', - 'order' => 'Ordenar por data', - 'search' => 'Expressão', - 'shareOpml' => 'Habilita o compartilhamento por OPML de categorias e feeds correspondentes', - 'shareRss' => 'Habilita o compartilhamento por HTML & RSS', - 'state' => 'Estado', - 'tags' => 'Exibir por tag', - 'type' => 'Tipo', - ), - 'get_A' => 'Show all feeds, also those shown in their category', // TODO - 'get_Z' => 'Show all feeds, also archived ones', // TODO - 'get_all' => 'Mostrar todos os artigos', - 'get_all_labels' => 'Exibir artigos com qualquer rótulo', - 'get_category' => 'Visualizar “%s” categoria', - 'get_favorite' => 'Visualizar artigos favoritos', - 'get_feed' => 'Visualizar “%s” feed', - 'get_important' => 'Exibir artigos de feeds importantes', - 'get_label' => 'Exibir artigos com rótulo “%s”', - 'help' => 'Veja a documentação para consultas de usuários e recompartilhamentos por HTML / RSS / OPML.', - 'image_url' => 'Image URL', // TODO - 'name' => 'Nome', - 'no_filter' => 'Sem filtro', - 'no_queries' => array( - '_' => 'No user queries are saved yet.', // TODO - 'help' => 'See documentation', // TODO - ), - 'number' => 'Consulta n°%d', - 'order_asc' => 'Exibir artigos mais antigos primeiro', - 'order_desc' => 'Exibir artigos mais novos primeiro', - 'search' => 'Busca por “%s”', - 'share' => array( - '_' => 'Compartilhar esta consulta por link', - 'disabled' => array( - '_' => 'disabled', // TODO - 'title' => 'Sharing', // TODO - ), - 'greader' => 'Shareable link to the GReader JSON', // TODO - 'help' => 'Forneça este link se quiser compartilhar esta consulta com alguém', - 'html' => 'Link compartilhável para a página HTML', - 'opml' => 'Link compartilhável para a lista de feeds OPML', - 'rss' => 'Link compartilhável para o feed RSS', - ), - 'state_0' => 'Exibir todos os artigos', - 'state_1' => 'Exibir artigos lidos', - 'state_2' => 'Exibir artigos não lidos', - 'state_3' => 'Exibir todos os artigos', - 'state_4' => 'Exibir artigos favoritos', - 'state_5' => 'Exibir artigos favoritos lidos', - 'state_6' => 'Exibir artigos favoritos não lidos', - 'state_7' => 'Exibir artigos favoritos', - 'state_8' => 'Exibir artigos que não são favoritos', - 'state_9' => 'Exibir artigos que não são favoritos lidos', - 'state_10' => 'Exibir artigos que não são favoritos não lidos', - 'state_11' => 'Exibir artigos que não são favoritos', - 'state_12' => 'Exibir todos os artigos', - 'state_13' => 'Exibir artigos lidos', - 'state_14' => 'Exibir artigos não lidos', - 'state_15' => 'Exibir todos os artigos', - 'title' => 'Consultas de usuários', - ), - 'reading' => array( - '_' => 'Leitura', - 'after_onread' => 'Depois de “marcar todos como lido”,', - 'always_show_favorites' => 'Mostrar todos os artivos nos favoritos por padrão', - 'apply_to_individual_feed' => 'Applies to feeds individually', // TODO - 'article' => array( - 'authors_date' => array( - '_' => 'Autores e Data', - 'both' => 'No cabeçalho e rodapé', - 'footer' => 'No rodapé', - 'header' => 'No cabeçalho', - 'none' => 'Nenhum', - ), - 'feed_name' => array( - 'above_title' => 'Acima do título/etiqueta', - 'none' => 'Nenhum', - 'with_authors' => 'Com autores e data', - ), - 'feed_title' => 'Título do Feed', - 'icons' => array( - '_' => 'Article icons position
(Reading view only)', // TODO - 'above_title' => 'Above title', // TODO - 'with_authors' => 'In authors and date row', // TODO - ), - 'tags' => array( - '_' => 'Tag', - 'both' => 'No cabeçalho e rodapé', - 'footer' => 'No rodapé', - 'header' => 'No cabeçalho', - 'none' => 'Nenhum', - ), - 'tags_max' => array( - '_' => 'Número máximo de tags exibidas', - 'help' => '0 significa: mostrar todas as tags e não recolhê-las', - ), - ), - 'articles_per_page' => 'Número de artigos por página', - 'auto_load_more' => 'Carregar mais artigos no final da página', - 'auto_remove_article' => 'Esconder artigos depois de lidos', - 'confirm_enabled' => 'Exibir uma caixa de diálogo de confirmação quando acionar “marcar todos como lido”', - 'display_articles_unfolded' => 'Mostrar artigos abertos por padrão', - 'display_categories_unfolded' => 'Categorias abertas', - 'headline' => array( - 'articles' => 'Artigos: Abrir/Fechar', - 'articles_header_footer' => 'Artigos: cabeçalho/rodapé', - 'categories' => 'Navegação à esquerda: Categoria', - 'mark_as_read' => 'Marcar artigo como lido', - 'misc' => 'Diversos', - 'view' => 'Visualização', - ), - 'hide_read_feeds' => 'Esconder categorias e feeds com nenhum artigo não lido (não funciona com a configuração “Mostrar todos os artigos”)', - 'img_with_lazyload' => 'Utilizar o modo lazy load para carregar as imagens', - 'jump_next' => 'Vá para o próximo irmão não lido', - 'mark_updated_article_unread' => 'Marcar artigos atualizados como não lidos', - 'number_divided_when_reader' => 'Dividido por 2 no modo de leitura .', - 'read' => array( - 'article_open_on_website' => 'quando o artigo é aberto no site original', - 'article_viewed' => 'Quando o artigo é visualizado', - 'focus' => 'quando focado (exceto por feeds importantes)', - 'keep_max_n_unread' => 'Número máximo de artigos para manter como não lido', - 'scroll' => 'enquanto faz a rolagem (exceto por feeds importantes)', - 'upon_gone' => 'Quando não estiver mais no feed de notícias principais', - 'upon_reception' => 'ao receber um artigo', - 'when' => 'Marcar artigo como lido…', - 'when_same_title_in_category' => 'if an identical title already exists in the top n newest articles of the category', // TODO - 'when_same_title_in_feed' => 'Se um título idêntico já existir nos últimos n artigos mais novos (of the feed)', // DIRTY - ), - 'show' => array( - '_' => 'Artigos para exibir', - 'active_category' => 'Categoria ativa', - 'adaptive' => 'Show unreads if any, all articles otherwise', // TODO - 'all_articles' => 'Exibir todos os artigos', - 'all_categories' => 'Exibir todas as categorias', - 'no_category' => 'Nenhuma categoria', - 'remember_categories' => 'lembrar de abrir as categorias', - 'unread' => 'Exibir apenas não lido', - 'unread_or_favorite' => 'Show unreads and favourites', // TODO - ), - 'show_fav_unread_help' => 'Aplicar também nas tags', - 'sides_close_article' => 'Clicando fora da área do texto do artigo fecha o mesmo', - 'sort' => array( - '_' => 'Ordem de visualização', - 'newer_first' => 'Novos primeiro', - 'older_first' => 'Antigos primeiro', - ), - 'star' => array( - 'when' => 'Mark an article as favourite…', // TODO - ), - 'sticky_post' => 'Coloque o artigo no topo quando aberto', - 'title' => 'Lendo', - 'view' => array( - 'default' => 'Visualização padrão', - 'global' => 'Visualização global', - 'normal' => 'Visualização normal', - 'reader' => 'Visualização de leitura', - ), - ), - 'sharing' => array( - '_' => 'Compartilhando', - 'add' => 'Adicionar um método de compartilhamento', - 'bluesky' => 'Bluesky', // IGNORE - 'deprecated' => 'Este serviço está obceloeto e será removido do FreshRSS em versões futuras.', - 'diaspora' => 'Diaspora*', // IGNORE - 'email' => 'E-mail', - 'facebook' => 'Facebook', // IGNORE - 'more_information' => 'Mais informação', - 'print' => 'Imprimir', - 'raindrop' => 'Raindrop.io', // IGNORE - 'remove' => 'Remover método de compartilhamento', - 'shaarli' => 'Shaarli', // IGNORE - 'share_name' => 'Nome de visualização para compartilhar', - 'share_url' => 'URL utilizada para compartilhar', - 'title' => 'Compartilhando', - 'twitter' => 'Twitter', // IGNORE - 'wallabag' => 'wallabag', // IGNORE - ), - 'shortcut' => array( - '_' => 'Atalhos', - 'article_action' => 'Ações no artigo', - 'auto_share' => 'Compartilhar', - 'auto_share_help' => 'Se há apenas um modo de compartilhamento, ele é usado. Caso contrário, serão acessíveis pelo seu número.', - 'close_menus' => 'Fechar menus', - 'collapse_article' => 'Fechar', - 'first_article' => 'Ir para o primeiro artigo', - 'focus_search' => 'Acessar a caixa de busca', - 'global_view' => 'Mudar para visualização global', - 'help' => 'Mostrar documentação', - 'javascript' => 'JavaScript deve ser habilitado para utilizar atalhos', - 'last_article' => 'Ir para o último artigo', - 'load_more' => 'Carregar mais artigos', - 'mark_favorite' => 'Marcar como favorito', - 'mark_read' => 'Marcar como lido', - 'navigation' => 'Navegação', - 'navigation_help' => 'Com o modificador ⇧ Shift, atalhos de navegação aplicam aos feeds.
Com o Alt ⎇ modificador, atalhos de navegação aplicam as categorias.', - 'navigation_no_mod_help' => 'Os seguintes atalhos de navegação não suportam modificadores.', - 'next_article' => 'Pule para o próximo artigo', - 'next_unread_article' => 'Abrir o próximo artigo não lido', - 'non_standard' => 'Algumas teclas (%s) podem não funcionar como atalhos.', - 'normal_view' => 'Mudar para a visualização normal', - 'other_action' => 'Outras ações', - 'previous_article' => 'Pule para o artigo anterior', - 'reading_view' => 'Mudar para o modo de leitura', - 'rss_view' => 'Abrir como feed RSS ', - 'see_on_website' => 'Visualize o site original', - 'shift_for_all_read' => '+ Alt ⎇ para marcar artigos anteriores como lido
+ ⇧ Shift para marcar todos os artigos como lido', - 'skip_next_article' => 'Focar o próximo sem abri-lo', - 'skip_previous_article' => 'Focar o anterior sem abri-lo', - 'title' => 'Atalhos', - 'toggle_media' => 'Reproduzir/pausar mídia', - 'user_filter' => 'Acesse filtros de usuário', - 'user_filter_help' => 'Se há apenas um filtro, ele é utilizado. Caso contrário, os filtros serão acessíveis pelos seus números.', - 'views' => 'Visualizações', - ), - 'user' => array( - 'articles_and_size' => '%s artigos (%s)', - 'current' => 'Usuário atual', - 'is_admin' => 'é administrador', - 'users' => 'Usuários', - ), -); diff --git a/app/i18n/pt-br/feedback.php b/app/i18n/pt-br/feedback.php deleted file mode 100644 index 9ec1ffb35..000000000 --- a/app/i18n/pt-br/feedback.php +++ /dev/null @@ -1,152 +0,0 @@ - array( - 'denied' => 'Você não tem permissão para acessar esta página', - 'not_found' => 'Você está buscando por uma página que não existe', - ), - 'admin' => array( - 'optimization_complete' => 'Otimização Completa', - ), - 'api' => array( - 'password' => array( - 'failed' => 'Sua senha não pode ser modificada', - 'updated' => 'Sua senha foi alterada com sucesso', - ), - ), - 'auth' => array( - 'login' => array( - 'invalid' => 'Login está incorreto', - 'success' => 'Você está conectado', - ), - 'logout' => array( - 'success' => 'Você está desconectado', - ), - ), - 'conf' => array( - 'error' => 'Um erro ocorreu durante o salvamento das configurações', - 'query_created' => 'A Query “%s” foi criada.', - 'shortcuts_updated' => 'Atalhos foram criados', - 'updated' => 'Configuração foi atualizada', - ), - 'extensions' => array( - 'already_enabled' => '%s já está habilitado', - 'cannot_remove' => '%s não pode ser removido', - 'disable' => array( - 'ko' => '%s não pode ser desabilitado. verifique os logs do FreshRSS para detalhes.', - 'ok' => '%s agora está desabilitado', - ), - 'enable' => array( - 'ko' => '%s não pode ser habilitado. verifique os logs do FreshRSS para detalhes.', - 'ok' => '%s agora está habilitado', - ), - 'invalid_view_mode' => 'Invalid view mode “%s”! Fall back to “Normal view”.', // TODO - 'no_access' => 'Você não tem acesso ao %s', - 'not_enabled' => '%s não está habilitado', - 'not_found' => '%s não existe', - 'removed' => '%s removido', - ), - 'import_export' => array( - 'export_no_zip_extension' => 'extensão ZIP não está presente em seu servidor. Por favor tente exportar os arquivos um por vez.', - 'feeds_imported' => 'Seus feeds foram importados e serão atualizados agora / Your feeds have been imported. If you are done importing, you can now click the Update feeds button.', // DIRTY - 'feeds_imported_with_errors' => 'Seus feeds foram importados, mas alguns erros ocorreram / Your feeds have been imported, but some errors occurred. If you are done importing, you can now click the Update feeds button.', // DIRTY - 'file_cannot_be_uploaded' => 'Arquivo não pôde ser enviado', - 'no_zip_extension' => 'extensão ZIP não está presente em seu servidor.', - 'zip_error' => 'Um erro ocorreu durante a importação do arquivo ZIP.', - ), - 'profile' => array( - 'error' => 'Seu perfil não pode ser editado', - 'passwords_dont_match' => 'Passwords don’t match', // TODO - 'updated' => 'Seu perfil foi editado com sucesso', - ), - 'sub' => array( - 'actualize' => 'Atualizando', - 'articles' => array( - 'marked_read' => 'Os artigos selecionados foram marcados como lidos.', - 'marked_unread' => 'Os artigos foram marcados como não lidos', - ), - 'category' => array( - 'created' => 'Categoria %s foi criada.', - 'deleted' => 'Categoria foi deletada.', - 'emptied' => 'Categoria foi esvaziada', - 'error' => 'Categoria não pode ser atualizada', - 'name_exists' => 'Este nome de categoria já existe.', - 'no_id' => 'Você precisa especificar um id para a categoria.', - 'no_name' => 'Nome da categoria não pode ser vazio.', - 'not_delete_default' => 'Você não pode deletar uma categoria vazia!', - 'not_exist' => 'A categoria não existe!', - 'over_max' => 'Você atingiu seu limite de categorias (%d)', - 'updated' => 'Categoria foi atualizada.', - ), - 'feed' => array( - 'actualized' => '%s foi atualizado', - 'actualizeds' => 'Os feeds RSS foram atualizados', - 'added' => 'O feed RSS %s foi adicionado', - 'already_subscribed' => 'Você já está inscrito no %s', - 'cache_cleared' => 'O cache do feed %s foi limpo', - 'deleted' => 'o feed foi deletado', - 'error' => 'O feed não pode ser atualizado', - 'favicon' => array( - 'too_large' => 'Uploaded icon is too large. The maximum file size is %s.', // TODO - 'unsupported_format' => 'Unsupported image file format!', // TODO - ), - 'internal_problem' => 'O feed RSS não pôde ser adicionado. Verifique os logs do FreshRSS para detalhes. You can try force adding by appending #force_feed to the URL.', // DIRTY - 'invalid_url' => 'URL %s é inválida', - 'n_actualized' => '%d feeds foram atualizados', - 'n_entries_deleted' => '%d artigos foram deletados', - 'no_refresh' => 'Não há feed para atualizar…', - 'not_added' => '%s não pode ser atualizado', - 'not_found' => 'Não foi possível encontrar o feed', - 'over_max' => 'Você atingiu seu limite de feeds (%d)', - 'reloaded' => 'O feed %s foi recarregado', - 'selector_preview' => array( - 'http_error' => 'Falha ao carregar o conteúdo do site.', - 'no_entries' => 'Não há nenhuma entrada nesse feed. Você precisa de pelo menos um artigo para criar uma pré-visualização', - 'no_feed' => 'Erro interno (nenhum feed para verificar).', - 'no_result' => 'O seletor não teve correspondência. Por isso foi exibido o texto do feed original.', - 'selector_empty' => 'O seletor está vazio. Você precisa definir um para criar uma pré-visualização.', - ), - 'updated' => 'Os feeds foram atualizados', - ), - 'purge_completed' => 'Limpeza completa (%d artigos deletados)', - ), - 'tag' => array( - 'created' => 'A Tag “%s” foi criada.', - 'error' => 'Etiqueta não pode ser atualizada!', - 'name_exists' => 'O nome da tag já existe.', - 'renamed' => 'A Tag “%s” foi renomeada para “%s”.', - 'updated' => 'Etiqueta foi atualizada.', - ), - 'update' => array( - 'can_apply' => 'O FreshRSS será atualizado para a versão %s.', - 'error' => 'O processo de atualização encontrou um erro: %s', - 'file_is_nok' => 'Nova versão %s disponível, mas verifique as permissões no diretório %s. Servidor HTTP deve ter direitos para escrever dentro', - 'finished' => 'Atualização completa!', - 'none' => 'Nenhuma atualização para aplicar', - 'server_not_found' => 'Servidor de atualização não pôde ser localizado. [%s]', - ), - 'user' => array( - 'created' => array( - '_' => 'Usuário %s foi criado', - 'error' => 'Usuário %s não pode ser criado', - ), - 'deleted' => array( - '_' => 'Usuário %s foi deletado', - 'error' => 'Usuário %s não pode ser deletado', - ), - 'updated' => array( - '_' => 'O usuário %s foi atualizado com sucesso', - 'error' => 'O usuário %s não foi atualizado', - ), - ), -); diff --git a/app/i18n/pt-br/gen.php b/app/i18n/pt-br/gen.php deleted file mode 100644 index b2d263554..000000000 --- a/app/i18n/pt-br/gen.php +++ /dev/null @@ -1,277 +0,0 @@ - array( - 'actualize' => 'Atualizar feeds', - 'add' => 'Adicionar', - 'back_to_rss_feeds' => '← Volte para o seu feeds RSS', - 'cancel' => 'Cancelar', - 'close' => 'Close', // TODO - 'create' => 'Criar', - 'delete_all_feeds' => 'Delete all feeds', // TODO - 'delete_errored_feeds' => 'Delete feeds with errors', // TODO - 'delete_muted_feeds' => 'Excluir feeds silenciados', - 'demote' => 'Despromover', - 'disable' => 'Desabilitar', - 'download' => 'Download', // TODO - 'empty' => 'Vazio', - 'enable' => 'Habilitar', - 'export' => 'Exportar', - 'filter' => 'Filtrar', - 'import' => 'Importar', - 'load_default_shortcuts' => 'Carregar mais atalhos', - 'manage' => 'Gerenciar', - 'mark_read' => 'Marcar como lido', - 'menu' => array( - 'open' => 'Open menu', // TODO - ), - 'nav_buttons' => array( - 'next' => 'Next article', // TODO - 'prev' => 'Previous article', // TODO - 'up' => 'Go up', // TODO - ), - 'open_url' => 'Abrir URL', - 'promote' => 'Promover', - 'purge' => 'Limpar', - 'refresh_opml' => 'Atualizar OPML', - 'remove' => 'Remover', - 'rename' => 'Renomear', - 'see_website' => 'Ver o site', - 'submit' => 'Enviar', - 'truncate' => 'Deletar todos os artigos', - 'update' => 'Atualizar', - ), - 'auth' => array( - 'accept_tos' => 'Eu aceito os Termos de serviço.', - 'email' => 'Endereço de e-mail', - 'keep_logged_in' => 'Mantenha logado por (%s days)', - 'login' => 'Entrar', - 'logout' => 'Sair', - 'password' => array( - '_' => 'Senha', - 'format' => 'Ao menos 7 caracteres', - ), - 'reauth' => array( - 'header' => 'Reauthentication is required', // TODO - 'tip' => 'You won’t be asked to sign in again for %d minutes', // TODO - 'title' => 'Reauthentication', // TODO - ), - 'registration' => array( - '_' => 'Nova conta', - 'ask' => 'Criar novoa conta?', - 'title' => 'Criação de conta', - ), - 'username' => array( - '_' => 'Usuário', - 'format' => 'Máximo 16 caracteres alphanumericos', - ), - ), - 'date' => array( - 'Apr' => '\\A\\b\\r\\i\\l', - 'Aug' => '\\A\\g\\o\\s\\t\\o', - 'Dec' => '\\D\\e\\z\\e\\m\\b\\r\\o', - 'Feb' => '\\F\\e\\v\\e\\r\\e\\i\\r\\o', - 'Jan' => '\\J\\a\\n\\e\\i\\r\\o', - 'Jul' => '\\J\\u\\l\\h\\o', - 'Jun' => '\\J\\u\\n\\h\\o', - 'Mar' => '\\M\\a\\r\\ç\\o', - 'May' => '\\M\\a\\i\\o', - 'Nov' => '\\N\\o\\v\\e\\m\\b\\r\\o', - 'Oct' => '\\O\\u\\t\\u\\b\\r\\o', - 'Sep' => '\\S\\e\\t\\e\\m\\b\\r\\o', - 'apr' => 'abr', - 'april' => 'Abr', - 'aug' => 'ago', - 'august' => 'Ago', - 'before_yesterday' => 'Antes de ontem', - 'dec' => 'dez', - 'december' => 'Dez', - 'feb' => 'fev', - 'february' => 'Fev', - 'format_date' => 'j \\d\\e %s \\d\\e Y', - 'format_date_hour' => 'j \\d\\e %s \\d\\e Y\\, H\\:i', - 'fri' => 'Sex', - 'jan' => 'jan', - 'january' => 'Jan', - 'jul' => 'jul', - 'july' => 'Jul', - 'jun' => 'jun', - 'june' => 'Jun', - 'last_2_year' => 'Últimos dois anos', - 'last_3_month' => 'Últimos três meses', - 'last_3_year' => 'Últimos três anos', - 'last_5_year' => 'Últimos cinco anos', - 'last_6_month' => 'Últimos seis meses', - 'last_month' => 'Últimos mês', - 'last_week' => 'Última semana', - 'last_year' => 'Último ano', - 'mar' => 'mar', - 'march' => 'Mar', - 'may' => 'Mai', - 'may_' => 'Mai', - 'mon' => 'Seg', - 'month' => 'meses', - 'nov' => 'nov', - 'november' => 'Nov', - 'oct' => 'out', - 'october' => 'Out', - 'sat' => 'Sab', - 'sep' => 'set', - 'september' => 'Set', - 'sun' => 'Dom', - 'thu' => 'Qui', - 'today' => 'Hoje', - 'tue' => 'Ter', - 'wed' => 'Qua', - 'yesterday' => 'Ontem', - ), - 'dir' => 'ltr', // IGNORE - 'freshrss' => array( - '_' => 'FreshRSS', // IGNORE - 'about' => 'Sobre FreshRSS', - ), - 'js' => array( - 'category_empty' => 'Categoria vazia', - 'confirm_action' => 'Você tem certeza que deseja efetuar esta ação? Ela não poderá ser cancelada!', - 'confirm_action_feed_cat' => 'Você tem certeza que deseja efetuar esta ação ? Você irá perder favoritos e queries de usuários. Não poderá ser cancelado!', - 'confirm_exit_slider' => 'Are you sure you want to discard unsaved settings?', // TODO - 'feedback' => array( - 'body_new_articles' => 'Há %%d novos artigos para ler no FreshRSS.', - 'body_unread_articles' => '(não lido: %%d)', - 'request_failed' => 'Uma solicitação falhou, isto pode ter sido causado por problemas de conexão com a internet.', - 'title_new_articles' => 'FreshRSS: novos artigos!', - ), - 'labels_empty' => 'No labels', // TODO - 'new_article' => 'Há novos artigos disponíveis, clique para atualizar a página.', - 'should_be_activated' => 'O JavaScript precisa estar ativo', - 'unsafe_csp_header' => 'The CSP header in use is unsafe and FreshRSS may be vulnerable to XSS attacks. See documentation', // TODO - ), - 'lang' => array( - 'cs' => 'Čeština', // IGNORE - 'de' => 'Deutsch', // IGNORE - 'el' => 'Ελληνικά', // IGNORE - 'en' => 'English', // IGNORE - 'en-us' => 'English (United States)', // IGNORE - 'es' => 'Español', // IGNORE - 'fa' => 'فارسی', // IGNORE - 'fi' => 'Suomi', // IGNORE - 'fr' => 'Français', // IGNORE - 'he' => 'עברית', // IGNORE - 'hu' => 'Magyar', // IGNORE - 'id' => 'Bahasa Indonesia', // IGNORE - 'it' => 'Italiano', // IGNORE - 'ja' => '日本語', // IGNORE - 'ko' => '한국어', // IGNORE - 'lv' => 'Latviešu', // IGNORE - 'nl' => 'Nederlands', // IGNORE - 'oc' => 'Occitan', // IGNORE - 'pl' => 'Polski', // IGNORE - 'pt-br' => 'Português (Brasil)', // IGNORE - 'pt-pt' => 'Português (Portugal)', // IGNORE - 'ru' => 'Русский', // IGNORE - 'sk' => 'Slovenčina', // IGNORE - 'tr' => 'Türkçe', // IGNORE - 'uk' => 'Українська', // IGNORE - 'zh-cn' => '简体中文', // IGNORE - 'zh-tw' => '正體中文', // IGNORE - ), - 'menu' => array( - 'about' => 'Sobre', - 'account' => 'Conta', - 'admin' => 'Administração', - 'archiving' => 'Arquivar', - 'authentication' => 'Autenticação', - 'check_install' => 'Verificação de instalação', - 'configuration' => 'Configuração', - 'display' => 'Visualização', - 'extensions' => 'Extensões', - 'logs' => 'Logs', // IGNORE - 'privacy' => 'Privacy', // TODO - 'queries' => 'Queries de usuário', - 'reading' => 'Leitura', - 'search' => 'Procurar por palavras ou #tags', - 'search_help' => 'See documentation for advanced search parameters', // TODO - 'sharing' => 'Compartilhamento', - 'shortcuts' => 'Atalhos', - 'stats' => 'Estatísticas', - 'system' => 'Configuração do sistema', - 'update' => 'Atualização', - 'user_management' => 'Gerenciamento de usuários', - 'user_profile' => 'Perfil', - ), - 'period' => array( - 'days' => 'dias', - 'hours' => 'horas', - 'months' => 'meses', - 'weeks' => 'semanas', - 'years' => 'anos', - ), - 'readme' => array( - 'contribute' => 'contribute', // IGNORE - 'language' => 'Language', // IGNORE - 'translated' => 'Progress', // IGNORE - ), - 'share' => array( - 'Known' => 'Sites no Known', - 'archiveIS' => 'archive.is', // IGNORE - 'archiveORG' => 'archive.org', // IGNORE - 'archivePH' => 'archive.ph', // IGNORE - 'bluesky' => 'Bluesky', // IGNORE - 'buffer' => 'Buffer', // IGNORE - 'clipboard' => 'Área de transferência', - 'diaspora' => 'Diaspora*', // IGNORE - 'email' => 'E-mail', - 'email-webmail-firefox-fix' => 'Email (webmail - correção para o Firefox)', - 'facebook' => 'Facebook', // IGNORE - 'gnusocial' => 'GNU social', // IGNORE - 'jdh' => 'Journal du hacker', // IGNORE - 'lemmy' => 'Lemmy', // IGNORE - 'linkding' => 'Linkding', // IGNORE - 'linkedin' => 'LinkedIn', // IGNORE - 'mastodon' => 'Mastodon', // IGNORE - 'movim' => 'Movim', // IGNORE - 'omnivore' => 'Omnivore', // IGNORE - 'pinboard' => 'Pinboard', // IGNORE - 'pinterest' => 'Pinterest', // IGNORE - 'pocket' => 'Pocket', // IGNORE - 'print' => 'Imprimir', - 'raindrop' => 'Raindrop.io', // IGNORE - 'reddit' => 'Reddit', // IGNORE - 'shaarli' => 'Shaarli', // IGNORE - 'telegram' => 'Telegram', // IGNORE - 'twitter' => 'Twitter', // IGNORE - 'wallabag' => 'wallabag v1', // IGNORE - 'wallabagv2' => 'wallabag v2', // IGNORE - 'web-sharing-api' => 'Sistemas-compartilhados (API)', - 'whatsapp' => 'Whatsapp', // IGNORE - 'xing' => 'Xing', // IGNORE - ), - 'short' => array( - 'attention' => 'Atenção!', - 'blank_to_disable' => 'Deixe em branco para desativar', - 'by_author' => 'Por:', - 'by_default' => 'Por padrão', - 'damn' => 'Buumm!', - 'default_category' => 'Sem categoria', - 'no' => 'Não', - 'not_applicable' => 'Não disponível', - 'ok' => 'Ok!', // IGNORE - 'or' => 'ou', - 'yes' => 'Sim', - ), - 'stream' => array( - 'load_more' => 'Carregar mais artigos', - 'mark_all_read' => 'Marcar todos como lidos', - 'nothing_to_load' => 'Não há mais artigos', - ), -); diff --git a/app/i18n/pt-br/index.php b/app/i18n/pt-br/index.php deleted file mode 100644 index 9a52c27cd..000000000 --- a/app/i18n/pt-br/index.php +++ /dev/null @@ -1,110 +0,0 @@ - array( - '_' => 'Sobre', - 'agpl3' => 'AGPL 3', // IGNORE - 'bug_reports' => array( - 'environment_information' => array( - '_' => 'System information', // TODO - 'browser' => 'Browser', // TODO - 'database' => 'Database', // TODO - 'server_software' => 'Server software', // TODO - 'version_curl' => 'cURL version', // TODO - 'version_frss' => 'FreshRSS version', // TODO - 'version_php' => 'PHP version', // TODO - ), - ), - 'bugs_reports' => 'Reportar Bugs', - 'documentation' => 'Documentação', - 'freshrss_description' => 'FreshRSS é um RSS feeds aggregator para um host próprio. É leve e fácil de utilizar enquanto é uma ferramenta poderosa e configurável. ', - 'github' => 'no GitHub', - 'license' => 'licença', - 'project_website' => 'Site do projeto', - 'title' => 'Sobre', - 'version' => 'Versão', - ), - 'feed' => array( - 'empty' => 'Não há nenhum artigo para mostrar.', - 'received' => array( - 'before_yesterday' => 'Received before yesterday', // TODO - 'today' => 'Received today', // TODO - 'yesterday' => 'Received yesterday', // TODO - ), - 'rss_of' => 'RSS feed do %s', - 'title' => 'Stream principal', - 'title_fav' => 'Favoritos', - 'title_global' => 'Visualização Global', - ), - 'log' => array( - '_' => 'Logs', // IGNORE - 'clear' => 'Limpar logs', - 'empty' => 'Arquivo de log está vazio', - 'title' => 'Logs', // IGNORE - ), - 'menu' => array( - 'about' => 'Sobre o FreshRSS', - 'before_one_day' => 'Antes de um dia', - 'before_one_week' => 'Antes de uma semana', - 'bookmark_query' => 'Salvar pesquisa atual', - 'favorites' => 'Favoritos (%s)', - 'global_view' => 'Visualização global', - 'important' => 'Feeds importantes', - 'main_stream' => 'Stream principal', - 'mark_all_read' => 'Marcar todos como lidos', - 'mark_cat_read' => 'Marcar categoria como lida', - 'mark_feed_read' => 'Marcar feed com lido', - 'mark_selection_unread' => 'Marcar seleção como não lida', - 'mylabels' => 'Minhas etiquetas', - 'newer_first' => 'Novos primeiro', - 'non-starred' => 'Mostrar todos, exceto favoritos', - 'normal_view' => 'visualização normal', - 'older_first' => 'Antigos primeiro', - 'queries' => 'Queries do usuário', - 'read' => 'Mostrar apenas lidos', - 'reader_view' => 'Visualização de leitura', - 'rss_view' => 'Feed RSS', - 'search_short' => 'Buscar', - 'sort' => array( - '_' => 'Sorting criteria', // TODO - 'c' => array( - 'name_asc' => 'Category, feed titles A→Z', // TODO - 'name_desc' => 'Category, feed titles Z→A', // TODO - ), - 'date_asc' => 'Publication date 1→9', // TODO - 'date_desc' => 'Publication date 9→1', // TODO - 'f' => array( - 'name_asc' => 'Feed title A→Z', // TODO - 'name_desc' => 'Feed title Z→A', // TODO - ), - 'id_asc' => 'Freshly received last', // TODO - 'id_desc' => 'Freshly received first', // TODO - 'link_asc' => 'Link A→Z', // TODO - 'link_desc' => 'Link Z→A', // TODO - 'rand' => 'Random order', // TODO - 'title_asc' => 'Title A→Z', // TODO - 'title_desc' => 'Title Z→A', // TODO - ), - 'starred' => 'Mostrar apenas os favoritos', - 'stats' => 'Estatísticas', - 'subscription' => 'Gerenciamento de inscrições', - 'unread' => 'Mostrar apenas os não lidos', - ), - 'share' => 'Compartilhar', - 'tag' => array( - 'related' => 'Tags relacionadas', - ), - 'tos' => array( - 'title' => 'Termos do serviço', - ), -); diff --git a/app/i18n/pt-br/install.php b/app/i18n/pt-br/install.php deleted file mode 100644 index 6fd6344a3..000000000 --- a/app/i18n/pt-br/install.php +++ /dev/null @@ -1,128 +0,0 @@ - array( - 'finish' => 'Instalação completa', - 'fix_errors_before' => 'Por favor resolva os erros antes de ir para o próximo passo.', - 'keep_install' => 'Mantenha as configurações anteriores', - 'next_step' => 'Vá para o próximo passo', - 'reinstall' => 'Reinstale o FreshRSS', - ), - 'bdd' => array( - '_' => 'Banco de dados', - 'conf' => array( - '_' => 'Configuração do banco de dados', - 'ko' => 'Verifique as informações do seu banco de dados.', - 'ok' => 'Configurações do banco de dados foram salvas.', - ), - 'host' => 'Host', // IGNORE - 'password' => 'Senha do banco de dados', - 'prefix' => 'Prefixo da tabela', - 'type' => 'Tipo do banco de dados', - 'username' => 'Usuário do banco de dados', - ), - 'check' => array( - '_' => 'Verificações', - 'already_installed' => 'Verificamos que o FreshRSS já está instalado!', - 'cache' => array( - 'nok' => 'Verifique as permissões no diretório %s. O servidor HTTP deve ter direitos para escrever dentro desta pasta.', - 'ok' => 'Permissões no diretório cache estão corretos.', - ), - 'ctype' => array( - 'nok' => 'Não foi possível encontrar uma biblioteca necessária para verificação do tipo de caractere (php-ctype).', - 'ok' => 'Você tem a biblioteca necessária para verificação do tipo de caractere (ctype).', - ), - 'curl' => array( - 'nok' => 'Não foi possível encontrar a biblioteca cURL (php-curl).', - 'ok' => 'Você tem a biblioteca cURL.', - ), - 'data' => array( - 'nok' => 'Verifique as permissões no diretório %s. O servidor HTTP deve ter direitos para escrever dentro desta pasta.', - 'ok' => 'Permissões no diretório data estão corretos.', - ), - 'dom' => array( - 'nok' => 'Não foi possível encontrar uma biblioteca necessária para navegar pelo DOM (php-xml).', - 'ok' => 'Você tem a biblioteca necessária para navegar pelo DOM.', - ), - 'favicons' => array( - 'nok' => 'Verifique as permissões no diretório %s. O servidor HTTP deve ter direitos para escrever dentro desta pasta.', - 'ok' => 'Permissões no diretório favicons estão corretos.', - ), - 'fileinfo' => array( - 'nok' => 'Não foi possível encontrar a biblioteca fileinfo do PHP (fileinfo).', - 'ok' => 'Você tem a biblioteca fileinfo.', - ), - 'json' => array( - 'nok' => 'Não foi possível encontrar JSON (php-json).', - 'ok' => 'Você tem a extensão JSON.', - ), - 'mbstring' => array( - 'nok' => 'Não foi possível encontrar a biblioteca recomendada para o Unicode (mbstring).', - 'ok' => 'Você tem a biblioteca recomendada para o Unicode (mbstring).', - ), - 'pcre' => array( - 'nok' => 'Não foi possível encontrar uma biblioteca necessário para expressões regulares (php-pcre).', - 'ok' => 'Você tem a biblioteca necessária para expressões regulares (php-pcre).', - ), - 'pdo' => array( - 'nok' => 'Não foi encontrado o PDO ou um dos drivers suportados (pdo_mysql, pdo_sqlite, pdo_pgsql).', - 'ok' => 'Você tem o PDO e ao menos um dos drivers suportados (pdo_mysql, pdo_sqlite, pdo_pgsql).', - ), - 'php' => array( - 'nok' => 'Sua versão do PHP é %s mas FreshRSS requer ao menos a versão %s.', - 'ok' => 'Sua versão do PHP é %s, que é compatível com o FreshRSS.', - ), - 'reload' => 'Verifique novamente', - 'tmp' => array( - 'nok' => 'Verifiquei as permissões no diretório %s. O servidor HTTP deve ter direitos para escrever dentro desta pasta.', - 'ok' => 'As permissões para o diretório temporário estão certas.', - ), - 'unknown_process_username' => 'Desconhecido', - 'users' => array( - 'nok' => 'Verifiquei as permissões no diretório %s. O servidor HTTP deve ter direitos para escrever dentro desta pasta.', - 'ok' => 'Permissões no diretório users estão corretos.', - ), - 'xml' => array( - 'nok' => 'Não foi possível encontrar a biblioteca necessária para parse o XML.', - 'ok' => 'Você tem a biblioteca necessária para parse o XML.', - ), - ), - 'conf' => array( - '_' => 'Configurações gerais', - 'ok' => 'Configurações gerais foram salvas.', - ), - 'congratulations' => 'Parabéns!', - 'default_user' => array( - '_' => 'Usuário do usuário padrão', - 'max_char' => 'máximo de 16 caracteres alfanuméricos', - ), - 'fix_errors_before' => 'Por favor solucione os erros antes de ir para o próximo passo.', - 'javascript_is_better' => 'O FreshRSS é mais agradável com o JavaScript ativo', - 'js' => array( - 'confirm_reinstall' => 'Você irá perder suas configurações anteriores ao reinstalar o FreshRSS. Você está certo que deseja continuar?', - ), - 'language' => array( - '_' => 'Idioma', - 'choose' => 'Escolha o idioma para o FreshRSS', - 'defined' => 'O idioma foi definido.', - ), - 'missing_applied_migrations' => 'Algo de errado ocorreu; você tem que criar um arquivo vazio %s manualmente.', - 'ok' => 'O processo de instalação foi um sucesso.', - 'session' => array( - 'nok' => 'O servidor parece ter sido configurado incorretamente para os cookies necessários para sessões PHP!', - ), - 'step' => 'passo %d', - 'steps' => 'Passos', - 'this_is_the_end' => 'Este é o final', - 'title' => 'Instalação · FreshRSS', -); diff --git a/app/i18n/pt-br/sub.php b/app/i18n/pt-br/sub.php deleted file mode 100644 index 829b21660..000000000 --- a/app/i18n/pt-br/sub.php +++ /dev/null @@ -1,307 +0,0 @@ - array( - 'documentation' => 'Copie a seguinte URL para utilizar com uma ferramenta externa', - 'title' => 'API', // IGNORE - ), - 'bookmarklet' => array( - 'documentation' => 'Arraste este botão para sua barra de favoritos ou clique com o botão direito e escolha “Adicionar este link aos favoritos”. Depois clique no no link da barra de favoritos “Inscrever-se” em qualquer página que você queira se inscrever.', - 'label' => 'Inscrever-se', - 'title' => 'Bookmarklet', // IGNORE - ), - 'category' => array( - '_' => 'Categoria', - 'add' => 'Adicionar categoria', - 'archiving' => 'Arquivar', - 'dynamic_opml' => array( - '_' => 'OPML Dinâmico', - 'help' => 'Forneça uma URL para o arquivo OPML para preencher dinamicamente esta categoria com feeds', - ), - 'empty' => 'Categoria vazia', - 'expand' => 'Expand category', // TODO - 'information' => 'Informações', - 'open' => 'Open category', // TODO - 'opml_url' => 'URL de OPML', - 'position' => 'Posição de exibição', - 'position_help' => 'Para controlar a ordem de exibição', - 'title' => 'Título', - ), - 'feed' => array( - 'accept_cookies' => 'Aceitar cookies', - 'accept_cookies_help' => 'Permitir que o servidor de Feed defina os cookies (sarmazenados na memória apenas durante a solicitação)', - 'add' => 'Adicionar um feed', - 'advanced' => 'Avançado', - 'archiving' => 'Arquivar', - 'auth' => array( - 'configuration' => 'Entrar', - 'help' => 'Permite acesso a feeds RSS protegidos por HTTP', - 'http' => 'Autenticação HTTP', - 'password' => 'Senha HTTP', - 'username' => 'Usuário HTTP', - ), - 'change_favicon' => 'Change…', // TODO - 'clear_cache' => 'Sempre limpar o cache', - 'content_action' => array( - '_' => 'Ações ao buscar pelo conteúdo de artigos', - 'append' => 'Adicionar depois conteúdo existente', - 'prepend' => 'Adicionar antes do conteúdo existente', - 'replace' => 'Substituir o conteúdo existente', - ), - 'content_retrieval' => 'Content retrieval', // TODO - 'css_cookie' => 'Usar cookies ao buscar pelo conteúdo de artigos', - 'css_cookie_help' => 'Exemplo: foo=bar; gdpr_consent=true; cookie=value', - 'css_help' => 'Retorna RSS feeds truncados (atenção, requer mais tempo!)', - 'css_path' => 'Caminho do CSS do artigo no site original', - 'css_path_filter' => array( - '_' => 'Seletor CSS dos elementos a serem removidos', - 'help' => 'O seletor CSS pode ser uma lista com: footer, aside, p[data-sanitized-class~="menu"]', - ), - 'description' => 'Descrição', - 'empty' => 'Este feed está vazio. Por favor verifique ele ainda é mantido.', - 'error' => 'Este feed encontra-se com problema. Por favor verifique se ele ainda está disponível.', // DIRTY - 'export-as-opml' => array( - 'download' => 'Download', // IGNORE - 'help' => 'Arquivo XML (data subset. See documentation)', // DIRTY - 'label' => 'Exportar como OPML', - ), - 'ext_favicon' => 'Set automatically', // TODO - 'favicon_changed_by_ext' => 'The icon has been set by the %s extension.', // TODO - 'filteractions' => array( - '_' => 'Ações do filtro', - 'help' => 'Escreva um filtro de pesquisa por linha. Operators see documentation.', // DIRTY - ), - 'http_headers' => 'HTTP Headers', // TODO - 'http_headers_help' => 'Headers are separated by a newline, and the name and value of a header are separated by a colon (e.g: Accept: application/atom+xml
Authorization: Bearer some-token
).', // TODO - 'icon' => 'Icon', // TODO - 'information' => 'Informações', - 'keep_min' => 'Número mínimo de artigos para manter', - 'kind' => array( - '_' => 'Tipo de fonte de alimentação do Feed', - 'html_json' => array( - '_' => 'HTML + XPath + JSON dot notation (JSON in HTML)', // TODO - 'xpath' => array( - '_' => 'XPath for JSON in HTML', // TODO - 'help' => 'Example: normalize-space(//script[@type="application/json"]) (single JSON)
or: //script[@type="application/ld+json"] (one JSON object per article)', // TODO - ), - ), - 'html_xpath' => array( - '_' => 'HTML + XPath (Web scraping)', // IGNORE - 'feed_title' => array( - '_' => 'Título do Feed', - 'help' => 'Exemplo: //title ou uma string estática: "Meu feed customizado"', - ), - 'help' => 'XPath 1.0é uma linguagem de consulta padrão para usuários avançados e que o FreshRSS suporta para habilitar o Web scraping.', - 'item' => array( - '_' => 'encontrar notícias items
(mais importantes)', - 'help' => 'Exemplo: //div[@class="news-item"]', - ), - 'item_author' => array( - '_' => 'Autor do item', - 'help' => 'Também pode ser uma string estática. Exemplo: "Anônimo"', - ), - 'item_categories' => 'Etiquetas do item', - 'item_content' => array( - '_' => 'Conteúdo do item', - 'help' => 'Exemplo para pegar o item completo: .', - ), - 'item_thumbnail' => array( - '_' => 'Miniatura do item', - 'help' => 'Exemplo: descendant::img/@src', - ), - 'item_timeFormat' => array( - '_' => 'Custom date/time format', // TODO - 'help' => 'Optional. A format supported by DateTime::createFromFormat() such as d-m-Y H:i:s', // TODO - ), - 'item_timestamp' => array( - '_' => 'Data do Item', - 'help' => 'O resultado será parecido com: strtotime()', - ), - 'item_title' => array( - '_' => 'Titulo do Item', - 'help' => 'Utilize especialmente XPath axis descendant:: like descendant::h2', - ), - 'item_uid' => array( - '_' => 'ID único do item', - 'help' => 'Opcional. Exemplo: descendant::div/@data-uri', - ), - 'item_uri' => array( - '_' => 'Link do item (URL)', - 'help' => 'Exemplo: descendant::a/@href', - ), - 'relative' => 'XPath (relativo do item) para:', - 'xpath' => 'XPath para:', - ), - 'json_dotnotation' => array( - '_' => 'JSON (notação de ponto)', - 'feed_title' => array( - '_' => 'título do feed', - 'help' => 'Exemplo: meta.title ou uma string estática: "Meu feed customizado"', - ), - 'help' => 'Um JSON na notação de ponto usa pontos entre os objetos e colchetes para arrays (e.g. data.items[0].title)', - 'item' => array( - '_' => 'encontrando novidades itens
(mais importante)', - 'help' => 'Caminho do JSON para o array contendo os itens, e.g. $ or newsItems', // DIRTY - ), - 'item_author' => 'autor do item', - 'item_categories' => 'tags dos itens', - 'item_content' => array( - '_' => 'conteúdo do item', - 'help' => 'Chave sob na qual o conteúdo é encontrado, e.g. content', - ), - 'item_thumbnail' => array( - '_' => 'miniatura do item', - 'help' => 'Exemplo: image', - ), - 'item_timeFormat' => array( - '_' => 'Formato de data/hora customizado', - 'help' => 'Opcional. Um formato suportado por DateTime::createFromFormat() assim como d-m-Y H:i:s', - ), - 'item_timestamp' => array( - '_' => 'data do item', - 'help' => 'The result will be parsed by strtotime()', // TODO - ), - 'item_title' => 'título do item', - 'item_uid' => 'ID único do item', - 'item_uri' => array( - '_' => 'Link do item (URL)', - 'help' => 'Exemplo: permalink', - ), - 'json' => 'notação de ponto para:', - 'relative' => 'notação de ponto (relativa ao item) para:', - ), - 'jsonfeed' => 'JSON Feed', // IGNORE - 'rss' => 'RSS / Atom (padrão)', - 'xml_xpath' => 'XML + XPath', // IGNORE - ), - 'maintenance' => array( - 'clear_cache' => 'Limpar o cache', - 'clear_cache_help' => 'Limpar o cache em disco deste feed', - 'reload_articles' => 'Recarregar artigos', - 'reload_articles_help' => 'Recarregar artigos e buscar conteúdo completo', - 'title' => 'Manutenção', - ), - 'max_http_redir' => 'Quantidade máxima de redirecionamentos HTTP', - 'max_http_redir_help' => 'Defina como 0 ou deixe em branco para desabilitar, -1 para redirecionamentos ilimitados', - 'method' => array( - '_' => 'Método HTTP', - ), - 'method_help' => 'O conteúdo do POST tem suporte automático para application/x-www-form-urlencoded e application/json', - 'method_postparams' => 'Conteúdo do POST', - 'moved_category_deleted' => 'Quando você deleta uma categoria, seus feeds são automaticamente classificados como %s.', - 'mute' => array( - '_' => 'silenciar', - 'state_is_muted' => 'This feed is muted', // TODO - ), - 'no_selected' => 'Nenhum feed selecionado.', - 'number_entries' => '%d artigos', - 'open_feed' => 'Open feed %s', // TODO - 'path_entries_conditions' => 'Conditions for content retrieval', // TODO - 'priority' => array( - '_' => 'Visibilidade', - 'category' => 'Mostrar na sua categoria', - 'feed' => 'Show in its feed', // TODO - 'hidden' => 'Não exibir', - 'important' => 'Mostrar feeds importantes', - 'main_stream' => 'Mostrar na tela principal', - ), - 'proxy' => 'Defina um proxy para buscar esse feed', - 'proxy_help' => 'Selecione um protocolo (e.g: SOCKS5) e digite o endereço do proxy (e.g: 127.0.0.1:1080 or username:password@127.0.0.1:1080)', - 'reset_favicon' => 'Reset to default', // TODO - 'selector_preview' => array( - 'show_raw' => 'Mostrar fonte', - 'show_rendered' => 'Mostrar conteúdo', - ), - 'show' => array( - 'all' => 'Mostrar todos os Feeds', - 'error' => 'Somente mostrar Feeds com erros', - ), - 'showing' => array( - 'error' => 'Exibir apenas os feeds com erros', - ), - 'ssl_verify' => 'Verificar segurança SSL', - 'stats' => 'Estatísticas', - 'think_to_add' => 'Você deve adicionar alguns feeds.', - 'timeout' => 'Timeout em segundos', - 'title' => 'Título', - 'title_add' => 'Adicionar o RSS feed', - 'ttl' => 'Não atualize automaticamente mais que', - 'unicityCriteria' => array( - '_' => 'Article unicity criteria', // TODO - 'forced' => 'forced', // TODO - 'help' => 'Relevant for invalid feeds.
⚠️ Changing the policy will create duplicates.', // TODO - 'id' => 'Standard ID (default)', // TODO - 'link' => 'Link', // TODO - 'sha1:content' => 'Content', // TODO - 'sha1:content_published' => 'Content + Date', // TODO - 'sha1:link_published' => 'Link + Date', // TODO - 'sha1:link_published_title' => 'Link + Date + Title', // TODO - 'sha1:link_published_title_content' => 'Link + Date + Title + Content', // TODO - 'sha1:published' => 'Date', // TODO - 'sha1:title' => 'Title', // TODO - 'sha1:title_published' => 'Title + Date', // TODO - 'sha1:title_published_content' => 'Title + Date + Content', // TODO - ), - 'url' => 'URL do Feed', - 'useragent' => 'Defina um usuário para buscar este feed', - 'useragent_help' => 'Exemplo: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0)', - 'validator' => 'Verifique a validade do feed', - 'website' => 'URL do site', - 'websub' => 'Notificação instantânea com WebSub', - ), - 'import_export' => array( - 'export' => array( - '_' => 'Exportar', - 'sqlite' => 'Download user database as SQLite', // TODO - ), - 'export_labelled' => 'Exportar seus artigos etiquetados', - 'export_opml' => 'Exporta a lista dos feeds (OPML)', - 'export_starred' => 'Exportar seus favoritos', - 'feed_list' => 'Lista dos %s artigos', - 'file_to_import' => 'Arquivo para importar
(OPML, JSON or ZIP)', - 'file_to_import_no_zip' => 'Arquivo para importar
(OPML or JSON)', - 'import' => 'Importar', - 'starred_list' => 'Listar artigos favoritos', - 'title' => 'Importar / exportar', - ), - 'menu' => array( - 'add' => 'Adicionar um feed ou categoria', - 'import_export' => 'Importar / exportar', - 'label_management' => 'Gerenciar etiquetas', - 'stats' => array( - 'idle' => 'Feeds inativos', - 'main' => 'Estatísticas principais', - 'repartition' => 'Repartição de artigos', - ), - 'subscription_management' => 'Gerenciamento de inscrições', - 'subscription_tools' => 'Ferramentas de inscrição', - ), - 'tag' => array( - 'auto_label' => 'Adicione esta etiqueta para novos artigos', - 'name' => 'Nome', - 'new_name' => 'Nome novo', - 'old_name' => 'Nome antigo', - ), - 'title' => array( - '_' => 'Gerenciamento de inscrições', - 'add' => 'Adicionar um feed ou categoria', - 'add_category' => 'Adicionar uma categoria', - 'add_dynamic_opml' => 'Adicionar OPML dinâmico', - 'add_feed' => 'Adicionar um feed', - 'add_label' => 'Adicionar uma etiqueta', - 'add_opml_category' => 'OPML category name', // TODO - 'delete_label' => 'Deletar uma etiqueta', - 'feed_management' => 'Gerenciamento dos RSS feeds', - 'subscription_tools' => 'Ferramentas de inscrição', - ), -); diff --git a/app/i18n/pt-br/user.php b/app/i18n/pt-br/user.php deleted file mode 100644 index e1655313c..000000000 --- a/app/i18n/pt-br/user.php +++ /dev/null @@ -1,54 +0,0 @@ - array( - 'feedback' => array( - 'invalid' => 'Endereço de email inválido', - 'required' => 'O endereço de email é necessário', - ), - 'validation' => array( - 'change_email' => 'Você pode mudar seu endereço de email na página do perfil.', - 'email_sent_to' => 'Enviamos um email para %s. Por favor, siga as instruções contidas nele para verificar sua conta.', - 'feedback' => array( - 'email_failed' => 'Não foi possível enviar um email para você devido a um erro de configuração no servidor.', - 'email_sent' => 'Um email foi enviado para o seu endereço', - 'error' => 'Falha na verificação do endereço de email', - 'ok' => 'O endereço de email foi verificado com sucesso.', - 'unnecessary' => 'Esse endereço de email já foi verificado.', - 'wrong_token' => 'A verificação do endereço de email falhou por causa do token incorreto.', - ), - 'need_to' => 'Para poder utilizar o %s, você deve verificar seu endereço de email.', - 'resend_email' => 'Reenviar o email', - 'title' => 'Validação do endereço de email', - ), - ), - 'mailer' => array( - 'email_need_validation' => array( - 'body' => 'Você se registrou no %s. Mas ainda é necessário verificar seu endereço de email. Para isso, basta seguir o link:', - 'title' => 'Você precisa verificar sua conta', - 'welcome' => 'Bem vindo %s,', - ), - ), - 'password' => array( - 'invalid' => 'Senha incorreta', - ), - 'tos' => array( - 'feedback' => array( - 'invalid' => 'Para se registrar, você deve aceitar os Termos do serviço.', - ), - ), - 'username' => array( - 'invalid' => 'Nome de usuário inválido.', - 'taken' => 'O nome de usuário %s já está sendo utilizado', - ), -); -- cgit v1.2.3