Revision 1297:0a574315af3e .svn/pristine/0c

View differences:

.svn/pristine/0c/0c006adf29e0abdbaa9644cee502d6882d303828.svn-base
1
# Redmine - project management software
2
# Copyright (C) 2006-2012  Jean-Philippe Lang
3
#
4
# This program is free software; you can redistribute it and/or
5
# modify it under the terms of the GNU General Public License
6
# as published by the Free Software Foundation; either version 2
7
# of the License, or (at your option) any later version.
8
#
9
# This program is distributed in the hope that it will be useful,
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
# GNU General Public License for more details.
13
#
14
# You should have received a copy of the GNU General Public License
15
# along with this program; if not, write to the Free Software
16
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
17

  
18
module Redmine
19
  module MimeType
20

  
21
    MIME_TYPES = {
22
      'text/plain' => 'txt,tpl,properties,patch,diff,ini,readme,install,upgrade',
23
      'text/css' => 'css',
24
      'text/html' => 'html,htm,xhtml',
25
      'text/jsp' => 'jsp',
26
      'text/x-c' => 'c,cpp,cc,h,hh',
27
      'text/x-csharp' => 'cs',
28
      'text/x-java' => 'java',
29
      'text/x-html-template' => 'rhtml',
30
      'text/x-perl' => 'pl,pm',
31
      'text/x-php' => 'php,php3,php4,php5',
32
      'text/x-python' => 'py',
33
      'text/x-ruby' => 'rb,rbw,ruby,rake,erb',
34
      'text/x-csh' => 'csh',
35
      'text/x-sh' => 'sh',
36
      'text/xml' => 'xml,xsd,mxml',
37
      'text/yaml' => 'yml,yaml',
38
      'text/csv' => 'csv',
39
      'text/x-po' => 'po',
40
      'image/gif' => 'gif',
41
      'image/jpeg' => 'jpg,jpeg,jpe',
42
      'image/png' => 'png',
43
      'image/tiff' => 'tiff,tif',
44
      'image/x-ms-bmp' => 'bmp',
45
      'image/x-xpixmap' => 'xpm',
46
      'image/svg+xml'=> 'svg',
47
      'application/javascript' => 'js',
48
      'application/pdf' => 'pdf',
49
      'application/rtf' => 'rtf',
50
      'application/msword' => 'doc',
51
      'application/vnd.ms-excel' => 'xls',
52
      'application/vnd.ms-powerpoint' => 'ppt,pps',
53
      'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => 'docx',
54
      'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => 'xlsx',
55
      'application/vnd.openxmlformats-officedocument.presentationml.presentation' => 'pptx',
56
      'application/vnd.openxmlformats-officedocument.presentationml.slideshow' => 'ppsx',
57
      'application/vnd.oasis.opendocument.spreadsheet' => 'ods',
58
      'application/vnd.oasis.opendocument.text' => 'odt',
59
      'application/vnd.oasis.opendocument.presentation' => 'odp',
60
      'application/x-7z-compressed' => '7z',
61
      'application/x-rar-compressed' => 'rar',
62
      'application/x-tar' => 'tar',
63
      'application/zip' => 'zip',
64
      'application/x-gzip' => 'gz',
65
    }.freeze
66

  
67
    EXTENSIONS = MIME_TYPES.inject({}) do |map, (type, exts)|
68
      exts.split(',').each {|ext| map[ext.strip] = type}
69
      map
70
    end
71

  
72
    # returns mime type for name or nil if unknown
73
    def self.of(name)
74
      return nil unless name
75
      m = name.to_s.match(/(^|\.)([^\.]+)$/)
76
      EXTENSIONS[m[2].downcase] if m
77
    end
78

  
79
    # Returns the css class associated to
80
    # the mime type of name
81
    def self.css_class_of(name)
82
      mime = of(name)
83
      mime && mime.gsub('/', '-')
84
    end
85

  
86
    def self.main_mimetype_of(name)
87
      mimetype = of(name)
88
      mimetype.split('/').first if mimetype
89
    end
90

  
91
    # return true if mime-type for name is type/*
92
    # otherwise false
93
    def self.is_type?(type, name)
94
      main_mimetype = main_mimetype_of(name)
95
      type.to_s == main_mimetype
96
    end
97
  end
98
end
.svn/pristine/0c/0c20b053aa02a18ebfa242903b54c5d2423345a1.svn-base
1
# Redmine - project management software
2
# Copyright (C) 2006-2012  Jean-Philippe Lang
3
#
4
# This program is free software; you can redistribute it and/or
5
# modify it under the terms of the GNU General Public License
6
# as published by the Free Software Foundation; either version 2
7
# of the License, or (at your option) any later version.
8
#
9
# This program is distributed in the hope that it will be useful,
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
# GNU General Public License for more details.
13
#
14
# You should have received a copy of the GNU General Public License
15
# along with this program; if not, write to the Free Software
16
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
17

  
18
require File.expand_path('../../../test_helper', __FILE__)
19

  
20
class RoutingRolesTest < ActionController::IntegrationTest
21
  def test_roles
22
    assert_routing(
23
        { :method => 'get', :path => "/roles" },
24
        { :controller => 'roles', :action => 'index' }
25
      )
26
    assert_routing(
27
        { :method => 'get', :path => "/roles.xml" },
28
        { :controller => 'roles', :action => 'index', :format => 'xml' }
29
      )
30
    assert_routing(
31
        { :method => 'get', :path => "/roles/2.xml" },
32
        { :controller => 'roles', :action => 'show', :id => '2', :format => 'xml' }
33
      )
34
    assert_routing(
35
        { :method => 'get', :path => "/roles/new" },
36
        { :controller => 'roles', :action => 'new' }
37
      )
38
    assert_routing(
39
        { :method => 'post', :path => "/roles" },
40
        { :controller => 'roles', :action => 'create' }
41
      )
42
    assert_routing(
43
        { :method => 'get', :path => "/roles/2/edit" },
44
        { :controller => 'roles', :action => 'edit', :id => '2' }
45
      )
46
    assert_routing(
47
        { :method => 'put', :path => "/roles/2" },
48
        { :controller => 'roles', :action => 'update', :id => '2' }
49
      )
50
    assert_routing(
51
        { :method => 'delete', :path => "/roles/2" },
52
        { :controller => 'roles', :action => 'destroy', :id => '2' }
53
      )
54
    ["get", "post"].each do |method|
55
      assert_routing(
56
          { :method => method, :path => "/roles/permissions" },
57
          { :controller => 'roles', :action => 'permissions' }
58
        )
59
    end
60
  end
61
end
.svn/pristine/0c/0c42f93f79c01cc0c9d6a9263bd85bc764f22f6f.svn-base
1
# Portuguese localization for Ruby on Rails
2
# by Ricardo Otero <oterosantos@gmail.com>
3
# by Alberto Ferreira <toraxic@gmail.com>
4
pt:
5
  support:
6
    array:
7
      sentence_connector: "e"
8
      skip_last_comma: true
9

  
10
  direction: ltr
11
  date:
12
    formats:
13
      default: "%d/%m/%Y"
14
      short: "%d de %B"
15
      long: "%d de %B de %Y"
16
      only_day: "%d"
17
    day_names: [Domingo, Segunda, Terça, Quarta, Quinta, Sexta, Sábado]
18
    abbr_day_names: [Dom, Seg, Ter, Qua, Qui, Sex, Sáb]
19
    month_names: [~, Janeiro, Fevereiro, Março, Abril, Maio, Junho, Julho, Agosto, Setembro, Outubro, Novembro, Dezembro]
20
    abbr_month_names: [~, Jan, Fev, Mar, Abr, Mai, Jun, Jul, Ago, Set, Out, Nov, Dez]
21
    order:
22
      - :day
23
      - :month
24
      - :year
25

  
26
  time:
27
    formats:
28
      default: "%A, %d de %B de %Y, %H:%Mh"
29
      time: "%H:%M"
30
      short: "%d/%m, %H:%M hs"
31
      long: "%A, %d de %B de %Y, %H:%Mh"
32
    am: ''
33
    pm: ''
34

  
35
  datetime:
36
    distance_in_words:
37
      half_a_minute: "meio minuto"
38
      less_than_x_seconds:
39
        one: "menos de 1 segundo"
40
        other: "menos de %{count} segundos"
41
      x_seconds:
42
        one: "1 segundo"
43
        other: "%{count} segundos"
44
      less_than_x_minutes:
45
        one: "menos de um minuto"
46
        other: "menos de %{count} minutos"
47
      x_minutes:
48
        one: "1 minuto"
49
        other: "%{count} minutos"
50
      about_x_hours:
51
        one: "aproximadamente 1 hora"
52
        other: "aproximadamente %{count} horas"
53
      x_hours:
54
        one:   "1 hour"
55
        other: "%{count} hours"
56
      x_days:
