--- app/views/timelog/_form.html.erb Thu Jan 15 10:12:56 1970 +++ app/views/timelog/_form.html.erb Thu Jan 15 10:12:56 1970 @@ -1,29 +1,21 @@ -<%= error_messages_for 'time_entry' %> -<%= back_url_hidden_field_tag %> - -
- <% if @time_entry.new_record? %> - <% if params[:project_id] %> - <%= f.hidden_field :project_id %> - <% else %> -

<%= f.select :project_id, project_tree_options_for_select(Project.allowed_to(:log_time).all, :selected => @time_entry.project), :required => true %>

- <% end %> - <% end %> -

<%= f.text_field :issue_id, :size => 6 %> <%= h("#{@time_entry.issue.tracker.name} ##{@time_entry.issue.id}: #{@time_entry.issue.subject}") if @time_entry.issue %>

-

<%= f.text_field :spent_on, :size => 10, :required => true %><%= calendar_for('time_entry_spent_on') %>

-

<%= f.text_field :from, :size => 5, :onchange => "updateTime();" %>

-

<%= f.text_field :to, :size => 5, :onchange => "updateTime();" %>

-

<%= f.text_field :pause, :size => 3, :onchange => "updateTime();" %>

-

<%= f.text_field :hours, :size => 6, :required => true %>

-

<%= f.text_field :comments, :size => 100 %>

-

<%= f.select :activity_id, activity_collection_for_select_options(@time_entry), :required => true %>

- <% @time_entry.custom_field_values.each do |value| %> -

<%= custom_field_tag_with_label :time_entry, value %>

- <% end %> - <%= call_hook(:view_timelog_edit_form_bottom, { :time_entry => @time_entry, :form => f }) %> - -
+<%= error_messages_for 'time_entry' %> +<%= back_url_hidden_field_tag %> + +
+ <% if @time_entry.new_record? %> + <% if params[:project_id] %> + <%= f.hidden_field :project_id %> + <% else %> +

<%= f.select :project_id, project_tree_options_for_select(Project.allowed_to(:log_time).all, :selected => @time_entry.project), :required => true %>

+ <% end %> + <% end %> +

<%= f.text_field :issue_id, :size => 6 %> <%= h("#{@time_entry.issue.tracker.name} ##{@time_entry.issue.id}: #{@time_entry.issue.subject}") if @time_entry.issue %>

+

<%= f.text_field :spent_on, :size => 10, :required => true %><%= calendar_for('time_entry_spent_on') %>

+

<%= f.text_field :hours, :size => 6, :required => true %>

+

<%= f.text_field :comments, :size => 100 %>

+

<%= f.select :activity_id, activity_collection_for_select_options(@time_entry), :required => true %>

+ <% @time_entry.custom_field_values.each do |value| %> +

<%= custom_field_tag_with_label :time_entry, value %>

