]> source.dussan.org Git - redmine.git/commitdiff
r18645@gaspard (orig r1887): jplang | 2008-09-20 16:07:52 +0200
authorNicolas Chuche <nicolas.chuche@barna.be>
Mon, 22 Sep 2008 18:33:53 +0000 (18:33 +0000)
committerNicolas Chuche <nicolas.chuche@barna.be>
Mon, 22 Sep 2008 18:33:53 +0000 (18:33 +0000)
 Fixed: Roadmap crashes when a version has a due date > 2037.
 r18646@gaspard (orig r1888):  jplang | 2008-09-21 10:54:02 +0200
 Fixed: invalid effective date (eg. 99999-01-01) causes an error on version edition screen.
 r18647@gaspard (orig r1889):  jplang | 2008-09-21 10:54:50 +0200
 Fixes VersionTest class.
 r18648@gaspard (orig r1890):  jplang | 2008-09-21 14:07:44 +0200
 Fixed: login filter providing incorrect back_url for Redmine installed in sub-directory (#1900).
 r18649@gaspard (orig r1891):  winterheart | 2008-09-21 14:31:34 +0200
 de.yml from #1745, thank to Sven Schuchmann and Thomas Löber for contribution
 r18650@gaspard (orig r1892):  winterheart | 2008-09-21 14:32:16 +0200
 #1928, update for Italian language
 r18651@gaspard (orig r1893):  jplang | 2008-09-21 14:45:22 +0200
 Unescape back_url param before calling redirect_to.
 r18652@gaspard (orig r1894):  jplang | 2008-09-21 15:28:12 +0200
 Strip LDAP attribute names before saving (#1890).
 r18653@gaspard (orig r1895):  jplang | 2008-09-21 20:45:30 +0200
 Switch order of current and previous revisions in side-by-side diff (#1903).
 r18654@gaspard (orig r1896):  jplang | 2008-09-21 22:38:36 +0200
 Typo in migration 97 name (#1929).
 r18655@gaspard (orig r1897):  winterheart | 2008-09-22 16:49:18 +0200
 #1921, pt translation

git-svn-id: http://redmine.rubyforge.org/svn/branches/nbc@1898 e93f8b46-1217-0410-a6f0-8f06a7374b81

42 files changed:
app/controllers/application.rb
app/controllers/timelog_controller.rb
app/helpers/application_helper.rb
app/models/auth_source_ldap.rb
app/models/version.rb
app/views/versions/_overview.rhtml
db/migrate/097_add_view_wiki_edits_permission.rb [new file with mode: 0644]
db/migrate/097_add_wiew_wiki_edits_permission.rb [deleted file]
lang/bg.yml
lang/ca.yml
lang/cs.yml
lang/da.yml
lang/de.yml
lang/en.yml
lang/es.yml
lang/fi.yml
lang/fr.yml
lang/he.yml
lang/hu.yml
lang/it.yml
lang/ja.yml
lang/ko.yml
lang/lt.yml
lang/nl.yml
lang/no.yml
lang/pl.yml
lang/pt-br.yml
lang/pt.yml
lang/ro.yml
lang/ru.yml
lang/sr.yml
lang/sv.yml
lang/th.yml
lang/tr.yml
lang/uk.yml
lang/zh-tw.yml
lang/zh.yml
lib/redmine/unified_diff.rb
test/functional/account_controller_test.rb
test/unit/auth_source_ldap_test.rb [new file with mode: 0644]
test/unit/helpers/application_helper_test.rb
test/unit/version_test.rb [new file with mode: 0644]

index d21d0bd8c9cebd3c687814f46452c9db3adc4bcd..238239c440c4c72f9506bd9d36f9cc32fcc91a30 100644 (file)
@@ -16,6 +16,7 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
 require 'uri'
+require 'cgi'
 
 class ApplicationController < ActionController::Base
   layout 'base'
@@ -81,7 +82,7 @@ class ApplicationController < ActionController::Base
   
   def require_login
     if !User.current.logged?
-      redirect_to :controller => "account", :action => "login", :back_url => request.request_uri
+      redirect_to :controller => "account", :action => "login", :back_url => (request.relative_url_root + request.request_uri)
       return false
     end
     true
@@ -123,7 +124,7 @@ class ApplicationController < ActionController::Base
   end
 
   def redirect_back_or_default(default)
-    back_url = params[:back_url]
+    back_url = CGI.unescape(params[:back_url].to_s)
     if !back_url.blank?
       uri = URI.parse(back_url)
       # do not redirect user to another host
index 897a50fe54145cfe5e4a0268116e4c6d7f83a0c8..c333c02bb0a5a61589fd989307306e6e6c524049 100644 (file)
@@ -194,7 +194,7 @@ class TimelogController < ApplicationController
     @time_entry.attributes = params[:time_entry]
     if request.post? and @time_entry.save
       flash[:notice] = l(:notice_successful_update)
-      redirect_to(params[:back_url].blank? ? {:action => 'details', :project_id => @time_entry.project} : params[:back_url])
+      redirect_back_or_default :action => 'details', :project_id => @time_entry.project
       return
     end    
   end
index cc26127d6a2a8e6d667e96358ed91d0472c7bca5..c3701b37767647972edcfc6d7604a8c17f294ff3 100644 (file)
@@ -100,6 +100,19 @@ module ApplicationHelper
     @time_format ||= (Setting.time_format.blank? ? l(:general_fmt_time) : Setting.time_format)
     include_date ? local.strftime("#{@date_format} #{@time_format}") : local.strftime(@time_format)
   end
+      
+  def distance_of_date_in_words(from_date, to_date = 0)
+    from_date = from_date.to_date if from_date.respond_to?(:to_date)
+    to_date = to_date.to_date if to_date.respond_to?(:to_date)
+    distance_in_days = (to_date - from_date).abs
+    lwr(:actionview_datehelper_time_in_words_day, distance_in_days)
+  end
+  
+  def due_date_distance_in_words(date)
+    if date
+      l((date < Date.today ? :label_roadmap_overdue : :label_roadmap_due_in), distance_of_date_in_words(Date.today, date))
+    end
+  end
   
   # Truncates and returns the string as a single line
   def truncate_single_line(string, *args)
index 655ffd6d544d1217afb8c2c404c272c0edfc2dd0..6203a7c856d26aa68ec63e637ac5d70c6591bef9 100644 (file)
@@ -25,6 +25,8 @@ class AuthSourceLdap < AuthSource
   validates_length_of :attr_login, :attr_firstname, :attr_lastname, :attr_mail, :maximum => 30, :allow_nil => true
   validates_numericality_of :port, :only_integer => true
   
+  before_validation :strip_ldap_attributes
+  
   def after_initialize
     self.port = 389 if self.port == 0
   end
@@ -71,7 +73,14 @@ class AuthSourceLdap < AuthSource
     "LDAP"
   end
   
-private
+  private
+  
+  def strip_ldap_attributes
+    [:attr_login, :attr_firstname, :attr_lastname, :attr_mail].each do |attr|
+      write_attribute(attr, read_attribute(attr).strip) unless read_attribute(attr).nil?
+    end
+  end
+  
   def initialize_ldap_con(ldap_user, ldap_password)
     options = { :host => self.host,
                 :port => self.port,
index dc618af0fa514c5118e9da7816f87e5c08367069..e379f4b052fa4441dccf40331664cc3f688a682b 100644 (file)
@@ -24,7 +24,7 @@ class Version < ActiveRecord::Base
   validates_presence_of :name
   validates_uniqueness_of :name, :scope => [:project_id]
   validates_length_of :name, :maximum => 60
-  validates_format_of :effective_date, :with => /^\d{4}-\d{2}-\d{2}$/, :message => :activerecord_error_not_a_date, :allow_nil => true
+  validates_format_of :effective_date, :with => /^\d{4}-\d{2}-\d{2}$/, :message => 'activerecord_error_not_a_date', :allow_nil => true
   
   def start_date
     effective_date
index d3aa6b18fa40b90f5943c1b1a121fd21b0595d01..377e9178bf6d777336263b66d9346a3a61f67445 100644 (file)
@@ -1,9 +1,7 @@
 <% if version.completed? %>
   <p><%= format_date(version.effective_date) %></p>
-<% elsif version.overdue? %>
-  <p><strong><%= l(:label_roadmap_overdue, distance_of_time_in_words(Time.now, version.effective_date)) %> (<%= format_date(version.effective_date) %>)</strong></p>
 <% elsif version.effective_date %>
-  <p><strong><%=l(:label_roadmap_due_in)%> <%= distance_of_time_in_words Time.now, version.effective_date %> (<%= format_date(version.effective_date) %>)</strong></p>
+  <p><strong><%= due_date_distance_in_words(version.effective_date) %></strong> (<%= format_date(version.effective_date) %>)</p>
 <% end %>
 
 <p><%=h version.description %></p>
diff --git a/db/migrate/097_add_view_wiki_edits_permission.rb b/db/migrate/097_add_view_wiki_edits_permission.rb
new file mode 100644 (file)
index 0000000..3e4b26b
--- /dev/null
@@ -0,0 +1,13 @@
+class AddViewWikiEditsPermission < ActiveRecord::Migration
+  def self.up
+       Role.find(:all).each do |r|
+         r.add_permission!(:view_wiki_edits) if r.has_permission?(:view_wiki_pages)
+       end
+  end
+
+  def self.down
+       Role.find(:all).each do |r|
+         r.remove_permission!(:view_wiki_edits)
+       end
+  end
+end
diff --git a/db/migrate/097_add_wiew_wiki_edits_permission.rb b/db/migrate/097_add_wiew_wiki_edits_permission.rb
deleted file mode 100644 (file)
index 0f87ada..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-class AddWiewWikiEditsPermission < ActiveRecord::Migration
-  def self.up
-       Role.find(:all).each do |r|
-         r.add_permission!(:view_wiki_edits) if r.has_permission?(:view_wiki_pages)
-       end
-  end
-
-  def self.down
-       Role.find(:all).each do |r|
-         r.remove_permission!(:view_wiki_edits)
-       end
-  end
-end
index e072ad93b6fd2130ff05bdb01185d0905cb79499..f8d2e5e2ca62d0951bb2592f35ca052d1564c664 100644 (file)
@@ -352,7 +352,7 @@ label_sort_higher: Премести по-горе
 label_sort_lower: Премести по-долу
 label_sort_lowest: Премести най-долу
 label_roadmap: Пътна карта
-label_roadmap_due_in: Излиза след
+label_roadmap_due_in: Излиза след %s
 label_roadmap_overdue: %s закъснение
 label_roadmap_no_issues: Няма задачи за тази версия
 label_search: Търсене
index 895f213ca3f92c60799cfebea2cc7aa0b530dbee..30348b060ea4bef78e49bbc250f7f33acad526a3 100644 (file)
@@ -413,7 +413,7 @@ label_sort_higher: Mou cap amunt
 label_sort_lower: Mou cap avall
 label_sort_lowest: Mou a la part inferior
 label_roadmap: Planificació
-label_roadmap_due_in: Venç en 
+label_roadmap_due_in: Venç en %s
 label_roadmap_overdue: %s tard
 label_roadmap_no_issues: No hi ha assumptes per a aquesta versió
 label_search: Cerca
index 51486aec7f1135c239eca6d1c1d3934a8bf7ae10..cf2cb09929817c115b297fd13874547d1e88adf2 100644 (file)
@@ -409,7 +409,7 @@ label_sort_higher: Přesunout nahoru
 label_sort_lower: Přesunout dolů
 label_sort_lowest: Přesunout na konec
 label_roadmap: Plán
-label_roadmap_due_in: Zbývá
+label_roadmap_due_in: Zbývá %s
 label_roadmap_overdue: %s pozdě
 label_roadmap_no_issues: Pro tuto verzi nejsou žádné úkoly
 label_search: Hledat
index 631d58916b0924e3653b23e9e9cc6821335631d7..0ee1b25122744833d348b72299d364a00c9f7ab5 100644 (file)
@@ -418,7 +418,7 @@ label_sort_higher: Flyt op
 label_sort_lower: Flyt ned
 label_sort_lowest: Flyt til bunden
 label_roadmap: Plan
-label_roadmap_due_in: Deadline 
+label_roadmap_due_in: Deadline %s
 label_roadmap_overdue: %s forsinket
 label_roadmap_no_issues: Ingen sager i denne version
 label_search: Søg
index 7ee142528c27d313f2f8578d009efc70d22ff93f..7aa2d971b7844139618936ce0da3d5267e7646c7 100644 (file)
@@ -19,10 +19,10 @@ actionview_datehelper_time_in_words_second_less_than: weniger als einer Sekunde
 actionview_datehelper_time_in_words_second_less_than_plural: weniger als %d Sekunden
 actionview_instancetag_blank_option: Bitte auswählen
 
-activerecord_error_inclusion: ist nicht inbegriffen
+activerecord_error_inclusion: ist nicht in der Liste enthalten
 activerecord_error_exclusion: ist reserviert
 activerecord_error_invalid: ist unzulässig
-activerecord_error_confirmation: Bestätigung nötig
+activerecord_error_confirmation: passt nicht zur Bestätigung
 activerecord_error_accepted: muss angenommen werden
 activerecord_error_empty: darf nicht leer sein
 activerecord_error_blank: darf nicht leer sein
@@ -77,6 +77,7 @@ notice_failed_to_save_issues: "%d von %d ausgewählten Tickets konnte(n) nicht g
 notice_no_issue_selected: "Kein Ticket ausgewählt! Bitte wählen Sie die Tickets, die Sie bearbeiten möchten."
 notice_account_pending: "Ihr Konto wurde erstellt und wartet jetzt auf die Genehmigung des Administrators."
 notice_default_data_loaded: Die Standard-Konfiguration wurde erfolgreich geladen.
+notice_unable_delete_version: Die Version konnte nicht gelöscht werden
 
 error_can_t_load_default_data: "Die Standard-Konfiguration konnte nicht geladen werden: %s"
 error_scm_not_found: Eintrag und/oder Revision besteht nicht im Projektarchiv.
@@ -92,6 +93,8 @@ mail_body_account_information_external: Sie können sich mit Ihrem Konto "%s" an
 mail_body_account_information: Ihre Konto-Informationen
 mail_subject_account_activation_request: Antrag auf %s Kontoaktivierung
 mail_body_account_activation_request: 'Ein neuer Benutzer (%s) hat sich registriert. Sein Konto wartet auf Ihre Genehmigung:'
+mail_subject_reminder: "%d Tickets müssen in den nächsten Tagen abgegeben werden"
+mail_body_reminder: "%d Tickets, die Ihnen zugewiesen sind, müssen in den nächsten %d Tagen abgegeben werden:"
 
 gui_validation_error: 1 Fehler
 gui_validation_error_plural: %d Fehler
@@ -180,6 +183,7 @@ field_time_zone: Zeitzone
 field_searchable: Durchsuchbar
 field_default_value: Standardwert
 field_comments_sorting: Kommentare anzeigen
+field_parent_title: Übergeordnete Seite
 
 setting_app_title: Applikations-Titel
 setting_app_subtitle: Applikations-Untertitel
@@ -206,12 +210,17 @@ setting_time_format: Zeitformat
 setting_cross_project_issue_relations: Ticket-Beziehungen zwischen Projekten erlauben
 setting_issue_list_default_columns: Default-Spalten in der Ticket-Auflistung
 setting_repositories_encodings: Kodierungen der Projektarchive
+setting_commit_logs_encoding: Kodierung der Log-Meldungen
 setting_emails_footer: E-Mail-Fußzeile
 setting_protocol: Protokoll
 setting_per_page_options: Objekte pro Seite
 setting_user_format: Benutzer-Anzeigeformat
 setting_activity_days_default: Anzahl Tage pro Seite der Projekt-Aktivität
 setting_display_subprojects_issues: Tickets von Unterprojekten im Hauptprojekt anzeigen
+setting_enabled_scm: Aktivierte Versionskontrollsysteme
+setting_mail_handler_api_enabled: Abruf eingehender E-Mails aktivieren
+setting_mail_handler_api_key: API-Schlüssel
+setting_sequential_project_identifiers: Fortlaufende Projektkennungen generieren
 
 project_module_issue_tracking: Ticket-Verfolgung
 project_module_time_tracking: Zeiterfassung
@@ -292,6 +301,7 @@ label_auth_source: Authentifizierungs-Modus
 label_auth_source_new: Neuer Authentifizierungs-Modus
 label_auth_source_plural: Authentifizierungs-Arten
 label_subproject_plural: Unterprojekte
+label_and_its_subprojects: %s und dessen Unterprojekte
 label_min_max_length: Länge (Min. - Max.)
 label_list: Liste
 label_date: Datum
@@ -395,6 +405,8 @@ label_revision_plural: Revisionen
 label_associated_revisions: Zugehörige Revisionen
 label_added: hinzugefügt
 label_modified: geändert
+label_copied: kopiert
+label_renamed: umbenannt
 label_deleted: gelöscht
 label_latest_revision: Aktuellste Revision
 label_latest_revision_plural: Aktuellste Revisionen
@@ -446,6 +458,7 @@ label_relation_new: Neue Beziehung
 label_relation_delete: Beziehung löschen
 label_relates_to: Beziehung mit
 label_duplicates: Duplikat von
+label_duplicated_by: Dupliziert durch
 label_blocks: Blockiert
 label_blocked_by: Blockiert durch
 label_precedes: Vorgänger von
@@ -511,6 +524,9 @@ label_preferences: Präferenzen
 label_chronological_order: in zeitlicher Reihenfolge
 label_reverse_chronological_order: in umgekehrter zeitlicher Reihenfolge
 label_planning: Terminplanung
+label_incoming_emails: Eingehende E-Mails
+label_generate_key: Generieren
+label_issue_watchers: Beobachter
 
 button_login: Anmelden
 button_submit: OK
@@ -549,6 +565,7 @@ button_copy: Kopieren
 button_annotate: Annotieren
 button_update: Aktualisieren
 button_configure: Konfigurieren
+button_quote: Zitieren
 
 status_active: aktiv
 status_registered: angemeldet
@@ -558,6 +575,7 @@ text_select_mail_notifications: Bitte wählen Sie die Aktionen aus, für die ein
 text_regexp_info: z. B. ^[A-Z0-9]+$
 text_min_max_length_info: 0 heißt keine Beschränkung
 text_project_destroy_confirmation: Sind Sie sicher, dass sie das Projekt löschen wollen?
+text_subprojects_destroy_warning: 'Dessen Unterprojekte (%s) werden ebenfalls gelöscht.'
 text_workflow_edit: Workflow zum Bearbeiten auswählen
 text_are_you_sure: Sind Sie sicher?
 text_journal_changed: geändert von %s zu %s
@@ -593,6 +611,10 @@ text_destroy_time_entries_question: Es wurden bereits %.02f Stunden auf dieses T
 text_destroy_time_entries: Gebuchte Aufwände löschen
 text_assign_time_entries_to_project: Gebuchte Aufwände dem Projekt zuweisen
 text_reassign_time_entries: 'Gebuchte Aufwände diesem Ticket zuweisen:'
+text_user_wrote: '%s schrieb:'
+text_enumeration_destroy_question: '%d Objekte sind diesem Wert zugeordnet.'
+text_enumeration_category_reassign_to: 'Die Objekte stattdessen diesem Wert zuordnen:'
+text_email_delivery_not_configured: "Der SMTP-Server ist nicht konfiguriert und Mailbenachrichtigungen sind ausgeschaltet.\nNehmen Sie die Einstellungen für Ihren SMTP-Server in config/email.yml vor und starten Sie die Applikation neu."
 
 default_role_manager: Manager
 default_role_developper: Entwickler
@@ -619,25 +641,3 @@ default_activity_development: Entwicklung
 enumeration_issue_priorities: Ticket-Prioritäten
 enumeration_doc_categories: Dokumentenkategorien
 enumeration_activities: Aktivitäten (Zeiterfassung)
-text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.'
-label_and_its_subprojects: %s and its subprojects
-mail_body_reminder: "%d issue(s) that are assigned to you are due in the next %d days:"
-mail_subject_reminder: "%d issue(s) due in the next days"
-text_user_wrote: '%s wrote:'
-label_duplicated_by: duplicated by
-setting_enabled_scm: Enabled SCM
-text_enumeration_category_reassign_to: 'Reassign them to this value:'
-text_enumeration_destroy_question: '%d objects are assigned to this value.'
-label_incoming_emails: Incoming emails
-label_generate_key: Generate a key
-setting_mail_handler_api_enabled: Enable WS for incoming emails
-setting_mail_handler_api_key: API key
-text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
-field_parent_title: Parent page
-label_issue_watchers: Watchers
-setting_commit_logs_encoding: Commit messages encoding
-button_quote: Quote
-setting_sequential_project_identifiers: Generate sequential project identifiers
-notice_unable_delete_version: Unable to delete version
-label_renamed: renamed
-label_copied: copied
index 5ad1e5588fec5789c00df08000ccd56d016aef3d..8a73a3992605a2ae1054ef8660607e4463d88ef8 100644 (file)
@@ -418,7 +418,7 @@ label_sort_higher: Move up
 label_sort_lower: Move down
 label_sort_lowest: Move to bottom
 label_roadmap: Roadmap
-label_roadmap_due_in: Due in 
+label_roadmap_due_in: Due in %s
 label_roadmap_overdue: %s late
 label_roadmap_no_issues: No issues for this version
 label_search: Search
index 320a169fa32b55d8f322872bfb76c3d6f0bf86fb..ae367d8429700dd25c262f23ed3f108e9de24ed1 100644 (file)
@@ -344,7 +344,7 @@ label_sort_higher: Subir
 label_sort_lower: Bajar
 label_sort_lowest: Último
 label_roadmap: Roadmap
-label_roadmap_due_in: Finaliza en 
+label_roadmap_due_in: Finaliza en %s
 label_roadmap_no_issues: No hay peticiones para esta versión
 label_search: Búsqueda
 label_result: %d resultado
index 1953fdfe52dd4eef586deca52357e56715a48a3e..225563b37f93020c859a40c0868d854dad28a21a 100644 (file)
@@ -373,7 +373,7 @@ label_sort_higher: Siirrä ylös
 label_sort_lower: Siirrä alas
 label_sort_lowest: Siirrä alimmaiseksi
 label_roadmap: Roadmap
-label_roadmap_due_in: Määräaika
+label_roadmap_due_in: Määräaika %s
 label_roadmap_overdue: %s myöhässä
 label_roadmap_no_issues: Ei tapahtumia tälle versiolle
 label_search: Haku
index eb52d5a5728f1bc31eeb47b8bfb1f751f77e2779..b640780681737b1c109ce8081956f58681ca8648 100644 (file)
@@ -417,7 +417,7 @@ label_sort_higher: Remonter
 label_sort_lower: Descendre
 label_sort_lowest: Descendre en dernier
 label_roadmap: Roadmap
-label_roadmap_due_in: Echéance dans
+label_roadmap_due_in: Echéance dans %s
 label_roadmap_overdue: En retard de %s
 label_roadmap_no_issues: Aucune demande pour cette version
 label_search: Recherche
index 7a6c62ef6223e4f1d369fc47df4855d0cc40d8be..07962d2de039aa1ae2be6a99eddbb0fc4c1589ec 100644 (file)
@@ -357,7 +357,7 @@ label_sort_higher: הזז למעלה
 label_sort_lower: הזז למטה
 label_sort_lowest: הזז לתחתית
 label_roadmap: מפת הדרכים
-label_roadmap_due_in: נגמר בעוד
+label_roadmap_due_in: %s נגמר בעוד
 label_roadmap_overdue: %s מאחר
 label_roadmap_no_issues: אין נושאים לגירסא זו
 label_search: חפש
index ad150b5f9d96d215855405eab601af5c52a1865a..3a3d18a12e82f5635499865d0a5612a46415d131 100644 (file)
@@ -407,7 +407,7 @@ label_sort_higher: Eggyel feljebb
 label_sort_lower: Eggyel lejjebb
 label_sort_lowest: Az aljára
 label_roadmap: Életút
-label_roadmap_due_in: Elkészültéig várhatóan még 
+label_roadmap_due_in: Elkészültéig várhatóan még %s
 label_roadmap_overdue: %s késésben
 label_roadmap_no_issues: Nincsenek feladatok ehhez a verzióhoz
 label_search: Keresés
index 2591358861c52f46ba4333f4252f51acf5f8f722..bca755605587d8c58778f5c2be42cc49852994fc 100644 (file)
@@ -147,7 +147,7 @@ field_attr_lastname: Attributo cognome
 field_attr_mail: Attributo e-mail
 field_onthefly: Creazione utenza "al volo"
 field_start_date: Inizio
-field_done_ratio: %% completo
+field_done_ratio: %% completato
 field_auth_source: Modalità di autenticazione
 field_hide_mail: Nascondi il mio indirizzo di e-mail
 field_comments: Commento
@@ -346,13 +346,13 @@ label_latest_revision: Ultima versione
 label_latest_revision_plural: Ultime versioni
 label_view_revisions: Mostra versioni
 label_max_size: Dimensione massima
-label_on: 'on'
+label_on: su
 label_sort_highest: Sposta in cima
 label_sort_higher: Su
 label_sort_lower: Giù
 label_sort_lowest: Sposta in fondo
 label_roadmap: Roadmap
-label_roadmap_due_in: Da ultimare in 
+label_roadmap_due_in: Da ultimare in %s
 label_roadmap_overdue: %s late
 label_roadmap_no_issues: Nessuna segnalazione per questa versione
 label_search: Ricerca
@@ -361,15 +361,15 @@ label_all_words: Tutte le parole
 label_wiki: Wiki
 label_wiki_edit: Modifica Wiki
 label_wiki_edit_plural: Modfiche wiki
-label_wiki_page: Wiki page
-label_wiki_page_plural: Wiki pages
-label_index_by_title: Index by title
-label_index_by_date: Index by date
+label_wiki_page: Pagina Wiki
+label_wiki_page_plural: Pagine Wiki
+label_index_by_title: Ordina per titolo
+label_index_by_date: Ordina per data
 label_current_version: Versione corrente
 label_preview: Anteprima
 label_feed_plural: Feed
 label_changes_details: Particolari di tutti i cambiamenti
-label_issue_tracking: tracking delle segnalazioni
+label_issue_tracking: Tracking delle segnalazioni
 label_spent_time: Tempo impiegato
 label_f_hour: %.2f ora
 label_f_hour_plural: %.2f ore
@@ -485,7 +485,7 @@ text_comma_separated: Valori multipli permessi (separati da virgola).
 text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages
 text_issue_added: "E' stata segnalata l'anomalia %s da %s."
 text_issue_updated: "L'anomalia %s e' stata aggiornata da %s."
-text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all its content ?
+text_wiki_destroy_confirmation: Sicuro di voler cancellare questo wiki e tutti i suoi contenuti?
 text_issue_category_destroy_question: Alcune segnalazioni (%d) risultano assegnate a questa categoria. Cosa vuoi fare ?
 text_issue_category_destroy_assignments: Rimuovi gli assegnamenti a questa categoria
 text_issue_category_reassign_to: Riassegna segnalazioni a questa categoria
@@ -535,7 +535,7 @@ label_user_mail_option_selected: "Solo per gli eventi relativi ai progetti selez
 label_user_mail_option_all: "Per ogni evento relativo ad uno dei miei progetti"
 label_user_mail_option_none: "Solo per argomenti che osservo o che mi riguardano"
 setting_emails_footer: Piè di pagina e-mail
-label_float: Float
+label_float: Decimale
 button_copy: Copia
 mail_body_account_information_external: Puoi utilizzare il tuo account "%s" per accedere al sistema.
 mail_body_account_information: Le informazioni riguardanti il tuo account
@@ -633,10 +633,10 @@ setting_mail_handler_api_enabled: Abilita WS per le e-mail in arrivo
 setting_mail_handler_api_key: chiave API
 text_email_delivery_not_configured: "La consegna via e-mail non è configurata e le notifiche sono disabilitate.\nConfigura il tuo server SMTP in config/email.yml e riavvia l'applicazione per abilitarle."
 field_parent_title: Parent page
-label_issue_watchers: Watchers
-setting_commit_logs_encoding: Commit messages encoding
-button_quote: Quote
-setting_sequential_project_identifiers: Generate sequential project identifiers
-notice_unable_delete_version: Unable to delete version
-label_renamed: renamed
-label_copied: copied
+label_issue_watchers: Osservatori
+setting_commit_logs_encoding: Codifica dei messaggi di commit
+button_quote: Quota
+setting_sequential_project_identifiers: Genera progetti con identificativi in sequenza
+notice_unable_delete_version: Impossibile cancellare la versione
+label_renamed: rinominato
+label_copied: copiato
index c38c2ef706d8027bea6084096d99704c8a66d311..4e46212b20e8e71b3483d02491df11e3d8b4ea26 100644 (file)
@@ -353,7 +353,7 @@ label_sort_higher: 上へ
 label_sort_lower: 下へ
 label_sort_lowest: 一番下へ
 label_roadmap: ロードマップ
-label_roadmap_due_in: 期日まで
+label_roadmap_due_in: 期日まで %s
 label_roadmap_overdue: %s late
 label_roadmap_no_issues: このバージョンに向けてのチケットはありません
 label_search: 検索
index 27adf167cd7ba94834c02f4714f9ddbdff3d7eb1..c23ea71cdc08a8220ea81ba13b39797e37a99f17 100644 (file)
@@ -359,7 +359,7 @@ label_sort_higher: 위로
 label_sort_lower: 아래로
 label_sort_lowest: 최하단으로
 label_roadmap: 로드맵
-label_roadmap_due_in: 기한 
+label_roadmap_due_in: 기한  %s
 label_roadmap_overdue: %s 지연
 label_roadmap_no_issues: 이버전에 해당하는 이슈 없음
 label_search: 검색
index 5110a6b6adde1b2370132a060752a3d584248806..f29c28c4f8aefe3b55014102aa1c2192bc460f45 100644 (file)
@@ -371,7 +371,7 @@ label_sort_higher: Perkelti į viršų
 label_sort_lower: Perkelti žemyn 
 label_sort_lowest: Perkelti į apačią 
 label_roadmap: Veiklos grafikas 
-label_roadmap_due_in: Baigiasi po 
+label_roadmap_due_in: Baigiasi po %s
 label_roadmap_overdue: %s vėluojama 
 label_roadmap_no_issues: Jokio darbo šiai versijai nėra
 label_search: Ieškoti 
index 10d02cca7b2a3d8c16f9399a8056823a0a882b53..8fd96d1c17fcb325af84aeaf98ccc37e6d85adb9 100644 (file)
@@ -352,7 +352,7 @@ label_sort_higher: Verplaats naar boven
 label_sort_lower: Verplaats naar beneden
 label_sort_lowest: Verplaats naar eind
 label_roadmap: Roadmap
-label_roadmap_due_in: Voldaan in
+label_roadmap_due_in: Voldaan in %s
 label_roadmap_overdue: %s overtijd
 label_roadmap_no_issues: Geen issues voor deze versie
 label_search: Zoeken
index 2b78826d074ae6d6ca42e53e880c76528d87cb12..8cd6952c62988999e09b41b0a614b26eb694b8d0 100644 (file)
@@ -410,7 +410,7 @@ label_sort_higher: Flytt opp
 label_sort_lower: Flytt ned
 label_sort_lowest: Flytt til bunnen
 label_roadmap: Veikart
-label_roadmap_due_in: Frist om
+label_roadmap_due_in: Frist om %s
 label_roadmap_overdue: %s over fristen
 label_roadmap_no_issues: Ingen saker for denne versjonen
 label_search: Søk
index 6bdac481c15e93e48ff913c841912f174624d4d1..5003db73975517bf83144620d95d372ffb3d7933 100644 (file)
@@ -344,7 +344,7 @@ label_sort_higher: Do góry
 label_sort_lower: Do dołu
 label_sort_lowest: Przesuń na dół
 label_roadmap: Mapa
-label_roadmap_due_in: W czasie 
+label_roadmap_due_in: W czasie %s
 label_roadmap_no_issues: Brak zagadnień do tej wersji
 label_search: Szukaj
 label_result_plural: Rezultatów
index a4bbefe0139ee859cb9998f1e62afb761a46a280..3e314af8cb900303d75ee9e44c47c5314c3edc31 100644 (file)
@@ -415,7 +415,7 @@ label_sort_higher: Mover para cima
 label_sort_lower: Mover para baixo
 label_sort_lowest: Mover para o fim
 label_roadmap: Planejamento
-label_roadmap_due_in: Previsto para
+label_roadmap_due_in: Previsto para %s
 label_roadmap_overdue: %s atrasado
 label_roadmap_no_issues: Sem tickets para esta versão
 label_search: Busca
index 98cde780a66bedb8510057183c525e8747137951..e968ef3b473c1a0dea22827c24964a69baa8c7bc 100644 (file)
@@ -17,24 +17,24 @@ actionview_datehelper_time_in_words_minute_plural: %d minutos
 actionview_datehelper_time_in_words_minute_single: 1 minuto
 actionview_datehelper_time_in_words_second_less_than: menos de um segundo
 actionview_datehelper_time_in_words_second_less_than_plural: menos de %d segundos
-actionview_instancetag_blank_option: Selecione
+actionview_instancetag_blank_option: Seleccione
 
 activerecord_error_inclusion: não existe na lista
 activerecord_error_exclusion: já existe na lista
 activerecord_error_invalid: é inválido
-activerecord_error_confirmation: não confere com sua confirmação
-activerecord_error_accepted: deve ser aceito
+activerecord_error_confirmation: não está de acordo com sua confirmação
+activerecord_error_accepted: deve ser aceite
 activerecord_error_empty: não pode ser vazio
 activerecord_error_blank: não pode estar em branco
 activerecord_error_too_long: é muito longo
 activerecord_error_too_short: é muito curto
 activerecord_error_wrong_length: possui o comprimento errado
-activerecord_error_taken: já foi usado em outro registro
+activerecord_error_taken: já foi usado em outro registo
 activerecord_error_not_a_number: não é um número
 activerecord_error_not_a_date: não é uma data válida
 activerecord_error_greater_than_start_date: deve ser maior que a data inicial
-activerecord_error_not_same_project: não pertence ao mesmo projeto
-activerecord_error_circular_dependency: Este relaão pode criar uma dependência circular
+activerecord_error_not_same_project: não pertence ao mesmo projecto
+activerecord_error_circular_dependency: Esta relação pode criar uma dependência circular
 
 general_fmt_age: %d ano
 general_fmt_age_plural: %d anos
@@ -54,33 +54,33 @@ general_pdf_encoding: ISO-8859-1
 general_day_names: Segunda,Terça,Quarta,Quinta,Sexta,Sábado,Domingo
 general_first_day_of_week: '1'
 
-notice_account_updated: Conta foi atualizada com sucesso.
-notice_account_invalid_creditentials: Usuário ou senha inválidos.
-notice_account_password_updated: Senha foi alterada com sucesso.
-notice_account_wrong_password: Senha errada.
-notice_account_register_done: Conta foi criada com sucesso.
-notice_account_unknown_email: Usuário desconhecido.
-notice_can_t_change_password: Esta conta usa autenticação externa. E impossível trocar a senha.
-notice_account_lost_email_sent: Um email com as instruções para escolher uma nova senha foi enviado para você.
-notice_account_activated: Sua conta foi ativada. Você pode logar agora
+notice_account_updated: Conta actualizada com sucesso.
+notice_account_invalid_creditentials: Utilizador ou palavra-chave inválidos.
+notice_account_password_updated: Palavra-chave foi alterada com sucesso.
+notice_account_wrong_password: Palavra-chave errada.
+notice_account_register_done: Conta criada com sucesso.
+notice_account_unknown_email: Utilizador desconhecido.
+notice_can_t_change_password: Esta conta utiliza autenticação externa. Não é possível alterar a palavra-chave.
+notice_account_lost_email_sent: Foi enviado e-mail com as instruções para criar uma nova palavra-chave.
+notice_account_activated: Conta foi activada. Pode ligar-se agora
 notice_successful_create: Criado com sucesso.
 notice_successful_update: Alterado com sucesso.
 notice_successful_delete: Apagado com sucesso.
-notice_successful_connection: Conectado com sucesso.
-notice_file_not_found: A página que você está tentando acessar não existe ou foi excluída.
-notice_locking_conflict: Os dados foram atualizados por um outro usuário.
-notice_not_authorized: Você não está autorizado a acessar esta página.
-notice_email_sent: An email was sent to %s
-notice_email_error: An error occurred while sending mail (%s)
-notice_feeds_access_key_reseted: Your RSS access key was reseted.
+notice_successful_connection: Ligado com sucesso.
+notice_file_not_found: A página que está a tentar aceder não existe ou foi eliminada.
+notice_locking_conflict: Os dados foram actualizados por outro utilizador.
+notice_not_authorized: Não está autorizado a visualizar esta página.
+notice_email_sent: Foi enviado um e-mail para %s
+notice_email_error: Ocorreu um erro ao enviar o e-mail (%s)
+notice_feeds_access_key_reseted: A sua chave RSS foi inicializada.
 
 error_scm_not_found: "A entrada e/ou a revisão não existem no repositório."
-error_scm_command_failed: "An error occurred when trying to access the repository: %s"
+error_scm_command_failed: "Ocorreu um erro ao tentar aceder ao repositorio: %s"
 
-mail_subject_lost_password: Sua senha do %s.
-mail_body_lost_password: 'Para mudar sua senha, clique no link abaixo:'
-mail_subject_register: Ativação de conta do %s.
-mail_body_register: 'Para ativar sua conta, clique no link abaixo:'
+mail_subject_lost_password: Palavra-chave do %s.
+mail_body_lost_password: 'Para mudar a palavra-chave, clique no link abaixo:'
+mail_subject_register: Activação de conta do %s.
+mail_body_register: 'Para activar a conta, clique no link abaixo:'
 
 gui_validation_error: 1 erro
 gui_validation_error_plural: %d erros
@@ -91,7 +91,7 @@ field_summary: Sumário
 field_is_required: Obrigatório
 field_firstname: Primeiro nome
 field_lastname: Último nome
-field_mail: Email
+field_mail: E-mail
 field_filename: Arquivo
 field_filesize: Tamanho
 field_downloads: Downloads
@@ -99,7 +99,7 @@ field_author: Autor
 field_created_on: Criado
 field_updated_on: Alterado
 field_field_format: Formato
-field_is_for_all: Para todos os projetos
+field_is_for_all: Para todos os projectos
 field_possible_values: Possíveis valores
 field_regexp: Expressão regular
 field_min_length: Tamanho mínimo
@@ -107,33 +107,33 @@ field_max_length: Tamanho máximo
 field_value: Valor
 field_category: Categoria
 field_title: Título
-field_project: Projeto
+field_project: Projecto
 field_issue: Tarefa 
-field_status: Status
+field_status: Estado
 field_notes: Notas
 field_is_closed: Tarefa fechada
-field_is_default: Status padrão
+field_is_default: Estado padrão
 field_tracker: Tipo
 field_subject: Assunto
 field_due_date: Data final
-field_assigned_to: Atribuído para
+field_assigned_to: Atribuído a
 field_priority: Prioridade
-field_fixed_version: Target version
-field_user: Usuário
+field_fixed_version: Versão
+field_user: Utilizador
 field_role: Regra
 field_homepage: Página inicial
 field_is_public: Público
-field_parent: Sub-projeto de
+field_parent: Subprojecto de
 field_is_in_chlog: Tarefas mostradas no changelog
 field_is_in_roadmap: Tarefas mostradas no roadmap
-field_login: Login
-field_mail_notification: Notificações por email
+field_login: Utilizador
+field_mail_notification: Notificações por e-mail
 field_admin: Administrador
-field_last_login_on: Última conexão
+field_last_login_on: Último acesso
 field_language: Língua
 field_effective_date: Data
-field_password: Senha
-field_new_password: Nova senha
+field_password: Palavra-chave
+field_new_password: Nova palavra-chave
 field_password_confirmation: Confirmação
 field_version: Versão
 field_type: Tipo
@@ -141,60 +141,60 @@ field_host: Servidor
 field_port: Porta
 field_account: Conta
 field_base_dn: Base DN
-field_attr_login: Atributo login
+field_attr_login: Atributo utilizador
 field_attr_firstname: Atributo primeiro nome
 field_attr_lastname: Atributo último nome
-field_attr_mail: Atributo email
-field_onthefly: Criação de usuário sob-demanda
+field_attr_mail: Atributo e-mail
+field_onthefly: Criação de utilizadores sob demanda
 field_start_date: Início
 field_done_ratio: %% Terminado
 field_auth_source: Modo de autenticação
-field_hide_mail: Esconda meu email
+field_hide_mail: Esconder endereço de e-mail
 field_comments: Comentário
 field_url: URL
 field_start_page: Página inicial
-field_subproject: Sub-projeto
+field_subproject: Subprojecto
 field_hours: Horas
-field_activity: Atividade
+field_activity: Actividade
 field_spent_on: Data
 field_identifier: Identificador
 field_is_filter: Usado como filtro
 field_issue_to_id: Tarefa relacionada
 field_delay: Atraso
-field_assignable: Issues can be assigned to this role
-field_redirect_existing_links: Redirect existing links
-field_estimated_hours: Estimated time
+field_assignable: As tarefas não podem ser associados a esta regra
+field_redirect_existing_links: Redireccionar as hiperligações
+field_estimated_hours: Estimativa de horas
 field_default_value: Padrão
 
 setting_app_title: Título da aplicação
-setting_app_subtitle: Sub-título da aplicação
+setting_app_subtitle: Subtítulo da aplicação
 setting_welcome_text: Texto de boas-vindas
 setting_default_language: Linguagem padrão
 setting_login_required: Autenticação obrigatória
 setting_self_registration: Registro permitido
 setting_attachment_max_size: Tamanho máximo do anexo
 setting_issues_export_limit: Limite de exportação das tarefas
-setting_mail_from: Email enviado de
+setting_mail_from: E-mail enviado de
 setting_host_name: Servidor
 setting_text_formatting: Formato do texto
 setting_wiki_compression: Compactação do histórico do Wiki
 setting_feeds_limit: Limite do Feed
 setting_autofetch_changesets: Buscar automaticamente commits
-setting_sys_api_enabled: Ativa WS para gerenciamento do repositório
-setting_commit_ref_keywords: Palavras-chave de referôncia
+setting_sys_api_enabled: Activar Web Service para gestão do repositório
+setting_commit_ref_keywords: Palavras-chave de referência
 setting_commit_fix_keywords: Palavras-chave fixas
-setting_autologin: Autologin
-setting_date_format: Date format
-setting_cross_project_issue_relations: Allow cross-project issue relations
+setting_autologin: Acesso automático
+setting_date_format: Formato da data
+setting_cross_project_issue_relations: Permitir relações de tarefas de projectos diferentes
 
-label_user: Usuário
-label_user_plural: Usuários
-label_user_new: Novo usuário
-label_project: Projeto
-label_project_new: Novo projeto
-label_project_plural: Projetos
-label_project_all: All Projects
-label_project_latest: Últimos projetos
+label_user: Utilizador
+label_user_plural: Utilizadores
+label_user_new: Novo utilizador
+label_project: Projecto
+label_project_new: Novo projecto
+label_project_plural: Projectos
+label_project_all: Todos os projectos
+label_project_latest: Últimos projectos
 label_issue: Tarefa
 label_issue_new: Nova tarefa
 label_issue_plural: Tarefas
@@ -213,9 +213,9 @@ label_tracker: Tipo
 label_tracker_plural: Tipos
 label_tracker_new: Novo tipo
 label_workflow: Workflow
-label_issue_status: Status da tarefa
-label_issue_status_plural: Status das tarefas
-label_issue_status_new: Novo status
+label_issue_status: Estado da tarefa
+label_issue_status_plural: Estado das tarefas
+label_issue_status_new: Novo estado
 label_issue_category: Categoria da tarefa
 label_issue_category_plural: Categorias das tarefas
 label_issue_category_new: Nova categoria
@@ -226,32 +226,32 @@ label_enumerations: Enumeração
 label_enumeration_new: Novo valor
 label_information: Informação
 label_information_plural: Informações
-label_please_login: Efetue login
-label_register: Registre-se
-label_password_lost: Perdi a senha
+label_please_login: Efectuar acesso
+label_register: Registe-se
+label_password_lost: Perdi a palavra-chave
 label_home: Página inicial
-label_my_page: Minha página
+label_my_page: Página pessoal
 label_my_account: Minha conta
-label_my_projects: Meus projetos
+label_my_projects: Meus projectos
 label_administration: Administração
-label_login: Login
-label_logout: Logout
+label_login: Entrar
+label_logout: Sair
 label_help: Ajuda
 label_reported_issues: Tarefas reportadas
-label_assigned_to_me_issues: Tarefas atribuídas à mim
-label_last_login: Útima conexão
+label_assigned_to_me_issues: Tarefas atribuídas
+label_last_login: Último acesso
 label_last_updates: Última alteração
 label_last_updates_plural: %d Últimas alterações
-label_registered_on: Registrado em
-label_activity: Atividade
+label_registered_on: Registado em
+label_activity: Actividade
 label_new: Novo
-label_logged_as: Logado como
+label_logged_as: Ligado como
 label_environment: Ambiente
 label_authentication: Autenticação
 label_auth_source: Modo de autenticação
 label_auth_source_new: Novo modo de autenticação
 label_auth_source_plural: Modos de autenticação
-label_subproject_plural: Sub-projetos
+label_subproject_plural: Subprojectos
 label_min_max_length: Tamanho min-max
 label_list: Lista
 label_date: Data
@@ -264,7 +264,7 @@ label_attribute_plural: Atributos
 label_download: %d Download
 label_download_plural: %d Downloads
 label_no_data: Sem dados para mostrar
-label_change_status: Mudar status
+label_change_status: Mudar estado
 label_history: Histórico
 label_attachment: Arquivo
 label_attachment_new: Novo arquivo
@@ -286,15 +286,15 @@ label_version_plural: Versões
 label_confirmation: Confirmação
 label_export_to: Exportar para
 label_read: Ler...
-label_public_projects: Projetos públicos
+label_public_projects: Projectos públicos
 label_open_issues: Aberto
 label_open_issues_plural:  Abertos
 label_closed_issues: Fechado
 label_closed_issues_plural: Fechados
 label_total: Total
 label_permissions: Permissões
-label_current_status: Status atual
-label_new_statuses_allowed: Novo status permitido
+label_current_status: Estado actual
+label_new_statuses_allowed: Novo estado permitido
 label_all: todos
 label_none: nenhum
 label_next: Próximo
@@ -309,7 +309,7 @@ label_gantt: Gantt
 label_internal: Interno
 label_last_changes: últimas %d mudanças
 label_change_view_all: Mostrar todas as mudanças
-label_personalize_page: Personalizar esta página
+label_personalize_page: Personalizar página
 label_comment: Comentário
 label_comment_plural: Comentários
 label_comment_add: Adicionar comentário
@@ -326,7 +326,7 @@ label_in_less_than: é maior que
 label_in_more_than: é menor que
 label_in: em
 label_today: hoje
-label_this_week: this week
+label_this_week: esta semana
 label_less_than_ago: faz menos de
 label_more_than_ago: faz mais de
 label_ago: dias atrás
@@ -341,7 +341,7 @@ label_revision: Revisão
 label_revision_plural: Revisões
 label_added: adicionado
 label_modified: modificado
-label_deleted: deletado
+label_deleted: apagado
 label_latest_revision: Última revisão
 label_latest_revision_plural: Últimas revisões
 label_view_revisions: Ver revisões
@@ -353,20 +353,20 @@ label_sort_lower: Mover para baixo
 label_sort_lowest: Mover para o fim
 label_roadmap: Roadmap
 label_roadmap_due_in: Termina em
-label_roadmap_overdue: %s late
+label_roadmap_overdue: %s atrasado
 label_roadmap_no_issues: Sem tarefas para essa versão
-label_search: Busca
+label_search: Procurar
 label_result_plural: Resultados
 label_all_words: Todas as palavras
 label_wiki: Wiki
-label_wiki_edit: Wiki edit
-label_wiki_edit_plural: Wiki edits
-label_wiki_page: Wiki page
-label_wiki_page_plural: Wiki pages
-label_index_by_title: Index by title
-label_index_by_date: Index by date
-label_current_version: Versão atual
-label_preview: Prévia
+label_wiki_edit: Editar Wiki 
+label_wiki_edit_plural: Editar Wiki's
+label_wiki_page: Página de Wiki
+label_wiki_page_plural: Páginas de Wiki
+label_index_by_title: Índice por título
+label_index_by_date: Índice por data
+label_current_version: Versão actual
+label_preview: Pré-visualizar
 label_feed_plural: Feeds
 label_changes_details: Detalhes de todas as mudanças
 label_issue_tracking: Tarefas
@@ -386,10 +386,10 @@ label_copy_workflow_from: Copiar workflow de
 label_permissions_report: Relatório de permissões
 label_watched_issues: Tarefas observadas
 label_related_issues: tarefas relacionadas
-label_applied_status: Status aplicado
+label_applied_status: Estado aplicado
 label_loading: Carregando...
 label_relation_new: Nova relação
-label_relation_delete: Deletar relação
+label_relation_delete: Apagar relação
 label_relates_to: relacionado à
 label_duplicates: duplicadas
 label_blocks: bloqueios
@@ -398,38 +398,38 @@ label_precedes: procede
 label_follows: segue
 label_end_to_start: fim ao início
 label_end_to_end: fim ao fim
-label_start_to_start: ínícia ao inícia
-label_start_to_end: inícia ao fim
-label_stay_logged_in: Rester connecté
-label_disabled: désactivé
-label_show_completed_versions: Voire les versions passées
-label_me: me
+label_start_to_start: início ao início
+label_start_to_end: início ao fim
+label_stay_logged_in: Guardar sessão
+label_disabled: desactivar
+label_show_completed_versions: Ver as versões completas
+label_me: Eu
 label_board: Forum
-label_board_new: New forum
-label_board_plural: Forums
-label_topic_plural: Topics
-label_message_plural: Messages
-label_message_last: Last message
-label_message_new: New message
-label_reply_plural: Replies
-label_send_information: Send account information to the user
-label_year: Year
-label_month: Month
-label_week: Week
-label_date_from: From
-label_date_to: To
-label_language_based: Language based
-label_sort_by: Sort by %s
-label_send_test_email: Send a test email
-label_feeds_access_key_created_on: RSS access key created %s ago
-label_module_plural: Modules
-label_added_time_by: Added by %s %s ago
-label_updated_time: Updated %s ago
-label_jump_to_a_project: Jump to a project...
+label_board_new: Novo forum
+label_board_plural: Foruns
+label_topic_plural: Topicos
+label_message_plural: Mensagens
+label_message_last: Ultima mensagem
+label_message_new: Nova mensagem
+label_reply_plural: Respostas
+label_send_information: Enviar dados da conta para o utilizador
+label_year: Ano
+label_month: Mês
+label_week: Semana
+label_date_from: De
+label_date_to: Para
+label_language_based: Baseado na língua
+label_sort_by: Ordenar por %s
+label_send_test_email: Enviar e-mail de teste
+label_feeds_access_key_created_on: Chave RSS criada à %s atrás
+label_module_plural: Módulos
+label_added_time_by: Adicionado por %s %s atrás
+label_updated_time: Actualizado %s atrás
+label_jump_to_a_project: Ir para o projecto...
 
-button_login: Login
+button_login: Entrar
 button_submit: Enviar
-button_save: Salvar
+button_save: Guardar
 button_check_all: Marcar todos
 button_uncheck_all: Desmarcar todos
 button_delete: Apagar
@@ -448,195 +448,195 @@ button_view: Ver
 button_move: Mover
 button_back: Voltar
 button_cancel: Cancelar
-button_activate: Ativar
+button_activate: Activar
 button_sort: Ordenar
 button_log_time: Tempo de trabalho
 button_rollback: Voltar para esta versão
 button_watch: Observar
 button_unwatch: Não observar
-button_reply: Reply
-button_archive: Archive
-button_unarchive: Unarchive
-button_reset: Reset
-button_rename: Rename
+button_reply: Responder
+button_archive: Arquivar
+button_unarchive: Desarquivar
+button_reset: Reinicializar
+button_rename: Renomear
 
-status_active: ativo
+status_active: activo
 status_registered: registrado
 status_locked: bloqueado
 
-text_select_mail_notifications: Selecionar ações para ser enviada uma notificação por email
+text_select_mail_notifications: Seleccionar as acções que originam uma notificação por e-mail
 text_regexp_info: ex. ^[A-Z0-9]+$
 text_min_max_length_info: 0 siginifica sem restrição
-text_project_destroy_confirmation: Você tem certeza que deseja deletar este projeto e todos os dados relacionados?
-text_workflow_edit: Selecione uma regra e um tipo de tarefa para editar o workflow
-text_are_you_sure: Você tem certeza ?
+text_project_destroy_confirmation: Você tem certeza que deseja apagar este projecto e todos os dados relacionados?
+text_workflow_edit: Seleccione uma regra e um tipo de tarefa para editar o workflow
+text_are_you_sure: Você tem certeza?
 text_journal_changed: alterado de %s para %s
 text_journal_set_to: alterar para %s
 text_journal_deleted: apagado
 text_tip_task_begin_day: tarefa começa neste dia
 text_tip_task_end_day: tarefa termina neste dia
 text_tip_task_begin_end_day: tarefa começa e termina neste dia
-text_project_identifier_info: 'Letras minúsculas (a-z), números e traços permitido.<br />Uma vez salvo, o identificador nao pode ser mudado.'
-text_caracters_maximum: %d móximo de caracteres
+text_project_identifier_info: 'Letras minúsculas (a-z), números e traços permitido.<br />Uma vez gravado, o identificador nao pode ser mudado.'
+text_caracters_maximum: %d máximo de caracteres
 text_length_between: Tamanho entre %d e %d caracteres.
 text_tracker_no_workflow: Sem workflow definido para este tipo.
 text_unallowed_characters: Caracteres não permitidos
-text_comma_separated: Permitido múltiplos valores (separados por vírgula).
+text_comma_separated: Permitidos múltiplos valores (separados por vírgula).
 text_issues_ref_in_commit_messages: Referenciando e arrumando tarefas nas mensagens de commit
 text_issue_added: Tarefa %s foi incluída (by %s).
 text_issue_updated: Tarefa %s foi alterada (by %s).
-text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all its content ?
-text_issue_category_destroy_question: Some issues (%d) are assigned to this category. What do you want to do ?
-text_issue_category_destroy_assignments: Remove category assignments
-text_issue_category_reassign_to: Reassing issues to this category
+text_wiki_destroy_confirmation: Tem certeza que quer apagar esta página de wiki e todo o conteudo relacionado?
+text_issue_category_destroy_question: Existem tarefas (%d) associadas a esta categoria. Seleccione uma opção?
+text_issue_category_destroy_assignments: Remover as relações com a categoria
+text_issue_category_reassign_to: Re-associar as tarefas á categoria
 
-default_role_manager: Gerente de Projeto
+default_role_manager: Gestor de Projecto
 default_role_developper: Desenvolvedor
 default_role_reporter: Analista de Suporte
 default_tracker_bug: Bug
-default_tracker_feature: Implementaçõo
+default_tracker_feature: Implementação
 default_tracker_support: Suporte
 default_issue_status_new: Novo
 default_issue_status_assigned: Atribuído
 default_issue_status_resolved: Resolvido
-default_issue_status_feedback: Feedback
+default_issue_status_feedback: Comentário
 default_issue_status_closed: Fechado
 default_issue_status_rejected: Rejeitado
-default_doc_category_user: Documentação do usuário
+default_doc_category_user: Documentação do utilizador
 default_doc_category_tech: Documentação técnica
 default_priority_low: Baixo
 default_priority_normal: Normal
 default_priority_high: Alto
 default_priority_urgent: Urgente
 default_priority_immediate: Imediato
-default_activity_design: Design
+default_activity_design: Desenho
 default_activity_development: Desenvolvimento
 
 enumeration_issue_priorities: Prioridade das tarefas
 enumeration_doc_categories: Categorias de documento
-enumeration_activities: Atividades (time tracking)
-label_file_plural: Files
-label_changeset_plural: Changesets
-field_column_names: Columns
-label_default_columns: Default columns
-setting_issue_list_default_columns: Default columns displayed on the issue list
-setting_repositories_encodings: Repositories encodings
-notice_no_issue_selected: "No issue is selected! Please, check the issues you want to edit."
-label_bulk_edit_selected_issues: Bulk edit selected issues
-label_no_change_option: (No change)
-notice_failed_to_save_issues: "Failed to save %d issue(s) on %d selected: %s."
-label_theme: Theme
-label_default: Default
-label_search_titles_only: Search titles only
-label_nobody: nobody
-button_change_password: Change password
-text_user_mail_option: "For unselected projects, you will only receive notifications about things you watch or you're involved in (eg. issues you're the author or assignee)."
-label_user_mail_option_selected: "For any event on the selected projects only..."
-label_user_mail_option_all: "For any event on all my projects"
-label_user_mail_option_none: "Only for things I watch or I'm involved in"
-setting_emails_footer: Emails footer
+enumeration_activities: Actividades (time tracking)
+label_file_plural: Arquivos
+label_changeset_plural: Alterações
+field_column_names: Colunas
+label_default_columns: Valores por defeito das colunas
+setting_issue_list_default_columns: Colunas listadas nas tarefas por defeito
+setting_repositories_encodings: Codificação dos repositórios
+notice_no_issue_selected: "Nenhuma tarefa seleccionada! Por favor, selecione uma tarefa para editar."
+label_bulk_edit_selected_issues: Edição em massa das tarefas seleccionadas
+label_no_change_option: (Sem alterações)
+notice_failed_to_save_issues: "Erro ao gravar %d tarefa(s) no %d seleccionado: %s."
+label_theme: Tema
+label_default: Padrão
+label_search_titles_only: Procurar apenas nos títulos
+label_nobody: desconhecido
+button_change_password: Alterar palavra-chave
+text_user_mail_option: "Para os projectos não seleccionados, irá receber e-mails de notificação apenas de eventos que esteja a observar ou envolvido (isto é, tarefas que é autor ou que estão atribuidas a si)."
+label_user_mail_option_selected: "Qualquer evento que ocorra nos projectos selecionados apenas..."
+label_user_mail_option_all: "Todos eventos em todos os projectos"
+label_user_mail_option_none: "Apenas eventos que sou observador ou que estou envolvido"
+setting_emails_footer: Rodapé do e-mail
 label_float: Float
-button_copy: Copy
-mail_body_account_information_external: You can use your "%s" account to log in.
-mail_body_account_information: Your account information
-setting_protocol: Protocol
-label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself"
-setting_time_format: Time format
-label_registration_activation_by_email: account activation by email
-mail_subject_account_activation_request: %s account activation request
-mail_body_account_activation_request: 'A new user (%s) has registered. His account his pending your approval:'
-label_registration_automatic_activation: automatic account activation
-label_registration_manual_activation: manual account activation
-notice_account_pending: "Your account was created and is now pending administrator approval."
-field_time_zone: Time zone
-text_caracters_minimum: Must be at least %d characters long.
-setting_bcc_recipients: Blind carbon copy recipients (bcc)
-button_annotate: Annotate
-label_issues_by: Issues by %s
-field_searchable: Searchable
-label_display_per_page: 'Per page: %s'
+button_copy: Copiar
+mail_body_account_information_external: Pode utilizar a sua conta "%s" para entrar.
+mail_body_account_information: Informação da sua conta de acesso
+setting_protocol: Protocolo
+label_user_mail_no_self_notified: "Não quero ser notificado de alterações efectuadas por mim"
+setting_time_format: Formato da hora
+label_registration_activation_by_email: Activação de conta de acesso por e-mail
+mail_subject_account_activation_request: %s pedido de activação de conta de acesso
+mail_body_account_activation_request: 'Novo utilizador (%s) registado. Conta de acesso pendente a aguardar validação:'
+label_registration_automatic_activation: Activação de conta de acesso automático
+label_registration_manual_activation: activação de conta de acesso manual
+notice_account_pending: "Conta de acesso criada, mas pendente para validação do administrador"
+field_time_zone: Fuso horário
+text_caracters_minimum: Tem que ter no minimo %d caracteres.
+setting_bcc_recipients: Esconder endereços destinos de e-mail (bcc)
+button_annotate: Anotar
+label_issues_by: tarefas por %s
+field_searchable: Pesquisável
+label_display_per_page: 'Por página: %s'
 setting_per_page_options: Objects per page options
-label_age: Age
-notice_default_data_loaded: Default configuration successfully loaded.
-text_load_default_configuration: Load the default configuration
-text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded."
-error_can_t_load_default_data: "Default configuration could not be loaded: %s"
-button_update: Update
-label_change_properties: Change properties
-label_general: General
-label_repository_plural: Repositories
-label_associated_revisions: Associated revisions
-setting_user_format: Users display format
+label_age: Idade
+notice_default_data_loaded: Configuração inicial por defeito carregada.
+text_load_default_configuration: Inserir configuração por defeito inicial
+text_no_configuration_data: "Regras, trackers, estado das tarefas e workflow ainda não foram configurados.\nÉ recomendado que carregue a configuração por defeito. Posteriormente poderá alterar a configuração carregada."
+error_can_t_load_default_data: "Configuração inical por defeito não pode ser carregada: %s"
+button_update: Actualizar
+label_change_properties: Alterar propriedades
+label_general: Geral
+label_repository_plural: Repositórios
+label_associated_revisions: Versões associadas
+setting_user_format: Formato para visualizar o utilizador
 text_status_changed_by_changeset: Applied in changeset %s.
-label_more: More
-text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s) ?'
+label_more: mais
+text_issues_destroy_confirmation: 'Tem certeza que deseja apagar as tarefa(s) seleccionada(s)?'
 label_scm: SCM
-text_select_project_modules: 'Select modules to enable for this project:'
-label_issue_added: Issue added
-label_issue_updated: Issue updated
-label_document_added: Document added
-label_message_posted: Message added
-label_file_added: File added
-label_news_added: News added
+text_select_project_modules: 'Seleccione o(s) modulo(s) que deseja activar para o projecto:'
+label_issue_added: Tarefa adicionada
+label_issue_updated: Tarefa alterada
+label_document_added: Documento adicionado
+label_message_posted: Mensagem adicionada
+label_file_added: Arquivo adicionado
+label_news_added: Noticia adicionada
 project_module_boards: Boards
-project_module_issue_tracking: Issue tracking
+project_module_issue_tracking: Tracking de tarefas
 project_module_wiki: Wiki
-project_module_files: Files
-project_module_documents: Documents
-project_module_repository: Repository
-project_module_news: News
+project_module_files: Ficheiros
+project_module_documents: Documentos
+project_module_repository: Repositório
+project_module_news: Noticias
 project_module_time_tracking: Time tracking
-text_file_repository_writable: File repository writable
-text_default_administrator_account_changed: Default administrator account changed
-text_rmagick_available: RMagick available (optional)
-button_configure: Configure
+text_file_repository_writable: Repositório de ficheiros com permissões de escrita
+text_default_administrator_account_changed: Dados da conta de administrador padrão alterados
+text_rmagick_available: RMagick disponível (opcional)
+button_configure: Configurar
 label_plugins: Plugins
-label_ldap_authentication: LDAP authentication
+label_ldap_authentication: autenticação por LDAP
 label_downloads_abbr: D/L
-label_this_month: this month
-label_last_n_days: last %d days
-label_all_time: all time
-label_this_year: this year
-label_date_range: Date range
-label_last_week: last week
-label_yesterday: yesterday
-label_last_month: last month
-label_add_another_file: Add another file
-label_optional_description: Optional description
-text_destroy_time_entries_question: %.02f hours were reported on the issues you are about to delete. What do you want to do ?
-error_issue_not_found_in_project: 'The issue was not found or does not belong to this project'
-text_assign_time_entries_to_project: Assign reported hours to the project
-text_destroy_time_entries: Delete reported hours
-text_reassign_time_entries: 'Reassign reported hours to this issue:'
-setting_activity_days_default: Days displayed on project activity
-label_chronological_order: In chronological order
-field_comments_sorting: Display comments
-label_reverse_chronological_order: In reverse chronological order
-label_preferences: Preferences
-setting_display_subprojects_issues: Display subprojects issues on main projects by default
-label_overall_activity: Overall activity
-setting_default_projects_public: New projects are public by default
-error_scm_annotate: "The entry does not exist or can not be annotated."
-label_planning: Planning
-text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.'
-label_and_its_subprojects: %s and its subprojects
-mail_body_reminder: "%d issue(s) that are assigned to you are due in the next %d days:"
-mail_subject_reminder: "%d issue(s) due in the next days"
-text_user_wrote: '%s wrote:'
-label_duplicated_by: duplicated by
-setting_enabled_scm: Enabled SCM
-text_enumeration_category_reassign_to: 'Reassign them to this value:'
-text_enumeration_destroy_question: '%d objects are assigned to this value.'
-label_incoming_emails: Incoming emails
-label_generate_key: Generate a key
-setting_mail_handler_api_enabled: Enable WS for incoming emails
-setting_mail_handler_api_key: API key
-text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
-field_parent_title: Parent page
-label_issue_watchers: Watchers
-setting_commit_logs_encoding: Commit messages encoding
-button_quote: Quote
-setting_sequential_project_identifiers: Generate sequential project identifiers
-notice_unable_delete_version: Unable to delete version
-label_renamed: renamed
-label_copied: copied
+label_this_month: este mês
+label_last_n_days: últimos %d dias
+label_all_time: todo o tempo
+label_this_year: este ano
+label_date_range: intervalo de datas
+label_last_week: ultima semana
+label_yesterday: ontem
+label_last_month: último mês
+label_add_another_file: Adicionar outro ficheiro
+label_optional_description: Descrição opcional
+text_destroy_time_entries_question: %.02f horas reportadas nesta tarefa. Estas horas serão eliminada. Continuar?
+error_issue_not_found_in_project: 'Esta tarefa não foi encontrada ou não pertence a este projecto'
+text_assign_time_entries_to_project: Associar as horas reportadas ao projecto
+text_destroy_time_entries: Apagar as horas reportadas
+text_reassign_time_entries: 'Re-associar as horas reportadas a esta tarefa:'
+setting_activity_days_default: dias visualizados da actividade do projecto
+label_chronological_order: Ordem cronológica
+field_comments_sorting: Apresentar comentários
+label_reverse_chronological_order: Ordem cronológica inversa
+label_preferences: Preferências
+setting_display_subprojects_issues: Ver tarefas dos subprojectos no projecto principal por defeito
+label_overall_activity: Ver todas as actividades
+setting_default_projects_public: Novos projectos são classificados como publicos por defeito
+error_scm_annotate: "Esta entrada não existe ou não pode ser alterada."
+label_planning: Plano
+text_subprojects_destroy_warning: 'O(s) subprojecto(s): %s serão tambem apagados.'
+label_and_its_subprojects: %s e os subprojectos
+mail_body_reminder: "%d tarefa(s) que estão associadas a si e que tem de ser feitas nos próximos %d dias:"
+mail_subject_reminder: "%d tarefa(s) para fazer nos próximos dias"
+text_user_wrote: '%s escreveu:'
+label_duplicated_by: duplicado por
+setting_enabled_scm: Activar SCM
+text_enumeration_category_reassign_to: 're-associar a este valor:'
+text_enumeration_destroy_question: '%d objectos estão associados com este valor.'
+label_incoming_emails: Receber e-mails
+label_generate_key: Gerar uma chave
+setting_mail_handler_api_enabled: Activar Serviço Web para as receber mensagens de e-mail
+setting_mail_handler_api_key: Chave da API 
+text_email_delivery_not_configured: "Servidor de e-mail por configurar e notificações inactivas.\nConfigure o servidor de e-mail (SMTP) no ficheiro config/email.yml e re-inicie a aplicação."
+field_parent_title: Página origem
+label_issue_watchers: Observadores
+setting_commit_logs_encoding: Guardar codificação das mensagens de log
+button_quote: Comentário
+setting_sequential_project_identifiers: Gerar identificador sequencial
+notice_unable_delete_version: Impossível apagar esta versão
+label_renamed: renomeado
+label_copied: copiado
index 855662c58810d4f7f41e5490f7a18b6379a3d93e..94278256e29ef4238199a69f7d5cc64ff9526a82 100644 (file)
@@ -352,7 +352,7 @@ label_sort_higher: Muta sus
 label_sort_lower: Mota jos
 label_sort_lowest: Mota ultima
 label_roadmap: Harta activitatiilor
-label_roadmap_due_in: Rezolvat in 
+label_roadmap_due_in: Rezolvat in %s
 label_roadmap_overdue: %s intarziere
 label_roadmap_no_issues: Nu sunt tichete pentru aceasta reviziune
 label_search: Cauta
index 0f705c0d3769b6b2c2cd9a9c26ae484715ca65b5..ce5e43b7d84f542f9744e6c847bde32aa5c0c501 100644 (file)
@@ -477,7 +477,7 @@ label_result_plural: Результаты
 label_reverse_chronological_order: В обратном порядке
 label_revision_plural: Редакции
 label_revision: Редакция
-label_roadmap_due_in: Вовремя
+label_roadmap_due_in: Вовремя %s
 label_roadmap_no_issues: Нет задач для данной версии
 label_roadmap_overdue: %s опоздание
 label_roadmap: Оперативный план
index 574470e1b32b99dc2e444bac94ebe75570f657c1..720dfcdffa07c8f162ba40e625fe5e2773bb68ff 100644 (file)
@@ -362,7 +362,7 @@ label_sort_higher: premesti na gore
 label_sort_lower: Premesti na dole
 label_sort_lowest: Premesti na dno
 label_roadmap: Roadmap
-label_roadmap_due_in: Završava se za
+label_roadmap_due_in: Završava se za %s
 label_roadmap_overdue: %s kasni
 label_roadmap_no_issues: Nema kartica za ovu verziju
 label_search: Traži
index 1e7d292d62d28b80d8e35a29e72294c5710f7b53..393ade8187318c03ed1932d2a2804364d7636419 100644 (file)
@@ -352,7 +352,7 @@ label_sort_higher: Flytta up
 label_sort_lower: Flytta ner
 label_sort_lowest: Flytta till botten
 label_roadmap: Roadmap
-label_roadmap_due_in: Färdig om
+label_roadmap_due_in: Färdig om %s
 label_roadmap_overdue: %s late
 label_roadmap_no_issues: Inga brister för denna version
 label_search: Sök
index 0ad6b9b93eca75a31c2f4b6dff3bd250eb19168b..362e447569ba74fad92d62dafd53d683046a5a3d 100644 (file)
@@ -408,7 +408,7 @@ label_sort_higher: ย้ายขึ้น
 label_sort_lower: ย้ายลง
 label_sort_lowest: ย้ายไปล่างสุด
 label_roadmap: แผนงาน
-label_roadmap_due_in: ถึงกำหนดใน
+label_roadmap_due_in: ถึงกำหนดใน %s
 label_roadmap_overdue: %s ช้ากว่ากำหนด
 label_roadmap_no_issues: ไม่มีปัญหาสำหรับรุ่นนี้
 label_search: ค้นหา
index 7cb2a9e63e7e7dc4c2f7a9d491ced0f861ae2e46..ba9c0b41b63b82bb12c0224cfcb5fc6fdec27aa9 100644 (file)
@@ -405,7 +405,7 @@ label_sort_higher: Yukarı taşı
 label_sort_lower: Aşağı taşı
 label_sort_lowest: Dibe taşı
 label_roadmap: Yol Haritası
-label_roadmap_due_in: Due in
+label_roadmap_due_in: Due in %s
 label_roadmap_overdue: %s geç
 label_roadmap_no_issues: Bu versiyon için ileti yok
 label_search: Ara
index 055d27ed97f3d4eedbf47e32e96b92d175fcf4be..de5f65eb0c019b9aff9c9d8ef9ce9f75d154a09c 100644 (file)
@@ -368,7 +368,7 @@ label_sort_higher: Вгору
 label_sort_lower: Вниз
 label_sort_lowest: У кінець
 label_roadmap: Оперативний план
-label_roadmap_due_in: Строк
+label_roadmap_due_in: Строк %s
 label_roadmap_overdue: %s запізнення
 label_roadmap_no_issues: Немає питань для даної версії
 label_search: Пошук
index db4615a392ee70b5a81eea11baec82d848529334..6feb0a0e809ab06c18de2a4aeb756ac98ad767b4 100644 (file)
@@ -418,7 +418,7 @@ label_sort_higher: 往上移動
 label_sort_lower: 往下移動
 label_sort_lowest: 移動至結尾
 label_roadmap: 版本藍圖
-label_roadmap_due_in: 倒數天數: 
+label_roadmap_due_in: 倒數天數 %s
 label_roadmap_overdue: %s 逾期
 label_roadmap_no_issues: 此版本尚未包含任何項目
 label_search: 搜尋
index 5c3cf06a11f5252f1c41d3ace5cfcae7b26dde7b..d2e571b4d3849f5e7229d9cf39250912448004f0 100644 (file)
@@ -418,7 +418,7 @@ label_sort_higher: 上移
 label_sort_lower: 下移
 label_sort_lowest: 置底
 label_roadmap: 路线图
-label_roadmap_due_in: 截止日期到 
+label_roadmap_due_in: 截止日期到  %s
 label_roadmap_overdue: %s 延期
 label_roadmap_no_issues: 该版本没有问题
 label_search: 搜索
index aa8994454612d02dd5a19c770b78b37c4680e735..36a36cba558bd52d0e4e822853cdbdf92ca963fe 100644 (file)
@@ -54,8 +54,8 @@ module Redmine
           @file_name = $2
           return false
         elsif line =~ /^@@ (\+|\-)(\d+)(,\d+)? (\+|\-)(\d+)(,\d+)? @@/
-          @line_num_l = $5.to_i
-          @line_num_r = $2.to_i
+          @line_num_l = $2.to_i
+          @line_num_r = $5.to_i
           @parsing = true
         end
       else
@@ -63,8 +63,8 @@ module Redmine
           @parsing = false
           return false
         elsif line =~ /^@@ (\+|\-)(\d+)(,\d+)? (\+|\-)(\d+)(,\d+)? @@/
-          @line_num_l = $5.to_i
-          @line_num_r = $2.to_i
+          @line_num_l = $2.to_i
+          @line_num_r = $5.to_i
         else
           @nb_line += 1 if parse_line(line, @type)          
         end
@@ -116,18 +116,18 @@ module Redmine
       if line[0, 1] == "+"
         diff = sbs? type, 'add'
         @before = 'add'
-        diff.line_left = escapeHTML line[1..-1]
-        diff.nb_line_left = @line_num_l
-        diff.type_diff_left = 'diff_in'
-        @line_num_l += 1
+        diff.line_right = escapeHTML line[1..-1]
+        diff.nb_line_right = @line_num_r
+        diff.type_diff_right = 'diff_in'
+        @line_num_r += 1
         true
       elsif line[0, 1] == "-"
         diff = sbs? type, 'remove'
         @before = 'remove'
-        diff.line_right = escapeHTML line[1..-1]
-        diff.nb_line_right = @line_num_r
-        diff.type_diff_right = 'diff_out'
-        @line_num_r += 1
+        diff.line_left = escapeHTML line[1..-1]
+        diff.nb_line_left = @line_num_l
+        diff.type_diff_left = 'diff_out'
+        @line_num_l += 1
         true
       elsif line[0, 1] =~ /\s/
         @before = 'same'
index 26218d177bdfda6038f424e5556e8e96ec793d98..a6e3799916cbbf86c034e6d8303fc3052bd68814 100644 (file)
@@ -46,12 +46,12 @@ class AccountControllerTest < Test::Unit::TestCase
   
   def test_login_should_redirect_to_back_url_param
     # request.uri is "test.host" in test environment
-    post :login, :username => 'jsmith', :password => 'jsmith', :back_url => 'http://test.host/issues/show/1'
+    post :login, :username => 'jsmith', :password => 'jsmith', :back_url => 'http%3A%2F%2Ftest.host%2Fissues%2Fshow%2F1'
     assert_redirected_to '/issues/show/1'
   end
   
   def test_login_should_not_redirect_to_another_host
-    post :login, :username => 'jsmith', :password => 'jsmith', :back_url => 'http://test.foo/fake'
+    post :login, :username => 'jsmith', :password => 'jsmith', :back_url => 'http%3A%2F%2Ftest.foo%2Ffake'
     assert_redirected_to '/my/page'
   end
 
diff --git a/test/unit/auth_source_ldap_test.rb b/test/unit/auth_source_ldap_test.rb
new file mode 100644 (file)
index 0000000..30abd5d
--- /dev/null
@@ -0,0 +1,36 @@
+# Redmine - project management software
+# Copyright (C) 2006-2008  Jean-Philippe Lang
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+
+require File.dirname(__FILE__) + '/../test_helper'
+
+class AuthSourceLdapTest < Test::Unit::TestCase
+
+  def setup
+  end
+  
+  def test_create
+    a = AuthSourceLdap.new(:name => 'My LDAP', :host => 'ldap.example.net', :port => 389, :base_dn => 'dc=example,dc=net', :attr_login => 'sAMAccountName')
+    assert a.save
+  end
+  
+  def test_should_strip_ldap_attributes
+    a = AuthSourceLdap.new(:name => 'My LDAP', :host => 'ldap.example.net', :port => 389, :base_dn => 'dc=example,dc=net', :attr_login => 'sAMAccountName',
+                           :attr_firstname => 'givenName ')
+    assert a.save
+    assert_equal 'givenName', a.reload.attr_firstname
+  end
+end
index 7ef47f5926025256283a9622da0bd0f61446778d..35e26ebd4ed1ca2b38f5d12153f1acec3efbe262 100644 (file)
@@ -367,4 +367,18 @@ EXPECTED
     assert_equal Time.now.strftime('%d %m %Y %H %M'), format_time(now)
     assert_equal Time.now.strftime('%H %M'), format_time(now, false)
   end
+  
+  def test_due_date_distance_in_words
+    to_test = { Date.today => 'Due in 0 days',
+                Date.today + 1 => 'Due in 1 day',
+                Date.today + 100 => 'Due in 100 days',
+                Date.today + 20000 => 'Due in 20000 days',
+                Date.today - 1 => '1 day late',
+                Date.today - 100 => '100 days late',
+                Date.today - 20000 => '20000 days late',
+               }
+    to_test.each do |date, expected|
+      assert_equal expected, due_date_distance_in_words(date)
+    end
+  end
 end
diff --git a/test/unit/version_test.rb b/test/unit/version_test.rb
new file mode 100644 (file)
index 0000000..29bdc03
--- /dev/null
@@ -0,0 +1,36 @@
+# Redmine - project management software
+# Copyright (C) 2006-2008  Jean-Philippe Lang
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+
+require File.dirname(__FILE__) + '/../test_helper'
+
+class VersionTest < Test::Unit::TestCase
+  fixtures :projects, :issues, :issue_statuses, :versions
+
+  def setup
+  end
+  
+  def test_create
+    v = Version.new(:project => Project.find(1), :name => '1.1', :effective_date => '2011-03-25')
+    assert v.save
+  end
+  
+  def test_invalid_effective_date_validation
+    v = Version.new(:project => Project.find(1), :name => '1.1', :effective_date => '99999-01-01')
+    assert !v.save
+    assert_equal 'activerecord_error_not_a_date', v.errors.on(:effective_date)
+  end
+end