57
        one: "1 dia"
58
        other: "%{count} dias"
59
      about_x_months:
60
        one: "aproximadamente 1 mês"
61
        other: "aproximadamente %{count} meses"
62
      x_months:
63
        one: "1 mês"
64
        other: "%{count} meses"
65
      about_x_years:
66
        one: "aproximadamente 1 ano"
67
        other: "aproximadamente %{count} anos"
68
      over_x_years:
69
        one: "mais de 1 ano"
70
        other: "mais de %{count} anos"
71
      almost_x_years:
72
        one:   "almost 1 year"
73
        other: "almost %{count} years"
74

  
75
  number:
76
    format:
77
      precision: 3
78
      separator: ','
79
      delimiter: '.'
80
    currency:
81
      format:
82
        unit: '€'
83
        precision: 2
84
        format: "%u %n"
85
        separator: ','
86
        delimiter: '.'
87
    percentage:
88
      format:
89
        delimiter: ''
90
    precision:
91
      format:
92
        delimiter: ''
93
    human:
94
      format:
95
        precision: 3
96
        delimiter: ''
97
      storage_units:
98
        format: "%n %u"
99
        units:
100
          byte:
101
            one: "Byte"
102
            other: "Bytes"
103
          kb: "KB"
104
          mb: "MB"
105
          gb: "GB"
106
          tb: "TB"
107

  
108
  activerecord:
109
    errors:
110
      template:
111
        header:
112
          one: "Não foi possível guardar %{model}: 1 erro"
113
          other: "Não foi possível guardar %{model}: %{count} erros"
114
        body: "Por favor, verifique os seguintes campos:"
115
      messages:
116
        inclusion: "não está incluído na lista"
117
        exclusion: "não está disponível"
118
        invalid: "não é válido"
119
        confirmation: "não está de acordo com a confirmação"
120
        accepted:  "precisa de ser aceite"
121
        empty: "não pode estar em branco"
122
        blank: "não pode estar em branco"
123
        too_long: "tem demasiados caracteres (máximo: %{count} caracteres)"
124
        too_short: "tem poucos caracteres (mínimo: %{count} caracteres)"
125
        wrong_length: "não é do tamanho correcto (necessita de ter %{count} caracteres)"
126
        taken: "não está disponível"
127
        not_a_number: "não é um número"
128
        greater_than: "tem de ser maior do que %{count}"
129
        greater_than_or_equal_to: "tem de ser maior ou igual a %{count}"
130
        equal_to: "tem de ser igual a %{count}"
131
        less_than: "tem de ser menor do que %{count}"
132
        less_than_or_equal_to: "tem de ser menor ou igual a %{count}"
133
        odd: "tem de ser ímpar"
134
        even: "tem de ser par"
135
        greater_than_start_date: "deve ser maior que a data inicial"
136
        not_same_project: "não pertence ao mesmo projecto"
137
        circular_dependency: "Esta relação iria criar uma dependência circular"
138
        cant_link_an_issue_with_a_descendant: "Não é possível ligar uma tarefa a uma sub-tarefa que lhe é pertencente"
139

  
140
  ## Translated by: Pedro Araújo <phcrva19@hotmail.com>
141
  actionview_instancetag_blank_option: Seleccione
142

  
143
  general_text_No: 'Não'
144
  general_text_Yes: 'Sim'
145
  general_text_no: 'não'
146
  general_text_yes: 'sim'
147
  general_lang_name: 'Português'
148
  general_csv_separator: ';'
149
  general_csv_decimal_separator: ','
150
  general_csv_encoding: ISO-8859-15
151
  general_pdf_encoding: UTF-8
152
  general_first_day_of_week: '1'
153

  
154
  notice_account_updated: A conta foi actualizada com sucesso.
155
  notice_account_invalid_creditentials: Utilizador ou palavra-chave inválidos.
156
  notice_account_password_updated: A palavra-chave foi alterada com sucesso.
157
  notice_account_wrong_password: Palavra-chave errada.
158
  notice_account_register_done: A conta foi criada com sucesso.
159
  notice_account_unknown_email: Utilizador desconhecido.
160
  notice_can_t_change_password: Esta conta utiliza uma fonte de autenticação externa. Não é possível alterar a palavra-chave.
161
  notice_account_lost_email_sent: Foi-lhe enviado um e-mail com as instruções para escolher uma nova palavra-chave.
162
  notice_account_activated: A sua conta foi activada. É agora possível autenticar-se.
163
  notice_successful_create: Criado com sucesso.
164
  notice_successful_update: Alterado com sucesso.
165
  notice_successful_delete: Apagado com sucesso.
166
  notice_successful_connection: Ligado com sucesso.
167
  notice_file_not_found: A página que está a tentar aceder não existe ou foi removida.
168
  notice_locking_conflict: Os dados foram actualizados por outro utilizador.
169
  notice_not_authorized: Não está autorizado a visualizar esta página.
170
  notice_email_sent: "Foi enviado um e-mail para %{value}"
171
  notice_email_error: "Ocorreu um erro ao enviar o e-mail (%{value})"
172
  notice_feeds_access_key_reseted: A sua chave de RSS foi inicializada.
173
  notice_failed_to_save_issues: "Não foi possível guardar %{count} tarefa(s) das %{total} seleccionadas: %{ids}."
174
  notice_no_issue_selected: "Nenhuma tarefa seleccionada! Por favor, seleccione as tarefas que quer editar."
175
  notice_account_pending: "A sua conta foi criada e está agora à espera de aprovação do administrador."
176
  notice_default_data_loaded: Configuração padrão carregada com sucesso.
177
  notice_unable_delete_version: Não foi possível apagar a versão.
178

  
179
  error_can_t_load_default_data: "Não foi possível carregar a configuração padrão: %{value}"
180
  error_scm_not_found: "A entrada ou revisão não foi encontrada no repositório."
181
  error_scm_command_failed: "Ocorreu um erro ao tentar aceder ao repositório: %{value}"
182
  error_scm_annotate: "A entrada não existe ou não pode ser anotada."
183
  error_issue_not_found_in_project: 'A tarefa não foi encontrada ou não pertence a este projecto.'
184

  
185
  mail_subject_lost_password: "Palavra-chave de %{value}"
186
  mail_body_lost_password: 'Para mudar a sua palavra-chave, clique na ligação abaixo:'
187
  mail_subject_register: "Activação de conta de %{value}"
188
  mail_body_register: 'Para activar a sua conta, clique na ligação abaixo:'
189
  mail_body_account_information_external: "Pode utilizar a conta %{value} para autenticar-se."
190
  mail_body_account_information: Informação da sua conta
191
  mail_subject_account_activation_request: "Pedido de activação da conta %{value}"
192
  mail_body_account_activation_request: "Um novo utilizador (%{value}) registou-se. A sua conta está à espera de aprovação:"
193
  mail_subject_reminder: "%{count} tarefa(s) para entregar nos próximos %{days} dias"
194
  mail_body_reminder: "%{count} tarefa(s) que estão atribuídas a si estão agendadas para estarem completas nos próximos %{days} dias:"
195

  
196
  gui_validation_error: 1 erro
197
  gui_validation_error_plural: "%{count} erros"
198

  
199
  field_name: Nome
200
  field_description: Descrição
201
  field_summary: Sumário
202
  field_is_required: Obrigatório
203
  field_firstname: Nome
204
  field_lastname: Apelido
205
  field_mail: E-mail
206
  field_filename: Ficheiro
207
  field_filesize: Tamanho
208
  field_downloads: Downloads
209
  field_author: Autor
210
  field_created_on: Criado
211
  field_updated_on: Alterado
212
  field_field_format: Formato
213
  field_is_for_all: Para todos os projectos
214
  field_possible_values: Valores possíveis
215
  field_regexp: Expressão regular
216
  field_min_length: Tamanho mínimo
217
  field_max_length: Tamanho máximo
218
  field_value: Valor
219
  field_category: Categoria
220
  field_title: Título
221
  field_project: Projecto
222
  field_issue: Tarefa
223
  field_status: Estado
224
  field_notes: Notas
225
  field_is_closed: Tarefa fechada
226
  field_is_default: Valor por omissão
227
  field_tracker: Tipo
228
  field_subject: Assunto
229
  field_due_date: Data fim
230
  field_assigned_to: Atribuído a
231
  field_priority: Prioridade
232
  field_fixed_version: Versão
233
  field_user: Utilizador
234
  field_role: Função
235
  field_homepage: Página
236
  field_is_public: Público
237
  field_parent: Sub-projecto de
238
  field_is_in_roadmap: Tarefas mostradas no mapa de planificação
239
  field_login: Nome de utilizador
240
  field_mail_notification: Notificações por e-mail
241
  field_admin: Administrador
242
  field_last_login_on: Última visita
243
  field_language: Língua
244
  field_effective_date: Data