+ <% end %> + <%= call_hook(:view_timelog_edit_form_bottom, { :time_entry => @time_entry, :form => f }) %> +
--- app/views/timelog/_list.html.erb Thu Jan 15 10:12:56 1970 +++ app/views/timelog/_list.html.erb Thu Jan 15 10:12:56 1970 @@ -1,61 +1,55 @@ -<%= form_tag({}) do -%> -<%= hidden_field_tag 'back_url', url_for(params) %> -
- - - - -<%= sort_header_tag('spent_on', :caption => l(:label_date), :default_order => 'desc') %> - - - -<%= sort_header_tag('user', :caption => l(:label_member)) %> -<%= sort_header_tag('activity', :caption => l(:label_activity)) %> -<%= sort_header_tag('project', :caption => l(:label_project)) %> -<%= sort_header_tag('issue', :caption => l(:label_issue), :default_order => 'desc') %> - -<%= sort_header_tag('hours', :caption => l(:field_hours)) %> - - - - -<% entries.each do |entry| -%> - hascontextmenu"> - - - - - - - - - - - - - -<% end -%> - -
- <%= link_to image_tag('toggle_check.png'), - {}, - :onclick => 'toggleIssuesSelection(Element.up(this, "form")); return false;', - :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}" %> -<%= l(:field_from) %><%= l(:field_to) %><%= l(:field_pause) %><%= l(:field_comments) %>
<%= check_box_tag("ids[]", entry.id, false, :id => nil) %><%= format_date(entry.spent_on) %><%= entry.from %><%= entry.to %><%= entry.pause %><%= link_to_user(entry.user) %><%=h entry.activity %><%= link_to_project(entry.project) %> -<% if entry.issue -%> -<%= entry.issue.visible? ? link_to_issue(entry.issue, :truncate => 50) : "##{entry.issue.id}" -%> -<% end -%> -<%=h entry.comments %><%= html_hours("%.2f" % entry.hours) %> -<% if entry.editable_by?(User.current) -%> - <%= link_to image_tag('edit.png'), {:controller => 'timelog', :action => 'edit', :id => entry, :project_id => nil}, - :title => l(:button_edit) %> - <%= link_to image_tag('delete.png'), {:controller => 'timelog', :action => 'destroy', :id => entry, :project_id => nil}, - :confirm => l(:text_are_you_sure), - :method => :delete, - :title => l(:button_delete) %> -<% end -%> -
-
-<% end -%> - -<%= context_menu time_entries_context_menu_path %> +<%= form_tag({}) do -%> +<%= hidden_field_tag 'back_url', url_for(params) %> +
+ + + + +<%= sort_header_tag('spent_on', :caption => l(:label_date), :default_order => 'desc') %> +<%= sort_header_tag('user', :caption => l(:label_member)) %> +<%= sort_header_tag('activity', :caption => l(:label_activity)) %> +<%= sort_header_tag('project', :caption => l(:label_project)) %> +<%= sort_header_tag('issue', :caption => l(:label_issue), :default_order => 'desc') %> + +<%= sort_header_tag('hours', :caption => l(:field_hours)) %> + + + + +<% entries.each do |entry| -%> + hascontextmenu"> + + + + + + + + + + +<% end -%> + +
+ <%= link_to image_tag('toggle_check.png'), + {}, + :onclick => 'toggleIssuesSelection(Element.up(this, "form")); return false;', + :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}" %> +<%= l(:field_comments) %>
<%= check_box_tag("ids[]", entry.id, false, :id => nil) %><%= format_date(entry.spent_on) %><%= link_to_user(entry.user) %><%=h entry.activity %><%= link_to_project(entry.project) %> +<% if entry.issue -%> +<%= entry.issue.visible? ? link_to_issue(entry.issue, :truncate => 50) : "##{entry.issue.id}" -%> +<% end -%> +<%=h entry.comments %><%= html_hours("%.2f" % entry.hours) %> +<% if entry.editable_by?(User.current) -%> + <%= link_to image_tag('edit.png'), {:controller => 'timelog', :action => 'edit', :id => entry, :project_id => nil}, + :title => l(:button_edit) %> + <%= link_to image_tag('delete.png'), {:controller => 'timelog', :action => 'destroy', :id => entry, :project_id => nil}, + :confirm => l(:text_are_you_sure), + :method => :delete, + :title => l(:button_delete) %> +<% end -%> +
+
+<% end -%> + +<%= context_menu time_entries_context_menu_path %> --- config/locales/de.yml Thu Jan 15 10:12:56 1970 +++ config/locales/de.yml Thu Jan 15 10:12:56 1970 @@ -1,1057 +1,1051 @@ -# German translations for Ruby on Rails -# by Clemens Kofler (clemens@railway.at) -# additions for Redmine 1.2 by Jens Martsch (jmartsch@gmail.com) - -de: - direction: ltr - date: - formats: - # Use the strftime parameters for formats. - # When no format has been given, it uses default. - # You can provide other formats here if you like! - default: "%d.%m.%Y" - short: "%e. %b" - long: "%e. %B %Y" - - day_names: [Sonntag, Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag] - abbr_day_names: [So, Mo, Di, Mi, Do, Fr, Sa] - - # Don't forget the nil at the beginning; there's no such thing as a 0th month - month_names: [~, Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember] - abbr_month_names: [~, Jan, Feb, Mär, Apr, Mai, Jun, Jul, Aug, Sep, Okt, Nov, Dez] - # Used in date_select and datime_select. - order: - - :day - - :month - - :year - - time: - formats: - default: "%d.%m.%Y %H:%M" - time: "%H:%M" - short: "%e. %b %H:%M" - long: "%A, %e. %B %Y, %H:%M Uhr" - am: "vormittags" - pm: "nachmittags" - - datetime: - distance_in_words: - half_a_minute: 'eine halbe Minute' - less_than_x_seconds: - one: 'weniger als 1 Sekunde' - other: 'weniger als %{count} Sekunden' - x_seconds: - one: '1 Sekunde' - other: '%{count} Sekunden' - less_than_x_minutes: - one: 'weniger als 1 Minute' - other: 'weniger als %{count} Minuten' - x_minutes: - one: '1 Minute' - other: '%{count} Minuten' - about_x_hours: - one: 'etwa 1 Stunde' - other: 'etwa %{count} Stunden' - x_days: - one: '1 Tag' - other: '%{count} Tagen' - about_x_months: - one: 'etwa 1 Monat' - other: 'etwa %{count} Monaten' - x_months: - one: '1 Monat' - other: '%{count} Monaten' - about_x_years: - one: 'etwa 1 Jahr' - other: 'etwa %{count} Jahren' - over_x_years: - one: 'mehr als 1 Jahr' - other: 'mehr als %{count} Jahren' - almost_x_years: - one: "fast 1 Jahr" - other: "fast %{count} Jahren" - - number: - # Default format for numbers - format: - separator: ',' - delimiter: '.' - precision: 2 - currency: - format: - unit: '€' - format: '%n %u' - separator: - delimiter: - precision: - percentage: - format: - delimiter: "" - precision: - format: - delimiter: "" - human: - format: - delimiter: "" - precision: 3 - storage_units: - format: "%n %u" - units: - byte: - one: "Byte" - other: "Bytes" - kb: "KB" - mb: "MB" - gb: "GB" - tb: "TB" - -# Used in array.to_sentence. - support: - array: - sentence_connector: "und" - skip_last_comma: true - - activerecord: - errors: - template: - header: - one: "Dieses %{model}-Objekt konnte nicht gespeichert werden: %{count} Fehler." - other: "Dieses %{model}-Objekt konnte nicht gespeichert werden: %{count} Fehler." - body: "Bitte überprüfen Sie die folgenden Felder:" - - messages: - inclusion: "ist kein gültiger Wert" - exclusion: "ist nicht verfügbar" - invalid: "ist nicht gültig" - confirmation: "stimmt nicht mit der Bestätigung überein" - accepted: "muss akzeptiert werden" - empty: "muss ausgefüllt werden" - blank: "muss ausgefüllt werden" - too_long: "ist zu lang (nicht mehr als %{count} Zeichen)" - too_short: "ist zu kurz (nicht weniger als %{count} Zeichen)" - wrong_length: "hat die falsche Länge (muss genau %{count} Zeichen haben)" - taken: "ist bereits vergeben" - not_a_number: "ist keine Zahl" - not_a_date: "is kein gültiges Datum" - greater_than: "muss größer als %{count} sein" - greater_than_or_equal_to: "muss größer oder gleich %{count} sein" - equal_to: "muss genau %{count} sein" - less_than: "muss kleiner als %{count} sein" - less_than_or_equal_to: "muss kleiner oder gleich %{count} sein" - odd: "muss ungerade sein" - even: "muss gerade sein" - greater_than_start_date: "muss größer als Anfangsdatum sein" - not_same_project: "gehört nicht zum selben Projekt" - circular_dependency: "Diese Beziehung würde eine zyklische Abhängigkeit erzeugen" - cant_link_an_issue_with_a_descendant: "Ein Ticket kann nicht mit einer ihrer Unteraufgaben verlinkt werden" - - actionview_instancetag_blank_option: Bitte auswählen - - general_text_No: 'Nein' - general_text_Yes: 'Ja' - general_text_no: 'nein' - general_text_yes: 'ja' - general_lang_name: 'Deutsch' - general_csv_separator: ';' - general_csv_decimal_separator: ',' - general_csv_encoding: ISO-8859-1 - general_pdf_encoding: UTF-8 - general_first_day_of_week: '1' - - notice_account_updated: Konto wurde erfolgreich aktualisiert. - notice_account_invalid_creditentials: Benutzer oder Kennwort ist ungültig. - notice_account_password_updated: Kennwort wurde erfolgreich aktualisiert. - notice_account_wrong_password: Falsches Kennwort. - notice_account_register_done: Konto wurde erfolgreich angelegt. - notice_account_unknown_email: Unbekannter Benutzer. - notice_can_t_change_password: Dieses Konto verwendet eine externe Authentifizierungs-Quelle. Unmöglich, das Kennwort zu ändern. - notice_account_lost_email_sent: Eine E-Mail mit Anweisungen, ein neues Kennwort zu wählen, wurde Ihnen geschickt. - notice_account_activated: Ihr Konto ist aktiviert. Sie können sich jetzt anmelden. - notice_successful_create: Erfolgreich angelegt - notice_successful_update: Erfolgreich aktualisiert. - notice_successful_delete: Erfolgreich gelöscht. - notice_successful_connection: Verbindung erfolgreich. - notice_file_not_found: Anhang existiert nicht oder ist gelöscht worden. - notice_locking_conflict: Datum wurde von einem anderen Benutzer geändert. - notice_not_authorized: Sie sind nicht berechtigt, auf diese Seite zuzugreifen. - notice_email_sent: "Eine E-Mail wurde an %{value} gesendet." - notice_email_error: "Beim Senden einer E-Mail ist ein Fehler aufgetreten (%{value})." - notice_feeds_access_key_reseted: Ihr Atom-Zugriffsschlüssel wurde zurückgesetzt. - notice_api_access_key_reseted: Ihr API-Zugriffsschlüssel wurde zurückgesetzt. - notice_failed_to_save_issues: "%{count} von %{total} ausgewählten Tickets konnte(n) nicht gespeichert werden: %{ids}." - notice_failed_to_save_members: "Benutzer konnte nicht gespeichert werden: %{errors}." - 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. - notice_unable_delete_time_entry: Der Zeiterfassungseintrag konnte nicht gelöscht werden. - notice_issue_done_ratios_updated: Der Ticket-Fortschritt wurde aktualisiert. - - error_can_t_load_default_data: "Die Standard-Konfiguration konnte nicht geladen werden: %{value}" - error_scm_not_found: Eintrag und/oder Revision existiert nicht im Projektarchiv. - error_scm_command_failed: "Beim Zugriff auf das Projektarchiv ist ein Fehler aufgetreten: %{value}" - error_scm_annotate: "Der Eintrag existiert nicht oder kann nicht annotiert werden." - error_issue_not_found_in_project: 'Das Ticket wurde nicht gefunden oder gehört nicht zu diesem Projekt.' - error_no_tracker_in_project: Diesem Projekt ist kein Tracker zugeordnet. Bitte überprüfen Sie die Projekteinstellungen. - error_no_default_issue_status: Es ist kein Status als Standard definiert. Bitte überprüfen Sie Ihre Konfiguration (unter "Administration -> Ticket-Status"). - error_can_not_delete_custom_field: Kann das benutzerdefinierte Feld nicht löschen. - error_can_not_delete_tracker: Dieser Tracker enthält Tickets und kann nicht gelöscht werden. - error_can_not_remove_role: Diese Rolle wird verwendet und kann nicht gelöscht werden. - error_can_not_reopen_issue_on_closed_version: Das Ticket ist einer abgeschlossenen Version zugeordnet und kann daher nicht wieder geöffnet werden. - error_can_not_archive_project: Dieses Projekt kann nicht archiviert werden. - error_issue_done_ratios_not_updated: Der Ticket-Fortschritt wurde nicht aktualisiert. - error_workflow_copy_source: Bitte wählen Sie einen Quell-Tracker und eine Quell-Rolle. - error_workflow_copy_target: Bitte wählen Sie die Ziel-Tracker und -Rollen. - error_unable_delete_issue_status: "Der Ticket-Status konnte nicht gelöscht werden." - error_unable_to_connect: Fehler beim Verbinden (%{value}) - warning_attachments_not_saved: "%{count} Datei(en) konnten nicht gespeichert werden." - - mail_subject_lost_password: "Ihr %{value} Kennwort" - mail_body_lost_password: 'Benutzen Sie den folgenden Link, um Ihr Kennwort zu ändern:' - mail_subject_register: "%{value} Kontoaktivierung" - mail_body_register: 'Um Ihr Konto zu aktivieren, benutzen Sie folgenden Link:' - mail_body_account_information_external: "Sie können sich mit Ihrem Konto %{value} anmelden." - mail_body_account_information: Ihre Konto-Informationen - mail_subject_account_activation_request: "Antrag auf %{value} Kontoaktivierung" - mail_body_account_activation_request: "Ein neuer Benutzer (%{value}) hat sich registriert. Sein Konto wartet auf Ihre Genehmigung:" - mail_subject_reminder: "%{count} Tickets müssen in den nächsten %{days} Tagen abgegeben werden" - mail_body_reminder: "%{count} Tickets, die Ihnen zugewiesen sind, müssen in den nächsten %{days} Tagen abgegeben werden:" - mail_subject_wiki_content_added: "Wiki-Seite '%{id}' hinzugefügt" - mail_body_wiki_content_added: "Die Wiki-Seite '%{id}' wurde von %{author} hinzugefügt." - mail_subject_wiki_content_updated: "Wiki-Seite '%{id}' erfolgreich aktualisiert" - mail_body_wiki_content_updated: "Die Wiki-Seite '%{id}' wurde von %{author} aktualisiert." - - gui_validation_error: 1 Fehler - gui_validation_error_plural: "%{count} Fehler" - - field_name: Name - field_description: Beschreibung - field_summary: Zusammenfassung - field_is_required: Erforderlich - field_firstname: Vorname - field_lastname: Nachname - field_mail: E-Mail - field_filename: Datei - field_filesize: Größe - field_downloads: Downloads - field_author: Autor - field_created_on: Angelegt - field_updated_on: Aktualisiert - field_field_format: Format - field_is_for_all: Für alle Projekte - field_possible_values: Mögliche Werte - field_regexp: Regulärer Ausdruck - field_min_length: Minimale Länge - field_max_length: Maximale Länge - field_value: Wert - field_category: Kategorie - field_title: Titel - field_project: Projekt - field_issue: Ticket - field_status: Status - field_notes: Kommentare - field_is_closed: Ticket geschlossen - field_is_default: Standardeinstellung - field_tracker: Tracker - field_subject: Thema - field_due_date: Abgabedatum - field_assigned_to: Zugewiesen an - field_priority: Priorität - field_fixed_version: Zielversion - field_user: Benutzer - field_principal: Auftraggeber - field_role: Rolle - field_homepage: Projekt-Homepage - field_is_public: Öffentlich - field_parent: Unterprojekt von - field_is_in_roadmap: In der Roadmap anzeigen - field_login: Mitgliedsname - field_mail_notification: Mailbenachrichtigung - field_admin: Administrator - field_last_login_on: Letzte Anmeldung - field_language: Sprache - field_effective_date: Datum - field_password: Kennwort - field_new_password: Neues Kennwort - field_password_confirmation: Bestätigung - field_version: Version - field_type: Typ - field_host: Host - field_port: Port - field_account: Konto - field_base_dn: Base DN - field_attr_login: Mitgliedsname-Attribut - field_attr_firstname: Vorname-Attribut - field_attr_lastname: Name-Attribut - field_attr_mail: E-Mail-Attribut - field_onthefly: On-the-fly-Benutzererstellung - field_start_date: Beginn - field_done_ratio: "% erledigt" - field_auth_source: Authentifizierungs-Modus - field_hide_mail: E-Mail-Adresse nicht anzeigen - field_comments: Kommentar - field_url: URL - field_start_page: Hauptseite - field_subproject: Unterprojekt von - field_hours: Stunden - field_activity: Aktivität - field_spent_on: Datum - field_from: Start - field_to: Ende - field_pause: Pause (min) - field_identifier: Kennung - field_is_filter: Als Filter benutzen - field_issue_to: Zugehöriges Ticket - field_delay: Pufferzeit - field_assignable: Tickets können dieser Rolle zugewiesen werden - field_redirect_existing_links: Existierende Links umleiten - field_estimated_hours: Geschätzter Aufwand - field_column_names: Spalten - field_time_entries: Logzeit - field_time_zone: Zeitzone - field_searchable: Durchsuchbar - field_default_value: Standardwert - field_comments_sorting: Kommentare anzeigen - field_parent_title: Übergeordnete Seite - field_editable: Bearbeitbar - field_watcher: Beobachter - field_identity_url: OpenID-URL - field_content: Inhalt - field_group_by: Gruppiere Ergebnisse nach - field_sharing: Gemeinsame Verwendung - field_parent_issue: Übergeordnete Aufgabe - - setting_app_title: Applikations-Titel - setting_app_subtitle: Applikations-Untertitel - setting_welcome_text: Willkommenstext - setting_default_language: Default-Sprache - setting_login_required: Authentifizierung erforderlich - setting_self_registration: Anmeldung ermöglicht - setting_attachment_max_size: Max. Dateigröße - setting_issues_export_limit: Max. Anzahl Tickets bei CSV/PDF-Export - setting_mail_from: E-Mail-Absender - setting_bcc_recipients: E-Mails als Blindkopie (BCC) senden - setting_plain_text_mail: Nur reinen Text (kein HTML) senden - setting_host_name: Hostname - setting_text_formatting: Textformatierung - setting_wiki_compression: Wiki-Historie komprimieren - setting_feeds_limit: Max. Anzahl Einträge pro Atom-Feed - setting_default_projects_public: Neue Projekte sind standardmäßig öffentlich - setting_autofetch_changesets: Changesets automatisch abrufen - setting_sys_api_enabled: Webservice zur Verwaltung der Projektarchive benutzen - setting_commit_ref_keywords: Schlüsselwörter (Beziehungen) - setting_commit_fix_keywords: Schlüsselwörter (Status) - setting_autologin: Automatische Anmeldung - setting_date_format: Datumsformat - 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_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_body_delimiters: "Schneide E-Mails nach einer dieser Zeilen ab" - 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 - setting_gravatar_enabled: Gravatar-Benutzerbilder benutzen - setting_gravatar_default: Standard-Gravatar-Bild - setting_diff_max_lines_displayed: Maximale Anzahl anzuzeigender Diff-Zeilen - setting_file_max_size_displayed: Maximale Größe inline angezeigter Textdateien - setting_repository_log_display_limit: Maximale Anzahl anzuzeigender Revisionen in der Historie einer Datei - setting_openid: Erlaube OpenID-Anmeldung und -Registrierung - setting_password_min_length: Mindestlänge des Kennworts - setting_new_project_user_role_id: Rolle, die einem Nicht-Administrator zugeordnet wird, der ein Projekt erstellt - setting_default_projects_modules: Standardmäßig aktivierte Module für neue Projekte - setting_issue_done_ratio: Berechne den Ticket-Fortschritt mittels - setting_issue_done_ratio_issue_field: Ticket-Feld %-erledigt - setting_issue_done_ratio_issue_status: Ticket-Status - setting_start_of_week: Wochenanfang - setting_rest_api_enabled: REST-Schnittstelle aktivieren - setting_cache_formatted_text: Formatierten Text im Cache speichern - - permission_add_project: Projekt erstellen - permission_add_subprojects: Unterprojekte erstellen - permission_edit_project: Projekt bearbeiten - permission_select_project_modules: Projektmodule auswählen - permission_manage_members: Mitglieder verwalten - permission_manage_project_activities: Aktivitäten (Zeiterfassung) verwalten - permission_manage_versions: Versionen verwalten - permission_manage_categories: Ticket-Kategorien verwalten - permission_view_issues: Tickets anzeigen - permission_add_issues: Tickets hinzufügen - permission_edit_issues: Tickets bearbeiten - permission_manage_issue_relations: Ticket-Beziehungen verwalten - permission_add_issue_notes: Kommentare hinzufügen - permission_edit_issue_notes: Kommentare bearbeiten - permission_edit_own_issue_notes: Eigene Kommentare bearbeiten - permission_move_issues: Tickets verschieben - permission_delete_issues: Tickets löschen - permission_manage_public_queries: Öffentliche Filter verwalten - permission_save_queries: Filter speichern - permission_view_gantt: Gantt-Diagramm ansehen - permission_view_calendar: Kalender ansehen - permission_view_issue_watchers: Liste der Beobachter ansehen - permission_add_issue_watchers: Beobachter hinzufügen - permission_delete_issue_watchers: Beobachter löschen - permission_log_time: Aufwände buchen - permission_view_time_entries: Gebuchte Aufwände ansehen - permission_edit_time_entries: Gebuchte Aufwände bearbeiten - permission_edit_own_time_entries: Selbst gebuchte Aufwände bearbeiten - permission_manage_news: News verwalten - permission_comment_news: News kommentieren - permission_manage_documents: Dokumente verwalten - permission_view_documents: Dokumente ansehen - permission_manage_files: Dateien verwalten - permission_view_files: Dateien ansehen - permission_manage_wiki: Wiki verwalten - permission_rename_wiki_pages: Wiki-Seiten umbenennen - permission_delete_wiki_pages: Wiki-Seiten löschen - permission_view_wiki_pages: Wiki ansehen - permission_view_wiki_edits: Wiki-Versionsgeschichte ansehen - permission_edit_wiki_pages: Wiki-Seiten bearbeiten - permission_delete_wiki_pages_attachments: Anhänge löschen - permission_protect_wiki_pages: Wiki-Seiten schützen - permission_manage_repository: Projektarchiv verwalten - permission_browse_repository: Projektarchiv ansehen - permission_view_changesets: Changesets ansehen - permission_commit_access: Commit-Zugriff (über WebDAV) - permission_manage_boards: Foren verwalten - permission_view_messages: Forenbeiträge ansehen - permission_add_messages: Forenbeiträge hinzufügen - permission_edit_messages: Forenbeiträge bearbeiten - permission_edit_own_messages: Eigene Forenbeiträge bearbeiten - permission_delete_messages: Forenbeiträge löschen - permission_delete_own_messages: Eigene Forenbeiträge löschen - permission_export_wiki_pages: Wiki-Seiten exportieren - permission_manage_subtasks: Unteraufgaben verwalten - - project_module_issue_tracking: Ticket-Verfolgung - project_module_time_tracking: Zeiterfassung - project_module_news: News - project_module_documents: Dokumente - project_module_files: Dateien - project_module_wiki: Wiki - project_module_repository: Projektarchiv - project_module_boards: Foren - project_module_calendar: Kalender - project_module_gantt: Gantt - - label_user: Benutzer - label_user_plural: Benutzer - label_user_new: Neuer Benutzer - label_user_anonymous: Anonym - label_project: Projekt - label_project_new: Neues Projekt - label_project_plural: Projekte - label_x_projects: - zero: keine Projekte - one: 1 Projekt - other: "%{count} Projekte" - label_project_all: Alle Projekte - label_project_latest: Neueste Projekte - label_issue: Ticket - label_issue_new: Neues Ticket - label_issue_plural: Tickets - label_issue_view_all: Alle Tickets anzeigen - label_issues_by: "Tickets von %{value}" - label_issue_added: Ticket hinzugefügt - label_issue_updated: Ticket aktualisiert - label_document: Dokument - label_document_new: Neues Dokument - label_document_plural: Dokumente - label_document_added: Dokument hinzugefügt - label_role: Rolle - label_role_plural: Rollen - label_role_new: Neue Rolle - label_role_and_permissions: Rollen und Rechte - label_member: Mitglied - label_member_new: Neues Mitglied - label_member_plural: Mitglieder - label_tracker: Tracker - label_tracker_plural: Tracker - label_tracker_new: Neuer Tracker - label_workflow: Workflow - label_issue_status: Ticket-Status - label_issue_status_plural: Ticket-Status - label_issue_status_new: Neuer Status - label_issue_category: Ticket-Kategorie - label_issue_category_plural: Ticket-Kategorien - label_issue_category_new: Neue Kategorie - label_custom_field: Benutzerdefiniertes Feld - label_custom_field_plural: Benutzerdefinierte Felder - label_custom_field_new: Neues Feld - label_enumerations: Aufzählungen - label_enumeration_new: Neuer Wert - label_information: Information - label_information_plural: Informationen - label_please_login: Anmelden - label_register: Registrieren - label_login_with_open_id_option: oder mit OpenID anmelden - label_password_lost: Kennwort vergessen - label_home: Hauptseite - label_my_page: Meine Seite - label_my_account: Mein Konto - label_my_projects: Meine Projekte - label_my_page_block: Bereich "Meine Seite" - label_administration: Administration - label_login: Anmelden - label_logout: Abmelden - label_help: Hilfe - label_reported_issues: Gemeldete Tickets - label_assigned_to_me_issues: Mir zugewiesen - label_last_login: Letzte Anmeldung - label_registered_on: Angemeldet am - label_activity: Aktivität - label_overall_activity: Aktivitäten aller Projekte anzeigen - label_user_activity: "Aktivität von %{value}" - label_new: Neu - label_logged_as: Angemeldet als - label_environment: Umgebung - label_authentication: Authentifizierung - label_auth_source: Authentifizierungs-Modus - label_auth_source_new: Neuer Authentifizierungs-Modus - label_auth_source_plural: Authentifizierungs-Arten - label_subproject_plural: Unterprojekte - label_subproject_new: Neues Unterprojekt - label_and_its_subprojects: "%{value} und dessen Unterprojekte" - label_min_max_length: Länge (Min. - Max.) - label_list: Liste - label_date: Datum - label_integer: Zahl - label_float: Fließkommazahl - label_boolean: Boolean - label_string: Text - label_text: Langer Text - label_attribute: Attribut - label_attribute_plural: Attribute - label_download: "%{count} Download" - label_download_plural: "%{count} Downloads" - label_no_data: Nichts anzuzeigen - label_change_status: Statuswechsel - label_history: Historie - label_attachment: Datei - label_attachment_new: Neue Datei - label_attachment_delete: Anhang löschen - label_attachment_plural: Dateien - label_file_added: Datei hinzugefügt - label_report: Bericht - label_report_plural: Berichte - label_news: News - label_news_new: News hinzufügen - label_news_plural: News - label_news_latest: Letzte News - label_news_view_all: Alle News anzeigen - label_news_added: News hinzugefügt - label_settings: Konfiguration - label_overview: Übersicht - label_version: Version - label_version_new: Neue Version - label_version_plural: Versionen - label_close_versions: Vollständige Versionen schließen - label_confirmation: Bestätigung - label_export_to: "Auch abrufbar als:" - label_read: Lesen... - label_public_projects: Öffentliche Projekte - label_open_issues: offen - label_open_issues_plural: offen - label_closed_issues: geschlossen - label_closed_issues_plural: geschlossen - label_x_open_issues_abbr_on_total: - zero: 0 offen / %{total} - one: 1 offen / %{total} - other: "%{count} offen / %{total}" - label_x_open_issues_abbr: - zero: 0 offen - one: 1 offen - other: "%{count} offen" - label_x_closed_issues_abbr: - zero: 0 geschlossen - one: 1 geschlossen - other: "%{count} geschlossen" - label_total: Gesamtzahl - label_permissions: Berechtigungen - label_current_status: Gegenwärtiger Status - label_new_statuses_allowed: Neue Berechtigungen - label_all: alle - label_none: kein - label_nobody: Niemand - label_next: Weiter - label_previous: Zurück - label_used_by: Benutzt von - label_details: Details - label_add_note: Kommentar hinzufügen - label_per_page: Pro Seite - label_calendar: Kalender - label_months_from: Monate ab - label_gantt: Gantt-Diagramm - label_internal: Intern - label_last_changes: "%{count} letzte Änderungen" - label_change_view_all: Alle Änderungen anzeigen - label_personalize_page: Diese Seite anpassen - label_comment: Kommentar - label_comment_plural: Kommentare - label_x_comments: - zero: keine Kommentare - one: 1 Kommentar - other: "%{count} Kommentare" - label_comment_add: Kommentar hinzufügen - label_comment_added: Kommentar hinzugefügt - label_comment_delete: Kommentar löschen - label_query: Benutzerdefinierte Abfrage - label_query_plural: Benutzerdefinierte Berichte - label_query_new: Neuer Bericht - label_filter_add: Filter hinzufügen - label_filter_plural: Filter - label_equals: ist - label_not_equals: ist nicht - label_in_less_than: in weniger als - label_in_more_than: in mehr als - label_greater_or_equal: ">=" - label_less_or_equal: "<=" - label_in: an - label_today: heute - label_all_time: gesamter Zeitraum - label_yesterday: gestern - label_this_week: aktuelle Woche - label_last_week: vorige Woche - label_last_n_days: "die letzten %{count} Tage" - label_this_month: aktueller Monat - label_last_month: voriger Monat - label_this_year: aktuelles Jahr - label_date_range: Zeitraum - label_less_than_ago: vor weniger als - label_more_than_ago: vor mehr als - label_ago: vor - label_contains: enthält - label_not_contains: enthält nicht - label_day_plural: Tage - label_repository: Projektarchiv - label_repository_plural: Projektarchive - label_browse: Codebrowser - label_modification: "%{count} Änderung" - label_modification_plural: "%{count} Änderungen" - label_branch: Zweig - label_tag: Markierung - label_revision: Revision - label_revision_plural: Revisionen - label_revision_id: Revision %{value} - 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 - label_view_revisions: Revisionen anzeigen - label_view_all_revisions: Alle Revisionen anzeigen - label_max_size: Maximale Größe - label_sort_highest: An den Anfang - label_sort_higher: Eins höher - label_sort_lower: Eins tiefer - label_sort_lowest: Ans Ende - label_roadmap: Roadmap - label_roadmap_due_in: "Fällig in %{value}" - label_roadmap_overdue: "%{value} verspätet" - label_roadmap_no_issues: Keine Tickets für diese Version - label_search: Suche - label_result_plural: Resultate - label_all_words: Alle Wörter - label_wiki: Wiki - label_wiki_edit: Wiki-Bearbeitung - label_wiki_edit_plural: Wiki-Bearbeitungen - label_wiki_page: Wiki-Seite - label_wiki_page_plural: Wiki-Seiten - label_index_by_title: Seiten nach Titel sortiert - label_index_by_date: Seiten nach Datum sortiert - label_current_version: Gegenwärtige Version - label_preview: Vorschau - label_feed_plural: Feeds - label_changes_details: Details aller Änderungen - label_issue_tracking: Tickets - label_spent_time: Aufgewendete Zeit - label_overall_spent_time: Aufgewendete Zeit aller Projekte anzeigen - label_f_hour: "%{value} Stunde" - label_f_hour_plural: "%{value} Stunden" - label_f_from: "Start: %{value}" - label_f_to: "Ende: %{value}" - label_f_pause: "Pause (min): %{value}" - label_time_tracking: Zeiterfassung - label_change_plural: Änderungen - label_statistics: Statistiken - label_commits_per_month: Übertragungen pro Monat - label_commits_per_author: Übertragungen pro Autor - label_view_diff: Unterschiede anzeigen - label_diff_inline: einspaltig - label_diff_side_by_side: nebeneinander - label_options: Optionen - label_copy_workflow_from: Workflow kopieren von - label_permissions_report: Berechtigungsübersicht - label_watched_issues: Beobachtete Tickets - label_related_issues: Zugehörige Tickets - label_applied_status: Zugewiesener Status - label_loading: Lade... - 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 - label_follows: folgt - label_end_to_start: Ende - Anfang - label_end_to_end: Ende - Ende - label_start_to_start: Anfang - Anfang - label_start_to_end: Anfang - Ende - label_stay_logged_in: Angemeldet bleiben - label_disabled: gesperrt - label_show_completed_versions: Abgeschlossene Versionen anzeigen - label_me: ich - label_board: Forum - label_board_new: Neues Forum - label_board_plural: Foren - label_board_locked: Gesperrt - label_board_sticky: Wichtig (immer oben) - label_topic_plural: Themen - label_message_plural: Forenbeiträge - label_message_last: Letzter Forenbeitrag - label_message_new: Neues Thema - label_message_posted: Forenbeitrag hinzugefügt - label_reply_plural: Antworten - label_send_information: Sende Kontoinformationen an Benutzer - label_year: Jahr - label_month: Monat - label_week: Woche - label_date_from: Von - label_date_to: Bis - label_language_based: Sprachabhängig - label_sort_by: "Sortiert nach %{value}" - label_send_test_email: Test-E-Mail senden - label_feeds_access_key: RSS-Zugriffsschlüssel - label_missing_feeds_access_key: Der RSS-Zugriffsschlüssel fehlt. - label_feeds_access_key_created_on: "Atom-Zugriffsschlüssel vor %{value} erstellt" - label_module_plural: Module - label_added_time_by: "Von %{author} vor %{age} hinzugefügt" - label_updated_time_by: "Von %{author} vor %{age} aktualisiert" - label_updated_time: "Vor %{value} aktualisiert" - label_jump_to_a_project: Zu einem Projekt springen... - label_file_plural: Dateien - label_changeset_plural: Changesets - label_default_columns: Standard-Spalten - label_no_change_option: (Keine Änderung) - label_bulk_edit_selected_issues: Alle ausgewählten Tickets bearbeiten - label_theme: Stil - label_default: Standard - label_search_titles_only: Nur Titel durchsuchen - label_user_mail_option_all: "Für alle Ereignisse in all meinen Projekten" - label_user_mail_option_selected: "Für alle Ereignisse in den ausgewählten Projekten..." - label_user_mail_no_self_notified: "Ich möchte nicht über Änderungen benachrichtigt werden, die ich selbst durchführe." - label_registration_activation_by_email: Kontoaktivierung durch E-Mail - label_registration_manual_activation: Manuelle Kontoaktivierung - label_registration_automatic_activation: Automatische Kontoaktivierung - label_display_per_page: "Pro Seite: %{value}" - label_age: Geändert vor - label_change_properties: Eigenschaften ändern - label_general: Allgemein - label_more: Mehr - label_scm: Versionskontrollsystem - label_plugins: Plugins - label_ldap_authentication: LDAP-Authentifizierung - label_downloads_abbr: D/L - label_optional_description: Beschreibung (optional) - label_add_another_file: Eine weitere Datei hinzufügen - 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 - label_example: Beispiel - label_display: Anzeige - label_sort: Sortierung - label_ascending: Aufsteigend - label_descending: Absteigend - label_date_from_to: von %{start} bis %{end} - label_wiki_content_added: Die Wiki-Seite wurde erfolgreich hinzugefügt. - label_wiki_content_updated: Die Wiki-Seite wurde erfolgreich aktualisiert. - label_group: Gruppe - label_group_plural: Gruppen - label_group_new: Neue Gruppe - label_time_entry_plural: Benötigte Zeit - label_version_sharing_none: Nicht gemeinsam verwenden - label_version_sharing_descendants: Mit Unterprojekten - label_version_sharing_hierarchy: Mit Projekthierarchie - label_version_sharing_tree: Mit Projektbaum - label_version_sharing_system: Mit allen Projekten - label_update_issue_done_ratios: Ticket-Fortschritt aktualisieren - label_copy_source: Quelle - label_copy_target: Ziel - label_copy_same_as_target: So wie das Ziel - label_display_used_statuses_only: Zeige nur Status an, die von diesem Tracker verwendet werden - label_api_access_key: API-Zugriffsschlüssel - label_missing_api_access_key: Der API-Zugriffsschlüssel fehlt. - label_api_access_key_created_on: Der API-Zugriffsschlüssel wurde vor %{value} erstellt - label_profile: Profil - label_subtask_plural: Unteraufgaben - label_project_copy_notifications: Sende Mailbenachrichtigungen beim Kopieren des Projekts. - label_principal_search: "Nach Benutzer oder Gruppe suchen:" - label_user_search: "Nach Benutzer suchen:" - - button_login: Anmelden - button_submit: OK - button_save: Speichern - button_check_all: Alles auswählen - button_uncheck_all: Alles abwählen - button_delete: Löschen - button_create: Anlegen - button_create_and_continue: Anlegen und weiter - button_test: Testen - button_edit: Bearbeiten - button_edit_associated_wikipage: "Zugehörige Wikiseite bearbeiten: %{page_title}" - button_add: Hinzufügen - button_change: Wechseln - button_apply: Anwenden - button_clear: Zurücksetzen - button_lock: Sperren - button_unlock: Entsperren - button_download: Download - button_list: Liste - button_view: Anzeigen - button_move: Verschieben - button_move_and_follow: Verschieben und Ticket anzeigen - button_back: Zurück - button_cancel: Abbrechen - button_activate: Aktivieren - button_sort: Sortieren - button_log_time: Aufwand buchen - button_rollback: Auf diese Version zurücksetzen - button_watch: Beobachten - button_unwatch: Nicht beobachten - button_reply: Antworten - button_archive: Archivieren - button_unarchive: Entarchivieren - button_reset: Zurücksetzen - button_rename: Umbenennen - button_change_password: Kennwort ändern - button_copy: Kopieren - button_copy_and_follow: Kopieren und Ticket anzeigen - button_annotate: Annotieren - button_update: Bearbeiten - button_configure: Konfigurieren - button_quote: Zitieren - button_duplicate: Duplizieren - button_show: Anzeigen - - status_active: aktiv - status_registered: angemeldet - status_locked: gesperrt - - version_status_open: offen - version_status_locked: gesperrt - version_status_closed: abgeschlossen - - field_active: Aktiv - - text_select_mail_notifications: Bitte wählen Sie die Aktionen aus, für die eine Mailbenachrichtigung gesendet werden soll. - 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 (%{value}) werden ebenfalls gelöscht." - text_workflow_edit: Workflow zum Bearbeiten auswählen - text_are_you_sure: Sind Sie sicher? - text_are_you_sure_with_children: "Lösche Aufgabe und alle Unteraufgaben?" - text_journal_changed: "%{label} wurde von %{old} zu %{new} geändert" - text_journal_set_to: "%{label} wurde auf %{value} gesetzt" - text_journal_deleted: "%{label} %{old} wurde gelöscht" - text_journal_added: "%{label} %{value} wurde hinzugefügt" - text_tip_issue_begin_day: Aufgabe, die an diesem Tag beginnt - text_tip_issue_end_day: Aufgabe, die an diesem Tag endet - text_tip_issue_begin_end_day: Aufgabe, die an diesem Tag beginnt und endet - text_project_identifier_info: 'Kleinbuchstaben (a-z), Ziffern, Binde- und Unterstriche erlaubt.
Einmal gespeichert, kann die Kennung nicht mehr geändert werden.' - text_caracters_maximum: "Max. %{count} Zeichen." - text_caracters_minimum: "Muss mindestens %{count} Zeichen lang sein." - text_length_between: "Länge zwischen %{min} und %{max} Zeichen." - text_tracker_no_workflow: Kein Workflow für diesen Tracker definiert. - text_unallowed_characters: Nicht erlaubte Zeichen - text_comma_separated: Mehrere Werte erlaubt (durch Komma getrennt). - text_line_separated: Mehrere Werte sind erlaubt (eine Zeile pro Wert). - text_issues_ref_in_commit_messages: Ticket-Beziehungen und -Status in Commit-Log-Meldungen - text_issue_added: "Ticket %{id} wurde erstellt von %{author}." - text_issue_updated: "Ticket %{id} wurde aktualisiert von %{author}." - text_wiki_destroy_confirmation: Sind Sie sicher, dass Sie dieses Wiki mit sämtlichem Inhalt löschen möchten? - text_issue_category_destroy_question: "Einige Tickets (%{count}) sind dieser Kategorie zugeodnet. Was möchten Sie tun?" - text_issue_category_destroy_assignments: Kategorie-Zuordnung entfernen - text_issue_category_reassign_to: Tickets dieser Kategorie zuordnen - text_user_mail_option: "Für nicht ausgewählte Projekte werden Sie nur Benachrichtigungen für Dinge erhalten, die Sie beobachten oder an denen Sie beteiligt sind (z. B. Tickets, deren Autor Sie sind oder die Ihnen zugewiesen sind)." - text_no_configuration_data: "Rollen, Tracker, Ticket-Status und Workflows wurden noch nicht konfiguriert.\nEs ist sehr zu empfehlen, die Standard-Konfiguration zu laden. Sobald sie geladen ist, können Sie sie abändern." - text_load_default_configuration: Standard-Konfiguration laden - text_status_changed_by_changeset: "Status geändert durch Changeset %{value}." - text_issues_destroy_confirmation: 'Sind Sie sicher, dass Sie die ausgewählten Tickets löschen möchten?' - text_select_project_modules: 'Bitte wählen Sie die Module aus, die in diesem Projekt aktiviert sein sollen:' - text_default_administrator_account_changed: Administrator-Kennwort geändert - text_file_repository_writable: Verzeichnis für Dateien beschreibbar - text_plugin_assets_writable: Verzeichnis für Plugin-Assets beschreibbar - text_rmagick_available: RMagick verfügbar (optional) - text_destroy_time_entries_question: Es wurden bereits %{hours} Stunden auf dieses Ticket gebucht. Was soll mit den Aufwänden geschehen? - 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: "%{value} schrieb:" - text_enumeration_destroy_question: "%{count} Objekt(e) 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/configuration.yml vor und starten Sie die Applikation neu." - text_repository_usernames_mapping: "Bitte legen Sie die Zuordnung der Redmine-Benutzer zu den Benutzernamen der Commit-Log-Meldungen des Projektarchivs fest.\nBenutzer mit identischen Redmine- und Projektarchiv-Benutzernamen oder -E-Mail-Adressen werden automatisch zugeordnet." - text_diff_truncated: '... Dieser Diff wurde abgeschnitten, weil er die maximale Anzahl anzuzeigender Zeilen überschreitet.' - text_custom_field_possible_values_info: 'Eine Zeile pro Wert' - text_wiki_page_destroy_question: "Diese Seite hat %{descendants} Unterseite(n). Was möchten Sie tun?" - text_wiki_page_nullify_children: Verschiebe die Unterseiten auf die oberste Ebene - text_wiki_page_destroy_children: Lösche alle Unterseiten - text_wiki_page_reassign_children: Ordne die Unterseiten dieser Seite zu - text_own_membership_delete_confirmation: "Sie sind dabei, einige oder alle Ihre Berechtigungen zu entfernen. Es ist möglich, dass Sie danach das Projekt nicht mehr ansehen oder bearbeiten dürfen.\nSind Sie sicher, dass Sie dies tun möchten?" - text_zoom_in: Zoom in - text_zoom_out: Zoom out - - default_role_manager: Manager - default_role_developer: Entwickler - default_role_reporter: Reporter - default_tracker_bug: Fehler - default_tracker_feature: Feature - default_tracker_support: Unterstützung - default_issue_status_new: Neu - default_issue_status_in_progress: In Bearbeitung - default_issue_status_resolved: Gelöst - default_issue_status_feedback: Feedback - default_issue_status_closed: Erledigt - default_issue_status_rejected: Abgewiesen - default_doc_category_user: Benutzerdokumentation - default_doc_category_tech: Technische Dokumentation - default_priority_low: Niedrig - default_priority_normal: Normal - default_priority_high: Hoch - default_priority_urgent: Dringend - default_priority_immediate: Sofort - default_activity_design: Design - default_activity_development: Entwicklung - - enumeration_issue_priorities: Ticket-Prioritäten - enumeration_doc_categories: Dokumentenkategorien - enumeration_activities: Aktivitäten (Zeiterfassung) - enumeration_system_activity: System-Aktivität - - field_text: Textfeld - label_user_mail_option_only_owner: Nur für Aufgaben die ich angelegt habe - setting_default_notification_option: Standard Benachrichtigungsoptionen - label_user_mail_option_only_my_events: Nur für Aufgaben die ich beobachte oder an welchen ich mitarbeite - label_user_mail_option_only_assigned: Nur für Aufgaben für die ich zuständig bin. - notice_not_authorized_archived_project: Das Projekt wurde archiviert und ist daher nicht nicht verfügbar. - label_user_mail_option_none: keine Ereignisse - field_member_of_group: Zuständigkeitsgruppe - field_assigned_to_role: Zuständigkeitsrolle - field_visible: Sichtbar - setting_emails_header: E-Mail Betreffzeile - setting_commit_logtime_activity_id: Aktivität für die Zeiterfassung - text_time_logged_by_changeset: Angewendet in Changeset %{value}. - setting_commit_logtime_enabled: Aktiviere Zeitlogging - notice_gantt_chart_truncated: Die Grafik ist unvollständig, da das Maximum der anzeigbaren Aufgaben überschritten wurde (%{max}) - setting_gantt_items_limit: Maximale Anzahl von Aufgaben die im Gantt-Chart angezeigt werden. - field_warn_on_leaving_unsaved: vor dem Verlassen einer Seite mit ungesichertem Text im Editor warnen - text_warn_on_leaving_unsaved: Die aktuellen Änderungen gehen verloren, wenn Sie diese Seite verlassen. - label_my_queries: Meine eigenen Abfragen - text_journal_changed_no_detail: "%{label} aktualisiert" - label_news_comment_added: Kommentar zu einer News hinzugefügt - button_expand_all: Alle ausklappen - button_collapse_all: Alle einklappen - label_additional_workflow_transitions_for_assignee: Zusätzliche Berechtigungen wenn der Benutzer der Zugewiesene ist - label_additional_workflow_transitions_for_author: Zusätzliche Berechtigungen wenn der Benutzer der Autor ist - label_bulk_edit_selected_time_entries: Ausgewählte Zeitaufwände bearbeiten - text_time_entries_destroy_confirmation: Sind Sie sicher, dass Sie die ausgewählten Zeitaufwände löschen möchten? - label_role_anonymous: Anonymous - label_role_non_member: Nichtmitglied - label_issue_note_added: Notiz hinzugefügt - label_issue_status_updated: Status aktualisiert - label_issue_priority_updated: Priorität aktualisiert - label_issues_visibility_own: Tickets die folgender User erstellt hat oder die ihm zugewiesen sind - field_issues_visibility: Ticket Sichtbarkeit - label_issues_visibility_all: Alle Tickets - permission_set_own_issues_private: Eigene Tickets privat oder öffentlich markieren - field_is_private: Privat - permission_set_issues_private: Tickets privat oder öffentlich markieren - label_issues_visibility_public: Alle öffentlichen Tickets - text_issues_destroy_descendants_confirmation: Dies wird auch %{count} Unteraufgabe/n löschen. - field_commit_logs_encoding: Kodierung der Commit-Log-Meldungen - field_scm_path_encoding: Pfad Kodierung - text_scm_path_encoding_note: "Standard: UTF-8" - field_path_to_repository: Pfad zum repository - field_root_directory: Wurzelverzeichnis - field_cvs_module: Modul - field_cvsroot: CVSROOT - text_mercurial_repository_note: Lokales repository (e.g. /hgrepo, c:\hgrepo) - text_scm_command: Kommando - text_scm_command_version: Version - label_git_report_last_commit: Bericht des letzten Commits für Dateien und Verzeichnisse - text_scm_config: Die SCM-Kommandos können in der in config/configuration.yml konfiguriert werden. Redmine muss anschließend neu gestartet werden. - text_scm_command_not_available: Scm Kommando ist nicht verfügbar. Bitte prüfen Sie die Einstellungen im Administrationspanel. - - notice_issue_successful_create: Ticket %{id} erstellt. - label_between: zwischen - setting_issue_group_assignment: Erlaubt die Ticket-Zuweisung an Gruppen - label_diff: diff - text_git_repository_note: Repository steht für sich alleine (bare) und liegt lokal (z.B. /gitrepo, c:\gitrepo) - - description_filter: Filter - description_search: Suchfeld - description_choose_project: Projekte - description_project_scope: Suchbereich - description_notes: Kommentare - description_message_content: Nachrichteninhalt - description_query_sort_criteria_attribute: Sortierattribut - description_query_sort_criteria_direction: Sortierrichtung - description_user_mail_notification: Mailbenachrichtigungseinstellung - description_available_columns: Verfügbare Spalten - description_selected_columns: Ausgewählte Spalten - description_issue_category_reassign: Neue Kategorie wählen - description_wiki_subpages_reassign: Neue Elternseite wählen - description_date_range_list: Zeitraum aus einer Liste wählen - description_date_range_interval: Zeitraum durch Start- und Enddatum festlegen - description_date_from: Startdatum eintragen - description_date_to: Enddatum eintragen - - label_parent_revision: Parent - label_child_revision: Child - error_scm_annotate_big_text_file: Der Eintrag kann nicht umgesetzt werden, da er die maximale Textlänge überschreitet. - setting_default_issue_start_date_to_creation_date: Aktuelles Datum als Beginn für neue Tickets verwenden - button_edit_section: Diesen Bereich bearbeiten - setting_repositories_encodings: Encoding von Anhängen und Repositories - description_all_columns: Alle Spalten - button_export: Exportieren - label_export_options: "%{export_format} Export-Eigenschaften" - error_attachment_too_big: Diese Datei kann nicht hochgeladen werden, da sie die maximale Dateigröße von (%{max_size}) überschreitet. - notice_failed_to_save_time_entries: "Gescheitert %{count} Zeiteinträge für %{total} von ausgewählten: %{ids} zu speichern." - label_x_issues: - zero: 0 Tickets - one: 1 Ticket - other: "%{count} Tickets" - label_repository_new: Neues Repository - field_repository_is_default: Haupt-Repository - label_copy_attachments: Anhänge Kopieren - label_item_position: "%{position}/%{count}" - label_completed_versions: Abgeschlossene Versionen - field_multiple: Mehrere Werte - setting_commit_cross_project_ref: Erlauben auf Tickets aller anderen Projekte zu referenzieren - text_issue_conflict_resolution_add_notes: Meine Änderungen übernehmen und alle anderen Änderungen verwerfen - text_issue_conflict_resolution_overwrite: Meine Änderungen trotzdem übernehmen (vorherige Notizen bleiben erhalten aber manche können überschrieben werden) - notice_issue_update_conflict: Das Ticket wurde von einem anderen Nutzer überarbeitet während Ihrer Bearbeitung. - text_issue_conflict_resolution_cancel: Meine Änderungen verwerfen und %{link} neu anzeigen - permission_manage_related_issues: Zugehörige Tickets verwalten - field_ldap_filter: LDAP Filter - label_search_for_watchers: Nach hinzufügbaren Beobachtern suchen - notice_account_deleted: Ihr Benutzerkonto wurde unwiderruflich gelöscht. - setting_unsubscribe: Erlaubt Benutzern das eigene Benutzerkonto zu löschen - button_delete_my_account: Mein Benutzerkonto löschen - text_account_destroy_confirmation: Möchten Sie wirklich fortfahren?\nIhr Benutzerkonto wird für immer gelöscht und kann nicht wiederhergestellt werden. +# German translations for Ruby on Rails +# by Clemens Kofler (clemens@railway.at) +# additions for Redmine 1.2 by Jens Martsch (jmartsch@gmail.com) + +de: + direction: ltr + date: + formats: + # Use the strftime parameters for formats. + # When no format has been given, it uses default. + # You can provide other formats here if you like! + default: "%d.%m.%Y" + short: "%e. %b" + long: "%e. %B %Y" + + day_names: [Sonntag, Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag] + abbr_day_names: [So, Mo, Di, Mi, Do, Fr, Sa] + + # Don't forget the nil at the beginning; there's no such thing as a 0th month + month_names: [~, Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember] + abbr_month_names: [~, Jan, Feb, Mär, Apr, Mai, Jun, Jul, Aug, Sep, Okt, Nov, Dez] + # Used in date_select and datime_select. + order: + - :day + - :month + - :year + + time: + formats: + default: "%d.%m.%Y %H:%M" + time: "%H:%M" + short: "%e. %b %H:%M" + long: "%A, %e. %B %Y, %H:%M Uhr" + am: "vormittags" + pm: "nachmittags" + + datetime: + distance_in_words: + half_a_minute: 'eine halbe Minute' + less_than_x_seconds: + one: 'weniger als 1 Sekunde' + other: 'weniger als %{count} Sekunden' + x_seconds: + one: '1 Sekunde' + other: '%{count} Sekunden' + less_than_x_minutes: + one: 'weniger als 1 Minute' + other: 'weniger als %{count} Minuten' + x_minutes: + one: '1 Minute' + other: '%{count} Minuten' + about_x_hours: + one: 'etwa 1 Stunde' + other: 'etwa %{count} Stunden' + x_days: + one: '1 Tag' + other: '%{count} Tagen' + about_x_months: + one: 'etwa 1 Monat' + other: 'etwa %{count} Monaten' + x_months: + one: '1 Monat' + other: '%{count} Monaten' + about_x_years: + one: 'etwa 1 Jahr' + other: 'etwa %{count} Jahren' + over_x_years: + one: 'mehr als 1 Jahr' + other: 'mehr als %{count} Jahren' + almost_x_years: + one: "fast 1 Jahr" + other: "fast %{count} Jahren" + + number: + # Default format for numbers + format: + separator: ',' + delimiter: '.' + precision: 2 + currency: + format: + unit: '€' + format: '%n %u' + separator: + delimiter: + precision: + percentage: + format: + delimiter: "" + precision: + format: + delimiter: "" + human: + format: + delimiter: "" + precision: 3 + storage_units: + format: "%n %u" + units: + byte: + one: "Byte" + other: "Bytes" + kb: "KB" + mb: "MB" + gb: "GB" + tb: "TB" + +# Used in array.to_sentence. + support: + array: + sentence_connector: "und" + skip_last_comma: true + + activerecord: + errors: + template: + header: + one: "Dieses %{model}-Objekt konnte nicht gespeichert werden: %{count} Fehler." + other: "Dieses %{model}-Objekt konnte nicht gespeichert werden: %{count} Fehler." + body: "Bitte überprüfen Sie die folgenden Felder:" + + messages: + inclusion: "ist kein gültiger Wert" + exclusion: "ist nicht verfügbar" + invalid: "ist nicht gültig" + confirmation: "stimmt nicht mit der Bestätigung überein" + accepted: "muss akzeptiert werden" + empty: "muss ausgefüllt werden" + blank: "muss ausgefüllt werden" + too_long: "ist zu lang (nicht mehr als %{count} Zeichen)" + too_short: "ist zu kurz (nicht weniger als %{count} Zeichen)" + wrong_length: "hat die falsche Länge (muss genau %{count} Zeichen haben)" + taken: "ist bereits vergeben" + not_a_number: "ist keine Zahl" + not_a_date: "is kein gültiges Datum" + greater_than: "muss größer als %{count} sein" + greater_than_or_equal_to: "muss größer oder gleich %{count} sein" + equal_to: "muss genau %{count} sein" + less_than: "muss kleiner als %{count} sein" + less_than_or_equal_to: "muss kleiner oder gleich %{count} sein" + odd: "muss ungerade sein" + even: "muss gerade sein" + greater_than_start_date: "muss größer als Anfangsdatum sein" + not_same_project: "gehört nicht zum selben Projekt" + circular_dependency: "Diese Beziehung würde eine zyklische Abhängigkeit erzeugen" + cant_link_an_issue_with_a_descendant: "Ein Ticket kann nicht mit einer ihrer Unteraufgaben verlinkt werden" + + actionview_instancetag_blank_option: Bitte auswählen + + general_text_No: 'Nein' + general_text_Yes: 'Ja' + general_text_no: 'nein' + general_text_yes: 'ja' + general_lang_name: 'Deutsch' + general_csv_separator: ';' + general_csv_decimal_separator: ',' + general_csv_encoding: ISO-8859-1 + general_pdf_encoding: UTF-8 + general_first_day_of_week: '1' + + notice_account_updated: Konto wurde erfolgreich aktualisiert. + notice_account_invalid_creditentials: Benutzer oder Kennwort ist ungültig. + notice_account_password_updated: Kennwort wurde erfolgreich aktualisiert. + notice_account_wrong_password: Falsches Kennwort. + notice_account_register_done: Konto wurde erfolgreich angelegt. + notice_account_unknown_email: Unbekannter Benutzer. + notice_can_t_change_password: Dieses Konto verwendet eine externe Authentifizierungs-Quelle. Unmöglich, das Kennwort zu ändern. + notice_account_lost_email_sent: Eine E-Mail mit Anweisungen, ein neues Kennwort zu wählen, wurde Ihnen geschickt. + notice_account_activated: Ihr Konto ist aktiviert. Sie können sich jetzt anmelden. + notice_successful_create: Erfolgreich angelegt + notice_successful_update: Erfolgreich aktualisiert. + notice_successful_delete: Erfolgreich gelöscht. + notice_successful_connection: Verbindung erfolgreich. + notice_file_not_found: Anhang existiert nicht oder ist gelöscht worden. + notice_locking_conflict: Datum wurde von einem anderen Benutzer geändert. + notice_not_authorized: Sie sind nicht berechtigt, auf diese Seite zuzugreifen. + notice_email_sent: "Eine E-Mail wurde an %{value} gesendet." + notice_email_error: "Beim Senden einer E-Mail ist ein Fehler aufgetreten (%{value})." + notice_feeds_access_key_reseted: Ihr Atom-Zugriffsschlüssel wurde zurückgesetzt. + notice_api_access_key_reseted: Ihr API-Zugriffsschlüssel wurde zurückgesetzt. + notice_failed_to_save_issues: "%{count} von %{total} ausgewählten Tickets konnte(n) nicht gespeichert werden: %{ids}." + notice_failed_to_save_members: "Benutzer konnte nicht gespeichert werden: %{errors}." + 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. + notice_unable_delete_time_entry: Der Zeiterfassungseintrag konnte nicht gelöscht werden. + notice_issue_done_ratios_updated: Der Ticket-Fortschritt wurde aktualisiert. + + error_can_t_load_default_data: "Die Standard-Konfiguration konnte nicht geladen werden: %{value}" + error_scm_not_found: Eintrag und/oder Revision existiert nicht im Projektarchiv. + error_scm_command_failed: "Beim Zugriff auf das Projektarchiv ist ein Fehler aufgetreten: %{value}" + error_scm_annotate: "Der Eintrag existiert nicht oder kann nicht annotiert werden." + error_issue_not_found_in_project: 'Das Ticket wurde nicht gefunden oder gehört nicht zu diesem Projekt.' + error_no_tracker_in_project: Diesem Projekt ist kein Tracker zugeordnet. Bitte überprüfen Sie die Projekteinstellungen. + error_no_default_issue_status: Es ist kein Status als Standard definiert. Bitte überprüfen Sie Ihre Konfiguration (unter "Administration -> Ticket-Status"). + error_can_not_delete_custom_field: Kann das benutzerdefinierte Feld nicht löschen. + error_can_not_delete_tracker: Dieser Tracker enthält Tickets und kann nicht gelöscht werden. + error_can_not_remove_role: Diese Rolle wird verwendet und kann nicht gelöscht werden. + error_can_not_reopen_issue_on_closed_version: Das Ticket ist einer abgeschlossenen Version zugeordnet und kann daher nicht wieder geöffnet werden. + error_can_not_archive_project: Dieses Projekt kann nicht archiviert werden. + error_issue_done_ratios_not_updated: Der Ticket-Fortschritt wurde nicht aktualisiert. + error_workflow_copy_source: Bitte wählen Sie einen Quell-Tracker und eine Quell-Rolle. + error_workflow_copy_target: Bitte wählen Sie die Ziel-Tracker und -Rollen. + error_unable_delete_issue_status: "Der Ticket-Status konnte nicht gelöscht werden." + error_unable_to_connect: Fehler beim Verbinden (%{value}) + warning_attachments_not_saved: "%{count} Datei(en) konnten nicht gespeichert werden." + + mail_subject_lost_password: "Ihr %{value} Kennwort" + mail_body_lost_password: 'Benutzen Sie den folgenden Link, um Ihr Kennwort zu ändern:' + mail_subject_register: "%{value} Kontoaktivierung" + mail_body_register: 'Um Ihr Konto zu aktivieren, benutzen Sie folgenden Link:' + mail_body_account_information_external: "Sie können sich mit Ihrem Konto %{value} anmelden." + mail_body_account_information: Ihre Konto-Informationen + mail_subject_account_activation_request: "Antrag auf %{value} Kontoaktivierung" + mail_body_account_activation_request: "Ein neuer Benutzer (%{value}) hat sich registriert. Sein Konto wartet auf Ihre Genehmigung:" + mail_subject_reminder: "%{count} Tickets müssen in den nächsten %{days} Tagen abgegeben werden" + mail_body_reminder: "%{count} Tickets, die Ihnen zugewiesen sind, müssen in den nächsten %{days} Tagen abgegeben werden:" + mail_subject_wiki_content_added: "Wiki-Seite '%{id}' hinzugefügt" + mail_body_wiki_content_added: "Die Wiki-Seite '%{id}' wurde von %{author} hinzugefügt." + mail_subject_wiki_content_updated: "Wiki-Seite '%{id}' erfolgreich aktualisiert" + mail_body_wiki_content_updated: "Die Wiki-Seite '%{id}' wurde von %{author} aktualisiert." + + gui_validation_error: 1 Fehler + gui_validation_error_plural: "%{count} Fehler" + + field_name: Name + field_description: Beschreibung + field_summary: Zusammenfassung + field_is_required: Erforderlich + field_firstname: Vorname + field_lastname: Nachname + field_mail: E-Mail + field_filename: Datei + field_filesize: Größe + field_downloads: Downloads + field_author: Autor + field_created_on: Angelegt + field_updated_on: Aktualisiert + field_field_format: Format + field_is_for_all: Für alle Projekte + field_possible_values: Mögliche Werte + field_regexp: Regulärer Ausdruck + field_min_length: Minimale Länge + field_max_length: Maximale Länge + field_value: Wert + field_category: Kategorie + field_title: Titel + field_project: Projekt + field_issue: Ticket + field_status: Status + field_notes: Kommentare + field_is_closed: Ticket geschlossen + field_is_default: Standardeinstellung + field_tracker: Tracker + field_subject: Thema + field_due_date: Abgabedatum + field_assigned_to: Zugewiesen an + field_priority: Priorität + field_fixed_version: Zielversion + field_user: Benutzer + field_principal: Auftraggeber + field_role: Rolle + field_homepage: Projekt-Homepage + field_is_public: Öffentlich + field_parent: Unterprojekt von + field_is_in_roadmap: In der Roadmap anzeigen + field_login: Mitgliedsname + field_mail_notification: Mailbenachrichtigung + field_admin: Administrator + field_last_login_on: Letzte Anmeldung + field_language: Sprache + field_effective_date: Datum + field_password: Kennwort + field_new_password: Neues Kennwort + field_password_confirmation: Bestätigung + field_version: Version + field_type: Typ + field_host: Host + field_port: Port + field_account: Konto + field_base_dn: Base DN + field_attr_login: Mitgliedsname-Attribut + field_attr_firstname: Vorname-Attribut + field_attr_lastname: Name-Attribut + field_attr_mail: E-Mail-Attribut + field_onthefly: On-the-fly-Benutzererstellung + field_start_date: Beginn + field_done_ratio: "% erledigt" + field_auth_source: Authentifizierungs-Modus + field_hide_mail: E-Mail-Adresse nicht anzeigen + field_comments: Kommentar + field_url: URL + field_start_page: Hauptseite + field_subproject: Unterprojekt von + field_hours: Stunden + field_activity: Aktivität + field_spent_on: Datum + field_identifier: Kennung + field_is_filter: Als Filter benutzen + field_issue_to: Zugehöriges Ticket + field_delay: Pufferzeit + field_assignable: Tickets können dieser Rolle zugewiesen werden + field_redirect_existing_links: Existierende Links umleiten + field_estimated_hours: Geschätzter Aufwand + field_column_names: Spalten + field_time_entries: Logzeit + field_time_zone: Zeitzone + field_searchable: Durchsuchbar + field_default_value: Standardwert + field_comments_sorting: Kommentare anzeigen + field_parent_title: Übergeordnete Seite + field_editable: Bearbeitbar + field_watcher: Beobachter + field_identity_url: OpenID-URL + field_content: Inhalt + field_group_by: Gruppiere Ergebnisse nach + field_sharing: Gemeinsame Verwendung + field_parent_issue: Übergeordnete Aufgabe + + setting_app_title: Applikations-Titel + setting_app_subtitle: Applikations-Untertitel + setting_welcome_text: Willkommenstext + setting_default_language: Default-Sprache + setting_login_required: Authentifizierung erforderlich + setting_self_registration: Anmeldung ermöglicht + setting_attachment_max_size: Max. Dateigröße + setting_issues_export_limit: Max. Anzahl Tickets bei CSV/PDF-Export + setting_mail_from: E-Mail-Absender + setting_bcc_recipients: E-Mails als Blindkopie (BCC) senden + setting_plain_text_mail: Nur reinen Text (kein HTML) senden + setting_host_name: Hostname + setting_text_formatting: Textformatierung + setting_wiki_compression: Wiki-Historie komprimieren + setting_feeds_limit: Max. Anzahl Einträge pro Atom-Feed + setting_default_projects_public: Neue Projekte sind standardmäßig öffentlich + setting_autofetch_changesets: Changesets automatisch abrufen + setting_sys_api_enabled: Webservice zur Verwaltung der Projektarchive benutzen + setting_commit_ref_keywords: Schlüsselwörter (Beziehungen) + setting_commit_fix_keywords: Schlüsselwörter (Status) + setting_autologin: Automatische Anmeldung + setting_date_format: Datumsformat + 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_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_body_delimiters: "Schneide E-Mails nach einer dieser Zeilen ab" + 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 + setting_gravatar_enabled: Gravatar-Benutzerbilder benutzen + setting_gravatar_default: Standard-Gravatar-Bild + setting_diff_max_lines_displayed: Maximale Anzahl anzuzeigender Diff-Zeilen + setting_file_max_size_displayed: Maximale Größe inline angezeigter Textdateien + setting_repository_log_display_limit: Maximale Anzahl anzuzeigender Revisionen in der Historie einer Datei + setting_openid: Erlaube OpenID-Anmeldung und -Registrierung + setting_password_min_length: Mindestlänge des Kennworts + setting_new_project_user_role_id: Rolle, die einem Nicht-Administrator zugeordnet wird, der ein Projekt erstellt + setting_default_projects_modules: Standardmäßig aktivierte Module für neue Projekte + setting_issue_done_ratio: Berechne den Ticket-Fortschritt mittels + setting_issue_done_ratio_issue_field: Ticket-Feld %-erledigt + setting_issue_done_ratio_issue_status: Ticket-Status + setting_start_of_week: Wochenanfang + setting_rest_api_enabled: REST-Schnittstelle aktivieren + setting_cache_formatted_text: Formatierten Text im Cache speichern + + permission_add_project: Projekt erstellen + permission_add_subprojects: Unterprojekte erstellen + permission_edit_project: Projekt bearbeiten + permission_select_project_modules: Projektmodule auswählen + permission_manage_members: Mitglieder verwalten + permission_manage_project_activities: Aktivitäten (Zeiterfassung) verwalten + permission_manage_versions: Versionen verwalten + permission_manage_categories: Ticket-Kategorien verwalten + permission_view_issues: Tickets anzeigen + permission_add_issues: Tickets hinzufügen + permission_edit_issues: Tickets bearbeiten + permission_manage_issue_relations: Ticket-Beziehungen verwalten + permission_add_issue_notes: Kommentare hinzufügen + permission_edit_issue_notes: Kommentare bearbeiten + permission_edit_own_issue_notes: Eigene Kommentare bearbeiten + permission_move_issues: Tickets verschieben + permission_delete_issues: Tickets löschen + permission_manage_public_queries: Öffentliche Filter verwalten + permission_save_queries: Filter speichern + permission_view_gantt: Gantt-Diagramm ansehen + permission_view_calendar: Kalender ansehen + permission_view_issue_watchers: Liste der Beobachter ansehen + permission_add_issue_watchers: Beobachter hinzufügen + permission_delete_issue_watchers: Beobachter löschen + permission_log_time: Aufwände buchen + permission_view_time_entries: Gebuchte Aufwände ansehen + permission_edit_time_entries: Gebuchte Aufwände bearbeiten + permission_edit_own_time_entries: Selbst gebuchte Aufwände bearbeiten + permission_manage_news: News verwalten + permission_comment_news: News kommentieren + permission_manage_documents: Dokumente verwalten + permission_view_documents: Dokumente ansehen + permission_manage_files: Dateien verwalten + permission_view_files: Dateien ansehen + permission_manage_wiki: Wiki verwalten + permission_rename_wiki_pages: Wiki-Seiten umbenennen + permission_delete_wiki_pages: Wiki-Seiten löschen + permission_view_wiki_pages: Wiki ansehen + permission_view_wiki_edits: Wiki-Versionsgeschichte ansehen + permission_edit_wiki_pages: Wiki-Seiten bearbeiten + permission_delete_wiki_pages_attachments: Anhänge löschen + permission_protect_wiki_pages: Wiki-Seiten schützen + permission_manage_repository: Projektarchiv verwalten + permission_browse_repository: Projektarchiv ansehen + permission_view_changesets: Changesets ansehen + permission_commit_access: Commit-Zugriff (über WebDAV) + permission_manage_boards: Foren verwalten + permission_view_messages: Forenbeiträge ansehen + permission_add_messages: Forenbeiträge hinzufügen + permission_edit_messages: Forenbeiträge bearbeiten + permission_edit_own_messages: Eigene Forenbeiträge bearbeiten + permission_delete_messages: Forenbeiträge löschen + permission_delete_own_messages: Eigene Forenbeiträge löschen + permission_export_wiki_pages: Wiki-Seiten exportieren + permission_manage_subtasks: Unteraufgaben verwalten + + project_module_issue_tracking: Ticket-Verfolgung + project_module_time_tracking: Zeiterfassung + project_module_news: News + project_module_documents: Dokumente + project_module_files: Dateien + project_module_wiki: Wiki + project_module_repository: Projektarchiv + project_module_boards: Foren + project_module_calendar: Kalender + project_module_gantt: Gantt + + label_user: Benutzer + label_user_plural: Benutzer + label_user_new: Neuer Benutzer + label_user_anonymous: Anonym + label_project: Projekt + label_project_new: Neues Projekt + label_project_plural: Projekte + label_x_projects: + zero: keine Projekte + one: 1 Projekt + other: "%{count} Projekte" + label_project_all: Alle Projekte + label_project_latest: Neueste Projekte + label_issue: Ticket + label_issue_new: Neues Ticket + label_issue_plural: Tickets + label_issue_view_all: Alle Tickets anzeigen + label_issues_by: "Tickets von %{value}" + label_issue_added: Ticket hinzugefügt + label_issue_updated: Ticket aktualisiert + label_document: Dokument + label_document_new: Neues Dokument + label_document_plural: Dokumente + label_document_added: Dokument hinzugefügt + label_role: Rolle + label_role_plural: Rollen + label_role_new: Neue Rolle + label_role_and_permissions: Rollen und Rechte + label_member: Mitglied + label_member_new: Neues Mitglied + label_member_plural: Mitglieder + label_tracker: Tracker + label_tracker_plural: Tracker + label_tracker_new: Neuer Tracker + label_workflow: Workflow + label_issue_status: Ticket-Status + label_issue_status_plural: Ticket-Status + label_issue_status_new: Neuer Status + label_issue_category: Ticket-Kategorie + label_issue_category_plural: Ticket-Kategorien + label_issue_category_new: Neue Kategorie + label_custom_field: Benutzerdefiniertes Feld + label_custom_field_plural: Benutzerdefinierte Felder + label_custom_field_new: Neues Feld + label_enumerations: Aufzählungen + label_enumeration_new: Neuer Wert + label_information: Information + label_information_plural: Informationen + label_please_login: Anmelden + label_register: Registrieren + label_login_with_open_id_option: oder mit OpenID anmelden + label_password_lost: Kennwort vergessen + label_home: Hauptseite + label_my_page: Meine Seite + label_my_account: Mein Konto + label_my_projects: Meine Projekte + label_my_page_block: Bereich "Meine Seite" + label_administration: Administration + label_login: Anmelden + label_logout: Abmelden + label_help: Hilfe + label_reported_issues: Gemeldete Tickets + label_assigned_to_me_issues: Mir zugewiesen + label_last_login: Letzte Anmeldung + label_registered_on: Angemeldet am + label_activity: Aktivität + label_overall_activity: Aktivitäten aller Projekte anzeigen + label_user_activity: "Aktivität von %{value}" + label_new: Neu + label_logged_as: Angemeldet als + label_environment: Umgebung + label_authentication: Authentifizierung + label_auth_source: Authentifizierungs-Modus + label_auth_source_new: Neuer Authentifizierungs-Modus + label_auth_source_plural: Authentifizierungs-Arten + label_subproject_plural: Unterprojekte + label_subproject_new: Neues Unterprojekt + label_and_its_subprojects: "%{value} und dessen Unterprojekte" + label_min_max_length: Länge (Min. - Max.) + label_list: Liste + label_date: Datum + label_integer: Zahl + label_float: Fließkommazahl + label_boolean: Boolean + label_string: Text + label_text: Langer Text + label_attribute: Attribut + label_attribute_plural: Attribute + label_download: "%{count} Download" + label_download_plural: "%{count} Downloads" + label_no_data: Nichts anzuzeigen + label_change_status: Statuswechsel + label_history: Historie + label_attachment: Datei + label_attachment_new: Neue Datei + label_attachment_delete: Anhang löschen + label_attachment_plural: Dateien + label_file_added: Datei hinzugefügt + label_report: Bericht + label_report_plural: Berichte + label_news: News + label_news_new: News hinzufügen + label_news_plural: News + label_news_latest: Letzte News + label_news_view_all: Alle News anzeigen + label_news_added: News hinzugefügt + label_settings: Konfiguration + label_overview: Übersicht + label_version: Version + label_version_new: Neue Version + label_version_plural: Versionen + label_close_versions: Vollständige Versionen schließen + label_confirmation: Bestätigung + label_export_to: "Auch abrufbar als:" + label_read: Lesen... + label_public_projects: Öffentliche Projekte + label_open_issues: offen + label_open_issues_plural: offen + label_closed_issues: geschlossen + label_closed_issues_plural: geschlossen + label_x_open_issues_abbr_on_total: + zero: 0 offen / %{total} + one: 1 offen / %{total} + other: "%{count} offen / %{total}" + label_x_open_issues_abbr: + zero: 0 offen + one: 1 offen + other: "%{count} offen" + label_x_closed_issues_abbr: + zero: 0 geschlossen + one: 1 geschlossen + other: "%{count} geschlossen" + label_total: Gesamtzahl + label_permissions: Berechtigungen + label_current_status: Gegenwärtiger Status + label_new_statuses_allowed: Neue Berechtigungen + label_all: alle + label_none: kein + label_nobody: Niemand + label_next: Weiter + label_previous: Zurück + label_used_by: Benutzt von + label_details: Details + label_add_note: Kommentar hinzufügen + label_per_page: Pro Seite + label_calendar: Kalender + label_months_from: Monate ab + label_gantt: Gantt-Diagramm + label_internal: Intern + label_last_changes: "%{count} letzte Änderungen" + label_change_view_all: Alle Änderungen anzeigen + label_personalize_page: Diese Seite anpassen + label_comment: Kommentar + label_comment_plural: Kommentare + label_x_comments: + zero: keine Kommentare + one: 1 Kommentar + other: "%{count} Kommentare" + label_comment_add: Kommentar hinzufügen + label_comment_added: Kommentar hinzugefügt + label_comment_delete: Kommentar löschen + label_query: Benutzerdefinierte Abfrage + label_query_plural: Benutzerdefinierte Berichte + label_query_new: Neuer Bericht + label_filter_add: Filter hinzufügen + label_filter_plural: Filter + label_equals: ist + label_not_equals: ist nicht + label_in_less_than: in weniger als + label_in_more_than: in mehr als + label_greater_or_equal: ">=" + label_less_or_equal: "<=" + label_in: an + label_today: heute + label_all_time: gesamter Zeitraum + label_yesterday: gestern + label_this_week: aktuelle Woche + label_last_week: vorige Woche + label_last_n_days: "die letzten %{count} Tage" + label_this_month: aktueller Monat + label_last_month: voriger Monat + label_this_year: aktuelles Jahr + label_date_range: Zeitraum + label_less_than_ago: vor weniger als + label_more_than_ago: vor mehr als + label_ago: vor + label_contains: enthält + label_not_contains: enthält nicht + label_day_plural: Tage + label_repository: Projektarchiv + label_repository_plural: Projektarchive + label_browse: Codebrowser + label_modification: "%{count} Änderung" + label_modification_plural: "%{count} Änderungen" + label_branch: Zweig + label_tag: Markierung + label_revision: Revision + label_revision_plural: Revisionen + label_revision_id: Revision %{value} + 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 + label_view_revisions: Revisionen anzeigen + label_view_all_revisions: Alle Revisionen anzeigen + label_max_size: Maximale Größe + label_sort_highest: An den Anfang + label_sort_higher: Eins höher + label_sort_lower: Eins tiefer + label_sort_lowest: Ans Ende + label_roadmap: Roadmap + label_roadmap_due_in: "Fällig in %{value}" + label_roadmap_overdue: "%{value} verspätet" + label_roadmap_no_issues: Keine Tickets für diese Version + label_search: Suche + label_result_plural: Resultate + label_all_words: Alle Wörter + label_wiki: Wiki + label_wiki_edit: Wiki-Bearbeitung + label_wiki_edit_plural: Wiki-Bearbeitungen + label_wiki_page: Wiki-Seite + label_wiki_page_plural: Wiki-Seiten + label_index_by_title: Seiten nach Titel sortiert + label_index_by_date: Seiten nach Datum sortiert + label_current_version: Gegenwärtige Version + label_preview: Vorschau + label_feed_plural: Feeds + label_changes_details: Details aller Änderungen + label_issue_tracking: Tickets + label_spent_time: Aufgewendete Zeit + label_overall_spent_time: Aufgewendete Zeit aller Projekte anzeigen + label_f_hour: "%{value} Stunde" + label_f_hour_plural: "%{value} Stunden" + label_time_tracking: Zeiterfassung + label_change_plural: Änderungen + label_statistics: Statistiken + label_commits_per_month: Übertragungen pro Monat + label_commits_per_author: Übertragungen pro Autor + label_view_diff: Unterschiede anzeigen + label_diff_inline: einspaltig + label_diff_side_by_side: nebeneinander + label_options: Optionen + label_copy_workflow_from: Workflow kopieren von + label_permissions_report: Berechtigungsübersicht + label_watched_issues: Beobachtete Tickets + label_related_issues: Zugehörige Tickets + label_applied_status: Zugewiesener Status + label_loading: Lade... + 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 + label_follows: folgt + label_end_to_start: Ende - Anfang + label_end_to_end: Ende - Ende + label_start_to_start: Anfang - Anfang + label_start_to_end: Anfang - Ende + label_stay_logged_in: Angemeldet bleiben + label_disabled: gesperrt + label_show_completed_versions: Abgeschlossene Versionen anzeigen + label_me: ich + label_board: Forum + label_board_new: Neues Forum + label_board_plural: Foren + label_board_locked: Gesperrt + label_board_sticky: Wichtig (immer oben) + label_topic_plural: Themen + label_message_plural: Forenbeiträge + label_message_last: Letzter Forenbeitrag + label_message_new: Neues Thema + label_message_posted: Forenbeitrag hinzugefügt + label_reply_plural: Antworten + label_send_information: Sende Kontoinformationen an Benutzer + label_year: Jahr + label_month: Monat + label_week: Woche + label_date_from: Von + label_date_to: Bis + label_language_based: Sprachabhängig + label_sort_by: "Sortiert nach %{value}" + label_send_test_email: Test-E-Mail senden + label_feeds_access_key: RSS-Zugriffsschlüssel + label_missing_feeds_access_key: Der RSS-Zugriffsschlüssel fehlt. + label_feeds_access_key_created_on: "Atom-Zugriffsschlüssel vor %{value} erstellt" + label_module_plural: Module + label_added_time_by: "Von %{author} vor %{age} hinzugefügt" + label_updated_time_by: "Von %{author} vor %{age} aktualisiert" + label_updated_time: "Vor %{value} aktualisiert" + label_jump_to_a_project: Zu einem Projekt springen... + label_file_plural: Dateien + label_changeset_plural: Changesets + label_default_columns: Standard-Spalten + label_no_change_option: (Keine Änderung) + label_bulk_edit_selected_issues: Alle ausgewählten Tickets bearbeiten + label_theme: Stil + label_default: Standard + label_search_titles_only: Nur Titel durchsuchen + label_user_mail_option_all: "Für alle Ereignisse in all meinen Projekten" + label_user_mail_option_selected: "Für alle Ereignisse in den ausgewählten Projekten..." + label_user_mail_no_self_notified: "Ich möchte nicht über Änderungen benachrichtigt werden, die ich selbst durchführe." + label_registration_activation_by_email: Kontoaktivierung durch E-Mail + label_registration_manual_activation: Manuelle Kontoaktivierung + label_registration_automatic_activation: Automatische Kontoaktivierung + label_display_per_page: "Pro Seite: %{value}" + label_age: Geändert vor + label_change_properties: Eigenschaften ändern + label_general: Allgemein + label_more: Mehr + label_scm: Versionskontrollsystem + label_plugins: Plugins + label_ldap_authentication: LDAP-Authentifizierung + label_downloads_abbr: D/L + label_optional_description: Beschreibung (optional) + label_add_another_file: Eine weitere Datei hinzufügen + 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 + label_example: Beispiel + label_display: Anzeige + label_sort: Sortierung + label_ascending: Aufsteigend + label_descending: Absteigend + label_date_from_to: von %{start} bis %{end} + label_wiki_content_added: Die Wiki-Seite wurde erfolgreich hinzugefügt. + label_wiki_content_updated: Die Wiki-Seite wurde erfolgreich aktualisiert. + label_group: Gruppe + label_group_plural: Gruppen + label_group_new: Neue Gruppe + label_time_entry_plural: Benötigte Zeit + label_version_sharing_none: Nicht gemeinsam verwenden + label_version_sharing_descendants: Mit Unterprojekten + label_version_sharing_hierarchy: Mit Projekthierarchie + label_version_sharing_tree: Mit Projektbaum + label_version_sharing_system: Mit allen Projekten + label_update_issue_done_ratios: Ticket-Fortschritt aktualisieren + label_copy_source: Quelle + label_copy_target: Ziel + label_copy_same_as_target: So wie das Ziel + label_display_used_statuses_only: Zeige nur Status an, die von diesem Tracker verwendet werden + label_api_access_key: API-Zugriffsschlüssel + label_missing_api_access_key: Der API-Zugriffsschlüssel fehlt. + label_api_access_key_created_on: Der API-Zugriffsschlüssel wurde vor %{value} erstellt + label_profile: Profil + label_subtask_plural: Unteraufgaben + label_project_copy_notifications: Sende Mailbenachrichtigungen beim Kopieren des Projekts. + label_principal_search: "Nach Benutzer oder Gruppe suchen:" + label_user_search: "Nach Benutzer suchen:" + + button_login: Anmelden + button_submit: OK + button_save: Speichern + button_check_all: Alles auswählen + button_uncheck_all: Alles abwählen + button_delete: Löschen + button_create: Anlegen + button_create_and_continue: Anlegen und weiter + button_test: Testen + button_edit: Bearbeiten + button_edit_associated_wikipage: "Zugehörige Wikiseite bearbeiten: %{page_title}" + button_add: Hinzufügen + button_change: Wechseln + button_apply: Anwenden + button_clear: Zurücksetzen + button_lock: Sperren + button_unlock: Entsperren + button_download: Download + button_list: Liste + button_view: Anzeigen + button_move: Verschieben + button_move_and_follow: Verschieben und Ticket anzeigen + button_back: Zurück + button_cancel: Abbrechen + button_activate: Aktivieren + button_sort: Sortieren + button_log_time: Aufwand buchen + button_rollback: Auf diese Version zurücksetzen + button_watch: Beobachten + button_unwatch: Nicht beobachten + button_reply: Antworten + button_archive: Archivieren + button_unarchive: Entarchivieren + button_reset: Zurücksetzen + button_rename: Umbenennen + button_change_password: Kennwort ändern + button_copy: Kopieren + button_copy_and_follow: Kopieren und Ticket anzeigen + button_annotate: Annotieren + button_update: Bearbeiten + button_configure: Konfigurieren + button_quote: Zitieren + button_duplicate: Duplizieren + button_show: Anzeigen + + status_active: aktiv + status_registered: angemeldet + status_locked: gesperrt + + version_status_open: offen + version_status_locked: gesperrt + version_status_closed: abgeschlossen + + field_active: Aktiv + + text_select_mail_notifications: Bitte wählen Sie die Aktionen aus, für die eine Mailbenachrichtigung gesendet werden soll. + 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 (%{value}) werden ebenfalls gelöscht." + text_workflow_edit: Workflow zum Bearbeiten auswählen + text_are_you_sure: Sind Sie sicher? + text_are_you_sure_with_children: "Lösche Aufgabe und alle Unteraufgaben?" + text_journal_changed: "%{label} wurde von %{old} zu %{new} geändert" + text_journal_set_to: "%{label} wurde auf %{value} gesetzt" + text_journal_deleted: "%{label} %{old} wurde gelöscht" + text_journal_added: "%{label} %{value} wurde hinzugefügt" + text_tip_issue_begin_day: Aufgabe, die an diesem Tag beginnt + text_tip_issue_end_day: Aufgabe, die an diesem Tag endet + text_tip_issue_begin_end_day: Aufgabe, die an diesem Tag beginnt und endet + text_project_identifier_info: 'Kleinbuchstaben (a-z), Ziffern, Binde- und Unterstriche erlaubt.
Einmal gespeichert, kann die Kennung nicht mehr geändert werden.' + text_caracters_maximum: "Max. %{count} Zeichen." + text_caracters_minimum: "Muss mindestens %{count} Zeichen lang sein." + text_length_between: "Länge zwischen %{min} und %{max} Zeichen." + text_tracker_no_workflow: Kein Workflow für diesen Tracker definiert. + text_unallowed_characters: Nicht erlaubte Zeichen + text_comma_separated: Mehrere Werte erlaubt (durch Komma getrennt). + text_line_separated: Mehrere Werte sind erlaubt (eine Zeile pro Wert). + text_issues_ref_in_commit_messages: Ticket-Beziehungen und -Status in Commit-Log-Meldungen + text_issue_added: "Ticket %{id} wurde erstellt von %{author}." + text_issue_updated: "Ticket %{id} wurde aktualisiert von %{author}." + text_wiki_destroy_confirmation: Sind Sie sicher, dass Sie dieses Wiki mit sämtlichem Inhalt löschen möchten? + text_issue_category_destroy_question: "Einige Tickets (%{count}) sind dieser Kategorie zugeodnet. Was möchten Sie tun?" + text_issue_category_destroy_assignments: Kategorie-Zuordnung entfernen + text_issue_category_reassign_to: Tickets dieser Kategorie zuordnen + text_user_mail_option: "Für nicht ausgewählte Projekte werden Sie nur Benachrichtigungen für Dinge erhalten, die Sie beobachten oder an denen Sie beteiligt sind (z. B. Tickets, deren Autor Sie sind oder die Ihnen zugewiesen sind)." + text_no_configuration_data: "Rollen, Tracker, Ticket-Status und Workflows wurden noch nicht konfiguriert.\nEs ist sehr zu empfehlen, die Standard-Konfiguration zu laden. Sobald sie geladen ist, können Sie sie abändern." + text_load_default_configuration: Standard-Konfiguration laden + text_status_changed_by_changeset: "Status geändert durch Changeset %{value}." + text_issues_destroy_confirmation: 'Sind Sie sicher, dass Sie die ausgewählten Tickets löschen möchten?' + text_select_project_modules: 'Bitte wählen Sie die Module aus, die in diesem Projekt aktiviert sein sollen:' + text_default_administrator_account_changed: Administrator-Kennwort geändert + text_file_repository_writable: Verzeichnis für Dateien beschreibbar + text_plugin_assets_writable: Verzeichnis für Plugin-Assets beschreibbar + text_rmagick_available: RMagick verfügbar (optional) + text_destroy_time_entries_question: Es wurden bereits %{hours} Stunden auf dieses Ticket gebucht. Was soll mit den Aufwänden geschehen? + 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: "%{value} schrieb:" + text_enumeration_destroy_question: "%{count} Objekt(e) 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/configuration.yml vor und starten Sie die Applikation neu." + text_repository_usernames_mapping: "Bitte legen Sie die Zuordnung der Redmine-Benutzer zu den Benutzernamen der Commit-Log-Meldungen des Projektarchivs fest.\nBenutzer mit identischen Redmine- und Projektarchiv-Benutzernamen oder -E-Mail-Adressen werden automatisch zugeordnet." + text_diff_truncated: '... Dieser Diff wurde abgeschnitten, weil er die maximale Anzahl anzuzeigender Zeilen überschreitet.' + text_custom_field_possible_values_info: 'Eine Zeile pro Wert' + text_wiki_page_destroy_question: "Diese Seite hat %{descendants} Unterseite(n). Was möchten Sie tun?" + text_wiki_page_nullify_children: Verschiebe die Unterseiten auf die oberste Ebene + text_wiki_page_destroy_children: Lösche alle Unterseiten + text_wiki_page_reassign_children: Ordne die Unterseiten dieser Seite zu + text_own_membership_delete_confirmation: "Sie sind dabei, einige oder alle Ihre Berechtigungen zu entfernen. Es ist möglich, dass Sie danach das Projekt nicht mehr ansehen oder bearbeiten dürfen.\nSind Sie sicher, dass Sie dies tun möchten?" + text_zoom_in: Zoom in + text_zoom_out: Zoom out + + default_role_manager: Manager + default_role_developer: Entwickler + default_role_reporter: Reporter + default_tracker_bug: Fehler + default_tracker_feature: Feature + default_tracker_support: Unterstützung + default_issue_status_new: Neu + default_issue_status_in_progress: In Bearbeitung + default_issue_status_resolved: Gelöst + default_issue_status_feedback: Feedback + default_issue_status_closed: Erledigt + default_issue_status_rejected: Abgewiesen + default_doc_category_user: Benutzerdokumentation + default_doc_category_tech: Technische Dokumentation + default_priority_low: Niedrig + default_priority_normal: Normal + default_priority_high: Hoch + default_priority_urgent: Dringend + default_priority_immediate: Sofort + default_activity_design: Design + default_activity_development: Entwicklung + + enumeration_issue_priorities: Ticket-Prioritäten + enumeration_doc_categories: Dokumentenkategorien + enumeration_activities: Aktivitäten (Zeiterfassung) + enumeration_system_activity: System-Aktivität + + field_text: Textfeld + label_user_mail_option_only_owner: Nur für Aufgaben die ich angelegt habe + setting_default_notification_option: Standard Benachrichtigungsoptionen + label_user_mail_option_only_my_events: Nur für Aufgaben die ich beobachte oder an welchen ich mitarbeite + label_user_mail_option_only_assigned: Nur für Aufgaben für die ich zuständig bin. + notice_not_authorized_archived_project: Das Projekt wurde archiviert und ist daher nicht nicht verfügbar. + label_user_mail_option_none: keine Ereignisse + field_member_of_group: Zuständigkeitsgruppe + field_assigned_to_role: Zuständigkeitsrolle + field_visible: Sichtbar + setting_emails_header: E-Mail Betreffzeile + setting_commit_logtime_activity_id: Aktivität für die Zeiterfassung + text_time_logged_by_changeset: Angewendet in Changeset %{value}. + setting_commit_logtime_enabled: Aktiviere Zeitlogging + notice_gantt_chart_truncated: Die Grafik ist unvollständig, da das Maximum der anzeigbaren Aufgaben überschritten wurde (%{max}) + setting_gantt_items_limit: Maximale Anzahl von Aufgaben die im Gantt-Chart angezeigt werden. + field_warn_on_leaving_unsaved: vor dem Verlassen einer Seite mit ungesichertem Text im Editor warnen + text_warn_on_leaving_unsaved: Die aktuellen Änderungen gehen verloren, wenn Sie diese Seite verlassen. + label_my_queries: Meine eigenen Abfragen + text_journal_changed_no_detail: "%{label} aktualisiert" + label_news_comment_added: Kommentar zu einer News hinzugefügt + button_expand_all: Alle ausklappen + button_collapse_all: Alle einklappen + label_additional_workflow_transitions_for_assignee: Zusätzliche Berechtigungen wenn der Benutzer der Zugewiesene ist + label_additional_workflow_transitions_for_author: Zusätzliche Berechtigungen wenn der Benutzer der Autor ist + label_bulk_edit_selected_time_entries: Ausgewählte Zeitaufwände bearbeiten + text_time_entries_destroy_confirmation: Sind Sie sicher, dass Sie die ausgewählten Zeitaufwände löschen möchten? + label_role_anonymous: Anonymous + label_role_non_member: Nichtmitglied + label_issue_note_added: Notiz hinzugefügt + label_issue_status_updated: Status aktualisiert + label_issue_priority_updated: Priorität aktualisiert + label_issues_visibility_own: Tickets die folgender User erstellt hat oder die ihm zugewiesen sind + field_issues_visibility: Ticket Sichtbarkeit + label_issues_visibility_all: Alle Tickets + permission_set_own_issues_private: Eigene Tickets privat oder öffentlich markieren + field_is_private: Privat + permission_set_issues_private: Tickets privat oder öffentlich markieren + label_issues_visibility_public: Alle öffentlichen Tickets + text_issues_destroy_descendants_confirmation: Dies wird auch %{count} Unteraufgabe/n löschen. + field_commit_logs_encoding: Kodierung der Commit-Log-Meldungen + field_scm_path_encoding: Pfad Kodierung + text_scm_path_encoding_note: "Standard: UTF-8" + field_path_to_repository: Pfad zum repository + field_root_directory: Wurzelverzeichnis + field_cvs_module: Modul + field_cvsroot: CVSROOT + text_mercurial_repository_note: Lokales repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Kommando + text_scm_command_version: Version + label_git_report_last_commit: Bericht des letzten Commits für Dateien und Verzeichnisse + text_scm_config: Die SCM-Kommandos können in der in config/configuration.yml konfiguriert werden. Redmine muss anschließend neu gestartet werden. + text_scm_command_not_available: Scm Kommando ist nicht verfügbar. Bitte prüfen Sie die Einstellungen im Administrationspanel. + + notice_issue_successful_create: Ticket %{id} erstellt. + label_between: zwischen + setting_issue_group_assignment: Erlaubt die Ticket-Zuweisung an Gruppen + label_diff: diff + text_git_repository_note: Repository steht für sich alleine (bare) und liegt lokal (z.B. /gitrepo, c:\gitrepo) + + description_filter: Filter + description_search: Suchfeld + description_choose_project: Projekte + description_project_scope: Suchbereich + description_notes: Kommentare + description_message_content: Nachrichteninhalt + description_query_sort_criteria_attribute: Sortierattribut + description_query_sort_criteria_direction: Sortierrichtung + description_user_mail_notification: Mailbenachrichtigungseinstellung + description_available_columns: Verfügbare Spalten + description_selected_columns: Ausgewählte Spalten + description_issue_category_reassign: Neue Kategorie wählen + description_wiki_subpages_reassign: Neue Elternseite wählen + description_date_range_list: Zeitraum aus einer Liste wählen + description_date_range_interval: Zeitraum durch Start- und Enddatum festlegen + description_date_from: Startdatum eintragen + description_date_to: Enddatum eintragen + + label_parent_revision: Parent + label_child_revision: Child + error_scm_annotate_big_text_file: Der Eintrag kann nicht umgesetzt werden, da er die maximale Textlänge überschreitet. + setting_default_issue_start_date_to_creation_date: Aktuelles Datum als Beginn für neue Tickets verwenden + button_edit_section: Diesen Bereich bearbeiten + setting_repositories_encodings: Encoding von Anhängen und Repositories + description_all_columns: Alle Spalten + button_export: Exportieren + label_export_options: "%{export_format} Export-Eigenschaften" + error_attachment_too_big: Diese Datei kann nicht hochgeladen werden, da sie die maximale Dateigröße von (%{max_size}) überschreitet. + notice_failed_to_save_time_entries: "Gescheitert %{count} Zeiteinträge für %{total} von ausgewählten: %{ids} zu speichern." + label_x_issues: + zero: 0 Tickets + one: 1 Ticket + other: "%{count} Tickets" + label_repository_new: Neues Repository + field_repository_is_default: Haupt-Repository + label_copy_attachments: Anhänge Kopieren + label_item_position: "%{position}/%{count}" + label_completed_versions: Abgeschlossene Versionen + field_multiple: Mehrere Werte + setting_commit_cross_project_ref: Erlauben auf Tickets aller anderen Projekte zu referenzieren + text_issue_conflict_resolution_add_notes: Meine Änderungen übernehmen und alle anderen Änderungen verwerfen + text_issue_conflict_resolution_overwrite: Meine Änderungen trotzdem übernehmen (vorherige Notizen bleiben erhalten aber manche können überschrieben werden) + notice_issue_update_conflict: Das Ticket wurde von einem anderen Nutzer überarbeitet während Ihrer Bearbeitung. + text_issue_conflict_resolution_cancel: Meine Änderungen verwerfen und %{link} neu anzeigen + permission_manage_related_issues: Zugehörige Tickets verwalten + field_ldap_filter: LDAP Filter + label_search_for_watchers: Nach hinzufügbaren Beobachtern suchen + notice_account_deleted: Ihr Benutzerkonto wurde unwiderruflich gelöscht. + setting_unsubscribe: Erlaubt Benutzern das eigene Benutzerkonto zu löschen + button_delete_my_account: Mein Benutzerkonto löschen + text_account_destroy_confirmation: Möchten Sie wirklich fortfahren?\nIhr Benutzerkonto wird für immer gelöscht und kann nicht wiederhergestellt werden. --- app/views/timelog/edit.html.erb Thu Jan 15 10:12:56 1970 +++ app/views/timelog/edit.html.erb Thu Jan 15 10:12:56 1970 @@ -1,8 +1,6 @@ -<%= javascript_include_tag 'timelog.js' %> - -

