浏览代码

Language portugue (#1648)

* Create folder pt-br to translate to portuguese-brazil;
Translate file admin.php;
Trnaslate file index.php;

* Translate the files:
- conf.php
- feedback.php
- gen.php

* Translate sub.php e install.php; add pt-br in file gen.php inside another languages

* fix bug

* Configure display date

* Add pt-br to es, kr, zh, and fix whitespace

https://github.com/FreshRSS/FreshRSS/pull/1648

* Changelog 1648

https://github.com/FreshRSS/FreshRSS/pull/1648

* Fix whitespace (caught by Travis)
David souza 8 年之前
父节点
当前提交
ac3c24dd83

+ 1 - 0
CHANGELOG.md

@@ -16,6 +16,7 @@
 	* New command `./cli/update-user` to update user settings [#1600](https://github.com/FreshRSS/FreshRSS/issues/1600)
 	* New command `./cli/update-user` to update user settings [#1600](https://github.com/FreshRSS/FreshRSS/issues/1600)
 * I18n
 * I18n
 	* Korean [#1578](https://github.com/FreshRSS/FreshRSS/pull/1578)
 	* Korean [#1578](https://github.com/FreshRSS/FreshRSS/pull/1578)
+	* Portuguese (Brazilian) [#1648](https://github.com/FreshRSS/FreshRSS/pull/1648)
 	* Fix month abbreviations [#1560](https://github.com/FreshRSS/FreshRSS/issues/1560)
 	* Fix month abbreviations [#1560](https://github.com/FreshRSS/FreshRSS/issues/1560)
 * Bug fixing
 * Bug fixing
 	* Fix API compatibility bug between PostgreSQL and EasyRSS [#1603](https://github.com/FreshRSS/FreshRSS/pull/1603)
 	* Fix API compatibility bug between PostgreSQL and EasyRSS [#1603](https://github.com/FreshRSS/FreshRSS/pull/1603)

+ 2 - 1
CREDITS.md

@@ -16,6 +16,7 @@ People are sorted by name so please keep this order.
 * [Crupuk](https://github.com/Crupuk): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:Crupuk)
 * [Crupuk](https://github.com/Crupuk): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:Crupuk)
 * [Damstre](https://github.com/Damstre): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:Damstre)
 * [Damstre](https://github.com/Damstre): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:Damstre)
 * [danc](https://github.com/danc): [contributions](https://github.com/FreshRSS/FreshRSS/commits?author=danc), [Web](http://tintouli.free.fr/)
 * [danc](https://github.com/danc): [contributions](https://github.com/FreshRSS/FreshRSS/commits?author=danc), [Web](http://tintouli.free.fr/)
+* [David Souza](https://github.com/araujo0205): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:araujo0205), [Web](http://davidsouza.tech/)
 * [dswd](https://github.com/dswd): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:dswd)
 * [dswd](https://github.com/dswd): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:dswd)
 * [ealdraed](https://github.com/ealdraed): [contributions](https://github.com/FreshRSS/FreshRSS/commits?author=ealdraed)
 * [ealdraed](https://github.com/ealdraed): [contributions](https://github.com/FreshRSS/FreshRSS/commits?author=ealdraed)
 * [Frans de Jonge](https://github.com/Frenzie): [contributions](https://github.com/FreshRSS/FreshRSS/commits?author=Frenzie), [Web](http://fransdejonge.com/)
 * [Frans de Jonge](https://github.com/Frenzie): [contributions](https://github.com/FreshRSS/FreshRSS/commits?author=Frenzie), [Web](http://fransdejonge.com/)
@@ -34,6 +35,7 @@ People are sorted by name so please keep this order.
 * [Marcus Rohrmoser](https://github.com/mro): [contributions](https://github.com/FreshRSS/FreshRSS/commits?author=mro), [Web](http://mro.name/~me)
 * [Marcus Rohrmoser](https://github.com/mro): [contributions](https://github.com/FreshRSS/FreshRSS/commits?author=mro), [Web](http://mro.name/~me)
 * [Marien Fressinaud](https://github.com/marienfressinaud): [contributions](https://github.com/FreshRSS/FreshRSS/commits?author=marienfressinaud), [Web](https://marienfressinaud.fr/)
 * [Marien Fressinaud](https://github.com/marienfressinaud): [contributions](https://github.com/FreshRSS/FreshRSS/commits?author=marienfressinaud), [Web](https://marienfressinaud.fr/)
 * [Melvyn Laïly](https://github.com/yaurthek): [contributions](https://github.com/FreshRSS/FreshRSS/commits?author=yaurthek), [Web](http://x2a.yt/)
 * [Melvyn Laïly](https://github.com/yaurthek): [contributions](https://github.com/FreshRSS/FreshRSS/commits?author=yaurthek), [Web](http://x2a.yt/)
+* [MSZ](https://github.com/mszkb): [contributions](https://github.com/FreshRSS/FreshRSS/commits?author=mszkb)
 * [Nicolas Elie](https://github.com/nicolaselie): [contributions](https://github.com/FreshRSS/FreshRSS/commits?author=nicolaselie)
 * [Nicolas Elie](https://github.com/nicolaselie): [contributions](https://github.com/FreshRSS/FreshRSS/commits?author=nicolaselie)
 * [Nicolas Lœuillet](https://github.com/nicosomb): [contributions](https://github.com/FreshRSS/documentation/commits?author=nicosomb), [Web](http://www.loeuillet.org/)
 * [Nicolas Lœuillet](https://github.com/nicosomb): [contributions](https://github.com/FreshRSS/documentation/commits?author=nicosomb), [Web](http://www.loeuillet.org/)
 * [plopoyop](https://github.com/plopoyop): [contributions](https://github.com/FreshRSS/FreshRSS/commits?author=plopoyop)
 * [plopoyop](https://github.com/plopoyop): [contributions](https://github.com/FreshRSS/FreshRSS/commits?author=plopoyop)
@@ -47,4 +49,3 @@ People are sorted by name so please keep this order.
 * [Thomas Citharel](https://github.com/tcitworld): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:tomgue), [Web](https://www.tcit.fr/)
 * [Thomas Citharel](https://github.com/tcitworld): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:tomgue), [Web](https://www.tcit.fr/)
 * [tomgue](https://github.com/tomgue): [contributions](https://github.com/FreshRSS/FreshRSS/commits?author=tomgue)
 * [tomgue](https://github.com/tomgue): [contributions](https://github.com/FreshRSS/FreshRSS/commits?author=tomgue)
 * [Wanabo](https://github.com/Wanabo): [contributions](https://github.com/FreshRSS/FreshRSS/commits?author=Wanabo)
 * [Wanabo](https://github.com/Wanabo): [contributions](https://github.com/FreshRSS/FreshRSS/commits?author=Wanabo)
-* [mszkb](https://github.com/mszkb): [contributions](https://github.com/FreshRSS/FreshRSS/commits?author=mszkb)

+ 1 - 0
app/i18n/cz/gen.php

@@ -122,6 +122,7 @@ return array(
 		'it' => 'Italiano',
 		'it' => 'Italiano',
 		'kr' => '한국어',
 		'kr' => '한국어',
 		'nl' => 'Nederlands',
 		'nl' => 'Nederlands',
+		'pt-br' => 'Português (Brasil)',
 		'ru' => 'Русский',
 		'ru' => 'Русский',
 		'tr' => 'Türkçe',
 		'tr' => 'Türkçe',
 		'zh-cn' => '简体中文',
 		'zh-cn' => '简体中文',

+ 1 - 0
app/i18n/de/gen.php

@@ -122,6 +122,7 @@ return array(
 		'it' => 'Italiano',
 		'it' => 'Italiano',
 		'kr' => '한국어',
 		'kr' => '한국어',
 		'nl' => 'Nederlands',
 		'nl' => 'Nederlands',
+		'pt-br' => 'Português (Brasil)',
 		'ru' => 'Русский',
 		'ru' => 'Русский',
 		'tr' => 'Türkçe',
 		'tr' => 'Türkçe',
 		'zh-cn' => '简体中文',
 		'zh-cn' => '简体中文',

+ 1 - 0
app/i18n/en/gen.php

@@ -122,6 +122,7 @@ return array(
 		'it' => 'Italiano',
 		'it' => 'Italiano',
 		'kr' => '한국어',
 		'kr' => '한국어',
 		'nl' => 'Nederlands',
 		'nl' => 'Nederlands',
+		'pt-br' => 'Português (Brasil)',
 		'ru' => 'Русский',
 		'ru' => 'Русский',
 		'tr' => 'Türkçe',
 		'tr' => 'Türkçe',
 		'zh-cn' => '简体中文',
 		'zh-cn' => '简体中文',

+ 1 - 0
app/i18n/es/gen.php

@@ -122,6 +122,7 @@ return array(
 		'it' => 'Italiano',
 		'it' => 'Italiano',
 		'kr' => '한국어',
 		'kr' => '한국어',
 		'nl' => 'Nederlands',
 		'nl' => 'Nederlands',
+		'pt-br' => 'Português (Brasil)',
 		'ru' => 'Русский',
 		'ru' => 'Русский',
 		'tr' => 'Türkçe',
 		'tr' => 'Türkçe',
 		'zh-cn' => '简体中文',
 		'zh-cn' => '简体中文',

+ 1 - 0
app/i18n/fr/gen.php

@@ -122,6 +122,7 @@ return array(
 		'it' => 'Italiano',
 		'it' => 'Italiano',
 		'kr' => '한국어',
 		'kr' => '한국어',
 		'nl' => 'Nederlands',
 		'nl' => 'Nederlands',
+		'pt-br' => 'Português (Brasil)',
 		'ru' => 'Русский',
 		'ru' => 'Русский',
 		'tr' => 'Türkçe',
 		'tr' => 'Türkçe',
 		'zh-cn' => '简体中文',
 		'zh-cn' => '简体中文',

+ 1 - 0
app/i18n/it/gen.php

@@ -122,6 +122,7 @@ return array(
 		'it' => 'Italiano',
 		'it' => 'Italiano',
 		'kr' => '한국어',
 		'kr' => '한국어',
 		'nl' => 'Nederlands',
 		'nl' => 'Nederlands',
+		'pt-br' => 'Português (Brasil)',
 		'ru' => 'Русский',
 		'ru' => 'Русский',
 		'tr' => 'Türkçe',
 		'tr' => 'Türkçe',
 		'zh-cn' => '简体中文',
 		'zh-cn' => '简体中文',

+ 1 - 0
app/i18n/kr/gen.php

@@ -122,6 +122,7 @@ return array(
 		'it' => 'Italiano',
 		'it' => 'Italiano',
 		'kr' => '한국어',
 		'kr' => '한국어',
 		'nl' => 'Nederlands',
 		'nl' => 'Nederlands',
+		'pt-br' => 'Português (Brasil)',
 		'ru' => 'Русский',
 		'ru' => 'Русский',
 		'tr' => 'Türkçe',
 		'tr' => 'Türkçe',
 		'zh-cn' => '简体中文',
 		'zh-cn' => '简体中文',

+ 1 - 0
app/i18n/nl/gen.php

@@ -122,6 +122,7 @@ return array(
 		'it' => 'Italiano',
 		'it' => 'Italiano',
 		'kr' => '한국어',
 		'kr' => '한국어',
 		'nl' => 'Nederlands',
 		'nl' => 'Nederlands',
+		'pt-br' => 'Português (Brasil)',
 		'ru' => 'Русский',
 		'ru' => 'Русский',
 		'tr' => 'Türkçe',
 		'tr' => 'Türkçe',
 		'zh-cn' => '简体中文',
 		'zh-cn' => '简体中文',

+ 181 - 0
app/i18n/pt-br/admin.php

@@ -0,0 +1,181 @@
+<?php
+
+return array(
+	'auth' => array(
+		'allow_anonymous' => 'Permitir a leitura anónima dos artidos pelo usuário padrão (%s)',
+		'allow_anonymous_refresh' => 'Permitir atualização anónima dos artigos',
+		'api_enabled' => 'Permitir acesso à <abbr>API</abbr> <small>(Necessáiro para aplicativos móveis)</small>',
+		'form' => 'Formulário Web(traditional, Necessita de JavaScript)',
+		'http' => 'HTTP (Para usuários avançados com HTTPS)',
+		'none' => 'Nenhum (Perigoso)',
+		'title' => 'Autenticação',
+		'title_reset' => 'Reset autenticação',
+		'token' => 'Token de autenticação ',
+		'token_help' => 'Permitir acesso a saída RSS para o usuário padrão sem autenticação',
+		'type' => 'Método de autenticação',
+		'unsafe_autologin' => 'Permitir login automática insegura usando o seguinte formato: ',
+	),
+	'check_install' => array(
+		'cache' => array(
+			'nok' => 'Verifique as permissões no diretório <em>./data/cache</em>. 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 <em>./data</em>. 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 <em>./data/favicons</em>. 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 (php5-json).',
+			'ok' => 'Você tem a extensão JSON.',
+		),
+		'minz' => array(
+			'nok' => 'Não foi possível encontrar o framework Minz.',
+			'ok' => 'Você tem o framework Minz.',
+		),
+		'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 <em>./data/tokens</em>. 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 <em>./data/users</em>. 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(
+		'disabled' => 'Desabilitado',
+		'empty_list' => 'Não há extensões instaladas',
+		'enabled' => 'Habilitada',
+		'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',
+		'user' => 'Extensões do usuário',
+	),
+	'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',
+		'feed_per_category' => 'Feeds por categoria',
+		'idle' => 'Feeds inativos',
+		'main' => 'Estatísticas principais',
+		'main_stream' => 'Stream principal',
+		'menu' => array(
+			'idle' => 'Feeds inativos',
+			'main' => 'Estatísticas principais',
+			'repartition' => 'Repartição de artigos',
+		),
+		'no_idle' => 'Não há nenhum feed inativo!',
+		'number_entries' => '%d artigos',
+		'percent_of_total' => '%% do total',
+		'repartition' => 'Repartição de artigos',
+		'status_favorites' => 'Favoritos',
+		'status_read' => 'Lido',
+		'status_total' => 'Total',
+		'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',
+		'instance-name' => 'Nome da instância',
+		'max-categories' => 'Limite de categorias por usuário',
+		'max-feeds' => 'Limite de Feeds por usuário',
+		'registration' => array(
+			'help' => '0 significa que não há limite para a conta',
+			'number' => 'Máximo número de contas',
+		),
+	),
+	'update' => array(
+		'_' => 'Atualização do sistema',
+		'apply' => 'Aplicar',
+		'check' => 'Buscar por novas atualizações',
+		'current_version' => 'Sua versão do FreshRSS é %s.',
+		'last' => 'Última verificação: %s',
+		'none' => 'Nenhuma atualização para se aplicar',
+		'title' => 'Sistema de atualização',
+	),
+	'user' => array(
+		'articles_and_size' => '%s artigos (%s)',
+		'create' => 'Criar novo usuário',
+		'language' => 'Idioma',
+		'number' => 'Há %d conta criada',
+		'numbers' => 'Há %d contas criadas',
+		'password_form' => 'Senha<br /><small>(para o login pelo método do formulário)</small>',
+		'password_format' => 'Ao menos 7 caracteres',
+		'title' => 'Gerenciar usuários',
+		'user_list' => 'Lista de usuários',
+		'username' => 'Usuário',
+		'users' => 'Usuários',
+	),
+);

+ 174 - 0
app/i18n/pt-br/conf.php

@@ -0,0 +1,174 @@
+<?php
+
+return array(
+	'archiving' => array(
+		'_' => 'Arquivar',
+		'advanced' => 'Avançado',
+		'delete_after' => 'Remover artigos depois',
+		'help' => 'Mais opções estão disponíveis nas configurações individuais do feed',
+		'keep_history_by_feed' => 'Número mínimo de artigos para deixar no feed',
+		'optimize' => 'Otimizar banco de dados',
+		'optimize_help' => 'Faça ocasionalmente para reduzir o tamanho do banco de dados',
+		'purge_now' => 'Purge agora',
+		'title' => 'Arquivar',
+		'ttl' => 'Não atualize automaticamente mais frequente que',
+	),
+	'display' => array(
+		'_' => 'Exibição',
+		'icon' => array(
+			'bottom_line' => 'Linha inferior',
+			'entry' => 'Ícones de artigos',
+			'publication_date' => 'Data da publicação',
+			'related_tags' => 'Tags relacionadas',
+			'sharing' => 'Compartilhar',
+			'top_line' => 'Linha superior',
+		),
+		'language' => 'Ídioma',
+		'notif_html5' => array(
+			'seconds' => 'segundos (0 significa sem timeout)',
+			'timeout' => 'Notificação em HTML5 de timeout',
+		),
+		'theme' => 'Tema',
+		'title' => 'Exibição',
+		'width' => array(
+			'content' => 'Largura do conteúdo',
+			'large' => 'Largo',
+			'medium' => 'Médio',
+			'no_limit' => 'Sem lmite',
+			'thin' => 'Fino',
+		),
+	),
+	'query' => array(
+		'_' => 'Queries do usuário',
+		'deprecated' => 'Esta não é mais válida. A categoria ou feed relacionado foi deletado.',
+		'filter' => 'Filtro aplicado:',
+		'get_all' => 'Mostrar todos os artigos',
+		'get_category' => 'Visualizar "%s" categoria',
+		'get_favorite' => 'Visualizar artigos favoritos',
+		'get_feed' => 'Visualizar "%s" feed',
+		'no_filter' => 'Sem filtro',
+		'none' => 'Você não criou nenhuma query de usuário ainda.',
+		'number' => 'Query n°%d',
+		'order_asc' => 'Exibir artigos mais antigos primeiro',
+		'order_desc' => 'Exibir artigos mais novos primeiro',
+		'search' => 'Busca por "%s"',
+		'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' => 'Queries de usuários',
+	),
+	'profile' => array(
+		'_' => 'Gerenciamento de perfil',
+		'delete' => array(
+			'_' => 'Remover conta',
+			'warn' => 'Sua conta e todos os dados relacionados serão removidos.',
+		),
+		'password_api' => 'Senha da API<br /><small>(p.s., para aplicativos móveis)</small>',
+		'password_form' => 'Senha<br /><small>(para o método de formulário web)</small>',
+		'password_format' => 'Ao menos 7 caracteres',
+		'title' => 'Perfil',
+	),
+	'reading' => array(
+		'_' => 'Leitura',
+		'after_onread' => 'Depois de "marcar todos como lido",',
+		'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',
+		'mark_updated_article_unread' => 'Marcar artigos atualizados como não lidos',
+		'confirm_enabled' => 'Exibir uma caixa de diálogo de confirmação quando acionar "marcar todos como lido"',
+		'display_articles_unfolded' => 'Mostrar aritogs abertos por padrão',
+		'display_categories_unfolded' => 'Mostrar artigos fechados por padrã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',
+		'sides_close_article' => 'Clicando fora da área do texto do artigo fecha o mesmo',
+		'jump_next' => 'Vá para o próximo irmão não lido (feed ou categoria)',
+		'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',
+			'scroll' => 'enquando scrolling',
+			'upon_reception' => 'ao receber um artigo',
+			'when' => 'Marcar artigo como lido…',
+		),
+		'show' => array(
+			'_' => 'Artigos para exibir',
+			'adaptive' => 'Ajustar visualização',
+			'all_articles' => 'Exibir todos os artigos',
+			'unread' => 'Exibir apenas não lido',
+		),
+		'sort' => array(
+			'_' => 'Ordem de visualização',
+			'newer_first' => 'Novos primeiro',
+			'older_first' => 'Antigos primeiro',
+		),
+		'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',
+		'blogotext' => 'Blogotext',
+		'diaspora' => 'Diaspora*',
+		'email' => 'Email',
+		'facebook' => 'Facebook',
+		'g+' => 'Google+',
+		'more_information' => 'Mais informação',
+		'print' => 'Imprimir',
+		'shaarli' => 'Shaarli',
+		'share_name' => 'Nome de visualização para compartilhar',
+		'share_url' => 'URL utilizada para compartilhar',
+		'title' => 'Compartilhando',
+		'twitter' => 'Twitter',
+		'wallabag' => 'wallabag',
+	),
+	'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_dropdown' => 'Fechar menus',
+		'collapse_article' => 'Fechar',
+		'first_article' => 'Ir para o primeiro artigo',
+		'focus_search' => 'Acessar a caixa de busca',
+		'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_read' => 'Marcar como lido',
+		'mark_favorite' => 'Marcar como favorito',
+		'navigation' => 'Navegação',
+		'navigation_help' => 'Com o modificador "Shift", atalhos de navegação aplicam aos feeds.<br/>Com o "Alt" modificador, atalhos de navegação aplicam as categorias.',
+		'next_article' => 'Pule para o próximo artigo',
+		'other_action' => 'Outras ações',
+		'previous_article' => 'Pule para o artigo anterior',
+		'see_on_website' => 'Visualize o site original',
+		'shift_for_all_read' => '+ <code>shift</code> para marcar todos os artigos como lido',
+		'title' => 'Atalhos',
+		'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.',
+	),
+	'user' => array(
+		'articles_and_size' => '%s artigos (%s)',
+		'current' => 'Usuário atual',
+		'is_admin' => 'é administrador',
+		'users' => 'Usuários',
+	),
+);

+ 109 - 0
app/i18n/pt-br/feedback.php

@@ -0,0 +1,109 @@
+<?php
+
+return array(
+	'admin' => array(
+		'optimization_complete' => 'Otimização Completa',
+	),
+	'access' => 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',
+	),
+	'auth' => array(
+		'form' => array(
+			'not_set' => 'Um problema ocorreu durante o sistema de configuração para autenticação. Por favor tente mais tarde.',
+			'set' => 'Formulário é agora seu sistema de autenticação padrão.',
+		),
+		'login' => array(
+			'invalid' => 'Login está incorreto',
+			'success' => 'Vocé está conectado',
+		),
+		'logout' => array(
+			'success' => 'Você está desconectado',
+		),
+		'no_password_set' => 'A senha do administrador não foi definida. Este recurso não está disponível.',
+	),
+	'conf' => array(
+		'error' => 'Um erro ocorreu durante o salvamento das configurações',
+		'query_created' => 'Query "%s" foi criada.',
+		'shortcuts_updated' => 'Atalhos foram criados',
+		'updated' => 'Configuração foi atualizada',
+	),
+	'extensions' => array(
+		'already_enabled' => '%s já está habilitado',
+		'disable' => array(
+			'ko' => '%s não pode ser desabilitado. <a href="%s">verifique os logs do FressRSS</a> para detalhes.',
+			'ok' => '%s agora está desabilitado',
+		),
+		'enable' => array(
+			'ko' => '%s não pode ser habilitado. <a href="%s">verifique os logs do FressRSS</a> para detalhes.',
+			'ok' => '%s agora está habilitado',
+		),
+		'no_access' => 'Você não tem acesso ao %s',
+		'not_enabled' => '%s não está habilitado',
+		'not_found' => '%s não existe',
+	),
+	'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',
+		'feeds_imported_with_errors' => 'Seus feeds foram importados, mas alguns erros ocorreram',
+		'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.',
+	),
+	'sub' => array(
+		'actualize' => 'Atualizando',
+		'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' => '<em>%s</em> foi atualizado',
+			'actualizeds' => 'RSS feeds foi atualizado',
+			'added' => 'RSS feed <em>%s</em> foi adicionado',
+			'already_subscribed' => 'Você já está inscrito no <em>%s</em>',
+			'deleted' => 'o Feed foi deletado',
+			'error' => 'O feed não pode ser atualizado',
+			'internal_problem' => 'O RSS feed não pôde ser adicionado. <a href="%s">Verifique os FressRSS logs</a> para detalhes.',
+			'invalid_url' => 'URL <em>%s</em> é inválida',
+			'marked_read' => 'Feeds foram marcados como lidos',
+			'n_actualized' => '%d feeds foram atualizados',
+			'n_entries_deleted' => '%d artigos foram deletados',
+			'no_refresh' => 'Não há feed para atualizar…',
+			'not_added' => '<em>%s</em> não pode ser atualizado',
+			'over_max' => 'Você atingiu seu limite de feeds (%d)',
+			'updated' => 'Feed foram atualizados',
+		),
+		'purge_completed' => 'Limpeza completa (%d artigos deletados)',
+	),
+	'update' => array(
+		'can_apply' => 'FreshRSS será atualizado para a <strong>versão %s</strong>.',
+		'error' => 'O processo de atualização encontrou um erro: %s',
+		'file_is_nok' => 'Nova <strong>versão %s</strong> disponível, mas verifique as permissões no diretório <em>%s</em>. 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',
+		),
+	),
+	'profile' => array(
+		'error' => 'Your profile cannot be modified',
+		'updated' => 'Your profile has been modified',
+	),
+);

+ 186 - 0
app/i18n/pt-br/gen.php

@@ -0,0 +1,186 @@
+<?php
+
+return array(
+	'action' => array(
+		'actualize' => 'Atualizar',
+		'back_to_rss_feeds' => '← Volte para o seu feeds RSS',
+		'cancel' => 'Cancelar',
+		'create' => 'Criar',
+		'disable' => 'Desabilitar',
+		'empty' => 'Vazio',
+		'enable' => 'Habilitar',
+		'export' => 'Exportar',
+		'filter' => 'Filtrar',
+		'import' => 'Importar',
+		'manage' => 'Gerenciar',
+		'mark_read' => 'Marcar como lido',
+		'mark_favorite' => 'Marcar como favorito',
+		'remove' => 'Remover',
+		'see_website' => 'Ver o site',
+		'submit' => 'Enviar',
+		'truncate' => 'Deletar todos os artigos',
+	),
+	'auth' => array(
+		'email' => 'Endereço de e-mail',
+		'keep_logged_in' => 'Mantenha logado por <small>(%s days)</small>',
+		'login' => 'Login',
+		'logout' => 'Logout',
+		'password' => array(
+			'_' => 'Senha',
+			'format' => '<small>Ao menos 7 caracteres</small>',
+		),
+		'registration' => array(
+			'_' => 'Nova conta',
+			'ask' => 'Criar novoa conta?',
+			'title' => 'Criação de conta',
+		),
+		'reset' => 'Reset autenticação',
+		'username' => array(
+			'_' => 'Usuário',
+			'admin' => 'Usuário administrador',
+			'format' => '<small>máximo 16 caracteres alphanumericos</small>',
+		),
+	),
+	'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_3_month' => 'Últimos três meses',
+		'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',
+		'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',
+	),
+	'freshrss' => array(
+		'_' => 'FreshRSS',
+		'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!',
+		'feedback' => array(
+			'body_new_articles' => 'Há %%d novos artigos para ler no FreshRSS.',
+			'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!',
+		),
+		'new_article' => 'Há novos artigos disponíveis, clique para atualizar a página.',
+		'should_be_activated' => 'JavaScript precisa estar ativo',
+	),
+	'lang' => array(
+		'cz' => 'Čeština',
+		'de' => 'Deutsch',
+		'en' => 'English',
+		'fr' => 'Français',
+		'it' => 'Italiano',
+		'nl' => 'Nederlands',
+		'pt-br' => 'Português (Brasil)',
+		'ru' => 'Русский',
+		'tr' => 'Türkçe',
+		'zh-cn' => '简体中文'
+	),
+	'menu' => array(
+		'about' => 'Sobre',
+		'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',
+		'queries' => 'Queries de usuário',
+		'reading' => 'Leitura',
+		'search' => 'Procurar por palavras ou #tags',
+		'sharing' => 'Compartilhamento',
+		'shortcuts' => 'Atalhos',
+		'stats' => 'Estatísticas',
+		'system' => 'Configuração do sistema',
+		'update' => 'Atualização',
+		'user_management' => 'Gerenciamento de usuários',
+		'user_profile' => 'Perfil',
+	),
+	'pagination' => array(
+		'first' => 'Primeiro',
+		'last' => 'Último',
+		'load_more' => 'Carregar mais artigos',
+		'mark_all_read' => 'Marcar todos como lidos',
+		'next' => 'Próximo',
+		'nothing_to_load' => 'Não há mais artigos',
+		'previous' => 'Anterior',
+	),
+	'share' => array(
+		'blogotext' => 'Blogotext',
+		'diaspora' => 'Diaspora*',
+		'email' => 'Email',
+		'facebook' => 'Facebook',
+		'g+' => 'Google+',
+		'movim' => 'Movim',
+		'print' => 'Imprimir',
+		'shaarli' => 'Shaarli',
+		'twitter' => 'Twitter',
+		'wallabag' => 'wallabag v1',
+		'wallabagv2' => 'wallabag v2',
+		'jdh' => 'Journal du hacker',
+		'Known' => 'Known based sites',
+		'gnusocial' => 'GNU social',
+	),
+	'short' => array(
+		'attention' => 'Atencão!',
+		'blank_to_disable' => 'Deixe em branco para desativar',
+		'by_author' => 'Por <em>%s</em>',
+		'by_default' => 'Por padrão',
+		'damn' => 'Buumm!',
+		'default_category' => 'Sem categoria',
+		'no' => 'Não',
+		'not_applicable' => 'Não disponível',
+		'ok' => 'Ok!',
+		'or' => 'ou',
+		'yes' => 'Sim',
+	),
+);

+ 61 - 0
app/i18n/pt-br/index.php

@@ -0,0 +1,61 @@
+<?php
+
+return array(
+	'about' => array(
+		'_' => 'Sobre',
+		'agpl3' => '<a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL 3</a>',
+		'bugs_reports' => 'Reportar Bugs',
+		'credits' => 'Créditos',
+		'credits_content' => 'Alguns elementos de design vieram do <a href="http://twitter.github.io/bootstrap/">Bootstrap</a> Embora FreshRRS não utiliza este framework. <a href="https://git.gnome.org/browse/gnome-icon-theme-symbolic">Ícones</a> vieram do <a href="https://www.gnome.org/">GNOME project</a>. <em>Open Sans</em> font police foi criada por <a href="https://fonts.google.com/specimen/Open+Sans">Steve Matteson</a>. FreshRSS é baseado no <a href="https://github.com/marienfressinaud/MINZ">Minz</a>, um framework PHP.',
+		'freshrss_description' => 'FreshRSS é um RSS feeds aggregator para um host próprio como o <a href="http://tontof.net/kriss/feed/">Kriss Feed</a> ou <a href="http://projet.idleman.fr/leed/">Leed</a>. É leve e fácil de utilizar enquanto é uma ferramenta poderosa e configurável. ',
+		'github' => '<a href="https://github.com/FreshRSS/FreshRSS/issues">no Github</a>',
+		'license' => 'licença',
+		'project_website' => 'Site do projeto',
+		'title' => 'Sobre',
+		'version' => 'Versão',
+		'website' => 'Site',
+	),
+	'feed' => array(
+		'add' => 'Você pode adicionar alguns feeds.',
+		'empty' => 'Não há nenhum artigo para mostrar.',
+		'rss_of' => 'RSS feed do %s',
+		'title' => 'Seus RSS feeds',
+		'title_global' => 'Visualização Global',
+		'title_fav' => 'Seus favoritos',
+	),
+	'log' => array(
+		'_' => 'Logs',
+		'clear' => 'Limpar logs',
+		'empty' => 'Arquivo de log está vazio',
+		'title' => 'Logs',
+	),
+	'menu' => array(
+		'about' => 'Sobre o FreshRSS',
+		'add_query' => 'Adicionar uma query',
+		'before_one_day' => 'Antes de um dia',
+		'before_one_week' => 'Antes de uma semana',
+		'favorites' => 'Favoritos (%s)',
+		'global_view' => 'Visualização global',
+		'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',
+		'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' => 'RSS feed',
+		'search_short' => 'Buscar',
+		'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',
+	),
+);

+ 119 - 0
app/i18n/pt-br/install.php

@@ -0,0 +1,119 @@
+<?php
+
+return array(
+	'action' => 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',
+	),
+	'auth' => array(
+		'form' => 'Formulário web(tradicional, necessita JavaScript)',
+		'http' => 'HTTP (Para usuários avançados com HTTPS)',
+		'none' => 'None (perigoso)',
+		'password_form' => 'Senha<br /><small>(Para o método do login pelo formulário)</small>',
+		'password_format' => 'Ao menos 7 caracteres',
+		'type' => 'Método de autenticação',
+	),
+	'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',
+		'prefix' => 'Prefixo da tabela',
+		'password' => 'Senha do banco de dados',
+		'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 <em>./data/cache</em>. 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 <em>./data</em>. 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 <em>./data/favicons</em>. 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.',
+		),
+		'http_referer' => array(
+			'nok' => 'Por favor verifique se você não está alterando seu HTTP REFERER.',
+			'ok' => 'Seu HTTP REFERER é conhecido e corresponde ao seu servidor.',
+		),
+		'json' => array(
+			'nok' => 'Não foi possível encontrar JSON (php5-json).',
+			'ok' => 'Você tem a extensão JSON.',
+		),
+		'minz' => array(
+			'nok' => 'Não foi possível encontrar o framework Minz.',
+			'ok' => 'Você tem o framework Minz.',
+		),
+		'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.',
+		),
+		'users' => array(
+			'nok' => 'Verifiquei as permissões no diretório <em>./data/users</em>. 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' => 'Usuário do usuário padrão <small>(máximo de 16 caracteres alphanumericos)</small>',
+	'delete_articles_after' => 'Remover artigos depois',
+	'fix_errors_before' => 'Por favor solucione os erros antes de ir para o próximo passo.',
+	'javascript_is_better' => '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' => 'Escolhar o idioma para o FreshRSS',
+		'defined' => 'Idioma foi definido.',
+	),
+	'not_deleted' => 'Algo deu errado; você deve deletar o arquivo <em>%s</em> manualmente.',
+	'ok' => 'O processo de instalação foi um sucesso.',
+	'step' => 'passo %d',
+	'steps' => 'Passos',
+	'title' => 'Instalação · FreshRSS',
+	'this_is_the_end' => 'Este é o final',
+);

+ 62 - 0
app/i18n/pt-br/sub.php

@@ -0,0 +1,62 @@
+<?php
+
+return array(
+	'category' => array(
+		'_' => 'Categoria',
+		'add' => 'Adicionar uma categoria',
+		'empty' => 'Categoria vazia',
+		'new' => 'Nova categoria',
+	),
+	'feed' => array(
+		'add' => 'Adicionar um RSS feed',
+		'advanced' => 'Avançado',
+		'archiving' => 'Arquivar',
+		'auth' => array(
+			'configuration' => 'Login',
+			'help' => 'Permite acesso a feeds RSS protegidos por HTTP',
+			'http' => 'Autenticação HTTP',
+			'password' => 'Senha HTTP',
+			'username' => 'Usuário HTTP',
+		),
+		'css_help' => 'Retorna RSS feeds truncados (atenção, requer mais tempo!)',
+		'css_path' => 'Caminho do CSS do artigo no site original',
+		'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 e atualize-o.',
+		'in_main_stream' => 'Mostrar na tela principal',
+		'informations' => 'Informações',
+		'keep_history' => 'Número mínimo de artigos para manter',
+		'moved_category_deleted' => 'Quando você deleta uma categoria, seus feeds são automaticamente classificados como <em>%s</em>.',
+		'no_selected' => 'Nenhum feed selecionado.',
+		'number_entries' => '%d artigos',
+		'stats' => 'Estatísticas',
+		'think_to_add' => 'Você deve adicionar alguns feeds.',
+		'title' => 'Título',
+		'title_add' => 'Adicionar o RSS feed',
+		'ttl' => 'Não atualize automáticamente mais que',
+		'url' => 'Feed URL',
+		'validator' => 'Verifique a validade do feed',
+		'website' => 'URL do site',
+		'pubsubhubbub' => 'Notificação instantânea com PubSubHubbub',
+	),
+	'import_export' => array(
+		'export' => 'Exportar',
+		'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<br />(OPML, JSON or ZIP)',
+		'file_to_import_no_zip' => 'Arquivo para importar<br />(OPML or JSON)',
+		'import' => 'Importar',
+		'starred_list' => 'Listar artigos favoritos',
+		'title' => 'Importar / exportar',
+	),
+	'menu' => array(
+		'bookmark' => 'Inscreva-se (FreshRSS favoritos)',
+		'import_export' => 'Importar / exportar',
+		'subscription_management' => 'Gerenciamento de inscrições',
+	),
+	'title' => array(
+		'_' => 'Gerenciamento de inscrições',
+		'feed_management' => 'Gerenciamento dos RSS feeds',
+	),
+);

+ 1 - 0
app/i18n/ru/gen.php

@@ -122,6 +122,7 @@ return array(
 		'it' => 'Italiano',
 		'it' => 'Italiano',
 		'kr' => '한국어',
 		'kr' => '한국어',
 		'nl' => 'Nederlands',
 		'nl' => 'Nederlands',
+		'pt-br' => 'Português (Brasil)',
 		'ru' => 'Русский',
 		'ru' => 'Русский',
 		'tr' => 'Türkçe',
 		'tr' => 'Türkçe',
 		'zh-cn' => '简体中文',
 		'zh-cn' => '简体中文',

+ 1 - 0
app/i18n/tr/gen.php

@@ -122,6 +122,7 @@ return array(
 		'it' => 'Italiano',
 		'it' => 'Italiano',
 		'kr' => '한국어',
 		'kr' => '한국어',
 		'nl' => 'Nederlands',
 		'nl' => 'Nederlands',
+		'pt-br' => 'Português (Brasil)',
 		'ru' => 'Русский',
 		'ru' => 'Русский',
 		'tr' => 'Türkçe',
 		'tr' => 'Türkçe',
 		'zh-cn' => '简体中文',
 		'zh-cn' => '简体中文',

+ 1 - 0
app/i18n/zh-cn/gen.php

@@ -122,6 +122,7 @@ return array(
 		'it' => 'Italiano',
 		'it' => 'Italiano',
 		'kr' => '한국어',
 		'kr' => '한국어',
 		'nl' => 'Nederlands',
 		'nl' => 'Nederlands',
+		'pt-br' => 'Português (Brasil)',
 		'ru' => 'Русский',
 		'ru' => 'Русский',
 		'tr' => 'Türkçe',
 		'tr' => 'Türkçe',
 		'zh-cn' => '简体中文',
 		'zh-cn' => '简体中文',