245
  field_password: Palavra-chave
246
  field_new_password: Nova palavra-chave
247
  field_password_confirmation: Confirmação
248
  field_version: Versão
249
  field_type: Tipo
250
  field_host: Servidor
251
  field_port: Porta
252
  field_account: Conta
253
  field_base_dn: Base DN
254
  field_attr_login: Atributo utilizador
255
  field_attr_firstname: Atributo nome próprio
256
  field_attr_lastname: Atributo último nome
257
  field_attr_mail: Atributo e-mail
258
  field_onthefly: Criação imediata de utilizadores
259
  field_start_date: Data início
260
  field_done_ratio: "% Completo"
261
  field_auth_source: Modo de autenticação
262
  field_hide_mail: Esconder endereço de e-mail
263
  field_comments: Comentário
264
  field_url: URL
265
  field_start_page: Página inicial
266
  field_subproject: Subprojecto
267
  field_hours: Horas
268
  field_activity: Actividade
269
  field_spent_on: Data
270
  field_identifier: Identificador
271
  field_is_filter: Usado como filtro
272
  field_issue_to: Tarefa relacionada
273
  field_delay: Atraso
274
  field_assignable: As tarefas podem ser associadas a esta função
275
  field_redirect_existing_links: Redireccionar ligações existentes
276
  field_estimated_hours: Tempo estimado
277
  field_column_names: Colunas
278
  field_time_zone: Fuso horário
279
  field_searchable: Procurável
280
  field_default_value: Valor por omissão
281
  field_comments_sorting: Mostrar comentários
282
  field_parent_title: Página pai
283

  
284
  setting_app_title: Título da aplicação
285
  setting_app_subtitle: Sub-título da aplicação
286
  setting_welcome_text: Texto de boas vindas
287
  setting_default_language: Língua por omissão
288
  setting_login_required: Autenticação obrigatória
289
  setting_self_registration: Auto-registo
290
  setting_attachment_max_size: Tamanho máximo do anexo
291
  setting_issues_export_limit: Limite de exportação das tarefas
292
  setting_mail_from: E-mail enviado de
293
  setting_bcc_recipients: Recipientes de BCC
294
  setting_host_name: Hostname
295
  setting_text_formatting: Formatação do texto
296
  setting_wiki_compression: Compressão do histórico do Wiki
297
  setting_feeds_limit: Limite de conteúdo do feed
298
  setting_default_projects_public: Projectos novos são públicos por omissão
299
  setting_autofetch_changesets: Buscar automaticamente commits
300
  setting_sys_api_enabled: Activar Web Service para gestão do repositório
301
  setting_commit_ref_keywords: Palavras-chave de referência
302
  setting_commit_fix_keywords: Palavras-chave de fecho
303
  setting_autologin: Login automático
304
  setting_date_format: Formato da data
305
  setting_time_format: Formato do tempo
306
  setting_cross_project_issue_relations: Permitir relações entre tarefas de projectos diferentes
307
  setting_issue_list_default_columns: Colunas na lista de tarefas por omissão
308
  setting_emails_footer: Rodapé do e-mails
309
  setting_protocol: Protocolo
310
  setting_per_page_options: Opções de objectos por página
311
  setting_user_format: Formato de apresentaão de utilizadores
312
  setting_activity_days_default: Dias mostrados na actividade do projecto
313
  setting_display_subprojects_issues: Mostrar as tarefas dos sub-projectos nos projectos principais
314
  setting_enabled_scm: Activar SCM
315
  setting_mail_handler_api_enabled: Activar Web Service para e-mails recebidos
316
  setting_mail_handler_api_key: Chave da API
317
  setting_sequential_project_identifiers: Gerar identificadores de projecto sequênciais
318

  
319
  project_module_issue_tracking: Tarefas
320
  project_module_time_tracking: Registo de tempo
321
  project_module_news: Notícias
322
  project_module_documents: Documentos
323
  project_module_files: Ficheiros
324
  project_module_wiki: Wiki
325
  project_module_repository: Repositório
326
  project_module_boards: Forum
327

  
328
  label_user: Utilizador
329
  label_user_plural: Utilizadores
330
  label_user_new: Novo utilizador
331
  label_project: Projecto
332
  label_project_new: Novo projecto
333
  label_project_plural: Projectos
334
  label_x_projects:
335
    zero:  no projects
336
    one:   1 project
337
    other: "%{count} projects"
338
  label_project_all: Todos os projectos
339
  label_project_latest: Últimos projectos
340
  label_issue: Tarefa
341
  label_issue_new: Nova tarefa
342
  label_issue_plural: Tarefas
343
  label_issue_view_all: Ver todas as tarefas
344
  label_issues_by: "Tarefas por %{value}"
345
  label_issue_added: Tarefa adicionada
346
  label_issue_updated: Tarefa actualizada
347
  label_document: Documento
348
  label_document_new: Novo documento
349
  label_document_plural: Documentos
350
  label_document_added: Documento adicionado
351
  label_role: Função
352
  label_role_plural: Funções
353
  label_role_new: Nova função
354
  label_role_and_permissions: Funções e permissões
355
  label_member: Membro
356
  label_member_new: Novo membro
357
  label_member_plural: Membros
358
  label_tracker: Tipo
359
  label_tracker_plural: Tipos
360
  label_tracker_new: Novo tipo
361
  label_workflow: Fluxo de trabalho
362
  label_issue_status: Estado da tarefa
363
  label_issue_status_plural: Estados da tarefa
364
  label_issue_status_new: Novo estado
365
  label_issue_category: Categoria de tarefa
366
  label_issue_category_plural: Categorias de tarefa
367
  label_issue_category_new: Nova categoria
368
  label_custom_field: Campo personalizado
369
  label_custom_field_plural: Campos personalizados
370
  label_custom_field_new: Novo campo personalizado
371
  label_enumerations: Enumerações
372
  label_enumeration_new: Novo valor
373
  label_information: Informação
374
  label_information_plural: Informações
375
  label_please_login: Por favor autentique-se
376
  label_register: Registar
377
  label_password_lost: Perdi a palavra-chave
378
  label_home: Página Inicial
379
  label_my_page: Página Pessoal
380
  label_my_account: Minha conta
381
  label_my_projects: Meus projectos
382
  label_administration: Administração
383
  label_login: Entrar
384
  label_logout: Sair
385
  label_help: Ajuda
386
  label_reported_issues: Tarefas criadas
387
  label_assigned_to_me_issues: Tarefas atribuídas a mim
388
  label_last_login: Último acesso
389
  label_registered_on: Registado em
390
  label_activity: Actividade
391
  label_overall_activity: Actividade geral
392
  label_new: Novo
393
  label_logged_as: Ligado como
394
  label_environment: Ambiente
395
  label_authentication: Autenticação
396
  label_auth_source: Modo de autenticação
397
  label_auth_source_new: Novo modo de autenticação
398
  label_auth_source_plural: Modos de autenticação
399
  label_subproject_plural: Sub-projectos
400
  label_and_its_subprojects: "%{value} e sub-projectos"
401
  label_min_max_length: Tamanho mínimo-máximo
402
  label_list: Lista
403
  label_date: Data
404
  label_integer: Inteiro
405
  label_float: Decimal
406
  label_boolean: Booleano
407
  label_string: Texto
408
  label_text: Texto longo
409
  label_attribute: Atributo
410
  label_attribute_plural: Atributos
411
  label_download: "%{count} Download"
412
  label_download_plural: "%{count} Downloads"
413
  label_no_data: Sem dados para mostrar
414
  label_change_status: Mudar estado
415
  label_history: Histórico
416
  label_attachment: Ficheiro
417
  label_attachment_new: Novo ficheiro
418
  label_attachment_delete: Apagar ficheiro
419
  label_attachment_plural: Ficheiros
420
  label_file_added: Ficheiro adicionado
421
  label_report: Relatório
422
  label_report_plural: Relatórios
423
  label_news: Notícia
424
  label_news_new: Nova notícia
425
  label_news_plural: Notícias
426
  label_news_latest: Últimas notícias
427
  label_news_view_all: Ver todas as notícias
428
  label_news_added: Notícia adicionada
429
  label_settings: Configurações
430
  label_overview: Visão geral
431
  label_version: Versão
432
  label_version_new: Nova versão
433
  label_version_plural: Versões
434
  label_confirmation: Confirmação
435
  label_export_to: 'Também disponível em:'
436
  label_read: Ler...
437
  label_public_projects: Projectos públicos
438
  label_open_issues: aberto
439
  label_open_issues_plural: abertos
440
  label_closed_issues: fechado
441
  label_closed_issues_plural: fechados
442
  label_x_open_issues_abbr_on_total:
443
    zero:  0 open / %{total}
444
    one:   1 open / %{total}
445
    other: "%{count} open / %{total}"
446
  label_x_open_issues_abbr:
447
    zero:  0 open