<%= l(:label_spent_time) %>

- -<%= labelled_form_for @time_entry, :url => project_time_entry_path(@time_entry.project, @time_entry) do |f| %> - <%= render :partial => 'form', :locals => {:f => f} %> - <%= submit_tag l(:button_save) %> -<% end %> +

<%= l(:label_spent_time) %>

+ +<%= labelled_form_for @time_entry, :url => project_time_entry_path(@time_entry.project, @time_entry) do |f| %> + <%= render :partial => 'form', :locals => {:f => f} %> + <%= submit_tag l(:button_save) %> +<% end %> --- config/locales/en.yml Thu Jan 15 10:12:56 1970 +++ config/locales/en.yml Thu Jan 15 10:12:56 1970 @@ -1,1035 +1,1029 @@ -en: - # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) - direction: ltr - date: - formats: - # Use the strftime parameters for formats. - # When no format has been given, it uses default. - # You can provide other formats here if you like! - default: "%m/%d/%Y" - short: "%b %d" - long: "%B %d, %Y" - - day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday] - abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat] - - # Don't forget the nil at the beginning; there's no such thing as a 0th month - month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December] - abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec] - # Used in date_select and datime_select. - order: - - :year - - :month - - :day - - time: - formats: - default: "%m/%d/%Y %I:%M %p" - time: "%I:%M %p" - short: "%d %b %H:%M" - long: "%B %d, %Y %H:%M" - am: "am" - pm: "pm" - - datetime: - distance_in_words: - half_a_minute: "half a minute" - less_than_x_seconds: - one: "less than 1 second" - other: "less than %{count} seconds" - x_seconds: - one: "1 second" - other: "%{count} seconds" - less_than_x_minutes: - one: "less than a minute" - other: "less than %{count} minutes" - x_minutes: - one: "1 minute" - other: "%{count} minutes" - about_x_hours: - one: "about 1 hour" - other: "about %{count} hours" - x_days: - one: "1 day" - other: "%{count} days" - about_x_months: - one: "about 1 month" - other: "about %{count} months" - x_months: - one: "1 month" - other: "%{count} months" - about_x_years: - one: "about 1 year" - other: "about %{count} years" - over_x_years: - one: "over 1 year" - other: "over %{count} years" - almost_x_years: - one: "almost 1 year" - other: "almost %{count} years" - - number: - format: - separator: "." - delimiter: "" - precision: 3 - - human: - format: - delimiter: "" - precision: 3 - storage_units: - format: "%n %u" - units: - byte: - one: "Byte" - other: "Bytes" - kb: "KB" - mb: "MB" - gb: "GB" - tb: "TB" - -# Used in array.to_sentence. - support: - array: - sentence_connector: "and" - skip_last_comma: false - - activerecord: - errors: - template: - header: - one: "1 error prohibited this %{model} from being saved" - other: "%{count} errors prohibited this %{model} from being saved" - messages: - inclusion: "is not included in the list" - exclusion: "is reserved" - invalid: "is invalid" - confirmation: "doesn't match confirmation" - accepted: "must be accepted" - empty: "can't be empty" - blank: "can't be blank" - too_long: "is too long (maximum is %{count} characters)" - too_short: "is too short (minimum is %{count} characters)" - wrong_length: "is the wrong length (should be %{count} characters)" - taken: "has already been taken" - not_a_number: "is not a number" - not_a_date: "is not a valid date" - greater_than: "must be greater than %{count}" - greater_than_or_equal_to: "must be greater than or equal to %{count}" - equal_to: "must be equal to %{count}" - less_than: "must be less than %{count}" - less_than_or_equal_to: "must be less than or equal to %{count}" - odd: "must be odd" - even: "must be even" - greater_than_start_date: "must be greater than start date" - not_same_project: "doesn't belong to the same project" - circular_dependency: "This relation would create a circular dependency" - cant_link_an_issue_with_a_descendant: "An issue cannot be linked to one of its subtasks" - - actionview_instancetag_blank_option: Please select - - general_text_No: 'No' - general_text_Yes: 'Yes' - general_text_no: 'no' - general_text_yes: 'yes' - general_lang_name: 'English' - general_csv_separator: ',' - general_csv_decimal_separator: '.' - general_csv_encoding: ISO-8859-1 - general_pdf_encoding: UTF-8 - general_first_day_of_week: '7' - - notice_account_updated: Account was successfully updated. - notice_account_invalid_creditentials: Invalid user or password - notice_account_password_updated: Password was successfully updated. - notice_account_wrong_password: Wrong password - notice_account_register_done: Account was successfully created. To activate your account, click on the link that was emailed to you. - notice_account_unknown_email: Unknown user. - notice_can_t_change_password: This account uses an external authentication source. Impossible to change the password. - notice_account_lost_email_sent: An email with instructions to choose a new password has been sent to you. - notice_account_activated: Your account has been activated. You can now log in. - notice_successful_create: Successful creation. - notice_successful_update: Successful update. - notice_successful_delete: Successful deletion. - notice_successful_connection: Successful connection. - notice_file_not_found: The page you were trying to access doesn't exist or has been removed. - notice_locking_conflict: Data has been updated by another user. - notice_not_authorized: You are not authorized to access this page. - notice_not_authorized_archived_project: The project you're trying to access has been archived. - notice_email_sent: "An email was sent to %{value}" - notice_email_error: "An error occurred while sending mail (%{value})" - notice_feeds_access_key_reseted: Your RSS access key was reset. - notice_api_access_key_reseted: Your API access key was reset. - notice_failed_to_save_issues: "Failed to save %{count} issue(s) on %{total} selected: %{ids}." - notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}." - notice_failed_to_save_members: "Failed to save member(s): %{errors}." - notice_no_issue_selected: "No issue is selected! Please, check the issues you want to edit." - notice_account_pending: "Your account was created and is now pending administrator approval." - notice_default_data_loaded: Default configuration successfully loaded. - notice_unable_delete_version: Unable to delete version. - notice_unable_delete_time_entry: Unable to delete time log entry. - notice_issue_done_ratios_updated: Issue done ratios updated. - notice_gantt_chart_truncated: "The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})" - notice_issue_successful_create: "Issue %{id} created." - notice_issue_update_conflict: "The issue has been updated by an other user while you were editing it." - notice_account_deleted: "Your account has been permanently deleted." - - error_can_t_load_default_data: "Default configuration could not be loaded: %{value}" - error_scm_not_found: "The entry or revision was not found in the repository." - error_scm_command_failed: "An error occurred when trying to access the repository: %{value}" - error_scm_annotate: "The entry does not exist or cannot be annotated." - error_scm_annotate_big_text_file: "The entry cannot be annotated, as it exceeds the maximum text file size." - error_issue_not_found_in_project: 'The issue was not found or does not belong to this project' - error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.' - error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").' - error_can_not_delete_custom_field: Unable to delete custom field - error_can_not_delete_tracker: "This tracker contains issues and cannot be deleted." - error_can_not_remove_role: "This role is in use and cannot be deleted." - error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version cannot be reopened' - error_can_not_archive_project: This project cannot be archived - error_issue_done_ratios_not_updated: "Issue done ratios not updated." - error_workflow_copy_source: 'Please select a source tracker or role' - error_workflow_copy_target: 'Please select target tracker(s) and role(s)' - error_unable_delete_issue_status: 'Unable to delete issue status' - error_unable_to_connect: "Unable to connect (%{value})" - error_attachment_too_big: "This file cannot be uploaded because it exceeds the maximum allowed file size (%{max_size})" - warning_attachments_not_saved: "%{count} file(s) could not be saved." - - mail_subject_lost_password: "Your %{value} password" - mail_body_lost_password: 'To change your password, click on the following link:' - mail_subject_register: "Your %{value} account activation" - mail_body_register: 'To activate your account, click on the following link:' - mail_body_account_information_external: "You can use your %{value} account to log in." - mail_body_account_information: Your account information - mail_subject_account_activation_request: "%{value} account activation request" - mail_body_account_activation_request: "A new user (%{value}) has registered. The account is pending your approval:" - mail_subject_reminder: "%{count} issue(s) due in the next %{days} days" - mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:" - mail_subject_wiki_content_added: "'%{id}' wiki page has been added" - mail_body_wiki_content_added: "The '%{id}' wiki page has been added by %{author}." - mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated" - mail_body_wiki_content_updated: "The '%{id}' wiki page has been updated by %{author}." - - gui_validation_error: 1 error - gui_validation_error_plural: "%{count} errors" - - field_name: Name - field_description: Description - field_summary: Summary - field_is_required: Required - field_firstname: First name - field_lastname: Last name - field_mail: Email - field_filename: File - field_filesize: Size - field_downloads: Downloads - field_author: Author - field_created_on: Created - field_updated_on: Updated - field_field_format: Format - field_is_for_all: For all projects - field_possible_values: Possible values - field_regexp: Regular expression - field_min_length: Minimum length - field_max_length: Maximum length - field_value: Value - field_category: Category - field_title: Title - field_project: Project - field_issue: Issue - field_status: Status - field_notes: Notes - field_is_closed: Issue closed - field_is_default: Default value - field_tracker: Tracker - field_subject: Subject - field_due_date: Due date - field_assigned_to: Assignee - field_priority: Priority - field_fixed_version: Target version - field_user: User - field_principal: Principal - field_role: Role - field_homepage: Homepage - field_is_public: Public - field_parent: Subproject of - field_is_in_roadmap: Issues displayed in roadmap - field_login: Login - field_mail_notification: Email notifications - field_admin: Administrator - field_last_login_on: Last connection - field_language: Language - field_effective_date: Date - field_password: Password - field_new_password: New password - field_password_confirmation: Confirmation - field_version: Version - field_type: Type - field_host: Host - field_port: Port - field_account: Account - field_base_dn: Base DN - field_attr_login: Login attribute - field_attr_firstname: Firstname attribute - field_attr_lastname: Lastname attribute - field_attr_mail: Email attribute - field_onthefly: On-the-fly user creation - field_start_date: Start date - field_done_ratio: "% Done" - field_auth_source: Authentication mode - field_hide_mail: Hide my email address - field_comments: Comment - field_url: URL - field_start_page: Start page - field_subproject: Subproject - field_hours: Hours - field_activity: Activity - field_spent_on: Date - field_from: Start - field_to: End - field_pause: Pause (min) - field_identifier: Identifier - field_is_filter: Used as a filter - field_issue_to: Related issue - field_delay: Delay - field_assignable: Issues can be assigned to this role - field_redirect_existing_links: Redirect existing links - field_estimated_hours: Estimated time - field_column_names: Columns - field_time_entries: Log time - field_time_zone: Time zone - field_searchable: Searchable - field_default_value: Default value - field_comments_sorting: Display comments - field_parent_title: Parent page - field_editable: Editable - field_watcher: Watcher - field_identity_url: OpenID URL - field_content: Content - field_group_by: Group results by - field_sharing: Sharing - field_parent_issue: Parent task - field_member_of_group: "Assignee's group" - field_assigned_to_role: "Assignee's role" - field_text: Text field - field_visible: Visible - field_warn_on_leaving_unsaved: "Warn me when leaving a page with unsaved text" - field_issues_visibility: Issues visibility - field_is_private: Private - field_commit_logs_encoding: Commit messages encoding - field_scm_path_encoding: Path encoding - field_path_to_repository: Path to repository - field_root_directory: Root directory - field_cvsroot: CVSROOT - field_cvs_module: Module - field_repository_is_default: Main repository - field_multiple: Multiple values - field_ldap_filter: LDAP filter - - setting_app_title: Application title - setting_app_subtitle: Application subtitle - setting_welcome_text: Welcome text - setting_default_language: Default language - setting_login_required: Authentication required - setting_self_registration: Self-registration - setting_attachment_max_size: Maximum attachment size - setting_issues_export_limit: Issues export limit - setting_mail_from: Emission email address - setting_bcc_recipients: Blind carbon copy recipients (bcc) - setting_plain_text_mail: Plain text mail (no HTML) - setting_host_name: Host name and path - setting_text_formatting: Text formatting - setting_wiki_compression: Wiki history compression - setting_feeds_limit: Maximum number of items in Atom feeds - setting_default_projects_public: New projects are public by default - setting_autofetch_changesets: Fetch commits automatically - setting_sys_api_enabled: Enable WS for repository management - setting_commit_ref_keywords: Referencing keywords - setting_commit_fix_keywords: Fixing keywords - setting_autologin: Autologin - setting_date_format: Date format - setting_time_format: Time format - setting_cross_project_issue_relations: Allow cross-project issue relations - setting_issue_list_default_columns: Default columns displayed on the issue list - setting_repositories_encodings: Attachments and repositories encodings - setting_emails_header: Emails header - setting_emails_footer: Emails footer - setting_protocol: Protocol - setting_per_page_options: Objects per page options - setting_user_format: Users display format - setting_activity_days_default: Days displayed on project activity - setting_display_subprojects_issues: Display subprojects issues on main projects by default - setting_enabled_scm: Enabled SCM - setting_mail_handler_body_delimiters: "Truncate emails after one of these lines" - setting_mail_handler_api_enabled: Enable WS for incoming emails - setting_mail_handler_api_key: API key - setting_sequential_project_identifiers: Generate sequential project identifiers - setting_gravatar_enabled: Use Gravatar user icons - setting_gravatar_default: Default Gravatar image - setting_diff_max_lines_displayed: Maximum number of diff lines displayed - setting_file_max_size_displayed: Maximum size of text files displayed inline - setting_repository_log_display_limit: Maximum number of revisions displayed on file log - setting_openid: Allow OpenID login and registration - setting_password_min_length: Minimum password length - setting_new_project_user_role_id: Role given to a non-admin user who creates a project - setting_default_projects_modules: Default enabled modules for new projects - setting_issue_done_ratio: Calculate the issue done ratio with - setting_issue_done_ratio_issue_field: Use the issue field - setting_issue_done_ratio_issue_status: Use the issue status - setting_start_of_week: Start calendars on - setting_rest_api_enabled: Enable REST web service - setting_cache_formatted_text: Cache formatted text - setting_default_notification_option: Default notification option - setting_commit_logtime_enabled: Enable time logging - setting_commit_logtime_activity_id: Activity for logged time - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart - setting_issue_group_assignment: Allow issue assignment to groups - setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues - setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed - setting_unsubscribe: Allow users to delete their own account - - permission_add_project: Create project - permission_add_subprojects: Create subprojects - permission_edit_project: Edit project - permission_select_project_modules: Select project modules - permission_manage_members: Manage members - permission_manage_project_activities: Manage project activities - permission_manage_versions: Manage versions - permission_manage_categories: Manage issue categories - permission_view_issues: View Issues - permission_add_issues: Add issues - permission_edit_issues: Edit issues - permission_manage_issue_relations: Manage issue relations - permission_set_issues_private: Set issues public or private - permission_set_own_issues_private: Set own issues public or private - permission_add_issue_notes: Add notes - permission_edit_issue_notes: Edit notes - permission_edit_own_issue_notes: Edit own notes - permission_move_issues: Move issues - permission_delete_issues: Delete issues - permission_manage_public_queries: Manage public queries - permission_save_queries: Save queries - permission_view_gantt: View gantt chart - permission_view_calendar: View calendar - permission_view_issue_watchers: View watchers list - permission_add_issue_watchers: Add watchers - permission_delete_issue_watchers: Delete watchers - permission_log_time: Log spent time - permission_view_time_entries: View spent time - permission_edit_time_entries: Edit time logs - permission_edit_own_time_entries: Edit own time logs - permission_manage_news: Manage news - permission_comment_news: Comment news - permission_manage_documents: Manage documents - permission_view_documents: View documents - permission_manage_files: Manage files - permission_view_files: View files - permission_manage_wiki: Manage wiki - permission_rename_wiki_pages: Rename wiki pages - permission_delete_wiki_pages: Delete wiki pages - permission_view_wiki_pages: View wiki - permission_view_wiki_edits: View wiki history - permission_edit_wiki_pages: Edit wiki pages - permission_delete_wiki_pages_attachments: Delete attachments - permission_protect_wiki_pages: Protect wiki pages - permission_manage_repository: Manage repository - permission_browse_repository: Browse repository - permission_view_changesets: View changesets - permission_commit_access: Commit access - permission_manage_boards: Manage forums - permission_view_messages: View messages - permission_add_messages: Post messages - permission_edit_messages: Edit messages - permission_edit_own_messages: Edit own messages - permission_delete_messages: Delete messages - permission_delete_own_messages: Delete own messages - permission_export_wiki_pages: Export wiki pages - permission_manage_subtasks: Manage subtasks - permission_manage_related_issues: Manage related issues - - project_module_issue_tracking: Issue tracking - project_module_time_tracking: Time tracking - project_module_news: News - project_module_documents: Documents - project_module_files: Files - project_module_wiki: Wiki - project_module_repository: Repository - project_module_boards: Forums - project_module_calendar: Calendar - project_module_gantt: Gantt - - label_user: User - label_user_plural: Users - label_user_new: New user - label_user_anonymous: Anonymous - label_project: Project - label_project_new: New project - label_project_plural: Projects - label_x_projects: - zero: no projects - one: 1 project - other: "%{count} projects" - label_project_all: All Projects - label_project_latest: Latest projects - label_issue: Issue - label_issue_new: New issue - label_issue_plural: Issues - label_issue_view_all: View all issues - label_issues_by: "Issues by %{value}" - label_issue_added: Issue added - label_issue_updated: Issue updated - label_issue_note_added: Note added - label_issue_status_updated: Status updated - label_issue_priority_updated: Priority updated - label_document: Document - label_document_new: New document - label_document_plural: Documents - label_document_added: Document added - label_role: Role - label_role_plural: Roles - label_role_new: New role - label_role_and_permissions: Roles and permissions - label_role_anonymous: Anonymous - label_role_non_member: Non member - label_member: Member - label_member_new: New member - label_member_plural: Members - label_tracker: Tracker - label_tracker_plural: Trackers - label_tracker_new: New tracker - label_workflow: Workflow - label_issue_status: Issue status - label_issue_status_plural: Issue statuses - label_issue_status_new: New status - label_issue_category: Issue category - label_issue_category_plural: Issue categories - label_issue_category_new: New category - label_custom_field: Custom field - label_custom_field_plural: Custom fields - label_custom_field_new: New custom field - label_enumerations: Enumerations - label_enumeration_new: New value - label_information: Information - label_information_plural: Information - label_please_login: Please log in - label_register: Register - label_login_with_open_id_option: or login with OpenID - label_password_lost: Lost password - label_home: Home - label_my_page: My page - label_my_account: My account - label_my_projects: My projects - label_my_page_block: My page block - label_administration: Administration - label_login: Sign in - label_logout: Sign out - label_help: Help - label_reported_issues: Reported issues - label_assigned_to_me_issues: Issues assigned to me - label_last_login: Last connection - label_registered_on: Registered on - label_activity: Activity - label_overall_activity: Overall activity - label_user_activity: "%{value}'s activity" - label_new: New - label_logged_as: Logged in as - label_environment: Environment - label_authentication: Authentication - label_auth_source: Authentication mode - label_auth_source_new: New authentication mode - label_auth_source_plural: Authentication modes - label_subproject_plural: Subprojects - label_subproject_new: New subproject - label_and_its_subprojects: "%{value} and its subprojects" - label_min_max_length: Min - Max length - label_list: List - label_date: Date - label_integer: Integer - label_float: Float - label_boolean: Boolean - label_string: Text - label_text: Long text - label_attribute: Attribute - label_attribute_plural: Attributes - label_download: "%{count} Download" - label_download_plural: "%{count} Downloads" - label_no_data: No data to display - label_change_status: Change status - label_history: History - label_attachment: File - label_attachment_new: New file - label_attachment_delete: Delete file - label_attachment_plural: Files - label_file_added: File added - label_report: Report - label_report_plural: Reports - label_news: News - label_news_new: Add news - label_news_plural: News - label_news_latest: Latest news - label_news_view_all: View all news - label_news_added: News added - label_news_comment_added: Comment added to a news - label_settings: Settings - label_overview: Overview - label_version: Version - label_version_new: New version - label_version_plural: Versions - label_close_versions: Close completed versions - label_confirmation: Confirmation - label_export_to: 'Also available in:' - label_read: Read... - label_public_projects: Public projects - label_open_issues: open - label_open_issues_plural: open - label_closed_issues: closed - label_closed_issues_plural: closed - label_x_open_issues_abbr_on_total: - zero: 0 open / %{total} - one: 1 open / %{total} - other: "%{count} open / %{total}" - label_x_open_issues_abbr: - zero: 0 open - one: 1 open - other: "%{count} open" - label_x_closed_issues_abbr: - zero: 0 closed - one: 1 closed - other: "%{count} closed" - label_x_issues: - zero: 0 issues - one: 1 issue - other: "%{count} issues" - label_total: Total - label_permissions: Permissions - label_current_status: Current status - label_new_statuses_allowed: New statuses allowed - label_all: all - label_none: none - label_nobody: nobody - label_next: Next - label_previous: Previous - label_used_by: Used by - label_details: Details - label_add_note: Add a note - label_per_page: Per page - label_calendar: Calendar - label_months_from: months from - label_gantt: Gantt - label_internal: Internal - label_last_changes: "last %{count} changes" - label_change_view_all: View all changes - label_personalize_page: Personalize this page - label_comment: Comment - label_comment_plural: Comments - label_x_comments: - zero: no comments - one: 1 comment - other: "%{count} comments" - label_comment_add: Add a comment - label_comment_added: Comment added - label_comment_delete: Delete comments - label_query: Custom query - label_query_plural: Custom queries - label_query_new: New query - label_my_queries: My custom queries - label_filter_add: Add filter - label_filter_plural: Filters - label_equals: is - label_not_equals: is not - label_in_less_than: in less than - label_in_more_than: in more than - label_greater_or_equal: '>=' - label_less_or_equal: '<=' - label_between: between - label_in: in - label_today: today - label_all_time: all time - label_yesterday: yesterday - label_this_week: this week - label_last_week: last week - label_last_n_days: "last %{count} days" - label_this_month: this month - label_last_month: last month - label_this_year: this year - label_date_range: Date range - label_less_than_ago: less than days ago - label_more_than_ago: more than days ago - label_ago: days ago - label_contains: contains - label_not_contains: doesn't contain - label_day_plural: days - label_repository: Repository - label_repository_new: New repository - label_repository_plural: Repositories - label_browse: Browse - label_modification: "%{count} change" - label_modification_plural: "%{count} changes" - label_branch: Branch - label_tag: Tag - label_revision: Revision - label_revision_plural: Revisions - label_revision_id: "Revision %{value}" - label_associated_revisions: Associated revisions - label_added: added - label_modified: modified - label_copied: copied - label_renamed: renamed - label_deleted: deleted - label_latest_revision: Latest revision - label_latest_revision_plural: Latest revisions - label_view_revisions: View revisions - label_view_all_revisions: View all revisions - label_max_size: Maximum size - label_sort_highest: Move to top - 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 %{value}" - label_roadmap_overdue: "%{value} late" - label_roadmap_no_issues: No issues for this version - label_search: Search - label_result_plural: Results - label_all_words: All words - 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: Current version - label_preview: Preview - label_feed_plural: Feeds - label_changes_details: Details of all changes - label_issue_tracking: Issue tracking - label_spent_time: Spent time - label_overall_spent_time: Overall spent time - label_f_hour: "%{value} hour" - label_f_hour_plural: "%{value} hours" - label_f_from: "Start: %{value}" - label_f_to: "End: %{value}" - label_f_pause: "Pause (min): %{value}" - label_time_tracking: Time tracking - label_change_plural: Changes - label_statistics: Statistics - label_commits_per_month: Commits per month - label_commits_per_author: Commits per author - label_diff: diff - label_view_diff: View differences - label_diff_inline: inline - label_diff_side_by_side: side by side - label_options: Options - label_copy_workflow_from: Copy workflow from - label_permissions_report: Permissions report - label_watched_issues: Watched issues - label_related_issues: Related issues - label_applied_status: Applied status - label_loading: Loading... - label_relation_new: New relation - label_relation_delete: Delete relation - label_relates_to: related to - label_duplicates: duplicates - label_duplicated_by: duplicated by - label_blocks: blocks - label_blocked_by: blocked by - label_precedes: precedes - label_follows: follows - label_end_to_start: end to start - label_end_to_end: end to end - label_start_to_start: start to start - label_start_to_end: start to end - label_stay_logged_in: Stay logged in - label_disabled: disabled - label_show_completed_versions: Show completed versions - label_me: me - label_board: Forum - label_board_new: New forum - label_board_plural: Forums - label_board_locked: Locked - label_board_sticky: Sticky - label_topic_plural: Topics - label_message_plural: Messages - label_message_last: Last message - label_message_new: New message - label_message_posted: Message added - 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: Based on user's language - label_sort_by: "Sort by %{value}" - label_send_test_email: Send a test email - label_feeds_access_key: RSS access key - label_missing_feeds_access_key: Missing a RSS access key - label_feeds_access_key_created_on: "RSS access key created %{value} ago" - label_module_plural: Modules - label_added_time_by: "Added by %{author} %{age} ago" - label_updated_time_by: "Updated by %{author} %{age} ago" - label_updated_time: "Updated %{value} ago" - label_jump_to_a_project: Jump to a project... - label_file_plural: Files - label_changeset_plural: Changesets - label_default_columns: Default columns - label_no_change_option: (No change) - label_bulk_edit_selected_issues: Bulk edit selected issues - label_bulk_edit_selected_time_entries: Bulk edit selected time entries - label_theme: Theme - label_default: Default - label_search_titles_only: Search titles only - label_user_mail_option_all: "For any event on all my projects" - label_user_mail_option_selected: "For any event on the selected projects only..." - label_user_mail_option_none: "No events" - label_user_mail_option_only_my_events: "Only for things I watch or I'm involved in" - label_user_mail_option_only_assigned: "Only for things I am assigned to" - label_user_mail_option_only_owner: "Only for things I am the owner of" - label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself" - label_registration_activation_by_email: account activation by email - label_registration_manual_activation: manual account activation - label_registration_automatic_activation: automatic account activation - label_display_per_page: "Per page: %{value}" - label_age: Age - label_change_properties: Change properties - label_general: General - label_more: More - label_scm: SCM - label_plugins: Plugins - label_ldap_authentication: LDAP authentication - label_downloads_abbr: D/L - label_optional_description: Optional description - label_add_another_file: Add another file - label_preferences: Preferences - label_chronological_order: In chronological order - label_reverse_chronological_order: In reverse chronological order - label_planning: Planning - label_incoming_emails: Incoming emails - label_generate_key: Generate a key - label_issue_watchers: Watchers - label_example: Example - label_display: Display - label_sort: Sort - label_ascending: Ascending - label_descending: Descending - label_date_from_to: From %{start} to %{end} - label_wiki_content_added: Wiki page added - label_wiki_content_updated: Wiki page updated - label_group: Group - label_group_plural: Groups - label_group_new: New group - label_time_entry_plural: Spent time - label_version_sharing_none: Not shared - label_version_sharing_descendants: With subprojects - label_version_sharing_hierarchy: With project hierarchy - label_version_sharing_tree: With project tree - label_version_sharing_system: With all projects - label_update_issue_done_ratios: Update issue done ratios - label_copy_source: Source - label_copy_target: Target - label_copy_same_as_target: Same as target - label_display_used_statuses_only: Only display statuses that are used by this tracker - label_api_access_key: API access key - label_missing_api_access_key: Missing an API access key - label_api_access_key_created_on: "API access key created %{value} ago" - label_profile: Profile - label_subtask_plural: Subtasks - label_project_copy_notifications: Send email notifications during the project copy - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author - label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee - label_issues_visibility_all: All issues - label_issues_visibility_public: All non private issues - label_issues_visibility_own: Issues created by or assigned to the user - label_git_report_last_commit: Report last commit for files and directories - label_parent_revision: Parent - label_child_revision: Child - label_export_options: "%{export_format} export options" - label_copy_attachments: Copy attachments - label_item_position: "%{position} of %{count}" - label_completed_versions: Completed versions - label_search_for_watchers: Search for watchers to add - - button_login: Login - button_submit: Submit - button_save: Save - button_check_all: Check all - button_uncheck_all: Uncheck all - button_collapse_all: Collapse all - button_expand_all: Expand all - button_delete: Delete - button_create: Create - button_create_and_continue: Create and continue - button_test: Test - button_edit: Edit - button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" - button_add: Add - button_change: Change - button_apply: Apply - button_clear: Clear - button_lock: Lock - button_unlock: Unlock - button_download: Download - button_list: List - button_view: View - button_move: Move - button_move_and_follow: Move and follow - button_back: Back - button_cancel: Cancel - button_activate: Activate - button_sort: Sort - button_log_time: Log time - button_rollback: Rollback to this version - button_watch: Watch - button_unwatch: Unwatch - button_reply: Reply - button_archive: Archive - button_unarchive: Unarchive - button_reset: Reset - button_rename: Rename - button_change_password: Change password - button_copy: Copy - button_copy_and_follow: Copy and follow - button_annotate: Annotate - button_update: Update - button_configure: Configure - button_quote: Quote - button_duplicate: Duplicate - button_show: Show - button_edit_section: Edit this section - button_export: Export - button_delete_my_account: Delete my account - - status_active: active - status_registered: registered - status_locked: locked - - version_status_open: open - version_status_locked: locked - version_status_closed: closed - - field_active: Active - - text_select_mail_notifications: Select actions for which email notifications should be sent. - text_regexp_info: eg. ^[A-Z0-9]+$ - text_min_max_length_info: 0 means no restriction - text_project_destroy_confirmation: Are you sure you want to delete this project and related data? - text_subprojects_destroy_warning: "Its subproject(s): %{value} will be also deleted." - text_workflow_edit: Select a role and a tracker to edit the workflow - text_are_you_sure: Are you sure? - text_are_you_sure_with_children: "Delete issue and all child issues?" - text_journal_changed: "%{label} changed from %{old} to %{new}" - text_journal_changed_no_detail: "%{label} updated" - text_journal_set_to: "%{label} set to %{value}" - text_journal_deleted: "%{label} deleted (%{old})" - text_journal_added: "%{label} %{value} added" - text_tip_issue_begin_day: issue beginning this day - text_tip_issue_end_day: issue ending this day - text_tip_issue_begin_end_day: issue beginning and ending this day - text_project_identifier_info: 'Only lower case letters (a-z), numbers, dashes and underscores are allowed.
Once saved, the identifier cannot be changed.' - text_caracters_maximum: "%{count} characters maximum." - text_caracters_minimum: "Must be at least %{count} characters long." - text_length_between: "Length between %{min} and %{max} characters." - text_tracker_no_workflow: No workflow defined for this tracker - text_unallowed_characters: Unallowed characters - text_comma_separated: Multiple values allowed (comma separated). - text_line_separated: Multiple values allowed (one line for each value). - text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages - text_issue_added: "Issue %{id} has been reported by %{author}." - text_issue_updated: "Issue %{id} has been updated by %{author}." - text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all its content? - text_issue_category_destroy_question: "Some issues (%{count}) are assigned to this category. What do you want to do?" - text_issue_category_destroy_assignments: Remove category assignments - text_issue_category_reassign_to: Reassign issues to this category - 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)." - 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." - text_load_default_configuration: Load the default configuration - text_status_changed_by_changeset: "Applied in changeset %{value}." - text_time_logged_by_changeset: "Applied in changeset %{value}." - text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s)?' - text_issues_destroy_descendants_confirmation: "This will also delete %{count} subtask(s)." - text_time_entries_destroy_confirmation: 'Are you sure you want to delete the selected time entr(y/ies)?' - text_select_project_modules: 'Select modules to enable for this project:' - text_default_administrator_account_changed: Default administrator account changed - text_file_repository_writable: Attachments directory writable - text_plugin_assets_writable: Plugin assets directory writable - text_rmagick_available: RMagick available (optional) - text_destroy_time_entries_question: "%{hours} hours were reported on the issues you are about to delete. What do you want to do?" - text_destroy_time_entries: Delete reported hours - text_assign_time_entries_to_project: Assign reported hours to the project - text_reassign_time_entries: 'Reassign reported hours to this issue:' - text_user_wrote: "%{value} wrote:" - text_enumeration_destroy_question: "%{count} objects are assigned to this value." - text_enumeration_category_reassign_to: 'Reassign them to this value:' - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." - 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." - text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' - text_custom_field_possible_values_info: 'One line for each value' - text_wiki_page_destroy_question: "This page has %{descendants} child page(s) and descendant(s). What do you want to do?" - text_wiki_page_nullify_children: "Keep child pages as root pages" - text_wiki_page_destroy_children: "Delete child pages and all their descendants" - text_wiki_page_reassign_children: "Reassign child pages to this parent page" - text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?" - text_zoom_in: Zoom in - text_zoom_out: Zoom out - text_warn_on_leaving_unsaved: "The current page contains unsaved text that will be lost if you leave this page." - text_scm_path_encoding_note: "Default: UTF-8" - text_git_repository_note: Repository is bare and local (e.g. /gitrepo, c:\gitrepo) - text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) - text_scm_command: Command - text_scm_command_version: Version - text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. - text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. - text_issue_conflict_resolution_overwrite: "Apply my changes anyway (previous notes will be kept but some changes may be overwritten)" - text_issue_conflict_resolution_add_notes: "Add my notes and discard my other changes" - text_issue_conflict_resolution_cancel: "Discard all my changes and redisplay %{link}" - text_account_destroy_confirmation: "Are you sure you want to proceed?\nYour account will be permanently deleted, with no way to reactivate it." - - default_role_manager: Manager - default_role_developer: Developer - default_role_reporter: Reporter - default_tracker_bug: Bug - default_tracker_feature: Feature - default_tracker_support: Support - default_issue_status_new: New - default_issue_status_in_progress: In Progress - default_issue_status_resolved: Resolved - default_issue_status_feedback: Feedback - default_issue_status_closed: Closed - default_issue_status_rejected: Rejected - default_doc_category_user: User documentation - default_doc_category_tech: Technical documentation - default_priority_low: Low - default_priority_normal: Normal - default_priority_high: High - default_priority_urgent: Urgent - default_priority_immediate: Immediate - default_activity_design: Design - default_activity_development: Development - - enumeration_issue_priorities: Issue priorities - enumeration_doc_categories: Document categories - enumeration_activities: Activities (time tracking) - enumeration_system_activity: System Activity - description_filter: Filter - description_search: Searchfield - description_choose_project: Projects - description_project_scope: Search scope - description_notes: Notes - description_message_content: Message content - description_query_sort_criteria_attribute: Sort attribute - description_query_sort_criteria_direction: Sort direction - description_user_mail_notification: Mail notification settings - description_available_columns: Available Columns - description_selected_columns: Selected Columns - description_all_columns: All Columns - description_issue_category_reassign: Choose issue category - description_wiki_subpages_reassign: Choose new parent page - description_date_range_list: Choose range from list - description_date_range_interval: Choose range by selecting start and end date - description_date_from: Enter start date - description_date_to: Enter end date +en: + # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) + direction: ltr + date: + formats: + # Use the strftime parameters for formats. + # When no format has been given, it uses default. + # You can provide other formats here if you like! + default: "%m/%d/%Y" + short: "%b %d" + long: "%B %d, %Y" + + day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday] + abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat] + + # Don't forget the nil at the beginning; there's no such thing as a 0th month + month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December] + abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec] + # Used in date_select and datime_select. + order: + - :year + - :month + - :day + + time: + formats: + default: "%m/%d/%Y %I:%M %p" + time: "%I:%M %p" + short: "%d %b %H:%M" + long: "%B %d, %Y %H:%M" + am: "am" + pm: "pm" + + datetime: + distance_in_words: + half_a_minute: "half a minute" + less_than_x_seconds: + one: "less than 1 second" + other: "less than %{count} seconds" + x_seconds: + one: "1 second" + other: "%{count} seconds" + less_than_x_minutes: + one: "less than a minute" + other: "less than %{count} minutes" + x_minutes: + one: "1 minute" + other: "%{count} minutes" + about_x_hours: + one: "about 1 hour" + other: "about %{count} hours" + x_days: + one: "1 day" + other: "%{count} days" + about_x_months: + one: "about 1 month" + other: "about %{count} months" + x_months: + one: "1 month" + other: "%{count} months" + about_x_years: + one: "about 1 year" + other: "about %{count} years" + over_x_years: + one: "over 1 year" + other: "over %{count} years" + almost_x_years: + one: "almost 1 year" + other: "almost %{count} years" + + number: + format: + separator: "." + delimiter: "" + precision: 3 + + human: + format: + delimiter: "" + precision: 3 + storage_units: + format: "%n %u" + units: + byte: + one: "Byte" + other: "Bytes" + kb: "KB" + mb: "MB" + gb: "GB" + tb: "TB" + +# Used in array.to_sentence. + support: + array: + sentence_connector: "and" + skip_last_comma: false + + activerecord: + errors: + template: + header: + one: "1 error prohibited this %{model} from being saved" + other: "%{count} errors prohibited this %{model} from being saved" + messages: + inclusion: "is not included in the list" + exclusion: "is reserved" + invalid: "is invalid" + confirmation: "doesn't match confirmation" + accepted: "must be accepted" + empty: "can't be empty" + blank: "can't be blank" + too_long: "is too long (maximum is %{count} characters)" + too_short: "is too short (minimum is %{count} characters)" + wrong_length: "is the wrong length (should be %{count} characters)" + taken: "has already been taken" + not_a_number: "is not a number" + not_a_date: "is not a valid date" + greater_than: "must be greater than %{count}" + greater_than_or_equal_to: "must be greater than or equal to %{count}" + equal_to: "must be equal to %{count}" + less_than: "must be less than %{count}" + less_than_or_equal_to: "must be less than or equal to %{count}" + odd: "must be odd" + even: "must be even" + greater_than_start_date: "must be greater than start date" + not_same_project: "doesn't belong to the same project" + circular_dependency: "This relation would create a circular dependency" + cant_link_an_issue_with_a_descendant: "An issue cannot be linked to one of its subtasks" + + actionview_instancetag_blank_option: Please select + + general_text_No: 'No' + general_text_Yes: 'Yes' + general_text_no: 'no' + general_text_yes: 'yes' + general_lang_name: 'English' + general_csv_separator: ',' + general_csv_decimal_separator: '.' + general_csv_encoding: ISO-8859-1 + general_pdf_encoding: UTF-8 + general_first_day_of_week: '7' + + notice_account_updated: Account was successfully updated. + notice_account_invalid_creditentials: Invalid user or password + notice_account_password_updated: Password was successfully updated. + notice_account_wrong_password: Wrong password + notice_account_register_done: Account was successfully created. To activate your account, click on the link that was emailed to you. + notice_account_unknown_email: Unknown user. + notice_can_t_change_password: This account uses an external authentication source. Impossible to change the password. + notice_account_lost_email_sent: An email with instructions to choose a new password has been sent to you. + notice_account_activated: Your account has been activated. You can now log in. + notice_successful_create: Successful creation. + notice_successful_update: Successful update. + notice_successful_delete: Successful deletion. + notice_successful_connection: Successful connection. + notice_file_not_found: The page you were trying to access doesn't exist or has been removed. + notice_locking_conflict: Data has been updated by another user. + notice_not_authorized: You are not authorized to access this page. + notice_not_authorized_archived_project: The project you're trying to access has been archived. + notice_email_sent: "An email was sent to %{value}" + notice_email_error: "An error occurred while sending mail (%{value})" + notice_feeds_access_key_reseted: Your RSS access key was reset. + notice_api_access_key_reseted: Your API access key was reset. + notice_failed_to_save_issues: "Failed to save %{count} issue(s) on %{total} selected: %{ids}." + notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}." + notice_failed_to_save_members: "Failed to save member(s): %{errors}." + notice_no_issue_selected: "No issue is selected! Please, check the issues you want to edit." + notice_account_pending: "Your account was created and is now pending administrator approval." + notice_default_data_loaded: Default configuration successfully loaded. + notice_unable_delete_version: Unable to delete version. + notice_unable_delete_time_entry: Unable to delete time log entry. + notice_issue_done_ratios_updated: Issue done ratios updated. + notice_gantt_chart_truncated: "The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})" + notice_issue_successful_create: "Issue %{id} created." + notice_issue_update_conflict: "The issue has been updated by an other user while you were editing it." + notice_account_deleted: "Your account has been permanently deleted." + + error_can_t_load_default_data: "Default configuration could not be loaded: %{value}" + error_scm_not_found: "The entry or revision was not found in the repository." + error_scm_command_failed: "An error occurred when trying to access the repository: %{value}" + error_scm_annotate: "The entry does not exist or cannot be annotated." + error_scm_annotate_big_text_file: "The entry cannot be annotated, as it exceeds the maximum text file size." + error_issue_not_found_in_project: 'The issue was not found or does not belong to this project' + error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.' + error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").' + error_can_not_delete_custom_field: Unable to delete custom field + error_can_not_delete_tracker: "This tracker contains issues and cannot be deleted." + error_can_not_remove_role: "This role is in use and cannot be deleted." + error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version cannot be reopened' + error_can_not_archive_project: This project cannot be archived + error_issue_done_ratios_not_updated: "Issue done ratios not updated." + error_workflow_copy_source: 'Please select a source tracker or role' + error_workflow_copy_target: 'Please select target tracker(s) and role(s)' + error_unable_delete_issue_status: 'Unable to delete issue status' + error_unable_to_connect: "Unable to connect (%{value})" + error_attachment_too_big: "This file cannot be uploaded because it exceeds the maximum allowed file size (%{max_size})" + warning_attachments_not_saved: "%{count} file(s) could not be saved." + + mail_subject_lost_password: "Your %{value} password" + mail_body_lost_password: 'To change your password, click on the following link:' + mail_subject_register: "Your %{value} account activation" + mail_body_register: 'To activate your account, click on the following link:' + mail_body_account_information_external: "You can use your %{value} account to log in." + mail_body_account_information: Your account information + mail_subject_account_activation_request: "%{value} account activation request" + mail_body_account_activation_request: "A new user (%{value}) has registered. The account is pending your approval:" + mail_subject_reminder: "%{count} issue(s) due in the next %{days} days" + mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:" + mail_subject_wiki_content_added: "'%{id}' wiki page has been added" + mail_body_wiki_content_added: "The '%{id}' wiki page has been added by %{author}." + mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated" + mail_body_wiki_content_updated: "The '%{id}' wiki page has been updated by %{author}." + + gui_validation_error: 1 error + gui_validation_error_plural: "%{count} errors" + + field_name: Name + field_description: Description + field_summary: Summary + field_is_required: Required + field_firstname: First name + field_lastname: Last name + field_mail: Email + field_filename: File + field_filesize: Size + field_downloads: Downloads + field_author: Author + field_created_on: Created + field_updated_on: Updated + field_field_format: Format + field_is_for_all: For all projects + field_possible_values: Possible values + field_regexp: Regular expression + field_min_length: Minimum length + field_max_length: Maximum length + field_value: Value + field_category: Category + field_title: Title + field_project: Project + field_issue: Issue + field_status: Status + field_notes: Notes + field_is_closed: Issue closed + field_is_default: Default value + field_tracker: Tracker + field_subject: Subject + field_due_date: Due date + field_assigned_to: Assignee + field_priority: Priority + field_fixed_version: Target version + field_user: User + field_principal: Principal + field_role: Role + field_homepage: Homepage + field_is_public: Public + field_parent: Subproject of + field_is_in_roadmap: Issues displayed in roadmap + field_login: Login + field_mail_notification: Email notifications + field_admin: Administrator + field_last_login_on: Last connection + field_language: Language + field_effective_date: Date + field_password: Password + field_new_password: New password + field_password_confirmation: Confirmation + field_version: Version + field_type: Type + field_host: Host + field_port: Port + field_account: Account + field_base_dn: Base DN + field_attr_login: Login attribute + field_attr_firstname: Firstname attribute + field_attr_lastname: Lastname attribute + field_attr_mail: Email attribute + field_onthefly: On-the-fly user creation + field_start_date: Start date + field_done_ratio: "% Done" + field_auth_source: Authentication mode + field_hide_mail: Hide my email address + field_comments: Comment + field_url: URL + field_start_page: Start page + field_subproject: Subproject + field_hours: Hours + field_activity: Activity + field_spent_on: Date + field_identifier: Identifier + field_is_filter: Used as a filter + field_issue_to: Related issue + field_delay: Delay + field_assignable: Issues can be assigned to this role + field_redirect_existing_links: Redirect existing links + field_estimated_hours: Estimated time + field_column_names: Columns + field_time_entries: Log time + field_time_zone: Time zone + field_searchable: Searchable + field_default_value: Default value + field_comments_sorting: Display comments + field_parent_title: Parent page + field_editable: Editable + field_watcher: Watcher + field_identity_url: OpenID URL + field_content: Content + field_group_by: Group results by + field_sharing: Sharing + field_parent_issue: Parent task + field_member_of_group: "Assignee's group" + field_assigned_to_role: "Assignee's role" + field_text: Text field + field_visible: Visible + field_warn_on_leaving_unsaved: "Warn me when leaving a page with unsaved text" + field_issues_visibility: Issues visibility + field_is_private: Private + field_commit_logs_encoding: Commit messages encoding + field_scm_path_encoding: Path encoding + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvsroot: CVSROOT + field_cvs_module: Module + field_repository_is_default: Main repository + field_multiple: Multiple values + field_ldap_filter: LDAP filter + + setting_app_title: Application title + setting_app_subtitle: Application subtitle + setting_welcome_text: Welcome text + setting_default_language: Default language + setting_login_required: Authentication required + setting_self_registration: Self-registration + setting_attachment_max_size: Maximum attachment size + setting_issues_export_limit: Issues export limit + setting_mail_from: Emission email address + setting_bcc_recipients: Blind carbon copy recipients (bcc) + setting_plain_text_mail: Plain text mail (no HTML) + setting_host_name: Host name and path + setting_text_formatting: Text formatting + setting_wiki_compression: Wiki history compression + setting_feeds_limit: Maximum number of items in Atom feeds + setting_default_projects_public: New projects are public by default + setting_autofetch_changesets: Fetch commits automatically + setting_sys_api_enabled: Enable WS for repository management + setting_commit_ref_keywords: Referencing keywords + setting_commit_fix_keywords: Fixing keywords + setting_autologin: Autologin + setting_date_format: Date format + setting_time_format: Time format + setting_cross_project_issue_relations: Allow cross-project issue relations + setting_issue_list_default_columns: Default columns displayed on the issue list + setting_repositories_encodings: Attachments and repositories encodings + setting_emails_header: Emails header + setting_emails_footer: Emails footer + setting_protocol: Protocol + setting_per_page_options: Objects per page options + setting_user_format: Users display format + setting_activity_days_default: Days displayed on project activity + setting_display_subprojects_issues: Display subprojects issues on main projects by default + setting_enabled_scm: Enabled SCM + setting_mail_handler_body_delimiters: "Truncate emails after one of these lines" + setting_mail_handler_api_enabled: Enable WS for incoming emails + setting_mail_handler_api_key: API key + setting_sequential_project_identifiers: Generate sequential project identifiers + setting_gravatar_enabled: Use Gravatar user icons + setting_gravatar_default: Default Gravatar image + setting_diff_max_lines_displayed: Maximum number of diff lines displayed + setting_file_max_size_displayed: Maximum size of text files displayed inline + setting_repository_log_display_limit: Maximum number of revisions displayed on file log + setting_openid: Allow OpenID login and registration + setting_password_min_length: Minimum password length + setting_new_project_user_role_id: Role given to a non-admin user who creates a project + setting_default_projects_modules: Default enabled modules for new projects + setting_issue_done_ratio: Calculate the issue done ratio with + setting_issue_done_ratio_issue_field: Use the issue field + setting_issue_done_ratio_issue_status: Use the issue status + setting_start_of_week: Start calendars on + setting_rest_api_enabled: Enable REST web service + setting_cache_formatted_text: Cache formatted text + setting_default_notification_option: Default notification option + setting_commit_logtime_enabled: Enable time logging + setting_commit_logtime_activity_id: Activity for logged time + setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + setting_issue_group_assignment: Allow issue assignment to groups + setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues + setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed + setting_unsubscribe: Allow users to delete their own account + + permission_add_project: Create project + permission_add_subprojects: Create subprojects + permission_edit_project: Edit project + permission_select_project_modules: Select project modules + permission_manage_members: Manage members + permission_manage_project_activities: Manage project activities + permission_manage_versions: Manage versions + permission_manage_categories: Manage issue categories + permission_view_issues: View Issues + permission_add_issues: Add issues + permission_edit_issues: Edit issues + permission_manage_issue_relations: Manage issue relations + permission_set_issues_private: Set issues public or private + permission_set_own_issues_private: Set own issues public or private + permission_add_issue_notes: Add notes + permission_edit_issue_notes: Edit notes + permission_edit_own_issue_notes: Edit own notes + permission_move_issues: Move issues + permission_delete_issues: Delete issues + permission_manage_public_queries: Manage public queries + permission_save_queries: Save queries + permission_view_gantt: View gantt chart + permission_view_calendar: View calendar + permission_view_issue_watchers: View watchers list + permission_add_issue_watchers: Add watchers + permission_delete_issue_watchers: Delete watchers + permission_log_time: Log spent time + permission_view_time_entries: View spent time + permission_edit_time_entries: Edit time logs + permission_edit_own_time_entries: Edit own time logs + permission_manage_news: Manage news + permission_comment_news: Comment news + permission_manage_documents: Manage documents + permission_view_documents: View documents + permission_manage_files: Manage files + permission_view_files: View files + permission_manage_wiki: Manage wiki + permission_rename_wiki_pages: Rename wiki pages + permission_delete_wiki_pages: Delete wiki pages + permission_view_wiki_pages: View wiki + permission_view_wiki_edits: View wiki history + permission_edit_wiki_pages: Edit wiki pages + permission_delete_wiki_pages_attachments: Delete attachments + permission_protect_wiki_pages: Protect wiki pages + permission_manage_repository: Manage repository + permission_browse_repository: Browse repository + permission_view_changesets: View changesets + permission_commit_access: Commit access + permission_manage_boards: Manage forums + permission_view_messages: View messages + permission_add_messages: Post messages + permission_edit_messages: Edit messages + permission_edit_own_messages: Edit own messages + permission_delete_messages: Delete messages + permission_delete_own_messages: Delete own messages + permission_export_wiki_pages: Export wiki pages + permission_manage_subtasks: Manage subtasks + permission_manage_related_issues: Manage related issues + + project_module_issue_tracking: Issue tracking + project_module_time_tracking: Time tracking + project_module_news: News + project_module_documents: Documents + project_module_files: Files + project_module_wiki: Wiki + project_module_repository: Repository + project_module_boards: Forums + project_module_calendar: Calendar + project_module_gantt: Gantt + + label_user: User + label_user_plural: Users + label_user_new: New user + label_user_anonymous: Anonymous + label_project: Project + label_project_new: New project + label_project_plural: Projects + label_x_projects: + zero: no projects + one: 1 project + other: "%{count} projects" + label_project_all: All Projects + label_project_latest: Latest projects + label_issue: Issue + label_issue_new: New issue + label_issue_plural: Issues + label_issue_view_all: View all issues + label_issues_by: "Issues by %{value}" + label_issue_added: Issue added + label_issue_updated: Issue updated + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_document: Document + label_document_new: New document + label_document_plural: Documents + label_document_added: Document added + label_role: Role + label_role_plural: Roles + label_role_new: New role + label_role_and_permissions: Roles and permissions + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_member: Member + label_member_new: New member + label_member_plural: Members + label_tracker: Tracker + label_tracker_plural: Trackers + label_tracker_new: New tracker + label_workflow: Workflow + label_issue_status: Issue status + label_issue_status_plural: Issue statuses + label_issue_status_new: New status + label_issue_category: Issue category + label_issue_category_plural: Issue categories + label_issue_category_new: New category + label_custom_field: Custom field + label_custom_field_plural: Custom fields + label_custom_field_new: New custom field + label_enumerations: Enumerations + label_enumeration_new: New value + label_information: Information + label_information_plural: Information + label_please_login: Please log in + label_register: Register + label_login_with_open_id_option: or login with OpenID + label_password_lost: Lost password + label_home: Home + label_my_page: My page + label_my_account: My account + label_my_projects: My projects + label_my_page_block: My page block + label_administration: Administration + label_login: Sign in + label_logout: Sign out + label_help: Help + label_reported_issues: Reported issues + label_assigned_to_me_issues: Issues assigned to me + label_last_login: Last connection + label_registered_on: Registered on + label_activity: Activity + label_overall_activity: Overall activity + label_user_activity: "%{value}'s activity" + label_new: New + label_logged_as: Logged in as + label_environment: Environment + label_authentication: Authentication + label_auth_source: Authentication mode + label_auth_source_new: New authentication mode + label_auth_source_plural: Authentication modes + label_subproject_plural: Subprojects + label_subproject_new: New subproject + label_and_its_subprojects: "%{value} and its subprojects" + label_min_max_length: Min - Max length + label_list: List + label_date: Date + label_integer: Integer + label_float: Float + label_boolean: Boolean + label_string: Text + label_text: Long text + label_attribute: Attribute + label_attribute_plural: Attributes + label_download: "%{count} Download" + label_download_plural: "%{count} Downloads" + label_no_data: No data to display + label_change_status: Change status + label_history: History + label_attachment: File + label_attachment_new: New file + label_attachment_delete: Delete file + label_attachment_plural: Files + label_file_added: File added + label_report: Report + label_report_plural: Reports + label_news: News + label_news_new: Add news + label_news_plural: News + label_news_latest: Latest news + label_news_view_all: View all news + label_news_added: News added + label_news_comment_added: Comment added to a news + label_settings: Settings + label_overview: Overview + label_version: Version + label_version_new: New version + label_version_plural: Versions + label_close_versions: Close completed versions + label_confirmation: Confirmation + label_export_to: 'Also available in:' + label_read: Read... + label_public_projects: Public projects + label_open_issues: open + label_open_issues_plural: open + label_closed_issues: closed + label_closed_issues_plural: closed + label_x_open_issues_abbr_on_total: + zero: 0 open / %{total} + one: 1 open / %{total} + other: "%{count} open / %{total}" + label_x_open_issues_abbr: + zero: 0 open + one: 1 open + other: "%{count} open" + label_x_closed_issues_abbr: + zero: 0 closed + one: 1 closed + other: "%{count} closed" + label_x_issues: + zero: 0 issues + one: 1 issue + other: "%{count} issues" + label_total: Total + label_permissions: Permissions + label_current_status: Current status + label_new_statuses_allowed: New statuses allowed + label_all: all + label_none: none + label_nobody: nobody + label_next: Next + label_previous: Previous + label_used_by: Used by + label_details: Details + label_add_note: Add a note + label_per_page: Per page + label_calendar: Calendar + label_months_from: months from + label_gantt: Gantt + label_internal: Internal + label_last_changes: "last %{count} changes" + label_change_view_all: View all changes + label_personalize_page: Personalize this page + label_comment: Comment + label_comment_plural: Comments + label_x_comments: + zero: no comments + one: 1 comment + other: "%{count} comments" + label_comment_add: Add a comment + label_comment_added: Comment added + label_comment_delete: Delete comments + label_query: Custom query + label_query_plural: Custom queries + label_query_new: New query + label_my_queries: My custom queries + label_filter_add: Add filter + label_filter_plural: Filters + label_equals: is + label_not_equals: is not + label_in_less_than: in less than + label_in_more_than: in more than + label_greater_or_equal: '>=' + label_less_or_equal: '<=' + label_between: between + label_in: in + label_today: today + label_all_time: all time + label_yesterday: yesterday + label_this_week: this week + label_last_week: last week + label_last_n_days: "last %{count} days" + label_this_month: this month + label_last_month: last month + label_this_year: this year + label_date_range: Date range + label_less_than_ago: less than days ago + label_more_than_ago: more than days ago + label_ago: days ago + label_contains: contains + label_not_contains: doesn't contain + label_day_plural: days + label_repository: Repository + label_repository_new: New repository + label_repository_plural: Repositories + label_browse: Browse + label_modification: "%{count} change" + label_modification_plural: "%{count} changes" + label_branch: Branch + label_tag: Tag + label_revision: Revision + label_revision_plural: Revisions + label_revision_id: "Revision %{value}" + label_associated_revisions: Associated revisions + label_added: added + label_modified: modified + label_copied: copied + label_renamed: renamed + label_deleted: deleted + label_latest_revision: Latest revision + label_latest_revision_plural: Latest revisions + label_view_revisions: View revisions + label_view_all_revisions: View all revisions + label_max_size: Maximum size + label_sort_highest: Move to top + 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 %{value}" + label_roadmap_overdue: "%{value} late" + label_roadmap_no_issues: No issues for this version + label_search: Search + label_result_plural: Results + label_all_words: All words + 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: Current version + label_preview: Preview + label_feed_plural: Feeds + label_changes_details: Details of all changes + label_issue_tracking: Issue tracking + label_spent_time: Spent time + label_overall_spent_time: Overall spent time + label_f_hour: "%{value} hour" + label_f_hour_plural: "%{value} hours" + label_time_tracking: Time tracking + label_change_plural: Changes + label_statistics: Statistics + label_commits_per_month: Commits per month + label_commits_per_author: Commits per author + label_diff: diff + label_view_diff: View differences + label_diff_inline: inline + label_diff_side_by_side: side by side + label_options: Options + label_copy_workflow_from: Copy workflow from + label_permissions_report: Permissions report + label_watched_issues: Watched issues + label_related_issues: Related issues + label_applied_status: Applied status + label_loading: Loading... + label_relation_new: New relation + label_relation_delete: Delete relation + label_relates_to: related to + label_duplicates: duplicates + label_duplicated_by: duplicated by + label_blocks: blocks + label_blocked_by: blocked by + label_precedes: precedes + label_follows: follows + label_end_to_start: end to start + label_end_to_end: end to end + label_start_to_start: start to start + label_start_to_end: start to end + label_stay_logged_in: Stay logged in + label_disabled: disabled + label_show_completed_versions: Show completed versions + label_me: me + label_board: Forum + label_board_new: New forum + label_board_plural: Forums + label_board_locked: Locked + label_board_sticky: Sticky + label_topic_plural: Topics + label_message_plural: Messages + label_message_last: Last message + label_message_new: New message + label_message_posted: Message added + 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: Based on user's language + label_sort_by: "Sort by %{value}" + label_send_test_email: Send a test email + label_feeds_access_key: RSS access key + label_missing_feeds_access_key: Missing a RSS access key + label_feeds_access_key_created_on: "RSS access key created %{value} ago" + label_module_plural: Modules + label_added_time_by: "Added by %{author} %{age} ago" + label_updated_time_by: "Updated by %{author} %{age} ago" + label_updated_time: "Updated %{value} ago" + label_jump_to_a_project: Jump to a project... + label_file_plural: Files + label_changeset_plural: Changesets + label_default_columns: Default columns + label_no_change_option: (No change) + label_bulk_edit_selected_issues: Bulk edit selected issues + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + label_theme: Theme + label_default: Default + label_search_titles_only: Search titles only + label_user_mail_option_all: "For any event on all my projects" + label_user_mail_option_selected: "For any event on the selected projects only..." + label_user_mail_option_none: "No events" + label_user_mail_option_only_my_events: "Only for things I watch or I'm involved in" + label_user_mail_option_only_assigned: "Only for things I am assigned to" + label_user_mail_option_only_owner: "Only for things I am the owner of" + label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself" + label_registration_activation_by_email: account activation by email + label_registration_manual_activation: manual account activation + label_registration_automatic_activation: automatic account activation + label_display_per_page: "Per page: %{value}" + label_age: Age + label_change_properties: Change properties + label_general: General + label_more: More + label_scm: SCM + label_plugins: Plugins + label_ldap_authentication: LDAP authentication + label_downloads_abbr: D/L + label_optional_description: Optional description + label_add_another_file: Add another file + label_preferences: Preferences + label_chronological_order: In chronological order + label_reverse_chronological_order: In reverse chronological order + label_planning: Planning + label_incoming_emails: Incoming emails + label_generate_key: Generate a key + label_issue_watchers: Watchers + label_example: Example + label_display: Display + label_sort: Sort + label_ascending: Ascending + label_descending: Descending + label_date_from_to: From %{start} to %{end} + label_wiki_content_added: Wiki page added + label_wiki_content_updated: Wiki page updated + label_group: Group + label_group_plural: Groups + label_group_new: New group + label_time_entry_plural: Spent time + label_version_sharing_none: Not shared + label_version_sharing_descendants: With subprojects + label_version_sharing_hierarchy: With project hierarchy + label_version_sharing_tree: With project tree + label_version_sharing_system: With all projects + label_update_issue_done_ratios: Update issue done ratios + label_copy_source: Source + label_copy_target: Target + label_copy_same_as_target: Same as target + label_display_used_statuses_only: Only display statuses that are used by this tracker + label_api_access_key: API access key + label_missing_api_access_key: Missing an API access key + label_api_access_key_created_on: "API access key created %{value} ago" + label_profile: Profile + label_subtask_plural: Subtasks + label_project_copy_notifications: Send email notifications during the project copy + label_principal_search: "Search for user or group:" + label_user_search: "Search for user:" + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_issues_visibility_all: All issues + label_issues_visibility_public: All non private issues + label_issues_visibility_own: Issues created by or assigned to the user + label_git_report_last_commit: Report last commit for files and directories + label_parent_revision: Parent + label_child_revision: Child + label_export_options: "%{export_format} export options" + label_copy_attachments: Copy attachments + label_item_position: "%{position} of %{count}" + label_completed_versions: Completed versions + label_search_for_watchers: Search for watchers to add + + button_login: Login + button_submit: Submit + button_save: Save + button_check_all: Check all + button_uncheck_all: Uncheck all + button_collapse_all: Collapse all + button_expand_all: Expand all + button_delete: Delete + button_create: Create + button_create_and_continue: Create and continue + button_test: Test + button_edit: Edit + button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" + button_add: Add + button_change: Change + button_apply: Apply + button_clear: Clear + button_lock: Lock + button_unlock: Unlock + button_download: Download + button_list: List + button_view: View + button_move: Move + button_move_and_follow: Move and follow + button_back: Back + button_cancel: Cancel + button_activate: Activate + button_sort: Sort + button_log_time: Log time + button_rollback: Rollback to this version + button_watch: Watch + button_unwatch: Unwatch + button_reply: Reply + button_archive: Archive + button_unarchive: Unarchive + button_reset: Reset + button_rename: Rename + button_change_password: Change password + button_copy: Copy + button_copy_and_follow: Copy and follow + button_annotate: Annotate + button_update: Update + button_configure: Configure + button_quote: Quote + button_duplicate: Duplicate + button_show: Show + button_edit_section: Edit this section + button_export: Export + button_delete_my_account: Delete my account + + status_active: active + status_registered: registered + status_locked: locked + + version_status_open: open + version_status_locked: locked + version_status_closed: closed + + field_active: Active + + text_select_mail_notifications: Select actions for which email notifications should be sent. + text_regexp_info: eg. ^[A-Z0-9]+$ + text_min_max_length_info: 0 means no restriction + text_project_destroy_confirmation: Are you sure you want to delete this project and related data? + text_subprojects_destroy_warning: "Its subproject(s): %{value} will be also deleted." + text_workflow_edit: Select a role and a tracker to edit the workflow + text_are_you_sure: Are you sure? + text_are_you_sure_with_children: "Delete issue and all child issues?" + text_journal_changed: "%{label} changed from %{old} to %{new}" + text_journal_changed_no_detail: "%{label} updated" + text_journal_set_to: "%{label} set to %{value}" + text_journal_deleted: "%{label} deleted (%{old})" + text_journal_added: "%{label} %{value} added" + text_tip_issue_begin_day: issue beginning this day + text_tip_issue_end_day: issue ending this day + text_tip_issue_begin_end_day: issue beginning and ending this day + text_project_identifier_info: 'Only lower case letters (a-z), numbers, dashes and underscores are allowed.
Once saved, the identifier cannot be changed.' + text_caracters_maximum: "%{count} characters maximum." + text_caracters_minimum: "Must be at least %{count} characters long." + text_length_between: "Length between %{min} and %{max} characters." + text_tracker_no_workflow: No workflow defined for this tracker + text_unallowed_characters: Unallowed characters + text_comma_separated: Multiple values allowed (comma separated). + text_line_separated: Multiple values allowed (one line for each value). + text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages + text_issue_added: "Issue %{id} has been reported by %{author}." + text_issue_updated: "Issue %{id} has been updated by %{author}." + text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all its content? + text_issue_category_destroy_question: "Some issues (%{count}) are assigned to this category. What do you want to do?" + text_issue_category_destroy_assignments: Remove category assignments + text_issue_category_reassign_to: Reassign issues to this category + 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)." + 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." + text_load_default_configuration: Load the default configuration + text_status_changed_by_changeset: "Applied in changeset %{value}." + text_time_logged_by_changeset: "Applied in changeset %{value}." + text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s)?' + text_issues_destroy_descendants_confirmation: "This will also delete %{count} subtask(s)." + text_time_entries_destroy_confirmation: 'Are you sure you want to delete the selected time entr(y/ies)?' + text_select_project_modules: 'Select modules to enable for this project:' + text_default_administrator_account_changed: Default administrator account changed + text_file_repository_writable: Attachments directory writable + text_plugin_assets_writable: Plugin assets directory writable + text_rmagick_available: RMagick available (optional) + text_destroy_time_entries_question: "%{hours} hours were reported on the issues you are about to delete. What do you want to do?" + text_destroy_time_entries: Delete reported hours + text_assign_time_entries_to_project: Assign reported hours to the project + text_reassign_time_entries: 'Reassign reported hours to this issue:' + text_user_wrote: "%{value} wrote:" + text_enumeration_destroy_question: "%{count} objects are assigned to this value." + text_enumeration_category_reassign_to: 'Reassign them to this value:' + text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." + 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." + text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' + text_custom_field_possible_values_info: 'One line for each value' + text_wiki_page_destroy_question: "This page has %{descendants} child page(s) and descendant(s). What do you want to do?" + text_wiki_page_nullify_children: "Keep child pages as root pages" + text_wiki_page_destroy_children: "Delete child pages and all their descendants" + text_wiki_page_reassign_children: "Reassign child pages to this parent page" + text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?" + text_zoom_in: Zoom in + text_zoom_out: Zoom out + text_warn_on_leaving_unsaved: "The current page contains unsaved text that will be lost if you leave this page." + text_scm_path_encoding_note: "Default: UTF-8" + text_git_repository_note: Repository is bare and local (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. + text_issue_conflict_resolution_overwrite: "Apply my changes anyway (previous notes will be kept but some changes may be overwritten)" + text_issue_conflict_resolution_add_notes: "Add my notes and discard my other changes" + text_issue_conflict_resolution_cancel: "Discard all my changes and redisplay %{link}" + text_account_destroy_confirmation: "Are you sure you want to proceed?\nYour account will be permanently deleted, with no way to reactivate it." + + default_role_manager: Manager + default_role_developer: Developer + default_role_reporter: Reporter + default_tracker_bug: Bug + default_tracker_feature: Feature + default_tracker_support: Support + default_issue_status_new: New + default_issue_status_in_progress: In Progress + default_issue_status_resolved: Resolved + default_issue_status_feedback: Feedback + default_issue_status_closed: Closed + default_issue_status_rejected: Rejected + default_doc_category_user: User documentation + default_doc_category_tech: Technical documentation + default_priority_low: Low + default_priority_normal: Normal + default_priority_high: High + default_priority_urgent: Urgent + default_priority_immediate: Immediate + default_activity_design: Design + default_activity_development: Development + + enumeration_issue_priorities: Issue priorities + enumeration_doc_categories: Document categories + enumeration_activities: Activities (time tracking) + enumeration_system_activity: System Activity + description_filter: Filter + description_search: Searchfield + description_choose_project: Projects + description_project_scope: Search scope + description_notes: Notes + description_message_content: Message content + description_query_sort_criteria_attribute: Sort attribute + description_query_sort_criteria_direction: Sort direction + description_user_mail_notification: Mail notification settings + description_available_columns: Available Columns + description_selected_columns: Selected Columns + description_all_columns: All Columns + description_issue_category_reassign: Choose issue category + description_wiki_subpages_reassign: Choose new parent page + description_date_range_list: Choose range from list + description_date_range_interval: Choose range by selecting start and end date + description_date_from: Enter start date + description_date_to: Enter end date --- lib/redmine/i18n.rb Thu Jan 15 10:12:56 1970 +++ lib/redmine/i18n.rb Thu Jan 15 10:12:56 1970 @@ -1,91 +1,79 @@ -module Redmine - module I18n - def self.included(base) - base.extend Redmine::I18n - end - - def l(*args) - case args.size - when 1 - ::I18n.t(*args) - when 2 - if args.last.is_a?(Hash) - ::I18n.t(*args) - elsif args.last.is_a?(String) - ::I18n.t(args.first, :value => args.last) - else - ::I18n.t(args.first, :count => args.last) - end - else - raise "Translation string with multiple values: #{args.first}" - end - end - - def l_or_humanize(s, options={}) - k = "#{options[:prefix]}#{s}".to_sym - ::I18n.t(k, :default => s.to_s.humanize) - end - - def l_hours(hours) - hours = hours.to_f - l((hours < 2.0 ? :label_f_hour : :label_f_hour_plural), :value => ("%.2f" % hours.to_f)) - end - - def l_from(from) - if (from != nil && from.length > 0) - l(:label_f_from, :value => from) - end - end - - def l_to(to) - if (to != nil && to.length > 0) - l(:label_f_to, :value => to) - end - end - - def ll(lang, str, value=nil) - ::I18n.t(str.to_s, :value => value, :locale => lang.to_s.gsub(%r{(.+)\-(.+)$}) { "#{$1}-#{$2.upcase}" }) - end - - def format_date(date) - return nil unless date - Setting.date_format.blank? ? ::I18n.l(date.to_date) : date.strftime(Setting.date_format) - end - - def format_time(time, include_date = true) - return nil unless time - time = time.to_time if time.is_a?(String) - zone = User.current.time_zone - local = zone ? time.in_time_zone(zone) : (time.utc? ? time.localtime : time) - (include_date ? "#{format_date(local)} " : "") + - (Setting.time_format.blank? ? ::I18n.l(local, :format => :time) : local.strftime(Setting.time_format)) - end - - def day_name(day) - ::I18n.t('date.day_names')[day % 7] - end - - def month_name(month) - ::I18n.t('date.month_names')[month] - end - - def valid_languages - @@valid_languages ||= Dir.glob(File.join(Rails.root, 'config', 'locales', '*.yml')).collect {|f| File.basename(f).split('.').first}.collect(&:to_sym) - end - - def find_language(lang) - @@languages_lookup = valid_languages.inject({}) {|k, v| k[v.to_s.downcase] = v; k } - @@languages_lookup[lang.to_s.downcase] - end - - def set_language_if_valid(lang) - if l = find_language(lang) - ::I18n.locale = l - end - end - - def current_language - ::I18n.locale - end - end -end +module Redmine + module I18n + def self.included(base) + base.extend Redmine::I18n + end + + def l(*args) + case args.size + when 1 + ::I18n.t(*args) + when 2 + if args.last.is_a?(Hash) + ::I18n.t(*args) + elsif args.last.is_a?(String) + ::I18n.t(args.first, :value => args.last) + else + ::I18n.t(args.first, :count => args.last) + end + else + raise "Translation string with multiple values: #{args.first}" + end + end + + def l_or_humanize(s, options={}) + k = "#{options[:prefix]}#{s}".to_sym + ::I18n.t(k, :default => s.to_s.humanize) + end + + def l_hours(hours) + hours = hours.to_f + l((hours < 2.0 ? :label_f_hour : :label_f_hour_plural), :value => ("%.2f" % hours.to_f)) + end + + def ll(lang, str, value=nil) + ::I18n.t(str.to_s, :value => value, :locale => lang.to_s.gsub(%r{(.+)\-(.+)$}) { "#{$1}-#{$2.upcase}" }) + end + + def format_date(date) + return nil unless date + Setting.date_format.blank? ? ::I18n.l(date.to_date) : date.strftime(Setting.date_format) + end + + def format_time(time, include_date = true) + return nil unless time + time = time.to_time if time.is_a?(String) + zone = User.current.time_zone + local = zone ? time.in_time_zone(zone) : (time.utc? ? time.localtime : time) + (include_date ? "#{format_date(local)} " : "") + + (Setting.time_format.blank? ? ::I18n.l(local, :format => :time) : local.strftime(Setting.time_format)) + end + + def day_name(day) + ::I18n.t('date.day_names')[day % 7] + end + + def month_name(month) + ::I18n.t('date.month_names')[month] + end + + def valid_languages + @@valid_languages ||= Dir.glob(File.join(Rails.root, 'config', 'locales', '*.yml')).collect {|f| File.basename(f).split('.').first}.collect(&:to_sym) + end + + def find_language(lang) + @@languages_lookup = valid_languages.inject({}) {|k, v| k[v.to_s.downcase] = v; k } + @@languages_lookup[lang.to_s.downcase] + end + + def set_language_if_valid(lang) + if l = find_language(lang) + ::I18n.locale = l + end + end + + def current_language + ::I18n.locale + end + end +end --- app/views/timelog/index.api.rsb Thu Jan 15 10:12:56 1970 +++ app/views/timelog/index.api.rsb Thu Jan 15 10:12:56 1970 @@ -1,21 +1,18 @@ -api.array :time_entries, api_meta(:total_count => @entry_count, :offset => @offset, :limit => @limit) do - @entries.each do |time_entry| - api.time_entry do - api.id time_entry.id - api.project(:id => time_entry.project_id, :name => time_entry.project.name) unless time_entry.project.nil? - api.issue(:id => time_entry.issue_id) unless time_entry.issue.nil? - api.user(:id => time_entry.user_id, :name => time_entry.user.name) unless time_entry.user.nil? - api.activity(:id => time_entry.activity_id, :name => time_entry.activity.name) unless time_entry.activity.nil? - api.hours time_entry.hours - api.comments time_entry.comments - api.spent_on time_entry.spent_on - api.created_on time_entry.created_on - api.from time_entry.from - api.to time_entry.to - api.pause time_entry.pause - api.updated_on time_entry.updated_on - - render_api_custom_values time_entry.custom_field_values, api - end - end -end +api.array :time_entries, api_meta(:total_count => @entry_count, :offset => @offset, :limit => @limit) do + @entries.each do |time_entry| + api.time_entry do + api.id time_entry.id + api.project(:id => time_entry.project_id, :name => time_entry.project.name) unless time_entry.project.nil? + api.issue(:id => time_entry.issue_id) unless time_entry.issue.nil? + api.user(:id => time_entry.user_id, :name => time_entry.user.name) unless time_entry.user.nil? + api.activity(:id => time_entry.activity_id, :name => time_entry.activity.name) unless time_entry.activity.nil? + api.hours time_entry.hours + api.comments time_entry.comments + api.spent_on time_entry.spent_on + api.created_on time_entry.created_on + api.updated_on time_entry.updated_on + + render_api_custom_values time_entry.custom_field_values, api + end + end +end --- app/views/timelog/new.html.erb Thu Jan 15 10:12:56 1970 +++ app/views/timelog/new.html.erb Thu Jan 15 10:12:56 1970 @@ -1,10 +1,8 @@ -<%= javascript_include_tag 'timelog.js' %> - -

