diff --git a/app/views/mailer/attachments_add_pt.rhtml b/app/views/mailer/attachments_add_pt.rhtml new file mode 100644 index 000000000..81e2974c1 --- /dev/null +++ b/app/views/mailer/attachments_add_pt.rhtml @@ -0,0 +1,6 @@ +<%= @added_to %> +<%= @attachments.size %> files(s) added. +<% @attachments.each do |attachment | %> +- <%= attachment.filename %><% end %> + +<%= @url %> \ No newline at end of file diff --git a/app/views/mailer/document_add_pt.rhtml b/app/views/mailer/document_add_pt.rhtml new file mode 100644 index 000000000..67648de15 --- /dev/null +++ b/app/views/mailer/document_add_pt.rhtml @@ -0,0 +1,4 @@ +A document has been added to <%= @document.project.name %> (<%= @document.category.name %>): +<%= l(:field_title) %>: <%= @document.title %> + +http://<%= Setting.host_name %>/documents/show/<%= @document.id %> \ No newline at end of file diff --git a/app/views/mailer/issue_add_pt.rhtml b/app/views/mailer/issue_add_pt.rhtml new file mode 100644 index 000000000..823de2cef --- /dev/null +++ b/app/views/mailer/issue_add_pt.rhtml @@ -0,0 +1,3 @@ +Issue #<%= @issue.id %> has been reported. +---------------------------------------- +<%= render :file => "_issue", :use_full_path => true, :locals => { :issue => @issue } %> \ No newline at end of file diff --git a/app/views/mailer/issue_edit_pt.rhtml b/app/views/mailer/issue_edit_pt.rhtml new file mode 100644 index 000000000..7a9ca1634 --- /dev/null +++ b/app/views/mailer/issue_edit_pt.rhtml @@ -0,0 +1,8 @@ +Issue #<%= @issue.id %> has been updated. +<%= @journal.user.name %> +<% for detail in @journal.details %> +<%= show_detail(detail, true) %> +<% end %> +<%= @journal.notes if @journal.notes? %> +---------------------------------------- +<%= render :file => "_issue", :use_full_path => true, :locals => { :issue => @issue } %> \ No newline at end of file diff --git a/app/views/mailer/lost_password_pt.rhtml b/app/views/mailer/lost_password_pt.rhtml new file mode 100644 index 000000000..332ddeb0b --- /dev/null +++ b/app/views/mailer/lost_password_pt.rhtml @@ -0,0 +1,3 @@ +To change your password, use the following link: + +http://<%= Setting.host_name %>/account/lost_password?token=<%= @token.value %> \ No newline at end of file diff --git a/app/views/mailer/register_pt.rhtml b/app/views/mailer/register_pt.rhtml new file mode 100644 index 000000000..64477febc --- /dev/null +++ b/app/views/mailer/register_pt.rhtml @@ -0,0 +1,3 @@ +To activate your redMine account, use the following link: + +http://<%= Setting.host_name %>/account/register?token=<%= @token.value %> \ No newline at end of file diff --git a/lang/pt.yml b/lang/pt.yml new file mode 100644 index 000000000..e107c2b39 --- /dev/null +++ b/lang/pt.yml @@ -0,0 +1,435 @@ +_gloc_rule_default: '|n| n==1 ? "" : "_plural" ' + +actionview_datehelper_select_day_prefix: +actionview_datehelper_select_month_names: Janeiro,Fevereiro,Marco,Abrill,Maio,Junho,Julho,Agosto,Setembro,Outubro,Novembro,Dezembro +actionview_datehelper_select_month_names_abbr: Jan,Fev,Mar,Abr,Mai,Jun,Jul,Ago,Set,Out,Nov,Dez +actionview_datehelper_select_month_prefix: +actionview_datehelper_select_year_prefix: +actionview_datehelper_time_in_words_day: 1 dia +actionview_datehelper_time_in_words_day_plural: %d dias +actionview_datehelper_time_in_words_hour_about: sobre uma hora +actionview_datehelper_time_in_words_hour_about_plural: sobra %d horas +actionview_datehelper_time_in_words_hour_about_single: sobre uma hora +actionview_datehelper_time_in_words_minute: 1 minuto +actionview_datehelper_time_in_words_minute_half: meio minuto +actionview_datehelper_time_in_words_minute_less_than: menos que um minuto +actionview_datehelper_time_in_words_minute_plural: %d minutos +actionview_datehelper_time_in_words_minute_single: 1 minuto +actionview_datehelper_time_in_words_second_less_than: menos que um segundo +actionview_datehelper_time_in_words_second_less_than_plural: menos que %d segundos +actionview_instancetag_blank_option: Selecione + +activerecord_error_inclusion: nao esta incluido na lista +activerecord_error_exclusion: esta reservado +activerecord_error_invalid: e invalido +activerecord_error_confirmation: confirmacao nao confere +activerecord_error_accepted: deve ser aceito +activerecord_error_empty: nao pode ser vazio +activerecord_error_blank: nao pode estar em branco +activerecord_error_too_long: e muito longo +activerecord_error_too_short: e muito comprido +activerecord_error_wrong_length: esta com o comprimento errado +activerecord_error_taken: ja esta examinado +activerecord_error_not_a_number: nao e um numero +activerecord_error_not_a_date: nao e uma data valida +activerecord_error_greater_than_start_date: deve ser maior que a data inicial + +general_fmt_age: %d yr +general_fmt_age_plural: %d yrs +general_fmt_date: %%m/%%d/%%Y +general_fmt_datetime: %%m/%%d/%%Y %%I:%%M %%p +general_fmt_datetime_short: %%b %%d, %%I:%%M %%p +general_fmt_time: %%I:%%M %%p +general_text_No: 'Nao' +general_text_Yes: 'Sim' +general_text_no: 'nao' +general_text_yes: 'sim' +general_lang_pt: 'Portugues' +general_csv_separator: ',' +general_csv_encoding: ISO-8859-1 +general_pdf_encoding: ISO-8859-1 +general_day_names: Segunda,Terca,Quarta,Quinta,Sexta,Sabado,Domingo + +notice_account_updated: Conta foi alterada com sucesso. +notice_account_invalid_creditentials: Usuario ou senha invalido. +notice_account_password_updated: Senha foi alterada com sucesso. +notice_account_wrong_password: Senha errada. +notice_account_register_done: Conta foi criada com sucesso. +notice_account_unknown_email: Usuario desconhecido. +notice_can_t_change_password: Esta conta usa autenticacao externa. E impossivel trocar a senha. +notice_account_lost_email_sent: Um email com instrucoes para escolher uma nova senha foi enviado para voce. +notice_account_activated: Sua conta foi ativada. Voce pode logar agora +notice_successful_create: Criado com sucesso. +notice_successful_update: Alterado com sucesso. +notice_successful_delete: Apagado com sucesso. +notice_successful_connection: Conectado com sucesso. +notice_file_not_found: A pagina que voce esta tentando acessar nao existe ou foi excluida. +notice_locking_conflict: Os dados foram atualizados por um outro usuario. +notice_scm_error: A entrada e/ou a revisao nao existem no repositorio. + +mail_subject_lost_password: Sua senha do redMine. +mail_subject_register: Ativacao de conta do redMine. + +gui_validation_error: 1 erro +gui_validation_error_plural: %d erros + +field_name: Nome +field_description: Descricao +field_summary: Sumario +field_is_required: Obrigatorio +field_firstname: Primeiro nome +field_lastname: Ultimo nome +field_mail: Email +field_filename: Arquivo +field_filesize: Tamanho +field_downloads: Downloads +field_author: Autor +field_created_on: Criado +field_updated_on: Alterado +field_field_format: Formato +field_is_for_all: Para todos os projetos +field_possible_values: Possiveis valores +field_regexp: Expressao regular +field_min_length: Tamanho minimo +field_max_length: Tamanho maximo +field_value: Valor +field_category: Categoria +field_title: Titulo +field_project: Projeto +field_issue: Tarefa +field_status: Status +field_notes: Notas +field_is_closed: Tarefa fechada +field_is_default: Status padrao +field_html_color: Cor +field_tracker: Tipo +field_subject: Titulo +field_due_date: Data devida +field_assigned_to: Atribuido para +field_priority: Prioridade +field_fixed_version: Versao corrigida +field_user: Usuario +field_role: Regra +field_homepage: Pagina inicial +field_is_public: Publico +field_parent: Sub-projeto de +field_is_in_chlog: Tarefas mostradas no changelog +field_is_in_roadmap: Tarefas mostradas no roadmap +field_login: Login +field_mail_notification: Notificacoes por email +field_admin: Administrador +field_last_login_on: Ultima conexao +field_language: Lingua +field_effective_date: Data +field_password: Senha +field_new_password: Nova senha +field_password_confirmation: Confirmacao +field_version: Versao +field_type: Tipo +field_host: Servidor +field_port: Porta +field_account: Conta +field_base_dn: Base DN +field_attr_login: Atributo login +field_attr_firstname: Atributo primeiro nome +field_attr_lastname: Atributo ultimo nome +field_attr_mail: Atributo email +field_onthefly: Criacao de usuario on-the-fly +field_start_date: Inicio +field_done_ratio: %% Terminado +field_auth_source: Modo de autenticacao +field_hide_mail: Esconder meu email +field_comment: Comentario +field_url: URL +field_start_page: Pagina inicial +field_subproject: Sub-projeto +field_hours: Horas +field_activity: Atividade +field_spent_on: Data +field_identifier: Identificador +field_is_filter: Used as a filter + +setting_app_title: Titulo da aplicacao +setting_app_subtitle: Sub-titulo da aplicacao +setting_welcome_text: Texto de boa-vinda +setting_default_language: Lingua padrao +setting_login_required: Autenticacao obrigatoria +setting_self_registration: Registro de si mesmo permitido +setting_attachment_max_size: Tamanho maximo do anexo +setting_issues_export_limit: Limite de exportacao das tarefas +setting_mail_from: Email enviado de +setting_host_name: Servidor +setting_text_formatting: Formato do texto +setting_wiki_compression: Compactacao do historio do Wiki +setting_feeds_limit: Limite do Feed +setting_autofetch_changesets: Autofetch SVN commits +setting_sys_api_enabled: Ativa WS para gerenciamento do repositorio + +label_user: Usuario +label_user_plural: Usuarios +label_user_new: Novo usuario +label_project: Projeto +label_project_new: Novo projeto +label_project_plural: Projetos +label_project_latest: Ultimos projetos +label_issue: Tarefa +label_issue_new: Nova tarefa +label_issue_plural: Tarefas +label_issue_view_all: Ver todas as tarefas +label_document: Documento +label_document_new: Novo documento +label_document_plural: Documentos +label_role: Regra +label_role_plural: Regras +label_role_new: Nova regra +label_role_and_permissions: Regras e permissoes +label_member: Membro +label_member_new: Novo membro +label_member_plural: Membros +label_tracker: Tipo +label_tracker_plural: Tipos +label_tracker_new: Novo tipo +label_workflow: Workflow +label_issue_status: Status da tarefa +label_issue_status_plural: Status das tarefas +label_issue_status_new: Novo status +label_issue_category: Categoria de tarefa +label_issue_category_plural: Categorias de tarefa +label_issue_category_new: Nova categoria +label_custom_field: Campo personalizado +label_custom_field_plural: Campos personalizado +label_custom_field_new: Novo campo personalizado +label_enumerations: Enumeracao +label_enumeration_new: Novo valor +label_information: Informacao +label_information_plural: Informacoes +label_please_login: Efetue login +label_register: Registre-se +label_password_lost: Perdi a senha +label_home: Pagina inicial +label_my_page: Minha pagina +label_my_account: Minha conta +label_my_projects: Meus projetos +label_administration: Administracao +label_login: Login +label_logout: Logout +label_help: Ajuda +label_reported_issues: Tarefas reportadas +label_assigned_to_me_issues: Tarefas atribuidas a mim +label_last_login: Utima conexao +label_last_updates: Ultima alteracao +label_last_updates_plural: %d Ultimas alteracoes +label_registered_on: Registrado em +label_activity: Atividade +label_new: Novo +label_logged_as: Logado como +label_environment: Ambiente +label_authentication: Autenticacao +label_auth_source: Modo de autenticacao +label_auth_source_new: Novo modo de autenticacao +label_auth_source_plural: Modos de autenticacao +label_subproject_plural: Sub-projetos +label_min_max_length: Tamanho min-max +label_list: Lista +label_date: Data +label_integer: Inteiro +label_boolean: Boleano +label_string: Texto +label_text: Texto longo +label_attribute: Atributo +label_attribute_plural: Atributos +label_download: %d Download +label_download_plural: %d Downloads +label_no_data: Sem dados para mostrar +label_change_status: Mudar status +label_history: Historico +label_attachment: Arquivo +label_attachment_new: Novo arquivo +label_attachment_delete: Apagar arquivo +label_attachment_plural: Arquivos +label_report: Relatorio +label_report_plural: Relatorio +label_news: Noticias +label_news_new: Adicionar noticias +label_news_plural: Noticias +label_news_latest: Ultimas noticias +label_news_view_all: Ver todas as noticias +label_change_log: Change log +label_settings: Ajustes +label_overview: Visao geral +label_version: Versao +label_version_new: Nova versao +label_version_plural: Versoes +label_confirmation: Confirmacao +label_export_to: Exportar para +label_read: Ler... +label_public_projects: Projetos publicos +label_open_issues: Aberto +label_open_issues_plural: Abertos +label_closed_issues: Fechado +label_closed_issues_plural: Fechados +label_total: Total +label_permissions: Permissoes +label_current_status: Status atual +label_new_statuses_allowed: Novo status permitido +label_all: todos +label_none: nenhum +label_next: Proximo +label_previous: Anterior +label_used_by: Usado por +label_details: Detalhes... +label_add_note: Adicionar nota +label_per_page: Por pagina +label_calendar: Calendario +label_months_from: Meses de +label_gantt: Gantt +label_internal: Interno +label_last_changes: utlimas %d mudancas +label_change_view_all: Mostrar todas as mudancas +label_personalize_page: Personalizar esta pagina +label_comment: Comentario +label_comment_plural: Comentarios +label_comment_add: Adicionar comentario +label_comment_added: Comentario adicionado +label_comment_delete: Apagar comentario +label_query: Consulta personalizada +label_query_plural: Consultas personalizadas +label_query_new: Nova consulta +label_filter_add: Adicionar filtro +label_filter_plural: Filtros +label_equals: e +label_not_equals: nao e +label_in_less_than: e maior que +label_in_more_than: e menor que +label_in: em +label_today: hoje +label_less_than_ago: faz menos de +label_more_than_ago: faz mais de +label_ago: dias atras +label_contains: contem +label_not_contains: nao contem +label_day_plural: dias +label_repository: SVN Repository +label_browse: Browse +label_modification: %d change +label_modification_plural: %d changes +label_revision: Revision +label_revision_plural: Revisions +label_added: added +label_modified: modified +label_deleted: deleted +label_latest_revision: Latest revision +label_latest_revision_plural: Latest revisions +label_view_revisions: View revisions +label_max_size: Maximum size +label_on: 'em' +label_sort_highest: Mover para o inicio +label_sort_higher: Mover para cima +label_sort_lower: Mover para baixo +label_sort_lowest: Mover para o fim +label_roadmap: Roadmap +label_roadmap_due_in: Due in +label_roadmap_no_issues: Sem tarefas para essa versao +label_search: Busca +label_result: %d resultado +label_result_plural: %d resultados +label_all_words: Todas as palavras +label_wiki: Wiki +label_wiki_edit: Wiki edit +label_wiki_edit_plural: Wiki edits +label_page_index: Index +label_current_version: Versao atual +label_preview: Previa +label_feed_plural: Feeds +label_changes_details: Detalhes de todas as mudancas +label_issue_tracking: Tarefas +label_spent_time: Tempo gasto +label_f_hour: %.2f hora +label_f_hour_plural: %.2f horas +label_time_tracking: Tempo trabalhado +label_change_plural: Mudancas +label_statistics: Estatisticas +label_commits_per_month: Commits por mes +label_commits_per_author: Commits por autor +label_view_diff: Ver diferencas +label_diff_inline: inline +label_diff_side_by_side: side by side +label_options: Opcoes +label_copy_workflow_from: Copiar workflow de +label_permissions_report: Relatorio de permissoes +label_watched_issues: Watched issues + +button_login: Login +button_submit: Enviar +button_save: Salvar +button_check_all: Marcar todos +button_uncheck_all: Desmarcar todos +button_delete: Apagar +button_create: Criar +button_test: Testar +button_edit: Editar +button_add: Adicionar +button_change: Mudar +button_apply: Aplicar +button_clear: Limpar +button_lock: Bloquear +button_unlock: Desbloquear +button_download: Download +button_list: Listar +button_view: Ver +button_move: Mover +button_back: Voltar +button_cancel: Cancelar +button_activate: Ativar +button_sort: Ordenar +button_log_time: Tempo de trabalho +button_rollback: Voltar para esta versao +button_watch: Watch +button_unwatch: Unwatch + +status_active: ativo +status_registered: registrado +status_locked: bloqueado + +text_select_mail_notifications: Selecionar acoes para ser enviado uma notificacao por email +text_regexp_info: eg. ^[A-Z0-9]+$ +text_min_max_length_info: 0 siginifica sem restricao +text_project_destroy_confirmation: Voce tem certeza que deseja deletar este projeto e todas os dados relacionados? +text_workflow_edit: Selecione uma regra e um tipo de tarefa para editar o workflow +text_are_you_sure: Voce tem certeza ? +text_journal_changed: alterado de %s para %s +text_journal_set_to: setar para %s +text_journal_deleted: apagado +text_tip_task_begin_day: tarefa comeca neste dia +text_tip_task_end_day: tarefa termina neste dia +text_tip_task_begin_end_day: tarefa comeca e termina neste dia +text_project_identifier_info: 'Letras minusculas (a-z), numeros e tracos permitido.
Uma vez salvo, o identificador nao pode ser mudado.' +text_caracters_maximum: %d maximo de caracteres +text_length_between: Tamanho entre %d e %d caracteres. +text_tracker_no_workflow: Sem workflow definido para este tipo. + +default_role_manager: Analista de Negocio ou Gerente de Projeto +default_role_developper: Desenvolvedor +default_role_reporter: Analista de Suporte +default_tracker_bug: Bug +default_tracker_feature: Implementacao +default_tracker_support: Suporte +default_issue_status_new: Novo +default_issue_status_assigned: Atribuido +default_issue_status_resolved: Resolvido +default_issue_status_feedback: Feedback +default_issue_status_closed: Fechado +default_issue_status_rejected: Rejeitado +default_doc_category_user: Documentacao do usuario +default_doc_category_tech: Documentacao do tecnica +default_priority_low: Baixo +default_priority_normal: Normal +default_priority_high: Alto +default_priority_urgent: Urgente +default_priority_immediate: Imediato +default_activity_design: Design +default_activity_development: Desenvolvimento + +enumeration_issue_priorities: Prioridade das tarefas +enumeration_doc_categories: Categorias de documento +enumeration_activities: Atividades (time tracking) diff --git a/public/javascripts/calendar/lang/calendar-pt.js b/public/javascripts/calendar/lang/calendar-pt.js new file mode 100644 index 000000000..a755230e4 --- /dev/null +++ b/public/javascripts/calendar/lang/calendar-pt.js @@ -0,0 +1,127 @@ +// ** I18N + +// Calendar pt_BR language +// Author: Adalberto Machado, +// Encoding: any +// Distributed under the same terms as the calendar itself. + +// For translators: please use UTF-8 if possible. We strongly believe that +// Unicode is the answer to a real internationalized world. Also please +// include your contact information in the header, as can be seen above. + +// full day names +Calendar._DN = new Array +("Domingo", + "Segunda", + "Terca", + "Quarta", + "Quinta", + "Sexta", + "Sabado", + "Domingo"); + +// Please note that the following array of short day names (and the same goes +// for short month names, _SMN) isn't absolutely necessary. We give it here +// for exemplification on how one can customize the short day names, but if +// they are simply the first N letters of the full name you can simply say: +// +// Calendar._SDN_len = N; // short day name length +// Calendar._SMN_len = N; // short month name length +// +// If N = 3 then this is not needed either since we assume a value of 3 if not +// present, to be compatible with translation files that were written before +// this feature. + +// short day names +Calendar._SDN = new Array +("Dom", + "Seg", + "Ter", + "Qua", + "Qui", + "Sex", + "Sab", + "Dom"); + +// First day of the week. "0" means display Sunday first, "1" means display +// Monday first, etc. +Calendar._FD = 1; + +// full month names +Calendar._MN = new Array +("Janeiro", + "Fevereiro", + "Marco", + "Abril", + "Maio", + "Junho", + "Julho", + "Agosto", + "Setembro", + "Outubro", + "Novembro", + "Dezembro"); + +// short month names +Calendar._SMN = new Array +("Jan", + "Fev", + "Mar", + "Abr", + "Mai", + "Jun", + "Jul", + "Ago", + "Set", + "Out", + "Nov", + "Dez"); + +// tooltips +Calendar._TT = {}; +Calendar._TT["INFO"] = "Sobre o calendario"; + +Calendar._TT["ABOUT"] = +"DHTML Date/Time Selector\n" + +"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-) +"Ultima versao visite: http://www.dynarch.com/projects/calendar/\n" + +"Distribuido sobre GNU LGPL. Veja http://gnu.org/licenses/lgpl.html para detalhes." + +"\n\n" + +"Selecao de data:\n" + +"- Use os botoes \xab, \xbb para selecionar o ano\n" + +"- Use os botoes " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " para selecionar o mes\n" + +"- Segure o botao do mouse em qualquer um desses botoes para selecao rapida."; +Calendar._TT["ABOUT_TIME"] = "\n\n" + +"Selecao de hora:\n" + +"- Clique em qualquer parte da hora para incrementar\n" + +"- ou Shift-click para decrementar\n" + +"- ou clique e segure para selecao rapida."; + +Calendar._TT["PREV_YEAR"] = "Ant. ano (segure para menu)"; +Calendar._TT["PREV_MONTH"] = "Ant. mes (segure para menu)"; +Calendar._TT["GO_TODAY"] = "Hoje"; +Calendar._TT["NEXT_MONTH"] = "Prox. mes (segure para menu)"; +Calendar._TT["NEXT_YEAR"] = "Prox. ano (segure para menu)"; +Calendar._TT["SEL_DATE"] = "Selecione a data"; +Calendar._TT["DRAG_TO_MOVE"] = "Arraste para mover"; +Calendar._TT["PART_TODAY"] = " (hoje)"; + +// the following is to inform that "%s" is to be the first day of week +// %s will be replaced with the day name. +Calendar._TT["DAY_FIRST"] = "Mostre %s primeiro"; + +// This may be locale-dependent. It specifies the week-end days, as an array +// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1 +// means Monday, etc. +Calendar._TT["WEEKEND"] = "0,6"; + +Calendar._TT["CLOSE"] = "Fechar"; +Calendar._TT["TODAY"] = "Hoje"; +Calendar._TT["TIME_PART"] = "(Shift-)Click ou arraste para mudar valor"; + +// date formats +Calendar._TT["DEF_DATE_FORMAT"] = "%d/%m/%Y"; +Calendar._TT["TT_DATE_FORMAT"] = "%a, %e %b"; + +Calendar._TT["WK"] = "sm"; +Calendar._TT["TIME"] = "Hora:"; diff --git a/test/functional/application_controller_test.rb b/test/functional/application_controller_test.rb index d6f0db780..28b9775aa 100644 --- a/test/functional/application_controller_test.rb +++ b/test/functional/application_controller_test.rb @@ -30,7 +30,7 @@ class ApplicationControllerTest < Test::Unit::TestCase # check that all 6 supported languages are valid def test_localization - assert_equal 7, GLoc.valid_languages.size + assert_equal 8, GLoc.valid_languages.size GLoc.valid_languages.each do |lang| assert set_language_if_valid(lang) end