448
    one:   1 open
449
    other: "%{count} open"
450
  label_x_closed_issues_abbr:
451
    zero:  0 closed
452
    one:   1 closed
453
    other: "%{count} closed"
454
  label_total: Total
455
  label_permissions: Permissões
456
  label_current_status: Estado actual
457
  label_new_statuses_allowed: Novos estados permitidos
458
  label_all: todos
459
  label_none: nenhum
460
  label_nobody: ninguém
461
  label_next: Próximo
462
  label_previous: Anterior
463
  label_used_by: Usado por
464
  label_details: Detalhes
465
  label_add_note: Adicionar nota
466
  label_per_page: Por página
467
  label_calendar: Calendário
468
  label_months_from: meses de
469
  label_gantt: Gantt
470
  label_internal: Interno
471
  label_last_changes: "últimas %{count} alterações"
472
  label_change_view_all: Ver todas as alterações
473
  label_personalize_page: Personalizar esta página
474
  label_comment: Comentário
475
  label_comment_plural: Comentários
476
  label_x_comments:
477
    zero: no comments
478
    one: 1 comment
479
    other: "%{count} comments"
480
  label_comment_add: Adicionar comentário
481
  label_comment_added: Comentário adicionado
482
  label_comment_delete: Apagar comentários
483
  label_query: Consulta personalizada
484
  label_query_plural: Consultas personalizadas
485
  label_query_new: Nova consulta
486
  label_filter_add: Adicionar filtro
487
  label_filter_plural: Filtros
488
  label_equals: é
489
  label_not_equals: não é
490
  label_in_less_than: em menos de
491
  label_in_more_than: em mais de
492
  label_in: em
493
  label_today: hoje
494
  label_all_time: sempre
495
  label_yesterday: ontem
496
  label_this_week: esta semana
497
  label_last_week: semana passada
498
  label_last_n_days: "últimos %{count} dias"
499
  label_this_month: este mês
500
  label_last_month: mês passado
501
  label_this_year: este ano
502
  label_date_range: Date range
503
  label_less_than_ago: menos de dias atrás
504
  label_more_than_ago: mais de dias atrás
505
  label_ago: dias atrás
506
  label_contains: contém
507
  label_not_contains: não contém
508
  label_day_plural: dias
509
  label_repository: Repositório
510
  label_repository_plural: Repositórios
511
  label_browse: Navegar
512
  label_modification: "%{count} alteração"
513
  label_modification_plural: "%{count} alterações"
514
  label_revision: Revisão
515
  label_revision_plural: Revisões
516
  label_associated_revisions: Revisões associadas
517
  label_added: adicionado
518
  label_modified: modificado
519
  label_copied: copiado
520
  label_renamed: renomeado
521
  label_deleted: apagado
522
  label_latest_revision: Última revisão
523
  label_latest_revision_plural: Últimas revisões
524
  label_view_revisions: Ver revisões
525
  label_max_size: Tamanho máximo
526
  label_sort_highest: Mover para o início
527
  label_sort_higher: Mover para cima
528
  label_sort_lower: Mover para baixo
529
  label_sort_lowest: Mover para o fim
530
  label_roadmap: Planificação
531
  label_roadmap_due_in: "Termina em %{value}"
532
  label_roadmap_overdue: "Atrasado %{value}"
533
  label_roadmap_no_issues: Sem tarefas para esta versão
534
  label_search: Procurar
535
  label_result_plural: Resultados
536
  label_all_words: Todas as palavras
537
  label_wiki: Wiki
538
  label_wiki_edit: Edição da Wiki
539
  label_wiki_edit_plural: Edições da Wiki
540
  label_wiki_page: Página da Wiki
541
  label_wiki_page_plural: Páginas da Wiki
542
  label_index_by_title: Índice por título
543
  label_index_by_date: Índice por data
544
  label_current_version: Versão actual
545
  label_preview: Pré-visualizar
546
  label_feed_plural: Feeds
547
  label_changes_details: Detalhes de todas as mudanças
548
  label_issue_tracking: Tarefas
549
  label_spent_time: Tempo gasto
550
  label_f_hour: "%{value} hora"
551
  label_f_hour_plural: "%{value} horas"
552
  label_time_tracking: Registo de tempo
553
  label_change_plural: Mudanças
554
  label_statistics: Estatísticas
555
  label_commits_per_month: Commits por mês
556
  label_commits_per_author: Commits por autor
557
  label_view_diff: Ver diferenças
558
  label_diff_inline: inline
559
  label_diff_side_by_side: lado a lado
560
  label_options: Opções
561
  label_copy_workflow_from: Copiar fluxo de trabalho de
562
  label_permissions_report: Relatório de permissões
563
  label_watched_issues: Tarefas observadas
564
  label_related_issues: Tarefas relacionadas
565
  label_applied_status: Estado aplicado
566
  label_loading: A carregar...
567
  label_relation_new: Nova relação
568
  label_relation_delete: Apagar relação
569
  label_relates_to: relacionado a
570
  label_duplicates: duplica
571
  label_duplicated_by: duplicado por
572
  label_blocks: bloqueia
573
  label_blocked_by: bloqueado por
574
  label_precedes: precede
575
  label_follows: segue
576
  label_end_to_start: fim a início
577
  label_end_to_end: fim a fim
578
  label_start_to_start: início a início
579
  label_start_to_end: início a fim
580
  label_stay_logged_in: Guardar sessão
581
  label_disabled: desactivado
582
  label_show_completed_versions: Mostrar versões acabadas
583
  label_me: eu
584
  label_board: Forum
585
  label_board_new: Novo forum
586
  label_board_plural: Forums
587
  label_topic_plural: Tópicos
588
  label_message_plural: Mensagens
589
  label_message_last: Última mensagem
590
  label_message_new: Nova mensagem
591
  label_message_posted: Mensagem adicionada
592
  label_reply_plural: Respostas
593
  label_send_information: Enviar dados da conta para o utilizador
594
  label_year: Ano
595
  label_month: mês
596
  label_week: Semana
597
  label_date_from: De
598
  label_date_to: Para
599
  label_language_based: Baseado na língua do utilizador
600
  label_sort_by: "Ordenar por %{value}"
601
  label_send_test_email: enviar um e-mail de teste
602
  label_feeds_access_key_created_on: "Chave RSS criada há %{value} atrás"
603
  label_module_plural: Módulos
604
  label_added_time_by: "Adicionado por %{author} há %{age} atrás"
605
  label_updated_time: "Alterado há %{value} atrás"
606
  label_jump_to_a_project: Ir para o projecto...
607
  label_file_plural: Ficheiros
608
  label_changeset_plural: Changesets
609
  label_default_columns: Colunas por omissão
610
  label_no_change_option: (sem alteração)
611
  label_bulk_edit_selected_issues: Editar tarefas seleccionadas em conjunto
612
  label_theme: Tema
613
  label_default: Padrão
614
  label_search_titles_only: Procurar apenas em títulos
615
  label_user_mail_option_all: "Para qualquer evento em todos os meus projectos"
616
  label_user_mail_option_selected: "Para qualquer evento apenas nos projectos seleccionados..."
617
  label_user_mail_no_self_notified: "Não quero ser notificado de alterações feitas por mim"
618
  label_registration_activation_by_email: Activação da conta por e-mail
619
  label_registration_manual_activation: Activação manual da conta
620
  label_registration_automatic_activation: Activação automática da conta
621
  label_display_per_page: "Por página: %{value}"
622
  label_age: Idade
623
  label_change_properties: Mudar propriedades
624
  label_general: Geral
625
  label_more: Mais
626
  label_scm: SCM
627
  label_plugins: Extensões
628
  label_ldap_authentication: Autenticação LDAP
629
  label_downloads_abbr: D/L
630
  label_optional_description: Descrição opcional
631
  label_add_another_file: Adicionar outro ficheiro
632
  label_preferences: Preferências
633
  label_chronological_order: Em ordem cronológica
634
  label_reverse_chronological_order: Em ordem cronológica inversa
635
  label_planning: Planeamento
636
  label_incoming_emails: E-mails a chegar
637
  label_generate_key: Gerar uma chave
638
  label_issue_watchers: Observadores
639

  
640
  button_login: Entrar
641
  button_submit: Submeter
642
  button_save: Guardar
643
  button_check_all: Marcar tudo
644
  button_uncheck_all: Desmarcar tudo
645
  button_delete: Apagar
646
  button_create: Criar
647
  button_test: Testar
648
  button_edit: Editar
649
  button_add: Adicionar
650
  button_change: Alterar
651
  button_apply: Aplicar
652
  button_clear: Limpar
653
  button_lock: Bloquear
654
  button_unlock: Desbloquear
655
  button_download: Download
656
  button_list: Listar
657
  button_view: Ver
658
  button_move: Mover
659
  button_back: Voltar