<%= l(:label_spent_time) %>

- -<%= labelled_form_for @time_entry, :url => time_entries_path do |f| %> - <%= hidden_field_tag 'project_id', params[:project_id] if params[:project_id] %> - <%= render :partial => 'form', :locals => {:f => f} %> - <%= submit_tag l(:button_create) %> - <%= submit_tag l(:button_create_and_continue), :name => 'continue' %> -<% end %> +

<%= l(:label_spent_time) %>

+ +<%= labelled_form_for @time_entry, :url => time_entries_path do |f| %> + <%= hidden_field_tag 'project_id', params[:project_id] if params[:project_id] %> + <%= render :partial => 'form', :locals => {:f => f} %> + <%= submit_tag l(:button_create) %> + <%= submit_tag l(:button_create_and_continue), :name => 'continue' %> +<% end %> --- lib/redmine.rb Thu Jan 15 10:12:56 1970 +++ lib/redmine.rb Thu Jan 15 10:12:56 1970 @@ -1,239 +1,238 @@ -require 'redmine/access_control' -require 'redmine/menu_manager' -require 'redmine/activity' -require 'redmine/search' -require 'redmine/custom_field_format' -require 'redmine/mime_type' -require 'redmine/core_ext' -require 'redmine/themes' -require 'redmine/hook' -require 'redmine/plugin' -require 'redmine/notifiable' -require 'redmine/wiki_formatting' -require 'redmine/scm/base' - -begin - require 'RMagick' unless Object.const_defined?(:Magick) -rescue LoadError - # RMagick is not available -end - -if RUBY_VERSION < '1.9' - require 'fastercsv' -else - require 'csv' - FCSV = CSV -end - -Redmine::Scm::Base.add "Subversion" -Redmine::Scm::Base.add "Darcs" -Redmine::Scm::Base.add "Mercurial" -Redmine::Scm::Base.add "Cvs" -Redmine::Scm::Base.add "Bazaar" -Redmine::Scm::Base.add "Git" -Redmine::Scm::Base.add "Filesystem" - -Redmine::CustomFieldFormat.map do |fields| - fields.register 'string' - fields.register 'text' - fields.register 'int', :label => :label_integer - fields.register 'float' - fields.register 'list' - fields.register 'date' - fields.register 'bool', :label => :label_boolean - fields.register 'user', :only => %w(Issue TimeEntry Version Project), :edit_as => 'list' - fields.register 'version', :only => %w(Issue TimeEntry Version Project), :edit_as => 'list' -end - -# Permissions -Redmine::AccessControl.map do |map| - map.permission :view_project, {:projects => [:show], :activities => [:index]}, :public => true - map.permission :search_project, {:search => :index}, :public => true - map.permission :add_project, {:projects => [:new, :create]}, :require => :loggedin - map.permission :edit_project, {:projects => [:settings, :edit, :update]}, :require => :member - map.permission :select_project_modules, {:projects => :modules}, :require => :member - map.permission :manage_members, {:projects => :settings, :members => [:index, :show, :create, :update, :destroy, :autocomplete]}, :require => :member - map.permission :manage_versions, {:projects => :settings, :versions => [:new, :create, :edit, :update, :close_completed, :destroy]}, :require => :member - map.permission :add_subprojects, {:projects => [:new, :create]}, :require => :member - - map.project_module :issue_tracking do |map| - # Issue categories - map.permission :manage_categories, {:projects => :settings, :issue_categories => [:index, :show, :new, :create, :edit, :update, :destroy]}, :require => :member - # Issues - map.permission :view_issues, {:issues => [:index, :show], - :auto_complete => [:issues], - :context_menus => [:issues], - :versions => [:index, :show, :status_by], - :journals => [:index, :diff], - :queries => :index, - :reports => [:issue_report, :issue_report_details]} - map.permission :add_issues, {:issues => [:new, :create, :update_form], :attachments => :upload} - map.permission :edit_issues, {:issues => [:edit, :update, :bulk_edit, :bulk_update, :update_form], :journals => [:new], :attachments => :upload} - map.permission :manage_issue_relations, {:issue_relations => [:index, :show, :create, :destroy]} - map.permission :manage_subtasks, {} - map.permission :set_issues_private, {} - map.permission :set_own_issues_private, {}, :require => :loggedin - map.permission :add_issue_notes, {:issues => [:edit, :update], :journals => [:new], :attachments => :upload} - map.permission :edit_issue_notes, {:journals => :edit}, :require => :loggedin - map.permission :edit_own_issue_notes, {:journals => :edit}, :require => :loggedin - map.permission :move_issues, {:issues => [:bulk_edit, :bulk_update]}, :require => :loggedin - map.permission :delete_issues, {:issues => :destroy}, :require => :member - # Queries - map.permission :manage_public_queries, {:queries => [:new, :create, :edit, :update, :destroy]}, :require => :member - map.permission :save_queries, {:queries => [:new, :create, :edit, :update, :destroy]}, :require => :loggedin - # Watchers - map.permission :view_issue_watchers, {} - map.permission :add_issue_watchers, {:watchers => :new} - map.permission :delete_issue_watchers, {:watchers => :destroy} - end - - map.project_module :time_tracking do |map| - map.permission :log_time, {:timelog => [:new, :create]}, :require => :loggedin - map.permission :view_time_entries, :timelog => [:index, :report, :show] - map.permission :edit_time_entries, {:timelog => [:edit, :update, :destroy, :bulk_edit, :bulk_update]}, :require => :member - map.permission :edit_own_time_entries, {:timelog => [:edit, :update, :destroy,:bulk_edit, :bulk_update]}, :require => :loggedin - map.permission :manage_project_activities, {:project_enumerations => [:update, :destroy]}, :require => :member - map.permission :view_all_users, {:project_enumerations => [:index, :report, :show]}, :require => :loggedin - end - - map.project_module :news do |map| - map.permission :manage_news, {:news => [:new, :create, :edit, :update, :destroy], :comments => [:destroy]}, :require => :member - map.permission :view_news, {:news => [:index, :show]}, :public => true - map.permission :comment_news, {:comments => :create} - end - - map.project_module :documents do |map| - map.permission :manage_documents, {:documents => [:new, :create, :edit, :update, :destroy, :add_attachment]}, :require => :loggedin - map.permission :view_documents, :documents => [:index, :show, :download] - end - - map.project_module :files do |map| - map.permission :manage_files, {:files => [:new, :create]}, :require => :loggedin - map.permission :view_files, :files => :index, :versions => :download - end - - map.project_module :wiki do |map| - map.permission :manage_wiki, {:wikis => [:edit, :destroy]}, :require => :member - map.permission :rename_wiki_pages, {:wiki => :rename}, :require => :member - map.permission :delete_wiki_pages, {:wiki => :destroy}, :require => :member - map.permission :view_wiki_pages, :wiki => [:index, :show, :special, :date_index] - map.permission :export_wiki_pages, :wiki => [:export] - map.permission :view_wiki_edits, :wiki => [:history, :diff, :annotate] - map.permission :edit_wiki_pages, :wiki => [:edit, :update, :preview, :add_attachment] - map.permission :delete_wiki_pages_attachments, {} - map.permission :protect_wiki_pages, {:wiki => :protect}, :require => :member - end - - map.project_module :repository do |map| - map.permission :manage_repository, {:repositories => [:new, :create, :edit, :update, :committers, :destroy]}, :require => :member - map.permission :browse_repository, :repositories => [:show, :browse, :entry, :raw, :annotate, :changes, :diff, :stats, :graph] - map.permission :view_changesets, :repositories => [:show, :revisions, :revision] - map.permission :commit_access, {} - map.permission :manage_related_issues, {:repositories => [:add_related_issue, :remove_related_issue]} - end - - map.project_module :boards do |map| - map.permission :manage_boards, {:boards => [:new, :create, :edit, :update, :destroy]}, :require => :member - map.permission :view_messages, {:boards => [:index, :show], :messages => [:show]}, :public => true - map.permission :add_messages, {:messages => [:new, :reply, :quote]} - map.permission :edit_messages, {:messages => :edit}, :require => :member - map.permission :edit_own_messages, {:messages => :edit}, :require => :loggedin - map.permission :delete_messages, {:messages => :destroy}, :require => :member - map.permission :delete_own_messages, {:messages => :destroy}, :require => :loggedin - end - - map.project_module :calendar do |map| - map.permission :view_calendar, :calendars => [:show, :update] - end - - map.project_module :gantt do |map| - map.permission :view_gantt, :gantts => [:show, :update] - end -end - -Redmine::MenuManager.map :top_menu do |menu| - menu.push :home, :home_path - menu.push :my_page, { :controller => 'my', :action => 'page' }, :if => Proc.new { User.current.logged? } - menu.push :projects, { :controller => 'projects', :action => 'index' }, :caption => :label_project_plural - menu.push :administration, { :controller => 'admin', :action => 'index' }, :if => Proc.new { User.current.admin? }, :last => true - menu.push :help, Redmine::Info.help_url, :last => true -end - -Redmine::MenuManager.map :account_menu do |menu| - menu.push :login, :signin_path, :if => Proc.new { !User.current.logged? } - menu.push :register, { :controller => 'account', :action => 'register' }, :if => Proc.new { !User.current.logged? && Setting.self_registration? } - menu.push :my_account, { :controller => 'my', :action => 'account' }, :if => Proc.new { User.current.logged? } - menu.push :logout, :signout_path, :if => Proc.new { User.current.logged? } -end - -Redmine::MenuManager.map :application_menu do |menu| - # Empty -end - -Redmine::MenuManager.map :admin_menu do |menu| - menu.push :projects, {:controller => 'admin', :action => 'projects'}, :caption => :label_project_plural - menu.push :users, {:controller => 'users'}, :caption => :label_user_plural - menu.push :groups, {:controller => 'groups'}, :caption => :label_group_plural - menu.push :roles, {:controller => 'roles'}, :caption => :label_role_and_permissions - menu.push :trackers, {:controller => 'trackers'}, :caption => :label_tracker_plural - menu.push :issue_statuses, {:controller => 'issue_statuses'}, :caption => :label_issue_status_plural, - :html => {:class => 'issue_statuses'} - menu.push :workflows, {:controller => 'workflows', :action => 'edit'}, :caption => :label_workflow - menu.push :custom_fields, {:controller => 'custom_fields'}, :caption => :label_custom_field_plural, - :html => {:class => 'custom_fields'} - menu.push :enumerations, {:controller => 'enumerations'} - menu.push :settings, {:controller => 'settings'} - menu.push :ldap_authentication, {:controller => 'auth_sources', :action => 'index'}, - :html => {:class => 'server_authentication'} - menu.push :plugins, {:controller => 'admin', :action => 'plugins'}, :last => true - menu.push :info, {:controller => 'admin', :action => 'info'}, :caption => :label_information_plural, :last => true -end - -Redmine::MenuManager.map :project_menu do |menu| - menu.push :overview, { :controller => 'projects', :action => 'show' } - menu.push :activity, { :controller => 'activities', :action => 'index' } - menu.push :roadmap, { :controller => 'versions', :action => 'index' }, :param => :project_id, - :if => Proc.new { |p| p.shared_versions.any? } - menu.push :issues, { :controller => 'issues', :action => 'index' }, :param => :project_id, :caption => :label_issue_plural - menu.push :new_issue, { :controller => 'issues', :action => 'new' }, :param => :project_id, :caption => :label_issue_new, - :html => { :accesskey => Redmine::AccessKeys.key_for(:new_issue) } - menu.push :gantt, { :controller => 'gantts', :action => 'show' }, :param => :project_id, :caption => :label_gantt - menu.push :calendar, { :controller => 'calendars', :action => 'show' }, :param => :project_id, :caption => :label_calendar - menu.push :news, { :controller => 'news', :action => 'index' }, :param => :project_id, :caption => :label_news_plural - menu.push :documents, { :controller => 'documents', :action => 'index' }, :param => :project_id, :caption => :label_document_plural - menu.push :wiki, { :controller => 'wiki', :action => 'show', :id => nil }, :param => :project_id, - :if => Proc.new { |p| p.wiki && !p.wiki.new_record? } - menu.push :boards, { :controller => 'boards', :action => 'index', :id => nil }, :param => :project_id, - :if => Proc.new { |p| p.boards.any? }, :caption => :label_board_plural - menu.push :files, { :controller => 'files', :action => 'index' }, :caption => :label_file_plural, :param => :project_id - menu.push :repository, { :controller => 'repositories', :action => 'show', :repository_id => nil, :path => nil, :rev => nil }, - :if => Proc.new { |p| p.repository && !p.repository.new_record? } - menu.push :settings, { :controller => 'projects', :action => 'settings' }, :last => true -end - -Redmine::Activity.map do |activity| - activity.register :issues, :class_name => %w(Issue Journal) - activity.register :changesets - activity.register :news - activity.register :documents, :class_name => %w(Document Attachment) - activity.register :files, :class_name => 'Attachment' - activity.register :wiki_edits, :class_name => 'WikiContent::Version', :default => false - activity.register :messages, :default => false - activity.register :time_entries, :default => false -end - -Redmine::Search.map do |search| - search.register :issues - search.register :news - search.register :documents - search.register :changesets - search.register :wiki_pages - search.register :messages - search.register :projects -end - -Redmine::WikiFormatting.map do |format| - format.register :textile, Redmine::WikiFormatting::Textile::Formatter, Redmine::WikiFormatting::Textile::Helper -end - -ActionView::Template.register_template_handler :rsb, Redmine::Views::ApiTemplateHandler +require 'redmine/access_control' +require 'redmine/menu_manager' +require 'redmine/activity' +require 'redmine/search' +require 'redmine/custom_field_format' +require 'redmine/mime_type' +require 'redmine/core_ext' +require 'redmine/themes' +require 'redmine/hook' +require 'redmine/plugin' +require 'redmine/notifiable' +require 'redmine/wiki_formatting' +require 'redmine/scm/base' + +begin + require 'RMagick' unless Object.const_defined?(:Magick) +rescue LoadError + # RMagick is not available +end + +if RUBY_VERSION < '1.9' + require 'fastercsv' +else + require 'csv' + FCSV = CSV +end + +Redmine::Scm::Base.add "Subversion" +Redmine::Scm::Base.add "Darcs" +Redmine::Scm::Base.add "Mercurial" +Redmine::Scm::Base.add "Cvs" +Redmine::Scm::Base.add "Bazaar" +Redmine::Scm::Base.add "Git" +Redmine::Scm::Base.add "Filesystem" + +Redmine::CustomFieldFormat.map do |fields| + fields.register 'string' + fields.register 'text' + fields.register 'int', :label => :label_integer + fields.register 'float' + fields.register 'list' + fields.register 'date' + fields.register 'bool', :label => :label_boolean + fields.register 'user', :only => %w(Issue TimeEntry Version Project), :edit_as => 'list' + fields.register 'version', :only => %w(Issue TimeEntry Version Project), :edit_as => 'list' +end + +# Permissions +Redmine::AccessControl.map do |map| + map.permission :view_project, {:projects => [:show], :activities => [:index]}, :public => true + map.permission :search_project, {:search => :index}, :public => true + map.permission :add_project, {:projects => [:new, :create]}, :require => :loggedin + map.permission :edit_project, {:projects => [:settings, :edit, :update]}, :require => :member + map.permission :select_project_modules, {:projects => :modules}, :require => :member + map.permission :manage_members, {:projects => :settings, :members => [:index, :show, :create, :update, :destroy, :autocomplete]}, :require => :member + map.permission :manage_versions, {:projects => :settings, :versions => [:new, :create, :edit, :update, :close_completed, :destroy]}, :require => :member + map.permission :add_subprojects, {:projects => [:new, :create]}, :require => :member + + map.project_module :issue_tracking do |map| + # Issue categories + map.permission :manage_categories, {:projects => :settings, :issue_categories => [:index, :show, :new, :create, :edit, :update, :destroy]}, :require => :member + # Issues + map.permission :view_issues, {:issues => [:index, :show], + :auto_complete => [:issues], + :context_menus => [:issues], + :versions => [:index, :show, :status_by], + :journals => [:index, :diff], + :queries => :index, + :reports => [:issue_report, :issue_report_details]} + map.permission :add_issues, {:issues => [:new, :create, :update_form], :attachments => :upload} + map.permission :edit_issues, {:issues => [:edit, :update, :bulk_edit, :bulk_update, :update_form], :journals => [:new], :attachments => :upload} + map.permission :manage_issue_relations, {:issue_relations => [:index, :show, :create, :destroy]} + map.permission :manage_subtasks, {} + map.permission :set_issues_private, {} + map.permission :set_own_issues_private, {}, :require => :loggedin + map.permission :add_issue_notes, {:issues => [:edit, :update], :journals => [:new], :attachments => :upload} + map.permission :edit_issue_notes, {:journals => :edit}, :require => :loggedin + map.permission :edit_own_issue_notes, {:journals => :edit}, :require => :loggedin + map.permission :move_issues, {:issues => [:bulk_edit, :bulk_update]}, :require => :loggedin + map.permission :delete_issues, {:issues => :destroy}, :require => :member + # Queries + map.permission :manage_public_queries, {:queries => [:new, :create, :edit, :update, :destroy]}, :require => :member + map.permission :save_queries, {:queries => [:new, :create, :edit, :update, :destroy]}, :require => :loggedin + # Watchers + map.permission :view_issue_watchers, {} + map.permission :add_issue_watchers, {:watchers => :new} + map.permission :delete_issue_watchers, {:watchers => :destroy} + end + + map.project_module :time_tracking do |map| + map.permission :log_time, {:timelog => [:new, :create]}, :require => :loggedin + map.permission :view_time_entries, :timelog => [:index, :report, :show] + map.permission :edit_time_entries, {:timelog => [:edit, :update, :destroy, :bulk_edit, :bulk_update]}, :require => :member + map.permission :edit_own_time_entries, {:timelog => [:edit, :update, :destroy,:bulk_edit, :bulk_update]}, :require => :loggedin + map.permission :manage_project_activities, {:project_enumerations => [:update, :destroy]}, :require => :member + end + + map.project_module :news do |map| + map.permission :manage_news, {:news => [:new, :create, :edit, :update, :destroy], :comments => [:destroy]}, :require => :member + map.permission :view_news, {:news => [:index, :show]}, :public => true + map.permission :comment_news, {:comments => :create} + end + + map.project_module :documents do |map| + map.permission :manage_documents, {:documents => [:new, :create, :edit, :update, :destroy, :add_attachment]}, :require => :loggedin + map.permission :view_documents, :documents => [:index, :show, :download] + end + + map.project_module :files do |map| + map.permission :manage_files, {:files => [:new, :create]}, :require => :loggedin + map.permission :view_files, :files => :index, :versions => :download + end + + map.project_module :wiki do |map| + map.permission :manage_wiki, {:wikis => [:edit, :destroy]}, :require => :member + map.permission :rename_wiki_pages, {:wiki => :rename}, :require => :member + map.permission :delete_wiki_pages, {:wiki => :destroy}, :require => :member + map.permission :view_wiki_pages, :wiki => [:index, :show, :special, :date_index] + map.permission :export_wiki_pages, :wiki => [:export] + map.permission :view_wiki_edits, :wiki => [:history, :diff, :annotate] + map.permission :edit_wiki_pages, :wiki => [:edit, :update, :preview, :add_attachment] + map.permission :delete_wiki_pages_attachments, {} + map.permission :protect_wiki_pages, {:wiki => :protect}, :require => :member + end + + map.project_module :repository do |map| + map.permission :manage_repository, {:repositories => [:new, :create, :edit, :update, :committers, :destroy]}, :require => :member + map.permission :browse_repository, :repositories => [:show, :browse, :entry, :raw, :annotate, :changes, :diff, :stats, :graph] + map.permission :view_changesets, :repositories => [:show, :revisions, :revision] + map.permission :commit_access, {} + map.permission :manage_related_issues, {:repositories => [:add_related_issue, :remove_related_issue]} + end + + map.project_module :boards do |map| + map.permission :manage_boards, {:boards => [:new, :create, :edit, :update, :destroy]}, :require => :member + map.permission :view_messages, {:boards => [:index, :show], :messages => [:show]}, :public => true + map.permission :add_messages, {:messages => [:new, :reply, :quote]} + map.permission :edit_messages, {:messages => :edit}, :require => :member + map.permission :edit_own_messages, {:messages => :edit}, :require => :loggedin + map.permission :delete_messages, {:messages => :destroy}, :require => :member + map.permission :delete_own_messages, {:messages => :destroy}, :require => :loggedin + end + + map.project_module :calendar do |map| + map.permission :view_calendar, :calendars => [:show, :update] + end + + map.project_module :gantt do |map| + map.permission :view_gantt, :gantts => [:show, :update] + end +end + +Redmine::MenuManager.map :top_menu do |menu| + menu.push :home, :home_path + menu.push :my_page, { :controller => 'my', :action => 'page' }, :if => Proc.new { User.current.logged? } + menu.push :projects, { :controller => 'projects', :action => 'index' }, :caption => :label_project_plural + menu.push :administration, { :controller => 'admin', :action => 'index' }, :if => Proc.new { User.current.admin? }, :last => true + menu.push :help, Redmine::Info.help_url, :last => true +end + +Redmine::MenuManager.map :account_menu do |menu| + menu.push :login, :signin_path, :if => Proc.new { !User.current.logged? } + menu.push :register, { :controller => 'account', :action => 'register' }, :if => Proc.new { !User.current.logged? && Setting.self_registration? } + menu.push :my_account, { :controller => 'my', :action => 'account' }, :if => Proc.new { User.current.logged? } + menu.push :logout, :signout_path, :if => Proc.new { User.current.logged? } +end + +Redmine::MenuManager.map :application_menu do |menu| + # Empty +end + +Redmine::MenuManager.map :admin_menu do |menu| + menu.push :projects, {:controller => 'admin', :action => 'projects'}, :caption => :label_project_plural + menu.push :users, {:controller => 'users'}, :caption => :label_user_plural + menu.push :groups, {:controller => 'groups'}, :caption => :label_group_plural + menu.push :roles, {:controller => 'roles'}, :caption => :label_role_and_permissions + menu.push :trackers, {:controller => 'trackers'}, :caption => :label_tracker_plural + menu.push :issue_statuses, {:controller => 'issue_statuses'}, :caption => :label_issue_status_plural, + :html => {:class => 'issue_statuses'} + menu.push :workflows, {:controller => 'workflows', :action => 'edit'}, :caption => :label_workflow + menu.push :custom_fields, {:controller => 'custom_fields'}, :caption => :label_custom_field_plural, + :html => {:class => 'custom_fields'} + menu.push :enumerations, {:controller => 'enumerations'} + menu.push :settings, {:controller => 'settings'} + menu.push :ldap_authentication, {:controller => 'auth_sources', :action => 'index'}, + :html => {:class => 'server_authentication'} + menu.push :plugins, {:controller => 'admin', :action => 'plugins'}, :last => true + menu.push :info, {:controller => 'admin', :action => 'info'}, :caption => :label_information_plural, :last => true +end + +Redmine::MenuManager.map :project_menu do |menu| + menu.push :overview, { :controller => 'projects', :action => 'show' } + menu.push :activity, { :controller => 'activities', :action => 'index' } + menu.push :roadmap, { :controller => 'versions', :action => 'index' }, :param => :project_id, + :if => Proc.new { |p| p.shared_versions.any? } + menu.push :issues, { :controller => 'issues', :action => 'index' }, :param => :project_id, :caption => :label_issue_plural + menu.push :new_issue, { :controller => 'issues', :action => 'new' }, :param => :project_id, :caption => :label_issue_new, + :html => { :accesskey => Redmine::AccessKeys.key_for(:new_issue) } + menu.push :gantt, { :controller => 'gantts', :action => 'show' }, :param => :project_id, :caption => :label_gantt + menu.push :calendar, { :controller => 'calendars', :action => 'show' }, :param => :project_id, :caption => :label_calendar + menu.push :news, { :controller => 'news', :action => 'index' }, :param => :project_id, :caption => :label_news_plural + menu.push :documents, { :controller => 'documents', :action => 'index' }, :param => :project_id, :caption => :label_document_plural + menu.push :wiki, { :controller => 'wiki', :action => 'show', :id => nil }, :param => :project_id, + :if => Proc.new { |p| p.wiki && !p.wiki.new_record? } + menu.push :boards, { :controller => 'boards', :action => 'index', :id => nil }, :param => :project_id, + :if => Proc.new { |p| p.boards.any? }, :caption => :label_board_plural + menu.push :files, { :controller => 'files', :action => 'index' }, :caption => :label_file_plural, :param => :project_id + menu.push :repository, { :controller => 'repositories', :action => 'show', :repository_id => nil, :path => nil, :rev => nil }, + :if => Proc.new { |p| p.repository && !p.repository.new_record? } + menu.push :settings, { :controller => 'projects', :action => 'settings' }, :last => true +end + +Redmine::Activity.map do |activity| + activity.register :issues, :class_name => %w(Issue Journal) + activity.register :changesets + activity.register :news + activity.register :documents, :class_name => %w(Document Attachment) + activity.register :files, :class_name => 'Attachment' + activity.register :wiki_edits, :class_name => 'WikiContent::Version', :default => false + activity.register :messages, :default => false + activity.register :time_entries, :default => false +end + +Redmine::Search.map do |search| + search.register :issues + search.register :news + search.register :documents + search.register :changesets + search.register :wiki_pages + search.register :messages + search.register :projects +end + +Redmine::WikiFormatting.map do |format| + format.register :textile, Redmine::WikiFormatting::Textile::Formatter, Redmine::WikiFormatting::Textile::Helper +end + +ActionView::Template.register_template_handler :rsb, Redmine::Views::ApiTemplateHandler --- app/views/timelog/show.api.rsb Thu Jan 15 10:12:56 1970 +++ app/views/timelog/show.api.rsb Thu Jan 15 10:12:56 1970 @@ -1,17 +1,14 @@ -api.time_entry do - api.id @time_entry.id - api.project(:id => @time_entry.project_id, :name => @time_entry.project.name) unless @time_entry.project.nil? - api.issue(:id => @time_entry.issue_id) unless @time_entry.issue.nil? - api.user(:id => @time_entry.user_id, :name => @time_entry.user.name) unless @time_entry.user.nil? - api.activity(:id => @time_entry.activity_id, :name => @time_entry.activity.name) unless @time_entry.activity.nil? - api.hours @time_entry.hours - api.comments @time_entry.comments - api.spent_on @time_entry.spent_on - api.from @time_entry.from - api.to @time_entry.to - api.pause @time_entry.pause - api.created_on @time_entry.created_on - api.updated_on @time_entry.updated_on - - render_api_custom_values @time_entry.custom_field_values, api -end +api.time_entry do + api.id @time_entry.id + api.project(:id => @time_entry.project_id, :name => @time_entry.project.name) unless @time_entry.project.nil? + api.issue(:id => @time_entry.issue_id) unless @time_entry.issue.nil? + api.user(:id => @time_entry.user_id, :name => @time_entry.user.name) unless @time_entry.user.nil? + api.activity(:id => @time_entry.activity_id, :name => @time_entry.activity.name) unless @time_entry.activity.nil? + api.hours @time_entry.hours + api.comments @time_entry.comments + api.spent_on @time_entry.spent_on + api.created_on @time_entry.created_on + api.updated_on @time_entry.updated_on + + render_api_custom_values @time_entry.custom_field_values, api +end --- app/views/projects/show.html.erb Thu Jan 15 10:12:56 1970 +++ app/views/projects/show.html.erb Thu Jan 15 10:12:56 1970 @@ -1,85 +1,82 @@ -
- <% if User.current.allowed_to?(:add_subprojects, @project) %> - <%= link_to l(:label_subproject_new), {:controller => 'projects', :action => 'new', :parent_id => @project}, :class => 'icon icon-add' %> - <% end %> -
- -

