diff --git a/src/scripts/i18n/README.md b/src/scripts/i18n/README.md index 18d0301..802dbb3 100644 --- a/src/scripts/i18n/README.md +++ b/src/scripts/i18n/README.md @@ -18,6 +18,7 @@ Currently, Fluent Reader supports the following languages. | nl | Nederlands | [@Vistaus](https://github.com/Vistaus) | | it | Italiano | [@andrewasd](https://github.com/andrewasd) | | pt-BR | Português do Brasil | [@fabianski7](https://github.com/fabianski7) | +| pt-PT | Português de Portugal | [@0x1336](https://github.com/0x1336) | | ko | 한글 | [@1drive](https://github.com/1drive) | | ru | Russian | [@nxblnd](https://github.com/nxblnd) | diff --git a/src/scripts/i18n/_locales.ts b/src/scripts/i18n/_locales.ts index 229b6a2..e8c64d0 100644 --- a/src/scripts/i18n/_locales.ts +++ b/src/scripts/i18n/_locales.ts @@ -14,6 +14,7 @@ import ru from "./ru.json" import pt_BR from "./pt-BR.json" import fi_FI from "./fi-FI.json" import ko from "./ko.json" +import pt_PT from "./pt-PT.json" const locales = { "en-US": en_US, @@ -32,6 +33,7 @@ const locales = { "pt-BR": pt_BR, "fi-FI": fi_FI, "ko": ko, + "pt-PT": pt_PT, } export default locales diff --git a/src/scripts/i18n/pt-PT.json b/src/scripts/i18n/pt-PT.json new file mode 100644 index 0000000..56354b2 --- /dev/null +++ b/src/scripts/i18n/pt-PT.json @@ -0,0 +1,241 @@ +{ + "allArticles": "Todos os artigos", + "add": "Adicionar", + "create": "Criar", + "icon": "Ícone", + "name": "Nome", + "openExternal": "Abrir externamente", + "emptyName": "Este campo não pode ficar vazio.", + "emptyField": "Este campo não pode ficar vazio.", + "edit": "Editar", + "delete": "Eliminar", + "followSystem": "Seguir o sistema", + "more": "Mais", + "close": "Fechar", + "search": "Pesquisar", + "loadMore": "Carregar mais", + "dangerButton": "Confirmar {action}?", + "confirmMarkAll": "Deseja mesmo marcar todos os artigos desta página como lidos?", + "confirm": "Confirmar", + "cancel": "Cancelar", + "default": "Padrão", + "time": { + "now": "agora", + "m": "m", + "h": "h", + "d": "d", + "minute": "{m, plural, =1 {# minuto} other {# minutos}}", + "hour": "{h, plural, =1 {# hora} other {# horas}}", + "day": "{d, plural, =1 {# dia} other {# dias}}" + }, + "log": { + "empty": "Nenhuma notificação", + "fetchFailure": "Falha ao carregar a fonte \"{name}\".", + "fetchSuccess": "{count, plural, =1 {# Artigo} other {# Artigos}} foram atualizados com sucesso.", + "networkError": "Ocorreu um erro na rede.", + "parseError": "Ocorreu um erro ao analisar o feed XML.", + "syncFailure": "Falha ao sincronizar com o serviço" + }, + "nav": { + "menu": "Menu", + "refresh": "Atualizar", + "markAllRead": "Marcar todos como lidos", + "notifications": "Notificações", + "view": "Visualização", + "settings": "Definições", + "minimize": "Minimizar", + "maximize": "Maximizar" + }, + "menu": { + "close": "Fechar menu", + "subscriptions": "Subscrições" + }, + "article": { + "error": "Falha ao carregar o artigo.", + "reload": "Recarregar?", + "empty": "Nenhum artigo", + "untitled": "(Sem título)", + "hide": "Ocultar artigo", + "unhide": "Exibir artigo", + "markRead": "Marcar como lido", + "markUnread": "Marcar como não lido", + "markAbove": "Marcar artigo(s) acima como lido(s)", + "markBelow": "Marcar artigo(s) abaixo como não lido(s)", + "star": "Marcar como favorito", + "unstar": "Remover marcação", + "fontSize": "Tamanho da fonte", + "loadWebpage": "Carregar página web", + "loadFull": "Carregar todo o conteúdo", + "notify": "Notificar se atualizado em segundo plano", + "dontNotify": "Não notificar", + "textDir": "Direção do texto", + "LTR": "Esquerda-para-direita", + "RTL": "Direita-para-esquerda", + "Vertical": "Vertical", + "font": "Fonte" + }, + "context": { + "share": "Partilhar", + "read": "Ler", + "copyTitle": "Copiar título", + "copyURL": "Copiar link", + "copy": "Copiar", + "search": "Pesquisar \"{text}\" no {engine}", + "view": "Visualizar", + "cardView": "Como cartões", + "listView": "Em lista", + "magazineView": "Como revista", + "compactView": "Compacto", + "filter": "Filtrar", + "unreadOnly": "Apenas não lidos", + "starredOnly": "Apenas favoritos", + "fullSearch": "Pesquisar em todo o texto", + "showHidden": "Exibir artigos ocultos", + "manageSources": "Gerir fontes", + "saveImageAs": "Guardar imagem como …", + "copyImage": "Copiar imagem", + "copyImageURL": "Copiar link da imagem", + "caseSensitive": "Diferenciar maiúsculas e minúsculas", + "showCover": "Mostrar capa", + "showSnippet": "Mostrar trecho", + "fadeRead": "Desaparecer artigos lidos" + }, + "searchEngine": { + "name": "Motor de pesquisa", + "google": "Google", + "bing": "Bing", + "baidu": "Baidu", + "duckduckgo": "DuckDuckGo" + }, + "settings": { + "writeError": "Ocorreu um erro ao gravar o ficheiro.", + "name": "Definições", + "fetching": "Atualizando fontes, aguarde por favor …", + "exit": "Sair das definições", + "sources": "Fontes", + "grouping": "Grupos", + "rules": "Regras", + "service": "Serviço", + "app": "Preferências", + "about": "Sobre", + "version": "Versão", + "shortcuts": "Atalhos", + "openSource": "Código aberto", + "feedback": "Feedback" + }, + "sources": { + "serviceWarning": "Fontes importadas ou adicionadas aqui não serão sincronizadas com o seu serviço.", + "serviceManaged": "Esta fonte é gerenciada pelo seu serviço.", + "untitled": "Fonte", + "errorAdd": "Ocorreu um erro ao adicionar a fonte.", + "errorParse": "Ocorreu um erro ao analisar o arquivo OPML.", + "errorParseHint": "Certifique-se de que o arquivo não esteja corrompido e que esteja codificado com UTF-8.", + "errorImport": "Erro ao importar {count, plural, =1 {# fonte} other {# fontes}}.", + "exist": "Esta fonte já existe.", + "opmlFile": "Ficheiro OPML", + "name": "Nome da fonte", + "editName": "Editar nome", + "fetchFrequency": "Limite da frequência de atualização", + "unlimited": "Ilimitado", + "openTarget": "Método padrão de carregamento dos artigos", + "delete": "Eliminar fonte", + "add": "Adicionar fonte", + "import": "Importar", + "export": "Exportar", + "rssText": "Texto completo do RSS", + "loadWebpage": "Carregar página web", + "inputUrl": "Insira a URL", + "badIcon": "Ícone inválido", + "badUrl": "URL inválida", + "deleteWarning": "A fonte e todos os artigos guardados serão removidos.", + "selected": "Fonte selecionada", + "selectedMulti": "Múltiplas fontes selecionadas" + }, + "groups": { + "exist": "Este grupo já existe.", + "type": "Tipo", + "group": "Grupo", + "source": "Fonte", + "capacity": "Capacidade", + "exitGroup": "Voltar para os grupos", + "deleteSource": "Eliminar do grupo", + "sourceHint": "Arraste e solte as fontes para reorganizá-las.", + "create": "Criar grupo", + "selectedGroup": "Grupo selecionado", + "selectedSource": "Fonte selecionada", + "enterName": "Insira o nome", + "editName": "Editar nome", + "deleteGroup": "Eliminar grupo", + "chooseGroup": "Selecione um grupo", + "addToGroup": "Adicionar a ...", + "groupHint": "Clique duplo no grupo para editar as fontes. Arraste e solte para reorganizá-los." + }, + "rules": { + "intro": "Marcar artigos automaticamente ou enviar notificações com expressões regulares.", + "help": "Saber mais", + "source": "Fonte", + "selectSource": "Selecionar uma fonte", + "new": "Nova regra", + "if": "Se", + "then": "Então", + "title": "Título", + "content": "Conteúdo", + "fullSearch": "Título ou conteúdo", + "creator": "Autor", + "match": "corresponde", + "notMatch": "não corresponde", + "regex": "Expressão regular", + "badRegex": "Expressão regular inválida.", + "action": "Ações", + "selectAction": "Selecionar ações", + "hint": "As regras serão aplicadas em ordem. Arraste e solte para reorganizar.", + "test": "Testar regras" + }, + "service": { + "intro": "Sincronização entre dispositivos com serviços RSS.", + "select": "Selecione um serviço", + "suggest": "Sugerir um novo serviço", + "overwriteWarning": "Fontes locais serão eliminadas se elas existirem no serviço.", + "groupsWarning": "Grupos não são automaticamente sincronizados com o serviço.", + "rateLimitWarning": "Para evitar limitações do serviço, você precisa criar sua própria chave de API.", + "removeAd": "Remover Anuncio", + "endpoint": "Endpoint", + "username": "Utilizador", + "password": "Password", + "unchanged": "Inalterado", + "fetchLimit": "Limite de sincronização", + "fetchLimitNum": "{count} últimos artigos", + "importGroups": "Importar grupos", + "failure": "Não foi possível conectar ao serviço", + "failureHint": "Por favor verifique a configuração do serviço ou o estado da rede.", + "fetchUnlimited": "Ilimitado (não recomendado)", + "exportToLite": "Exportar para o Fluent Reader Lite" + }, + "app": { + "cleanup": "Limpar", + "cache": "Limpar cache", + "cacheSize": "{size} de dados em cache", + "deleteChoices": "Eliminar artigos de ... dias atrás", + "confirmDelete": "Eliminar", + "daysAgo": "{days, plural, =1 {# dia} other {# dias}} atrás", + "deleteAll": "Eliminar todos os artigos", + "calculatingSize": "Calculando tamanho...", + "itemSize": "Cerca de {size} do armazenamento local é ocupado por artigos", + "confirmImport": "Do you really want to import data from the backup file? All current data will be wiped.", + "data": "Dados da aplicação", + "backup": "Backup", + "restore": "Restorar", + "frData": "Dados do Fluent Reader", + "language": "Idioma", + "theme": "Tema", + "lightTheme": "Modo claro", + "darkTheme": "Modo escuro", + "enableProxy": "Ativar proxy", + "badUrl": "URL inválida", + "pac": "Endereço PAC", + "setPac": "Definir PAC", + "pacHint": "Para proxies Socks, é recomendado para o PAC retornar \"SOCKS5\" para o proxy-side DNS. Desligar o proxy requer um reinicio.", + "fetchInterval": "Intervalo de atualização automática", + "never": "Nunca" + } +}