660
  button_cancel: Cancelar
661
  button_activate: Activar
662
  button_sort: Ordenar
663
  button_log_time: Tempo de trabalho
664
  button_rollback: Voltar para esta versão
665
  button_watch: Observar
666
  button_unwatch: Deixar de observar
667
  button_reply: Responder
668
  button_archive: Arquivar
669
  button_unarchive: Desarquivar
670
  button_reset: Reinicializar
671
  button_rename: Renomear
672
  button_change_password: Mudar palavra-chave
673
  button_copy: Copiar
674
  button_annotate: Anotar
675
  button_update: Actualizar
676
  button_configure: Configurar
677
  button_quote: Citar
678

  
679
  status_active: activo
680
  status_registered: registado
681
  status_locked: bloqueado
682

  
683
  text_select_mail_notifications: Seleccionar as acções que originam uma notificação por e-mail.
684
  text_regexp_info: ex. ^[A-Z0-9]+$
685
  text_min_max_length_info: 0 siginifica sem restrição
686
  text_project_destroy_confirmation: Tem a certeza que deseja apagar o projecto e todos os dados relacionados?
687
  text_subprojects_destroy_warning: "O(s) seu(s) sub-projecto(s): %{value} também será/serão apagado(s)."
688
  text_workflow_edit: Seleccione uma função e um tipo de tarefa para editar o fluxo de trabalho
689
  text_are_you_sure: Tem a certeza?
690
  text_tip_issue_begin_day: tarefa a começar neste dia
691
  text_tip_issue_end_day: tarefa a acabar neste dia
692
  text_tip_issue_begin_end_day: tarefa a começar e acabar neste dia
693
  text_caracters_maximum: "máximo %{count} caracteres."
694
  text_caracters_minimum: "Deve ter pelo menos %{count} caracteres."
695
  text_length_between: "Deve ter entre %{min} e %{max} caracteres."
696
  text_tracker_no_workflow: Sem fluxo de trabalho definido para este tipo de tarefa.
697
  text_unallowed_characters: Caracteres não permitidos
698
  text_comma_separated: Permitidos múltiplos valores (separados por vírgula).
699
  text_issues_ref_in_commit_messages: Referenciando e fechando tarefas em mensagens de commit
700
  text_issue_added: "Tarefa %{id} foi criada por %{author}."
701
  text_issue_updated: "Tarefa %{id} foi actualizada por %{author}."
702
  text_wiki_destroy_confirmation: Tem a certeza que deseja apagar este wiki e todo o seu conteúdo?
703
  text_issue_category_destroy_question: "Algumas tarefas (%{count}) estão atribuídas a esta categoria. O que quer fazer?"
704
  text_issue_category_destroy_assignments: Remover as atribuições à categoria
705
  text_issue_category_reassign_to: Re-atribuir as tarefas para esta categoria
706
  text_user_mail_option: "Para projectos não seleccionados, apenas receberá notificações acerca de coisas que está a observar ou está envolvido (ex. tarefas das quais foi o criador ou lhes foram atribuídas)."
707
  text_no_configuration_data: "Perfis, tipos de tarefas, estados das tarefas e workflows ainda não foram configurados.\nÉ extremamente recomendado carregar as configurações padrão. Será capaz de as modificar depois de estarem carregadas."
708
  text_load_default_configuration: Carregar as configurações padrão
709
  text_status_changed_by_changeset: "Aplicado no changeset %{value}."
710
  text_issues_destroy_confirmation: 'Tem a certeza que deseja apagar a(s) tarefa(s) seleccionada(s)?'
711
  text_select_project_modules: 'Seleccione os módulos a activar para este projecto:'
712
  text_default_administrator_account_changed: Conta default de administrador alterada.
713
  text_file_repository_writable: Repositório de ficheiros com permissões de escrita
714
  text_rmagick_available: RMagick disponível (opcional)
715
  text_destroy_time_entries_question: "%{hours} horas de trabalho foram atribuídas a estas tarefas que vai apagar. O que deseja fazer?"
716
  text_destroy_time_entries: Apagar as horas
717
  text_assign_time_entries_to_project: Atribuir as horas ao projecto
718
  text_reassign_time_entries: 'Re-atribuir as horas para esta tarefa:'
719
  text_user_wrote: "%{value} escreveu:"
720
  text_enumeration_destroy_question: "%{count} objectos estão atribuídos a este valor."
721
  text_enumeration_category_reassign_to: 'Re-atribuí-los para este valor:'
722
  text_email_delivery_not_configured: "Entrega por e-mail não está configurada, e as notificação estão desactivadas.\nConfigure o seu servidor de SMTP em config/configuration.yml e reinicie a aplicação para activar estas funcionalidades."
723

  
724
  default_role_manager: Gestor
725
  default_role_developer: Programador
726
  default_role_reporter: Repórter
727
  default_tracker_bug: Bug
728
  default_tracker_feature: Funcionalidade
729
  default_tracker_support: Suporte
730
  default_issue_status_new: Novo
731
  default_issue_status_in_progress: Em curso
732
  default_issue_status_resolved: Resolvido
733
  default_issue_status_feedback: Feedback
734
  default_issue_status_closed: Fechado
735
  default_issue_status_rejected: Rejeitado
736
  default_doc_category_user: Documentação de utilizador
737
  default_doc_category_tech: Documentação técnica
738
  default_priority_low: Baixa
739
  default_priority_normal: Normal
740
  default_priority_high: Alta
741
  default_priority_urgent: Urgente
742
  default_priority_immediate: Imediata
743
  default_activity_design: Planeamento
744
  default_activity_development: Desenvolvimento
745

  
746
  enumeration_issue_priorities: Prioridade de tarefas
747
  enumeration_doc_categories: Categorias de documentos
748
  enumeration_activities: Actividades (Registo de tempo)
749
  setting_plain_text_mail: Apenas texto simples (sem HTML)
750
  permission_view_files: Ver ficheiros
751
  permission_edit_issues: Editar tarefas
752
  permission_edit_own_time_entries: Editar horas pessoais
753
  permission_manage_public_queries: Gerir queries públicas
754
  permission_add_issues: Adicionar tarefas
755
  permission_log_time: Registar tempo gasto
756
  permission_view_changesets: Ver changesets
757
  permission_view_time_entries: Ver tempo gasto
758
  permission_manage_versions: Gerir versões
759
  permission_manage_wiki: Gerir wiki
760
  permission_manage_categories: Gerir categorias de tarefas
761
  permission_protect_wiki_pages: Proteger páginas de wiki
762
  permission_comment_news: Comentar notícias
763
  permission_delete_messages: Apagar mensagens
764
  permission_select_project_modules: Seleccionar módulos do projecto
765
  permission_manage_documents: Gerir documentos
766
  permission_edit_wiki_pages: Editar páginas de wiki
767
  permission_add_issue_watchers: Adicionar observadores
768
  permission_view_gantt: ver diagrama de Gantt
769
  permission_move_issues: Mover tarefas
770
  permission_manage_issue_relations: Gerir relações de tarefas
771
  permission_delete_wiki_pages: Apagar páginas de wiki
772
  permission_manage_boards: Gerir forums
773
  permission_delete_wiki_pages_attachments: Apagar anexos
774
  permission_view_wiki_edits: Ver histórico da wiki
775
  permission_add_messages: Submeter mensagens
776
  permission_view_messages: Ver mensagens
777
  permission_manage_files: Gerir ficheiros
778
  permission_edit_issue_notes: Editar notas de tarefas
779
  permission_manage_news: Gerir notícias
780
  permission_view_calendar: Ver calendário
781
  permission_manage_members: Gerir membros
782
  permission_edit_messages: Editar mensagens
783
  permission_delete_issues: Apagar tarefas
784
  permission_view_issue_watchers: Ver lista de observadores
785
  permission_manage_repository: Gerir repositório
786
  permission_commit_access: Acesso a submissão
787
  permission_browse_repository: Navegar em repositório
788
  permission_view_documents: Ver documentos
789
  permission_edit_project: Editar projecto
790
  permission_add_issue_notes: Adicionar notas a tarefas
791
  permission_save_queries: Guardar queries
792
  permission_view_wiki_pages: Ver wiki
793
  permission_rename_wiki_pages: Renomear páginas de wiki
794
  permission_edit_time_entries: Editar entradas de tempo
795
  permission_edit_own_issue_notes: Editar as prórpias notas
796
  setting_gravatar_enabled: Utilizar ícones Gravatar
797
  label_example: Exemplo
798
  text_repository_usernames_mapping: "Seleccionar ou actualizar o utilizador de Redmine mapeado a cada nome de utilizador encontrado no repositório.\nUtilizadores com o mesmo nome de utilizador ou email no Redmine e no repositório são mapeados automaticamente."
799
  permission_edit_own_messages: Editar as próprias mensagens
800
  permission_delete_own_messages: Apagar as próprias mensagens