<%=l(:label_overview)%>

- -
-
- <%= textilizable @project.description %> -
- - - <% if User.current.allowed_to?(:view_issues, @project) %> -
-

<%=l(:label_issue_tracking)%>

- -

- <%= link_to l(:label_issue_view_all), :controller => 'issues', :action => 'index', :project_id => @project, :set_filter => 1 %> - <% if User.current.allowed_to?(:view_calendar, @project, :global => true) %> - | <%= link_to(l(:label_calendar), :controller => 'calendars', :action => 'show', :project_id => @project) %> - <% end %> - <% if User.current.allowed_to?(:view_gantt, @project, :global => true) %> - | <%= link_to(l(:label_gantt), :controller => 'gantts', :action => 'show', :project_id => @project) %> - <% end %> -

-
- <% end %> - <%= call_hook(:view_projects_show_left, :project => @project) %> -
- -
- <%= render :partial => 'members_box' %> - - <% if @news.any? && authorize_for('news', 'index') %> -
-

<%=l(:label_news_latest)%>

- <%= render :partial => 'news/news', :collection => @news %> -

<%= link_to l(:label_news_view_all), :controller => 'news', :action => 'index', :project_id => @project %>

-
- <% end %> - <%= call_hook(:view_projects_show_right, :project => @project) %> -
- -<% content_for :sidebar do %> - <% if @total_hours.present? %> -

