@@ -0,0 +1,37 | |||
|
1 | # Redmine - project management software | |
|
2 | # Copyright (C) 2006-2008 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.dirname(__FILE__) + '/../test_helper' | |
|
19 | ||
|
20 | class DocumentTest < Test::Unit::TestCase | |
|
21 | fixtures :projects, :enumerations, :documents | |
|
22 | ||
|
23 | def test_create | |
|
24 | doc = Document.new(:project => Project.find(1), :title => 'New document', :category => Enumeration.find_by_name('User documentation')) | |
|
25 | assert doc.save | |
|
26 | end | |
|
27 | ||
|
28 | def test_create_with_default_category | |
|
29 | # Sets a default category | |
|
30 | e = Enumeration.find_by_name('Technical documentation') | |
|
31 | e.update_attributes(:is_default => true) | |
|
32 | ||
|
33 | doc = Document.new(:project => Project.find(1), :title => 'New document') | |
|
34 | assert_equal e, doc.category | |
|
35 | assert doc.save | |
|
36 | end | |
|
37 | end |
@@ -126,10 +126,14 class ApplicationController < ActionController::Base | |||
|
126 | 126 | def redirect_back_or_default(default) |
|
127 | 127 | back_url = CGI.unescape(params[:back_url].to_s) |
|
128 | 128 | if !back_url.blank? |
|
129 | uri = URI.parse(back_url) | |
|
130 | # do not redirect user to another host or to the login or register page | |
|
131 | if (uri.relative? || (uri.host == request.host)) && !uri.path.match(%r{/(login|account/register)}) | |
|
132 | redirect_to(back_url) and return | |
|
129 | begin | |
|
130 | uri = URI.parse(back_url) | |
|
131 | # do not redirect user to another host or to the login or register page | |
|
132 | if (uri.relative? || (uri.host == request.host)) && !uri.path.match(%r{/(login|account/register)}) | |
|
133 | redirect_to(back_url) and return | |
|
134 | end | |
|
135 | rescue URI::InvalidURIError | |
|
136 | # redirect to default | |
|
133 | 137 | end |
|
134 | 138 | end |
|
135 | 139 | redirect_to default |
@@ -35,6 +35,7 class DocumentsController < ApplicationController | |||
|
35 | 35 | else |
|
36 | 36 | @grouped = documents.group_by(&:category) |
|
37 | 37 | end |
|
38 | @document = @project.documents.build | |
|
38 | 39 | render :layout => false if request.xhr? |
|
39 | 40 | end |
|
40 | 41 |
@@ -22,6 +22,7 class JournalsController < ApplicationController | |||
|
22 | 22 | if request.post? |
|
23 | 23 | @journal.update_attributes(:notes => params[:notes]) if params[:notes] |
|
24 | 24 | @journal.destroy if @journal.details.empty? && @journal.notes.blank? |
|
25 | call_hook(:controller_journals_edit_post, { :journal => @journal, :params => params}) | |
|
25 | 26 | respond_to do |format| |
|
26 | 27 | format.html { redirect_to :controller => 'issues', :action => 'show', :id => @journal.journalized_id } |
|
27 | 28 | format.js { render :action => 'update' } |
@@ -18,6 +18,7 | |||
|
18 | 18 | require 'coderay' |
|
19 | 19 | require 'coderay/helpers/file_type' |
|
20 | 20 | require 'forwardable' |
|
21 | require 'cgi' | |
|
21 | 22 | |
|
22 | 23 | module ApplicationHelper |
|
23 | 24 | include Redmine::WikiFormatting::Macros::Definitions |
@@ -525,7 +526,7 module ApplicationHelper | |||
|
525 | 526 | |
|
526 | 527 | def back_url_hidden_field_tag |
|
527 | 528 | back_url = params[:back_url] || request.env['HTTP_REFERER'] |
|
528 | hidden_field_tag('back_url', back_url) unless back_url.blank? | |
|
529 | hidden_field_tag('back_url', CGI.escape(back_url)) unless back_url.blank? | |
|
529 | 530 | end |
|
530 | 531 | |
|
531 | 532 | def check_all_links(form_name) |
@@ -28,4 +28,10 class Document < ActiveRecord::Base | |||
|
28 | 28 | |
|
29 | 29 | validates_presence_of :project, :title, :category |
|
30 | 30 | validates_length_of :title, :maximum => 60 |
|
31 | ||
|
32 | def after_initialize | |
|
33 | if new_record? | |
|
34 | self.category ||= Enumeration.default('DCAT') | |
|
35 | end | |
|
36 | end | |
|
31 | 37 | end |
@@ -44,7 +44,9 class Enumeration < ActiveRecord::Base | |||
|
44 | 44 | end |
|
45 | 45 | |
|
46 | 46 | def before_save |
|
47 | Enumeration.update_all("is_default = #{connection.quoted_false}", {:opt => opt}) if is_default? | |
|
47 | if is_default? && is_default_changed? | |
|
48 | Enumeration.update_all("is_default = #{connection.quoted_false}", {:opt => opt}) | |
|
49 | end | |
|
48 | 50 | end |
|
49 | 51 | |
|
50 | 52 | def objects_count |
@@ -178,6 +178,11 class User < ActiveRecord::Base | |||
|
178 | 178 | token = Token.find_by_action_and_value('autologin', key) |
|
179 | 179 | token && (token.created_on > Setting.autologin.to_i.day.ago) && token.user.active? ? token.user : nil |
|
180 | 180 | end |
|
181 | ||
|
182 | # Makes find_by_mail case-insensitive | |
|
183 | def self.find_by_mail(mail) | |
|
184 | find(:first, :conditions => ["LOWER(mail) = ?", mail.to_s.downcase]) | |
|
185 | end | |
|
181 | 186 | |
|
182 | 187 | # Sort users by their display names |
|
183 | 188 | def <=>(user) |
@@ -1,6 +1,7 | |||
|
1 | 1 | <% form_remote_tag(:url => {}, :html => { :id => "journal-#{@journal.id}-form" }) do %> |
|
2 | 2 | <%= text_area_tag :notes, @journal.notes, :class => 'wiki-edit', |
|
3 | 3 | :rows => (@journal.notes.blank? ? 10 : [[10, @journal.notes.length / 50].max, 100].min) %> |
|
4 | <%= call_hook(:view_journals_notes_form_after_notes, { :journal => @journal}) %> | |
|
4 | 5 | <p><%= submit_tag l(:button_save) %> |
|
5 | 6 | <%= link_to l(:button_cancel), '#', :onclick => "Element.remove('journal-#{@journal.id}-form'); " + |
|
6 | 7 | "Element.show('journal-#{@journal.id}-notes'); return false;" %></p> |
@@ -6,3 +6,5 else | |||
|
6 | 6 | page.show "journal-#{@journal.id}-notes" |
|
7 | 7 | page.remove "journal-#{@journal.id}-form" |
|
8 | 8 | end |
|
9 | ||
|
10 | call_hook(:view_journals_update_rjs_bottom, { :page => page, :journal => @journal }) |
@@ -344,6 +344,7 label_last_updates_plural: %d zuletzt aktualisierten | |||
|
344 | 344 | label_registered_on: Angemeldet am |
|
345 | 345 | label_activity: Aktivität |
|
346 | 346 | label_overall_activity: Aktivität aller Projekte anzeigen |
|
347 | label_user_activity: "Aktivität von %s" | |
|
347 | 348 | label_new: Neu |
|
348 | 349 | label_logged_as: Angemeldet als |
|
349 | 350 | label_environment: Environment |
@@ -543,6 +544,7 label_send_test_email: Test-E-Mail senden | |||
|
543 | 544 | label_feeds_access_key_created_on: Atom-Zugriffsschlüssel vor %s erstellt |
|
544 | 545 | label_module_plural: Module |
|
545 | 546 | label_added_time_by: Von %s vor %s hinzugefügt |
|
547 | label_updated_time_by: Von %s vor %s aktualisiert | |
|
546 | 548 | label_updated_time: Vor %s aktualisiert |
|
547 | 549 | label_jump_to_a_project: Zu einem Projekt springen... |
|
548 | 550 | label_file_plural: Dateien |
@@ -694,7 +696,5 default_activity_development: Entwicklung | |||
|
694 | 696 | enumeration_issue_priorities: Ticket-Prioritäten |
|
695 | 697 | enumeration_doc_categories: Dokumentenkategorien |
|
696 | 698 | enumeration_activities: Aktivitäten (Zeiterfassung) |
|
697 | label_user_activity: "%s's activity" | |
|
698 | label_updated_time_by: Updated by %s %s ago | |
|
699 | 699 | text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' |
|
700 | 700 | setting_diff_max_lines_displayed: Max number of diff lines displayed |
@@ -19,11 +19,11 actionview_datehelper_time_in_words_second_less_than_plural: menos de %d segundo | |||
|
19 | 19 | actionview_instancetag_blank_option: Por favor seleccione |
|
20 | 20 | activerecord_error_accepted: debe ser aceptado |
|
21 | 21 | activerecord_error_blank: no puede estar en blanco |
|
22 |
activerecord_error_circular_dependency: Esta relación podría crear una dependencia |
|
|
22 | activerecord_error_circular_dependency: Esta relación podría crear una dependencia circular | |
|
23 | 23 | activerecord_error_confirmation: la confirmación no coincide |
|
24 | 24 | activerecord_error_empty: no puede estar vacío |
|
25 | 25 | activerecord_error_exclusion: está reservado |
|
26 |
activerecord_error_greater_than_start_date: debe ser la fecha |
|
|
26 | activerecord_error_greater_than_start_date: debe ser posterior a la fecha de comienzo | |
|
27 | 27 | activerecord_error_inclusion: no está incluído en la lista |
|
28 | 28 | activerecord_error_invalid: no es válido |
|
29 | 29 | activerecord_error_not_a_date: no es una fecha válida |
@@ -140,11 +140,11 field_is_default: Estado por defecto | |||
|
140 | 140 | field_is_filter: Usado como filtro |
|
141 | 141 | field_is_for_all: Para todos los proyectos |
|
142 | 142 | field_is_in_chlog: Consultar las peticiones en el histórico |
|
143 |
field_is_in_roadmap: Consultar las peticiones en |
|
|
143 | field_is_in_roadmap: Consultar las peticiones en la planificación | |
|
144 | 144 | field_is_public: Público |
|
145 | 145 | field_is_required: Obligatorio |
|
146 | 146 | field_issue: Petición |
|
147 |
field_issue_to_id: Petición |
|
|
147 | field_issue_to_id: Petición relacionada | |
|
148 | 148 | field_language: Idioma |
|
149 | 149 | field_last_login_on: Última conexión |
|
150 | 150 | field_lastname: Apellido |
@@ -178,7 +178,7 field_subproject: Proyecto secundario | |||
|
178 | 178 | field_summary: Resumen |
|
179 | 179 | field_time_zone: Zona horaria |
|
180 | 180 | field_title: Título |
|
181 |
field_tracker: T |
|
|
181 | field_tracker: Tipo | |
|
182 | 182 | field_type: Tipo |
|
183 | 183 | field_updated_on: Actualizado |
|
184 | 184 | field_url: URL |
@@ -215,7 +215,7 label_ago: hace | |||
|
215 | 215 | label_all: todos |
|
216 | 216 | label_all_time: todo el tiempo |
|
217 | 217 | label_all_words: Todas las palabras |
|
218 |
label_and_its_subprojects: %s y |
|
|
218 | label_and_its_subprojects: %s y proyectos secundarios | |
|
219 | 219 | label_applied_status: Aplicar estado |
|
220 | 220 | label_assigned_to_me_issues: Peticiones que me están asignadas |
|
221 | 221 | label_associated_revisions: Revisiones asociadas |
@@ -234,7 +234,7 label_blocks: bloquea a | |||
|
234 | 234 | label_board: Foro |
|
235 | 235 | label_board_new: Nuevo foro |
|
236 | 236 | label_board_plural: Foros |
|
237 | label_boolean: Boleano | |
|
237 | label_boolean: Booleano | |
|
238 | 238 | label_browse: Hojear |
|
239 | 239 | label_bulk_edit_selected_issues: Editar las peticiones seleccionadas |
|
240 | 240 | label_calendar: Calendario |
@@ -293,7 +293,7 label_enumerations: Listas de valores | |||
|
293 | 293 | label_environment: Entorno |
|
294 | 294 | label_equals: igual |
|
295 | 295 | label_example: Ejemplo |
|
296 | label_export_to: Exportar a | |
|
296 | label_export_to: 'Exportar a:' | |
|
297 | 297 | label_f_hour: %.2f hora |
|
298 | 298 | label_f_hour_plural: %.2f horas |
|
299 | 299 | label_feed_plural: Feeds |
@@ -327,7 +327,7 label_issue_category_new: Nueva categoría | |||
|
327 | 327 | label_issue_category_plural: Categorías de las peticiones |
|
328 | 328 | label_issue_new: Nueva petición |
|
329 | 329 | label_issue_plural: Peticiones |
|
330 | label_issue_status: Estado de petición | |
|
330 | label_issue_status: Estado de la petición | |
|
331 | 331 | label_issue_status_new: Nuevo estado |
|
332 | 332 | label_issue_status_plural: Estados de las peticiones |
|
333 | 333 | label_issue_tracking: Peticiones |
@@ -337,7 +337,7 label_issue_watchers: Seguidores | |||
|
337 | 337 | label_issues_by: Peticiones por %s |
|
338 | 338 | label_jump_to_a_project: Ir al proyecto... |
|
339 | 339 | label_language_based: Basado en el idioma |
|
340 |
label_last_changes: %d cambios |
|
|
340 | label_last_changes: últimos %d cambios | |
|
341 | 341 | label_last_login: Última conexión |
|
342 | 342 | label_last_month: último mes |
|
343 | 343 | label_last_n_days: últimos %d días |
@@ -384,7 +384,7 label_news_plural: Noticias | |||
|
384 | 384 | label_news_view_all: Ver todas las noticias |
|
385 | 385 | label_next: Siguiente |
|
386 | 386 | label_no_change_option: (Sin cambios) |
|
387 |
label_no_data: Ning |
|
|
387 | label_no_data: Ningún dato a mostrar | |
|
388 | 388 | label_nobody: nadie |
|
389 | 389 | label_none: ninguno |
|
390 | 390 | label_not_contains: no contiene |
@@ -397,7 +397,7 label_options: Opciones | |||
|
397 | 397 | label_overall_activity: Actividad global |
|
398 | 398 | label_overview: Vistazo |
|
399 | 399 | label_password_lost: ¿Olvidaste la contraseña? |
|
400 |
label_per_page: Por |
|
|
400 | label_per_page: Por página | |
|
401 | 401 | label_permissions: Permisos |
|
402 | 402 | label_permissions_report: Informe de permisos |
|
403 | 403 | label_personalize_page: Personalizar esta página |
@@ -438,7 +438,7 label_result_plural: Resultados | |||
|
438 | 438 | label_reverse_chronological_order: En orden cronológico inverso |
|
439 | 439 | label_revision: Revisión |
|
440 | 440 | label_revision_plural: Revisiones |
|
441 |
label_roadmap: |
|
|
441 | label_roadmap: Planificación | |
|
442 | 442 | label_roadmap_due_in: Finaliza en %s |
|
443 | 443 | label_roadmap_no_issues: No hay peticiones para esta versión |
|
444 | 444 | label_roadmap_overdue: %s tarde |
@@ -452,7 +452,7 label_search_titles_only: Buscar sólo en títulos | |||
|
452 | 452 | label_send_information: Enviar información de la cuenta al usuario |
|
453 | 453 | label_send_test_email: Enviar un correo de prueba |
|
454 | 454 | label_settings: Configuración |
|
455 |
label_show_completed_versions: Muestra las versiones |
|
|
455 | label_show_completed_versions: Muestra las versiones terminadas | |
|
456 | 456 | label_sort_by: Ordenar por %s |
|
457 | 457 | label_sort_higher: Subir |
|
458 | 458 | label_sort_highest: Primero |
@@ -474,16 +474,18 label_time_tracking: Control de tiempo | |||
|
474 | 474 | label_today: hoy |
|
475 | 475 | label_topic_plural: Temas |
|
476 | 476 | label_total: Total |
|
477 |
label_tracker: T |
|
|
478 |
label_tracker_new: Nuevo t |
|
|
479 |
label_tracker_plural: T |
|
|
477 | label_tracker: Tipo | |
|
478 | label_tracker_new: Nuevo tipo | |
|
479 | label_tracker_plural: Tipos de peticiones | |
|
480 | 480 | label_updated_time: Actualizado hace %s |
|
481 | label_updated_time_by: Actualizado por %s hace %s | |
|
481 | 482 | label_used_by: Utilizado por |
|
482 | 483 | label_user: Usuario |
|
484 | label_user_activity: "Actividad de %s" | |
|
483 | 485 | label_user_mail_no_self_notified: "No quiero ser avisado de cambios hechos por mí" |
|
484 | 486 | label_user_mail_option_all: "Para cualquier evento en todos mis proyectos" |
|
485 | 487 | label_user_mail_option_none: "Sólo para elementos monitorizados o relacionados conmigo" |
|
486 |
label_user_mail_option_selected: "Para cualquier evento de |
|
|
488 | label_user_mail_option_selected: "Para cualquier evento de los proyectos seleccionados..." | |
|
487 | 489 | label_user_new: Nuevo usuario |
|
488 | 490 | label_user_plural: Usuarios |
|
489 | 491 | label_version: Versión |
@@ -501,22 +503,22 label_wiki_page_plural: Wiki páginas | |||
|
501 | 503 | label_workflow: Flujo de trabajo |
|
502 | 504 | label_year: Año |
|
503 | 505 | label_yesterday: ayer |
|
504 |
mail_body_account_activation_request: |
|
|
506 | mail_body_account_activation_request: 'Se ha inscrito un nuevo usuario (%s). La cuenta está pendiende de aprobación:' | |
|
505 | 507 | mail_body_account_information: Información sobre su cuenta |
|
506 | 508 | mail_body_account_information_external: Puede usar su cuenta "%s" para conectarse. |
|
507 |
mail_body_lost_password: 'Para cambiar su contraseña, haga clic |
|
|
508 |
mail_body_register: 'Para activar su cuenta, haga clic |
|
|
509 | mail_body_lost_password: 'Para cambiar su contraseña, haga clic en el siguiente enlace:' | |
|
510 | mail_body_register: 'Para activar su cuenta, haga clic en el siguiente enlace:' | |
|
509 | 511 | mail_body_reminder: "%d peticion(es) asignadas a tí finalizan en los próximos %d días:" |
|
510 | 512 | mail_subject_account_activation_request: Petición de activación de cuenta %s |
|
511 | 513 | mail_subject_lost_password: Tu contraseña del %s |
|
512 | 514 | mail_subject_register: Activación de la cuenta del %s |
|
513 | 515 | mail_subject_reminder: "%d peticion(es) finalizan en los próximos días" |
|
514 |
notice_account_activated: Su cuenta ha sido activada. |
|
|
516 | notice_account_activated: Su cuenta ha sido activada. Ya puede conectarse. | |
|
515 | 517 | notice_account_invalid_creditentials: Usuario o contraseña inválido. |
|
516 | 518 | notice_account_lost_email_sent: Se le ha enviado un correo con instrucciones para elegir una nueva contraseña. |
|
517 | 519 | notice_account_password_updated: Contraseña modificada correctamente. |
|
518 | notice_account_pending: "Su cuenta ha sido creada y está pendiende de la aprobación por parte de administrador" | |
|
519 | notice_account_register_done: Cuenta creada correctamente. | |
|
520 | notice_account_pending: "Su cuenta ha sido creada y está pendiende de la aprobación por parte del administrador." | |
|
521 | notice_account_register_done: Cuenta creada correctamente. Para activarla, haga clic sobre el enlace que le ha sido enviado por correo. | |
|
520 | 522 | notice_account_unknown_email: Usuario desconocido. |
|
521 | 523 | notice_account_updated: Cuenta actualizada correctamente. |
|
522 | 524 | notice_account_wrong_password: Contraseña incorrecta. |
@@ -524,9 +526,9 notice_can_t_change_password: Esta cuenta utiliza una fuente de autenticación e | |||
|
524 | 526 | notice_default_data_loaded: Configuración por defecto cargada correctamente. |
|
525 | 527 | notice_email_error: Ha ocurrido un error mientras enviando el correo (%s) |
|
526 | 528 | notice_email_sent: Se ha enviado un correo a %s |
|
527 |
notice_failed_to_save_issues: "Imposible |
|
|
528 | notice_feeds_access_key_reseted: Su clave de acceso para RSS ha sido reiniciada | |
|
529 |
notice_file_not_found: La página a la que intenta |
|
|
529 | notice_failed_to_save_issues: "Imposible grabar %s peticion(es) en %d seleccionado: %s." | |
|
530 | notice_feeds_access_key_reseted: Su clave de acceso para RSS ha sido reiniciada. | |
|
531 | notice_file_not_found: La página a la que intenta acceder no existe. | |
|
530 | 532 | notice_locking_conflict: Los datos han sido modificados por otro usuario. |
|
531 | 533 | notice_no_issue_selected: "Ninguna petición seleccionada. Por favor, compruebe la petición que quiere modificar" |
|
532 | 534 | notice_not_authorized: No tiene autorización para acceder a esta página. |
@@ -544,9 +546,9 permission_comment_news: Comentar noticias | |||
|
544 | 546 | permission_commit_access: Acceso de escritura |
|
545 | 547 | permission_delete_issues: Borrar peticiones |
|
546 | 548 | permission_delete_messages: Borrar mensajes |
|
549 | permission_delete_own_messages: Borrar mensajes propios | |
|
547 | 550 | permission_delete_wiki_pages: Borrar páginas wiki |
|
548 | 551 | permission_delete_wiki_pages_attachments: Borrar ficheros |
|
549 | permission_delete_own_messages: Borrar mensajes propios | |
|
550 | 552 | permission_edit_issue_notes: Modificar notas |
|
551 | 553 | permission_edit_issues: Modificar peticiones |
|
552 | 554 | permission_edit_messages: Modificar mensajes |
@@ -602,15 +604,16 setting_commit_fix_keywords: Palabras clave para la corrección | |||
|
602 | 604 | setting_commit_logs_encoding: Codificación de los mensajes de commit |
|
603 | 605 | setting_commit_ref_keywords: Palabras clave para la referencia |
|
604 | 606 | setting_cross_project_issue_relations: Permitir relacionar peticiones de distintos proyectos |
|
605 |
setting_date_format: Formato de |
|
|
607 | setting_date_format: Formato de fecha | |
|
606 | 608 | setting_default_language: Idioma por defecto |
|
607 | 609 | setting_default_projects_public: Los proyectos nuevos son públicos por defecto |
|
608 | setting_display_subprojects_issues: Mostrar peticiones de un subproyecto en el proyecto padre por defecto | |
|
610 | setting_diff_max_lines_displayed: Número máximo de diferencias mostradas | |
|
611 | setting_display_subprojects_issues: Mostrar por defecto peticiones de proy. secundarios en el principal | |
|
609 | 612 | setting_emails_footer: Pie de mensajes |
|
610 | 613 | setting_enabled_scm: Activar SCM |
|
611 | 614 | setting_feeds_limit: Límite de contenido para sindicación |
|
612 | 615 | setting_gravatar_enabled: Usar iconos de usuario (Gravatar) |
|
613 |
setting_host_name: Nombre |
|
|
616 | setting_host_name: Nombre y ruta del servidor | |
|
614 | 617 | setting_issue_list_default_columns: Columnas por defecto para la lista de peticiones |
|
615 | 618 | setting_issues_export_limit: Límite de exportación de peticiones |
|
616 | 619 | setting_login_required: Se requiere identificación |
@@ -632,7 +635,7 setting_wiki_compression: Compresión del historial del Wiki | |||
|
632 | 635 | status_active: activo |
|
633 | 636 | status_locked: bloqueado |
|
634 | 637 | status_registered: registrado |
|
635 |
text_are_you_sure: ¿ |
|
|
638 | text_are_you_sure: ¿Está seguro? | |
|
636 | 639 | text_assign_time_entries_to_project: Asignar las horas al proyecto |
|
637 | 640 | text_caracters_maximum: %d caracteres como máximo. |
|
638 | 641 | text_caracters_minimum: %d caracteres como mínimo |
@@ -640,11 +643,12 text_comma_separated: Múltiples valores permitidos (separados por coma). | |||
|
640 | 643 | text_default_administrator_account_changed: Cuenta de administrador por defecto modificada |
|
641 | 644 | text_destroy_time_entries: Borrar las horas |
|
642 | 645 | text_destroy_time_entries_question: Existen %.02f horas asignadas a la petición que quiere borrar. ¿Qué quiere hacer ? |
|
646 | text_diff_truncated: '... Diferencia truncada por exceder el máximo tamaño visualizable.' | |
|
643 | 647 | text_email_delivery_not_configured: "El envío de correos no está configurado, y las notificaciones se han desactivado. \n Configure el servidor de SMTP en config/email.yml y reinicie la aplicación para activar los cambios." |
|
644 | 648 | text_enumeration_category_reassign_to: 'Reasignar al siguiente valor:' |
|
645 | 649 | text_enumeration_destroy_question: '%d objetos con este valor asignado.' |
|
646 | 650 | text_file_repository_writable: Se puede escribir en el repositorio |
|
647 | text_issue_added: Petición añadida por %s. | |
|
651 | text_issue_added: Petición %s añadida por %s. | |
|
648 | 652 | text_issue_category_destroy_assignments: Dejar las peticiones sin categoría |
|
649 | 653 | text_issue_category_destroy_question: Algunas peticiones (%d) están asignadas a esta categoría. ¿Qué desea hacer? |
|
650 | 654 | text_issue_category_reassign_to: Reasignar las peticiones a la categoría |
@@ -657,27 +661,23 text_journal_set_to: fijado a %s | |||
|
657 | 661 | text_length_between: Longitud entre %d y %d caracteres. |
|
658 | 662 | text_load_default_configuration: Cargar la configuración por defecto |
|
659 | 663 | text_min_max_length_info: 0 para ninguna restricción |
|
660 |
text_no_configuration_data: "Todavía no se han configurado |
|
|
664 | text_no_configuration_data: "Todavía no se han configurado perfiles, ni tipos, estados y flujo de trabajo asociado a peticiones. Se recomiendo encarecidamente cargar la configuración por defecto. Una vez cargada, podrá modificarla." | |
|
661 | 665 | text_project_destroy_confirmation: ¿Estás seguro de querer eliminar el proyecto? |
|
662 | 666 | text_project_identifier_info: 'Letras minúsculas (a-z), números y signos de puntuación permitidos.<br />Una vez guardado, el identificador no puede modificarse.' |
|
663 | 667 | text_reassign_time_entries: 'Reasignar las horas a esta petición:' |
|
664 | 668 | text_regexp_info: ej. ^[A-Z0-9]+$ |
|
665 | text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." | |
|
669 | text_repository_usernames_mapping: "Establezca la correspondencia entre los usuarios de Redmine y los presentes en el log del repositorio.\nLos usuarios con el mismo nombre o correo en Redmine y en el repositorio serán asociados automáticamente." | |
|
666 | 670 | text_rmagick_available: RMagick disponible (opcional) |
|
667 | 671 | text_select_mail_notifications: Seleccionar los eventos a notificar |
|
668 | 672 | text_select_project_modules: 'Seleccione los módulos a activar para este proyecto:' |
|
669 | 673 | text_status_changed_by_changeset: Aplicado en los cambios %s |
|
670 |
text_subprojects_destroy_warning: 'Los |
|
|
674 | text_subprojects_destroy_warning: 'Los proyectos secundarios: %s también se eliminarán' | |
|
671 | 675 | text_tip_task_begin_day: tarea que comienza este día |
|
672 | 676 | text_tip_task_begin_end_day: tarea que comienza y termina este día |
|
673 | 677 | text_tip_task_end_day: tarea que termina este día |
|
674 |
text_tracker_no_workflow: No hay ningún flujo de trabajo definido para este t |
|
|
678 | text_tracker_no_workflow: No hay ningún flujo de trabajo definido para este tipo de petición | |
|
675 | 679 | text_unallowed_characters: Caracteres no permitidos |
|
676 |
text_user_mail_option: " |
|
|
680 | text_user_mail_option: "De los proyectos no seleccionados, sólo recibirá notificaciones sobre elementos monitorizados o elementos en los que esté involucrado (por ejemplo, peticiones de las que usted sea autor o asignadas a usted)." | |
|
677 | 681 | text_user_wrote: '%s escribió:' |
|
678 | 682 | text_wiki_destroy_confirmation: ¿Seguro que quiere borrar el wiki y todo su contenido? |
|
679 | 683 | text_workflow_edit: Seleccionar un flujo de trabajo para actualizar |
|
680 | label_user_activity: "%s's activity" | |
|
681 | label_updated_time_by: Updated by %s %s ago | |
|
682 | text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' | |
|
683 | setting_diff_max_lines_displayed: Max number of diff lines displayed |
@@ -694,6 +694,6 text_repository_usernames_mapping: "Állítsd be a felhasználó összerendelés | |||
|
694 | 694 | permission_edit_own_messages: Saját üzenetek szerkesztése |
|
695 | 695 | permission_delete_own_messages: Saját üzenetek törlése |
|
696 | 696 | label_user_activity: "%s tevékenységei" |
|
697 |
label_updated_time_by: |
|
|
698 | text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' | |
|
699 |
setting_diff_max_lines_displayed: |
|
|
697 | label_updated_time_by: "Módosította %s ennyivel ezelőtt: %s" | |
|
698 | text_diff_truncated: '... A diff fájl vége nem jelenik meg, mert hosszab, mint a megjeleníthető sorok száma.' | |
|
699 | setting_diff_max_lines_displayed: A megjelenítendő sorok száma (maximum) a diff fájloknál |
@@ -120,18 +120,18 field_subject: 제목 | |||
|
120 | 120 | field_due_date: 완료 기한 |
|
121 | 121 | field_assigned_to: 담당자 |
|
122 | 122 | field_priority: 우선순위 |
|
123 |
field_fixed_version: 목표 |
|
|
123 | field_fixed_version: 목표버전 | |
|
124 | 124 | field_user: 사용자 |
|
125 | 125 | field_role: 역할 |
|
126 | 126 | field_homepage: 홈페이지 |
|
127 | 127 | field_is_public: 공개 |
|
128 | 128 | field_parent: 상위 프로젝트 |
|
129 |
field_is_in_chlog: 변경이력(changelog)에서 |
|
|
130 |
field_is_in_roadmap: 로드맵에서 |
|
|
129 | field_is_in_chlog: 변경이력(changelog)에서 표시할 일감들 | |
|
130 | field_is_in_roadmap: 로드맵에서표시할 일감들 | |
|
131 | 131 | field_login: 로그인 |
|
132 | 132 | field_mail_notification: 메일 알림 |
|
133 | 133 | field_admin: 관리자 |
|
134 |
field_last_login_on: |
|
|
134 | field_last_login_on: 마지막 로그인 | |
|
135 | 135 | field_language: 언어 |
|
136 | 136 | field_effective_date: 일자 |
|
137 | 137 | field_password: 비밀번호 |
@@ -188,7 +188,7 setting_commit_ref_keywords: 일감 참조에 사용할 키워드들 | |||
|
188 | 188 | setting_commit_fix_keywords: 일감 해결에 사용할 키워드들 |
|
189 | 189 | setting_autologin: 자동 로그인 |
|
190 | 190 | setting_date_format: 날짜 형식 |
|
191 |
setting_cross_project_issue_relations: 프로젝트간 일감에 관 |
|
|
191 | setting_cross_project_issue_relations: 프로젝트간 일감에 관계을 맺는 것을 허용 | |
|
192 | 192 | setting_issue_list_default_columns: 일감 목록에 보여줄 기본 컬럼들 |
|
193 | 193 | setting_repositories_encodings: 저장소 인코딩 |
|
194 | 194 | setting_emails_footer: 메일 꼬리 |
@@ -201,7 +201,7 label_project_new: 새 프로젝트 | |||
|
201 | 201 | label_project_plural: 프로젝트 |
|
202 | 202 | label_project_all: 모든 프로젝트 |
|
203 | 203 | label_project_latest: 최근 프로젝트 |
|
204 |
label_issue: 일감 |
|
|
204 | label_issue: 일감 | |
|
205 | 205 | label_issue_new: 새 일감만들기 |
|
206 | 206 | label_issue_plural: 일감 보기 |
|
207 | 207 | label_issue_view_all: 모든 일감 보기 |
@@ -249,9 +249,9 label_last_login: 최종 접속 | |||
|
249 | 249 | label_last_updates: 최종 변경 내역 |
|
250 | 250 | label_last_updates_plural: 최종변경 %d |
|
251 | 251 | label_registered_on: 등록시각 |
|
252 |
label_activity: |
|
|
253 |
label_new: |
|
|
254 |
label_logged_as: |
|
|
252 | label_activity: 작업내역 | |
|
253 | label_new: 새로 만들기 | |
|
254 | label_logged_as: '로그인계정:' | |
|
255 | 255 | label_environment: 환경 |
|
256 | 256 | label_authentication: 인증설정 |
|
257 | 257 | label_auth_source: 인증 모드 |
@@ -280,7 +280,7 label_attachment_plural: 관련파일 | |||
|
280 | 280 | label_report: 보고서 |
|
281 | 281 | label_report_plural: 보고서 |
|
282 | 282 | label_news: 뉴스 |
|
283 |
label_news_new: 뉴스 |
|
|
283 | label_news_new: 새 뉴스 | |
|
284 | 284 | label_news_plural: 뉴스 |
|
285 | 285 | label_news_latest: 최근 뉴스 |
|
286 | 286 | label_news_view_all: 모든 뉴스 |
@@ -298,7 +298,7 label_open_issues: 진행중 | |||
|
298 | 298 | label_open_issues_plural: 진행중 |
|
299 | 299 | label_closed_issues: 완료됨 |
|
300 | 300 | label_closed_issues_plural: 완료됨 |
|
301 |
label_total: |
|
|
301 | label_total: 합계 | |
|
302 | 302 | label_permissions: 허가권한 |
|
303 | 303 | label_current_status: 일감 상태 |
|
304 | 304 | label_new_statuses_allowed: 허용되는 일감 상태 |
@@ -316,7 +316,7 label_gantt: Gantt 챠트 | |||
|
316 | 316 | label_internal: 내부 |
|
317 | 317 | label_last_changes: 지난 변경사항 %d 건 |
|
318 | 318 | label_change_view_all: 모든 변경 내역 보기 |
|
319 |
label_personalize_page: 입맛대로 구성하기 |
|
|
319 | label_personalize_page: 입맛대로 구성하기 | |
|
320 | 320 | label_comment: 댓글 |
|
321 | 321 | label_comment_plural: 댓글 |
|
322 | 322 | label_comment_add: 댓글 추가 |
@@ -353,7 +353,7 label_latest_revision: 최근 개정판 | |||
|
353 | 353 | label_latest_revision_plural: 최근 개정판 |
|
354 | 354 | label_view_revisions: 개정판 보기 |
|
355 | 355 | label_max_size: 최대 크기 |
|
356 |
label_on: ' |
|
|
356 | label_on: '전체: ' | |
|
357 | 357 | label_sort_highest: 최상단으로 |
|
358 | 358 | label_sort_higher: 위로 |
|
359 | 359 | label_sort_lower: 아래로 |
@@ -361,7 +361,7 label_sort_lowest: 최하단으로 | |||
|
361 | 361 | label_roadmap: 로드맵 |
|
362 | 362 | label_roadmap_due_in: 기한 %s |
|
363 | 363 | label_roadmap_overdue: %s 지연 |
|
364 | label_roadmap_no_issues: 이버전에 해당하는 일감 없음 | |
|
364 | label_roadmap_no_issues: 이 버전에 해당하는 일감 없음 | |
|
365 | 365 | label_search: 검색 |
|
366 | 366 | label_result_plural: 결과 |
|
367 | 367 | label_all_words: 모든 단어 |
@@ -412,19 +412,19 label_disabled: 비활성화 | |||
|
412 | 412 | label_show_completed_versions: 완료된 버전 보기 |
|
413 | 413 | label_me: 나 |
|
414 | 414 | label_board: 게시판 |
|
415 |
label_board_new: |
|
|
415 | label_board_new: 새 게시판 | |
|
416 | 416 | label_board_plural: 게시판 |
|
417 | 417 | label_topic_plural: 주제 |
|
418 | 418 | label_message_plural: 관련글 |
|
419 |
label_message_last: |
|
|
419 | label_message_last: 마지막 글 | |
|
420 | 420 | label_message_new: 새글쓰기 |
|
421 | 421 | label_reply_plural: 답글 |
|
422 | 422 | label_send_information: 사용자에게 계정정보를 보냄 |
|
423 | 423 | label_year: 년 |
|
424 | 424 | label_month: 월 |
|
425 | 425 | label_week: 주 |
|
426 |
label_date_from: |
|
|
427 |
label_date_to: |
|
|
426 | label_date_from: '기간:' | |
|
427 | label_date_to: ' ~ ' | |
|
428 | 428 | label_language_based: 언어설정에 따름 |
|
429 | 429 | label_sort_by: 정렬방법(%s) |
|
430 | 430 | label_send_test_email: 테스트 메일 보내기 |
@@ -533,7 +533,7 default_activity_development: 개발 | |||
|
533 | 533 | |
|
534 | 534 | enumeration_issue_priorities: 일감 우선순위 |
|
535 | 535 | enumeration_doc_categories: 문서 카테고리 |
|
536 |
enumeration_activities: |
|
|
536 | enumeration_activities: 작업분류(시간추적) | |
|
537 | 537 | button_copy: 복사 |
|
538 | 538 | mail_body_account_information_external: 레드마인에 로그인할 때 "%s" 계정을 사용하실 수 있습니다. |
|
539 | 539 | button_change_password: 비밀번호 변경 |
@@ -555,7 +555,7 button_annotate: 주석달기(annotate) | |||
|
555 | 555 | label_issues_by: 일감분류 방식 %s |
|
556 | 556 | field_searchable: 검색가능 |
|
557 | 557 | label_display_per_page: '페이지당: %s' |
|
558 |
setting_per_page_options: 페이지당 표시할 객 |
|
|
558 | setting_per_page_options: 페이지당 표시할 객체 수 | |
|
559 | 559 | label_age: 마지막 수정일 |
|
560 | 560 | notice_default_data_loaded: 기본 설정을 성공적으로 로드하였습니다. |
|
561 | 561 | text_load_default_configuration: 기본 설정을 로딩하기 |
@@ -585,20 +585,20 project_module_files: 관련파일 | |||
|
585 | 585 | project_module_documents: 문서 |
|
586 | 586 | project_module_repository: 저장소 |
|
587 | 587 | project_module_news: 뉴스 |
|
588 |
project_module_time_tracking: |
|
|
588 | project_module_time_tracking: 시간추적 | |
|
589 | 589 | text_file_repository_writable: 파일 저장소 쓰기 가능 |
|
590 | 590 | text_default_administrator_account_changed: 기본 관리자 계정이 변경되었습니다. |
|
591 |
text_rmagick_available: RMagick |
|
|
591 | text_rmagick_available: RMagick 사용가능(옵션) | |
|
592 | 592 | button_configure: 설정 |
|
593 | 593 | label_plugins: 플러그인 |
|
594 | 594 | label_ldap_authentication: LDAP 인증 |
|
595 | 595 | label_downloads_abbr: D/L |
|
596 | 596 | label_add_another_file: 다른 파일 추가 |
|
597 | 597 | label_this_month: 이번 달 |
|
598 | text_destroy_time_entries_question: %.02f hours were reported on the issues you are about to delete. What do you want to do ? | |
|
598 | text_destroy_time_entries_question: 삭제하려는 일감에 %.02f 시간이 보고되어 있습니다. 어떻게 하시겠습니까? | |
|
599 | 599 | label_last_n_days: 지난 %d 일 |
|
600 | 600 | label_all_time: 모든 시간 |
|
601 | error_issue_not_found_in_project: 'The issue was not found or does not belong to this project' | |
|
601 | error_issue_not_found_in_project: '일감이 없거나 이 프로젝트의 것이 아닙니다.' | |
|
602 | 602 | label_this_year: 올해 |
|
603 | 603 | text_assign_time_entries_to_project: 보고된 시간을 프로젝트에 할당하기 |
|
604 | 604 | label_date_range: 날짜 범위 |
@@ -608,15 +608,15 label_optional_description: 부가적인 설명 | |||
|
608 | 608 | label_last_month: 지난 달 |
|
609 | 609 | text_destroy_time_entries: 보고된 시간을 삭제하기 |
|
610 | 610 | text_reassign_time_entries: '이 알림에 보고된 시간을 재할당하기:' |
|
611 |
setting_activity_days_default: 프로젝트 |
|
|
611 | setting_activity_days_default: 프로젝트 작업내역에 보여줄 날수 | |
|
612 | 612 | label_chronological_order: 시간 순으로 정렬 |
|
613 | 613 | field_comments_sorting: 히스토리 정렬 설정 |
|
614 | 614 | label_reverse_chronological_order: 시간 역순으로 정렬 |
|
615 |
label_preferences: |
|
|
615 | label_preferences: 설정 | |
|
616 | 616 | setting_display_subprojects_issues: 하위 프로젝트의 일감을 최상위 프로젝트에서 표시 |
|
617 |
label_overall_activity: 전체 |
|
|
617 | label_overall_activity: 전체 작업내역 | |
|
618 | 618 | setting_default_projects_public: 새 프로젝트를 공개로 설정 |
|
619 | error_scm_annotate: "The entry does not exist or can not be annotated." | |
|
619 | error_scm_annotate: "항목이 없거나 주석을 달 수 없습니다." | |
|
620 | 620 | label_planning: 프로젝트계획(Planning) |
|
621 | 621 | text_subprojects_destroy_warning: '서브프로젝트(%s)가 자동으로 지워질 것입니다.' |
|
622 | 622 | label_and_its_subprojects: %s와 서브프로젝트들 |
@@ -692,7 +692,7 label_example: 예 | |||
|
692 | 692 | text_repository_usernames_mapping: "저장소 로그에서 발견된 각 사용자에 레드마인 사용자를 업데이트할때 선택합니다.\n레드마인과 저장소의 이름이나 이메일이 같은 사용자가 자동으로 연결됩니다." |
|
693 | 693 | permission_edit_own_messages: 자기 메시지 편집 |
|
694 | 694 | permission_delete_own_messages: 자기 메시지 삭제 |
|
695 |
label_user_activity: "%s의 |
|
|
696 |
label_updated_time_by: |
|
|
697 | text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' | |
|
698 |
setting_diff_max_lines_displayed: |
|
|
695 | label_user_activity: "%s의 작업내역" | |
|
696 | label_updated_time_by: %s가 %s 전에 변경 | |
|
697 | text_diff_truncated: '... 이 차이점은 표시할 수 있는 최대 줄수를 초과해서 이 차이점은 잘렸습니다.' | |
|
698 | setting_diff_max_lines_displayed: 차이점보기에 표시할 최대 줄수 |
@@ -518,7 +518,8 label_total: Всего | |||
|
518 | 518 | label_tracker_new: Новый трекер |
|
519 | 519 | label_tracker_plural: Трекеры |
|
520 | 520 | label_tracker: Трекер |
|
521 | label_updated_time: Обновлен %s назад | |
|
521 | label_updated_time: Обновлено %s назад | |
|
522 | label_updated_time_by: Обновлено %s %s назад | |
|
522 | 523 | label_used_by: Используется |
|
523 | 524 | label_user_activity: "Активность пользователя %s" |
|
524 | 525 | label_user_mail_no_self_notified: "Не извещать об изменениях, которые я сделал сам" |
@@ -652,6 +653,7 setting_cross_project_issue_relations: Разрешить пересечение | |||
|
652 | 653 | setting_date_format: Формат даты |
|
653 | 654 | setting_default_language: Язык по умолчанию |
|
654 | 655 | setting_default_projects_public: Новые проекты являются общедоступными |
|
656 | setting_diff_max_lines_displayed: Максимальное число строк для diff | |
|
655 | 657 | setting_display_subprojects_issues: Отображение подпроектов по умолчанию |
|
656 | 658 | setting_emails_footer: Подстрочные примечания Email |
|
657 | 659 | setting_enabled_scm: Разрешенные SCM |
@@ -689,6 +691,7 text_comma_separated: Допустимы несколько значений (ч | |||
|
689 | 691 | text_default_administrator_account_changed: Учетная запись администратора по умолчанию изменена |
|
690 | 692 | text_destroy_time_entries_question: Вы собираетесь удалить %.02f часа(ов) прикрепленных за этой задачей. |
|
691 | 693 | text_destroy_time_entries: Удалить зарегистрированное время |
|
694 | text_diff_truncated: '... Этот diff ограничен, так как превышает максимальный отображаемый размер.' | |
|
692 | 695 | text_email_delivery_not_configured: "Параметры работы с почтовым сервером не настроены и функция уведомления по email не активна.\nНастроить параметры для Вашего SMTP-сервера Вы можете в файле config/email.yml. Для применения изменений перезапустите приложение." |
|
693 | 696 | text_enumeration_category_reassign_to: 'Назначить им следующее значение:' |
|
694 | 697 | text_enumeration_destroy_question: '%d объект(а,ов) связаны с этим значением.' |
@@ -727,6 +730,3 text_user_wrote: '%s написал(а):' | |||
|
727 | 730 | text_wiki_destroy_confirmation: Вы уверены, что хотите удалить данную Wiki и все ее содержимое? |
|
728 | 731 | text_workflow_edit: Выберите роль и трекер для редактирования последовательности состояний |
|
729 | 732 | |
|
730 | label_updated_time_by: Updated by %s %s ago | |
|
731 | text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' | |
|
732 | setting_diff_max_lines_displayed: Max number of diff lines displayed |
@@ -223,6 +223,7 setting_mail_handler_api_enabled: 啟用處理傳入電子郵件的服務 | |||
|
223 | 223 | setting_mail_handler_api_key: API 金鑰 |
|
224 | 224 | setting_sequential_project_identifiers: 循序產生專案識別碼 |
|
225 | 225 | setting_gravatar_enabled: 啟用 Gravatar 全球認證大頭像 |
|
226 | setting_diff_max_lines_displayed: 差異顯示行數之最大值 | |
|
226 | 227 | |
|
227 | 228 | permission_edit_project: 編輯專案 |
|
228 | 229 | permission_select_project_modules: 選擇專案模組 |
@@ -670,6 +671,7 text_enumeration_destroy_question: '目前有 %d 個物件使用此列舉值。' | |||
|
670 | 671 | text_enumeration_category_reassign_to: '重新設定其列舉值為:' |
|
671 | 672 | text_email_delivery_not_configured: "您尚未設定電子郵件傳送方式,因此提醒選項已被停用。\n請在 config/email.yml 中設定 SMTP 之後,重新啟動 Redmine,以啟用電子郵件提醒選項。" |
|
672 | 673 | text_repository_usernames_mapping: "選擇或更新 Redmine 使用者與版本庫使用者之對應關係。\n版本庫中之使用者帳號或電子郵件信箱,與 Redmine 設定相同者,將自動產生對應關係。" |
|
674 | text_diff_truncated: '... 這份差異已被截短以符合顯示行數之最大值' | |
|
673 | 675 | |
|
674 | 676 | default_role_manager: 管理人員 |
|
675 | 677 | default_role_developper: 開發人員 |
@@ -696,5 +698,3 default_activity_development: 開發 | |||
|
696 | 698 | enumeration_issue_priorities: 項目優先權 |
|
697 | 699 | enumeration_doc_categories: 文件分類 |
|
698 | 700 | enumeration_activities: 活動 (時間追蹤) |
|
699 | text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' | |
|
700 | setting_diff_max_lines_displayed: Max number of diff lines displayed |
@@ -223,6 +223,7 setting_mail_handler_api_enabled: 启用用于接收邮件的服务 | |||
|
223 | 223 | setting_mail_handler_api_key: API key |
|
224 | 224 | setting_sequential_project_identifiers: 顺序产生项目标识 |
|
225 | 225 | setting_gravatar_enabled: 使用Gravatar用户头像 |
|
226 | setting_diff_max_lines_displayed: 查看差别页面上显示的最大行数 | |
|
226 | 227 | |
|
227 | 228 | permission_edit_project: 编辑项目 |
|
228 | 229 | permission_select_project_modules: 选择项目模块 |
@@ -544,7 +545,8 label_send_test_email: 发送测试邮件 | |||
|
544 | 545 | label_feeds_access_key_created_on: RSS 存取键是在 %s 之前建立的 |
|
545 | 546 | label_module_plural: 模块 |
|
546 | 547 | label_added_time_by: 由 %s 在 %s 之前添加 |
|
547 | label_updated_time: 更新于 %s 前 | |
|
548 | label_updated_time: 更新于 %s 之前 | |
|
549 | label_updated_time_by: 由 %s 更新于 %s 之前 | |
|
548 | 550 | label_jump_to_a_project: 选择一个项目... |
|
549 | 551 | label_file_plural: 文件 |
|
550 | 552 | label_changeset_plural: 变更 |
@@ -669,6 +671,7 text_enumeration_category_reassign_to: '将它们关联到新的枚举值:' | |||
|
669 | 671 | text_enumeration_destroy_question: '%d 个对象被关联到了这个枚举值。' |
|
670 | 672 | text_email_delivery_not_configured: "邮件参数尚未配置,因此邮件通知功能已被禁用。\n请在config/email.yml中配置您的SMTP服务器信息并重新启动以使其生效。" |
|
671 | 673 | text_repository_usernames_mapping: "选择或更新与版本库中的用户名对应的Redmine用户。\n版本库中与Redmine中的同名用户将被自动对应。" |
|
674 | text_diff_truncated: '... 差别内容超过了可显示的最大行数并已被截断' | |
|
672 | 675 | |
|
673 | 676 | default_role_manager: 管理人员 |
|
674 | 677 | default_role_developper: 开发人员 |
@@ -695,6 +698,3 default_activity_development: 开发 | |||
|
695 | 698 | enumeration_issue_priorities: 问题优先级 |
|
696 | 699 | enumeration_doc_categories: 文档类别 |
|
697 | 700 | enumeration_activities: 活动(时间跟踪) |
|
698 | label_updated_time_by: Updated by %s %s ago | |
|
699 | text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' | |
|
700 | setting_diff_max_lines_displayed: Max number of diff lines displayed |
@@ -32,10 +32,19 class DocumentsControllerTest < Test::Unit::TestCase | |||
|
32 | 32 | end |
|
33 | 33 | |
|
34 | 34 | def test_index |
|
35 | # Sets a default category | |
|
36 | e = Enumeration.find_by_name('Technical documentation') | |
|
37 | e.update_attributes(:is_default => true) | |
|
38 | ||
|
35 | 39 | get :index, :project_id => 'ecookbook' |
|
36 | 40 | assert_response :success |
|
37 | 41 | assert_template 'index' |
|
38 | 42 | assert_not_nil assigns(:grouped) |
|
43 | ||
|
44 | # Default category selected in the new document form | |
|
45 | assert_tag :select, :attributes => {:name => 'document[category_id]'}, | |
|
46 | :child => {:tag => 'option', :attributes => {:selected => 'selected'}, | |
|
47 | :content => 'Technical documentation'} | |
|
39 | 48 | end |
|
40 | 49 | |
|
41 | 50 | def test_new_with_one_attachment |
@@ -44,7 +44,7 class AccountTest < ActionController::IntegrationTest | |||
|
44 | 44 | assert_response :success |
|
45 | 45 | assert_template "account/lost_password" |
|
46 | 46 | |
|
47 |
post "account/lost_password", :mail => 'j |
|
|
47 | post "account/lost_password", :mail => 'jSmith@somenet.foo' | |
|
48 | 48 | assert_redirected_to "account/login" |
|
49 | 49 | |
|
50 | 50 | token = Token.find(:first) |
@@ -37,6 +37,43 class EnumerationTest < Test::Unit::TestCase | |||
|
37 | 37 | assert !Enumeration.find(7).in_use? |
|
38 | 38 | end |
|
39 | 39 | |
|
40 | def test_default | |
|
41 | e = Enumeration.default('IPRI') | |
|
42 | assert e.is_a?(Enumeration) | |
|
43 | assert e.is_default? | |
|
44 | assert_equal 'Normal', e.name | |
|
45 | end | |
|
46 | ||
|
47 | def test_create | |
|
48 | e = Enumeration.new(:opt => 'IPRI', :name => 'Very urgent', :is_default => false) | |
|
49 | assert e.save | |
|
50 | assert_equal 'Normal', Enumeration.default('IPRI').name | |
|
51 | end | |
|
52 | ||
|
53 | def test_create_as_default | |
|
54 | e = Enumeration.new(:opt => 'IPRI', :name => 'Very urgent', :is_default => true) | |
|
55 | assert e.save | |
|
56 | assert_equal e, Enumeration.default('IPRI') | |
|
57 | end | |
|
58 | ||
|
59 | def test_update_default | |
|
60 | e = Enumeration.default('IPRI') | |
|
61 | e.update_attributes(:name => 'Changed', :is_default => true) | |
|
62 | assert_equal e, Enumeration.default('IPRI') | |
|
63 | end | |
|
64 | ||
|
65 | def test_update_default_to_non_default | |
|
66 | e = Enumeration.default('IPRI') | |
|
67 | e.update_attributes(:name => 'Changed', :is_default => false) | |
|
68 | assert_nil Enumeration.default('IPRI') | |
|
69 | end | |
|
70 | ||
|
71 | def test_change_default | |
|
72 | e = Enumeration.find_by_name('Urgent') | |
|
73 | e.update_attributes(:name => 'Urgent', :is_default => true) | |
|
74 | assert_equal e, Enumeration.default('IPRI') | |
|
75 | end | |
|
76 | ||
|
40 | 77 | def test_destroy_with_reassign |
|
41 | 78 | Enumeration.find(4).destroy(Enumeration.find(6)) |
|
42 | 79 | assert_nil Issue.find(:first, :conditions => {:priority_id => 4}) |
@@ -158,4 +158,10 class UserTest < Test::Unit::TestCase | |||
|
158 | 158 | @jsmith.pref.comments_sorting = 'desc' |
|
159 | 159 | assert @jsmith.wants_comments_in_reverse_order? |
|
160 | 160 | end |
|
161 | ||
|
162 | def test_find_by_mail_should_be_case_insensitive | |
|
163 | u = User.find_by_mail('JSmith@somenet.foo') | |
|
164 | assert_not_nil u | |
|
165 | assert_equal 'jsmith@somenet.foo', u.mail | |
|
166 | end | |
|
161 | 167 | end |
General Comments 0
You need to be logged in to leave comments.
Login now