801
  label_user_activity: "Actividade de %{value}"
802
  label_updated_time_by: "Actualizado por %{author} há %{age}"
803
  text_diff_truncated: '... Este diff foi truncado porque excede o tamanho máximo que pode ser mostrado.'
804
  setting_diff_max_lines_displayed: Número máximo de linhas de diff mostradas
805
  text_plugin_assets_writable: Escrita na pasta de activos dos módulos de extensão possível
806
  warning_attachments_not_saved: "Não foi possível gravar %{count} ficheiro(s) ."
807
  button_create_and_continue: Criar e continuar
808
  text_custom_field_possible_values_info: 'Uma linha para cada valor'
809
  label_display: Mostrar
810
  field_editable: Editável
811
  setting_repository_log_display_limit: Número máximo de revisões exibido no relatório de ficheiro
812
  setting_file_max_size_displayed: Tamanho máximo dos ficheiros de texto exibidos inline
813
  field_watcher: Observador
814
  setting_openid: Permitir início de sessão e registo com OpenID
815
  field_identity_url: URL do OpenID
816
  label_login_with_open_id_option: ou início de sessão com OpenID
817
  field_content: Conteúdo
818
  label_descending: Descendente
819
  label_sort: Ordenar
820
  label_ascending: Ascendente
821
  label_date_from_to: De %{start} a %{end}
822
  label_greater_or_equal: ">="
823
  label_less_or_equal: <=
824
  text_wiki_page_destroy_question: Esta página tem %{descendants} página(s) subordinada(s) e descendente(s). O que deseja fazer?
825
  text_wiki_page_reassign_children: Reatribuir páginas subordinadas a esta página principal
826
  text_wiki_page_nullify_children: Manter páginas subordinadas como páginas raíz
827
  text_wiki_page_destroy_children: Apagar as páginas subordinadas e todos os seus descendentes
828
  setting_password_min_length: Tamanho mínimo de palavra-chave
829
  field_group_by: Agrupar resultados por
830
  mail_subject_wiki_content_updated: "A página Wiki '%{id}' foi actualizada"
831
  label_wiki_content_added: Página Wiki adicionada
832
  mail_subject_wiki_content_added: "A página Wiki '%{id}' foi adicionada"
833
  mail_body_wiki_content_added: A página Wiki '%{id}' foi adicionada por %{author}.
834
  label_wiki_content_updated: Página Wiki actualizada
835
  mail_body_wiki_content_updated: A página Wiki '%{id}' foi actualizada por %{author}.
836
  permission_add_project: Criar projecto
837
  setting_new_project_user_role_id: Função atribuída a um utilizador não-administrador que cria um projecto
838
  label_view_all_revisions: Ver todas as revisões
839
  label_tag: Etiqueta
840
  label_branch: Ramo
841
  error_no_tracker_in_project: Este projecto não tem associado nenhum tipo de tarefas. Verifique as definições do projecto.
842
  error_no_default_issue_status: Não está definido um estado padrão para as tarefas. Verifique a sua configuração (dirija-se a "Administração -> Estados da tarefa").
843
  label_group_plural: Grupos
844
  label_group: Grupo
845
  label_group_new: Novo grupo
846
  label_time_entry_plural: Tempo registado
847
  text_journal_changed: "%{label} alterado de %{old} para %{new}"
848
  text_journal_set_to: "%{label} configurado como %{value}"
849
  text_journal_deleted: "%{label} apagou (%{old})"
850
  text_journal_added: "%{label} %{value} adicionado"
851
  field_active: Activo
852
  enumeration_system_activity: Actividade de sistema
853
  permission_delete_issue_watchers: Apagar observadores
854
  version_status_closed: fechado
855
  version_status_locked: protegido
856
  version_status_open: aberto
857
  error_can_not_reopen_issue_on_closed_version: Não é possível voltar a abrir uma tarefa atribuída a uma versão fechada
858
  label_user_anonymous: Anónimo
859
  button_move_and_follow: Mover e seguir
860
  setting_default_projects_modules: Módulos activos por predefinição para novos projectos
861
  setting_gravatar_default: Imagem Gravatar predefinida
862
  field_sharing: Partilha
863
  label_version_sharing_hierarchy: Com hierarquia do projecto
864
  label_version_sharing_system: Com todos os projectos
865
  label_version_sharing_descendants: Com os sub-projectos
866
  label_version_sharing_tree: Com árvore do projecto
867
  label_version_sharing_none: Não partilhado
868
  error_can_not_archive_project: Não é possível arquivar este projecto
869
  button_duplicate: Duplicar
870
  button_copy_and_follow: Copiar e seguir
871
  label_copy_source: Origem
872
  setting_issue_done_ratio: Calcular a percentagem de progresso da tarefa
873
  setting_issue_done_ratio_issue_status: Através do estado da tarefa
874
  error_issue_done_ratios_not_updated: Percentagens de progresso da tarefa não foram actualizadas.
875
  error_workflow_copy_target: Seleccione os tipos de tarefas e funções desejadas
876
  setting_issue_done_ratio_issue_field: Através do campo da tarefa
877
  label_copy_same_as_target: Mesmo que o alvo
878
  label_copy_target: Alvo
879
  notice_issue_done_ratios_updated: Percentagens de progresso da tarefa actualizadas.
880
  error_workflow_copy_source: Seleccione um tipo de tarefa ou função de origem
881
  label_update_issue_done_ratios: Actualizar percentagens de progresso da tarefa
882
  setting_start_of_week: Iniciar calendários a
883
  permission_view_issues: Ver tarefas
884
  label_display_used_statuses_only: Só exibir estados empregues por este tipo de tarefa
885
  label_revision_id: Revisão %{value}
886
  label_api_access_key: Chave de acesso API
887
  label_api_access_key_created_on: Chave de acesso API criada há %{value}
888
  label_feeds_access_key: Chave de acesso RSS
889
  notice_api_access_key_reseted: A sua chave de acesso API foi reinicializada.
890
  setting_rest_api_enabled: Activar serviço Web REST
891
  label_missing_api_access_key: Chave de acesso API em falta
892
  label_missing_feeds_access_key: Chave de acesso RSS em falta
893
  button_show: Mostrar
894
  text_line_separated: Vários valores permitidos (uma linha para cada valor).
895
  setting_mail_handler_body_delimiters: Truncar mensagens de correio electrónico após uma destas linhas
896
  permission_add_subprojects: Criar sub-projectos
897
  label_subproject_new: Novo sub-projecto
898
  text_own_membership_delete_confirmation: |-
899
    Está prestes a eliminar parcial ou totalmente as suas permissões. É possível que não possa editar o projecto após esta acção.
900
    Tem a certeza de que deseja continuar?
901
  label_close_versions: Fechar versões completas
902
  label_board_sticky: Fixar mensagem
903
  label_board_locked: Proteger
904
  permission_export_wiki_pages: Exportar páginas Wiki
905
  setting_cache_formatted_text: Colocar formatação do texto na memória cache
906
  permission_manage_project_activities: Gerir actividades do projecto
907
  error_unable_delete_issue_status: Não foi possível apagar o estado da tarefa
908
  label_profile: Perfil
909
  permission_manage_subtasks: Gerir sub-tarefas
910
  field_parent_issue: Tarefa principal
911
  label_subtask_plural: Sub-tarefa
912
  label_project_copy_notifications: Enviar notificações por e-mail durante a cópia do projecto
913
  error_can_not_delete_custom_field: Não foi possível apagar o campo personalizado
914
  error_unable_to_connect: Não foi possível ligar (%{value})
915
  error_can_not_remove_role: Esta função está actualmente em uso e não pode ser apagada.
916
  error_can_not_delete_tracker: Existem ainda tarefas nesta categoria. Não é possível apagar este tipo de tarefa.
917
  field_principal: Principal
918
  label_my_page_block: Bloco da minha página
919
  notice_failed_to_save_members: "Erro ao guardar o(s) membro(s): %{errors}."
920
  text_zoom_out: Ampliar
921
  text_zoom_in: Reduzir
922
  notice_unable_delete_time_entry: Não foi possível apagar a entrada de tempo registado.
923
  label_overall_spent_time: Total de tempo registado
924
  field_time_entries: Tempo registado
925
  project_module_gantt: Gantt
926
  project_module_calendar: Calendário
927
  button_edit_associated_wikipage: "Editar página Wiki associada: %{page_title}"
928
  field_text: Campo de texto
929
  label_user_mail_option_only_owner: Apenas para tarefas das quais sou proprietário
930
  setting_default_notification_option: Opção predefinida de notificação
931
  label_user_mail_option_only_my_events: Apenas para tarefas que observo ou em que estou envolvido
932
  label_user_mail_option_only_assigned: Apenas para tarefas que me foram atribuídas
933
  label_user_mail_option_none: Sem eventos