<%= l(:label_spent_time) %>

-

<%= l_hours(@total_hours) %>

-

<%= link_to l(:button_log_time), - {:controller => 'timelog', :action => 'new', :project_id => @project, :issue_id => @issue}, - :class => '' if User.current.allowed_to?(:log_time, @project, :global => true) %> | - <%= link_to(l(:label_details), project_time_entries_path(@project)) %> | - <%= link_to(l(:label_report), report_project_time_entries_path(@project)) %>

- <% end %> - <%= call_hook(:view_projects_show_sidebar_bottom, :project => @project) %> -<% end %> - -<% content_for :header_tags do %> -<%= auto_discovery_link_tag(:atom, {:controller => 'activities', :action => 'index', :id => @project, :format => 'atom', :key => User.current.rss_key}) %> -<% end %> - -<% html_title(l(:label_overview)) -%> +
+ <% if User.current.allowed_to?(:add_subprojects, @project) %> + <%= link_to l(:label_subproject_new), {:controller => 'projects', :action => 'new', :parent_id => @project}, :class => 'icon icon-add' %> + <% end %> +
+ +

<%=l(:label_overview)%>

+ +
+
+ <%= textilizable @project.description %> +
+ + + <% if User.current.allowed_to?(:view_issues, @project) %> +
+

<%=l(:label_issue_tracking)%>

+ +

+ <%= link_to l(:label_issue_view_all), :controller => 'issues', :action => 'index', :project_id => @project, :set_filter => 1 %> + <% if User.current.allowed_to?(:view_calendar, @project, :global => true) %> + | <%= link_to(l(:label_calendar), :controller => 'calendars', :action => 'show', :project_id => @project) %> + <% end %> + <% if User.current.allowed_to?(:view_gantt, @project, :global => true) %> + | <%= link_to(l(:label_gantt), :controller => 'gantts', :action => 'show', :project_id => @project) %> + <% end %> +

+
+ <% end %> + <%= call_hook(:view_projects_show_left, :project => @project) %> +
+ +
+ <%= render :partial => 'members_box' %> + + <% if @news.any? && authorize_for('news', 'index') %> +
+

<%=l(:label_news_latest)%>

+ <%= render :partial => 'news/news', :collection => @news %> +

<%= link_to l(:label_news_view_all), :controller => 'news', :action => 'index', :project_id => @project %>

+
+ <% end %> + <%= call_hook(:view_projects_show_right, :project => @project) %> +
+ +<% content_for :sidebar do %> + <% if @total_hours.present? %> +

<%= l(:label_spent_time) %>

+

<%= l_hours(@total_hours) %>