934
  field_member_of_group: Grupo do detentor de atribuição
935
  field_assigned_to_role: Papel do detentor de atribuição
936
  notice_not_authorized_archived_project: O projecto a que tentou aceder foi arquivado.
937
  label_principal_search: "Procurar utilizador ou grupo:"
938
  label_user_search: "Procurar utilizador:"
939
  field_visible: Visível
940
  setting_emails_header: Cabeçalho dos e-mails
941
  setting_commit_logtime_activity_id: Actividade para tempo registado
942
  text_time_logged_by_changeset: Aplicado no conjunto de alterações %{value}.
943
  setting_commit_logtime_enabled: Activar registo de tempo
944
  notice_gantt_chart_truncated: O gráfico foi truncado porque excede o número máximo de itens visível (%{máx.})
945
  setting_gantt_items_limit: Número máximo de itens exibidos no gráfico Gantt
946
  field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
947
  text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
948
  label_my_queries: My custom queries
949
  text_journal_changed_no_detail: "%{label} updated"
950
  label_news_comment_added: Comment added to a news
951
  button_expand_all: Expand all
952
  button_collapse_all: Collapse all
953
  label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee
954
  label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author
955
  label_bulk_edit_selected_time_entries: Bulk edit selected time entries
956
  text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)?
957
  label_role_anonymous: Anonymous
958
  label_role_non_member: Non member
959
  label_issue_note_added: Note added
960
  label_issue_status_updated: Status updated
961
  label_issue_priority_updated: Priority updated
962
  label_issues_visibility_own: Issues created by or assigned to the user
963
  field_issues_visibility: Issues visibility
964
  label_issues_visibility_all: All issues
965
  permission_set_own_issues_private: Set own issues public or private
966
  field_is_private: Private
967
  permission_set_issues_private: Set issues public or private
968
  label_issues_visibility_public: All non private issues
969
  text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s).
970
  field_commit_logs_encoding: Encoding das mensagens de commit
971
  field_scm_path_encoding: Path encoding
972
  text_scm_path_encoding_note: "Default: UTF-8"
973
  field_path_to_repository: Path to repository
974
  field_root_directory: Root directory
975
  field_cvs_module: Module
976
  field_cvsroot: CVSROOT
977
  text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo)
978
  text_scm_command: Command
979
  text_scm_command_version: Version
980
  label_git_report_last_commit: Report last commit for files and directories
981
  text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
982
  text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
983
  notice_issue_successful_create: Issue %{id} created.
984
  label_between: between
985
  setting_issue_group_assignment: Allow issue assignment to groups
986
  label_diff: diff
987
  text_git_repository_note: Repository is bare and local (e.g. /gitrepo, c:\gitrepo)
988
  description_query_sort_criteria_direction: Sort direction
989
  description_project_scope: Search scope
990
  description_filter: Filter
991
  description_user_mail_notification: Mail notification settings
992
  description_date_from: Enter start date
993
  description_message_content: Message content
994
  description_available_columns: Available Columns
995
  description_date_range_interval: Choose range by selecting start and end date
996
  description_issue_category_reassign: Choose issue category
997
  description_search: Searchfield
998
  description_notes: Notes
999
  description_date_range_list: Choose range from list
1000
  description_choose_project: Projects
1001
  description_date_to: Enter end date
1002
  description_query_sort_criteria_attribute: Sort attribute
1003
  description_wiki_subpages_reassign: Choose new parent page
1004
  description_selected_columns: Selected Columns
1005
  label_parent_revision: Parent
1006
  label_child_revision: Child
1007
  error_scm_annotate_big_text_file: The entry cannot be annotated, as it exceeds the maximum text file size.
1008
  setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
1009
  button_edit_section: Edit this section
1010
  setting_repositories_encodings: Attachments and repositories encodings
1011
  description_all_columns: All Columns
1012
  button_export: Export
1013
  label_export_options: "%{export_format} export options"
1014
  error_attachment_too_big: This file cannot be uploaded because it exceeds the maximum allowed file size (%{max_size})
1015
  notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}."
1016
  label_x_issues:
1017
    zero:  0 tarefa
1018
    one:   1 tarefa
1019
    other: "%{count} tarefas"
1020
  label_repository_new: New repository
1021
  field_repository_is_default: Main repository
1022
  label_copy_attachments: Copy attachments
1023
  label_item_position: "%{position}/%{count}"
1024
  label_completed_versions: Completed versions
1025
  text_project_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
1026
  field_multiple: Multiple values
1027
  setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed
1028
  text_issue_conflict_resolution_add_notes: Add my notes and discard my other changes
1029
  text_issue_conflict_resolution_overwrite: Apply my changes anyway (previous notes will be kept but some changes may be overwritten)
1030
  notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
1031
  text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
1032
  permission_manage_related_issues: Manage related issues
1033
  field_auth_source_ldap_filter: LDAP filter
1034
  label_search_for_watchers: Search for watchers to add
1035
  notice_account_deleted: Your account has been permanently deleted.
1036
  setting_unsubscribe: Allow users to delete their own account
1037
  button_delete_my_account: Delete my account
1038
  text_account_destroy_confirmation: |-
1039
    Are you sure you want to proceed?
1040
    Your account will be permanently deleted, with no way to reactivate it.
1041
  error_session_expired: Your session has expired. Please login again.
1042
  text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours."
1043
  setting_session_lifetime: Session maximum lifetime
1044
  setting_session_timeout: Session inactivity timeout
1045
  label_session_expiration: Session expiration
1046
  permission_close_project: Close / reopen the project
1047
  label_show_closed_projects: View closed projects
1048
  button_close: Close
1049
  button_reopen: Reopen
1050
  project_status_active: active
1051
  project_status_closed: closed
1052
  project_status_archived: archived
1053
  text_project_closed: This project is closed and read-only.
1054
  notice_user_successful_create: User %{id} created.
1055
  field_core_fields: Standard fields
1056
  field_timeout: Timeout (in seconds)
1057
  setting_thumbnails_enabled: Display attachment thumbnails
1058
  setting_thumbnails_size: Thumbnails size (in pixels)
1059
  label_status_transitions: Status transitions
1060
  label_fields_permissions: Fields permissions
1061
  label_readonly: Read-only
1062
  label_required: Required
1063
  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
1064
  field_board_parent: Parent forum
1065
  label_attribute_of_project: Project's %{name}
1066
  label_attribute_of_author: Author's %{name}
1067
  label_attribute_of_assigned_to: Assignee's %{name}
1068
  label_attribute_of_fixed_version: Target version's %{name}
1069
  label_copy_subtasks: Copy subtasks
1070
  label_copied_to: copied to
1071
  label_copied_from: copied from
1072
  label_any_issues_in_project: any issues in project
1073
  label_any_issues_not_in_project: any issues not in project
1074
  field_private_notes: Private notes
1075
  permission_view_private_notes: View private notes
1076
  permission_set_notes_private: Set notes as private
1077
  label_no_issues_in_project: no issues in project
1078
  label_any: todos
1079
  label_last_n_weeks: last %{count} weeks
1080
  setting_cross_project_subtasks: Allow cross-project subtasks
1081
  label_cross_project_descendants: Com os sub-projectos
1082
  label_cross_project_tree: Com árvore do projecto
1083
  label_cross_project_hierarchy: Com hierarquia do projecto
1084
  label_cross_project_system: Com todos os projectos
1085
  button_hide: Hide
1086
  setting_non_working_week_days: Non-working days
1087
  label_in_the_next_days: in the next
1088
  label_in_the_past_days: in the past
.svn/pristine/0c/0c52d5a82094593c338acef265e5dd3106b35b1d.svn-base
1
# Redmine - project management software
2
# Copyright (C) 2006-2012  Jean-Philippe Lang
3
#
4
# This program is free software; you can redistribute it and/or
5
# modify it under the terms of the GNU General Public License
6
# as published by the Free Software Foundation; either version 2
7
# of the License, or (at your option) any later version.
8
#
9
# This program is distributed in the hope that it will be useful,
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
# GNU General Public License for more details.
13
#
14
# You should have received a copy of the GNU General Public License
15
# along with this program; if not, write to the Free Software
16
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
17

  
18
require File.expand_path('../../test_helper', __FILE__)
19

  
20
class ApplicationTest < ActionController::IntegrationTest
21
  include Redmine::I18n
22

  
23
  fixtures :projects, :trackers, :issue_statuses, :issues,
24
           :enumerations, :users, :issue_categories,
25
           :projects_trackers,
26
           :roles,
27
           :member_roles,
28
           :members,
29
           :enabled_modules,
30
           :workflows
31

  
32
  def test_set_localization
33
    Setting.default_language = 'en'
34

  
35
    # a french user
36
    get 'projects', { }, 'HTTP_ACCEPT_LANGUAGE' => 'fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3'
37
    assert_response :success