+

<%= link_to(l(:label_details), project_time_entries_path(@project)) %> | + <%= link_to(l(:label_report), report_project_time_entries_path(@project)) %>

+ <% end %> + <%= call_hook(:view_projects_show_sidebar_bottom, :project => @project) %> +<% end %> + +<% content_for :header_tags do %> +<%= auto_discovery_link_tag(:atom, {:controller => 'activities', :action => 'index', :id => @project, :format => 'atom', :key => User.current.rss_key}) %> +<% end %> + +<% html_title(l(:label_overview)) -%> --- app/models/time_entry.rb Thu Jan 15 10:12:56 1970 +++ app/models/time_entry.rb Thu Jan 15 10:12:56 1970 @@ -1,158 +1,120 @@ -# Redmine - project management software -# Copyright (C) 2006-2012 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. - -class TimeEntry < ActiveRecord::Base - include Redmine::SafeAttributes - # could have used polymorphic association - # project association here allows easy loading of time entries at project level with one database trip - belongs_to :project - belongs_to :issue - belongs_to :user - belongs_to :activity, :class_name => 'TimeEntryActivity', :foreign_key => 'activity_id' - - attr_protected :project_id, :user_id, :tyear, :tmonth, :tweek - - acts_as_customizable - acts_as_event :title => Proc.new {|o| "#{l_hours(o.hours)} (#{(o.issue || o.project).event_title}) #{l_from(o.from)} #{l_to(o.to)} #{l_to(o.pause)}"}, - :url => Proc.new {|o| {:controller => 'timelog', :action => 'index', :project_id => o.project, :issue_id => o.issue}}, - :author => :user, - :description => :comments - - acts_as_activity_provider :timestamp => "#{table_name}.created_on", - :author_key => :user_id, - :find_options => {:include => :project} - - validates_presence_of :user_id, :activity_id, :project_id, :hours, :spent_on - validates_numericality_of :hours, :allow_nil => true, :message => :invalid - validates_length_of :comments, :maximum => 255, :allow_nil => true - validates_length_of :from, :maximum => 5, :allow_nil => true, :message => :invalid - validates_length_of :to, :maximum => 5, :allow_nil => true, :message => :invalid - validates_length_of :pause, :maximum => 3, :allow_nil => true, :message => :invalid - before_validation :set_project_if_nil - validate :validate_time_entry - - scope :visible, lambda {|*args| - - - baseCond = Project.allowed_to_condition(args.shift || User.current, :view_time_entries, *args) - - if (baseCond == nil) - baseCond = "" - end - - projects = Project.all(:conditions => Project.allowed_to_condition(User.current, :view_all_users)) - - baseCond += "AND (#{TimeEntry.table_name}.user_id = #{User.current.id} " - - if projects != nil && projects.length > 0 - - prjIds = [] - - baseCond += " OR #{TimeEntry.table_name}.project_id IN (" - - projects.each {|el| - baseCond += el.id.to_s() - baseCond += "," - } - - baseCond = baseCond[0, baseCond.length - 1] - - baseCond += ")"; - end - - baseCond += ")"; - -Rails.logger.error baseCond - - {:include => :project, - :conditions => baseCond - } -# end - } - scope :on_issue, lambda {|issue| { - :include => :issue, - :conditions => "#{Issue.table_name}.root_id = #{issue.root_id} AND #{Issue.table_name}.lft >= #{issue.lft} AND #{Issue.table_name}.rgt <= #{issue.rgt}" - }} - scope :on_project, lambda {|project, include_subprojects| { - :include => :project, - :conditions => project.project_condition(include_subprojects) - }} - scope :spent_between, lambda {|from, to| - if from && to - {:conditions => ["#{TimeEntry.table_name}.spent_on BETWEEN ? AND ?", from, to]} - elsif from - {:conditions => ["#{TimeEntry.table_name}.spent_on >= ?", from]} - elsif to - {:conditions => ["#{TimeEntry.table_name}.spent_on <= ?", to]} - else - {} - end - } - - safe_attributes 'hours', 'comments', 'issue_id', 'activity_id', 'spent_on', 'from', 'to', 'pause', 'custom_field_values', 'custom_fields' - - def initialize(attributes=nil, *args) - super - if new_record? && self.activity.nil? - if default_activity = TimeEntryActivity.default - self.activity_id = default_activity.id - end - self.hours = nil if hours == 0 - end - end - - def set_project_if_nil - self.project = issue.project if issue && project.nil? - end - - def validate_time_entry - errors.add :hours, :invalid if hours && (hours < 0 || hours >= 1000) - errors.add :project_id, :invalid if project.nil? - errors.add :issue_id, :invalid if (issue_id && !issue) || (issue && project!=issue.project) - end - - def hours=(h) - write_attribute :hours, (h.is_a?(String) ? (h.to_hours || h) : h) - end - - def hours - h = read_attribute(:hours) - if h.is_a?(Float) - h.round(2) - else - h - end - end - - # tyear, tmonth, tweek assigned where setting spent_on attributes - # these attributes make time aggregations easier - def spent_on=(date) - super - if spent_on.is_a?(Time) - self.spent_on = spent_on.to_date - end - self.tyear = spent_on ? spent_on.year : nil - self.tmonth = spent_on ? spent_on.month : nil - self.tweek = spent_on ? Date.civil(spent_on.year, spent_on.month, spent_on.day).cweek : nil - end - - # Returns true if the time entry can be edited by usr, otherwise false - def editable_by?(usr) - (usr == user && usr.allowed_to?(:edit_own_time_entries, project)) || usr.allowed_to?(:edit_time_entries, project) - end - -end +# Redmine - project management software +# Copyright (C) 2006-2012 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. + +class TimeEntry < ActiveRecord::Base + include Redmine::SafeAttributes + # could have used polymorphic association + # project association here allows easy loading of time entries at project level with one database trip + belongs_to :project + belongs_to :issue + belongs_to :user + belongs_to :activity, :class_name => 'TimeEntryActivity', :foreign_key => 'activity_id' + + attr_protected :project_id, :user_id, :tyear, :tmonth, :tweek + + acts_as_customizable + acts_as_event :title => Proc.new {|o| "#{l_hours(o.hours)} (#{(o.issue || o.project).event_title})"}, + :url => Proc.new {|o| {:controller => 'timelog', :action => 'index', :project_id => o.project, :issue_id => o.issue}}, + :author => :user, + :description => :comments + + acts_as_activity_provider :timestamp => "#{table_name}.created_on", + :author_key => :user_id, + :find_options => {:include => :project} + + validates_presence_of :user_id, :activity_id, :project_id, :hours, :spent_on + validates_numericality_of :hours, :allow_nil => true, :message => :invalid + validates_length_of :comments, :maximum => 255, :allow_nil => true + before_validation :set_project_if_nil + validate :validate_time_entry + + scope :visible, lambda {|*args| { + :include => :project, + :conditions => Project.allowed_to_condition(args.shift || User.current, :view_time_entries, *args) + }} + scope :on_issue, lambda {|issue| { + :include => :issue, + :conditions => "#{Issue.table_name}.root_id = #{issue.root_id} AND #{Issue.table_name}.lft >= #{issue.lft} AND #{Issue.table_name}.rgt <= #{issue.rgt}" + }} + scope :on_project, lambda {|project, include_subprojects| { + :include => :project, + :conditions => project.project_condition(include_subprojects) + }} + scope :spent_between, lambda {|from, to| + if from && to + {:conditions => ["#{TimeEntry.table_name}.spent_on BETWEEN ? AND ?", from, to]} + elsif from + {:conditions => ["#{TimeEntry.table_name}.spent_on >= ?", from]} + elsif to + {:conditions => ["#{TimeEntry.table_name}.spent_on <= ?", to]} + else + {} + end + } + + safe_attributes 'hours', 'comments', 'issue_id', 'activity_id', 'spent_on', 'custom_field_values', 'custom_fields' + + def initialize(attributes=nil, *args) + super + if new_record? && self.activity.nil? + if default_activity = TimeEntryActivity.default + self.activity_id = default_activity.id + end + self.hours = nil if hours == 0 + end + end + + def set_project_if_nil + self.project = issue.project if issue && project.nil? + end + + def validate_time_entry + errors.add :hours, :invalid if hours && (hours < 0 || hours >= 1000) + errors.add :project_id, :invalid if project.nil? + errors.add :issue_id, :invalid if (issue_id && !issue) || (issue && project!=issue.project) + end + + def hours=(h) + write_attribute :hours, (h.is_a?(String) ? (h.to_hours || h) : h) + end + + def hours + h = read_attribute(:hours) + if h.is_a?(Float) + h.round(2) + else + h + end + end + + # tyear, tmonth, tweek assigned where setting spent_on attributes + # these attributes make time aggregations easier + def spent_on=(date) + super + if spent_on.is_a?(Time) + self.spent_on = spent_on.to_date + end + self.tyear = spent_on ? spent_on.year : nil + self.tmonth = spent_on ? spent_on.month : nil + self.tweek = spent_on ? Date.civil(spent_on.year, spent_on.month, spent_on.day).cweek : nil + end + + # Returns true if the time entry can be edited by usr, otherwise false + def editable_by?(usr) + (usr == user && usr.allowed_to?(:edit_own_time_entries, project)) || usr.allowed_to?(:edit_time_entries, project) + end +end --- app/helpers/timelog_helper.rb Thu Jan 15 10:12:56 1970 +++ app/helpers/timelog_helper.rb Thu Jan 15 10:12:56 1970 @@ -1,200 +1,196 @@ -# encoding: utf-8 -# -# Redmine - project management software -# Copyright (C) 2006-2012 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. - -module TimelogHelper - include ApplicationHelper - - def render_timelog_breadcrumb - links = [] - links << link_to(l(:label_project_all), {:project_id => nil, :issue_id => nil}) - links << link_to(h(@project), {:project_id => @project, :issue_id => nil}) if @project - if @issue - if @issue.visible? - links << link_to_issue(@issue, :subject => false) - else - links << "##{@issue.id}" - end - end - breadcrumb links - end - - # Returns a collection of activities for a select field. time_entry - # is optional and will be used to check if the selected TimeEntryActivity - # is active. - def activity_collection_for_select_options(time_entry=nil, project=nil) - project ||= @project - if project.nil? - activities = TimeEntryActivity.shared.active - else - activities = project.activities - end - - collection = [] - if time_entry && time_entry.activity && !time_entry.activity.active? - collection << [ "--- #{l(:actionview_instancetag_blank_option)} ---", '' ] - else - collection << [ "--- #{l(:actionview_instancetag_blank_option)} ---", '' ] unless activities.detect(&:is_default) - end - activities.each { |a| collection << [a.name, a.id] } - collection - end - - def select_hours(data, criteria, value) - if value.to_s.empty? - data.select {|row| row[criteria].blank? } - else - data.select {|row| row[criteria].to_s == value.to_s} - end - end - - def sum_hours(data) - sum = 0 - data.each do |row| - sum += row['hours'].to_f - end - sum - end - - def options_for_period_select(value) - options_for_select([[l(:label_all_time), 'all'], - [l(:label_today), 'today'], - [l(:label_yesterday), 'yesterday'], - [l(:label_this_week), 'current_week'], - [l(:label_last_week), 'last_week'], - [l(:label_last_n_days, 7), '7_days'], - [l(:label_this_month), 'current_month'], - [l(:label_last_month), 'last_month'], - [l(:label_last_n_days, 30), '30_days'], - [l(:label_this_year), 'current_year']], - value) - end - - def entries_to_csv(entries) - decimal_separator = l(:general_csv_decimal_separator) - custom_fields = TimeEntryCustomField.find(:all) - export = FCSV.generate(:col_sep => l(:general_csv_separator)) do |csv| - # csv header fields - headers = [l(:field_spent_on), - l(:field_from), - l(:field_to), - l(:field_user), - l(:field_activity), - l(:field_project), - l(:field_issue), - l(:field_tracker), - l(:field_subject), - l(:field_hours), - l(:field_comments) - ] - # Export custom fields - headers += custom_fields.collect(&:name) - - csv << headers.collect {|c| Redmine::CodesetUtil.from_utf8( - c.to_s, - l(:general_csv_encoding) ) } - # csv lines - entries.each do |entry| - fields = [format_date(entry.spent_on), - entry.from, - entry.to, - entry.user, - entry.activity, - entry.project, - (entry.issue ? entry.issue.id : nil), - (entry.issue ? entry.issue.tracker : nil), - (entry.issue ? entry.issue.subject : nil), - entry.hours.to_s.gsub('.', decimal_separator), - entry.comments - ] - fields += custom_fields.collect {|f| show_value(entry.custom_field_values.detect {|v| v.custom_field_id == f.id}) } - - csv << fields.collect {|c| Redmine::CodesetUtil.from_utf8( - c.to_s, - l(:general_csv_encoding) ) } - end - end - export - end - - def format_criteria_value(criteria_options, value) - if value.blank? - "[#{l(:label_none)}]" - elsif k = criteria_options[:klass] - obj = k.find_by_id(value.to_i) - if obj.is_a?(Issue) - obj.visible? ? "#{obj.tracker} ##{obj.id}: #{obj.subject}" : "##{obj.id}" - else - obj - end - else - format_value(value, criteria_options[:format]) - end - end - - def report_to_csv(report) - decimal_separator = l(:general_csv_decimal_separator) - export = FCSV.generate(:col_sep => l(:general_csv_separator)) do |csv| - # Column headers - headers = report.criteria.collect {|criteria| l(report.available_criteria[criteria][:label]) } - headers += report.periods - headers << l(:label_total) - csv << headers.collect {|c| Redmine::CodesetUtil.from_utf8( - c.to_s, - l(:general_csv_encoding) ) } - # Content - report_criteria_to_csv(csv, report.available_criteria, report.columns, report.criteria, report.periods, report.hours) - # Total row - str_total = Redmine::CodesetUtil.from_utf8(l(:label_total), l(:general_csv_encoding)) - row = [ str_total ] + [''] * (report.criteria.size - 1) - total = 0 - report.periods.each do |period| - sum = sum_hours(select_hours(report.hours, report.columns, period.to_s)) - total += sum - row << (sum > 0 ? ("%.2f" % sum).gsub('.',decimal_separator) : '') - end - row << ("%.2f" % total).gsub('.',decimal_separator) - csv << row - end - export - end - - def report_criteria_to_csv(csv, available_criteria, columns, criteria, periods, hours, level=0) - decimal_separator = l(:general_csv_decimal_separator) - hours.collect {|h| h[criteria[level]].to_s}.uniq.each do |value| - hours_for_value = select_hours(hours, criteria[level], value) - next if hours_for_value.empty? - row = [''] * level - row << Redmine::CodesetUtil.from_utf8( - format_criteria_value(available_criteria[criteria[level]], value).to_s, - l(:general_csv_encoding) ) - row += [''] * (criteria.length - level - 1) - total = 0 - periods.each do |period| - sum = sum_hours(select_hours(hours_for_value, columns, period.to_s)) - total += sum - row << (sum > 0 ? ("%.2f" % sum).gsub('.',decimal_separator) : '') - end - row << ("%.2f" % total).gsub('.',decimal_separator) - csv << row - if criteria.length > level + 1 - report_criteria_to_csv(csv, available_criteria, columns, criteria, periods, hours_for_value, level + 1) - end - end - end -end +# encoding: utf-8 +# +# Redmine - project management software +# Copyright (C) 2006-2012 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. + +module TimelogHelper + include ApplicationHelper + + def render_timelog_breadcrumb + links = [] + links << link_to(l(:label_project_all), {:project_id => nil, :issue_id => nil}) + links << link_to(h(@project), {:project_id => @project, :issue_id => nil}) if @project + if @issue + if @issue.visible? + links << link_to_issue(@issue, :subject => false) + else + links << "##{@issue.id}" + end + end + breadcrumb links + end + + # Returns a collection of activities for a select field. time_entry + # is optional and will be used to check if the selected TimeEntryActivity + # is active. + def activity_collection_for_select_options(time_entry=nil, project=nil) + project ||= @project + if project.nil? + activities = TimeEntryActivity.shared.active + else + activities = project.activities + end + + collection = [] + if time_entry && time_entry.activity && !time_entry.activity.active? + collection << [ "--- #{l(:actionview_instancetag_blank_option)} ---", '' ] + else + collection << [ "--- #{l(:actionview_instancetag_blank_option)} ---", '' ] unless activities.detect(&:is_default) + end + activities.each { |a| collection << [a.name, a.id] } + collection + end + + def select_hours(data, criteria, value) + if value.to_s.empty? + data.select {|row| row[criteria].blank? } + else + data.select {|row| row[criteria].to_s == value.to_s} + end + end + + def sum_hours(data) + sum = 0 + data.each do |row| + sum += row['hours'].to_f + end + sum + end + + def options_for_period_select(value) + options_for_select([[l(:label_all_time), 'all'], + [l(:label_today), 'today'], + [l(:label_yesterday), 'yesterday'], + [l(:label_this_week), 'current_week'], + [l(:label_last_week), 'last_week'], + [l(:label_last_n_days, 7), '7_days'], + [l(:label_this_month), 'current_month'], + [l(:label_last_month), 'last_month'], + [l(:label_last_n_days, 30), '30_days'], + [l(:label_this_year), 'current_year']], + value) + end + + def entries_to_csv(entries) + decimal_separator = l(:general_csv_decimal_separator) + custom_fields = TimeEntryCustomField.find(:all) + export = FCSV.generate(:col_sep => l(:general_csv_separator)) do |csv| + # csv header fields + headers = [l(:field_spent_on), + l(:field_user), + l(:field_activity), + l(:field_project), + l(:field_issue), + l(:field_tracker), + l(:field_subject), + l(:field_hours), + l(:field_comments) + ] + # Export custom fields + headers += custom_fields.collect(&:name) + + csv << headers.collect {|c| Redmine::CodesetUtil.from_utf8( + c.to_s, + l(:general_csv_encoding) ) } + # csv lines + entries.each do |entry| + fields = [format_date(entry.spent_on), + entry.user, + entry.activity, + entry.project, + (entry.issue ? entry.issue.id : nil), + (entry.issue ? entry.issue.tracker : nil), + (entry.issue ? entry.issue.subject : nil), + entry.hours.to_s.gsub('.', decimal_separator), + entry.comments + ] + fields += custom_fields.collect {|f| show_value(entry.custom_field_values.detect {|v| v.custom_field_id == f.id}) } + + csv << fields.collect {|c| Redmine::CodesetUtil.from_utf8( + c.to_s, + l(:general_csv_encoding) ) } + end + end + export + end + + def format_criteria_value(criteria_options, value) + if value.blank? + "[#{l(:label_none)}]" + elsif k = criteria_options[:klass] + obj = k.find_by_id(value.to_i) + if obj.is_a?(Issue) + obj.visible? ? "#{obj.tracker} ##{obj.id}: #{obj.subject}" : "##{obj.id}" + else + obj + end + else + format_value(value, criteria_options[:format]) + end + end + + def report_to_csv(report) + decimal_separator = l(:general_csv_decimal_separator) + export = FCSV.generate(:col_sep => l(:general_csv_separator)) do |csv| + # Column headers + headers = report.criteria.collect {|criteria| l(report.available_criteria[criteria][:label]) } + headers += report.periods + headers << l(:label_total) + csv << headers.collect {|c| Redmine::CodesetUtil.from_utf8( + c.to_s, + l(:general_csv_encoding) ) } + # Content + report_criteria_to_csv(csv, report.available_criteria, report.columns, report.criteria, report.periods, report.hours) + # Total row + str_total = Redmine::CodesetUtil.from_utf8(l(:label_total), l(:general_csv_encoding)) + row = [ str_total ] + [''] * (report.criteria.size - 1) + total = 0 + report.periods.each do |period| + sum = sum_hours(select_hours(report.hours, report.columns, period.to_s)) + total += sum + row << (sum > 0 ? ("%.2f" % sum).gsub('.',decimal_separator) : '') + end + row << ("%.2f" % total).gsub('.',decimal_separator) + csv << row + end + export + end + + def report_criteria_to_csv(csv, available_criteria, columns, criteria, periods, hours, level=0) + decimal_separator = l(:general_csv_decimal_separator) + hours.collect {|h| h[criteria[level]].to_s}.uniq.each do |value| + hours_for_value = select_hours(hours, criteria[level], value) + next if hours_for_value.empty? + row = [''] * level + row << Redmine::CodesetUtil.from_utf8( + format_criteria_value(available_criteria[criteria[level]], value).to_s, + l(:general_csv_encoding) ) + row += [''] * (criteria.length - level - 1) + total = 0 + periods.each do |period| + sum = sum_hours(select_hours(hours_for_value, columns, period.to_s)) + total += sum + row << (sum > 0 ? ("%.2f" % sum).gsub('.',decimal_separator) : '') + end + row << ("%.2f" % total).gsub('.',decimal_separator) + csv << row + if criteria.length > level + 1 + report_criteria_to_csv(csv, available_criteria, columns, criteria, periods, hours_for_value, level + 1) + end + end + end +end