38
    assert_tag :tag => 'h2', :content => 'Projets'
39
    assert_equal :fr, current_language
40

  
41
    # then an italien user
42
    get 'projects', { }, 'HTTP_ACCEPT_LANGUAGE' => 'it;q=0.8,en-us;q=0.5,en;q=0.3'
43
    assert_response :success
44
    assert_tag :tag => 'h2', :content => 'Progetti'
45
    assert_equal :it, current_language
46

  
47
    # not a supported language: default language should be used
48
    get 'projects', { }, 'HTTP_ACCEPT_LANGUAGE' => 'zz'
49
    assert_response :success
50
    assert_tag :tag => 'h2', :content => 'Projects'
51
  end
52

  
53
  def test_token_based_access_should_not_start_session
54
    # issue of a private project
55
    get 'issues/4.atom'
56
    assert_response 302
57

  
58
    rss_key = User.find(2).rss_key
59
    get "issues/4.atom?key=#{rss_key}"
60
    assert_response 200
61
    assert_nil session[:user_id]
62
  end
63

  
64
  def test_missing_template_should_respond_with_404
65
    get '/login.png'
66
    assert_response 404
67
  end
68
end
.svn/pristine/0c/0c62ded19e437ec59035548bf5b8cb434884827a.svn-base
1
# Redmine - project management software
2
# Copyright (C) 2006-2012  Jean-Philippe Lang
3
#
4
# This program is free software; you can redistribute it and/or
5
# modify it under the terms of the GNU General Public License
6
# as published by the Free Software Foundation; either version 2
7
# of the License, or (at your option) any later version.
8
#
9
# This program is distributed in the hope that it will be useful,
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
# GNU General Public License for more details.
13
#
14
# You should have received a copy of the GNU General Public License
15
# along with this program; if not, write to the Free Software
16
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
17

  
18
class Issue < ActiveRecord::Base
19
  include Redmine::SafeAttributes
20
  include Redmine::Utils::DateCalculation
21

  
22
  belongs_to :project
23
  belongs_to :tracker
24
  belongs_to :status, :class_name => 'IssueStatus', :foreign_key => 'status_id'
25
  belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
26
  belongs_to :assigned_to, :class_name => 'Principal', :foreign_key => 'assigned_to_id'
27
  belongs_to :fixed_version, :class_name => 'Version', :foreign_key => 'fixed_version_id'
28
  belongs_to :priority, :class_name => 'IssuePriority', :foreign_key => 'priority_id'
29
  belongs_to :category, :class_name => 'IssueCategory', :foreign_key => 'category_id'
30

  
31
  has_many :journals, :as => :journalized, :dependent => :destroy
32
  has_many :visible_journals,
33
    :class_name => 'Journal',
34
    :as => :journalized,
35
    :conditions => Proc.new { 
36
      ["(#{Journal.table_name}.private_notes = ? OR (#{Project.allowed_to_condition(User.current, :view_private_notes)}))", false]
37
    },
38
    :readonly => true
39

  
40
  has_many :time_entries, :dependent => :delete_all
41
  has_and_belongs_to_many :changesets, :order => "#{Changeset.table_name}.committed_on ASC, #{Changeset.table_name}.id ASC"
42

  
43
  has_many :relations_from, :class_name => 'IssueRelation', :foreign_key => 'issue_from_id', :dependent => :delete_all
44
  has_many :relations_to, :class_name => 'IssueRelation', :foreign_key => 'issue_to_id', :dependent => :delete_all
45

  
46
  acts_as_nested_set :scope => 'root_id', :dependent => :destroy
47
  acts_as_attachable :after_add => :attachment_added, :after_remove => :attachment_removed
48
  acts_as_customizable
49
  acts_as_watchable
50
  acts_as_searchable :columns => ['subject', "#{table_name}.description", "#{Journal.table_name}.notes"],
51
                     :include => [:project, :visible_journals],
52
                     # sort by id so that limited eager loading doesn't break with postgresql
53
                     :order_column => "#{table_name}.id"
54
  acts_as_event :title => Proc.new {|o| "#{o.tracker.name} ##{o.id} (#{o.status}): #{o.subject}"},
55
                :url => Proc.new {|o| {:controller => 'issues', :action => 'show', :id => o.id}},
56
                :type => Proc.new {|o| 'issue' + (o.closed? ? ' closed' : '') }
57

  
58
  acts_as_activity_provider :find_options => {:include => [:project, :author, :tracker]},
59
                            :author_key => :author_id
60

  
61
  DONE_RATIO_OPTIONS = %w(issue_field issue_status)
62

  
63
  attr_reader :current_journal
64
  delegate :notes, :notes=, :private_notes, :private_notes=, :to => :current_journal, :allow_nil => true
65

  
66
  validates_presence_of :subject, :priority, :project, :tracker, :author, :status
67

  
68
  validates_length_of :subject, :maximum => 255
69
  validates_inclusion_of :done_ratio, :in => 0..100
70
  validates_numericality_of :estimated_hours, :allow_nil => true
71
  validate :validate_issue, :validate_required_fields
72

  
73
  scope :visible,
74
        lambda {|*args| { :include => :project,
75
                          :conditions => Issue.visible_condition(args.shift || User.current, *args) } }
76

  
77
  scope :open, lambda {|*args|
78
    is_closed = args.size > 0 ? !args.first : false
79
    {:conditions => ["#{IssueStatus.table_name}.is_closed = ?", is_closed], :include => :status}
80
  }
81

  
82
  scope :recently_updated, :order => "#{Issue.table_name}.updated_on DESC"
83
  scope :on_active_project, :include => [:status, :project, :tracker],
84
                            :conditions => ["#{Project.table_name}.status=#{Project::STATUS_ACTIVE}"]
85

  
86
  before_create :default_assign
87
  before_save :close_duplicates, :update_done_ratio_from_issue_status, :force_updated_on_change
88
  after_save {|issue| issue.send :after_project_change if !issue.id_changed? && issue.project_id_changed?} 
89
  after_save :reschedule_following_issues, :update_nested_set_attributes, :update_parent_attributes, :create_journal
90
  # Should be after_create but would be called before previous after_save callbacks
91
  after_save :after_create_from_copy
92
  after_destroy :update_parent_attributes
93

  
94
  # Returns a SQL conditions string used to find all issues visible by the specified user
95
  def self.visible_condition(user, options={})
96
    Project.allowed_to_condition(user, :view_issues, options) do |role, user|
97
      if user.logged?
98
        case role.issues_visibility
99
        when 'all'
100
          nil
101
        when 'default'
102
          user_ids = [user.id] + user.groups.map(&:id)
103
          "(#{table_name}.is_private = #{connection.quoted_false} OR #{table_name}.author_id = #{user.id} OR #{table_name}.assigned_to_id IN (#{user_ids.join(',')}))"
104
        when 'own'
105
          user_ids = [user.id] + user.groups.map(&:id)
106
          "(#{table_name}.author_id = #{user.id} OR #{table_name}.assigned_to_id IN (#{user_ids.join(',')}))"
107
        else
108
          '1=0'
109
        end
110
      else
111
        "(#{table_name}.is_private = #{connection.quoted_false})"
112
      end
113
    end
114
  end
115

  
116
  # Returns true if usr or current user is allowed to view the issue
117
  def visible?(usr=nil)
118
    (usr || User.current).allowed_to?(:view_issues, self.project) do |role, user|
119
      if user.logged?
120
        case role.issues_visibility
121
        when 'all'
122
          true
123
        when 'default'
124
          !self.is_private? || (self.author == user || user.is_or_belongs_to?(assigned_to))
125
        when 'own'
126
          self.author == user || user.is_or_belongs_to?(assigned_to)
127
        else
128
          false
129
        end
130
      else
131
        !self.is_private?
132
      end
133
    end
134
  end
135

  
136
  def initialize(attributes=nil, *args)
137
    super
138
    if new_record?
139
      # set default values for new records only
140
      self.status ||= IssueStatus.default
141
      self.priority ||= IssuePriority.default
142
      self.watcher_user_ids = []
143
    end
144
  end
145

  
146
  # AR#Persistence#destroy would raise and RecordNotFound exception
147
  # if the issue was already deleted or updated (non matching lock_version).
148
  # This is a problem when bulk deleting issues or deleting a project
149
  # (because an issue may already be deleted if its parent was deleted
150
  # first).
151
  # The issue is reloaded by the nested_set before being deleted so
152
  # the lock_version condition should not be an issue but we handle it.
153
  def destroy
154
    super
155
  rescue ActiveRecord::RecordNotFound
156
    # Stale or already deleted
157
    begin
158
      reload
159
    rescue ActiveRecord::RecordNotFound
160
      # The issue was actually already deleted
161
      @destroyed = true
162
      return freeze
163
    end
164
    # The issue was stale, retry to destroy
165
    super
166
  end
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff