Forum messages:
-https://www.chiliproject.org, someone@foo.bar
-
-
- displays: https://www.chiliproject.org, someone@foo.bar
-
- If you want to display a specific text instead of the URL, you can use the standard textile syntax:
-
-
-"ChiliProject web site":https://www.chiliproject.org
-
-
- displays: ChiliProject web site
-
-
- Text formatting
-
-
- For things such as headlines, bold, tables, lists, ChiliProject supports Textile syntax. See http://www.textism.com/tools/textile/ for information on using any of these features. A few samples are included below, but the engine is capable of much more of that.
-
- Font style
-
-
-* *bold*
-* _italic_
-* _*bold italic*_
-* +underline+
-* -strike-through-
-
-
- Display:
-
-
- - bold
- - italic
- - *bold italic*
- - underline
- strike-through
-
-
- Inline images
-
-
- - !image_url! displays an image located at image_url (textile syntax)
- - !>image_url! right floating image
- - If you have an image attached to your wiki page, it can be displayed inline using its filename: !attached_image.png!
-
-
- Headings
-
-
-h1. Heading
-h2. Subheading
-h3. Subsubheading
-
-
- ChiliProject assigns an anchor to each of those headings thus you can link to them with "#Heading", "#Subheading" and so forth.
-
-
- Paragraphs
-
-
-p>. right aligned
-p=. centered
-
-
- This is a centered paragraph.
-
-
- Blockquotes
-
- Start the paragraph with bq.
-
-
-bq. Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
-To go live, all you need to add is a database and a web server.
-
-
- Display:
-
-
- Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
To go live, all you need to add is a database and a web server.
-
-
-
- Table of content
-
-
-{{toc}} => left aligned toc
-{{>toc}} => right aligned toc
-
-
- Macros
-
- ChiliProject has the following builtin macros:
-
- hello_world
Sample macro.
include
Include a wiki page. Example:
-
- {{include(Foo)}}
macro_list
Displays a list of all available macros, including description if available.
-
-
- Code highlighting
-
+
+ - You can prevent ChiliProject links from being parsed by preceding them with an exclamation mark: !
+
+
+
+ External links
+
+ HTTP URLs and email addresses are automatically turned into clickable links:
+
+
+https://www.chiliproject.org, someone@foo.bar
+
+
+ displays: https://www.chiliproject.org, someone@foo.bar
+
+ If you want to display a specific text instead of the URL, you can use the standard textile syntax:
+
+
+"ChiliProject web site":https://www.chiliproject.org
+
+
+ displays: ChiliProject web site
+
+
+ Text formatting
+
+
+ For things such as headlines, bold, tables, lists, ChiliProject supports Textile syntax. See http://www.textism.com/tools/textile/ for information on using any of these features. A few samples are included below, but the engine is capable of much more of that.
+
+ Font style
+
+
+* *bold*
+* _italic_
+* _*bold italic*_
+* +underline+
+* -strike-through-
+
+
+ Display:
+
+
+ - bold
+ - italic
+ - *bold italic*
+ - underline
+ strike-through
+
+
+ Inline images
+
+
+ - !image_url! displays an image located at image_url (textile syntax)
+ - !>image_url! right floating image
+ - If you have an image attached to your wiki page, it can be displayed inline using its filename: !attached_image.png!
+
+
+ Headings
+
+
+h1. Heading
+h2. Subheading
+h3. Subsubheading
+
+
+ ChiliProject assigns an anchor to each of those headings thus you can link to them with "#Heading", "#Subheading" and so forth.
+
+
+ Paragraphs
+
+
+p>. right aligned
+p=. centered
+
+
+ This is a centered paragraph.
+
+
+ Blockquotes
+
+ Start the paragraph with bq.
+
+
+bq. Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
+To go live, all you need to add is a database and a web server.
+
+
+ Display:
+
+
+ Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
To go live, all you need to add is a database and a web server.
+
+
+
+ Table of content
+
+
+{{toc}} => left aligned toc
+{{>toc}} => right aligned toc
+
+
+ Macros
+
+ ChiliProject has the following builtin macros:
+
+ hello_world
Sample macro.
include
Include a wiki page. Example:
+
+ {{include(Foo)}}
macro_list
Displays a list of all available macros, including description if available.
+
+
+ Code highlighting
+
Code highlightment relies on CodeRay, a fast syntax highlighting library written completely in Ruby. It currently supports c, cpp, css, delphi, groovy, html, java, javascript, json, php, python, rhtml, ruby, scheme, sql, xml and yaml languages.
-
- You can highlight code in your wiki page using this syntax:
-
-
-<pre><code class="ruby">
- Place you code here.
-</code></pre>
-
-
- Example:
-
- 1 # The Greeter class
- 2 class Greeter
- 3 def initialize(name)
- 4 @name = name.capitalize
- 5 end
- 6
- 7 def salute
- 8 puts "Hello #{@name}!"
- 9 end
-10 end
-
-
+
+ You can highlight code in your wiki page using this syntax:
+
+
+<pre><code class="ruby">
+ Place you code here.
+</code></pre>
+
+
+ Example:
+
+ 1 # The Greeter class
+ 2 class Greeter
+ 3 def initialize(name)
+ 4 @name = name.capitalize
+ 5 end
+ 6
+ 7 def salute
+ 8 puts "Hello #{@name}!"
+ 9 end
+10 end
+
+
diff --git a/app/views/projects/settings/_activities.rhtml b/app/views/projects/settings/_activities.rhtml
index 726e6240..66be5300 100644
--- a/app/views/projects/settings/_activities.rhtml
+++ b/app/views/projects/settings/_activities.rhtml
@@ -1,42 +1,42 @@
-<% form_tag(project_project_enumerations_path(@project), :method => :put, :class => "tabular") do %>
-
-
-
- <%= l(:field_name) %> |
- <%= l(:enumeration_system_activity) %> |
- <% TimeEntryActivity.new.available_custom_fields.each do |value| %>
- <%= h value.name %> |
- <% end %>
- <%= l(:field_active) %> |
-
-
- <% @project.activities(true).each do |enumeration| %>
- <% fields_for "enumerations[#{enumeration.id}]", enumeration do |ff| %>
-
-
- <%= ff.hidden_field :parent_id, :value => enumeration.id unless enumeration.project %>
- <%= h(enumeration) %>
- |
- <%= checked_image !enumeration.project %> |
- <% enumeration.custom_field_values.each do |value| %>
-
- <%= custom_field_tag "enumerations[#{enumeration.id}]", value %>
- |
- <% end %>
-
- <%= ff.check_box :active %>
- |
-
- <% end %>
- <% end %>
-
-
-
-<%= link_to(l(:button_reset), project_project_enumerations_path(@project),
- :method => :delete,
- :confirm => l(:text_are_you_sure),
- :class => 'icon icon-del') %>
-
-
-<%= submit_tag l(:button_save) %>
-<% end %>
+<% form_tag(project_project_enumerations_path(@project), :method => :put, :class => "tabular") do %>
+
+
+
+ <%= l(:field_name) %> |
+ <%= l(:enumeration_system_activity) %> |
+ <% TimeEntryActivity.new.available_custom_fields.each do |value| %>
+ <%= h value.name %> |
+ <% end %>
+ <%= l(:field_active) %> |
+
+
+ <% @project.activities(true).each do |enumeration| %>
+ <% fields_for "enumerations[#{enumeration.id}]", enumeration do |ff| %>
+
+
+ <%= ff.hidden_field :parent_id, :value => enumeration.id unless enumeration.project %>
+ <%= h(enumeration) %>
+ |
+ <%= checked_image !enumeration.project %> |
+ <% enumeration.custom_field_values.each do |value| %>
+
+ <%= custom_field_tag "enumerations[#{enumeration.id}]", value %>
+ |
+ <% end %>
+
+ <%= ff.check_box :active %>
+ |
+
+ <% end %>
+ <% end %>
+
+
+
+<%= link_to(l(:button_reset), project_project_enumerations_path(@project),
+ :method => :delete,
+ :confirm => l(:text_are_you_sure),
+ :class => 'icon icon-del') %>
+
+
+<%= submit_tag l(:button_save) %>
+<% end %>
diff --git a/config/locales/eu.yml b/config/locales/eu.yml
index 21c6c44a..da5ccde2 100644
--- a/config/locales/eu.yml
+++ b/config/locales/eu.yml
@@ -1,929 +1,929 @@
-# Redmine EU language
-# Author: Ales Zabala Alava (Shagi),
-# 2010-01-25
-# Distributed under the same terms as the Redmine itself.
-eu:
- 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: "%Y/%m/%d"
- short: "%b %d"
- long: "%Y %B %d"
-
- day_names: [Igandea, Astelehena, Asteartea, Asteazkena, Osteguna, Ostirala, Larunbata]
- abbr_day_names: [Ig., Al., Ar., Az., Og., Or., La.]
-
- # Don't forget the nil at the beginning; there's no such thing as a 0th month
- month_names: [~, Urtarrila, Otsaila, Martxoa, Apirila, Maiatza, Ekaina, Uztaila, Abuztua, Iraila, Urria, Azaroa, Abendua]
- abbr_month_names: [~, Urt, Ots, Mar, Api, Mai, Eka, Uzt, Abu, Ira, Urr, Aza, Abe]
- # Used in date_select and datime_select.
- order:
- - :year
- - :month
- - :day
-
- time:
- formats:
- default: "%Y/%m/%d %H:%M"
- time: "%H:%M"
- short: "%b %d %H:%M"
- long: "%Y %B %d %H:%M"
- am: "am"
- pm: "pm"
-
- datetime:
- distance_in_words:
- half_a_minute: "minutu erdi"
- less_than_x_seconds:
- one: "segundu bat baino gutxiago"
- other: "%{count} segundu baino gutxiago"
- x_seconds:
- one: "segundu 1"
- other: "%{count} segundu"
- less_than_x_minutes:
- one: "minutu bat baino gutxiago"
- other: "%{count} minutu baino gutxiago"
- x_minutes:
- one: "minutu 1"
- other: "%{count} minutu"
- about_x_hours:
- one: "ordu 1 inguru"
- other: "%{count} ordu inguru"
- x_days:
- one: "egun 1"
- other: "%{count} egun"
- about_x_months:
- one: "hilabete 1 inguru"
- other: "%{count} hilabete inguru"
- x_months:
- one: "hilabete 1"
- other: "%{count} hilabete"
- about_x_years:
- one: "urte 1 inguru"
- other: "%{count} urte inguru"
- over_x_years:
- one: "urte 1 baino gehiago"
- other: "%{count} urte baino gehiago"
- almost_x_years:
- one: "ia urte 1"
- other: "ia %{count} urte"
-
- number:
- format:
- separator: "."
- delimiter: ""
- precision: 3
- human:
- format:
- delimiter: ""
- precision: 1
- storage_units:
- format: "%n %u"
- units:
- byte:
- one: "Byte"
- other: "Byte"
- kb: "KB"
- mb: "MB"
- gb: "GB"
- tb: "TB"
-
-
-# Used in array.to_sentence.
- support:
- array:
- sentence_connector: "eta"
- skip_last_comma: false
-
- activerecord:
- errors:
- template:
- header:
- one: "Errore batek %{model} hau godetzea galarazi du."
- other: "%{count} errorek %{model} hau gordetzea galarazi dute."
- messages:
- inclusion: "ez dago zerrendan"
- exclusion: "erreserbatuta dago"
- invalid: "baliogabea da"
- confirmation: "ez du berrespenarekin bat egiten"
- accepted: "onartu behar da"
- empty: "ezin da hutsik egon"
- blank: "ezin da hutsik egon"
- too_long: "luzeegia da (maximoa %{count} karaktere dira)"
- too_short: "laburregia da (minimoa %{count} karaktere dira)"
- wrong_length: "luzera ezegokia da (%{count} karakter izan beharko litzake)"
- taken: "dagoeneko hartuta dago"
- not_a_number: "ez da zenbaki bat"
- not_a_date: "ez da baliozko data"
- greater_than: "%{count} baino handiagoa izan behar du"
- greater_than_or_equal_to: "%{count} edo handiagoa izan behar du"
- equal_to: "%{count} izan behar du"
- less_than: "%{count} baino gutxiago izan behar du"
- less_than_or_equal_to: "%{count} edo gutxiago izan behar du"
- odd: "bakoitia izan behar du"
- even: "bikoitia izan behar du"
- greater_than_start_date: "hasiera data baino handiagoa izan behar du"
- not_same_project: "ez dago proiektu berdinean"
- circular_dependency: "Erlazio honek mendekotasun zirkular bat sortuko luke"
- cant_link_an_issue_with_a_descendant: "Zeregin bat ezin da bere azpiataza batekin estekatu."
-
- actionview_instancetag_blank_option: Hautatu mesedez
-
- general_text_No: 'Ez'
- general_text_Yes: 'Bai'
- general_text_no: 'ez'
- general_text_yes: 'bai'
- general_lang_name: 'Euskara'
- general_csv_separator: ','
- general_csv_decimal_separator: '.'
- general_csv_encoding: UTF-8
- general_pdf_encoding: UTF-8
- general_first_day_of_week: '1'
-
- notice_account_updated: Kontua ongi eguneratu da.
- notice_account_invalid_creditentials: Erabiltzaile edo pasahitz ezegokia
- notice_account_password_updated: Pasahitza ongi eguneratu da.
- notice_account_wrong_password: Pasahitz ezegokia.
- notice_account_register_done: Kontua ongi sortu da. Kontua gaitzeko klikatu epostan adierazi zaizun estekan.
- notice_account_unknown_email: Erabiltzaile ezezaguna.
- notice_can_t_change_password: Kontu honek kanpoko autentikazio bat erabiltzen du. Ezinezkoa da pasahitza aldatzea.
- notice_account_lost_email_sent: Pasahitz berria aukeratzeko jarraibideak dituen eposta bat bidali zaizu.
- notice_account_activated: Zure kontua gaituta dago. Orain saioa has dezakezu
- notice_successful_create: Sortze arrakastatsua.
- notice_successful_update: Eguneratze arrakastatsua.
- notice_successful_delete: Ezabaketa arrakastatsua.
- notice_successful_connection: Konexio arrakastatsua.
- notice_file_not_found: Atzitu nahi duzun orria ez da exisitzen edo ezabatua izan da.
- notice_locking_conflict: Beste erabiltzaile batek datuak eguneratu ditu.
- notice_not_authorized: Ez duzu orri hau atzitzeko baimenik.
- notice_email_sent: "%{value} helbidera eposta bat bidali da"
- notice_email_error: "Errorea eposta bidaltzean (%{value})"
- notice_feeds_access_key_reseted: Zure RSS atzipen giltza berrezarri da.
- notice_api_access_key_reseted: Zure API atzipen giltza berrezarri da.
- notice_failed_to_save_issues: "Hautatutako %{total} zereginetatik %{count} ezin izan dira konpondu: %{ids}."
- notice_no_issue_selected: "Ez da zereginik hautatu! Mesedez, editatu nahi dituzun arazoak markatu."
- notice_account_pending: "Zure kontua sortu da, orain kudeatzailearen onarpenaren zain dago."
- notice_default_data_loaded: Lehenetsitako konfigurazioa ongi kargatu da.
- notice_unable_delete_version: Ezin da bertsioa ezabatu.
- notice_issue_done_ratios_updated: Burututako zereginen erlazioa eguneratu da.
-
- error_can_t_load_default_data: "Ezin izan da lehenetsitako konfigurazioa kargatu: %{value}"
- error_scm_not_found: "Sarrera edo berrikuspena ez da biltegian topatu."
- error_scm_command_failed: "Errorea gertatu da biltegia atzitzean: %{value}"
- error_scm_annotate: "Sarrera ez da existitzen edo ezin da anotatu."
- error_issue_not_found_in_project: 'Zeregina ez da topatu edo ez da proiektu honetakoa'
- error_no_tracker_in_project: 'Proiektu honek ez du aztarnaririk esleituta. Mesedez egiaztatu Proiektuaren ezarpenak.'
- error_no_default_issue_status: 'Zereginek ez dute lehenetsitako egoerarik. Mesedez egiaztatu zure konfigurazioa ("Kudeaketa -> Arazoen egoerak" atalera joan).'
- error_can_not_reopen_issue_on_closed_version: 'Itxitako bertsio batera esleitutako zereginak ezin dira berrireki'
- error_can_not_archive_project: Proiektu hau ezin da artxibatu
- error_issue_done_ratios_not_updated: "Burututako zereginen erlazioa ez da eguneratu."
- error_workflow_copy_source: 'Mesedez hautatu iturburuko aztarnari edo rola'
- error_workflow_copy_target: 'Mesedez hautatu helburuko aztarnari(ak) edo rola(k)'
-
- warning_attachments_not_saved: "%{count} fitxategi ezin izan d(ir)a gorde."
-
- mail_subject_lost_password: "Zure %{value} pasahitza"
- mail_body_lost_password: 'Zure pasahitza aldatzeko hurrengo estekan klikatu:'
- mail_subject_register: "Zure %{value} kontuaren gaitzea"
- mail_body_register: 'Zure kontua gaitzeko hurrengo estekan klikatu:'
- mail_body_account_information_external: "Zure %{value} kontua erabil dezakezu saioa hasteko."
- mail_body_account_information: Zure kontuaren informazioa
- mail_subject_account_activation_request: "%{value} kontu gaitzeko eskaera"
- mail_body_account_activation_request: "Erabiltzaile berri bat (%{value}) erregistratu da. Kontua zure onarpenaren zain dago:"
- mail_subject_reminder: "%{count} arazo hurrengo %{days} egunetan amaitzen d(ir)a"
- mail_body_reminder: "Zuri esleituta dauden %{count} arazo hurrengo %{days} egunetan amaitzen d(ir)a:"
- mail_subject_wiki_content_added: "'%{id}' wiki orria gehitu da"
- mail_body_wiki_content_added: "%{author}-(e)k '%{id}' wiki orria gehitu du."
- mail_subject_wiki_content_updated: "'%{id}' wiki orria eguneratu da"
- mail_body_wiki_content_updated: "%{author}-(e)k '%{id}' wiki orria eguneratu du."
-
- gui_validation_error: akats 1
- gui_validation_error_plural: "%{count} akats"
-
- field_name: Izena
- field_description: Deskribapena
- field_summary: Laburpena
- field_is_required: Beharrezkoa
- field_firstname: Izena
- field_lastname: Abizenak
- field_mail: Eposta
- field_filename: Fitxategia
- field_filesize: Tamaina
- field_downloads: Deskargak
- field_author: Egilea
- field_created_on: Sortuta
- field_updated_on: Eguneratuta
- field_field_format: Formatua
- field_is_for_all: Proiektu guztietarako
- field_possible_values: Balio posibleak
- field_regexp: Expresio erregularra
- field_min_length: Luzera minimoa
- field_max_length: Luzera maxioma
- field_value: Balioa
- field_category: Kategoria
- field_title: Izenburua
- field_project: Proiektua
- field_issue: Zeregina
- field_status: Egoera
- field_notes: Oharrak
- field_is_closed: Itxitako arazoa
- field_is_default: Lehenetsitako balioa
- field_tracker: Aztarnaria
- field_subject: Gaia
- field_due_date: Amaiera data
- field_assigned_to: Esleituta
- field_priority: Lehentasuna
- field_fixed_version: Helburuko bertsioa
- field_user: Erabiltzilea
- field_role: Rola
- field_homepage: Orri nagusia
- field_is_public: Publikoa
- field_parent: "Honen azpiproiektua:"
- field_is_in_chlog: Zereginak aldaketa egunkarian ikusten dira
- field_is_in_roadmap: Arazoak ibilbide-mapan erakutsi
- field_login: Erabiltzaile izena
- field_mail_notification: Eposta jakinarazpenak
- field_admin: Kudeatzailea
- field_last_login_on: Azken konexioa
- field_language: Hizkuntza
- field_password: Pasahitza
- field_new_password: Pasahitz berria
- field_password_confirmation: Berrespena
- field_version: Bertsioa
- field_type: Mota
- field_host: Ostalaria
- field_port: Portua
- field_account: Kontua
- field_base_dn: Base DN
- field_attr_login: Erabiltzaile atributua
- field_attr_firstname: Izena atributua
- field_attr_lastname: Abizenak atributua
- field_attr_mail: Eposta atributua
- field_onthefly: Zuzeneko erabiltzaile sorrera
- field_start_date: Hasiera
- field_done_ratio: Egindako %
- field_auth_source: Autentikazio modua
- field_hide_mail: Nire eposta helbidea ezkutatu
- field_comments: Iruzkina
- field_url: URL
- field_start_page: Hasierako orria
- field_subproject: Azpiproiektua
- field_hours: Ordu
- field_activity: Jarduera
- field_spent_on: Data
- field_identifier: Identifikatzailea
- field_is_filter: Iragazki moduan erabilita
- field_issue_to: Erlazionatutako zereginak
- field_delay: Atzerapena
- field_assignable: Arazoak rol honetara esleitu daitezke
- field_redirect_existing_links: Existitzen diren estekak berbideratu
- field_estimated_hours: Estimatutako denbora
- field_column_names: Zutabeak
- field_time_zone: Ordu zonaldea
- field_searchable: Bilagarria
- field_default_value: Lehenetsitako balioa
- field_comments_sorting: Iruzkinak erakutsi
- field_parent_title: Orri gurasoa
- field_editable: Editagarria
- field_watcher: Behatzailea
- field_identity_url: OpenID URLa
- field_content: Edukia
- field_group_by: Emaitzak honegatik taldekatu
- field_sharing: Partekatzea
-
- setting_app_title: Aplikazioaren izenburua
- setting_app_subtitle: Aplikazioaren azpizenburua
- setting_welcome_text: Ongietorriko testua
- setting_default_language: Lehenetsitako hizkuntza
- setting_login_required: Autentikazioa derrigorrezkoa
- setting_self_registration: Norberak erregistratu
- setting_attachment_max_size: Eranskinen tamaina max.
- setting_issues_export_limit: Zereginen esportatze limitea
- setting_mail_from: Igorlearen eposta helbidea
- setting_bcc_recipients: Hartzaileak ezkutuko kopian (bcc)
- setting_plain_text_mail: Testu soileko epostak (HTML-rik ez)
- setting_host_name: Ostalari izena eta bidea
- setting_text_formatting: Testu formatua
- setting_wiki_compression: Wikiaren historia konprimitu
- setting_feeds_limit: Jarioaren edukiera limitea
- setting_default_projects_public: Proiektu berriak defektuz publikoak dira
- setting_autofetch_changesets: Commit-ak automatikoki hartu
- setting_sys_api_enabled: Biltegien kudeaketarako WS gaitu
- setting_commit_ref_keywords: Erreferentzien gako-hitzak
- setting_commit_fix_keywords: Konpontze gako-hitzak
- setting_autologin: Saioa automatikoki hasi
- setting_date_format: Data formatua
- setting_time_format: Ordu formatua
- setting_cross_project_issue_relations: Zereginak proiektuen artean erlazionatzea baimendu
- setting_issue_list_default_columns: Zereginen zerrendan defektuz ikusten diren zutabeak
- setting_repositories_encodings: Biltegien kodeketak
- setting_commit_logs_encoding: Commit-en egunkarien kodetzea
- setting_emails_footer: Eposten oina
- setting_protocol: Protokoloa
- setting_per_page_options: Orriko objektuen aukerak
- setting_user_format: Erabiltzaileak erakusteko formatua
- setting_activity_days_default: Proiektuen jardueran erakusteko egunak
- setting_display_subprojects_issues: Azpiproiektuen zereginak proiektu nagusian erakutsi defektuz
- setting_enabled_scm: Gaitutako IKKak
- setting_mail_handler_body_delimiters: "Lerro hauteko baten ondoren epostak moztu"
- setting_mail_handler_api_enabled: Sarrerako epostentzako WS gaitu
- setting_mail_handler_api_key: API giltza
- setting_sequential_project_identifiers: Proiektuen identifikadore sekuentzialak sortu
- setting_gravatar_enabled: Erabili Gravatar erabiltzaile ikonoak
- setting_gravatar_default: Lehenetsitako Gravatar irudia
- setting_diff_max_lines_displayed: Erakutsiko diren diff lerro kopuru maximoa
- setting_file_max_size_displayed: Barnean erakuzten diren testu fitxategien tamaina maximoa
- setting_repository_log_display_limit: Egunkari fitxategian erakutsiko diren berrikuspen kopuru maximoa.
- setting_openid: Baimendu OpenID saio hasiera eta erregistatzea
- setting_password_min_length: Pasahitzen luzera minimoa
- setting_new_project_user_role_id: Proiektu berriak sortzerakoan kudeatzaile ez diren erabiltzaileei esleitutako rola
- setting_default_projects_modules: Proiektu berrientzako defektuz gaitutako moduluak
- setting_issue_done_ratio: "Zereginen burututako tasa kalkulatzean erabili:"
- setting_issue_done_ratio_issue_field: Zeregin eremua erabili
- setting_issue_done_ratio_issue_status: Zeregin egoera erabili
- setting_start_of_week: "Egutegiak noiz hasi:"
- setting_rest_api_enabled: Gaitu REST web zerbitzua
-
- permission_add_project: Proiektua sortu
- permission_add_subprojects: Azpiproiektuak sortu
- permission_edit_project: Proiektua editatu
- permission_select_project_modules: Proiektuaren moduluak hautatu
- permission_manage_members: Kideak kudeatu
- permission_manage_versions: Bertsioak kudeatu
- permission_manage_categories: Arazoen kategoriak kudeatu
- permission_view_issues: Zereginak ikusi
- permission_add_issues: Zereginak gehitu
- permission_edit_issues: Zereginak aldatu
- permission_manage_issue_relations: Zereginen erlazioak kudeatu
- permission_add_issue_notes: Oharrak gehitu
- permission_edit_issue_notes: Oharrak aldatu
- permission_edit_own_issue_notes: Nork bere oharrak aldatu
- permission_move_issues: Zereginak mugitu
- permission_delete_issues: Zereginak ezabatu
- permission_manage_public_queries: Galdera publikoak kudeatu
- permission_save_queries: Galderak gorde
- permission_view_gantt: Gantt grafikoa ikusi
- permission_view_calendar: Egutegia ikusi
- permission_view_issue_watchers: Behatzaileen zerrenda ikusi
- permission_add_issue_watchers: Behatzaileak gehitu
- permission_delete_issue_watchers: Behatzaileak ezabatu
- permission_log_time: Igarotako denbora erregistratu
- permission_view_time_entries: Igarotako denbora ikusi
- permission_edit_time_entries: Denbora egunkariak editatu
- permission_edit_own_time_entries: Nork bere denbora egunkariak editatu
- permission_manage_news: Berriak kudeatu
- permission_comment_news: Berrien iruzkinak egin
- permission_manage_documents: Dokumentuak kudeatu
- permission_view_documents: Dokumentuak ikusi
- permission_manage_files: Fitxategiak kudeatu
- permission_view_files: Fitxategiak ikusi
- permission_manage_wiki: Wikia kudeatu
- permission_rename_wiki_pages: Wiki orriak berrizendatu
- permission_delete_wiki_pages: Wiki orriak ezabatu
- permission_view_wiki_pages: Wikia ikusi
- permission_view_wiki_edits: Wikiaren historia ikusi
- permission_edit_wiki_pages: Wiki orriak editatu
- permission_delete_wiki_pages_attachments: Eranskinak ezabatu
- permission_protect_wiki_pages: Wiki orriak babestu
- permission_manage_repository: Biltegiak kudeatu
- permission_browse_repository: Biltegia arakatu
- permission_view_changesets: Aldaketak ikusi
- permission_commit_access: Commit atzipena
- permission_manage_boards: Foroak kudeatu
- permission_view_messages: Mezuak ikusi
- permission_add_messages: Mezuak bidali
- permission_edit_messages: Mezuak aldatu
- permission_edit_own_messages: Nork bere mezuak aldatu
- permission_delete_messages: Mezuak ezabatu
- permission_delete_own_messages: Nork bere mezuak ezabatu
-
- project_module_issue_tracking: Zereginen jarraipena
- project_module_time_tracking: Denbora jarraipena
- project_module_news: Berriak
- project_module_documents: Dokumentuak
- project_module_files: Fitxategiak
- project_module_wiki: Wiki
- project_module_repository: Biltegia
- project_module_boards: Foroak
-
- label_user: Erabiltzailea
- label_user_plural: Erabiltzaileak
- label_user_new: Erabiltzaile berria
- label_user_anonymous: Ezezaguna
- label_project: Proiektua
- label_project_new: Proiektu berria
- label_project_plural: Proiektuak
- label_x_projects:
- zero: proiekturik ez
- one: proiektu bat
- other: "%{count} proiektu"
- label_project_all: Proiektu guztiak
- label_project_latest: Azken proiektuak
- label_issue: Zeregina
- label_issue_new: Zeregin berria
- label_issue_plural: Zereginak
- label_issue_view_all: Zeregin guztiak ikusi
- label_issues_by: "Zereginak honengatik: %{value}"
- label_issue_added: Zeregina gehituta
- label_issue_updated: Zeregina eguneratuta
- label_document: Dokumentua
- label_document_new: Dokumentu berria
- label_document_plural: Dokumentuak
- label_document_added: Dokumentua gehituta
- label_role: Rola
- label_role_plural: Rolak
- label_role_new: Rol berria
- label_role_and_permissions: Rolak eta baimenak
- label_member: Kidea
- label_member_new: Kide berria
- label_member_plural: Kideak
- label_tracker: Aztarnaria
- label_tracker_plural: Aztarnariak
- label_tracker_new: Aztarnari berria
- label_workflow: Lan-fluxua
- label_issue_status: Zeregin egoera
- label_issue_status_plural: Zeregin egoerak
- label_issue_status_new: Egoera berria
- label_issue_category: Zeregin kategoria
- label_issue_category_plural: Zeregin kategoriak
- label_issue_category_new: Kategoria berria
- label_custom_field: Eremu pertsonalizatua
- label_custom_field_plural: Eremu pertsonalizatuak
- label_custom_field_new: Eremu pertsonalizatu berria
- label_enumerations: Enumerazioak
- label_enumeration_new: Balio berria
- label_information: Informazioa
- label_information_plural: Informazioa
- label_please_login: Saioa hasi mesedez
- label_register: Erregistratu
- label_login_with_open_id_option: edo OpenID-rekin saioa hasi
- label_password_lost: Pasahitza galduta
- label_home: Hasiera
- label_my_page: Nire orria
- label_my_account: Nire kontua
- label_my_projects: Nire proiektuak
- label_administration: Kudeaketa
- label_login: Saioa hasi
- label_logout: Saioa bukatu
- label_help: Laguntza
- label_reported_issues: Berri emandako zereginak
- label_assigned_to_me_issues: Niri esleitutako arazoak
- label_last_login: Azken konexioa
- label_registered_on: Noiz erregistratuta
- label_activity: Jarduerak
- label_overall_activity: Jarduera guztiak
- label_user_activity: "%{value}-(r)en jarduerak"
- label_new: Berria
- label_logged_as: "Sartutako erabiltzailea:"
- label_environment: Ingurune
- label_authentication: Autentikazioa
- label_auth_source: Autentikazio modua
- label_auth_source_new: Autentikazio modu berria
- label_auth_source_plural: Autentikazio moduak
- label_subproject_plural: Azpiproiektuak
- label_subproject_new: Azpiproiektu berria
- label_and_its_subprojects: "%{value} eta bere azpiproiektuak"
- label_min_max_length: Luzera min - max
- label_list: Zerrenda
- label_date: Data
- label_integer: Osokoa
- label_float: Koma higikorrekoa
- label_boolean: Boolearra
- label_string: Testua
- label_text: Testu luzea
- label_attribute: Atributua
- label_attribute_plural: Atributuak
- label_download: "Deskarga %{count}"
- label_download_plural: "%{count} Deskarga"
- label_no_data: Ez dago erakusteko daturik
- label_change_status: Egoera aldatu
- label_history: Historikoa
- label_attachment: Fitxategia
- label_attachment_new: Fitxategi berria
- label_attachment_delete: Fitxategia ezabatu
- label_attachment_plural: Fitxategiak
- label_file_added: Fitxategia gehituta
- label_report: Berri ematea
- label_report_plural: Berri emateak
- label_news: Berria
- label_news_new: Berria gehitu
- label_news_plural: Berriak
- label_news_latest: Azken berriak
- label_news_view_all: Berri guztiak ikusi
- label_news_added: Berria gehituta
- label_change_log: Aldaketa egunkaria
- label_settings: Ezarpenak
- label_overview: Gainbegirada
- label_version: Bertsioa
- label_version_new: Bertsio berria
- label_version_plural: Bertsioak
- label_close_versions: Burututako bertsioak itxi
- label_confirmation: Baieztapena
- label_export_to: 'Eskuragarri baita:'
- label_read: Irakurri...
- label_public_projects: Proiektu publikoak
- label_open_issues: irekita
- label_open_issues_plural: irekiak
- label_closed_issues: itxita
- label_closed_issues_plural: itxiak
- label_x_open_issues_abbr_on_total:
- zero: 0 irekita / %{total}
- one: 1 irekita / %{total}
- other: "%{count} irekiak / %{total}"
- label_x_open_issues_abbr:
- zero: 0 irekita
- one: 1 irekita
- other: "%{count} irekiak"
- label_x_closed_issues_abbr:
- zero: 0 itxita
- one: 1 itxita
- other: "%{count} itxiak"
- label_total: Guztira
- label_permissions: Baimenak
- label_current_status: Uneko egoera
- label_new_statuses_allowed: Baimendutako egoera berriak
- label_all: guztiak
- label_none: ezer
- label_nobody: inor
- label_next: Hurrengoa
- label_previous: Aurrekoak
- label_used_by: Erabilita
- label_details: Xehetasunak
- label_add_note: Oharra gehitu
- label_per_page: Orriko
- label_calendar: Egutegia
- label_months_from: hilabete noiztik
- label_gantt: Gantt
- label_internal: Barnekoa
- label_last_changes: "azken %{count} aldaketak"
- label_change_view_all: Aldaketa guztiak ikusi
- label_personalize_page: Orri hau pertsonalizatu
- label_comment: Iruzkin
- label_comment_plural: Iruzkinak
- label_x_comments:
- zero: iruzkinik ez
- one: iruzkin 1
- other: "%{count} iruzkin"
- label_comment_add: Iruzkina gehitu
- label_comment_added: Iruzkina gehituta
- label_comment_delete: Iruzkinak ezabatu
- label_query: Galdera pertsonalizatua
- label_query_plural: Pertsonalizatutako galderak
- label_query_new: Galdera berria
- label_filter_add: Iragazkia gehitu
- label_filter_plural: Iragazkiak
- label_equals: da
- label_not_equals: ez da
- label_in_less_than: baino gutxiagotan
- label_in_more_than: baino gehiagotan
- label_greater_or_equal: '>='
- label_less_or_equal: '<='
- label_in: hauetan
- label_today: gaur
- label_all_time: denbora guztia
- label_yesterday: atzo
- label_this_week: aste honetan
- label_last_week: pasadan astean
- label_last_n_days: "azken %{count} egunetan"
- label_this_month: hilabete hau
- label_last_month: pasadan hilabetea
- label_this_year: urte hau
- label_date_range: Data tartea
- label_less_than_ago: egun hauek baino gutxiago
- label_more_than_ago: egun hauek baino gehiago
- label_ago: orain dela
- label_contains: dauka
- label_not_contains: ez dauka
- label_day_plural: egun
- label_repository: Biltegia
- label_repository_plural: Biltegiak
- label_browse: Arakatu
- label_modification: "aldaketa %{count}"
- label_modification_plural: "%{count} aldaketa"
- label_branch: Adarra
- label_tag: Etiketa
- label_revision: Berrikuspena
- label_revision_plural: Berrikuspenak
- label_revision_id: "%{value} berrikuspen"
- label_associated_revisions: Elkartutako berrikuspenak
- label_added: gehituta
- label_modified: aldatuta
- label_copied: kopiatuta
- label_renamed: berrizendatuta
- label_deleted: ezabatuta
- label_latest_revision: Azken berrikuspena
- label_latest_revision_plural: Azken berrikuspenak
- label_view_revisions: Berrikuspenak ikusi
- label_view_all_revisions: Berrikuspen guztiak ikusi
- label_max_size: Tamaina maximoa
- label_sort_highest: Goraino mugitu
- label_sort_higher: Gora mugitu
- label_sort_lower: Behera mugitu
- label_sort_lowest: Beheraino mugitu
- label_roadmap: Ibilbide-mapa
- label_roadmap_due_in: "Epea: %{value}"
- label_roadmap_overdue: "%{value} berandu"
- label_roadmap_no_issues: Ez dago zereginik bertsio honetan
- label_search: Bilatu
- label_result_plural: Emaitzak
- label_all_words: hitz guztiak
- label_wiki: Wikia
- label_wiki_edit: Wiki edizioa
- label_wiki_edit_plural: Wiki edizioak
- label_wiki_page: Wiki orria
- label_wiki_page_plural: Wiki orriak
- label_index_by_title: Izenburuaren araberako indizea
- label_index_by_date: Dataren araberako indizea
- label_current_version: Uneko bertsioa
- label_preview: Aurreikusi
- label_feed_plural: Jarioak
- label_changes_details: Aldaketa guztien xehetasunak
- label_issue_tracking: Zeregin jarraipena
- label_spent_time: Igarotako denbora
- label_f_hour: "ordu %{value}"
- label_f_hour_plural: "%{value} ordu"
- label_time_tracking: Denbora jarraipena
- label_change_plural: Aldaketak
- label_statistics: Estatistikak
- label_commits_per_month: Commit-ak hilabeteka
- label_commits_per_author: Commit-ak egileka
- label_view_diff: Ezberdintasunak ikusi
- label_diff_inline: barnean
- label_diff_side_by_side: aldez alde
- label_options: Aukerak
- label_copy_workflow_from: Kopiatu workflow-a hemendik
- label_permissions_report: Baimenen txostena
- label_watched_issues: Behatutako zereginak
- label_related_issues: Erlazionatutako zereginak
- label_applied_status: Aplikatutako egoera
- label_loading: Kargatzen...
- label_relation_new: Erlazio berria
- label_relation_delete: Erlazioa ezabatu
- label_relates_to: erlazionatuta dago
- label_duplicates: bikoizten du
- label_duplicated_by: honek bikoiztuta
- label_blocks: blokeatzen du
- label_blocked_by: honek blokeatuta
- label_precedes: aurretik doa
- label_follows: jarraitzen du
- label_end_to_start: bukaeratik hasierara
- label_end_to_end: bukaeratik bukaerara
- label_start_to_start: hasieratik hasierhasieratik bukaerara
- label_start_to_end: hasieratik bukaerara
- label_stay_logged_in: Saioa mantendu
- label_disabled: ezgaituta
- label_show_completed_versions: Bukatutako bertsioak ikusi
- label_me: ni
- label_board: Foroa
- label_board_new: Foro berria
- label_board_plural: Foroak
- label_topic_plural: Gaiak
- label_message_plural: Mezuak
- label_message_last: Azken mezua
- label_message_new: Mezu berria
- label_message_posted: Mesua gehituta
- label_reply_plural: Erantzunak
- label_send_information: Erabiltzaileai kontuaren informazioa bidali
- label_year: Urtea
- label_month: Hilabetea
- label_week: Astea
- label_date_from: Nork
- label_date_to: Nori
- label_language_based: Erabiltzailearen hizkuntzaren arabera
- label_sort_by: "Ordenazioa: %{value}"
- label_send_test_email: Frogako mezua bidali
- label_feeds_access_key: RSS atzipen giltza
- label_missing_feeds_access_key: RSS atzipen giltza falta da
- label_feeds_access_key_created_on: "RSS atzipen giltza orain dela %{value} sortuta"
- label_module_plural: Moduluak
- label_added_time_by: "%{author}, orain dela %{age} gehituta"
- label_updated_time_by: "%{author}, orain dela %{age} eguneratuta"
- label_updated_time: "Orain dela %{value} eguneratuta"
- label_jump_to_a_project: Joan proiektura...
- label_file_plural: Fitxategiak
- label_changeset_plural: Aldaketak
- label_default_columns: Lehenetsitako zutabeak
- label_no_change_option: (Aldaketarik ez)
- label_bulk_edit_selected_issues: Hautatutako zereginak batera editatu
- label_theme: Itxura
- label_default: Lehenetsia
- label_search_titles_only: Izenburuetan bakarrik bilatu
- label_user_mail_option_all: "Nire proiektu guztietako gertakari guztientzat"
- label_user_mail_option_selected: "Hautatutako proiektuetako edozein gertakarientzat..."
- label_user_mail_no_self_notified: "Ez dut nik egiten ditudan aldeketen jakinarazpenik jaso nahi"
- label_registration_activation_by_email: kontuak epostaz gaitu
- label_registration_manual_activation: kontuak eskuz gaitu
- label_registration_automatic_activation: kontuak automatikoki gaitu
- label_display_per_page: "Orriko: %{value}"
- label_age: Adina
- label_change_properties: Propietateak aldatu
- label_general: Orokorra
- label_more: Gehiago
- label_scm: IKK
- label_plugins: Pluginak
- label_ldap_authentication: LDAP autentikazioa
- label_downloads_abbr: Desk.
- label_optional_description: Aukerako deskribapena
- label_add_another_file: Beste fitxategia gehitu
- label_preferences: Hobespenak
- label_chronological_order: Orden kronologikoan
- label_reverse_chronological_order: Alderantzizko orden kronologikoan
- label_planning: Planifikazioa
- label_incoming_emails: Sarrerako epostak
- label_generate_key: Giltza sortu
- label_issue_watchers: Behatzaileak
- label_example: Adibidea
- label_display: Bistaratzea
- label_sort: Ordenatu
- label_ascending: Gorantz
- label_descending: Beherantz
- label_date_from_to: "%{start}-tik %{end}-ra"
- label_wiki_content_added: Wiki orria gehituta
- label_wiki_content_updated: Wiki orria eguneratuta
- label_group: Taldea
- label_group_plural: Taldeak
- label_group_new: Talde berria
- label_time_entry_plural: Igarotako denbora
- label_version_sharing_none: Ez partekatuta
- label_version_sharing_descendants: Azpiproiektuekin
- label_version_sharing_hierarchy: Proiektu Hierarkiarekin
- label_version_sharing_tree: Proiektu zuhaitzarekin
- label_version_sharing_system: Proiektu guztiekin
- label_update_issue_done_ratios: Zereginen burututako erlazioa eguneratu
- label_copy_source: Iturburua
- label_copy_target: Helburua
- label_copy_same_as_target: Helburuaren berdina
- label_display_used_statuses_only: Aztarnari honetan erabiltzen diren egoerak bakarrik erakutsi
- label_api_access_key: API atzipen giltza
- label_missing_api_access_key: API atzipen giltza falta da
- label_api_access_key_created_on: "API atzipen giltza sortuta orain dela %{value}"
-
- button_login: Saioa hasi
- button_submit: Bidali
- button_save: Gorde
- button_check_all: Guztiak markatu
- button_uncheck_all: Guztiak desmarkatu
- button_delete: Ezabatu
- button_create: Sortu
- button_create_and_continue: Sortu eta jarraitu
- button_test: Frogatu
- button_edit: Editatu
- button_add: Gehitu
- button_change: Aldatu
- button_apply: Aplikatu
- button_clear: Garbitu
- button_lock: Blokeatu
- button_unlock: Desblokeatu
- button_download: Deskargatu
- button_list: Zerrenda
- button_view: Ikusi
- button_move: Mugitu
- button_move_and_follow: Mugitu eta jarraitu
- button_back: Atzera
- button_cancel: Ezeztatu
- button_activate: Gahitu
- button_sort: Ordenatu
- button_log_time: Denbora erregistratu
- button_rollback: Itzuli bertsio honetara
- button_watch: Behatu
- button_unwatch: Behatzen utzi
- button_reply: Erantzun
- button_archive: Artxibatu
- button_unarchive: Desartxibatu
- button_reset: Berrezarri
- button_rename: Berrizendatu
- button_change_password: Pasahitza aldatu
- button_copy: Kopiatu
- button_copy_and_follow: Kopiatu eta jarraitu
- button_annotate: Anotatu
- button_update: Eguneratu
- button_configure: Konfiguratu
- button_quote: Aipatu
- button_duplicate: Bikoiztu
- button_show: Ikusi
-
- status_active: gaituta
- status_registered: izena emanda
- status_locked: blokeatuta
-
- version_status_open: irekita
- version_status_locked: blokeatuta
- version_status_closed: itxita
-
- field_active: Gaituta
-
- text_select_mail_notifications: Jakinarazpenak zein ekintzetarako bidaliko diren hautatu.
- text_regexp_info: adib. ^[A-Z0-9]+$
- text_min_max_length_info: 0k mugarik gabe esan nahi du
- text_project_destroy_confirmation: Ziur zaude proiektu hau eta erlazionatutako datu guztiak ezabatu nahi dituzula?
- text_subprojects_destroy_warning: "%{value} azpiproiektuak ere ezabatuko dira."
- text_workflow_edit: Hautatu rola eta aztarnaria workflow-a editatzeko
- text_are_you_sure: Ziur zaude?
- text_journal_changed: "%{label} %{old}-(e)tik %{new}-(e)ra aldatuta"
- text_journal_set_to: "%{label}-k %{value} balioa hartu du"
- text_journal_deleted: "%{label} ezabatuta (%{old})"
- text_journal_added: "%{label} %{value} gehituta"
- text_tip_issue_begin_day: gaur hasten diren zereginak
- text_tip_issue_end_day: gaur bukatzen diren zereginak
- text_tip_issue_begin_end_day: gaur hasi eta bukatzen diren zereginak
- text_project_identifier_info: 'Only lower case letters (a-z), numbers, dashes and underscores are allowed.
Once saved, the identifier can not be changed.'
- text_caracters_maximum: "%{count} karaktere gehienez."
- text_caracters_minimum: "Gutxienez %{count} karaktereetako luzerakoa izan behar du."
- text_length_between: "Luzera %{min} eta %{max} karaktereen artekoa."
- text_tracker_no_workflow: Ez da workflow-rik definitu aztarnari honentzako
- text_unallowed_characters: Debekatutako karaktereak
- text_comma_separated: Balio anitz izan daitezke (komaz banatuta).
- text_line_separated: Balio anitz izan daitezke (balio bakoitza lerro batean).
- text_issues_ref_in_commit_messages: Commit-en mezuetan zereginak erlazionatu eta konpontzen
- text_issue_added: "%{id} zeregina %{author}-(e)k jakinarazi du."
- text_issue_updated: "%{id} zeregina %{author}-(e)k eguneratu du."
- text_wiki_destroy_confirmation: Ziur zaude wiki hau eta bere eduki guztiak ezabatu nahi dituzula?
- text_issue_category_destroy_question: "Zeregin batzuk (%{count}) kategoria honetara esleituta daude. Zer egin nahi duzu?"
- text_issue_category_destroy_assignments: Kategoria esleipenak kendu
- text_issue_category_reassign_to: Zereginak kategoria honetara esleitu
- text_user_mail_option: "Hautatu gabeko proiektuetan, behatzen edo parte hartzen duzun gauzei buruzko jakinarazpenak jasoko dituzu (adib. zu egile zaren edo esleituta dituzun zereginak)."
- text_no_configuration_data: "Rolak, aztarnariak, zeregin egoerak eta workflow-ak ez dira oraindik konfiguratu.\nOso gomendagarria de lehenetsitako kkonfigurazioa kargatzea. Kargatu eta gero aldatu ahalko duzu."
- text_load_default_configuration: Lehenetsitako konfigurazioa kargatu
- text_status_changed_by_changeset: "%{value} aldaketan aplikatuta."
- text_issues_destroy_confirmation: 'Ziur zaude hautatutako zeregina(k) ezabatu nahi dituzula?'
- text_select_project_modules: 'Hautatu proiektu honetan gaitu behar diren moduluak:'
- text_default_administrator_account_changed: Lehenetsitako kudeatzaile kontua aldatuta
- text_file_repository_writable: Eranskinen direktorioan idatz daiteke
- text_plugin_assets_writable: Pluginen baliabideen direktorioan idatz daiteke
- text_rmagick_available: RMagick eskuragarri (aukerazkoa)
- text_destroy_time_entries_question: "%{hours} orduei buruz berri eman zen zuk ezabatzera zoazen zereginean. Zer egin nahi duzu?"
- text_destroy_time_entries: Ezabatu berri emandako orduak
- text_assign_time_entries_to_project: Berri emandako orduak proiektura esleitu
- text_reassign_time_entries: 'Berri emandako orduak zeregin honetara esleitu:'
- text_user_wrote: "%{value}-(e)k idatzi zuen:"
- text_enumeration_destroy_question: "%{count} objetu balio honetara esleituta daude."
- text_enumeration_category_reassign_to: 'Beste balio honetara esleitu:'
- text_email_delivery_not_configured: "Eposta bidalketa ez dago konfiguratuta eta jakinarazpenak ezgaituta daude.\nKonfiguratu zure SMTP zerbitzaria config/configuration.yml-n eta aplikazioa berrabiarazi hauek gaitzeko."
- text_repository_usernames_mapping: "Hautatu edo eguneratu Redmineko erabiltzailea biltegiko egunkarietan topatzen diren erabiltzaile izenekin erlazionatzeko.\nRedmine-n eta biltegian erabiltzaile izen edo eposta berdina duten erabiltzaileak automatikoki erlazionatzen dira."
- text_diff_truncated: '... Diff hau moztua izan da erakus daitekeen tamaina maximoa gainditu duelako.'
- text_custom_field_possible_values_info: 'Lerro bat balio bakoitzeko'
- text_wiki_page_destroy_question: "Orri honek %{descendants} orri seme eta ondorengo ditu. Zer egin nahi duzu?"
- text_wiki_page_nullify_children: "Orri semeak erro orri moduan mantendu"
- text_wiki_page_destroy_children: "Orri semeak eta beraien ondorengo guztiak ezabatu"
- text_wiki_page_reassign_children: "Orri semeak orri guraso honetara esleitu"
- text_own_membership_delete_confirmation: "Zure baimen batzuk (edo guztiak) kentzera zoaz eta baliteke horren ondoren proiektu hau ezin editatzea.\n Ziur zaude jarraitu nahi duzula?"
-
- default_role_manager: Kudeatzailea
- default_role_developer: Garatzailea
- default_role_reporter: Berriemailea
- default_role_non_member: Non member
- default_role_anonymous: Anonymous
- default_tracker_bug: Errorea
- default_tracker_feature: Eginbidea
- default_tracker_support: Laguntza
- default_issue_status_new: Berria
- default_issue_status_in_progress: Lanean
- default_issue_status_resolved: Ebatzita
- default_issue_status_feedback: Berrelikadura
- default_issue_status_closed: Itxita
- default_issue_status_rejected: Baztertua
- default_doc_category_user: Erabiltzaile dokumentazioa
- default_doc_category_tech: Dokumentazio teknikoa
- default_priority_low: Baxua
- default_priority_normal: Normala
- default_priority_high: Altua
- default_priority_urgent: Larria
- default_priority_immediate: Berehalakoa
- default_activity_design: Diseinua
- default_activity_development: Garapena
-
- enumeration_issue_priorities: Zeregin lehentasunak
- enumeration_doc_categories: Dokumentu kategoriak
- enumeration_activities: Jarduerak (denbora kontrola))
- enumeration_system_activity: Sistemako Jarduera
- label_board_sticky: Itsaskorra
- label_board_locked: Blokeatuta
- permission_export_wiki_pages: Wiki orriak esportatu
- setting_cache_formatted_text: Formatudun testua katxeatu
- permission_manage_project_activities: Proiektuaren jarduerak kudeatu
- error_unable_delete_issue_status: Ezine da zereginaren egoera ezabatu
- label_profile: Profila
- permission_manage_subtasks: Azpiatazak kudeatu
- field_parent_issue: Zeregin gurasoa
- label_subtask_plural: Azpiatazak
- label_project_copy_notifications: Proiektua kopiatzen den bitartean eposta jakinarazpenak bidali
- error_can_not_delete_custom_field: Ezin da eremu pertsonalizatua ezabatu
- error_unable_to_connect: Ezin da konektatu (%{value})
- error_can_not_remove_role: Rol hau erabiltzen hari da eta ezin da ezabatu.
- error_can_not_delete_tracker: Aztarnari honek zereginak ditu eta ezin da ezabatu.
- field_principal: Ekintzaile
- label_my_page_block: "Nire orriko blokea"
- notice_failed_to_save_members: "Kidea(k) gordetzean errorea: %{errors}."
- text_zoom_out: Zooma txikiagotu
- text_zoom_in: Zooma handiagotu
- notice_unable_delete_time_entry: "Ezin da hautatutako denbora erregistroa ezabatu."
- label_overall_spent_time: Igarotako denbora guztira
- field_time_entries: "Denbora erregistratu"
- project_module_gantt: Gantt
- text_powered_by: Powered by %{link}
+# Redmine EU language
+# Author: Ales Zabala Alava (Shagi),
+# 2010-01-25
+# Distributed under the same terms as the Redmine itself.
+eu:
+ 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: "%Y/%m/%d"
+ short: "%b %d"
+ long: "%Y %B %d"
+
+ day_names: [Igandea, Astelehena, Asteartea, Asteazkena, Osteguna, Ostirala, Larunbata]
+ abbr_day_names: [Ig., Al., Ar., Az., Og., Or., La.]
+
+ # Don't forget the nil at the beginning; there's no such thing as a 0th month
+ month_names: [~, Urtarrila, Otsaila, Martxoa, Apirila, Maiatza, Ekaina, Uztaila, Abuztua, Iraila, Urria, Azaroa, Abendua]
+ abbr_month_names: [~, Urt, Ots, Mar, Api, Mai, Eka, Uzt, Abu, Ira, Urr, Aza, Abe]
+ # Used in date_select and datime_select.
+ order:
+ - :year
+ - :month
+ - :day
+
+ time:
+ formats:
+ default: "%Y/%m/%d %H:%M"
+ time: "%H:%M"
+ short: "%b %d %H:%M"
+ long: "%Y %B %d %H:%M"
+ am: "am"
+ pm: "pm"
+
+ datetime:
+ distance_in_words:
+ half_a_minute: "minutu erdi"
+ less_than_x_seconds:
+ one: "segundu bat baino gutxiago"
+ other: "%{count} segundu baino gutxiago"
+ x_seconds:
+ one: "segundu 1"
+ other: "%{count} segundu"
+ less_than_x_minutes:
+ one: "minutu bat baino gutxiago"
+ other: "%{count} minutu baino gutxiago"
+ x_minutes:
+ one: "minutu 1"
+ other: "%{count} minutu"
+ about_x_hours:
+ one: "ordu 1 inguru"
+ other: "%{count} ordu inguru"
+ x_days:
+ one: "egun 1"
+ other: "%{count} egun"
+ about_x_months:
+ one: "hilabete 1 inguru"
+ other: "%{count} hilabete inguru"
+ x_months:
+ one: "hilabete 1"
+ other: "%{count} hilabete"
+ about_x_years:
+ one: "urte 1 inguru"
+ other: "%{count} urte inguru"
+ over_x_years:
+ one: "urte 1 baino gehiago"
+ other: "%{count} urte baino gehiago"
+ almost_x_years:
+ one: "ia urte 1"
+ other: "ia %{count} urte"
+
+ number:
+ format:
+ separator: "."
+ delimiter: ""
+ precision: 3
+ human:
+ format:
+ delimiter: ""
+ precision: 1
+ storage_units:
+ format: "%n %u"
+ units:
+ byte:
+ one: "Byte"
+ other: "Byte"
+ kb: "KB"
+ mb: "MB"
+ gb: "GB"
+ tb: "TB"
+
+
+# Used in array.to_sentence.
+ support:
+ array:
+ sentence_connector: "eta"
+ skip_last_comma: false
+
+ activerecord:
+ errors:
+ template:
+ header:
+ one: "Errore batek %{model} hau godetzea galarazi du."
+ other: "%{count} errorek %{model} hau gordetzea galarazi dute."
+ messages:
+ inclusion: "ez dago zerrendan"
+ exclusion: "erreserbatuta dago"
+ invalid: "baliogabea da"
+ confirmation: "ez du berrespenarekin bat egiten"
+ accepted: "onartu behar da"
+ empty: "ezin da hutsik egon"
+ blank: "ezin da hutsik egon"
+ too_long: "luzeegia da (maximoa %{count} karaktere dira)"
+ too_short: "laburregia da (minimoa %{count} karaktere dira)"
+ wrong_length: "luzera ezegokia da (%{count} karakter izan beharko litzake)"
+ taken: "dagoeneko hartuta dago"
+ not_a_number: "ez da zenbaki bat"
+ not_a_date: "ez da baliozko data"
+ greater_than: "%{count} baino handiagoa izan behar du"
+ greater_than_or_equal_to: "%{count} edo handiagoa izan behar du"
+ equal_to: "%{count} izan behar du"
+ less_than: "%{count} baino gutxiago izan behar du"
+ less_than_or_equal_to: "%{count} edo gutxiago izan behar du"
+ odd: "bakoitia izan behar du"
+ even: "bikoitia izan behar du"
+ greater_than_start_date: "hasiera data baino handiagoa izan behar du"
+ not_same_project: "ez dago proiektu berdinean"
+ circular_dependency: "Erlazio honek mendekotasun zirkular bat sortuko luke"
+ cant_link_an_issue_with_a_descendant: "Zeregin bat ezin da bere azpiataza batekin estekatu."
+
+ actionview_instancetag_blank_option: Hautatu mesedez
+
+ general_text_No: 'Ez'
+ general_text_Yes: 'Bai'
+ general_text_no: 'ez'
+ general_text_yes: 'bai'
+ general_lang_name: 'Euskara'
+ general_csv_separator: ','
+ general_csv_decimal_separator: '.'
+ general_csv_encoding: UTF-8
+ general_pdf_encoding: UTF-8
+ general_first_day_of_week: '1'
+
+ notice_account_updated: Kontua ongi eguneratu da.
+ notice_account_invalid_creditentials: Erabiltzaile edo pasahitz ezegokia
+ notice_account_password_updated: Pasahitza ongi eguneratu da.
+ notice_account_wrong_password: Pasahitz ezegokia.
+ notice_account_register_done: Kontua ongi sortu da. Kontua gaitzeko klikatu epostan adierazi zaizun estekan.
+ notice_account_unknown_email: Erabiltzaile ezezaguna.
+ notice_can_t_change_password: Kontu honek kanpoko autentikazio bat erabiltzen du. Ezinezkoa da pasahitza aldatzea.
+ notice_account_lost_email_sent: Pasahitz berria aukeratzeko jarraibideak dituen eposta bat bidali zaizu.
+ notice_account_activated: Zure kontua gaituta dago. Orain saioa has dezakezu
+ notice_successful_create: Sortze arrakastatsua.
+ notice_successful_update: Eguneratze arrakastatsua.
+ notice_successful_delete: Ezabaketa arrakastatsua.
+ notice_successful_connection: Konexio arrakastatsua.
+ notice_file_not_found: Atzitu nahi duzun orria ez da exisitzen edo ezabatua izan da.
+ notice_locking_conflict: Beste erabiltzaile batek datuak eguneratu ditu.
+ notice_not_authorized: Ez duzu orri hau atzitzeko baimenik.
+ notice_email_sent: "%{value} helbidera eposta bat bidali da"
+ notice_email_error: "Errorea eposta bidaltzean (%{value})"
+ notice_feeds_access_key_reseted: Zure RSS atzipen giltza berrezarri da.
+ notice_api_access_key_reseted: Zure API atzipen giltza berrezarri da.
+ notice_failed_to_save_issues: "Hautatutako %{total} zereginetatik %{count} ezin izan dira konpondu: %{ids}."
+ notice_no_issue_selected: "Ez da zereginik hautatu! Mesedez, editatu nahi dituzun arazoak markatu."
+ notice_account_pending: "Zure kontua sortu da, orain kudeatzailearen onarpenaren zain dago."
+ notice_default_data_loaded: Lehenetsitako konfigurazioa ongi kargatu da.
+ notice_unable_delete_version: Ezin da bertsioa ezabatu.
+ notice_issue_done_ratios_updated: Burututako zereginen erlazioa eguneratu da.
+
+ error_can_t_load_default_data: "Ezin izan da lehenetsitako konfigurazioa kargatu: %{value}"
+ error_scm_not_found: "Sarrera edo berrikuspena ez da biltegian topatu."
+ error_scm_command_failed: "Errorea gertatu da biltegia atzitzean: %{value}"
+ error_scm_annotate: "Sarrera ez da existitzen edo ezin da anotatu."
+ error_issue_not_found_in_project: 'Zeregina ez da topatu edo ez da proiektu honetakoa'
+ error_no_tracker_in_project: 'Proiektu honek ez du aztarnaririk esleituta. Mesedez egiaztatu Proiektuaren ezarpenak.'
+ error_no_default_issue_status: 'Zereginek ez dute lehenetsitako egoerarik. Mesedez egiaztatu zure konfigurazioa ("Kudeaketa -> Arazoen egoerak" atalera joan).'
+ error_can_not_reopen_issue_on_closed_version: 'Itxitako bertsio batera esleitutako zereginak ezin dira berrireki'
+ error_can_not_archive_project: Proiektu hau ezin da artxibatu
+ error_issue_done_ratios_not_updated: "Burututako zereginen erlazioa ez da eguneratu."
+ error_workflow_copy_source: 'Mesedez hautatu iturburuko aztarnari edo rola'
+ error_workflow_copy_target: 'Mesedez hautatu helburuko aztarnari(ak) edo rola(k)'
+
+ warning_attachments_not_saved: "%{count} fitxategi ezin izan d(ir)a gorde."
+
+ mail_subject_lost_password: "Zure %{value} pasahitza"
+ mail_body_lost_password: 'Zure pasahitza aldatzeko hurrengo estekan klikatu:'
+ mail_subject_register: "Zure %{value} kontuaren gaitzea"
+ mail_body_register: 'Zure kontua gaitzeko hurrengo estekan klikatu:'
+ mail_body_account_information_external: "Zure %{value} kontua erabil dezakezu saioa hasteko."
+ mail_body_account_information: Zure kontuaren informazioa
+ mail_subject_account_activation_request: "%{value} kontu gaitzeko eskaera"
+ mail_body_account_activation_request: "Erabiltzaile berri bat (%{value}) erregistratu da. Kontua zure onarpenaren zain dago:"
+ mail_subject_reminder: "%{count} arazo hurrengo %{days} egunetan amaitzen d(ir)a"
+ mail_body_reminder: "Zuri esleituta dauden %{count} arazo hurrengo %{days} egunetan amaitzen d(ir)a:"
+ mail_subject_wiki_content_added: "'%{id}' wiki orria gehitu da"
+ mail_body_wiki_content_added: "%{author}-(e)k '%{id}' wiki orria gehitu du."
+ mail_subject_wiki_content_updated: "'%{id}' wiki orria eguneratu da"
+ mail_body_wiki_content_updated: "%{author}-(e)k '%{id}' wiki orria eguneratu du."
+
+ gui_validation_error: akats 1
+ gui_validation_error_plural: "%{count} akats"
+
+ field_name: Izena
+ field_description: Deskribapena
+ field_summary: Laburpena
+ field_is_required: Beharrezkoa
+ field_firstname: Izena
+ field_lastname: Abizenak
+ field_mail: Eposta
+ field_filename: Fitxategia
+ field_filesize: Tamaina
+ field_downloads: Deskargak
+ field_author: Egilea
+ field_created_on: Sortuta
+ field_updated_on: Eguneratuta
+ field_field_format: Formatua
+ field_is_for_all: Proiektu guztietarako
+ field_possible_values: Balio posibleak
+ field_regexp: Expresio erregularra
+ field_min_length: Luzera minimoa
+ field_max_length: Luzera maxioma
+ field_value: Balioa
+ field_category: Kategoria
+ field_title: Izenburua
+ field_project: Proiektua
+ field_issue: Zeregina
+ field_status: Egoera
+ field_notes: Oharrak
+ field_is_closed: Itxitako arazoa
+ field_is_default: Lehenetsitako balioa
+ field_tracker: Aztarnaria
+ field_subject: Gaia
+ field_due_date: Amaiera data
+ field_assigned_to: Esleituta
+ field_priority: Lehentasuna
+ field_fixed_version: Helburuko bertsioa
+ field_user: Erabiltzilea
+ field_role: Rola
+ field_homepage: Orri nagusia
+ field_is_public: Publikoa
+ field_parent: "Honen azpiproiektua:"
+ field_is_in_chlog: Zereginak aldaketa egunkarian ikusten dira
+ field_is_in_roadmap: Arazoak ibilbide-mapan erakutsi
+ field_login: Erabiltzaile izena
+ field_mail_notification: Eposta jakinarazpenak
+ field_admin: Kudeatzailea
+ field_last_login_on: Azken konexioa
+ field_language: Hizkuntza
+ field_password: Pasahitza
+ field_new_password: Pasahitz berria
+ field_password_confirmation: Berrespena
+ field_version: Bertsioa
+ field_type: Mota
+ field_host: Ostalaria
+ field_port: Portua
+ field_account: Kontua
+ field_base_dn: Base DN
+ field_attr_login: Erabiltzaile atributua
+ field_attr_firstname: Izena atributua
+ field_attr_lastname: Abizenak atributua
+ field_attr_mail: Eposta atributua
+ field_onthefly: Zuzeneko erabiltzaile sorrera
+ field_start_date: Hasiera
+ field_done_ratio: Egindako %
+ field_auth_source: Autentikazio modua
+ field_hide_mail: Nire eposta helbidea ezkutatu
+ field_comments: Iruzkina
+ field_url: URL
+ field_start_page: Hasierako orria
+ field_subproject: Azpiproiektua
+ field_hours: Ordu
+ field_activity: Jarduera
+ field_spent_on: Data
+ field_identifier: Identifikatzailea
+ field_is_filter: Iragazki moduan erabilita
+ field_issue_to: Erlazionatutako zereginak
+ field_delay: Atzerapena
+ field_assignable: Arazoak rol honetara esleitu daitezke
+ field_redirect_existing_links: Existitzen diren estekak berbideratu
+ field_estimated_hours: Estimatutako denbora
+ field_column_names: Zutabeak
+ field_time_zone: Ordu zonaldea
+ field_searchable: Bilagarria
+ field_default_value: Lehenetsitako balioa
+ field_comments_sorting: Iruzkinak erakutsi
+ field_parent_title: Orri gurasoa
+ field_editable: Editagarria
+ field_watcher: Behatzailea
+ field_identity_url: OpenID URLa
+ field_content: Edukia
+ field_group_by: Emaitzak honegatik taldekatu
+ field_sharing: Partekatzea
+
+ setting_app_title: Aplikazioaren izenburua
+ setting_app_subtitle: Aplikazioaren azpizenburua
+ setting_welcome_text: Ongietorriko testua
+ setting_default_language: Lehenetsitako hizkuntza
+ setting_login_required: Autentikazioa derrigorrezkoa
+ setting_self_registration: Norberak erregistratu
+ setting_attachment_max_size: Eranskinen tamaina max.
+ setting_issues_export_limit: Zereginen esportatze limitea
+ setting_mail_from: Igorlearen eposta helbidea
+ setting_bcc_recipients: Hartzaileak ezkutuko kopian (bcc)
+ setting_plain_text_mail: Testu soileko epostak (HTML-rik ez)
+ setting_host_name: Ostalari izena eta bidea
+ setting_text_formatting: Testu formatua
+ setting_wiki_compression: Wikiaren historia konprimitu
+ setting_feeds_limit: Jarioaren edukiera limitea
+ setting_default_projects_public: Proiektu berriak defektuz publikoak dira
+ setting_autofetch_changesets: Commit-ak automatikoki hartu
+ setting_sys_api_enabled: Biltegien kudeaketarako WS gaitu
+ setting_commit_ref_keywords: Erreferentzien gako-hitzak
+ setting_commit_fix_keywords: Konpontze gako-hitzak
+ setting_autologin: Saioa automatikoki hasi
+ setting_date_format: Data formatua
+ setting_time_format: Ordu formatua
+ setting_cross_project_issue_relations: Zereginak proiektuen artean erlazionatzea baimendu
+ setting_issue_list_default_columns: Zereginen zerrendan defektuz ikusten diren zutabeak
+ setting_repositories_encodings: Biltegien kodeketak
+ setting_commit_logs_encoding: Commit-en egunkarien kodetzea
+ setting_emails_footer: Eposten oina
+ setting_protocol: Protokoloa
+ setting_per_page_options: Orriko objektuen aukerak
+ setting_user_format: Erabiltzaileak erakusteko formatua
+ setting_activity_days_default: Proiektuen jardueran erakusteko egunak
+ setting_display_subprojects_issues: Azpiproiektuen zereginak proiektu nagusian erakutsi defektuz
+ setting_enabled_scm: Gaitutako IKKak
+ setting_mail_handler_body_delimiters: "Lerro hauteko baten ondoren epostak moztu"
+ setting_mail_handler_api_enabled: Sarrerako epostentzako WS gaitu
+ setting_mail_handler_api_key: API giltza
+ setting_sequential_project_identifiers: Proiektuen identifikadore sekuentzialak sortu
+ setting_gravatar_enabled: Erabili Gravatar erabiltzaile ikonoak
+ setting_gravatar_default: Lehenetsitako Gravatar irudia
+ setting_diff_max_lines_displayed: Erakutsiko diren diff lerro kopuru maximoa
+ setting_file_max_size_displayed: Barnean erakuzten diren testu fitxategien tamaina maximoa
+ setting_repository_log_display_limit: Egunkari fitxategian erakutsiko diren berrikuspen kopuru maximoa.
+ setting_openid: Baimendu OpenID saio hasiera eta erregistatzea
+ setting_password_min_length: Pasahitzen luzera minimoa
+ setting_new_project_user_role_id: Proiektu berriak sortzerakoan kudeatzaile ez diren erabiltzaileei esleitutako rola
+ setting_default_projects_modules: Proiektu berrientzako defektuz gaitutako moduluak
+ setting_issue_done_ratio: "Zereginen burututako tasa kalkulatzean erabili:"
+ setting_issue_done_ratio_issue_field: Zeregin eremua erabili
+ setting_issue_done_ratio_issue_status: Zeregin egoera erabili
+ setting_start_of_week: "Egutegiak noiz hasi:"
+ setting_rest_api_enabled: Gaitu REST web zerbitzua
+
+ permission_add_project: Proiektua sortu
+ permission_add_subprojects: Azpiproiektuak sortu
+ permission_edit_project: Proiektua editatu
+ permission_select_project_modules: Proiektuaren moduluak hautatu
+ permission_manage_members: Kideak kudeatu
+ permission_manage_versions: Bertsioak kudeatu
+ permission_manage_categories: Arazoen kategoriak kudeatu
+ permission_view_issues: Zereginak ikusi
+ permission_add_issues: Zereginak gehitu
+ permission_edit_issues: Zereginak aldatu
+ permission_manage_issue_relations: Zereginen erlazioak kudeatu
+ permission_add_issue_notes: Oharrak gehitu
+ permission_edit_issue_notes: Oharrak aldatu
+ permission_edit_own_issue_notes: Nork bere oharrak aldatu
+ permission_move_issues: Zereginak mugitu
+ permission_delete_issues: Zereginak ezabatu
+ permission_manage_public_queries: Galdera publikoak kudeatu
+ permission_save_queries: Galderak gorde
+ permission_view_gantt: Gantt grafikoa ikusi
+ permission_view_calendar: Egutegia ikusi
+ permission_view_issue_watchers: Behatzaileen zerrenda ikusi
+ permission_add_issue_watchers: Behatzaileak gehitu
+ permission_delete_issue_watchers: Behatzaileak ezabatu
+ permission_log_time: Igarotako denbora erregistratu
+ permission_view_time_entries: Igarotako denbora ikusi
+ permission_edit_time_entries: Denbora egunkariak editatu
+ permission_edit_own_time_entries: Nork bere denbora egunkariak editatu
+ permission_manage_news: Berriak kudeatu
+ permission_comment_news: Berrien iruzkinak egin
+ permission_manage_documents: Dokumentuak kudeatu
+ permission_view_documents: Dokumentuak ikusi
+ permission_manage_files: Fitxategiak kudeatu
+ permission_view_files: Fitxategiak ikusi
+ permission_manage_wiki: Wikia kudeatu
+ permission_rename_wiki_pages: Wiki orriak berrizendatu
+ permission_delete_wiki_pages: Wiki orriak ezabatu
+ permission_view_wiki_pages: Wikia ikusi
+ permission_view_wiki_edits: Wikiaren historia ikusi
+ permission_edit_wiki_pages: Wiki orriak editatu
+ permission_delete_wiki_pages_attachments: Eranskinak ezabatu
+ permission_protect_wiki_pages: Wiki orriak babestu
+ permission_manage_repository: Biltegiak kudeatu
+ permission_browse_repository: Biltegia arakatu
+ permission_view_changesets: Aldaketak ikusi
+ permission_commit_access: Commit atzipena
+ permission_manage_boards: Foroak kudeatu
+ permission_view_messages: Mezuak ikusi
+ permission_add_messages: Mezuak bidali
+ permission_edit_messages: Mezuak aldatu
+ permission_edit_own_messages: Nork bere mezuak aldatu
+ permission_delete_messages: Mezuak ezabatu
+ permission_delete_own_messages: Nork bere mezuak ezabatu
+
+ project_module_issue_tracking: Zereginen jarraipena
+ project_module_time_tracking: Denbora jarraipena
+ project_module_news: Berriak
+ project_module_documents: Dokumentuak
+ project_module_files: Fitxategiak
+ project_module_wiki: Wiki
+ project_module_repository: Biltegia
+ project_module_boards: Foroak
+
+ label_user: Erabiltzailea
+ label_user_plural: Erabiltzaileak
+ label_user_new: Erabiltzaile berria
+ label_user_anonymous: Ezezaguna
+ label_project: Proiektua
+ label_project_new: Proiektu berria
+ label_project_plural: Proiektuak
+ label_x_projects:
+ zero: proiekturik ez
+ one: proiektu bat
+ other: "%{count} proiektu"
+ label_project_all: Proiektu guztiak
+ label_project_latest: Azken proiektuak
+ label_issue: Zeregina
+ label_issue_new: Zeregin berria
+ label_issue_plural: Zereginak
+ label_issue_view_all: Zeregin guztiak ikusi
+ label_issues_by: "Zereginak honengatik: %{value}"
+ label_issue_added: Zeregina gehituta
+ label_issue_updated: Zeregina eguneratuta
+ label_document: Dokumentua
+ label_document_new: Dokumentu berria
+ label_document_plural: Dokumentuak
+ label_document_added: Dokumentua gehituta
+ label_role: Rola
+ label_role_plural: Rolak
+ label_role_new: Rol berria
+ label_role_and_permissions: Rolak eta baimenak
+ label_member: Kidea
+ label_member_new: Kide berria
+ label_member_plural: Kideak
+ label_tracker: Aztarnaria
+ label_tracker_plural: Aztarnariak
+ label_tracker_new: Aztarnari berria
+ label_workflow: Lan-fluxua
+ label_issue_status: Zeregin egoera
+ label_issue_status_plural: Zeregin egoerak
+ label_issue_status_new: Egoera berria
+ label_issue_category: Zeregin kategoria
+ label_issue_category_plural: Zeregin kategoriak
+ label_issue_category_new: Kategoria berria
+ label_custom_field: Eremu pertsonalizatua
+ label_custom_field_plural: Eremu pertsonalizatuak
+ label_custom_field_new: Eremu pertsonalizatu berria
+ label_enumerations: Enumerazioak
+ label_enumeration_new: Balio berria
+ label_information: Informazioa
+ label_information_plural: Informazioa
+ label_please_login: Saioa hasi mesedez
+ label_register: Erregistratu
+ label_login_with_open_id_option: edo OpenID-rekin saioa hasi
+ label_password_lost: Pasahitza galduta
+ label_home: Hasiera
+ label_my_page: Nire orria
+ label_my_account: Nire kontua
+ label_my_projects: Nire proiektuak
+ label_administration: Kudeaketa
+ label_login: Saioa hasi
+ label_logout: Saioa bukatu
+ label_help: Laguntza
+ label_reported_issues: Berri emandako zereginak
+ label_assigned_to_me_issues: Niri esleitutako arazoak
+ label_last_login: Azken konexioa
+ label_registered_on: Noiz erregistratuta
+ label_activity: Jarduerak
+ label_overall_activity: Jarduera guztiak
+ label_user_activity: "%{value}-(r)en jarduerak"
+ label_new: Berria
+ label_logged_as: "Sartutako erabiltzailea:"
+ label_environment: Ingurune
+ label_authentication: Autentikazioa
+ label_auth_source: Autentikazio modua
+ label_auth_source_new: Autentikazio modu berria
+ label_auth_source_plural: Autentikazio moduak
+ label_subproject_plural: Azpiproiektuak
+ label_subproject_new: Azpiproiektu berria
+ label_and_its_subprojects: "%{value} eta bere azpiproiektuak"
+ label_min_max_length: Luzera min - max
+ label_list: Zerrenda
+ label_date: Data
+ label_integer: Osokoa
+ label_float: Koma higikorrekoa
+ label_boolean: Boolearra
+ label_string: Testua
+ label_text: Testu luzea
+ label_attribute: Atributua
+ label_attribute_plural: Atributuak
+ label_download: "Deskarga %{count}"
+ label_download_plural: "%{count} Deskarga"
+ label_no_data: Ez dago erakusteko daturik
+ label_change_status: Egoera aldatu
+ label_history: Historikoa
+ label_attachment: Fitxategia
+ label_attachment_new: Fitxategi berria
+ label_attachment_delete: Fitxategia ezabatu
+ label_attachment_plural: Fitxategiak
+ label_file_added: Fitxategia gehituta
+ label_report: Berri ematea
+ label_report_plural: Berri emateak
+ label_news: Berria
+ label_news_new: Berria gehitu
+ label_news_plural: Berriak
+ label_news_latest: Azken berriak
+ label_news_view_all: Berri guztiak ikusi
+ label_news_added: Berria gehituta
+ label_change_log: Aldaketa egunkaria
+ label_settings: Ezarpenak
+ label_overview: Gainbegirada
+ label_version: Bertsioa
+ label_version_new: Bertsio berria
+ label_version_plural: Bertsioak
+ label_close_versions: Burututako bertsioak itxi
+ label_confirmation: Baieztapena
+ label_export_to: 'Eskuragarri baita:'
+ label_read: Irakurri...
+ label_public_projects: Proiektu publikoak
+ label_open_issues: irekita
+ label_open_issues_plural: irekiak
+ label_closed_issues: itxita
+ label_closed_issues_plural: itxiak
+ label_x_open_issues_abbr_on_total:
+ zero: 0 irekita / %{total}
+ one: 1 irekita / %{total}
+ other: "%{count} irekiak / %{total}"
+ label_x_open_issues_abbr:
+ zero: 0 irekita
+ one: 1 irekita
+ other: "%{count} irekiak"
+ label_x_closed_issues_abbr:
+ zero: 0 itxita
+ one: 1 itxita
+ other: "%{count} itxiak"
+ label_total: Guztira
+ label_permissions: Baimenak
+ label_current_status: Uneko egoera
+ label_new_statuses_allowed: Baimendutako egoera berriak
+ label_all: guztiak
+ label_none: ezer
+ label_nobody: inor
+ label_next: Hurrengoa
+ label_previous: Aurrekoak
+ label_used_by: Erabilita
+ label_details: Xehetasunak
+ label_add_note: Oharra gehitu
+ label_per_page: Orriko
+ label_calendar: Egutegia
+ label_months_from: hilabete noiztik
+ label_gantt: Gantt
+ label_internal: Barnekoa
+ label_last_changes: "azken %{count} aldaketak"
+ label_change_view_all: Aldaketa guztiak ikusi
+ label_personalize_page: Orri hau pertsonalizatu
+ label_comment: Iruzkin
+ label_comment_plural: Iruzkinak
+ label_x_comments:
+ zero: iruzkinik ez
+ one: iruzkin 1
+ other: "%{count} iruzkin"
+ label_comment_add: Iruzkina gehitu
+ label_comment_added: Iruzkina gehituta
+ label_comment_delete: Iruzkinak ezabatu
+ label_query: Galdera pertsonalizatua
+ label_query_plural: Pertsonalizatutako galderak
+ label_query_new: Galdera berria
+ label_filter_add: Iragazkia gehitu
+ label_filter_plural: Iragazkiak
+ label_equals: da
+ label_not_equals: ez da
+ label_in_less_than: baino gutxiagotan
+ label_in_more_than: baino gehiagotan
+ label_greater_or_equal: '>='
+ label_less_or_equal: '<='
+ label_in: hauetan
+ label_today: gaur
+ label_all_time: denbora guztia
+ label_yesterday: atzo
+ label_this_week: aste honetan
+ label_last_week: pasadan astean
+ label_last_n_days: "azken %{count} egunetan"
+ label_this_month: hilabete hau
+ label_last_month: pasadan hilabetea
+ label_this_year: urte hau
+ label_date_range: Data tartea
+ label_less_than_ago: egun hauek baino gutxiago
+ label_more_than_ago: egun hauek baino gehiago
+ label_ago: orain dela
+ label_contains: dauka
+ label_not_contains: ez dauka
+ label_day_plural: egun
+ label_repository: Biltegia
+ label_repository_plural: Biltegiak
+ label_browse: Arakatu
+ label_modification: "aldaketa %{count}"
+ label_modification_plural: "%{count} aldaketa"
+ label_branch: Adarra
+ label_tag: Etiketa
+ label_revision: Berrikuspena
+ label_revision_plural: Berrikuspenak
+ label_revision_id: "%{value} berrikuspen"
+ label_associated_revisions: Elkartutako berrikuspenak
+ label_added: gehituta
+ label_modified: aldatuta
+ label_copied: kopiatuta
+ label_renamed: berrizendatuta
+ label_deleted: ezabatuta
+ label_latest_revision: Azken berrikuspena
+ label_latest_revision_plural: Azken berrikuspenak
+ label_view_revisions: Berrikuspenak ikusi
+ label_view_all_revisions: Berrikuspen guztiak ikusi
+ label_max_size: Tamaina maximoa
+ label_sort_highest: Goraino mugitu
+ label_sort_higher: Gora mugitu
+ label_sort_lower: Behera mugitu
+ label_sort_lowest: Beheraino mugitu
+ label_roadmap: Ibilbide-mapa
+ label_roadmap_due_in: "Epea: %{value}"
+ label_roadmap_overdue: "%{value} berandu"
+ label_roadmap_no_issues: Ez dago zereginik bertsio honetan
+ label_search: Bilatu
+ label_result_plural: Emaitzak
+ label_all_words: hitz guztiak
+ label_wiki: Wikia
+ label_wiki_edit: Wiki edizioa
+ label_wiki_edit_plural: Wiki edizioak
+ label_wiki_page: Wiki orria
+ label_wiki_page_plural: Wiki orriak
+ label_index_by_title: Izenburuaren araberako indizea
+ label_index_by_date: Dataren araberako indizea
+ label_current_version: Uneko bertsioa
+ label_preview: Aurreikusi
+ label_feed_plural: Jarioak
+ label_changes_details: Aldaketa guztien xehetasunak
+ label_issue_tracking: Zeregin jarraipena
+ label_spent_time: Igarotako denbora
+ label_f_hour: "ordu %{value}"
+ label_f_hour_plural: "%{value} ordu"
+ label_time_tracking: Denbora jarraipena
+ label_change_plural: Aldaketak
+ label_statistics: Estatistikak
+ label_commits_per_month: Commit-ak hilabeteka
+ label_commits_per_author: Commit-ak egileka
+ label_view_diff: Ezberdintasunak ikusi
+ label_diff_inline: barnean
+ label_diff_side_by_side: aldez alde
+ label_options: Aukerak
+ label_copy_workflow_from: Kopiatu workflow-a hemendik
+ label_permissions_report: Baimenen txostena
+ label_watched_issues: Behatutako zereginak
+ label_related_issues: Erlazionatutako zereginak
+ label_applied_status: Aplikatutako egoera
+ label_loading: Kargatzen...
+ label_relation_new: Erlazio berria
+ label_relation_delete: Erlazioa ezabatu
+ label_relates_to: erlazionatuta dago
+ label_duplicates: bikoizten du
+ label_duplicated_by: honek bikoiztuta
+ label_blocks: blokeatzen du
+ label_blocked_by: honek blokeatuta
+ label_precedes: aurretik doa
+ label_follows: jarraitzen du
+ label_end_to_start: bukaeratik hasierara
+ label_end_to_end: bukaeratik bukaerara
+ label_start_to_start: hasieratik hasierhasieratik bukaerara
+ label_start_to_end: hasieratik bukaerara
+ label_stay_logged_in: Saioa mantendu
+ label_disabled: ezgaituta
+ label_show_completed_versions: Bukatutako bertsioak ikusi
+ label_me: ni
+ label_board: Foroa
+ label_board_new: Foro berria
+ label_board_plural: Foroak
+ label_topic_plural: Gaiak
+ label_message_plural: Mezuak
+ label_message_last: Azken mezua
+ label_message_new: Mezu berria
+ label_message_posted: Mesua gehituta
+ label_reply_plural: Erantzunak
+ label_send_information: Erabiltzaileai kontuaren informazioa bidali
+ label_year: Urtea
+ label_month: Hilabetea
+ label_week: Astea
+ label_date_from: Nork
+ label_date_to: Nori
+ label_language_based: Erabiltzailearen hizkuntzaren arabera
+ label_sort_by: "Ordenazioa: %{value}"
+ label_send_test_email: Frogako mezua bidali
+ label_feeds_access_key: RSS atzipen giltza
+ label_missing_feeds_access_key: RSS atzipen giltza falta da
+ label_feeds_access_key_created_on: "RSS atzipen giltza orain dela %{value} sortuta"
+ label_module_plural: Moduluak
+ label_added_time_by: "%{author}, orain dela %{age} gehituta"
+ label_updated_time_by: "%{author}, orain dela %{age} eguneratuta"
+ label_updated_time: "Orain dela %{value} eguneratuta"
+ label_jump_to_a_project: Joan proiektura...
+ label_file_plural: Fitxategiak
+ label_changeset_plural: Aldaketak
+ label_default_columns: Lehenetsitako zutabeak
+ label_no_change_option: (Aldaketarik ez)
+ label_bulk_edit_selected_issues: Hautatutako zereginak batera editatu
+ label_theme: Itxura
+ label_default: Lehenetsia
+ label_search_titles_only: Izenburuetan bakarrik bilatu
+ label_user_mail_option_all: "Nire proiektu guztietako gertakari guztientzat"
+ label_user_mail_option_selected: "Hautatutako proiektuetako edozein gertakarientzat..."
+ label_user_mail_no_self_notified: "Ez dut nik egiten ditudan aldeketen jakinarazpenik jaso nahi"
+ label_registration_activation_by_email: kontuak epostaz gaitu
+ label_registration_manual_activation: kontuak eskuz gaitu
+ label_registration_automatic_activation: kontuak automatikoki gaitu
+ label_display_per_page: "Orriko: %{value}"
+ label_age: Adina
+ label_change_properties: Propietateak aldatu
+ label_general: Orokorra
+ label_more: Gehiago
+ label_scm: IKK
+ label_plugins: Pluginak
+ label_ldap_authentication: LDAP autentikazioa
+ label_downloads_abbr: Desk.
+ label_optional_description: Aukerako deskribapena
+ label_add_another_file: Beste fitxategia gehitu
+ label_preferences: Hobespenak
+ label_chronological_order: Orden kronologikoan
+ label_reverse_chronological_order: Alderantzizko orden kronologikoan
+ label_planning: Planifikazioa
+ label_incoming_emails: Sarrerako epostak
+ label_generate_key: Giltza sortu
+ label_issue_watchers: Behatzaileak
+ label_example: Adibidea
+ label_display: Bistaratzea
+ label_sort: Ordenatu
+ label_ascending: Gorantz
+ label_descending: Beherantz
+ label_date_from_to: "%{start}-tik %{end}-ra"
+ label_wiki_content_added: Wiki orria gehituta
+ label_wiki_content_updated: Wiki orria eguneratuta
+ label_group: Taldea
+ label_group_plural: Taldeak
+ label_group_new: Talde berria
+ label_time_entry_plural: Igarotako denbora
+ label_version_sharing_none: Ez partekatuta
+ label_version_sharing_descendants: Azpiproiektuekin
+ label_version_sharing_hierarchy: Proiektu Hierarkiarekin
+ label_version_sharing_tree: Proiektu zuhaitzarekin
+ label_version_sharing_system: Proiektu guztiekin
+ label_update_issue_done_ratios: Zereginen burututako erlazioa eguneratu
+ label_copy_source: Iturburua
+ label_copy_target: Helburua
+ label_copy_same_as_target: Helburuaren berdina
+ label_display_used_statuses_only: Aztarnari honetan erabiltzen diren egoerak bakarrik erakutsi
+ label_api_access_key: API atzipen giltza
+ label_missing_api_access_key: API atzipen giltza falta da
+ label_api_access_key_created_on: "API atzipen giltza sortuta orain dela %{value}"
+
+ button_login: Saioa hasi
+ button_submit: Bidali
+ button_save: Gorde
+ button_check_all: Guztiak markatu
+ button_uncheck_all: Guztiak desmarkatu
+ button_delete: Ezabatu
+ button_create: Sortu
+ button_create_and_continue: Sortu eta jarraitu
+ button_test: Frogatu
+ button_edit: Editatu
+ button_add: Gehitu
+ button_change: Aldatu
+ button_apply: Aplikatu
+ button_clear: Garbitu
+ button_lock: Blokeatu
+ button_unlock: Desblokeatu
+ button_download: Deskargatu
+ button_list: Zerrenda
+ button_view: Ikusi
+ button_move: Mugitu
+ button_move_and_follow: Mugitu eta jarraitu
+ button_back: Atzera
+ button_cancel: Ezeztatu
+ button_activate: Gahitu
+ button_sort: Ordenatu
+ button_log_time: Denbora erregistratu
+ button_rollback: Itzuli bertsio honetara
+ button_watch: Behatu
+ button_unwatch: Behatzen utzi
+ button_reply: Erantzun
+ button_archive: Artxibatu
+ button_unarchive: Desartxibatu
+ button_reset: Berrezarri
+ button_rename: Berrizendatu
+ button_change_password: Pasahitza aldatu
+ button_copy: Kopiatu
+ button_copy_and_follow: Kopiatu eta jarraitu
+ button_annotate: Anotatu
+ button_update: Eguneratu
+ button_configure: Konfiguratu
+ button_quote: Aipatu
+ button_duplicate: Bikoiztu
+ button_show: Ikusi
+
+ status_active: gaituta
+ status_registered: izena emanda
+ status_locked: blokeatuta
+
+ version_status_open: irekita
+ version_status_locked: blokeatuta
+ version_status_closed: itxita
+
+ field_active: Gaituta
+
+ text_select_mail_notifications: Jakinarazpenak zein ekintzetarako bidaliko diren hautatu.
+ text_regexp_info: adib. ^[A-Z0-9]+$
+ text_min_max_length_info: 0k mugarik gabe esan nahi du
+ text_project_destroy_confirmation: Ziur zaude proiektu hau eta erlazionatutako datu guztiak ezabatu nahi dituzula?
+ text_subprojects_destroy_warning: "%{value} azpiproiektuak ere ezabatuko dira."
+ text_workflow_edit: Hautatu rola eta aztarnaria workflow-a editatzeko
+ text_are_you_sure: Ziur zaude?
+ text_journal_changed: "%{label} %{old}-(e)tik %{new}-(e)ra aldatuta"
+ text_journal_set_to: "%{label}-k %{value} balioa hartu du"
+ text_journal_deleted: "%{label} ezabatuta (%{old})"
+ text_journal_added: "%{label} %{value} gehituta"
+ text_tip_issue_begin_day: gaur hasten diren zereginak
+ text_tip_issue_end_day: gaur bukatzen diren zereginak
+ text_tip_issue_begin_end_day: gaur hasi eta bukatzen diren zereginak
+ text_project_identifier_info: 'Only lower case letters (a-z), numbers, dashes and underscores are allowed.
Once saved, the identifier can not be changed.'
+ text_caracters_maximum: "%{count} karaktere gehienez."
+ text_caracters_minimum: "Gutxienez %{count} karaktereetako luzerakoa izan behar du."
+ text_length_between: "Luzera %{min} eta %{max} karaktereen artekoa."
+ text_tracker_no_workflow: Ez da workflow-rik definitu aztarnari honentzako
+ text_unallowed_characters: Debekatutako karaktereak
+ text_comma_separated: Balio anitz izan daitezke (komaz banatuta).
+ text_line_separated: Balio anitz izan daitezke (balio bakoitza lerro batean).
+ text_issues_ref_in_commit_messages: Commit-en mezuetan zereginak erlazionatu eta konpontzen
+ text_issue_added: "%{id} zeregina %{author}-(e)k jakinarazi du."
+ text_issue_updated: "%{id} zeregina %{author}-(e)k eguneratu du."
+ text_wiki_destroy_confirmation: Ziur zaude wiki hau eta bere eduki guztiak ezabatu nahi dituzula?
+ text_issue_category_destroy_question: "Zeregin batzuk (%{count}) kategoria honetara esleituta daude. Zer egin nahi duzu?"
+ text_issue_category_destroy_assignments: Kategoria esleipenak kendu
+ text_issue_category_reassign_to: Zereginak kategoria honetara esleitu
+ text_user_mail_option: "Hautatu gabeko proiektuetan, behatzen edo parte hartzen duzun gauzei buruzko jakinarazpenak jasoko dituzu (adib. zu egile zaren edo esleituta dituzun zereginak)."
+ text_no_configuration_data: "Rolak, aztarnariak, zeregin egoerak eta workflow-ak ez dira oraindik konfiguratu.\nOso gomendagarria de lehenetsitako kkonfigurazioa kargatzea. Kargatu eta gero aldatu ahalko duzu."
+ text_load_default_configuration: Lehenetsitako konfigurazioa kargatu
+ text_status_changed_by_changeset: "%{value} aldaketan aplikatuta."
+ text_issues_destroy_confirmation: 'Ziur zaude hautatutako zeregina(k) ezabatu nahi dituzula?'
+ text_select_project_modules: 'Hautatu proiektu honetan gaitu behar diren moduluak:'
+ text_default_administrator_account_changed: Lehenetsitako kudeatzaile kontua aldatuta
+ text_file_repository_writable: Eranskinen direktorioan idatz daiteke
+ text_plugin_assets_writable: Pluginen baliabideen direktorioan idatz daiteke
+ text_rmagick_available: RMagick eskuragarri (aukerazkoa)
+ text_destroy_time_entries_question: "%{hours} orduei buruz berri eman zen zuk ezabatzera zoazen zereginean. Zer egin nahi duzu?"
+ text_destroy_time_entries: Ezabatu berri emandako orduak
+ text_assign_time_entries_to_project: Berri emandako orduak proiektura esleitu
+ text_reassign_time_entries: 'Berri emandako orduak zeregin honetara esleitu:'
+ text_user_wrote: "%{value}-(e)k idatzi zuen:"
+ text_enumeration_destroy_question: "%{count} objetu balio honetara esleituta daude."
+ text_enumeration_category_reassign_to: 'Beste balio honetara esleitu:'
+ text_email_delivery_not_configured: "Eposta bidalketa ez dago konfiguratuta eta jakinarazpenak ezgaituta daude.\nKonfiguratu zure SMTP zerbitzaria config/configuration.yml-n eta aplikazioa berrabiarazi hauek gaitzeko."
+ text_repository_usernames_mapping: "Hautatu edo eguneratu Redmineko erabiltzailea biltegiko egunkarietan topatzen diren erabiltzaile izenekin erlazionatzeko.\nRedmine-n eta biltegian erabiltzaile izen edo eposta berdina duten erabiltzaileak automatikoki erlazionatzen dira."
+ text_diff_truncated: '... Diff hau moztua izan da erakus daitekeen tamaina maximoa gainditu duelako.'
+ text_custom_field_possible_values_info: 'Lerro bat balio bakoitzeko'
+ text_wiki_page_destroy_question: "Orri honek %{descendants} orri seme eta ondorengo ditu. Zer egin nahi duzu?"
+ text_wiki_page_nullify_children: "Orri semeak erro orri moduan mantendu"
+ text_wiki_page_destroy_children: "Orri semeak eta beraien ondorengo guztiak ezabatu"
+ text_wiki_page_reassign_children: "Orri semeak orri guraso honetara esleitu"
+ text_own_membership_delete_confirmation: "Zure baimen batzuk (edo guztiak) kentzera zoaz eta baliteke horren ondoren proiektu hau ezin editatzea.\n Ziur zaude jarraitu nahi duzula?"
+
+ default_role_manager: Kudeatzailea
+ default_role_developer: Garatzailea
+ default_role_reporter: Berriemailea
+ default_role_non_member: Non member
+ default_role_anonymous: Anonymous
+ default_tracker_bug: Errorea
+ default_tracker_feature: Eginbidea
+ default_tracker_support: Laguntza
+ default_issue_status_new: Berria
+ default_issue_status_in_progress: Lanean
+ default_issue_status_resolved: Ebatzita
+ default_issue_status_feedback: Berrelikadura
+ default_issue_status_closed: Itxita
+ default_issue_status_rejected: Baztertua
+ default_doc_category_user: Erabiltzaile dokumentazioa
+ default_doc_category_tech: Dokumentazio teknikoa
+ default_priority_low: Baxua
+ default_priority_normal: Normala
+ default_priority_high: Altua
+ default_priority_urgent: Larria
+ default_priority_immediate: Berehalakoa
+ default_activity_design: Diseinua
+ default_activity_development: Garapena
+
+ enumeration_issue_priorities: Zeregin lehentasunak
+ enumeration_doc_categories: Dokumentu kategoriak
+ enumeration_activities: Jarduerak (denbora kontrola))
+ enumeration_system_activity: Sistemako Jarduera
+ label_board_sticky: Itsaskorra
+ label_board_locked: Blokeatuta
+ permission_export_wiki_pages: Wiki orriak esportatu
+ setting_cache_formatted_text: Formatudun testua katxeatu
+ permission_manage_project_activities: Proiektuaren jarduerak kudeatu
+ error_unable_delete_issue_status: Ezine da zereginaren egoera ezabatu
+ label_profile: Profila
+ permission_manage_subtasks: Azpiatazak kudeatu
+ field_parent_issue: Zeregin gurasoa
+ label_subtask_plural: Azpiatazak
+ label_project_copy_notifications: Proiektua kopiatzen den bitartean eposta jakinarazpenak bidali
+ error_can_not_delete_custom_field: Ezin da eremu pertsonalizatua ezabatu
+ error_unable_to_connect: Ezin da konektatu (%{value})
+ error_can_not_remove_role: Rol hau erabiltzen hari da eta ezin da ezabatu.
+ error_can_not_delete_tracker: Aztarnari honek zereginak ditu eta ezin da ezabatu.
+ field_principal: Ekintzaile
+ label_my_page_block: "Nire orriko blokea"
+ notice_failed_to_save_members: "Kidea(k) gordetzean errorea: %{errors}."
+ text_zoom_out: Zooma txikiagotu
+ text_zoom_in: Zooma handiagotu
+ notice_unable_delete_time_entry: "Ezin da hautatutako denbora erregistroa ezabatu."
+ label_overall_spent_time: Igarotako denbora guztira
+ field_time_entries: "Denbora erregistratu"
+ project_module_gantt: Gantt
+ text_powered_by: Powered by %{link}
label_cvs_module: Module
label_filesystem_path: Root directory
label_darcs_path: Root directory
@@ -931,27 +931,27 @@ eu:
label_cvs_path: CVSROOT
label_git_path: Path to .git directory
label_mercurial_path: Root directory
- project_module_calendar: Egutegia
- button_edit_associated_wikipage: "Esleitutako wiki orria editatu: %{page_title}"
- text_are_you_sure_with_children: "Zeregina eta azpi zeregin guztiak ezabatu?"
- field_text: Testu eremua
- label_user_mail_option_only_owner: "Jabea naizen gauzetarako barrarik"
- setting_default_notification_option: "Lehenetsitako ohartarazpen aukera"
- label_user_mail_option_only_my_events: "Behatzen ditudan edo partaide naizen gauzetarako bakarrik"
- label_user_mail_option_only_assigned: "Niri esleitutako gauzentzat bakarrik"
- label_user_mail_option_none: "Gertakaririk ez"
- field_member_of_group: "Esleituta duenaren taldea"
- field_assigned_to_role: "Esleituta duenaren rola"
- notice_not_authorized_archived_project: "Atzitu nahi duzun proiektua artxibatua izan da."
- label_principal_search: "Bilatu erabiltzaile edo taldea:"
- label_user_search: "Erabiltzailea bilatu:"
- field_visible: Ikusgai
- setting_emails_header: "Eposten goiburua"
- setting_commit_logtime_activity_id: "Erregistratutako denboraren jarduera"
- text_time_logged_by_changeset: "%{value} aldaketan egindakoa."
- setting_commit_logtime_enabled: "Erregistrutako denbora gaitu"
- notice_gantt_chart_truncated: Grafikoa moztu da bistara daitekeen elementuen kopuru maximoa gainditu delako (%{max})
- setting_gantt_items_limit: "Gantt grafikoan bistara daitekeen elementu kopuru maximoa"
+ project_module_calendar: Egutegia
+ button_edit_associated_wikipage: "Esleitutako wiki orria editatu: %{page_title}"
+ text_are_you_sure_with_children: "Zeregina eta azpi zeregin guztiak ezabatu?"
+ field_text: Testu eremua
+ label_user_mail_option_only_owner: "Jabea naizen gauzetarako barrarik"
+ setting_default_notification_option: "Lehenetsitako ohartarazpen aukera"
+ label_user_mail_option_only_my_events: "Behatzen ditudan edo partaide naizen gauzetarako bakarrik"
+ label_user_mail_option_only_assigned: "Niri esleitutako gauzentzat bakarrik"
+ label_user_mail_option_none: "Gertakaririk ez"
+ field_member_of_group: "Esleituta duenaren taldea"
+ field_assigned_to_role: "Esleituta duenaren rola"
+ notice_not_authorized_archived_project: "Atzitu nahi duzun proiektua artxibatua izan da."
+ label_principal_search: "Bilatu erabiltzaile edo taldea:"
+ label_user_search: "Erabiltzailea bilatu:"
+ field_visible: Ikusgai
+ setting_emails_header: "Eposten goiburua"
+ setting_commit_logtime_activity_id: "Erregistratutako denboraren jarduera"
+ text_time_logged_by_changeset: "%{value} aldaketan egindakoa."
+ setting_commit_logtime_enabled: "Erregistrutako denbora gaitu"
+ notice_gantt_chart_truncated: Grafikoa moztu da bistara daitekeen elementuen kopuru maximoa gainditu delako (%{max})
+ setting_gantt_items_limit: "Gantt grafikoan bistara daitekeen elementu kopuru maximoa"
label_my_queries: My custom queries
label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee
text_journal_changed_no_detail: "%{label} updated"
diff --git a/config/locales/lv.yml b/config/locales/lv.yml
index 87a11053..12b5ddab 100644
--- a/config/locales/lv.yml
+++ b/config/locales/lv.yml
@@ -1,941 +1,941 @@
-# translated by Dzintars Bergs (dzintars.bergs@gmail.com)
-
-lv:
- direction: ltr
- date:
- formats:
- default: "%d.%m.%Y"
- short: "%d %b"
- long: "%d %B %Y"
-
- day_names: [SvÄtdiena, Pirmdiena, Otrdiena, TreĹĄdiena, Ceturtdiena, Piektdiena, Sestdiena]
- abbr_day_names: [Sv, Pr, Ot, Tr, Ct, Pk, St]
-
- month_names: [~, JanvÄris, FebruÄris, Marts, AprÄŤlis , Maijs, JĹŤnijs, JĹŤlijs, Augusts, Septembris, Oktobris, Novembris, Decembris]
- abbr_month_names: [~, Jan, Feb, Mar, Apr, Mai, JĹŤn, JĹŤl, Aug, Sep, Okt, Nov, Dec]
- order:
- - :day
- - :month
- - :year
-
- time:
- formats:
- default: "%a, %d %b %Y, %H:%M:%S %z"
- time: "%H:%M"
- short: "%d %b, %H:%M"
- long: "%B %d, %Y %H:%M"
- am: "rÄŤtÄ"
- pm: "vakarÄ"
-
- datetime:
- distance_in_words:
- half_a_minute: "pus minĹŤte"
- less_than_x_seconds:
- one: "mazÄk kÄ 1 sekunde"
- other: "mazÄk kÄ %{count} sekundes"
- x_seconds:
- one: "1 sekunde"
- other: "%{count} sekundes"
- less_than_x_minutes:
- one: "mazÄk kÄ minĹŤte"
- other: "mazÄk kÄ %{count} minĹŤtes"
- x_minutes:
- one: "1 minĹŤte"
- other: "%{count} minĹŤtes"
- about_x_hours:
- one: "aptuveni 1 stunda"
- other: "aptuveni %{count} stundas"
- x_days:
- one: "1 diena"
- other: "%{count} dienas"
- about_x_months:
- one: "aptuveni 1 mÄnesis"
- other: "aptuveni %{count} mÄneĹĄi"
- x_months:
- one: "1 mÄnesis"
- other: "%{count} mÄneĹĄi"
- about_x_years:
- one: "aptuveni 1 gads"
- other: "aptuveni %{count} gadi"
- over_x_years:
- one: "ilgÄk par 1 gadu"
- other: "ilgÄk par %{count} gadiem"
- almost_x_years:
- one: "gandrÄŤz 1 gadu"
- other: "gandrÄŤz %{count} gadus"
-
- number:
- format:
- separator: "."
- delimiter: ""
- precision: 3
- human:
- format:
- delimiter: " "
- precision: 1
- storage_units:
- format: "%n %u"
- units:
- byte:
- one: "Baits"
- other: "Baiti"
- kb: "KB"
- mb: "MB"
- gb: "GB"
- tb: "TB"
-
-
- support:
- array:
- sentence_connector: "un"
- 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: "nav iekÄźauts sarakstÄ"
- exclusion: "ir rezervÄts"
- invalid: "nederÄŤgs"
- confirmation: "apstiprinÄjums nesakrÄŤt"
- accepted: "jÄbĹŤt akceptÄtam"
- empty: "nevar bĹŤt tukĹĄs"
- blank: "nevar bĹŤt neaizpildÄŤts"
- too_long: "ir pÄrÄk gara(ĹĄ) (maksimÄlais garums ir %{count} simboli)"
- too_short: "ir pÄrÄk ÄŤsa(s) (minimÄlais garums ir %{count} simboli)"
- wrong_length: "ir nepareiza garuma (vajadzÄtu bĹŤt %{count} simboli)"
- taken: "eksistÄ"
- not_a_number: "nav skaitlis"
- not_a_date: "nav derÄŤgs datums"
- greater_than: "jÄbĹŤt lielÄkam par %{count}"
- greater_than_or_equal_to: "jÄbĹŤt lielÄkam vai vienÄdam ar %{count}"
- equal_to: "jÄbĹŤt vienÄdam ar %{count}"
- less_than: "jÄbĹŤt mazÄkam kÄ %{count}"
- less_than_or_equal_to: "jÄbĹŤt mazÄkam vai vienÄdam ar %{count}"
- odd: "jÄatťġirÄs"
- even: "jÄsakrÄŤt"
- greater_than_start_date: "jÄbĹŤt vÄlÄkam par sÄkuma datumu"
- not_same_project: "nepieder pie tÄ paĹĄa projekta"
- circular_dependency: "Ĺ ÄŤ relÄcija radÄŤtu ciklisku atkarÄŤbu"
- cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
-
- actionview_instancetag_blank_option: IzvÄlieties
-
- general_text_No: 'NÄ'
- general_text_Yes: 'JÄ'
- general_text_no: 'nÄ'
- general_text_yes: 'jÄ'
- general_lang_name: 'Latvian (LatvieĹĄu)'
- general_csv_separator: ','
- general_csv_decimal_separator: '.'
- general_csv_encoding: UTF-8
- general_pdf_encoding: UTF-8
- general_first_day_of_week: '1'
-
- notice_account_updated: Konts tika atjaunots veiksmÄŤgi.
- notice_account_invalid_creditentials: Nepareizs lietotÄja vÄrds vai parole.
- notice_account_password_updated: Parole tika veiksmÄŤgi atjaunota.
- notice_account_wrong_password: Nepareiza parole
- notice_account_register_done: Konts veiksmÄŤgi izveidots. Lai aktivizÄtu kontu, spiediet uz saites, kas Jums tika nosĹŤtÄŤta.
- notice_account_unknown_email: NezinÄms lietotÄjs
- notice_can_t_change_password: Ĺ is konts izmanto ÄrÄju pilnvaroĹĄanas avotu. Nav iespÄjams nomainÄŤt paroli.
- notice_account_lost_email_sent: Jums tika nosĹŤtÄŤts e-pasts ar instrukcijÄm, kÄ izveidot jaunu paroli.
- notice_account_activated: JĹŤsu konts ir aktivizÄts. Varat pieslÄgties sistÄmai.
- notice_successful_create: VeiksmÄŤga izveide.
- notice_successful_update: VeiksmÄŤga atjaunoĹĄana.
- notice_successful_delete: VeiksmÄŤga dzÄĹĄana.
- notice_successful_connection: VeiksmÄŤgs savienojums.
- notice_file_not_found: Lapa, ko JĹŤs mÄÄŁinÄt atvÄrt, neeksistÄ vai ir pÄrvietota.
- notice_locking_conflict: Datus ir atjaunojis cits lietotÄjs.
- notice_not_authorized: Jums nav tiesčbu piekğōt ťai lapai.
- notice_email_sent: "E-pasts tika nosĹŤtÄŤts uz %{value}"
- notice_email_error: "Kğōda sōtot e-pastu (%{value})"
- notice_feeds_access_key_reseted: JĹŤsu RSS pieejas atslÄga tika iestatÄŤta sÄkuma stÄvoklÄŤ.
- notice_api_access_key_reseted: JĹŤsu API pieejas atslÄga tika iestatÄŤta sÄkuma stÄvoklÄŤ.
- notice_failed_to_save_issues: "NeizdevÄs saglabÄt %{count} uzdevumu(us) no %{total} izvÄlÄti: %{ids}."
- notice_no_issue_selected: "Nav izvÄlÄts uzdevums! LĹŤdzu, atzÄŤmÄjiet uzdevumus, kurus vÄlaties rediÄŁÄt!"
- notice_account_pending: "JĹŤsu konts tika izveidots un ĹĄobrÄŤd gaida administratora apstiprinÄjumu."
- notice_default_data_loaded: NoklusÄtÄ konfigurÄcija tika veiksmÄŤgi ielÄdÄta.
- notice_unable_delete_version: NeizdevÄs dzÄst versiju.
- notice_issue_done_ratios_updated: Uzdevuma izpildes koeficients atjaunots.
-
- error_can_t_load_default_data: "Nevar ielÄdÄt noklusÄtos konfigurÄcijas datus: %{value}"
- error_scm_not_found: "Ieraksts vai versija nebija repozitorijÄ."
- error_scm_command_failed: "MÄÄŁinot piekğōt repozitorijam, notika kğōda: %{value}"
- error_scm_annotate: "Ieraksts neeksistÄ vai tam nevar tikt pievienots paskaidrojums."
- error_issue_not_found_in_project: 'Uzdevums netika atrasts vai nepieder ĹĄim projektam.'
- error_no_tracker_in_project: 'Neviens trakeris nav saistÄŤts ar ĹĄo projektu. PÄrbaudiet projekta iestatÄŤjumus.'
- error_no_default_issue_status: 'Nav definÄts uzdevuma noklusÄtais statuss. PÄrbaudiet konfigurÄciju (Ejat uz: "AdministrÄcija -> Uzdevumu statusi")!'
- error_can_not_reopen_issue_on_closed_version: 'Nevar pievienot atsauksmi uzdevumam, kas saistÄŤts ar slÄgtu versiju.'
- error_can_not_archive_project: Ĺ is projekts nevar tikt arhivÄts
- error_issue_done_ratios_not_updated: "Uzdevuma izpildes koeficients nav atjaunots."
- error_workflow_copy_source: 'LĹŤdzu izvÄlieties avota trakeri vai lomu'
- error_workflow_copy_target: 'LĹŤdzu izvÄlÄties mÄrġa trakeri(us) un lomu(as)'
-
- warning_attachments_not_saved: "%{count} datnes netika saglabÄtas."
-
- mail_subject_lost_password: "JĹŤsu %{value} parole"
- mail_body_lost_password: 'Lai mainÄŤtu paroli, spiediet uz ĹĄÄŤs saites:'
- mail_subject_register: "JĹŤsu %{value} konta aktivizÄcija"
- mail_body_register: 'Lai izveidotu kontu, spiediet uz ĹĄÄŤs saites:'
- mail_body_account_information_external: "Varat izmantot JĹŤsu %{value} kontu, lai pieslÄgtos."
- mail_body_account_information: JĹŤsu konta informÄcija
- mail_subject_account_activation_request: "%{value} konta aktivizÄcijas pieprasÄŤjums"
- mail_body_account_activation_request: "Jauns lietotÄjs (%{value}) ir reÄŁistrÄts. LietotÄja konts gaida JĹŤsu apstiprinÄjumu:"
- mail_subject_reminder: "%{count} uzdevums(i) sagaidÄms(i) tuvÄkajÄs %{days} dienÄs"
- mail_body_reminder: "%{count} uzdevums(i), kurĹĄ(i) ir nozÄŤmÄts(i) Jums, sagaidÄms(i) tuvÄkajÄs %{days} dienÄs:"
- mail_subject_wiki_content_added: "'%{id}' Wiki lapa pievienota"
- mail_body_wiki_content_added: "The '%{id}' Wiki lapu pievienojis %{author}."
- mail_subject_wiki_content_updated: "'%{id}' Wiki lapa atjaunota"
- mail_body_wiki_content_updated: "The '%{id}' Wiki lapu atjaunojis %{author}."
-
- gui_validation_error: 1 kğōda
- gui_validation_error_plural: "%{count} kğōdas"
-
- field_name: Nosaukums
- field_description: Apraksts
- field_summary: Kopsavilkums
- field_is_required: NepiecieĹĄams
- field_firstname: VÄrds
- field_lastname: UzvÄrds
- field_mail: "E-pasts"
- field_filename: Datne
- field_filesize: IzmÄrs
- field_downloads: LejupielÄdes
- field_author: Autors
- field_created_on: Izveidots
- field_updated_on: Atjaunots
- field_field_format: FormÄts
- field_is_for_all: Visiem projektiem
- field_possible_values: IespÄjamÄs vÄrtÄŤbas
- field_regexp: RegulÄrÄ izteiksme
- field_min_length: MinimÄlais garums
- field_max_length: MaksimÄlais garums
- field_value: VÄrtÄŤba
- field_category: Kategorija
- field_title: Nosaukums
- field_project: Projekts
- field_issue: Uzdevums
- field_status: Statuss
- field_notes: PiezÄŤmes
- field_is_closed: Uzdevums slÄgts
- field_is_default: NoklusÄtÄ vÄrtÄŤba
- field_tracker: Trakeris
- field_subject: Temats
- field_due_date: SagaidÄmais datums
- field_assigned_to: Pieťġirts
- field_priority: PrioritÄte
- field_fixed_version: MÄrġa versija
- field_user: LietotÄjs
- field_role: Loma
- field_homepage: Vietne
- field_is_public: Publisks
- field_parent: ApakĹĄprojekts projektam
- field_is_in_roadmap: CeÄźvedÄŤ parÄdÄŤtie uzdevumi
- field_login: PieslÄgties
- field_mail_notification: "E-pasta paziĹojumi"
- field_admin: Administrators
- field_last_login_on: PÄdÄjo reizi pieslÄdzies
- field_language: Valoda
- field_password: Parole
- field_new_password: JanÄ parole
- field_password_confirmation: Paroles apstiprinÄjums
- field_version: Versija
- field_type: Tips
- field_host: Hosts
- field_port: Ports
- field_account: Konts
- field_base_dn: Base DN
- field_attr_login: PieslÄgĹĄanÄs atribĹŤts
- field_attr_firstname: VÄrda atribĹŤts
- field_attr_lastname: UzvÄrda atribĹŤts
- field_attr_mail: "E-pasta atribĹŤts"
- field_onthefly: "LietotÄja izveidoĹĄana on-the-fly"
- field_start_date: SÄkuma datums
- field_done_ratio: "% padarÄŤti"
- field_auth_source: Pilnvaroťanas reŞčms
- field_hide_mail: "PaslÄpt manu e-pasta adresi"
- field_comments: KomentÄrs
- field_url: URL
- field_start_page: SÄkuma lapa
- field_subproject: ApakĹĄprojekts
- field_hours: Stundas
- field_activity: AktivitÄte
- field_spent_on: Datums
- field_identifier: Identifikators
- field_is_filter: Izmantots kÄ filtrs
- field_issue_to: SaistÄŤts uzdevums
- field_delay: KavÄjums
- field_assignable: Uzdevums var tikt piesaistÄŤts ĹĄai lomai
- field_redirect_existing_links: PÄradresÄt eksistÄjoĹĄÄs saites
- field_estimated_hours: ParedzÄtais laiks
- field_column_names: Kolonnas
- field_time_zone: Laika zona
- field_searchable: MeklÄjams
- field_default_value: NoklusÄtÄ vÄrtÄŤba
- field_comments_sorting: RÄdÄŤt komentÄrus
- field_parent_title: VecÄka lapa
- field_editable: RediÄŁÄjams
- field_watcher: VÄrotÄjs
- field_identity_url: OpenID URL
- field_content: Saturs
- field_group_by: GrupÄt rezultÄtus pÄc
- field_sharing: KoplietoĹĄana
-
- setting_app_title: Programmas nosaukums
- setting_app_subtitle: Programmas apakĹĄ-nosaukums
- setting_welcome_text: Sveiciena teksts
- setting_default_language: NoklusÄtÄ valoda
- setting_login_required: NepiecieĹĄama pilnvaroĹĄana
- setting_self_registration: PaĹĄreÄŁistrÄĹĄanÄs
- setting_attachment_max_size: Pielikuma maksimÄlais izmÄrs
- setting_issues_export_limit: Uzdevumu eksporta ierobeĹžojums
- setting_mail_from: "E-pasta adrese informÄcijas nosĹŤtÄŤĹĄanai"
- setting_bcc_recipients: "SaĹÄmÄju adreses neparÄdÄŤsies citu saĹÄmÄju vÄstulÄs (bcc)"
- setting_plain_text_mail: "VÄstule brÄŤvÄ tekstÄ (bez HTML)"
- setting_host_name: Hosta nosaukums un piekğuves ceğť
- setting_text_formatting: Teksta formatÄĹĄana
- setting_wiki_compression: Wiki vÄstures saspieĹĄana
- setting_feeds_limit: Barotnes satura ierobeĹžojums
- setting_default_projects_public: Jaunie projekti noklusÄti ir publiski pieejami
- setting_autofetch_changesets: "AutomÄtiski lietot jaunÄko versiju, pieslÄdzoties repozitorijam (Autofetch)"
- setting_sys_api_enabled: IeslÄgt WS repozitoriju menedĹžmentam
- setting_commit_ref_keywords: NorÄdes atslÄgvÄrdi
- setting_commit_fix_keywords: FiksÄjoĹĄie atslÄgvÄrdi
- setting_autologin: AutomÄtiskÄ pieslÄgĹĄanÄs
- setting_date_format: Datuma formÄts
- setting_time_format: Laika formÄts
- setting_cross_project_issue_relations: "AtÄźaut starp-projektu uzdevumu relÄcijas"
- setting_issue_list_default_columns: NoklusÄti rÄdÄŤtÄs kolonnas uzdevumu sarakstÄ
- setting_repositories_encodings: Repozitoriju kodÄjumi
- setting_commit_logs_encoding: KodÄt ziĹojumus
- setting_emails_footer: "E-pastu kÄjene"
- setting_protocol: Protokols
- setting_per_page_options: Objekti vienÄ lapÄ
- setting_user_format: LietotÄju rÄdÄŤĹĄanas formÄts
- setting_activity_days_default: Dienus skaits aktivitÄĹĄu rÄdÄŤĹĄanai aktivitÄĹĄu sadaÄźÄ
- setting_display_subprojects_issues: RÄdÄŤt apakĹĄprojekta uzdevumus galvenajÄ projektÄ pÄc noklusÄjuma
- setting_enabled_scm: Lietot SCM
- setting_mail_handler_body_delimiters: "SaÄŤsinÄt pÄc vienas no ĹĄim rindÄm"
- setting_mail_handler_api_enabled: "Lietot WS ienÄkoĹĄajiem e-pastiem"
- setting_mail_handler_api_key: API atslÄga
- setting_sequential_project_identifiers: ĢenerÄt secÄŤgus projektu identifikatorus
- setting_gravatar_enabled: Izmantot Gravatar lietotÄju ikonas
- setting_gravatar_default: NoklusÄtais Gravatar attÄls
- setting_diff_max_lines_displayed: MaksimÄlais rÄdÄŤto diff rindu skaits
- setting_file_max_size_displayed: MaksimÄlais izmÄrs iekÄźautajiem teksta failiem
- setting_repository_log_display_limit: MaksimÄlais ĹžurnÄla datnÄ rÄdÄŤto revÄŤziju skaits
- setting_openid: AtÄźaut OpenID pieslÄgĹĄanos un reÄŁistrÄĹĄanos
- setting_password_min_length: MinimÄlais paroles garums
- setting_new_project_user_role_id: Loma, kura tiek pieťġirta ne-administratora lietotÄjam, kurĹĄ izveido projektu
- setting_default_projects_modules: NoklusÄtie lietotie moduÄźi jaunam projektam
- setting_issue_done_ratio: AprÄġinÄt uzdevuma izpildes koeficientu ar
- setting_issue_done_ratio_issue_field: uzdevuma lauku
- setting_issue_done_ratio_issue_status: uzdevuma statusu
- setting_start_of_week: SÄkt kalendÄru ar
- setting_rest_api_enabled: Lietot REST web-servisu
- setting_cache_formatted_text: KeĹĄot formatÄtu tekstu
-
- permission_add_project: Izveidot projektu
- permission_add_subprojects: Izveidot apakĹĄprojektu
- permission_edit_project: RediÄŁÄt projektu
- permission_select_project_modules: IzvÄlÄties projekta moduÄźus
- permission_manage_members: PÄrvaldÄŤt dalÄŤbniekus
- permission_manage_project_activities: PÄrvaldÄŤt projekta aktivitÄtes
- permission_manage_versions: PÄrvaldÄŤt versijas
- permission_manage_categories: PÄrvaldÄŤt uzdevumu kategorijas
- permission_view_issues: ApskatÄŤt uzdevumus
- permission_add_issues: Pievienot uzdevumus
- permission_edit_issues: RediÄŁÄt uzdevumus
- permission_manage_issue_relations: PÄrvaldÄŤt uzdevumu relÄcijas
- permission_add_issue_notes: Pievienot piezÄŤmes
- permission_edit_issue_notes: RediÄŁÄt piezÄŤmes
- permission_edit_own_issue_notes: RediÄŁÄt paĹĄa piezÄŤmes
- permission_move_issues: PÄrvietot uzdevumus
- permission_delete_issues: DzÄst uzdevumus
- permission_manage_public_queries: PÄrvaldÄŤt publiskos pieprasÄŤjumus
- permission_save_queries: SaglabÄt pieprasÄŤjumus
- permission_view_gantt: SkatÄŤt Ganta diagrammu
- permission_view_calendar: SkatÄŤt kalendÄru
- permission_view_issue_watchers: SkatÄŤt vÄrotÄju sarakstu
- permission_add_issue_watchers: Pievienot vÄrotÄjus
- permission_delete_issue_watchers: DzÄst vÄrotÄjus
- permission_log_time: PiereÄŁistrÄt pavadÄŤto laiku
- permission_view_time_entries: SkatÄŤt pavadÄŤto laiku
- permission_edit_time_entries: RdiÄŁÄt laika reÄŁistrus
- permission_edit_own_time_entries: RediÄŁÄt savus laika reÄŁistrus
- permission_manage_news: PÄrvaldÄŤt jaunumus
- permission_comment_news: KomentÄt jaunumus
- permission_manage_documents: PÄrvaldÄŤt dokumentus
- permission_view_documents: SkatÄŤt dokumentus
- permission_manage_files: PÄrvaldÄŤt failus
- permission_view_files: SkatÄŤt failus
- permission_manage_wiki: PÄrvaldÄŤt wiki
- permission_rename_wiki_pages: PÄrsaukt wiki lapas
- permission_delete_wiki_pages: DzÄst wiki lapas
- permission_view_wiki_pages: SkatÄŤt wiki
- permission_view_wiki_edits: SkatÄŤt wiki vÄsturi
- permission_edit_wiki_pages: RdiÄŁÄt wiki lapas
- permission_delete_wiki_pages_attachments: DzÄst pielikumus
- permission_protect_wiki_pages: Projekta wiki lapas
- permission_manage_repository: PÄrvaldÄŤt repozitoriju
- permission_browse_repository: PÄrlĹŤkot repozitoriju
- permission_view_changesets: SkatÄŤt izmaiĹu kopumus
- permission_commit_access: AtÄźaut piekÄźuvi
- permission_manage_boards: PÄrvaldÄŤt ziĹojumu dÄÄźus
- permission_view_messages: SkatÄŤt ziĹas
- permission_add_messages: PublicÄt ziĹas
- permission_edit_messages: RediÄŁÄt ziĹas
- permission_edit_own_messages: RediÄŁÄt savas ziĹas
- permission_delete_messages: DzÄst ziĹas
- permission_delete_own_messages: DzÄst savas ziĹas
- permission_export_wiki_pages: EksportÄt Wiki lapas
-
- project_module_issue_tracking: Uzdevumu uzskaite
- project_module_time_tracking: Laika uzskaite
- project_module_news: Jaunumi
- project_module_documents: Dokumenti
- project_module_files: Datnes
- project_module_wiki: Wiki
- project_module_repository: Repozitorijs
- project_module_boards: ZiĹojumu dÄÄźi
-
- label_user: LietotÄjs
- label_user_plural: LietotÄji
- label_user_new: Jauns lietotÄjs
- label_user_anonymous: AnonÄŤms
- label_project: Projekts
- label_project_new: Jauns projekts
- label_project_plural: Projekti
- label_x_projects:
- zero: nav projektu
- one: 1 projekts
- other: "%{count} projekti"
- label_project_all: Visi projekti
- label_project_latest: JaunÄkie projekti
- label_issue: Uzdevums
- label_issue_new: Jauns uzdevums
- label_issue_plural: Uzdevumi
- label_issue_view_all: SkatÄŤt visus uzdevumus
- label_issues_by: "KÄrtot pÄc %{value}"
- label_issue_added: Uzdevums pievienots
- label_issue_updated: Uzdevums atjaunots
- label_document: Dokuments
- label_document_new: Jauns dokuments
- label_document_plural: Dokumenti
- label_document_added: Dokuments pievienots
- label_role: Loma
- label_role_plural: Lomas
- label_role_new: Jauna loma
- label_role_and_permissions: Lomas un atÄźaujas
- label_member: DalÄŤbnieks
- label_member_new: Jauns dalÄŤbnieks
- label_member_plural: DalÄŤbnieki
- label_tracker: Trakeris
- label_tracker_plural: Trakeri
- label_tracker_new: Jauns trakeris
- label_workflow: Darba gaita
- label_issue_status: Uzdevuma statuss
- label_issue_status_plural: Uzdevumu statusi
- label_issue_status_new: Jauns statuss
- label_issue_category: Uzdevuma kategorija
- label_issue_category_plural: Uzdevumu kategorijas
- label_issue_category_new: Jauna kategorija
- label_custom_field: PielÄgojams lauks
- label_custom_field_plural: PielÄgojami lauki
- label_custom_field_new: Jauns pielÄgojams lauks
- label_enumerations: UzskaitÄŤjumi
- label_enumeration_new: Jauna vÄrtÄŤba
- label_information: InformÄcija
- label_information_plural: InformÄcija
- label_please_login: LĹŤdzu pieslÄdzieties
- label_register: ReÄŁistrÄties
- label_login_with_open_id_option: vai pieslÄgties ar OpenID
- label_password_lost: NozaudÄta parole
- label_home: SÄkums
- label_my_page: Mana lapa
- label_my_account: Mans konts
- label_my_projects: Mani projekti
- label_administration: AdministrÄcija
- label_login: PieslÄgties
- label_logout: AtslÄgties
- label_help: PalÄŤdzÄŤba
- label_reported_issues: ZiĹotie uzdevumi
- label_assigned_to_me_issues: Man piesaistÄŤtie uzdevumi
- label_last_login: PÄdÄjÄ pieslÄgĹĄanÄs
- label_registered_on: ReÄŁistrÄjies
- label_activity: AktivitÄte
- label_overall_activity: KopÄjÄs aktivitÄtes
- label_user_activity: "LietotÄja %{value} aktivitÄtes"
- label_new: Jauns
- label_logged_as: PieslÄdzies kÄ
- label_environment: Vide
- label_authentication: PilnvaroĹĄana
- label_auth_source: Pilnvaroťanas reŞčms
- label_auth_source_new: Jauns pilnvaroťanas reŞčms
- label_auth_source_plural: Pilnvaroťanas reŞčmi
- label_subproject_plural: ApakĹĄprojekti
- label_subproject_new: Jauns apakĹĄprojekts
- label_and_its_subprojects: "%{value} un tÄ apakĹĄprojekti"
- label_min_max_length: MinimÄlais - MaksimÄlais garums
- label_list: Saraksts
- label_date: Datums
- label_integer: Vesels skaitlis
- label_float: DecimÄlskaitlis
- label_boolean: Patiesuma vÄrtÄŤba
- label_string: Teksts
- label_text: GarĹĄ teksts
- label_attribute: AtribĹŤts
- label_attribute_plural: AtribĹŤti
- label_download: "%{count} LejupielÄde"
- label_download_plural: "%{count} LejupielÄdes"
- label_no_data: Nav datu, ko parÄdÄŤt
- label_change_status: MainÄŤt statusu
- label_history: VÄsture
- label_attachment: Pielikums
- label_attachment_new: Jauns pielikums
- label_attachment_delete: DzÄst pielikumu
- label_attachment_plural: Pielikumi
- label_file_added: Lauks pievienots
- label_report: Atskaite
- label_report_plural: Atskaites
- label_news: ZiĹa
- label_news_new: Pievienot ziĹu
- label_news_plural: ZiĹas
- label_news_latest: JaunÄkÄs ziĹas
- label_news_view_all: SkatÄŤt visas ziĹas
- label_news_added: ZiĹas pievienotas
- label_settings: IestatÄŤjumi
- label_overview: PÄrskats
- label_version: Versija
- label_version_new: Jauna versija
- label_version_plural: Versijas
- label_close_versions: AizvÄrt pabeigtÄs versijas
- label_confirmation: ApstiprinÄjums
- label_export_to: 'Pieejams arÄŤ:'
- label_read: LasÄŤt...
- label_public_projects: Publiskie projekti
- label_open_issues: atvÄrts
- label_open_issues_plural: atvÄrti
- label_closed_issues: slÄgts
- label_closed_issues_plural: slÄgti
- label_x_open_issues_abbr_on_total:
- zero: 0 atvÄrti / %{total}
- one: 1 atvÄrts / %{total}
- other: "%{count} atvÄrti / %{total}"
- label_x_open_issues_abbr:
- zero: 0 atvÄrti
- one: 1 atvÄrts
- other: "%{count} atvÄrti"
- label_x_closed_issues_abbr:
- zero: 0 slÄgti
- one: 1 slÄgts
- other: "%{count} slÄgti"
- label_total: KopÄ
- label_permissions: AtÄźaujas
- label_current_status: PaĹĄreizÄjais statuss
- label_new_statuses_allowed: Jauni statusi atÄźauti
- label_all: visi
- label_none: neviens
- label_nobody: nekas
- label_next: NÄkoĹĄais
- label_previous: IepriekĹĄÄjais
- label_used_by: Izmanto
- label_details: DetaÄźas
- label_add_note: Pievienot piezÄŤmi
- label_per_page: katrÄ lapÄ
- label_calendar: KalendÄrs
- label_months_from: mÄneĹĄi no
- label_gantt: Ganta diagramma
- label_internal: IekĹĄÄjais
- label_last_changes: "pÄdÄjÄs %{count} izmaiĹas"
- label_change_view_all: SkatÄŤt visas izmaiĹas
- label_personalize_page: PielÄgot ĹĄo lapu
- label_comment: KomentÄrs
- label_comment_plural: KomentÄri
- label_x_comments:
- zero: nav komentÄru
- one: 1 komentÄrs
- other: "%{count} komentÄri"
- label_comment_add: Pievienot komentÄru
- label_comment_added: KomentÄrs pievienots
- label_comment_delete: DzÄst komentÄrus
- label_query: PielÄgots pieprasÄŤjums
- label_query_plural: PielÄgoti pieprasÄŤjumi
- label_query_new: Jauns pieprasÄŤjums
- label_filter_add: Pievienot filtru
- label_filter_plural: Filtri
- label_equals: ir
- label_not_equals: nav
- label_in_less_than: ir mazÄk kÄ
- label_in_more_than: ir vairÄk kÄ
- label_greater_or_equal: '>='
- label_less_or_equal: '<='
- label_in: iekĹĄ
- label_today: ĹĄodien
- label_all_time: visu laiku
- label_yesterday: vakar
- label_this_week: ĹĄonedÄÄź
- label_last_week: pagÄjuĹĄo ĹĄonedÄÄź
- label_last_n_days: "pÄdÄjÄs %{count} dienas"
- label_this_month: ĹĄomÄnes
- label_last_month: pagÄjuĹĄo mÄnes
- label_this_year: ĹĄogad
- label_date_range: Datumu apgabals
- label_less_than_ago: mazÄk kÄ dienas iepriekĹĄ
- label_more_than_ago: vairÄk kÄ dienas iepriekĹĄ
- label_ago: dienas iepriekĹĄ
- label_contains: satur
- label_not_contains: nesatur
- label_day_plural: dienas
- label_repository: Repozitorijs
- label_repository_plural: Repozitoriji
- label_browse: PÄrlĹŤkot
- label_modification: "%{count} izmaiĹa"
- label_modification_plural: "%{count} izmaiĹas"
- label_branch: Zars
- label_tag: Birka
- label_revision: RevÄŤzija
- label_revision_plural: RevÄŤzijas
- label_revision_id: "RevÄŤzija %{value}"
- label_associated_revisions: SaistÄŤtÄs revÄŤzijas
- label_added: pievienots
- label_modified: modificÄts
- label_copied: nokopÄts
- label_renamed: pÄrsaukts
- label_deleted: dzÄsts
- label_latest_revision: PÄdÄjÄ revÄŤzija
- label_latest_revision_plural: PÄdÄjÄs revÄŤzijas
- label_view_revisions: SkatÄŤt revÄŤzijas
- label_view_all_revisions: SkatÄŤt visas revÄŤzijas
- label_max_size: MaksimÄlais izmÄrs
- label_sort_highest: PÄrvietot uz augĹĄu
- label_sort_higher: PÄrvietot soli augĹĄup
- label_sort_lower: PÄrvietot uz leju
- label_sort_lowest: PÄrvietot vienu soli uz leju
- label_roadmap: CeÄźvedis
- label_roadmap_due_in: "SagaidÄms pÄc %{value}"
- label_roadmap_overdue: "nokavÄts %{value}"
- label_roadmap_no_issues: Ĺ ai versijai nav uzdevumu
- label_search: MeklÄt
- label_result_plural: RezultÄti
- label_all_words: Visi vÄrdi
- label_wiki: Wiki
- label_wiki_edit: Wiki labojums
- label_wiki_edit_plural: Wiki labojumi
- label_wiki_page: Wiki lapa
- label_wiki_page_plural: Wiki lapas
- label_index_by_title: IndeksÄt pÄc nosaukuma
- label_index_by_date: IndeksÄt pÄc datuma
- label_current_version: TekoĹĄÄ versija
- label_preview: PriekĹĄskatÄŤjums
- label_feed_plural: Barotnes
- label_changes_details: Visu izmaiĹu detaÄźas
- label_issue_tracking: Uzdevumu uzskaite
- label_spent_time: PavadÄŤtais laiks
- label_f_hour: "%{value} stunda"
- label_f_hour_plural: "%{value} stundas"
- label_time_tracking: Laika uzskaite
- label_change_plural: IzmaiĹas
- label_statistics: Statistika
- label_commits_per_month: Nodevumi mÄnesÄŤ
- label_commits_per_author: Nodevumi no autora
- label_view_diff: Skatčt atťġirčbas
- label_diff_inline: iekÄźauts
- label_diff_side_by_side: blakus
- label_options: Opcijas
- label_copy_workflow_from: KopÄt darba plĹŤsmu no
- label_permissions_report: AtÄźauju atskaite
- label_watched_issues: VÄrotie uzdevumi
- label_related_issues: SaistÄŤtie uzdevumi
- label_applied_status: Pieťġirtais statuss
- label_loading: LÄdÄjas...
- label_relation_new: Jauna relÄcija
- label_relation_delete: DzÄst relÄciju
- label_relates_to: saistÄŤts ar
- label_duplicates: dublikÄti
- label_duplicated_by: dublÄjas ar
- label_blocks: bloġÄ
- label_blocked_by: nobloġÄjis
- label_precedes: pirms
- label_follows: seko
- label_end_to_start: no beigÄm uz sÄkumu
- label_end_to_end: no beigÄm uz beigÄm
- label_start_to_start: no sÄkuma uz sÄkumu
- label_start_to_end: no sÄkuma uz beigÄm
- label_stay_logged_in: AtcerÄties mani
- label_disabled: izslÄgts
- label_show_completed_versions: RÄdÄŤt pabeigtÄs versijas
- label_me: es
- label_board: Forums
- label_board_new: Jauns forums
- label_board_plural: Forumi
- label_board_locked: SlÄgts
- label_board_sticky: SvarÄŤgs
- label_topic_plural: TÄmas
- label_message_plural: ZiĹas
- label_message_last: PÄdÄjÄ ziĹa
- label_message_new: Jauna ziĹa
- label_message_posted: ZiĹa pievienota
- label_reply_plural: Atbildes
- label_send_information: SĹŤtÄŤt konta informÄciju lietotÄjam
- label_year: Gads
- label_month: MÄnesis
- label_week: NedÄÄźa
- label_date_from: No
- label_date_to: Kam
- label_language_based: Izmantot lietotÄja valodu
- label_sort_by: "KÄrtot pÄc %{value}"
- label_send_test_email: "SĹŤtÄŤt testa e-pastu"
- label_feeds_access_key: RSS piekÄźuves atslÄga
- label_missing_feeds_access_key: TrĹŤkst RSS piekÄźuves atslÄgas
- label_feeds_access_key_created_on: "RSS piekÄźuves atslÄga izveidota pirms %{value}"
- label_module_plural: ModuÄźi
- label_added_time_by: "Pievienojis %{author} pirms %{age}"
- label_updated_time_by: "Atjaunojis %{author} pirms %{age}"
- label_updated_time: "Atjaunots pirms %{value}"
- label_jump_to_a_project: PÄriet uz projektu...
- label_file_plural: Datnes
- label_changeset_plural: IzmaiĹu kopumi
- label_default_columns: NoklusÄtÄs kolonnas
- label_no_change_option: (Nav izmaiĹu)
- label_bulk_edit_selected_issues: Labot visus izvÄlÄtos uzdevumus
- label_theme: TÄma
- label_default: NoklusÄts
- label_search_titles_only: MeklÄt tikai nosaukumos
- label_user_mail_option_all: "Par visiem notikumiem visos manos projektos"
- label_user_mail_option_selected: "Par visiem notikumiem tikai izvÄlÄtajos projektos..."
- label_user_mail_no_self_notified: "NeziĹot man par izmaiĹÄm, kuras veicu es pats"
- label_registration_activation_by_email: "konta aktivizÄcija caur e-pastu"
- label_registration_manual_activation: manuÄlÄ konta aktivizÄcija
- label_registration_automatic_activation: automÄtiskÄ konta aktivizÄcija
- label_display_per_page: "RÄdÄŤt vienÄ lapÄ: %{value}"
- label_age: Vecums
- label_change_properties: MainÄŤt atribĹŤtus
- label_general: Galvenais
- label_more: VÄl
- label_scm: SCM
- label_plugins: SpraudĹi
- label_ldap_authentication: LDAP pilnvaroĹĄana
- label_downloads_abbr: L-lÄd.
- label_optional_description: "Apraksts (neobligÄts)"
- label_add_another_file: Pievienot citu failu
- label_preferences: PriekĹĄrocÄŤbas
- label_chronological_order: HronoloÄŁiskÄ kÄrtÄŤbÄ
- label_reverse_chronological_order: Apgriezti hronoloÄŁiskÄ kÄrtÄŤbÄ
- label_planning: PlÄnoĹĄana
- label_incoming_emails: "IenÄkoĹĄie e-pasti"
- label_generate_key: ĢenerÄt atslÄgu
- label_issue_watchers: VÄrotÄji
- label_example: PiemÄrs
- label_display: RÄdÄŤt
- label_sort: KÄrtot
- label_ascending: AugoĹĄi
- label_descending: DilstoĹĄi
- label_date_from_to: "No %{start} lÄŤdz %{end}"
- label_wiki_content_added: Wiki lapa pievienota
- label_wiki_content_updated: Wiki lapa atjaunota
- label_group: Grupa
- label_group_plural: Grupas
- label_group_new: Jauna grupa
- label_time_entry_plural: PavadÄŤtais laiks
- label_version_sharing_none: Nav koplietoĹĄanai
- label_version_sharing_descendants: Ar apakĹĄprojektiem
- label_version_sharing_hierarchy: Ar projektu hierarhiju
- label_version_sharing_tree: Ar projekta koku
- label_version_sharing_system: Ar visiem projektiem
- label_update_issue_done_ratios: Atjaunot uzdevuma veikuma attiecÄŤbu
- label_copy_source: Avots
- label_copy_target: MÄrġis
- label_copy_same_as_target: TÄds pats kÄ mÄrġis
- label_display_used_statuses_only: "RÄdÄŤt tikai statusus, ko lieto ĹĄis trakeris"
- label_api_access_key: API pieejas atslÄga
- label_missing_api_access_key: TrĹŤkst API pieejas atslÄga
- label_api_access_key_created_on: "API pieejas atslÄga izveidota pirms %{value}"
-
- button_login: PieslÄgties
- button_submit: NosĹŤtÄŤt
- button_save: SaglabÄt
- button_check_all: AtzÄŤmÄt visu
- button_uncheck_all: NoĹemt visus atzÄŤmÄjumus
- button_delete: DzÄst
- button_create: Izveidot
- button_create_and_continue: Izveidot un turpinÄt
- button_test: TestÄt
- button_edit: Labot
- button_add: Pievienot
- button_change: MainÄŤt
- button_apply: ApstiprinÄt
- button_clear: NotÄŤrÄŤt
- button_lock: SlÄgt
- button_unlock: AtslÄgt
- button_download: LejuplÄdÄt
- button_list: Saraksts
- button_view: Skats
- button_move: PÄrvietot
- button_move_and_follow: PÄrvietot un sekot
- button_back: AtpakaÄź
- button_cancel: Atcelt
- button_activate: AktivizÄt
- button_sort: KÄrtot
- button_log_time: Ilgs laiks
- button_rollback: Atjaunot uz ĹĄo versiju
- button_watch: VÄrot
- button_unwatch: NevÄrot
- button_reply: AtbildÄt
- button_archive: ArhivÄt
- button_unarchive: AtarhivÄt
- button_reset: AtiestatÄŤt
- button_rename: PÄrsaukt
- button_change_password: MainÄŤt paroli
- button_copy: KopÄt
- button_copy_and_follow: KopÄt un sekot
- button_annotate: PierakstÄŤt paskaidrojumu
- button_update: Atjaunot
- button_configure: KonfigurÄt
- button_quote: CitÄts
- button_duplicate: DublÄt
- button_show: RÄdÄŤt
-
- status_active: aktÄŤvs
- status_registered: reÄŁistrÄts
- status_locked: slÄgts
-
- version_status_open: atvÄrta
- version_status_locked: slÄgta
- version_status_closed: aizvÄrta
-
- field_active: AktÄŤvs
-
- text_select_mail_notifications: "IzvÄlieties darbÄŤbas, par kurÄm vÄlaties saĹemt ziĹojumus e-pastÄ"
- text_regexp_info: "piem. ^[A-Z0-9]+$"
- text_min_max_length_info: "0 nozÄŤmÄ, ka nav ierobeĹžojumu"
- text_project_destroy_confirmation: "Vai tieĹĄÄm vÄlaties dzÄst ĹĄo projektu un ar to saistÄŤtos datus?"
- text_subprojects_destroy_warning: "TÄ apakĹĄprojekts(i): %{value} arÄŤ tiks dzÄsts(i)."
- text_workflow_edit: Lai labotu darba plĹŤsmu, izvÄlieties lomu un trakeri
- text_are_you_sure: "Vai esat pÄrliecinÄts?"
- text_journal_changed: "%{label} mainÄŤts no %{old} uz %{new}"
- text_journal_set_to: "%{label} iestatÄŤts uz %{value}"
- text_journal_deleted: "%{label} dzÄsts (%{old})"
- text_journal_added: "%{label} %{value} pievienots"
- text_tip_issue_begin_day: uzdevums sÄkas ĹĄodien
- text_tip_issue_end_day: uzdevums beidzas ĹĄodien
- text_tip_issue_begin_end_day: uzdevums sÄkas un beidzas ĹĄodien
- text_project_identifier_info: 'Only lower case letters (a-z), numbers, dashes and underscores are allowed.
Once saved, the identifier can not be changed.'
- text_caracters_maximum: "%{count} simboli maksimÄli."
- text_caracters_minimum: "JÄbĹŤt vismaz %{count} simbolu garumÄ."
- text_length_between: "Garums starp %{min} un %{max} simboliem."
- text_tracker_no_workflow: Ĺ im trakerim nav definÄta darba plĹŤsma
- text_unallowed_characters: NeatÄźauti simboli
- text_comma_separated: "AtÄźautas vairÄkas vÄrtÄŤbas (atdalÄŤt ar komatu)."
- text_line_separated: "AtÄźautas vairÄkas vÄrtÄŤbas (rakstÄŤt katru savÄ rindÄ)."
- text_issues_ref_in_commit_messages: "IzmaiĹu salÄŤdzinÄĹĄana izejot no ziĹojumiem"
- text_issue_added: "Uzdevumu %{id} pievienojis %{author}."
- text_issue_updated: "Uzdevumu %{id} atjaunojis %{author}."
- text_wiki_destroy_confirmation: "Vai esat droĹĄs, ka vÄlaties dzÄst ĹĄo wiki un visu tÄs saturu?"
- text_issue_category_destroy_question: "DaĹži uzdevumi (%{count}) ir nozÄŤmÄti ĹĄai kategorijai. Ko JĹŤs vÄlaties darÄŤt?"
- text_issue_category_destroy_assignments: DzÄst kategoriju nozÄŤmÄjumus
- text_issue_category_reassign_to: NozÄŤmÄt uzdevumus ĹĄai kategorijai
- text_user_mail_option: "No neizvÄlÄtajiem projektiem JĹŤs saĹemsiet ziĹojumus e-pastÄ tikai par notikumiem, kuriem JĹŤs sekojat vai kuros esat iesaistÄŤts."
- text_no_configuration_data: "Lomas, trakeri, uzdevumu statusi un darba plĹŤsmas vÄl nav konfigurÄtas.\nÄťoti ieteicams ielÄdÄt noklusÄto konfigurÄciju. PÄc ielÄdÄĹĄanas to bĹŤs iespÄjams modificÄt."
- text_load_default_configuration: IelÄdÄt noklusÄto konfigurÄciju
- text_status_changed_by_changeset: "ApstiprinÄts izmaiĹu kopumÄ %{value}."
- text_issues_destroy_confirmation: 'Vai tieĹĄÄm vÄlaties dzÄst izvÄlÄto uzdevumu(us)?'
- text_select_project_modules: 'IzvÄlieties moduÄźus ĹĄim projektam:'
- text_default_administrator_account_changed: NoklusÄtais administratora konts mainÄŤts
- text_file_repository_writable: Pielikumu direktorijÄ atÄźauts rakstÄŤt
- text_plugin_assets_writable: SpraudĹu kataloga direktorijÄ atÄźauts rakstÄŤt
- text_rmagick_available: "RMagick pieejams (neobligÄts)"
- text_destroy_time_entries_question: "%{hours} stundas tika ziĹotas par uzdevumu, ko vÄlaties dzÄst. Ko darÄŤt?"
- text_destroy_time_entries: DzÄst ziĹotÄs stundas
- text_assign_time_entries_to_project: Pieťġirt ziĹotÄs stundas projektam
- text_reassign_time_entries: 'Pieťġirt ziĹotÄs stundas uzdevumam:'
- text_user_wrote: "%{value} rakstÄŤja:"
- text_enumeration_destroy_question: "%{count} objekti ir pieťġirti ĹĄai vÄrtÄŤbai."
- text_enumeration_category_reassign_to: 'Pieťġirt tos ĹĄai vÄrtÄŤbai:'
- text_email_delivery_not_configured: "E-pastu nosĹŤtÄŤĹĄana nav konfigurÄta, un ziĹojumi ir izslÄgti.\nKonfigurÄjiet savu SMTP serveri datnÄ config/configuration.yml un pÄrstartÄjiet lietotni."
- text_repository_usernames_mapping: "IzvÄlieties vai atjaunojiet Redmine lietotÄju, saistÄŤtu ar katru lietotÄjvÄrdu, kas atrodams repozitorija ĹžurnÄlÄ.\nLietotÄji ar to paĹĄu Redmine un repozitorija lietotÄjvÄrdu bĹŤs saistÄŤti automÄtiski."
- text_diff_truncated: '... Ĺ is diff tika noťġelts, jo tas pÄrsniedz maksimÄlo izmÄru, ko var parÄdÄŤt.'
- text_custom_field_possible_values_info: 'Katra vÄrtÄŤbas savÄ rindÄ'
- text_wiki_page_destroy_question: "Ĺ ij lapai ir %{descendants} apakĹĄlapa(as) un pÄcnÄcÄji. Ko darÄŤt?"
- text_wiki_page_nullify_children: "PaturÄt apakĹĄlapas kÄ pamatlapas"
- text_wiki_page_destroy_children: "DzÄst apakĹĄlapas un visus pÄcnÄcÄjus"
- text_wiki_page_reassign_children: "Pieťġirt apakťlapas ťai lapai"
- text_own_membership_delete_confirmation: "JĹŤs tĹŤlÄŤt dzÄsÄŤsiet daĹžas vai visas atÄźaujas, un Jums pÄc tam var nebĹŤt atÄźauja labot ĹĄo projektu.\nVai turpinÄt?"
-
- default_role_manager: MenedĹžeris
- default_role_developer: IzstrÄdÄtÄjs
- default_role_reporter: ZiĹotÄjs
- default_role_non_member: Non member
- default_role_anonymous: Anonymous
- default_tracker_bug: Kğōda
- default_tracker_feature: IezÄŤme
- default_tracker_support: Atbalsts
- default_issue_status_new: Jauns
- default_issue_status_in_progress: AttÄŤstÄŤbÄ
- default_issue_status_resolved: AtrisinÄts
- default_issue_status_feedback: Atsauksmes
- default_issue_status_closed: SlÄgts
- default_issue_status_rejected: NoraidÄŤts
- default_doc_category_user: LietotÄja dokumentÄcija
- default_doc_category_tech: TehniskÄ dokumentÄcija
- default_priority_low: Zema
- default_priority_normal: NormÄla
- default_priority_high: Augsta
- default_priority_urgent: Steidzama
- default_priority_immediate: TĹŤlÄŤtÄja
- default_activity_design: Dizains
- default_activity_development: IzstrÄdÄĹĄana
-
- enumeration_issue_priorities: Uzdevumu prioritÄtes
- enumeration_doc_categories: Dokumentu kategorijas
- enumeration_activities: AktivitÄtes (laika uzskaite)
- enumeration_system_activity: SistÄmas aktivitÄtes
-
- error_can_not_delete_custom_field: Unable to delete custom field
- permission_manage_subtasks: Manage subtasks
- label_profile: Profile
- error_unable_to_connect: Unable to connect (%{value})
- error_can_not_remove_role: This role is in use and can not be deleted.
- field_parent_issue: Parent task
- error_unable_delete_issue_status: Unable to delete issue status
- label_subtask_plural: Subtasks
- error_can_not_delete_tracker: This tracker contains issues and can't be deleted.
- label_project_copy_notifications: Send email notifications during the project copy
- field_principal: Principal
- label_my_page_block: My page block
- notice_failed_to_save_members: "Failed to save member(s): %{errors}."
- text_zoom_out: Zoom out
- text_zoom_in: Zoom in
- notice_unable_delete_time_entry: Unable to delete time log entry.
- label_overall_spent_time: Overall spent time
- field_time_entries: Log time
- project_module_gantt: Gantt
- project_module_calendar: Calendar
- button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}"
- text_are_you_sure_with_children: Delete issue and all child issues?
- field_text: Text field
- label_user_mail_option_only_owner: Only for things I am the owner of
- setting_default_notification_option: Default notification option
- 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_none: No events
- field_member_of_group: Assignee's group
- field_assigned_to_role: Assignee's role
- notice_not_authorized_archived_project: The project you're trying to access has been archived.
- label_principal_search: "Search for user or group:"
- label_user_search: "Search for user:"
- field_visible: Visible
- setting_emails_header: Emails header
- setting_commit_logtime_activity_id: Activity for logged time
- text_time_logged_by_changeset: Applied in changeset %{value}.
- setting_commit_logtime_enabled: Enable time logging
- notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
- setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
- text_powered_by: Powered by %{link}
+# translated by Dzintars Bergs (dzintars.bergs@gmail.com)
+
+lv:
+ direction: ltr
+ date:
+ formats:
+ default: "%d.%m.%Y"
+ short: "%d %b"
+ long: "%d %B %Y"
+
+ day_names: [SvÄtdiena, Pirmdiena, Otrdiena, TreĹĄdiena, Ceturtdiena, Piektdiena, Sestdiena]
+ abbr_day_names: [Sv, Pr, Ot, Tr, Ct, Pk, St]
+
+ month_names: [~, JanvÄris, FebruÄris, Marts, AprÄŤlis , Maijs, JĹŤnijs, JĹŤlijs, Augusts, Septembris, Oktobris, Novembris, Decembris]
+ abbr_month_names: [~, Jan, Feb, Mar, Apr, Mai, JĹŤn, JĹŤl, Aug, Sep, Okt, Nov, Dec]
+ order:
+ - :day
+ - :month
+ - :year
+
+ time:
+ formats:
+ default: "%a, %d %b %Y, %H:%M:%S %z"
+ time: "%H:%M"
+ short: "%d %b, %H:%M"
+ long: "%B %d, %Y %H:%M"
+ am: "rÄŤtÄ"
+ pm: "vakarÄ"
+
+ datetime:
+ distance_in_words:
+ half_a_minute: "pus minĹŤte"
+ less_than_x_seconds:
+ one: "mazÄk kÄ 1 sekunde"
+ other: "mazÄk kÄ %{count} sekundes"
+ x_seconds:
+ one: "1 sekunde"
+ other: "%{count} sekundes"
+ less_than_x_minutes:
+ one: "mazÄk kÄ minĹŤte"
+ other: "mazÄk kÄ %{count} minĹŤtes"
+ x_minutes:
+ one: "1 minĹŤte"
+ other: "%{count} minĹŤtes"
+ about_x_hours:
+ one: "aptuveni 1 stunda"
+ other: "aptuveni %{count} stundas"
+ x_days:
+ one: "1 diena"
+ other: "%{count} dienas"
+ about_x_months:
+ one: "aptuveni 1 mÄnesis"
+ other: "aptuveni %{count} mÄneĹĄi"
+ x_months:
+ one: "1 mÄnesis"
+ other: "%{count} mÄneĹĄi"
+ about_x_years:
+ one: "aptuveni 1 gads"
+ other: "aptuveni %{count} gadi"
+ over_x_years:
+ one: "ilgÄk par 1 gadu"
+ other: "ilgÄk par %{count} gadiem"
+ almost_x_years:
+ one: "gandrÄŤz 1 gadu"
+ other: "gandrÄŤz %{count} gadus"
+
+ number:
+ format:
+ separator: "."
+ delimiter: ""
+ precision: 3
+ human:
+ format:
+ delimiter: " "
+ precision: 1
+ storage_units:
+ format: "%n %u"
+ units:
+ byte:
+ one: "Baits"
+ other: "Baiti"
+ kb: "KB"
+ mb: "MB"
+ gb: "GB"
+ tb: "TB"
+
+
+ support:
+ array:
+ sentence_connector: "un"
+ 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: "nav iekÄźauts sarakstÄ"
+ exclusion: "ir rezervÄts"
+ invalid: "nederÄŤgs"
+ confirmation: "apstiprinÄjums nesakrÄŤt"
+ accepted: "jÄbĹŤt akceptÄtam"
+ empty: "nevar bĹŤt tukĹĄs"
+ blank: "nevar bĹŤt neaizpildÄŤts"
+ too_long: "ir pÄrÄk gara(ĹĄ) (maksimÄlais garums ir %{count} simboli)"
+ too_short: "ir pÄrÄk ÄŤsa(s) (minimÄlais garums ir %{count} simboli)"
+ wrong_length: "ir nepareiza garuma (vajadzÄtu bĹŤt %{count} simboli)"
+ taken: "eksistÄ"
+ not_a_number: "nav skaitlis"
+ not_a_date: "nav derÄŤgs datums"
+ greater_than: "jÄbĹŤt lielÄkam par %{count}"
+ greater_than_or_equal_to: "jÄbĹŤt lielÄkam vai vienÄdam ar %{count}"
+ equal_to: "jÄbĹŤt vienÄdam ar %{count}"
+ less_than: "jÄbĹŤt mazÄkam kÄ %{count}"
+ less_than_or_equal_to: "jÄbĹŤt mazÄkam vai vienÄdam ar %{count}"
+ odd: "jÄatťġirÄs"
+ even: "jÄsakrÄŤt"
+ greater_than_start_date: "jÄbĹŤt vÄlÄkam par sÄkuma datumu"
+ not_same_project: "nepieder pie tÄ paĹĄa projekta"
+ circular_dependency: "Ĺ ÄŤ relÄcija radÄŤtu ciklisku atkarÄŤbu"
+ cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
+
+ actionview_instancetag_blank_option: IzvÄlieties
+
+ general_text_No: 'NÄ'
+ general_text_Yes: 'JÄ'
+ general_text_no: 'nÄ'
+ general_text_yes: 'jÄ'
+ general_lang_name: 'Latvian (LatvieĹĄu)'
+ general_csv_separator: ','
+ general_csv_decimal_separator: '.'
+ general_csv_encoding: UTF-8
+ general_pdf_encoding: UTF-8
+ general_first_day_of_week: '1'
+
+ notice_account_updated: Konts tika atjaunots veiksmÄŤgi.
+ notice_account_invalid_creditentials: Nepareizs lietotÄja vÄrds vai parole.
+ notice_account_password_updated: Parole tika veiksmÄŤgi atjaunota.
+ notice_account_wrong_password: Nepareiza parole
+ notice_account_register_done: Konts veiksmÄŤgi izveidots. Lai aktivizÄtu kontu, spiediet uz saites, kas Jums tika nosĹŤtÄŤta.
+ notice_account_unknown_email: NezinÄms lietotÄjs
+ notice_can_t_change_password: Ĺ is konts izmanto ÄrÄju pilnvaroĹĄanas avotu. Nav iespÄjams nomainÄŤt paroli.
+ notice_account_lost_email_sent: Jums tika nosĹŤtÄŤts e-pasts ar instrukcijÄm, kÄ izveidot jaunu paroli.
+ notice_account_activated: JĹŤsu konts ir aktivizÄts. Varat pieslÄgties sistÄmai.
+ notice_successful_create: VeiksmÄŤga izveide.
+ notice_successful_update: VeiksmÄŤga atjaunoĹĄana.
+ notice_successful_delete: VeiksmÄŤga dzÄĹĄana.
+ notice_successful_connection: VeiksmÄŤgs savienojums.
+ notice_file_not_found: Lapa, ko JĹŤs mÄÄŁinÄt atvÄrt, neeksistÄ vai ir pÄrvietota.
+ notice_locking_conflict: Datus ir atjaunojis cits lietotÄjs.
+ notice_not_authorized: Jums nav tiesčbu piekğōt ťai lapai.
+ notice_email_sent: "E-pasts tika nosĹŤtÄŤts uz %{value}"
+ notice_email_error: "Kğōda sōtot e-pastu (%{value})"
+ notice_feeds_access_key_reseted: JĹŤsu RSS pieejas atslÄga tika iestatÄŤta sÄkuma stÄvoklÄŤ.
+ notice_api_access_key_reseted: JĹŤsu API pieejas atslÄga tika iestatÄŤta sÄkuma stÄvoklÄŤ.
+ notice_failed_to_save_issues: "NeizdevÄs saglabÄt %{count} uzdevumu(us) no %{total} izvÄlÄti: %{ids}."
+ notice_no_issue_selected: "Nav izvÄlÄts uzdevums! LĹŤdzu, atzÄŤmÄjiet uzdevumus, kurus vÄlaties rediÄŁÄt!"
+ notice_account_pending: "JĹŤsu konts tika izveidots un ĹĄobrÄŤd gaida administratora apstiprinÄjumu."
+ notice_default_data_loaded: NoklusÄtÄ konfigurÄcija tika veiksmÄŤgi ielÄdÄta.
+ notice_unable_delete_version: NeizdevÄs dzÄst versiju.
+ notice_issue_done_ratios_updated: Uzdevuma izpildes koeficients atjaunots.
+
+ error_can_t_load_default_data: "Nevar ielÄdÄt noklusÄtos konfigurÄcijas datus: %{value}"
+ error_scm_not_found: "Ieraksts vai versija nebija repozitorijÄ."
+ error_scm_command_failed: "MÄÄŁinot piekğōt repozitorijam, notika kğōda: %{value}"
+ error_scm_annotate: "Ieraksts neeksistÄ vai tam nevar tikt pievienots paskaidrojums."
+ error_issue_not_found_in_project: 'Uzdevums netika atrasts vai nepieder ĹĄim projektam.'
+ error_no_tracker_in_project: 'Neviens trakeris nav saistÄŤts ar ĹĄo projektu. PÄrbaudiet projekta iestatÄŤjumus.'
+ error_no_default_issue_status: 'Nav definÄts uzdevuma noklusÄtais statuss. PÄrbaudiet konfigurÄciju (Ejat uz: "AdministrÄcija -> Uzdevumu statusi")!'
+ error_can_not_reopen_issue_on_closed_version: 'Nevar pievienot atsauksmi uzdevumam, kas saistÄŤts ar slÄgtu versiju.'
+ error_can_not_archive_project: Ĺ is projekts nevar tikt arhivÄts
+ error_issue_done_ratios_not_updated: "Uzdevuma izpildes koeficients nav atjaunots."
+ error_workflow_copy_source: 'LĹŤdzu izvÄlieties avota trakeri vai lomu'
+ error_workflow_copy_target: 'LĹŤdzu izvÄlÄties mÄrġa trakeri(us) un lomu(as)'
+
+ warning_attachments_not_saved: "%{count} datnes netika saglabÄtas."
+
+ mail_subject_lost_password: "JĹŤsu %{value} parole"
+ mail_body_lost_password: 'Lai mainÄŤtu paroli, spiediet uz ĹĄÄŤs saites:'
+ mail_subject_register: "JĹŤsu %{value} konta aktivizÄcija"
+ mail_body_register: 'Lai izveidotu kontu, spiediet uz ĹĄÄŤs saites:'
+ mail_body_account_information_external: "Varat izmantot JĹŤsu %{value} kontu, lai pieslÄgtos."
+ mail_body_account_information: JĹŤsu konta informÄcija
+ mail_subject_account_activation_request: "%{value} konta aktivizÄcijas pieprasÄŤjums"
+ mail_body_account_activation_request: "Jauns lietotÄjs (%{value}) ir reÄŁistrÄts. LietotÄja konts gaida JĹŤsu apstiprinÄjumu:"
+ mail_subject_reminder: "%{count} uzdevums(i) sagaidÄms(i) tuvÄkajÄs %{days} dienÄs"
+ mail_body_reminder: "%{count} uzdevums(i), kurĹĄ(i) ir nozÄŤmÄts(i) Jums, sagaidÄms(i) tuvÄkajÄs %{days} dienÄs:"
+ mail_subject_wiki_content_added: "'%{id}' Wiki lapa pievienota"
+ mail_body_wiki_content_added: "The '%{id}' Wiki lapu pievienojis %{author}."
+ mail_subject_wiki_content_updated: "'%{id}' Wiki lapa atjaunota"
+ mail_body_wiki_content_updated: "The '%{id}' Wiki lapu atjaunojis %{author}."
+
+ gui_validation_error: 1 kğōda
+ gui_validation_error_plural: "%{count} kğōdas"
+
+ field_name: Nosaukums
+ field_description: Apraksts
+ field_summary: Kopsavilkums
+ field_is_required: NepiecieĹĄams
+ field_firstname: VÄrds
+ field_lastname: UzvÄrds
+ field_mail: "E-pasts"
+ field_filename: Datne
+ field_filesize: IzmÄrs
+ field_downloads: LejupielÄdes
+ field_author: Autors
+ field_created_on: Izveidots
+ field_updated_on: Atjaunots
+ field_field_format: FormÄts
+ field_is_for_all: Visiem projektiem
+ field_possible_values: IespÄjamÄs vÄrtÄŤbas
+ field_regexp: RegulÄrÄ izteiksme
+ field_min_length: MinimÄlais garums
+ field_max_length: MaksimÄlais garums
+ field_value: VÄrtÄŤba
+ field_category: Kategorija
+ field_title: Nosaukums
+ field_project: Projekts
+ field_issue: Uzdevums
+ field_status: Statuss
+ field_notes: PiezÄŤmes
+ field_is_closed: Uzdevums slÄgts
+ field_is_default: NoklusÄtÄ vÄrtÄŤba
+ field_tracker: Trakeris
+ field_subject: Temats
+ field_due_date: SagaidÄmais datums
+ field_assigned_to: Pieťġirts
+ field_priority: PrioritÄte
+ field_fixed_version: MÄrġa versija
+ field_user: LietotÄjs
+ field_role: Loma
+ field_homepage: Vietne
+ field_is_public: Publisks
+ field_parent: ApakĹĄprojekts projektam
+ field_is_in_roadmap: CeÄźvedÄŤ parÄdÄŤtie uzdevumi
+ field_login: PieslÄgties
+ field_mail_notification: "E-pasta paziĹojumi"
+ field_admin: Administrators
+ field_last_login_on: PÄdÄjo reizi pieslÄdzies
+ field_language: Valoda
+ field_password: Parole
+ field_new_password: JanÄ parole
+ field_password_confirmation: Paroles apstiprinÄjums
+ field_version: Versija
+ field_type: Tips
+ field_host: Hosts
+ field_port: Ports
+ field_account: Konts
+ field_base_dn: Base DN
+ field_attr_login: PieslÄgĹĄanÄs atribĹŤts
+ field_attr_firstname: VÄrda atribĹŤts
+ field_attr_lastname: UzvÄrda atribĹŤts
+ field_attr_mail: "E-pasta atribĹŤts"
+ field_onthefly: "LietotÄja izveidoĹĄana on-the-fly"
+ field_start_date: SÄkuma datums
+ field_done_ratio: "% padarÄŤti"
+ field_auth_source: Pilnvaroťanas reŞčms
+ field_hide_mail: "PaslÄpt manu e-pasta adresi"
+ field_comments: KomentÄrs
+ field_url: URL
+ field_start_page: SÄkuma lapa
+ field_subproject: ApakĹĄprojekts
+ field_hours: Stundas
+ field_activity: AktivitÄte
+ field_spent_on: Datums
+ field_identifier: Identifikators
+ field_is_filter: Izmantots kÄ filtrs
+ field_issue_to: SaistÄŤts uzdevums
+ field_delay: KavÄjums
+ field_assignable: Uzdevums var tikt piesaistÄŤts ĹĄai lomai
+ field_redirect_existing_links: PÄradresÄt eksistÄjoĹĄÄs saites
+ field_estimated_hours: ParedzÄtais laiks
+ field_column_names: Kolonnas
+ field_time_zone: Laika zona
+ field_searchable: MeklÄjams
+ field_default_value: NoklusÄtÄ vÄrtÄŤba
+ field_comments_sorting: RÄdÄŤt komentÄrus
+ field_parent_title: VecÄka lapa
+ field_editable: RediÄŁÄjams
+ field_watcher: VÄrotÄjs
+ field_identity_url: OpenID URL
+ field_content: Saturs
+ field_group_by: GrupÄt rezultÄtus pÄc
+ field_sharing: KoplietoĹĄana
+
+ setting_app_title: Programmas nosaukums
+ setting_app_subtitle: Programmas apakĹĄ-nosaukums
+ setting_welcome_text: Sveiciena teksts
+ setting_default_language: NoklusÄtÄ valoda
+ setting_login_required: NepiecieĹĄama pilnvaroĹĄana
+ setting_self_registration: PaĹĄreÄŁistrÄĹĄanÄs
+ setting_attachment_max_size: Pielikuma maksimÄlais izmÄrs
+ setting_issues_export_limit: Uzdevumu eksporta ierobeĹžojums
+ setting_mail_from: "E-pasta adrese informÄcijas nosĹŤtÄŤĹĄanai"
+ setting_bcc_recipients: "SaĹÄmÄju adreses neparÄdÄŤsies citu saĹÄmÄju vÄstulÄs (bcc)"
+ setting_plain_text_mail: "VÄstule brÄŤvÄ tekstÄ (bez HTML)"
+ setting_host_name: Hosta nosaukums un piekğuves ceğť
+ setting_text_formatting: Teksta formatÄĹĄana
+ setting_wiki_compression: Wiki vÄstures saspieĹĄana
+ setting_feeds_limit: Barotnes satura ierobeĹžojums
+ setting_default_projects_public: Jaunie projekti noklusÄti ir publiski pieejami
+ setting_autofetch_changesets: "AutomÄtiski lietot jaunÄko versiju, pieslÄdzoties repozitorijam (Autofetch)"
+ setting_sys_api_enabled: IeslÄgt WS repozitoriju menedĹžmentam
+ setting_commit_ref_keywords: NorÄdes atslÄgvÄrdi
+ setting_commit_fix_keywords: FiksÄjoĹĄie atslÄgvÄrdi
+ setting_autologin: AutomÄtiskÄ pieslÄgĹĄanÄs
+ setting_date_format: Datuma formÄts
+ setting_time_format: Laika formÄts
+ setting_cross_project_issue_relations: "AtÄźaut starp-projektu uzdevumu relÄcijas"
+ setting_issue_list_default_columns: NoklusÄti rÄdÄŤtÄs kolonnas uzdevumu sarakstÄ
+ setting_repositories_encodings: Repozitoriju kodÄjumi
+ setting_commit_logs_encoding: KodÄt ziĹojumus
+ setting_emails_footer: "E-pastu kÄjene"
+ setting_protocol: Protokols
+ setting_per_page_options: Objekti vienÄ lapÄ
+ setting_user_format: LietotÄju rÄdÄŤĹĄanas formÄts
+ setting_activity_days_default: Dienus skaits aktivitÄĹĄu rÄdÄŤĹĄanai aktivitÄĹĄu sadaÄźÄ
+ setting_display_subprojects_issues: RÄdÄŤt apakĹĄprojekta uzdevumus galvenajÄ projektÄ pÄc noklusÄjuma
+ setting_enabled_scm: Lietot SCM
+ setting_mail_handler_body_delimiters: "SaÄŤsinÄt pÄc vienas no ĹĄim rindÄm"
+ setting_mail_handler_api_enabled: "Lietot WS ienÄkoĹĄajiem e-pastiem"
+ setting_mail_handler_api_key: API atslÄga
+ setting_sequential_project_identifiers: ĢenerÄt secÄŤgus projektu identifikatorus
+ setting_gravatar_enabled: Izmantot Gravatar lietotÄju ikonas
+ setting_gravatar_default: NoklusÄtais Gravatar attÄls
+ setting_diff_max_lines_displayed: MaksimÄlais rÄdÄŤto diff rindu skaits
+ setting_file_max_size_displayed: MaksimÄlais izmÄrs iekÄźautajiem teksta failiem
+ setting_repository_log_display_limit: MaksimÄlais ĹžurnÄla datnÄ rÄdÄŤto revÄŤziju skaits
+ setting_openid: AtÄźaut OpenID pieslÄgĹĄanos un reÄŁistrÄĹĄanos
+ setting_password_min_length: MinimÄlais paroles garums
+ setting_new_project_user_role_id: Loma, kura tiek pieťġirta ne-administratora lietotÄjam, kurĹĄ izveido projektu
+ setting_default_projects_modules: NoklusÄtie lietotie moduÄźi jaunam projektam
+ setting_issue_done_ratio: AprÄġinÄt uzdevuma izpildes koeficientu ar
+ setting_issue_done_ratio_issue_field: uzdevuma lauku
+ setting_issue_done_ratio_issue_status: uzdevuma statusu
+ setting_start_of_week: SÄkt kalendÄru ar
+ setting_rest_api_enabled: Lietot REST web-servisu
+ setting_cache_formatted_text: KeĹĄot formatÄtu tekstu
+
+ permission_add_project: Izveidot projektu
+ permission_add_subprojects: Izveidot apakĹĄprojektu
+ permission_edit_project: RediÄŁÄt projektu
+ permission_select_project_modules: IzvÄlÄties projekta moduÄźus
+ permission_manage_members: PÄrvaldÄŤt dalÄŤbniekus
+ permission_manage_project_activities: PÄrvaldÄŤt projekta aktivitÄtes
+ permission_manage_versions: PÄrvaldÄŤt versijas
+ permission_manage_categories: PÄrvaldÄŤt uzdevumu kategorijas
+ permission_view_issues: ApskatÄŤt uzdevumus
+ permission_add_issues: Pievienot uzdevumus
+ permission_edit_issues: RediÄŁÄt uzdevumus
+ permission_manage_issue_relations: PÄrvaldÄŤt uzdevumu relÄcijas
+ permission_add_issue_notes: Pievienot piezÄŤmes
+ permission_edit_issue_notes: RediÄŁÄt piezÄŤmes
+ permission_edit_own_issue_notes: RediÄŁÄt paĹĄa piezÄŤmes
+ permission_move_issues: PÄrvietot uzdevumus
+ permission_delete_issues: DzÄst uzdevumus
+ permission_manage_public_queries: PÄrvaldÄŤt publiskos pieprasÄŤjumus
+ permission_save_queries: SaglabÄt pieprasÄŤjumus
+ permission_view_gantt: SkatÄŤt Ganta diagrammu
+ permission_view_calendar: SkatÄŤt kalendÄru
+ permission_view_issue_watchers: SkatÄŤt vÄrotÄju sarakstu
+ permission_add_issue_watchers: Pievienot vÄrotÄjus
+ permission_delete_issue_watchers: DzÄst vÄrotÄjus
+ permission_log_time: PiereÄŁistrÄt pavadÄŤto laiku
+ permission_view_time_entries: SkatÄŤt pavadÄŤto laiku
+ permission_edit_time_entries: RdiÄŁÄt laika reÄŁistrus
+ permission_edit_own_time_entries: RediÄŁÄt savus laika reÄŁistrus
+ permission_manage_news: PÄrvaldÄŤt jaunumus
+ permission_comment_news: KomentÄt jaunumus
+ permission_manage_documents: PÄrvaldÄŤt dokumentus
+ permission_view_documents: SkatÄŤt dokumentus
+ permission_manage_files: PÄrvaldÄŤt failus
+ permission_view_files: SkatÄŤt failus
+ permission_manage_wiki: PÄrvaldÄŤt wiki
+ permission_rename_wiki_pages: PÄrsaukt wiki lapas
+ permission_delete_wiki_pages: DzÄst wiki lapas
+ permission_view_wiki_pages: SkatÄŤt wiki
+ permission_view_wiki_edits: SkatÄŤt wiki vÄsturi
+ permission_edit_wiki_pages: RdiÄŁÄt wiki lapas
+ permission_delete_wiki_pages_attachments: DzÄst pielikumus
+ permission_protect_wiki_pages: Projekta wiki lapas
+ permission_manage_repository: PÄrvaldÄŤt repozitoriju
+ permission_browse_repository: PÄrlĹŤkot repozitoriju
+ permission_view_changesets: SkatÄŤt izmaiĹu kopumus
+ permission_commit_access: AtÄźaut piekÄźuvi
+ permission_manage_boards: PÄrvaldÄŤt ziĹojumu dÄÄźus
+ permission_view_messages: SkatÄŤt ziĹas
+ permission_add_messages: PublicÄt ziĹas
+ permission_edit_messages: RediÄŁÄt ziĹas
+ permission_edit_own_messages: RediÄŁÄt savas ziĹas
+ permission_delete_messages: DzÄst ziĹas
+ permission_delete_own_messages: DzÄst savas ziĹas
+ permission_export_wiki_pages: EksportÄt Wiki lapas
+
+ project_module_issue_tracking: Uzdevumu uzskaite
+ project_module_time_tracking: Laika uzskaite
+ project_module_news: Jaunumi
+ project_module_documents: Dokumenti
+ project_module_files: Datnes
+ project_module_wiki: Wiki
+ project_module_repository: Repozitorijs
+ project_module_boards: ZiĹojumu dÄÄźi
+
+ label_user: LietotÄjs
+ label_user_plural: LietotÄji
+ label_user_new: Jauns lietotÄjs
+ label_user_anonymous: AnonÄŤms
+ label_project: Projekts
+ label_project_new: Jauns projekts
+ label_project_plural: Projekti
+ label_x_projects:
+ zero: nav projektu
+ one: 1 projekts
+ other: "%{count} projekti"
+ label_project_all: Visi projekti
+ label_project_latest: JaunÄkie projekti
+ label_issue: Uzdevums
+ label_issue_new: Jauns uzdevums
+ label_issue_plural: Uzdevumi
+ label_issue_view_all: SkatÄŤt visus uzdevumus
+ label_issues_by: "KÄrtot pÄc %{value}"
+ label_issue_added: Uzdevums pievienots
+ label_issue_updated: Uzdevums atjaunots
+ label_document: Dokuments
+ label_document_new: Jauns dokuments
+ label_document_plural: Dokumenti
+ label_document_added: Dokuments pievienots
+ label_role: Loma
+ label_role_plural: Lomas
+ label_role_new: Jauna loma
+ label_role_and_permissions: Lomas un atÄźaujas
+ label_member: DalÄŤbnieks
+ label_member_new: Jauns dalÄŤbnieks
+ label_member_plural: DalÄŤbnieki
+ label_tracker: Trakeris
+ label_tracker_plural: Trakeri
+ label_tracker_new: Jauns trakeris
+ label_workflow: Darba gaita
+ label_issue_status: Uzdevuma statuss
+ label_issue_status_plural: Uzdevumu statusi
+ label_issue_status_new: Jauns statuss
+ label_issue_category: Uzdevuma kategorija
+ label_issue_category_plural: Uzdevumu kategorijas
+ label_issue_category_new: Jauna kategorija
+ label_custom_field: PielÄgojams lauks
+ label_custom_field_plural: PielÄgojami lauki
+ label_custom_field_new: Jauns pielÄgojams lauks
+ label_enumerations: UzskaitÄŤjumi
+ label_enumeration_new: Jauna vÄrtÄŤba
+ label_information: InformÄcija
+ label_information_plural: InformÄcija
+ label_please_login: LĹŤdzu pieslÄdzieties
+ label_register: ReÄŁistrÄties
+ label_login_with_open_id_option: vai pieslÄgties ar OpenID
+ label_password_lost: NozaudÄta parole
+ label_home: SÄkums
+ label_my_page: Mana lapa
+ label_my_account: Mans konts
+ label_my_projects: Mani projekti
+ label_administration: AdministrÄcija
+ label_login: PieslÄgties
+ label_logout: AtslÄgties
+ label_help: PalÄŤdzÄŤba
+ label_reported_issues: ZiĹotie uzdevumi
+ label_assigned_to_me_issues: Man piesaistÄŤtie uzdevumi
+ label_last_login: PÄdÄjÄ pieslÄgĹĄanÄs
+ label_registered_on: ReÄŁistrÄjies
+ label_activity: AktivitÄte
+ label_overall_activity: KopÄjÄs aktivitÄtes
+ label_user_activity: "LietotÄja %{value} aktivitÄtes"
+ label_new: Jauns
+ label_logged_as: PieslÄdzies kÄ
+ label_environment: Vide
+ label_authentication: PilnvaroĹĄana
+ label_auth_source: Pilnvaroťanas reŞčms
+ label_auth_source_new: Jauns pilnvaroťanas reŞčms
+ label_auth_source_plural: Pilnvaroťanas reŞčmi
+ label_subproject_plural: ApakĹĄprojekti
+ label_subproject_new: Jauns apakĹĄprojekts
+ label_and_its_subprojects: "%{value} un tÄ apakĹĄprojekti"
+ label_min_max_length: MinimÄlais - MaksimÄlais garums
+ label_list: Saraksts
+ label_date: Datums
+ label_integer: Vesels skaitlis
+ label_float: DecimÄlskaitlis
+ label_boolean: Patiesuma vÄrtÄŤba
+ label_string: Teksts
+ label_text: GarĹĄ teksts
+ label_attribute: AtribĹŤts
+ label_attribute_plural: AtribĹŤti
+ label_download: "%{count} LejupielÄde"
+ label_download_plural: "%{count} LejupielÄdes"
+ label_no_data: Nav datu, ko parÄdÄŤt
+ label_change_status: MainÄŤt statusu
+ label_history: VÄsture
+ label_attachment: Pielikums
+ label_attachment_new: Jauns pielikums
+ label_attachment_delete: DzÄst pielikumu
+ label_attachment_plural: Pielikumi
+ label_file_added: Lauks pievienots
+ label_report: Atskaite
+ label_report_plural: Atskaites
+ label_news: ZiĹa
+ label_news_new: Pievienot ziĹu
+ label_news_plural: ZiĹas
+ label_news_latest: JaunÄkÄs ziĹas
+ label_news_view_all: SkatÄŤt visas ziĹas
+ label_news_added: ZiĹas pievienotas
+ label_settings: IestatÄŤjumi
+ label_overview: PÄrskats
+ label_version: Versija
+ label_version_new: Jauna versija
+ label_version_plural: Versijas
+ label_close_versions: AizvÄrt pabeigtÄs versijas
+ label_confirmation: ApstiprinÄjums
+ label_export_to: 'Pieejams arÄŤ:'
+ label_read: LasÄŤt...
+ label_public_projects: Publiskie projekti
+ label_open_issues: atvÄrts
+ label_open_issues_plural: atvÄrti
+ label_closed_issues: slÄgts
+ label_closed_issues_plural: slÄgti
+ label_x_open_issues_abbr_on_total:
+ zero: 0 atvÄrti / %{total}
+ one: 1 atvÄrts / %{total}
+ other: "%{count} atvÄrti / %{total}"
+ label_x_open_issues_abbr:
+ zero: 0 atvÄrti
+ one: 1 atvÄrts
+ other: "%{count} atvÄrti"
+ label_x_closed_issues_abbr:
+ zero: 0 slÄgti
+ one: 1 slÄgts
+ other: "%{count} slÄgti"
+ label_total: KopÄ
+ label_permissions: AtÄźaujas
+ label_current_status: PaĹĄreizÄjais statuss
+ label_new_statuses_allowed: Jauni statusi atÄźauti
+ label_all: visi
+ label_none: neviens
+ label_nobody: nekas
+ label_next: NÄkoĹĄais
+ label_previous: IepriekĹĄÄjais
+ label_used_by: Izmanto
+ label_details: DetaÄźas
+ label_add_note: Pievienot piezÄŤmi
+ label_per_page: katrÄ lapÄ
+ label_calendar: KalendÄrs
+ label_months_from: mÄneĹĄi no
+ label_gantt: Ganta diagramma
+ label_internal: IekĹĄÄjais
+ label_last_changes: "pÄdÄjÄs %{count} izmaiĹas"
+ label_change_view_all: SkatÄŤt visas izmaiĹas
+ label_personalize_page: PielÄgot ĹĄo lapu
+ label_comment: KomentÄrs
+ label_comment_plural: KomentÄri
+ label_x_comments:
+ zero: nav komentÄru
+ one: 1 komentÄrs
+ other: "%{count} komentÄri"
+ label_comment_add: Pievienot komentÄru
+ label_comment_added: KomentÄrs pievienots
+ label_comment_delete: DzÄst komentÄrus
+ label_query: PielÄgots pieprasÄŤjums
+ label_query_plural: PielÄgoti pieprasÄŤjumi
+ label_query_new: Jauns pieprasÄŤjums
+ label_filter_add: Pievienot filtru
+ label_filter_plural: Filtri
+ label_equals: ir
+ label_not_equals: nav
+ label_in_less_than: ir mazÄk kÄ
+ label_in_more_than: ir vairÄk kÄ
+ label_greater_or_equal: '>='
+ label_less_or_equal: '<='
+ label_in: iekĹĄ
+ label_today: ĹĄodien
+ label_all_time: visu laiku
+ label_yesterday: vakar
+ label_this_week: ĹĄonedÄÄź
+ label_last_week: pagÄjuĹĄo ĹĄonedÄÄź
+ label_last_n_days: "pÄdÄjÄs %{count} dienas"
+ label_this_month: ĹĄomÄnes
+ label_last_month: pagÄjuĹĄo mÄnes
+ label_this_year: ĹĄogad
+ label_date_range: Datumu apgabals
+ label_less_than_ago: mazÄk kÄ dienas iepriekĹĄ
+ label_more_than_ago: vairÄk kÄ dienas iepriekĹĄ
+ label_ago: dienas iepriekĹĄ
+ label_contains: satur
+ label_not_contains: nesatur
+ label_day_plural: dienas
+ label_repository: Repozitorijs
+ label_repository_plural: Repozitoriji
+ label_browse: PÄrlĹŤkot
+ label_modification: "%{count} izmaiĹa"
+ label_modification_plural: "%{count} izmaiĹas"
+ label_branch: Zars
+ label_tag: Birka
+ label_revision: RevÄŤzija
+ label_revision_plural: RevÄŤzijas
+ label_revision_id: "RevÄŤzija %{value}"
+ label_associated_revisions: SaistÄŤtÄs revÄŤzijas
+ label_added: pievienots
+ label_modified: modificÄts
+ label_copied: nokopÄts
+ label_renamed: pÄrsaukts
+ label_deleted: dzÄsts
+ label_latest_revision: PÄdÄjÄ revÄŤzija
+ label_latest_revision_plural: PÄdÄjÄs revÄŤzijas
+ label_view_revisions: SkatÄŤt revÄŤzijas
+ label_view_all_revisions: SkatÄŤt visas revÄŤzijas
+ label_max_size: MaksimÄlais izmÄrs
+ label_sort_highest: PÄrvietot uz augĹĄu
+ label_sort_higher: PÄrvietot soli augĹĄup
+ label_sort_lower: PÄrvietot uz leju
+ label_sort_lowest: PÄrvietot vienu soli uz leju
+ label_roadmap: CeÄźvedis
+ label_roadmap_due_in: "SagaidÄms pÄc %{value}"
+ label_roadmap_overdue: "nokavÄts %{value}"
+ label_roadmap_no_issues: Ĺ ai versijai nav uzdevumu
+ label_search: MeklÄt
+ label_result_plural: RezultÄti
+ label_all_words: Visi vÄrdi
+ label_wiki: Wiki
+ label_wiki_edit: Wiki labojums
+ label_wiki_edit_plural: Wiki labojumi
+ label_wiki_page: Wiki lapa
+ label_wiki_page_plural: Wiki lapas
+ label_index_by_title: IndeksÄt pÄc nosaukuma
+ label_index_by_date: IndeksÄt pÄc datuma
+ label_current_version: TekoĹĄÄ versija
+ label_preview: PriekĹĄskatÄŤjums
+ label_feed_plural: Barotnes
+ label_changes_details: Visu izmaiĹu detaÄźas
+ label_issue_tracking: Uzdevumu uzskaite
+ label_spent_time: PavadÄŤtais laiks
+ label_f_hour: "%{value} stunda"
+ label_f_hour_plural: "%{value} stundas"
+ label_time_tracking: Laika uzskaite
+ label_change_plural: IzmaiĹas
+ label_statistics: Statistika
+ label_commits_per_month: Nodevumi mÄnesÄŤ
+ label_commits_per_author: Nodevumi no autora
+ label_view_diff: Skatčt atťġirčbas
+ label_diff_inline: iekÄźauts
+ label_diff_side_by_side: blakus
+ label_options: Opcijas
+ label_copy_workflow_from: KopÄt darba plĹŤsmu no
+ label_permissions_report: AtÄźauju atskaite
+ label_watched_issues: VÄrotie uzdevumi
+ label_related_issues: SaistÄŤtie uzdevumi
+ label_applied_status: Pieťġirtais statuss
+ label_loading: LÄdÄjas...
+ label_relation_new: Jauna relÄcija
+ label_relation_delete: DzÄst relÄciju
+ label_relates_to: saistÄŤts ar
+ label_duplicates: dublikÄti
+ label_duplicated_by: dublÄjas ar
+ label_blocks: bloġÄ
+ label_blocked_by: nobloġÄjis
+ label_precedes: pirms
+ label_follows: seko
+ label_end_to_start: no beigÄm uz sÄkumu
+ label_end_to_end: no beigÄm uz beigÄm
+ label_start_to_start: no sÄkuma uz sÄkumu
+ label_start_to_end: no sÄkuma uz beigÄm
+ label_stay_logged_in: AtcerÄties mani
+ label_disabled: izslÄgts
+ label_show_completed_versions: RÄdÄŤt pabeigtÄs versijas
+ label_me: es
+ label_board: Forums
+ label_board_new: Jauns forums
+ label_board_plural: Forumi
+ label_board_locked: SlÄgts
+ label_board_sticky: SvarÄŤgs
+ label_topic_plural: TÄmas
+ label_message_plural: ZiĹas
+ label_message_last: PÄdÄjÄ ziĹa
+ label_message_new: Jauna ziĹa
+ label_message_posted: ZiĹa pievienota
+ label_reply_plural: Atbildes
+ label_send_information: SĹŤtÄŤt konta informÄciju lietotÄjam
+ label_year: Gads
+ label_month: MÄnesis
+ label_week: NedÄÄźa
+ label_date_from: No
+ label_date_to: Kam
+ label_language_based: Izmantot lietotÄja valodu
+ label_sort_by: "KÄrtot pÄc %{value}"
+ label_send_test_email: "SĹŤtÄŤt testa e-pastu"
+ label_feeds_access_key: RSS piekÄźuves atslÄga
+ label_missing_feeds_access_key: TrĹŤkst RSS piekÄźuves atslÄgas
+ label_feeds_access_key_created_on: "RSS piekÄźuves atslÄga izveidota pirms %{value}"
+ label_module_plural: ModuÄźi
+ label_added_time_by: "Pievienojis %{author} pirms %{age}"
+ label_updated_time_by: "Atjaunojis %{author} pirms %{age}"
+ label_updated_time: "Atjaunots pirms %{value}"
+ label_jump_to_a_project: PÄriet uz projektu...
+ label_file_plural: Datnes
+ label_changeset_plural: IzmaiĹu kopumi
+ label_default_columns: NoklusÄtÄs kolonnas
+ label_no_change_option: (Nav izmaiĹu)
+ label_bulk_edit_selected_issues: Labot visus izvÄlÄtos uzdevumus
+ label_theme: TÄma
+ label_default: NoklusÄts
+ label_search_titles_only: MeklÄt tikai nosaukumos
+ label_user_mail_option_all: "Par visiem notikumiem visos manos projektos"
+ label_user_mail_option_selected: "Par visiem notikumiem tikai izvÄlÄtajos projektos..."
+ label_user_mail_no_self_notified: "NeziĹot man par izmaiĹÄm, kuras veicu es pats"
+ label_registration_activation_by_email: "konta aktivizÄcija caur e-pastu"
+ label_registration_manual_activation: manuÄlÄ konta aktivizÄcija
+ label_registration_automatic_activation: automÄtiskÄ konta aktivizÄcija
+ label_display_per_page: "RÄdÄŤt vienÄ lapÄ: %{value}"
+ label_age: Vecums
+ label_change_properties: MainÄŤt atribĹŤtus
+ label_general: Galvenais
+ label_more: VÄl
+ label_scm: SCM
+ label_plugins: SpraudĹi
+ label_ldap_authentication: LDAP pilnvaroĹĄana
+ label_downloads_abbr: L-lÄd.
+ label_optional_description: "Apraksts (neobligÄts)"
+ label_add_another_file: Pievienot citu failu
+ label_preferences: PriekĹĄrocÄŤbas
+ label_chronological_order: HronoloÄŁiskÄ kÄrtÄŤbÄ
+ label_reverse_chronological_order: Apgriezti hronoloÄŁiskÄ kÄrtÄŤbÄ
+ label_planning: PlÄnoĹĄana
+ label_incoming_emails: "IenÄkoĹĄie e-pasti"
+ label_generate_key: ĢenerÄt atslÄgu
+ label_issue_watchers: VÄrotÄji
+ label_example: PiemÄrs
+ label_display: RÄdÄŤt
+ label_sort: KÄrtot
+ label_ascending: AugoĹĄi
+ label_descending: DilstoĹĄi
+ label_date_from_to: "No %{start} lÄŤdz %{end}"
+ label_wiki_content_added: Wiki lapa pievienota
+ label_wiki_content_updated: Wiki lapa atjaunota
+ label_group: Grupa
+ label_group_plural: Grupas
+ label_group_new: Jauna grupa
+ label_time_entry_plural: PavadÄŤtais laiks
+ label_version_sharing_none: Nav koplietoĹĄanai
+ label_version_sharing_descendants: Ar apakĹĄprojektiem
+ label_version_sharing_hierarchy: Ar projektu hierarhiju
+ label_version_sharing_tree: Ar projekta koku
+ label_version_sharing_system: Ar visiem projektiem
+ label_update_issue_done_ratios: Atjaunot uzdevuma veikuma attiecÄŤbu
+ label_copy_source: Avots
+ label_copy_target: MÄrġis
+ label_copy_same_as_target: TÄds pats kÄ mÄrġis
+ label_display_used_statuses_only: "RÄdÄŤt tikai statusus, ko lieto ĹĄis trakeris"
+ label_api_access_key: API pieejas atslÄga
+ label_missing_api_access_key: TrĹŤkst API pieejas atslÄga
+ label_api_access_key_created_on: "API pieejas atslÄga izveidota pirms %{value}"
+
+ button_login: PieslÄgties
+ button_submit: NosĹŤtÄŤt
+ button_save: SaglabÄt
+ button_check_all: AtzÄŤmÄt visu
+ button_uncheck_all: NoĹemt visus atzÄŤmÄjumus
+ button_delete: DzÄst
+ button_create: Izveidot
+ button_create_and_continue: Izveidot un turpinÄt
+ button_test: TestÄt
+ button_edit: Labot
+ button_add: Pievienot
+ button_change: MainÄŤt
+ button_apply: ApstiprinÄt
+ button_clear: NotÄŤrÄŤt
+ button_lock: SlÄgt
+ button_unlock: AtslÄgt
+ button_download: LejuplÄdÄt
+ button_list: Saraksts
+ button_view: Skats
+ button_move: PÄrvietot
+ button_move_and_follow: PÄrvietot un sekot
+ button_back: AtpakaÄź
+ button_cancel: Atcelt
+ button_activate: AktivizÄt
+ button_sort: KÄrtot
+ button_log_time: Ilgs laiks
+ button_rollback: Atjaunot uz ĹĄo versiju
+ button_watch: VÄrot
+ button_unwatch: NevÄrot
+ button_reply: AtbildÄt
+ button_archive: ArhivÄt
+ button_unarchive: AtarhivÄt
+ button_reset: AtiestatÄŤt
+ button_rename: PÄrsaukt
+ button_change_password: MainÄŤt paroli
+ button_copy: KopÄt
+ button_copy_and_follow: KopÄt un sekot
+ button_annotate: PierakstÄŤt paskaidrojumu
+ button_update: Atjaunot
+ button_configure: KonfigurÄt
+ button_quote: CitÄts
+ button_duplicate: DublÄt
+ button_show: RÄdÄŤt
+
+ status_active: aktÄŤvs
+ status_registered: reÄŁistrÄts
+ status_locked: slÄgts
+
+ version_status_open: atvÄrta
+ version_status_locked: slÄgta
+ version_status_closed: aizvÄrta
+
+ field_active: AktÄŤvs
+
+ text_select_mail_notifications: "IzvÄlieties darbÄŤbas, par kurÄm vÄlaties saĹemt ziĹojumus e-pastÄ"
+ text_regexp_info: "piem. ^[A-Z0-9]+$"
+ text_min_max_length_info: "0 nozÄŤmÄ, ka nav ierobeĹžojumu"
+ text_project_destroy_confirmation: "Vai tieĹĄÄm vÄlaties dzÄst ĹĄo projektu un ar to saistÄŤtos datus?"
+ text_subprojects_destroy_warning: "TÄ apakĹĄprojekts(i): %{value} arÄŤ tiks dzÄsts(i)."
+ text_workflow_edit: Lai labotu darba plĹŤsmu, izvÄlieties lomu un trakeri
+ text_are_you_sure: "Vai esat pÄrliecinÄts?"
+ text_journal_changed: "%{label} mainÄŤts no %{old} uz %{new}"
+ text_journal_set_to: "%{label} iestatÄŤts uz %{value}"
+ text_journal_deleted: "%{label} dzÄsts (%{old})"
+ text_journal_added: "%{label} %{value} pievienots"
+ text_tip_issue_begin_day: uzdevums sÄkas ĹĄodien
+ text_tip_issue_end_day: uzdevums beidzas ĹĄodien
+ text_tip_issue_begin_end_day: uzdevums sÄkas un beidzas ĹĄodien
+ text_project_identifier_info: 'Only lower case letters (a-z), numbers, dashes and underscores are allowed.
Once saved, the identifier can not be changed.'
+ text_caracters_maximum: "%{count} simboli maksimÄli."
+ text_caracters_minimum: "JÄbĹŤt vismaz %{count} simbolu garumÄ."
+ text_length_between: "Garums starp %{min} un %{max} simboliem."
+ text_tracker_no_workflow: Ĺ im trakerim nav definÄta darba plĹŤsma
+ text_unallowed_characters: NeatÄźauti simboli
+ text_comma_separated: "AtÄźautas vairÄkas vÄrtÄŤbas (atdalÄŤt ar komatu)."
+ text_line_separated: "AtÄźautas vairÄkas vÄrtÄŤbas (rakstÄŤt katru savÄ rindÄ)."
+ text_issues_ref_in_commit_messages: "IzmaiĹu salÄŤdzinÄĹĄana izejot no ziĹojumiem"
+ text_issue_added: "Uzdevumu %{id} pievienojis %{author}."
+ text_issue_updated: "Uzdevumu %{id} atjaunojis %{author}."
+ text_wiki_destroy_confirmation: "Vai esat droĹĄs, ka vÄlaties dzÄst ĹĄo wiki un visu tÄs saturu?"
+ text_issue_category_destroy_question: "DaĹži uzdevumi (%{count}) ir nozÄŤmÄti ĹĄai kategorijai. Ko JĹŤs vÄlaties darÄŤt?"
+ text_issue_category_destroy_assignments: DzÄst kategoriju nozÄŤmÄjumus
+ text_issue_category_reassign_to: NozÄŤmÄt uzdevumus ĹĄai kategorijai
+ text_user_mail_option: "No neizvÄlÄtajiem projektiem JĹŤs saĹemsiet ziĹojumus e-pastÄ tikai par notikumiem, kuriem JĹŤs sekojat vai kuros esat iesaistÄŤts."
+ text_no_configuration_data: "Lomas, trakeri, uzdevumu statusi un darba plĹŤsmas vÄl nav konfigurÄtas.\nÄťoti ieteicams ielÄdÄt noklusÄto konfigurÄciju. PÄc ielÄdÄĹĄanas to bĹŤs iespÄjams modificÄt."
+ text_load_default_configuration: IelÄdÄt noklusÄto konfigurÄciju
+ text_status_changed_by_changeset: "ApstiprinÄts izmaiĹu kopumÄ %{value}."
+ text_issues_destroy_confirmation: 'Vai tieĹĄÄm vÄlaties dzÄst izvÄlÄto uzdevumu(us)?'
+ text_select_project_modules: 'IzvÄlieties moduÄźus ĹĄim projektam:'
+ text_default_administrator_account_changed: NoklusÄtais administratora konts mainÄŤts
+ text_file_repository_writable: Pielikumu direktorijÄ atÄźauts rakstÄŤt
+ text_plugin_assets_writable: SpraudĹu kataloga direktorijÄ atÄźauts rakstÄŤt
+ text_rmagick_available: "RMagick pieejams (neobligÄts)"
+ text_destroy_time_entries_question: "%{hours} stundas tika ziĹotas par uzdevumu, ko vÄlaties dzÄst. Ko darÄŤt?"
+ text_destroy_time_entries: DzÄst ziĹotÄs stundas
+ text_assign_time_entries_to_project: Pieťġirt ziĹotÄs stundas projektam
+ text_reassign_time_entries: 'Pieťġirt ziĹotÄs stundas uzdevumam:'
+ text_user_wrote: "%{value} rakstÄŤja:"
+ text_enumeration_destroy_question: "%{count} objekti ir pieťġirti ĹĄai vÄrtÄŤbai."
+ text_enumeration_category_reassign_to: 'Pieťġirt tos ĹĄai vÄrtÄŤbai:'
+ text_email_delivery_not_configured: "E-pastu nosĹŤtÄŤĹĄana nav konfigurÄta, un ziĹojumi ir izslÄgti.\nKonfigurÄjiet savu SMTP serveri datnÄ config/configuration.yml un pÄrstartÄjiet lietotni."
+ text_repository_usernames_mapping: "IzvÄlieties vai atjaunojiet Redmine lietotÄju, saistÄŤtu ar katru lietotÄjvÄrdu, kas atrodams repozitorija ĹžurnÄlÄ.\nLietotÄji ar to paĹĄu Redmine un repozitorija lietotÄjvÄrdu bĹŤs saistÄŤti automÄtiski."
+ text_diff_truncated: '... Ĺ is diff tika noťġelts, jo tas pÄrsniedz maksimÄlo izmÄru, ko var parÄdÄŤt.'
+ text_custom_field_possible_values_info: 'Katra vÄrtÄŤbas savÄ rindÄ'
+ text_wiki_page_destroy_question: "Ĺ ij lapai ir %{descendants} apakĹĄlapa(as) un pÄcnÄcÄji. Ko darÄŤt?"
+ text_wiki_page_nullify_children: "PaturÄt apakĹĄlapas kÄ pamatlapas"
+ text_wiki_page_destroy_children: "DzÄst apakĹĄlapas un visus pÄcnÄcÄjus"
+ text_wiki_page_reassign_children: "Pieťġirt apakťlapas ťai lapai"
+ text_own_membership_delete_confirmation: "JĹŤs tĹŤlÄŤt dzÄsÄŤsiet daĹžas vai visas atÄźaujas, un Jums pÄc tam var nebĹŤt atÄźauja labot ĹĄo projektu.\nVai turpinÄt?"
+
+ default_role_manager: MenedĹžeris
+ default_role_developer: IzstrÄdÄtÄjs
+ default_role_reporter: ZiĹotÄjs
+ default_role_non_member: Non member
+ default_role_anonymous: Anonymous
+ default_tracker_bug: Kğōda
+ default_tracker_feature: IezÄŤme
+ default_tracker_support: Atbalsts
+ default_issue_status_new: Jauns
+ default_issue_status_in_progress: AttÄŤstÄŤbÄ
+ default_issue_status_resolved: AtrisinÄts
+ default_issue_status_feedback: Atsauksmes
+ default_issue_status_closed: SlÄgts
+ default_issue_status_rejected: NoraidÄŤts
+ default_doc_category_user: LietotÄja dokumentÄcija
+ default_doc_category_tech: TehniskÄ dokumentÄcija
+ default_priority_low: Zema
+ default_priority_normal: NormÄla
+ default_priority_high: Augsta
+ default_priority_urgent: Steidzama
+ default_priority_immediate: TĹŤlÄŤtÄja
+ default_activity_design: Dizains
+ default_activity_development: IzstrÄdÄĹĄana
+
+ enumeration_issue_priorities: Uzdevumu prioritÄtes
+ enumeration_doc_categories: Dokumentu kategorijas
+ enumeration_activities: AktivitÄtes (laika uzskaite)
+ enumeration_system_activity: SistÄmas aktivitÄtes
+
+ error_can_not_delete_custom_field: Unable to delete custom field
+ permission_manage_subtasks: Manage subtasks
+ label_profile: Profile
+ error_unable_to_connect: Unable to connect (%{value})
+ error_can_not_remove_role: This role is in use and can not be deleted.
+ field_parent_issue: Parent task
+ error_unable_delete_issue_status: Unable to delete issue status
+ label_subtask_plural: Subtasks
+ error_can_not_delete_tracker: This tracker contains issues and can't be deleted.
+ label_project_copy_notifications: Send email notifications during the project copy
+ field_principal: Principal
+ label_my_page_block: My page block
+ notice_failed_to_save_members: "Failed to save member(s): %{errors}."
+ text_zoom_out: Zoom out
+ text_zoom_in: Zoom in
+ notice_unable_delete_time_entry: Unable to delete time log entry.
+ label_overall_spent_time: Overall spent time
+ field_time_entries: Log time
+ project_module_gantt: Gantt
+ project_module_calendar: Calendar
+ button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}"
+ text_are_you_sure_with_children: Delete issue and all child issues?
+ field_text: Text field
+ label_user_mail_option_only_owner: Only for things I am the owner of
+ setting_default_notification_option: Default notification option
+ 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_none: No events
+ field_member_of_group: Assignee's group
+ field_assigned_to_role: Assignee's role
+ notice_not_authorized_archived_project: The project you're trying to access has been archived.
+ label_principal_search: "Search for user or group:"
+ label_user_search: "Search for user:"
+ field_visible: Visible
+ setting_emails_header: Emails header
+ setting_commit_logtime_activity_id: Activity for logged time
+ text_time_logged_by_changeset: Applied in changeset %{value}.
+ setting_commit_logtime_enabled: Enable time logging
+ notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
+ setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ text_powered_by: Powered by %{link}
label_cvs_module: Module
label_filesystem_path: Root directory
label_darcs_path: Root directory
diff --git a/config/locales/mk.yml b/config/locales/mk.yml
index c35f48df..1513c0f3 100644
--- a/config/locales/mk.yml
+++ b/config/locales/mk.yml
@@ -1,946 +1,946 @@
-mk:
- # 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: "%d/%m/%Y"
- short: "%d %b"
- long: "%d %B, %Y"
-
- day_names: [нодоНа, пОнодоНник, вŃĐžŃник, ŃŃода, ŃĐľŃвŃŃОк, поŃОк, ŃайОŃĐ°]
- abbr_day_names: [нод, пОн, вŃĐž, ŃŃĐľ, ŃĐľŃ, поŃ, ŃĐ°Đą]
-
- # Don't forget the nil at the beginning; there's no such thing as a 0th month
- month_names: [~, ŃĐ°Đ˝ŃĐ°Ńи, ŃовŃŃĐ°Ńи, ПаŃŃ, Đ°ĐżŃиН, ПаŃ, ŃŃни, ŃŃНи, авгŃŃŃ, ŃопŃоПвŃи, ОкŃОПвŃи, нОоПвŃи, докоПвŃи]
- abbr_month_names: [~, ŃĐ°Đ˝, Ńов, ПаŃ, Đ°ĐżŃ, ПаŃ, ŃŃĐ˝, ŃŃĐť, авг, Ńоп, ОкŃ, нОо, док]
- # Used in date_select and datime_select.
- order:
- - :day
- - :month
- - :year
-
- time:
- formats:
- default: "%d/%m/%Y %H:%M"
- time: "%H:%M"
- short: "%d %b %H:%M"
- long: "%d %B, %Y %H:%M"
- am: "ĐżŃодпНадно"
- pm: "пОпНадно"
-
- datetime:
- distance_in_words:
- half_a_minute: "пОНа ПинŃŃĐ°"
- less_than_x_seconds:
- one: "ĐżĐžĐźĐ°ĐťĐşŃ ĐžĐ´ 1 ŃокŃнда"
- other: "ĐżĐžĐźĐ°ĐťĐşŃ ĐžĐ´ %{count} ŃокŃнди"
- x_seconds:
- one: "1 ŃокŃнда"
- other: "%{count} ŃокŃнди"
- less_than_x_minutes:
- one: "ĐżĐžĐźĐ°ĐťĐşŃ ĐžĐ´ 1 ПинŃŃĐ°"
- other: "ĐżĐžĐźĐ°ĐťĐşŃ ĐžĐ´ %{count} ПинŃŃи"
- x_minutes:
- one: "1 ПинŃŃĐ°"
- other: "%{count} ПинŃŃи"
- about_x_hours:
- one: "ĐžĐşĐžĐťŃ 1 ŃĐ°Ń"
- other: "ĐžĐşĐžĐťŃ %{count} ŃĐ°ŃĐ°"
- x_days:
- one: "1 дон"
- other: "%{count} дона"
- about_x_months:
- one: "ĐžĐşĐžĐťŃ 1 ПоŃĐľŃ"
- other: "ĐžĐşĐžĐťŃ %{count} ПоŃĐľŃи"
- x_months:
- one: "1 ПоŃĐľŃ"
- other: "%{count} ПоŃĐľŃи"
- about_x_years:
- one: "ĐžĐşĐžĐťŃ 1 гОдина"
- other: "ĐžĐşĐžĐťŃ %{count} гОдини"
- over_x_years:
- one: "ĐżŃĐľĐşŃ 1 гОдина"
- other: "ĐżŃĐľĐşŃ %{count} гОдини"
- almost_x_years:
- one: "ŃкОŃĐž 1 гОдина"
- other: "ŃкОŃĐž %{count} гОдини"
-
- number:
- # Default format for numbers
- format:
- separator: "."
- delimiter: ""
- precision: 3
- human:
- format:
- delimiter: ""
- precision: 1
- 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: "и"
- 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: "но Đľ вкНŃŃонО вО НиŃŃĐ°ŃĐ°"
- exclusion: "Đľ ŃоСоŃвиŃанО"
- invalid: "о новаНиднО"
- confirmation: "но ŃĐľ ŃОвпаŃĐ° ŃĐž пОŃвŃĐ´Đ°ŃĐ°"
- accepted: "ПОŃĐ° Đ´Đ° Đľ ĐżŃиŃĐ°ŃонО"
- empty: "ноПОМо Đ´Đ° Đľ ĐżŃаСнО"
- blank: "ноПОМо Đ´Đ° Đľ ĐżŃаСнО"
- too_long: "Đľ ĐżŃодОНгО (ПакŃ. %{count} СнаŃи)"
- too_short: "Đľ ĐżŃокŃĐ°ŃкО (Пин. %{count} СнаŃи)"
- wrong_length: "Đľ пОгŃĐľŃна дОНМина (ŃŃойа Đ´Đ° Đľ %{count} СнаŃи)"
- taken: "Đľ воŃĐľ СаŃĐ°ŃонО"
- not_a_number: "но Đľ ĐąŃĐžŃ"
- not_a_date: "но Đľ ваНидна Đ´Đ°ŃĐ°"
- greater_than: "ПОŃĐ° Đ´Đ° Đľ пОгОНоПО Од %{count}"
- greater_than_or_equal_to: "ПОŃĐ° Đ´Đ° Đľ пОгОНоПО иНи однаквО на %{count}"
- equal_to: "ПОŃĐ° Đ´Đ° Đľ однаквО на %{count}"
- less_than: "ПОŃĐ° Đ´Đ° Đľ пОПаНО Од %{count}"
- less_than_or_equal_to: "ПОŃĐ° Đ´Đ° Đľ пОПаНО иНи однаквО на %{count}"
- odd: "ПОŃĐ° Đ´Đ° Đľ нопаŃнО"
- even: "ПОŃĐ° Đ´Đ° Đľ паŃнО"
- greater_than_start_date: "ПОŃĐ° Đ´Đ° Đľ пОгОНоПа Од пОŃĐľŃнаŃĐ° Đ´Đ°ŃĐ°"
- not_same_project: "но ĐżŃипаŃĐ° на иŃŃĐ¸ĐžŃ ĐżŃОокŃ"
- circular_dependency: "Đваа вŃŃка ŃĐľ ĐşŃоиŃĐ° ĐşŃŃМна СавиŃнОŃŃ"
- cant_link_an_issue_with_a_descendant: "ĐĐ°Đ´Đ°ŃĐ° ноПОМо Đ´Đ° ŃĐľ пОвŃСо ŃĐž одна Од ноŃСиниŃĐľ пОдСадаŃи"
-
- actionview_instancetag_blank_option: ĐСйоŃĐľŃĐľ
-
- general_text_No: 'ĐĐľ'
- general_text_Yes: 'ĐĐ°'
- general_text_no: 'но'
- general_text_yes: 'Đ´Đ°'
- general_lang_name: 'Macedonian (ĐакодОнŃки)'
- general_csv_separator: ','
- general_csv_decimal_separator: '.'
- general_csv_encoding: UTF-8
- general_pdf_encoding: UTF-8
- general_first_day_of_week: '1'
-
- notice_account_updated: ĐŃĐžŃĐ¸ĐťĐžŃ Đľ ŃŃпоŃнО Đ°ĐśŃŃиŃĐ°Đ˝.
- notice_account_invalid_creditentials: ĐĐľŃĐžŃон кОŃиŃник иНи НОСинка
- notice_account_password_updated: ĐОСинкаŃĐ° Đľ ŃŃпоŃнО Đ°ĐśŃŃиŃана.
- notice_account_wrong_password: ĐОгŃĐľŃна НОСинка
- notice_account_register_done: ĐŃĐžŃĐ¸ĐťĐžŃ Đľ ŃŃпоŃнО ĐşŃоиŃĐ°Đ˝. ĐĐ° Đ°ĐşŃиваŃиŃĐ°, кНкноŃĐľ на вŃŃкаŃĐ° ŃŃĐž ви Đľ ĐżŃĐ°Ńона пО Đľ-пОŃŃĐ°.
- notice_account_unknown_email: ĐĐľĐżĐžĐˇĐ˝Đ°Ń ĐşĐžŃиŃник.
- 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: ĐŁŃпоŃнО ĐşŃоиŃĐ°ŃĐľ.
- notice_successful_update: ĐŁŃпоŃнО Đ°ĐśŃŃиŃĐ°ŃĐľ.
- notice_successful_delete: ĐŁŃпоŃнО ĐąŃиŃĐľŃĐľ.
- notice_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_email_sent: "Đ-пОŃака Đľ ĐżŃĐ°Ńона на %{value}"
- notice_email_error: "ĐĄĐľ ŃĐťŃŃи ĐłŃĐľŃка ĐżŃи ĐżŃĐ°ŃĐ°ŃĐľ на Đľ-пОŃакаŃĐ° (%{value})"
- notice_feeds_access_key_reseted: ĐĐ°ŃĐ¸ĐžŃ RSS кНŃŃ ĐˇĐ° ĐżŃиŃŃĐ°Đż Đľ reset.
- notice_api_access_key_reseted: ĐĐ°ŃĐ¸ĐžŃ API кНŃŃ ĐˇĐ° ĐżŃиŃŃĐ°Đż Đľ reset.
- notice_failed_to_save_issues: "Failed to save %{count} issue(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.
-
- 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 can not be annotated."
- 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 can't be deleted."
- error_can_not_remove_role: "This role is in use and can not be deleted."
- error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened'
- error_can_not_archive_project: This project can not 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})"
- warning_attachments_not_saved: "%{count} file(s) could not be saved."
-
- mail_subject_lost_password: "ĐĐ°ŃĐ°ŃĐ° %{value} НОСинка"
- 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: "ĐОв кОŃиŃник (%{value}) Đľ ŃогиŃŃŃиŃĐ°Đ˝. 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 ĐłŃĐľŃка
- gui_validation_error_plural: "%{count} ĐłŃĐľŃки"
-
- field_name: ĐПо
- field_description: ĐпиŃ
- field_summary: ĐŃĐ°ŃОк ОпиŃ
- field_is_required: ĐадОНМиŃоНнО
- field_firstname: ĐПо
- field_lastname: ĐŃоСиПо
- field_mail: Đ-пОŃŃĐ°
- field_filename: ĐĐ°ŃĐžŃока
- field_filesize: ĐОНоПина
- field_downloads: ĐŃовСоПаŃĐ°
- field_author: ĐвŃĐžŃ
- field_created_on: ĐŃоиŃĐ°Đ˝
- field_updated_on: ĐĐśŃŃиŃанО
- field_field_format: ФОŃПаŃ
- field_is_for_all: ĐĐ° ŃиŃĐľ ĐżŃОокŃи
- field_possible_values: ĐОМни вŃоднОŃŃи
- field_regexp: Regular expression
- field_min_length: ĐиниПаНна дОНМина
- field_max_length: ĐĐ°ĐşŃиПаНна дОНМина
- field_value: ĐŃоднОŃŃ
- field_category: ĐĐ°ŃогОŃиŃĐ°
- field_title: ĐĐ°ŃНОв
- field_project: ĐŃОокŃ
- field_issue: ĐĐ°Đ´Đ°ŃĐ°
- field_status: ĐĄŃĐ°ŃŃŃ
- field_notes: ĐоНоŃки
- field_is_closed: ĐĐ°Đ´Đ°ŃĐ°ŃĐ° Đľ СаŃвОŃона
- field_is_default: Default value
- field_tracker: Tracker
- field_subject: ĐĐ°ŃНОв
- field_due_date: ĐŃаон ŃОк
- field_assigned_to: ĐОдоНона на
- field_priority: ĐŃиОŃиŃĐľŃ
- field_fixed_version: Target version
- field_user: ĐĐžŃиŃник
- field_principal: Principal
- field_role: УНОга
- field_homepage: Đой ŃŃŃана
- field_is_public: Đавон
- field_parent: ĐОдпŃĐžĐľĐşŃ Đ˝Đ°
- field_is_in_roadmap: Issues displayed in roadmap
- field_login: ĐĐžŃиŃник
- field_mail_notification: ĐСвоŃŃŃваŃĐ° пО e-пОŃŃĐ°
- field_admin: ĐдПиниŃŃŃĐ°ŃĐžŃ
- field_last_login_on: ĐĐžŃНодна наŃава
- field_language: ĐаСик
- field_password: ĐОСинка
- field_new_password: ĐОва НОСинка
- field_password_confirmation: ĐĐžŃвŃĐ´Đ°
- field_version: ĐĐľŃСиŃĐ°
- field_type: Тип
- field_host: ĐĽĐžŃŃ
- field_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) ĐşŃоиŃĐ°ŃĐľ на кОŃиŃниŃи
- field_start_date: ĐĐžŃĐľŃОк
- field_done_ratio: "% ĐавŃŃонО"
- field_auth_source: РоМиП на авŃонŃикаŃиŃĐ°
- field_hide_mail: ĐŃĐ¸Ń ŃĐ° ПОŃĐ°ŃĐ° Đ°Đ´ŃĐľŃĐ° на Đľ-пОŃŃĐ°
- field_comments: ĐОПонŃĐ°Ń
- field_url: URL
- field_start_page: ĐĐžŃĐľŃна ŃŃŃана
- field_subproject: ĐОдпŃОокŃ
- field_hours: ЧаŃОви
- field_activity: ĐĐşŃивнОŃŃ
- field_spent_on: ĐĐ°ŃĐ°
- field_identifier: ĐдонŃиŃикаŃĐžŃ
- field_is_filter: ĐĐžŃиŃŃи какО ŃиНŃĐľŃ
- field_issue_to: ĐОвŃСана СадаŃĐ°
- field_delay: ĐĐžŃноŃĐľ
- field_assignable: ĐĐ° Оваа ŃНОга ПОМо Đ´Đ° ŃĐľ дОдоНŃĐ˛Đ°Đ°Ń ĐˇĐ°Đ´Đ°Ńи
- field_redirect_existing_links: ĐŃонаŃĐžŃи ги пОŃŃОоŃкиŃĐľ вŃŃки
- field_estimated_hours: ĐŃĐžŃоноŃĐž вŃоПо
- field_column_names: ĐОНОни
- field_time_entries: ĐоНоМи вŃоПо
- field_time_zone: ĐŃоПонŃка СОна
- field_searchable: ĐОМо Đ´Đ° ŃĐľ ĐżŃойаŃŃва
- field_default_value: Default value
- field_comments_sorting: ĐŃикаМŃĐ˛Đ°Ń ĐşĐžĐźĐľĐ˝ŃĐ°Ńи
- field_parent_title: Parent page
- field_editable: ĐОМо Đ´Đ° ŃĐľ ŃŃодŃва
- field_watcher: Watcher
- field_identity_url: OpenID URL
- field_content: ХОдŃМина
- field_group_by: ĐŃŃпиŃĐ°Ń ĐłĐ¸ ŃоСŃĐťŃĐ°ŃиŃĐľ ŃпОŃод
- field_sharing: ХпОдоНŃваŃĐľ
- field_parent_issue: Parent task
-
- setting_app_title: ĐĐ°ŃНОв на апНикаŃиŃĐ°ŃĐ°
- setting_app_subtitle: ĐОднаŃНОв на апНикаŃиŃĐ°ŃĐ°
- setting_welcome_text: ТокŃŃ ĐˇĐ° дОйŃодОŃĐ´Đľ
- setting_default_language: Default ŃаСик
- setting_login_required: ĐадОНМиŃоНна авŃонŃикаŃиŃĐ°
- setting_self_registration: ХаПО-ŃогиŃŃŃĐ°ŃиŃĐ°
- setting_attachment_max_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: ТокŃŃŃаНни Đľ-пОŃаки (йоС HTML)
- setting_host_name: ĐПо на Ń
ĐžŃŃ Đ¸ паŃока
- setting_text_formatting: ФОŃПаŃиŃĐ°ŃĐľ на ŃокŃŃ
- setting_wiki_compression: ĐОПпŃĐľŃиŃĐ° на иŃŃĐžŃиŃĐ°ŃĐ° на вики
- setting_feeds_limit: Feed content limit
- setting_default_projects_public: ĐОвиŃĐľ ĐżŃОокŃи ŃĐľ иниŃиŃаНнО Ńавни
- setting_autofetch_changesets: Autofetch commits
- setting_sys_api_enabled: Enable WS for repository management
- setting_commit_ref_keywords: Referencing keywords
- setting_commit_fix_keywords: Fixing keywords
- setting_autologin: ĐвŃОПаŃŃка наŃава
- setting_date_format: ФОŃĐźĐ°Ń Đ˝Đ° Đ´Đ°ŃĐ°
- setting_time_format: ФОŃĐźĐ°Ń Đ˝Đ° вŃоПо
- setting_cross_project_issue_relations: ĐОСвОНи ŃоНаŃии на СадаŃи ПоŃŃ ĐżŃОокŃи
- setting_issue_list_default_columns: Default columns displayed on the issue list
- setting_repositories_encodings: Repositories encodings
- setting_commit_logs_encoding: Commit messages encoding
- setting_emails_footer: Emails footer
- setting_protocol: ĐŃĐžŃОкОН
- setting_per_page_options: Objects per page options
- setting_user_format: ĐŃикаС на кОŃиŃниŃиŃĐľ
- setting_activity_days_default: ĐонОви ĐżŃикаМана вО Đ°ĐşŃивнОŃŃĐ° на ĐżŃОокŃĐžŃ
- setting_display_subprojects_issues: ĐŃикаМи ги СадаŃиŃĐľ на пОдпŃОокŃиŃĐľ вО гНавниŃĐľ ĐżŃОокŃи
- setting_enabled_scm: ĐвОСПОМи 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 кНŃŃ
- setting_sequential_project_identifiers: ĐоноŃиŃĐ°Ń ĐżĐžŃНодОваŃоНни идонŃиŃикаŃĐžŃи на ĐżŃОокŃи
- setting_gravatar_enabled: ĐĐžŃиŃŃи Gravatar кОŃиŃниŃки икОни
- setting_gravatar_default: Default Gravatar image
- setting_diff_max_lines_displayed: Max number of diff lines displayed
- setting_file_max_size_displayed: Max size of text files displayed inline
- setting_repository_log_display_limit: Maximum number of revisions displayed on file log
- setting_openid: ĐОСвОНи OpenID наŃава и ŃогиŃŃŃĐ°ŃиŃĐ°
- setting_password_min_length: Đин. дОНМина на НОСинка
- setting_new_project_user_role_id: УНОга дОдоНона на ноадПиниŃŃŃĐ°ŃĐžŃŃки кОŃиŃник ĐşĐžŃ ĐşŃоиŃĐ° ĐżŃОокŃ
- 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
-
- permission_add_project: ĐŃоиŃĐ°Ń ĐżŃОокŃи
- permission_add_subprojects: ĐŃоиŃĐ°Ń ĐżĐžĐ´ĐżŃОокŃи
- permission_edit_project: ĐŁŃоди ĐżŃОокŃ
- permission_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: ĐŃĐľĐłĐťĐľĐ´Đ°Ń ĐˇĐ°Đ´Đ°Ńи
- permission_add_issues: ĐĐžĐ´Đ°Đ˛Đ°Ń ĐˇĐ°Đ´Đ°Ńи
- permission_edit_issues: ĐŁŃодŃĐ˛Đ°Ń ĐˇĐ°Đ´Đ°Ńи
- permission_manage_issue_relations: Manage issue relations
- permission_add_issue_notes: ĐĐžĐ´Đ°Đ˛Đ°Ń ĐąĐľĐťĐľŃки
- permission_edit_issue_notes: ĐŁŃодŃĐ˛Đ°Ń ĐąĐľĐťĐľŃки
- permission_edit_own_issue_notes: ĐŁŃодŃĐ˛Đ°Ń ŃОпŃŃвони йоНоŃки
- permission_move_issues: ĐŃоПоŃŃŃĐ˛Đ°Ń ĐˇĐ°Đ´Đ°Ńи
- permission_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: ĐоНоМи пОŃŃĐžŃонО вŃоПо
- permission_view_time_entries: ĐŃĐľĐłĐťĐľĐ´Đ°Ń ĐżĐžŃŃĐžŃонО вŃоПо
- permission_edit_time_entries: ĐŁŃодŃĐ˛Đ°Ń ĐąĐľĐťĐľŃки Са пОŃŃĐžŃонО вŃоПо
- permission_edit_own_time_entries: ĐŁŃодŃĐ˛Đ°Ń ŃОпŃŃвони йоНоŃки Са пОŃŃĐžŃонО вŃоПо
- permission_manage_news: Manage news
- permission_comment_news: ĐОПонŃиŃĐ°Ń Đ˝Đ° воŃŃи
- permission_manage_documents: Manage documents
- permission_view_documents: ĐŃогНодŃĐ˛Đ°Ń Đ´ĐžĐşŃПонŃи
- permission_manage_files: Manage files
- permission_view_files: ĐŃогНодŃĐ˛Đ°Ń Đ´Đ°ŃĐžŃоки
- permission_manage_wiki: Manage wiki
- permission_rename_wiki_pages: ĐŃоиПонŃĐ˛Đ°Ń Đ˛Đ¸ĐşĐ¸ ŃŃŃаниŃи
- permission_delete_wiki_pages: ĐŃиŃи вики ŃŃŃаниŃи
- permission_view_wiki_pages: ĐŃогНодŃĐ˛Đ°Ń Đ˛Đ¸ĐşĐ¸
- permission_view_wiki_edits: ĐŃогНодŃĐ˛Đ°Ń Đ˛Đ¸ĐşĐ¸ иŃŃĐžŃиŃĐ°
- permission_edit_wiki_pages: ĐŁŃодŃĐ˛Đ°Ń Đ˛Đ¸ĐşĐ¸ ŃŃŃаниŃи
- permission_delete_wiki_pages_attachments: ĐŃиŃи ĐżŃиНОСи
- permission_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 boards
- permission_view_messages: View messages
- permission_add_messages: Post messages
- permission_edit_messages: ĐŁŃодŃĐ˛Đ°Ń ĐżĐžŃаки
- permission_edit_own_messages: ĐŁŃодŃĐ˛Đ°Ń ŃОпŃŃвони пОŃаки
- permission_delete_messages: ĐŃиŃи пОŃаки
- permission_delete_own_messages: ĐŃиŃи ŃОпŃŃвони пОŃаки
- permission_export_wiki_pages: Export wiki pages
- permission_manage_subtasks: Manage subtasks
-
- project_module_issue_tracking: ХНодоŃĐľ на СадаŃи
- project_module_time_tracking: ХНодоŃĐľ на вŃоПо
- project_module_news: ĐĐľŃŃи
- project_module_documents: ĐОкŃПонŃи
- project_module_files: ĐĐ°ŃĐžŃоки
- project_module_wiki: Đики
- project_module_repository: Repository
- project_module_boards: ФОŃŃПи
- project_module_calendar: ĐаНондаŃ
- project_module_gantt: Gantt
-
- label_user: ĐĐžŃиŃник
- label_user_plural: ĐĐžŃиŃниŃи
- label_user_new: ĐОв кОŃиŃник
- label_user_anonymous: ĐнОниПон
- label_project: ĐŃОокŃ
- label_project_new: ĐОв ĐżŃОокŃ
- label_project_plural: ĐŃОокŃи
- label_x_projects:
- zero: ноПа ĐżŃОокŃи
- one: 1 ĐżŃОокŃ
- other: "%{count} ĐżŃОокŃи"
- label_project_all: ХиŃĐľ ĐżŃОокŃи
- label_project_latest: ĐĐžŃНодниŃĐľ ĐżŃОокŃи
- label_issue: ĐĐ°Đ´Đ°ŃĐ°
- label_issue_new: ĐОва СадаŃĐ°
- label_issue_plural: ĐĐ°Đ´Đ°Ńи
- label_issue_view_all: ĐŃĐľĐłĐťĐľĐ´Đ°Ń ĐłĐ¸ ŃиŃĐľ СадаŃи
- label_issues_by: "ĐĐ°Đ´Đ°Ńи пО %{value}"
- label_issue_added: ĐĐ°Đ´Đ°ŃĐ°ŃĐ° Đľ дОдадона
- label_issue_updated: ĐĐ°Đ´Đ°ŃĐ°ŃĐ° Đľ Đ°ĐśŃŃиŃана
- label_document: ĐОкŃПонŃ
- label_document_new: ĐОв дОкŃПонŃ
- label_document_plural: ĐОкŃПонŃи
- label_document_added: ĐОкŃПонŃĐžŃ Đľ дОдадон
- label_role: УНОга
- label_role_plural: УНОги
- label_role_new: ĐОва ŃНОга
- label_role_and_permissions: УНОги и ОвНаŃŃŃваŃĐ°
- label_member: ЧНон
- label_member_new: ĐОв ŃНон
- label_member_plural: ЧНонОви
- label_tracker: Tracker
- label_tracker_plural: Trackers
- label_tracker_new: New tracker
- label_workflow: Workflow
- label_issue_status: ĐĄŃĐ°ŃŃŃ Đ˝Đ° СадаŃĐ°
- label_issue_status_plural: ĐĄŃĐ°ŃŃŃи на СадаŃи
- label_issue_status_new: ĐОв ŃŃĐ°ŃŃŃ
- label_issue_category: ĐĐ°ŃогОŃиŃĐ° на СадаŃĐ°
- label_issue_category_plural: ĐĐ°ŃогОŃии на СадаŃи
- label_issue_category_new: ĐОва каŃогОŃиŃĐ°
- label_custom_field: ĐŃиНагОдонО пОНо
- label_custom_field_plural: ĐŃиНагОдони пОНиŃĐ°
- label_custom_field_new: ĐОвО ĐżŃиНагОдонО пОНо
- label_enumerations: Enumerations
- label_enumeration_new: ĐОва вŃоднОŃŃ
- label_information: ĐĐ˝ŃĐžŃПаŃиŃĐ°
- label_information_plural: ĐĐ˝ŃĐžŃПаŃии
- label_please_login: ĐĐ°Ńави ŃĐľ
- label_register: РогиŃŃŃиŃĐ°Ń ŃĐľ
- label_login_with_open_id_option: иНи наŃави ŃĐľ ŃĐž OpenID
- label_password_lost: ĐСгŃйона НОСинка
- label_home: ĐĐžŃĐľŃна
- label_my_page: ĐĐžŃĐ°ŃĐ° ŃŃŃана
- label_my_account: ĐĐžŃĐžŃ ĐżŃĐžŃиН
- label_my_projects: ĐОи ĐżŃОокŃи
- label_my_page_block: ĐНОк оНоПонŃ
- label_administration: ĐдПиниŃŃŃĐ°ŃиŃĐ°
- label_login: ĐĐ°Ńави ŃĐľ
- label_logout: ĐĐ´Ńави ŃĐľ
- label_help: ĐОПОŃ
- label_reported_issues: ĐŃиŃавони СадаŃи
- label_assigned_to_me_issues: ĐĐ°Đ´Đ°Ńи дОдоНони на Поно
- label_last_login: ĐĐžŃНодна наŃава
- label_registered_on: РогиŃŃŃиŃĐ°Đ˝ на
- label_activity: ĐĐşŃивнОŃŃ
- label_overall_activity: ХовкŃпна Đ°ĐşŃивнОŃŃ
- label_user_activity: "ĐĐşŃивнОŃŃ Đ˝Đ° %{value}"
- label_new: ĐОва
- label_logged_as: ĐĐ°Ńавони ŃŃĐľ какО
- label_environment: ĐпкŃŃĐśŃваŃĐľ
- label_authentication: ĐвŃонŃикаŃиŃĐ°
- label_auth_source: РоМиП на авŃонŃикаŃиŃĐ°
- label_auth_source_new: ĐОв ŃоМиП на авŃонŃикаŃиŃĐ°
- label_auth_source_plural: РоМиПи на авŃонŃикаŃиŃĐ°
- label_subproject_plural: ĐОдпŃОокŃи
- label_subproject_new: ĐОв пОдпŃОокŃ
- label_and_its_subprojects: "%{value} и ногОвиŃĐľ пОдпŃОокŃи"
- label_min_max_length: Đин. - ĐĐ°ĐşŃ. дОНМина
- label_list: ĐиŃŃĐ°
- label_date: ĐĐ°ŃĐ°
- label_integer: Integer
- label_float: Float
- label_boolean: Boolean
- label_string: ТокŃŃ
- label_text: ĐОНг ŃокŃŃ
- label_attribute: ĐŃŃийŃŃ
- label_attribute_plural: ĐŃŃийŃŃи
- label_download: "%{count} ĐżŃовСоПаŃĐľ"
- label_download_plural: "%{count} ĐżŃовСоПаŃĐ°"
- label_no_data: ĐоПа пОдаŃĐžŃи Са ĐżŃикаМŃваŃĐľ
- label_change_status: ĐŃОПони ŃŃĐ°ŃŃŃ
- label_history: ĐŃŃĐžŃиŃĐ°
- label_attachment: ĐĐ°ŃĐžŃока
- label_attachment_new: ĐОва Đ´Đ°ŃĐžŃока
- label_attachment_delete: ĐСйŃиŃи Đ´Đ°ŃĐžŃока
- label_attachment_plural: ĐĐ°ŃĐžŃоки
- label_file_added: ĐĐ°ŃĐžŃокаŃĐ° Đľ дОдадона
- label_report: ĐСвоŃŃĐ°Ń
- label_report_plural: ĐСвоŃŃаи
- label_news: ĐОвОŃŃ
- label_news_new: ĐОдади нОвОŃŃ
- label_news_plural: ĐОвОŃŃи
- label_news_latest: ĐĐžŃНодни нОвОŃŃи
- label_news_view_all: ĐŃĐľĐłĐťĐľĐ´Đ°Ń ĐłĐ¸ ŃиŃĐľ нОвОŃŃи
- label_news_added: ĐОвОŃŃŃĐ° Đľ дОдадона
- label_settings: Settings
- label_overview: ĐŃогНод
- label_version: ĐĐľŃСиŃĐ°
- label_version_new: ĐОва воŃСиŃĐ°
- label_version_plural: ĐĐľŃСии
- label_close_versions: ĐĐ°ŃвОŃи ги СавŃŃониŃĐľ вŃСии
- label_confirmation: ĐĐžŃвŃĐ´Đ°
- label_export_to: 'ĐĐžŃŃапнО и вО:'
- label_read: ĐŃĐžŃиŃĐ°Ń...
- label_public_projects: Đавни ĐżŃОокŃи
- label_open_issues: ĐžŃвОŃона
- label_open_issues_plural: ĐžŃвОŃони
- label_closed_issues: СаŃвОŃона
- label_closed_issues_plural: СаŃвОŃони
- label_x_open_issues_abbr_on_total:
- zero: 0 ĐžŃвОŃони / %{total}
- one: 1 ĐžŃвОŃона / %{total}
- other: "%{count} ĐžŃвОŃони / %{total}"
- label_x_open_issues_abbr:
- zero: 0 ĐžŃвОŃони
- one: 1 ĐžŃвОŃона
- other: "%{count} ĐžŃвОŃони"
- label_x_closed_issues_abbr:
- zero: 0 СаŃвОŃони
- one: 1 СаŃвОŃона
- other: "%{count} СаŃвОŃони"
- label_total: ĐĐşŃпнО
- label_permissions: ĐвНаŃŃŃваŃĐ°
- label_current_status: ĐОПонŃаНон ŃŃĐ°ŃŃŃ
- label_new_statuses_allowed: ĐОСвОНони нОви ŃŃĐ°ŃŃŃи
- label_all: ŃиŃĐľ
- label_none: ниодон
- label_nobody: никОŃ
- label_next: ХНоднО
- label_previous: ĐŃĐľŃŃ
ОднО
- label_used_by: ĐĐžŃиŃŃонО Од
- label_details: ĐĐľŃаНи
- label_add_note: ĐОдади йоНоŃка
- label_per_page: ĐĐž ŃŃŃана
- label_calendar: ĐаНондаŃ
- label_months_from: ПоŃĐľŃи Од
- label_gantt: Gantt
- label_internal: Internal
- label_last_changes: "пОŃНодни %{count} ĐżŃОПони"
- label_change_view_all: ĐŃĐľĐłĐťĐľĐ´Đ°Ń ĐłĐ¸ ŃиŃĐľ ĐżŃОПони
- label_personalize_page: ĐŃиНагОди ŃĐ° ŃŃŃанава
- label_comment: ĐОПонŃĐ°Ń
- label_comment_plural: ĐОПонŃĐ°Ńи
- label_x_comments:
- zero: ноПа кОПонŃĐ°Ńи
- one: 1 кОПонŃĐ°Ń
- other: "%{count} кОПонŃĐ°Ńи"
- label_comment_add: ĐОдади кОПонŃĐ°Ń
- label_comment_added: ĐОПонŃĐ°ŃĐžŃ Đľ дОдадон
- label_comment_delete: ĐСйŃиŃи кОПонŃĐ°Ńи
- label_query: Custom query
- label_query_plural: Custom queries
- label_query_new: New query
- label_filter_add: ĐОдади ŃиНŃĐľŃ
- label_filter_plural: ФиНŃŃи
- label_equals: Đľ
- label_not_equals: но о
- label_in_less_than: Са ĐżĐžĐźĐ°ĐťĐşŃ ĐžĐ´
- label_in_more_than: Са пОвоŃĐľ Од
- label_greater_or_equal: '>='
- label_less_or_equal: '<='
- label_in: вО
- label_today: доноŃ
- label_all_time: ŃоНО вŃоПо
- label_yesterday: вŃĐľŃĐ°
- label_this_week: Оваа нодоНа
- label_last_week: ПинаŃĐ°ŃĐ° нодоНа
- label_last_n_days: "пОŃНодниŃĐľ %{count} дона"
- label_this_month: ĐžĐ˛ĐžŃ ĐźĐľŃĐľŃ
- label_last_month: ПинаŃĐ¸ĐžŃ ĐźĐľŃĐľŃ
- label_this_year: Оваа гОдина
- label_date_range: Date range
- label_less_than_ago: ĐżŃод ĐżĐžĐźĐ°ĐťĐşŃ ĐžĐ´ донОви
- label_more_than_ago: ĐżŃод пОвоŃĐľ Од донОви
- label_ago: ĐżŃод донОви
- label_contains: ŃОдŃМи
- label_not_contains: но ŃОдŃМи
- label_day_plural: донОви
- label_repository: ХкНадиŃŃĐľ
- label_repository_plural: ХкНадиŃŃĐ°
- label_browse: ĐŃоНиŃŃŃваŃ
- label_modification: "%{count} ĐżŃОПони"
- label_modification_plural: "%{count} ĐżŃОПони"
- label_branch: ĐŃанка
- label_tag: Tag
- label_revision: РовиСиŃĐ°
- label_revision_plural: РовиСии
- label_revision_id: "РовиСиŃĐ° %{value}"
- label_associated_revisions: Associated revisions
- label_added: added
- label_modified: modified
- label_copied: copied
- label_renamed: renamed
- label_deleted: deleted
- label_latest_revision: ĐĐžŃНодна ŃовиСиŃĐ°
- label_latest_revision_plural: ĐĐžŃНодни ŃовиСии
- label_view_revisions: ĐŃĐľĐłĐťĐľĐ´Đ°Ń ĐłĐ¸ ŃовиСииŃĐľ
- label_view_all_revisions: ĐŃĐľĐłĐťĐľĐ´Đ°Ń ĐłĐ¸ ŃиŃĐľ ŃовиСии
- label_max_size: ĐĐ°ĐşŃ. гОНоПина
- label_sort_highest: ĐŃоПоŃŃи наŃгОŃĐľ
- label_sort_higher: ĐŃоПоŃŃи нагОŃĐľ
- label_sort_lower: ĐŃоПоŃŃи надОНо
- label_sort_lowest: ĐŃоПоŃŃи наŃдОНо
- label_roadmap: Roadmap
- label_roadmap_due_in: "Due in %{value}"
- label_roadmap_overdue: "ĐĐ°Ńни %{value}"
- label_roadmap_no_issues: ĐоПа СадаŃи Са Оваа воŃСиŃĐ°
- label_search: ĐĐ°ŃĐ°Ń
- label_result_plural: РоСŃĐťŃĐ°Ńи
- label_all_words: ХиŃĐľ СйОŃОви
- label_wiki: Đики
- label_wiki_edit: Đики ŃŃодŃваŃĐľ
- label_wiki_edit_plural: Đики ŃŃодŃваŃĐ°
- label_wiki_page: Đики ŃŃŃаниŃĐ°
- label_wiki_page_plural: Đики ŃŃŃаниŃи
- label_index_by_title: ĐĐ˝Đ´ĐľĐşŃ ĐżĐž наŃНОв
- label_index_by_date: ĐĐ˝Đ´ĐľĐşŃ ĐżĐž Đ´Đ°ŃĐ°
- label_current_version: Current version
- label_preview: Preview
- label_feed_plural: Feeds
- label_changes_details: ĐĐľŃаНи Са ŃиŃĐľ ĐżŃОПони
- label_issue_tracking: ХНодоŃĐľ на СадаŃи
- label_spent_time: ĐĐžŃŃĐžŃонО вŃоПо
- label_overall_spent_time: ĐĐşŃпнО пОŃŃĐžŃонО вŃоПо
- label_f_hour: "%{value} ŃĐ°Ń"
- label_f_hour_plural: "%{value} ŃĐ°ŃĐ°"
- label_time_tracking: ХНодоŃĐľ на вŃоПо
- label_change_plural: ĐŃОПони
- label_statistics: ĐĄŃĐ°ŃиŃŃики
- label_commits_per_month: Commits per month
- label_commits_per_author: Commits per author
- label_view_diff: View differences
- label_diff_inline: inline
- label_diff_side_by_side: side by side
- label_options: ĐĐżŃии
- label_copy_workflow_from: Copy workflow from
- label_permissions_report: Permissions report
- label_watched_issues: Watched issues
- label_related_issues: ĐОвŃСани СадаŃи
- label_applied_status: Applied status
- label_loading: Loading...
- label_relation_new: ĐОва ŃоНаŃиŃĐ°
- label_relation_delete: ĐСйŃиŃи ŃоНаŃиŃĐ°
- label_relates_to: related to
- label_duplicates: Đ´ŃпНикаŃи
- label_duplicated_by: duplicated by
- label_blocks: blocks
- label_blocked_by: йНОкиŃанО Од
- label_precedes: ĐżŃĐľŃŃ
Оди
- label_follows: ŃНоди
- label_end_to_start: ĐşŃĐ°Ń Đ´Đž пОŃĐľŃОк
- label_end_to_end: ĐşŃĐ°Ń Đ´Đž ĐşŃĐ°Ń
- label_start_to_start: пОŃĐľŃОк Đ´Đž пОŃĐľŃОк
- label_start_to_end: пОŃĐľŃОк Đ´Đž ĐşŃĐ°Ń
- label_stay_logged_in: ĐŃŃаноŃĐľ наŃавони
- label_disabled: disabled
- label_show_completed_versions: Show completed versions
- label_me: ŃĐ°Ń
- label_board: ФОŃŃĐź
- label_board_new: ĐОв ŃĐžŃŃĐź
- label_board_plural: ФОŃŃПи
- label_board_locked: ĐакНŃŃон
- label_board_sticky: Sticky
- label_topic_plural: ТоПи
- label_message_plural: ĐĐžŃаки
- label_message_last: ĐĐžŃНодна пОŃака
- label_message_new: ĐОва пОŃака
- label_message_posted: ĐĐžŃакаŃĐľ Đľ дОдадона
- label_reply_plural: ĐдгОвОŃи
- label_send_information: ĐŃĐżŃĐ°Ńи ги инŃĐžŃПаŃииŃĐľ Са ĐżŃĐžŃĐ¸ĐťĐžŃ Đ˝Đ° кОŃиŃникОŃ
- label_year: ĐОдина
- label_month: ĐĐľŃĐľŃ
- label_week: ĐодоНа
- label_date_from: ĐĐ´
- label_date_to: ĐĐž
- label_language_based: ХпОŃод ŃĐ°ĐˇĐ¸ĐşĐžŃ Đ˝Đ° кОŃиŃникОŃ
- label_sort_by: "ĐОдŃоди ŃпОŃод %{value}"
- label_send_test_email: ĐŃĐżŃĐ°Ńи ŃĐľŃŃ Đľ-пОŃака
- label_feeds_access_key: RSS кНŃŃ ĐˇĐ° ĐżŃиŃŃĐ°Đż
- label_missing_feeds_access_key: ĐодОŃŃика RSS кНŃŃ ĐˇĐ° ĐżŃиŃŃĐ°Đż
- label_feeds_access_key_created_on: "RSS кНŃŃĐžŃ ĐˇĐ° ĐżŃиŃŃĐ°Đż ĐşŃоиŃĐ°Đ˝ ĐżŃод %{value}"
- label_module_plural: ĐОдŃНи
- label_added_time_by: "ĐОдадонО Од %{author} ĐżŃод %{age}"
- label_updated_time_by: "ĐĐśŃŃиŃанО Од %{author} ĐżŃод %{age}"
- label_updated_time: "ĐĐśŃŃиŃанО ĐżŃод %{value}"
- label_jump_to_a_project: ĐŃĐľŃŃНи ŃĐľ на ĐżŃОокŃ...
- label_file_plural: ĐĐ°ŃĐžŃоки
- label_changeset_plural: Changesets
- label_default_columns: ĐŃнОвни кОНОни
- label_no_change_option: (ĐоС ĐżŃОПона)
- label_bulk_edit_selected_issues: ĐŃŃпнО ŃŃодŃваŃĐľ на СадаŃи
- label_theme: ТоПа
- label_default: Default
- label_search_titles_only: ĐŃойаŃŃĐ˛Đ°Ń ŃаПО наŃНОви
- label_user_mail_option_all: "ĐĐ° йиНО ĐşĐžŃ Đ˝Đ°ŃŃĐ°Đ˝ вО ŃиŃĐľ ПОи ĐżŃОокŃи"
- label_user_mail_option_selected: "ĐĐ° йиНО ĐşĐžŃ Đ˝Đ°ŃŃĐ°Đ˝ ŃаПО вО иСйŃаниŃĐľ ĐżŃОокŃи..."
- label_user_mail_no_self_notified: "ĐĐľ По иСвоŃŃŃĐ˛Đ°Ń ĐˇĐ° ĐżŃОПониŃĐľ ŃŃĐž ŃĐ°Ń ĐłĐ¸ ĐżŃаваП"
- label_registration_activation_by_email: Đ°ĐşŃиваŃиŃĐ° на ĐżŃĐžŃиН ĐżŃĐľĐşŃ Đľ-пОŃŃĐ°
- label_registration_manual_activation: ПанŃоНна Đ°ĐşŃиваŃиŃĐ° на ĐżŃĐžŃиН
- label_registration_automatic_activation: авŃОПаŃŃка Đ°ĐşŃиваŃиŃĐ° на ĐżŃĐžŃиН
- label_display_per_page: "ĐĐž ŃŃŃана: %{value}"
- label_age: Age
- label_change_properties: Change properties
- label_general: ĐĐżŃŃĐž
- label_more: ĐОвоŃĐľ
- label_scm: SCM
- label_plugins: ĐОдаŃĐžŃи
- label_ldap_authentication: LDAP авŃонŃикаŃиŃĐ°
- label_downloads_abbr: ĐŃовСоПаŃĐ°
- label_optional_description: ĐĐżĐ¸Ń (ноСадОНМиŃоНнО)
- label_add_another_file: ĐОдади ŃŃŃĐľ одна Đ´Đ°ŃĐžŃока
- label_preferences: Preferences
- label_chronological_order: ĐĐž Ń
ŃОнОНОŃки Ńод
- label_reverse_chronological_order: In reverse chronological order
- label_planning: ĐНаниŃĐ°ŃĐľ
- label_incoming_emails: ĐĐžŃдОвни Đľ-пОŃаки
- label_generate_key: ĐоноŃиŃĐ°Ń ĐşĐťŃŃ
- label_issue_watchers: Watchers
- label_example: ĐŃиПоŃ
- label_display: ĐŃикаМи
- label_sort: ĐОдŃоди
- label_ascending: Đ Đ°ŃŃĐľŃки
- label_descending: ĐпаŃĐ°Ńки
- label_date_from_to: ĐĐ´ %{start} Đ´Đž %{end}
- label_wiki_content_added: Đики ŃŃŃаниŃĐ° дОдадона
- label_wiki_content_updated: Đики ŃŃŃаниŃĐ° Đ°ĐśŃŃиŃана
- label_group: ĐŃŃпа
- label_group_plural: ĐŃŃпи
- label_group_new: ĐОва ĐłŃŃпа
- label_time_entry_plural: ĐĐžŃŃĐžŃонО вŃоПо
- label_version_sharing_none: ĐĐľ ŃпОдоНонО
- label_version_sharing_descendants: ĐĄĐž ŃиŃĐľ пОдпŃОокŃи
- label_version_sharing_hierarchy: ĐĄĐž Ń
иоŃĐ°ŃŃ
иŃĐ°ŃĐ° на ĐżŃОокŃĐžŃ
- label_version_sharing_tree: ĐĄĐž Đ´ŃвОŃĐž на ĐżŃОокŃĐžŃ
- label_version_sharing_system: ĐĄĐž ŃиŃĐľ ĐżŃОокŃи
- label_update_issue_done_ratios: Update issue done ratios
- label_copy_source: ĐСвОŃ
- label_copy_target: ĐĐľŃŃинаŃиŃĐ°
- label_copy_same_as_target: ĐŃŃĐž какО Đ´ĐľŃŃинаŃиŃĐ°ŃĐ°
- label_display_used_statuses_only: Only display statuses that are used by this tracker
- label_api_access_key: API кНŃŃ ĐˇĐ° ĐżŃиŃŃĐ°Đż
- label_missing_api_access_key: ĐодОŃŃига API кНŃŃ ĐˇĐ° ĐżŃиŃŃĐ°Đż
- label_api_access_key_created_on: "API кНŃŃĐžŃ ĐˇĐ° ĐżŃиŃŃĐ°Đż Đľ ĐşŃоиŃĐ°Đ˝ ĐżŃод %{value}"
- label_profile: ĐŃĐžŃиН
- label_subtask_plural: ĐОдСадаŃи
- label_project_copy_notifications: ĐŃĐ°ŃĐ°Ń Đ¸ĐˇĐ˛ĐľŃŃŃваŃĐ° пО Đľ-пОŃŃĐ° ĐżŃи кОпиŃĐ°ŃĐľ на ĐżŃОокŃ
-
- button_login: ĐĐ°Ńави ŃĐľ
- button_submit: ĐŃĐżŃĐ°Ńи
- button_save: ĐĐ°ŃŃваŃ
- button_check_all: ШŃикНиŃĐ°Ń ĐłĐ¸ ŃиŃĐľ
- button_uncheck_all: ĐĐ´ŃŃикНиŃĐ°Ń ĐłĐ¸ ŃиŃĐľ
- button_delete: ĐСйŃиŃи
- button_create: ĐŃоиŃĐ°Ń
- button_create_and_continue: ĐŃоиŃĐ°Ń Đ¸ ĐżŃОдОНМи
- button_test: ТоŃŃ
- button_edit: ĐŁŃоди
- button_add: ĐОдади
- button_change: ĐŃОПони
- button_apply: ĐŃиПони
- button_clear: ĐСйŃиŃи
- button_lock: ĐакНŃŃи
- button_unlock: ĐŃкНŃŃи
- button_download: ĐŃовСоПи
- button_list: List
- button_view: ĐŃогНодаŃ
- button_move: ĐŃоПоŃŃи
- button_move_and_follow: ĐŃоПоŃŃи и ŃНоди
- button_back: Back
- button_cancel: ĐŃкаМи
- button_activate: ĐĐşŃивиŃĐ°Ń
- button_sort: ĐОдŃоди
- button_log_time: ĐоНоМи вŃоПо
- button_rollback: Rollback to this version
- button_watch: ХНоди
- button_unwatch: ĐĐľ ŃНоди
- button_reply: ĐдгОвОŃи
- button_archive: ĐŃŃ
ивиŃĐ°Ń
- button_unarchive: ĐĐ´Đ°ŃŃ
ивиŃĐ°Ń
- button_reset: Reset
- button_rename: ĐŃоиПонŃваŃ
- button_change_password: ĐŃОПони НОСинка
- button_copy: ĐОпиŃĐ°Ń
- button_copy_and_follow: ĐОпиŃĐ°Ń Đ¸ ŃНоди
- button_annotate: Annotate
- button_update: ĐĐśŃŃиŃĐ°Ń
- button_configure: ĐОнŃигŃŃиŃĐ°Ń
- button_quote: ЌиŃиŃĐ°Ń
- button_duplicate: ĐОпиŃĐ°Ń
- button_show: Show
-
- status_active: Đ°ĐşŃивни
- status_registered: ŃогиŃŃŃиŃани
- status_locked: СакНŃŃони
-
- version_status_open: ĐžŃвОŃони
- version_status_locked: СакНŃŃони
- version_status_closed: СаŃвОŃони
-
- field_active: Active
-
- text_select_mail_notifications: ĐСйоŃĐľŃĐľ Са кОи наŃŃани Đ´Đ° ŃĐľ ĐżŃĐ°ŃĐ°Đ°Ń Đ¸ĐˇĐ˛ĐľŃŃŃваŃĐ° пО Đľ-пОŃŃĐ° Đ´Đ° ŃĐľ ĐżŃĐ°ŃĐ°Đ°Ń.
- text_regexp_info: eg. ^[A-Z0-9]+$
- text_min_max_length_info: 0 СнаŃи йоС ОгŃаниŃŃваŃĐľ
- text_project_destroy_confirmation: ĐаНи ŃŃĐľ ŃигŃŃни дока ŃакаŃĐľ Đ´Đ° гО иСйŃиŃĐľŃĐľ ĐżŃОокŃĐžŃ Đ¸ ŃиŃĐľ пОвŃСани пОдаŃĐžŃи?
- text_subprojects_destroy_warning: "ĐогОвиŃĐľ пОдпŃОокŃи: %{value} иŃŃĐž Ńака ŃĐľ ĐąĐ¸Đ´Đ°Ń Đ¸ĐˇĐąŃиŃани."
- text_workflow_edit: Select a role and a tracker to edit the workflow
- text_are_you_sure: ĐаНи ŃŃĐľ ŃигŃŃни?
- text_journal_changed: "%{label} ĐżŃОПоноŃĐž Од %{old} вО %{new}"
- text_journal_set_to: "%{label} set to %{value}"
- text_journal_deleted: "%{label} иСйŃиŃĐ°Đ˝ (%{old})"
- text_journal_added: "%{label} %{value} дОдадон"
- text_tip_issue_begin_day: СадаŃи ŃŃĐž пОŃĐ˝ŃĐ˛Đ°Đ°Ń ĐžĐ˛ĐžŃ Đ´ĐľĐ˝
- text_tip_issue_end_day: СадаŃи ŃŃĐž СавŃŃŃĐ˛Đ°Đ°Ń ĐžĐ˛ĐžŃ Đ´ĐľĐ˝
- text_tip_issue_begin_end_day: СадаŃи ŃŃĐž пОŃĐ˝ŃĐ˛Đ°Đ°Ń Đ¸ СавŃŃŃĐ˛Đ°Đ°Ń ĐžĐ˛ĐžŃ Đ´ĐľĐ˝
- text_project_identifier_info: 'Only lower case letters (a-z), numbers, dashes and underscores are allowed.
Once saved, the identifier can not be changed.'
- text_caracters_maximum: "%{count} СнаŃи ПакŃиПŃĐź."
- text_caracters_minimum: "ĐĐžŃĐ° Đ´Đ° Đľ наŃĐźĐ°ĐťĐşŃ %{count} СнаŃи дОНгО."
- text_length_between: "ĐОНМина пОПоŃŃ %{min} и %{max} СнаŃи."
- text_tracker_no_workflow: No workflow defined for this tracker
- text_unallowed_characters: ĐодОСвОНони СнаŃи
- text_comma_separated: ĐОСвОНони ŃĐľ пОвоŃĐľ вŃоднОŃŃи (ŃаСдоНони ŃĐž СапиŃка).
- text_line_separated: ĐОСвОНони ŃĐľ пОвоŃĐľ вŃоднОŃŃи (одна НиниŃĐ° Са ŃокОŃĐ° вŃоднОŃŃ).
- text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages
- text_issue_added: "ĐĐ°Đ´Đ°ŃĐ°ŃĐ° %{id} Đľ ĐżŃиŃавона Од %{author}."
- text_issue_updated: "ĐĐ°Đ´Đ°ŃĐ°ŃĐ° %{id} Đľ Đ°ĐśŃŃиŃана Од %{author}."
- text_wiki_destroy_confirmation: ĐаНи ŃŃĐľ ŃигŃŃни дока ŃакаŃĐľ Đ´Đ° гО иСйŃиŃĐľŃĐľ Ова вики и ŃоНаŃĐ° ногОва ŃОдŃМина?
- text_issue_category_destroy_question: "ĐокОи СадаŃи (%{count}) ŃĐľ дОдоНони на Оваа каŃогОŃиŃĐ°. ШŃĐž ŃакаŃĐľ Đ´Đ° ĐżŃавиŃĐľ?"
- text_issue_category_destroy_assignments: Remove category assignments
- text_issue_category_reassign_to: ĐОдоНи ги СадаŃиŃĐľ на Оваа каŃогОŃиŃĐ°
- 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_issues_destroy_confirmation: 'ĐаНи ŃŃĐľ ŃигŃŃни дока ŃакаŃĐľ Đ´Đ° ги иСйŃиŃĐľŃĐľ иСйŃаниŃĐľ СадаŃи?'
- text_select_project_modules: 'ĐСйоŃĐľŃĐľ ПОдŃНи Са ĐžĐ˛ĐžŃ ĐżŃОокŃ:'
- text_default_administrator_account_changed: Default administrator account changed
- text_file_repository_writable: ĐĐž папкаŃĐ° Са ĐżŃиНОСи ПОМо Đ´Đ° ŃĐľ СапиŃŃва
- text_plugin_assets_writable: ĐĐž папкаŃĐ° Са дОдаŃĐžŃи ПОМо Đ´Đ° ŃĐľ СапиŃŃва
- text_rmagick_available: RMagick available (ноСадОНМиŃоНнО)
- 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: ĐОдоНи ги ĐżŃиŃавониŃĐľ ŃĐ°ŃОви на ĐżŃОокŃĐžŃ
- text_reassign_time_entries: 'Reassign reported hours to this issue:'
- text_user_wrote: "%{value} напиŃĐ°:"
- 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: "ĐĐžŃŃаваŃĐ° пО Đľ-пОŃŃĐ° но Đľ кОнŃигŃŃиŃана, и иСвоŃŃŃваŃĐ°ŃĐ° ŃĐľ ОновОСПОМони.\nĐОнŃигŃŃиŃĐ°ŃŃĐľ гО ĐĐ°ŃĐ¸ĐžŃ SMTP ŃĐľŃĐ˛ĐľŃ Đ˛Đž config/configuration.yml и ŃĐľŃŃĐ°ŃŃиŃĐ°ŃŃĐľ ŃĐ° апНикаŃиŃĐ°ŃĐ°."
- 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
-
- default_role_manager: ĐонаŃĐľŃ
- default_role_developer: Developer
- default_role_reporter: Reporter
- default_role_non_member: Non member
- default_role_anonymous: Anonymous
- default_tracker_bug: ĐŃĐľŃка
- default_tracker_feature: ФŃнкŃиОнаНнОŃŃ
- default_tracker_support: ĐОддŃŃка
- default_issue_status_new: ĐОва
- default_issue_status_in_progress: ĐĐž ĐżŃОгŃĐľŃ
- default_issue_status_resolved: РаСŃĐľŃона
- default_issue_status_feedback: Feedback
- default_issue_status_closed: ĐĐ°ŃвОŃона
- default_issue_status_rejected: Đдйиона
- default_doc_category_user: ĐĐžŃиŃниŃка дОкŃПонŃĐ°ŃиŃĐ°
- default_doc_category_tech: ТоŃ
ниŃка дОкŃПонŃĐ°ŃиŃĐ°
- default_priority_low: ĐиСОк
- default_priority_normal: ĐĐžŃПаНон
- default_priority_high: ĐиŃОк
- default_priority_urgent: ĐŃнО
- default_priority_immediate: ĐоднаŃ
- default_activity_design: ĐиСаŃĐ˝
- default_activity_development: РаСвОŃ
-
- enumeration_issue_priorities: ĐŃиОŃиŃĐľŃи на СадаŃĐ°
- enumeration_doc_categories: ĐĐ°ŃогОŃии на дОкŃПонŃ
- enumeration_activities: ĐĐşŃивнОŃŃи (ŃНодоŃĐľ на вŃоПо)
- enumeration_system_activity: ХиŃŃоПŃка Đ°ĐşŃивнОŃŃ
-
- button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}"
- text_are_you_sure_with_children: Delete issue and all child issues?
- field_text: Text field
- label_user_mail_option_only_owner: Only for things I am the owner of
- setting_default_notification_option: Default notification option
- 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_none: No events
- field_member_of_group: Assignee's group
- field_assigned_to_role: Assignee's role
- notice_not_authorized_archived_project: The project you're trying to access has been archived.
- label_principal_search: "Search for user or group:"
- label_user_search: "Search for user:"
- field_visible: Visible
- setting_emails_header: Emails header
- setting_commit_logtime_activity_id: Activity for logged time
- text_time_logged_by_changeset: Applied in changeset %{value}.
- setting_commit_logtime_enabled: Enable time logging
- notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
- setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
- text_powered_by: Powered by %{link}
+mk:
+ # 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: "%d/%m/%Y"
+ short: "%d %b"
+ long: "%d %B, %Y"
+
+ day_names: [нодоНа, пОнодоНник, вŃĐžŃник, ŃŃода, ŃĐľŃвŃŃОк, поŃОк, ŃайОŃĐ°]
+ abbr_day_names: [нод, пОн, вŃĐž, ŃŃĐľ, ŃĐľŃ, поŃ, ŃĐ°Đą]
+
+ # Don't forget the nil at the beginning; there's no such thing as a 0th month
+ month_names: [~, ŃĐ°Đ˝ŃĐ°Ńи, ŃовŃŃĐ°Ńи, ПаŃŃ, Đ°ĐżŃиН, ПаŃ, ŃŃни, ŃŃНи, авгŃŃŃ, ŃопŃоПвŃи, ОкŃОПвŃи, нОоПвŃи, докоПвŃи]
+ abbr_month_names: [~, ŃĐ°Đ˝, Ńов, ПаŃ, Đ°ĐżŃ, ПаŃ, ŃŃĐ˝, ŃŃĐť, авг, Ńоп, ОкŃ, нОо, док]
+ # Used in date_select and datime_select.
+ order:
+ - :day
+ - :month
+ - :year
+
+ time:
+ formats:
+ default: "%d/%m/%Y %H:%M"
+ time: "%H:%M"
+ short: "%d %b %H:%M"
+ long: "%d %B, %Y %H:%M"
+ am: "ĐżŃодпНадно"
+ pm: "пОпНадно"
+
+ datetime:
+ distance_in_words:
+ half_a_minute: "пОНа ПинŃŃĐ°"
+ less_than_x_seconds:
+ one: "ĐżĐžĐźĐ°ĐťĐşŃ ĐžĐ´ 1 ŃокŃнда"
+ other: "ĐżĐžĐźĐ°ĐťĐşŃ ĐžĐ´ %{count} ŃокŃнди"
+ x_seconds:
+ one: "1 ŃокŃнда"
+ other: "%{count} ŃокŃнди"
+ less_than_x_minutes:
+ one: "ĐżĐžĐźĐ°ĐťĐşŃ ĐžĐ´ 1 ПинŃŃĐ°"
+ other: "ĐżĐžĐźĐ°ĐťĐşŃ ĐžĐ´ %{count} ПинŃŃи"
+ x_minutes:
+ one: "1 ПинŃŃĐ°"
+ other: "%{count} ПинŃŃи"
+ about_x_hours:
+ one: "ĐžĐşĐžĐťŃ 1 ŃĐ°Ń"
+ other: "ĐžĐşĐžĐťŃ %{count} ŃĐ°ŃĐ°"
+ x_days:
+ one: "1 дон"
+ other: "%{count} дона"
+ about_x_months:
+ one: "ĐžĐşĐžĐťŃ 1 ПоŃĐľŃ"
+ other: "ĐžĐşĐžĐťŃ %{count} ПоŃĐľŃи"
+ x_months:
+ one: "1 ПоŃĐľŃ"
+ other: "%{count} ПоŃĐľŃи"
+ about_x_years:
+ one: "ĐžĐşĐžĐťŃ 1 гОдина"
+ other: "ĐžĐşĐžĐťŃ %{count} гОдини"
+ over_x_years:
+ one: "ĐżŃĐľĐşŃ 1 гОдина"
+ other: "ĐżŃĐľĐşŃ %{count} гОдини"
+ almost_x_years:
+ one: "ŃкОŃĐž 1 гОдина"
+ other: "ŃкОŃĐž %{count} гОдини"
+
+ number:
+ # Default format for numbers
+ format:
+ separator: "."
+ delimiter: ""
+ precision: 3
+ human:
+ format:
+ delimiter: ""
+ precision: 1
+ 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: "и"
+ 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: "но Đľ вкНŃŃонО вО НиŃŃĐ°ŃĐ°"
+ exclusion: "Đľ ŃоСоŃвиŃанО"
+ invalid: "о новаНиднО"
+ confirmation: "но ŃĐľ ŃОвпаŃĐ° ŃĐž пОŃвŃĐ´Đ°ŃĐ°"
+ accepted: "ПОŃĐ° Đ´Đ° Đľ ĐżŃиŃĐ°ŃонО"
+ empty: "ноПОМо Đ´Đ° Đľ ĐżŃаСнО"
+ blank: "ноПОМо Đ´Đ° Đľ ĐżŃаСнО"
+ too_long: "Đľ ĐżŃодОНгО (ПакŃ. %{count} СнаŃи)"
+ too_short: "Đľ ĐżŃокŃĐ°ŃкО (Пин. %{count} СнаŃи)"
+ wrong_length: "Đľ пОгŃĐľŃна дОНМина (ŃŃойа Đ´Đ° Đľ %{count} СнаŃи)"
+ taken: "Đľ воŃĐľ СаŃĐ°ŃонО"
+ not_a_number: "но Đľ ĐąŃĐžŃ"
+ not_a_date: "но Đľ ваНидна Đ´Đ°ŃĐ°"
+ greater_than: "ПОŃĐ° Đ´Đ° Đľ пОгОНоПО Од %{count}"
+ greater_than_or_equal_to: "ПОŃĐ° Đ´Đ° Đľ пОгОНоПО иНи однаквО на %{count}"
+ equal_to: "ПОŃĐ° Đ´Đ° Đľ однаквО на %{count}"
+ less_than: "ПОŃĐ° Đ´Đ° Đľ пОПаНО Од %{count}"
+ less_than_or_equal_to: "ПОŃĐ° Đ´Đ° Đľ пОПаНО иНи однаквО на %{count}"
+ odd: "ПОŃĐ° Đ´Đ° Đľ нопаŃнО"
+ even: "ПОŃĐ° Đ´Đ° Đľ паŃнО"
+ greater_than_start_date: "ПОŃĐ° Đ´Đ° Đľ пОгОНоПа Од пОŃĐľŃнаŃĐ° Đ´Đ°ŃĐ°"
+ not_same_project: "но ĐżŃипаŃĐ° на иŃŃĐ¸ĐžŃ ĐżŃОокŃ"
+ circular_dependency: "Đваа вŃŃка ŃĐľ ĐşŃоиŃĐ° ĐşŃŃМна СавиŃнОŃŃ"
+ cant_link_an_issue_with_a_descendant: "ĐĐ°Đ´Đ°ŃĐ° ноПОМо Đ´Đ° ŃĐľ пОвŃСо ŃĐž одна Од ноŃСиниŃĐľ пОдСадаŃи"
+
+ actionview_instancetag_blank_option: ĐСйоŃĐľŃĐľ
+
+ general_text_No: 'ĐĐľ'
+ general_text_Yes: 'ĐĐ°'
+ general_text_no: 'но'
+ general_text_yes: 'Đ´Đ°'
+ general_lang_name: 'Macedonian (ĐакодОнŃки)'
+ general_csv_separator: ','
+ general_csv_decimal_separator: '.'
+ general_csv_encoding: UTF-8
+ general_pdf_encoding: UTF-8
+ general_first_day_of_week: '1'
+
+ notice_account_updated: ĐŃĐžŃĐ¸ĐťĐžŃ Đľ ŃŃпоŃнО Đ°ĐśŃŃиŃĐ°Đ˝.
+ notice_account_invalid_creditentials: ĐĐľŃĐžŃон кОŃиŃник иНи НОСинка
+ notice_account_password_updated: ĐОСинкаŃĐ° Đľ ŃŃпоŃнО Đ°ĐśŃŃиŃана.
+ notice_account_wrong_password: ĐОгŃĐľŃна НОСинка
+ notice_account_register_done: ĐŃĐžŃĐ¸ĐťĐžŃ Đľ ŃŃпоŃнО ĐşŃоиŃĐ°Đ˝. ĐĐ° Đ°ĐşŃиваŃиŃĐ°, кНкноŃĐľ на вŃŃкаŃĐ° ŃŃĐž ви Đľ ĐżŃĐ°Ńона пО Đľ-пОŃŃĐ°.
+ notice_account_unknown_email: ĐĐľĐżĐžĐˇĐ˝Đ°Ń ĐşĐžŃиŃник.
+ 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: ĐŁŃпоŃнО ĐşŃоиŃĐ°ŃĐľ.
+ notice_successful_update: ĐŁŃпоŃнО Đ°ĐśŃŃиŃĐ°ŃĐľ.
+ notice_successful_delete: ĐŁŃпоŃнО ĐąŃиŃĐľŃĐľ.
+ notice_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_email_sent: "Đ-пОŃака Đľ ĐżŃĐ°Ńона на %{value}"
+ notice_email_error: "ĐĄĐľ ŃĐťŃŃи ĐłŃĐľŃка ĐżŃи ĐżŃĐ°ŃĐ°ŃĐľ на Đľ-пОŃакаŃĐ° (%{value})"
+ notice_feeds_access_key_reseted: ĐĐ°ŃĐ¸ĐžŃ RSS кНŃŃ ĐˇĐ° ĐżŃиŃŃĐ°Đż Đľ reset.
+ notice_api_access_key_reseted: ĐĐ°ŃĐ¸ĐžŃ API кНŃŃ ĐˇĐ° ĐżŃиŃŃĐ°Đż Đľ reset.
+ notice_failed_to_save_issues: "Failed to save %{count} issue(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.
+
+ 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 can not be annotated."
+ 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 can't be deleted."
+ error_can_not_remove_role: "This role is in use and can not be deleted."
+ error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened'
+ error_can_not_archive_project: This project can not 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})"
+ warning_attachments_not_saved: "%{count} file(s) could not be saved."
+
+ mail_subject_lost_password: "ĐĐ°ŃĐ°ŃĐ° %{value} НОСинка"
+ 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: "ĐОв кОŃиŃник (%{value}) Đľ ŃогиŃŃŃиŃĐ°Đ˝. 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 ĐłŃĐľŃка
+ gui_validation_error_plural: "%{count} ĐłŃĐľŃки"
+
+ field_name: ĐПо
+ field_description: ĐпиŃ
+ field_summary: ĐŃĐ°ŃОк ОпиŃ
+ field_is_required: ĐадОНМиŃоНнО
+ field_firstname: ĐПо
+ field_lastname: ĐŃоСиПо
+ field_mail: Đ-пОŃŃĐ°
+ field_filename: ĐĐ°ŃĐžŃока
+ field_filesize: ĐОНоПина
+ field_downloads: ĐŃовСоПаŃĐ°
+ field_author: ĐвŃĐžŃ
+ field_created_on: ĐŃоиŃĐ°Đ˝
+ field_updated_on: ĐĐśŃŃиŃанО
+ field_field_format: ФОŃПаŃ
+ field_is_for_all: ĐĐ° ŃиŃĐľ ĐżŃОокŃи
+ field_possible_values: ĐОМни вŃоднОŃŃи
+ field_regexp: Regular expression
+ field_min_length: ĐиниПаНна дОНМина
+ field_max_length: ĐĐ°ĐşŃиПаНна дОНМина
+ field_value: ĐŃоднОŃŃ
+ field_category: ĐĐ°ŃогОŃиŃĐ°
+ field_title: ĐĐ°ŃНОв
+ field_project: ĐŃОокŃ
+ field_issue: ĐĐ°Đ´Đ°ŃĐ°
+ field_status: ĐĄŃĐ°ŃŃŃ
+ field_notes: ĐоНоŃки
+ field_is_closed: ĐĐ°Đ´Đ°ŃĐ°ŃĐ° Đľ СаŃвОŃона
+ field_is_default: Default value
+ field_tracker: Tracker
+ field_subject: ĐĐ°ŃНОв
+ field_due_date: ĐŃаон ŃОк
+ field_assigned_to: ĐОдоНона на
+ field_priority: ĐŃиОŃиŃĐľŃ
+ field_fixed_version: Target version
+ field_user: ĐĐžŃиŃник
+ field_principal: Principal
+ field_role: УНОга
+ field_homepage: Đой ŃŃŃана
+ field_is_public: Đавон
+ field_parent: ĐОдпŃĐžĐľĐşŃ Đ˝Đ°
+ field_is_in_roadmap: Issues displayed in roadmap
+ field_login: ĐĐžŃиŃник
+ field_mail_notification: ĐСвоŃŃŃваŃĐ° пО e-пОŃŃĐ°
+ field_admin: ĐдПиниŃŃŃĐ°ŃĐžŃ
+ field_last_login_on: ĐĐžŃНодна наŃава
+ field_language: ĐаСик
+ field_password: ĐОСинка
+ field_new_password: ĐОва НОСинка
+ field_password_confirmation: ĐĐžŃвŃĐ´Đ°
+ field_version: ĐĐľŃСиŃĐ°
+ field_type: Тип
+ field_host: ĐĽĐžŃŃ
+ field_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) ĐşŃоиŃĐ°ŃĐľ на кОŃиŃниŃи
+ field_start_date: ĐĐžŃĐľŃОк
+ field_done_ratio: "% ĐавŃŃонО"
+ field_auth_source: РоМиП на авŃонŃикаŃиŃĐ°
+ field_hide_mail: ĐŃĐ¸Ń ŃĐ° ПОŃĐ°ŃĐ° Đ°Đ´ŃĐľŃĐ° на Đľ-пОŃŃĐ°
+ field_comments: ĐОПонŃĐ°Ń
+ field_url: URL
+ field_start_page: ĐĐžŃĐľŃна ŃŃŃана
+ field_subproject: ĐОдпŃОокŃ
+ field_hours: ЧаŃОви
+ field_activity: ĐĐşŃивнОŃŃ
+ field_spent_on: ĐĐ°ŃĐ°
+ field_identifier: ĐдонŃиŃикаŃĐžŃ
+ field_is_filter: ĐĐžŃиŃŃи какО ŃиНŃĐľŃ
+ field_issue_to: ĐОвŃСана СадаŃĐ°
+ field_delay: ĐĐžŃноŃĐľ
+ field_assignable: ĐĐ° Оваа ŃНОга ПОМо Đ´Đ° ŃĐľ дОдоНŃĐ˛Đ°Đ°Ń ĐˇĐ°Đ´Đ°Ńи
+ field_redirect_existing_links: ĐŃонаŃĐžŃи ги пОŃŃОоŃкиŃĐľ вŃŃки
+ field_estimated_hours: ĐŃĐžŃоноŃĐž вŃоПо
+ field_column_names: ĐОНОни
+ field_time_entries: ĐоНоМи вŃоПо
+ field_time_zone: ĐŃоПонŃка СОна
+ field_searchable: ĐОМо Đ´Đ° ŃĐľ ĐżŃойаŃŃва
+ field_default_value: Default value
+ field_comments_sorting: ĐŃикаМŃĐ˛Đ°Ń ĐşĐžĐźĐľĐ˝ŃĐ°Ńи
+ field_parent_title: Parent page
+ field_editable: ĐОМо Đ´Đ° ŃĐľ ŃŃодŃва
+ field_watcher: Watcher
+ field_identity_url: OpenID URL
+ field_content: ХОдŃМина
+ field_group_by: ĐŃŃпиŃĐ°Ń ĐłĐ¸ ŃоСŃĐťŃĐ°ŃиŃĐľ ŃпОŃод
+ field_sharing: ХпОдоНŃваŃĐľ
+ field_parent_issue: Parent task
+
+ setting_app_title: ĐĐ°ŃНОв на апНикаŃиŃĐ°ŃĐ°
+ setting_app_subtitle: ĐОднаŃНОв на апНикаŃиŃĐ°ŃĐ°
+ setting_welcome_text: ТокŃŃ ĐˇĐ° дОйŃодОŃĐ´Đľ
+ setting_default_language: Default ŃаСик
+ setting_login_required: ĐадОНМиŃоНна авŃонŃикаŃиŃĐ°
+ setting_self_registration: ХаПО-ŃогиŃŃŃĐ°ŃиŃĐ°
+ setting_attachment_max_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: ТокŃŃŃаНни Đľ-пОŃаки (йоС HTML)
+ setting_host_name: ĐПо на Ń
ĐžŃŃ Đ¸ паŃока
+ setting_text_formatting: ФОŃПаŃиŃĐ°ŃĐľ на ŃокŃŃ
+ setting_wiki_compression: ĐОПпŃĐľŃиŃĐ° на иŃŃĐžŃиŃĐ°ŃĐ° на вики
+ setting_feeds_limit: Feed content limit
+ setting_default_projects_public: ĐОвиŃĐľ ĐżŃОокŃи ŃĐľ иниŃиŃаНнО Ńавни
+ setting_autofetch_changesets: Autofetch commits
+ setting_sys_api_enabled: Enable WS for repository management
+ setting_commit_ref_keywords: Referencing keywords
+ setting_commit_fix_keywords: Fixing keywords
+ setting_autologin: ĐвŃОПаŃŃка наŃава
+ setting_date_format: ФОŃĐźĐ°Ń Đ˝Đ° Đ´Đ°ŃĐ°
+ setting_time_format: ФОŃĐźĐ°Ń Đ˝Đ° вŃоПо
+ setting_cross_project_issue_relations: ĐОСвОНи ŃоНаŃии на СадаŃи ПоŃŃ ĐżŃОокŃи
+ setting_issue_list_default_columns: Default columns displayed on the issue list
+ setting_repositories_encodings: Repositories encodings
+ setting_commit_logs_encoding: Commit messages encoding
+ setting_emails_footer: Emails footer
+ setting_protocol: ĐŃĐžŃОкОН
+ setting_per_page_options: Objects per page options
+ setting_user_format: ĐŃикаС на кОŃиŃниŃиŃĐľ
+ setting_activity_days_default: ĐонОви ĐżŃикаМана вО Đ°ĐşŃивнОŃŃĐ° на ĐżŃОокŃĐžŃ
+ setting_display_subprojects_issues: ĐŃикаМи ги СадаŃиŃĐľ на пОдпŃОокŃиŃĐľ вО гНавниŃĐľ ĐżŃОокŃи
+ setting_enabled_scm: ĐвОСПОМи 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 кНŃŃ
+ setting_sequential_project_identifiers: ĐоноŃиŃĐ°Ń ĐżĐžŃНодОваŃоНни идонŃиŃикаŃĐžŃи на ĐżŃОокŃи
+ setting_gravatar_enabled: ĐĐžŃиŃŃи Gravatar кОŃиŃниŃки икОни
+ setting_gravatar_default: Default Gravatar image
+ setting_diff_max_lines_displayed: Max number of diff lines displayed
+ setting_file_max_size_displayed: Max size of text files displayed inline
+ setting_repository_log_display_limit: Maximum number of revisions displayed on file log
+ setting_openid: ĐОСвОНи OpenID наŃава и ŃогиŃŃŃĐ°ŃиŃĐ°
+ setting_password_min_length: Đин. дОНМина на НОСинка
+ setting_new_project_user_role_id: УНОга дОдоНона на ноадПиниŃŃŃĐ°ŃĐžŃŃки кОŃиŃник ĐşĐžŃ ĐşŃоиŃĐ° ĐżŃОокŃ
+ 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
+
+ permission_add_project: ĐŃоиŃĐ°Ń ĐżŃОокŃи
+ permission_add_subprojects: ĐŃоиŃĐ°Ń ĐżĐžĐ´ĐżŃОокŃи
+ permission_edit_project: ĐŁŃоди ĐżŃОокŃ
+ permission_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: ĐŃĐľĐłĐťĐľĐ´Đ°Ń ĐˇĐ°Đ´Đ°Ńи
+ permission_add_issues: ĐĐžĐ´Đ°Đ˛Đ°Ń ĐˇĐ°Đ´Đ°Ńи
+ permission_edit_issues: ĐŁŃодŃĐ˛Đ°Ń ĐˇĐ°Đ´Đ°Ńи
+ permission_manage_issue_relations: Manage issue relations
+ permission_add_issue_notes: ĐĐžĐ´Đ°Đ˛Đ°Ń ĐąĐľĐťĐľŃки
+ permission_edit_issue_notes: ĐŁŃодŃĐ˛Đ°Ń ĐąĐľĐťĐľŃки
+ permission_edit_own_issue_notes: ĐŁŃодŃĐ˛Đ°Ń ŃОпŃŃвони йоНоŃки
+ permission_move_issues: ĐŃоПоŃŃŃĐ˛Đ°Ń ĐˇĐ°Đ´Đ°Ńи
+ permission_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: ĐоНоМи пОŃŃĐžŃонО вŃоПо
+ permission_view_time_entries: ĐŃĐľĐłĐťĐľĐ´Đ°Ń ĐżĐžŃŃĐžŃонО вŃоПо
+ permission_edit_time_entries: ĐŁŃодŃĐ˛Đ°Ń ĐąĐľĐťĐľŃки Са пОŃŃĐžŃонО вŃоПо
+ permission_edit_own_time_entries: ĐŁŃодŃĐ˛Đ°Ń ŃОпŃŃвони йоНоŃки Са пОŃŃĐžŃонО вŃоПо
+ permission_manage_news: Manage news
+ permission_comment_news: ĐОПонŃиŃĐ°Ń Đ˝Đ° воŃŃи
+ permission_manage_documents: Manage documents
+ permission_view_documents: ĐŃогНодŃĐ˛Đ°Ń Đ´ĐžĐşŃПонŃи
+ permission_manage_files: Manage files
+ permission_view_files: ĐŃогНодŃĐ˛Đ°Ń Đ´Đ°ŃĐžŃоки
+ permission_manage_wiki: Manage wiki
+ permission_rename_wiki_pages: ĐŃоиПонŃĐ˛Đ°Ń Đ˛Đ¸ĐşĐ¸ ŃŃŃаниŃи
+ permission_delete_wiki_pages: ĐŃиŃи вики ŃŃŃаниŃи
+ permission_view_wiki_pages: ĐŃогНодŃĐ˛Đ°Ń Đ˛Đ¸ĐşĐ¸
+ permission_view_wiki_edits: ĐŃогНодŃĐ˛Đ°Ń Đ˛Đ¸ĐşĐ¸ иŃŃĐžŃиŃĐ°
+ permission_edit_wiki_pages: ĐŁŃодŃĐ˛Đ°Ń Đ˛Đ¸ĐşĐ¸ ŃŃŃаниŃи
+ permission_delete_wiki_pages_attachments: ĐŃиŃи ĐżŃиНОСи
+ permission_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 boards
+ permission_view_messages: View messages
+ permission_add_messages: Post messages
+ permission_edit_messages: ĐŁŃодŃĐ˛Đ°Ń ĐżĐžŃаки
+ permission_edit_own_messages: ĐŁŃодŃĐ˛Đ°Ń ŃОпŃŃвони пОŃаки
+ permission_delete_messages: ĐŃиŃи пОŃаки
+ permission_delete_own_messages: ĐŃиŃи ŃОпŃŃвони пОŃаки
+ permission_export_wiki_pages: Export wiki pages
+ permission_manage_subtasks: Manage subtasks
+
+ project_module_issue_tracking: ХНодоŃĐľ на СадаŃи
+ project_module_time_tracking: ХНодоŃĐľ на вŃоПо
+ project_module_news: ĐĐľŃŃи
+ project_module_documents: ĐОкŃПонŃи
+ project_module_files: ĐĐ°ŃĐžŃоки
+ project_module_wiki: Đики
+ project_module_repository: Repository
+ project_module_boards: ФОŃŃПи
+ project_module_calendar: ĐаНондаŃ
+ project_module_gantt: Gantt
+
+ label_user: ĐĐžŃиŃник
+ label_user_plural: ĐĐžŃиŃниŃи
+ label_user_new: ĐОв кОŃиŃник
+ label_user_anonymous: ĐнОниПон
+ label_project: ĐŃОокŃ
+ label_project_new: ĐОв ĐżŃОокŃ
+ label_project_plural: ĐŃОокŃи
+ label_x_projects:
+ zero: ноПа ĐżŃОокŃи
+ one: 1 ĐżŃОокŃ
+ other: "%{count} ĐżŃОокŃи"
+ label_project_all: ХиŃĐľ ĐżŃОокŃи
+ label_project_latest: ĐĐžŃНодниŃĐľ ĐżŃОокŃи
+ label_issue: ĐĐ°Đ´Đ°ŃĐ°
+ label_issue_new: ĐОва СадаŃĐ°
+ label_issue_plural: ĐĐ°Đ´Đ°Ńи
+ label_issue_view_all: ĐŃĐľĐłĐťĐľĐ´Đ°Ń ĐłĐ¸ ŃиŃĐľ СадаŃи
+ label_issues_by: "ĐĐ°Đ´Đ°Ńи пО %{value}"
+ label_issue_added: ĐĐ°Đ´Đ°ŃĐ°ŃĐ° Đľ дОдадона
+ label_issue_updated: ĐĐ°Đ´Đ°ŃĐ°ŃĐ° Đľ Đ°ĐśŃŃиŃана
+ label_document: ĐОкŃПонŃ
+ label_document_new: ĐОв дОкŃПонŃ
+ label_document_plural: ĐОкŃПонŃи
+ label_document_added: ĐОкŃПонŃĐžŃ Đľ дОдадон
+ label_role: УНОга
+ label_role_plural: УНОги
+ label_role_new: ĐОва ŃНОга
+ label_role_and_permissions: УНОги и ОвНаŃŃŃваŃĐ°
+ label_member: ЧНон
+ label_member_new: ĐОв ŃНон
+ label_member_plural: ЧНонОви
+ label_tracker: Tracker
+ label_tracker_plural: Trackers
+ label_tracker_new: New tracker
+ label_workflow: Workflow
+ label_issue_status: ĐĄŃĐ°ŃŃŃ Đ˝Đ° СадаŃĐ°
+ label_issue_status_plural: ĐĄŃĐ°ŃŃŃи на СадаŃи
+ label_issue_status_new: ĐОв ŃŃĐ°ŃŃŃ
+ label_issue_category: ĐĐ°ŃогОŃиŃĐ° на СадаŃĐ°
+ label_issue_category_plural: ĐĐ°ŃогОŃии на СадаŃи
+ label_issue_category_new: ĐОва каŃогОŃиŃĐ°
+ label_custom_field: ĐŃиНагОдонО пОНо
+ label_custom_field_plural: ĐŃиНагОдони пОНиŃĐ°
+ label_custom_field_new: ĐОвО ĐżŃиНагОдонО пОНо
+ label_enumerations: Enumerations
+ label_enumeration_new: ĐОва вŃоднОŃŃ
+ label_information: ĐĐ˝ŃĐžŃПаŃиŃĐ°
+ label_information_plural: ĐĐ˝ŃĐžŃПаŃии
+ label_please_login: ĐĐ°Ńави ŃĐľ
+ label_register: РогиŃŃŃиŃĐ°Ń ŃĐľ
+ label_login_with_open_id_option: иНи наŃави ŃĐľ ŃĐž OpenID
+ label_password_lost: ĐСгŃйона НОСинка
+ label_home: ĐĐžŃĐľŃна
+ label_my_page: ĐĐžŃĐ°ŃĐ° ŃŃŃана
+ label_my_account: ĐĐžŃĐžŃ ĐżŃĐžŃиН
+ label_my_projects: ĐОи ĐżŃОокŃи
+ label_my_page_block: ĐНОк оНоПонŃ
+ label_administration: ĐдПиниŃŃŃĐ°ŃиŃĐ°
+ label_login: ĐĐ°Ńави ŃĐľ
+ label_logout: ĐĐ´Ńави ŃĐľ
+ label_help: ĐОПОŃ
+ label_reported_issues: ĐŃиŃавони СадаŃи
+ label_assigned_to_me_issues: ĐĐ°Đ´Đ°Ńи дОдоНони на Поно
+ label_last_login: ĐĐžŃНодна наŃава
+ label_registered_on: РогиŃŃŃиŃĐ°Đ˝ на
+ label_activity: ĐĐşŃивнОŃŃ
+ label_overall_activity: ХовкŃпна Đ°ĐşŃивнОŃŃ
+ label_user_activity: "ĐĐşŃивнОŃŃ Đ˝Đ° %{value}"
+ label_new: ĐОва
+ label_logged_as: ĐĐ°Ńавони ŃŃĐľ какО
+ label_environment: ĐпкŃŃĐśŃваŃĐľ
+ label_authentication: ĐвŃонŃикаŃиŃĐ°
+ label_auth_source: РоМиП на авŃонŃикаŃиŃĐ°
+ label_auth_source_new: ĐОв ŃоМиП на авŃонŃикаŃиŃĐ°
+ label_auth_source_plural: РоМиПи на авŃонŃикаŃиŃĐ°
+ label_subproject_plural: ĐОдпŃОокŃи
+ label_subproject_new: ĐОв пОдпŃОокŃ
+ label_and_its_subprojects: "%{value} и ногОвиŃĐľ пОдпŃОокŃи"
+ label_min_max_length: Đин. - ĐĐ°ĐşŃ. дОНМина
+ label_list: ĐиŃŃĐ°
+ label_date: ĐĐ°ŃĐ°
+ label_integer: Integer
+ label_float: Float
+ label_boolean: Boolean
+ label_string: ТокŃŃ
+ label_text: ĐОНг ŃокŃŃ
+ label_attribute: ĐŃŃийŃŃ
+ label_attribute_plural: ĐŃŃийŃŃи
+ label_download: "%{count} ĐżŃовСоПаŃĐľ"
+ label_download_plural: "%{count} ĐżŃовСоПаŃĐ°"
+ label_no_data: ĐоПа пОдаŃĐžŃи Са ĐżŃикаМŃваŃĐľ
+ label_change_status: ĐŃОПони ŃŃĐ°ŃŃŃ
+ label_history: ĐŃŃĐžŃиŃĐ°
+ label_attachment: ĐĐ°ŃĐžŃока
+ label_attachment_new: ĐОва Đ´Đ°ŃĐžŃока
+ label_attachment_delete: ĐСйŃиŃи Đ´Đ°ŃĐžŃока
+ label_attachment_plural: ĐĐ°ŃĐžŃоки
+ label_file_added: ĐĐ°ŃĐžŃокаŃĐ° Đľ дОдадона
+ label_report: ĐСвоŃŃĐ°Ń
+ label_report_plural: ĐСвоŃŃаи
+ label_news: ĐОвОŃŃ
+ label_news_new: ĐОдади нОвОŃŃ
+ label_news_plural: ĐОвОŃŃи
+ label_news_latest: ĐĐžŃНодни нОвОŃŃи
+ label_news_view_all: ĐŃĐľĐłĐťĐľĐ´Đ°Ń ĐłĐ¸ ŃиŃĐľ нОвОŃŃи
+ label_news_added: ĐОвОŃŃŃĐ° Đľ дОдадона
+ label_settings: Settings
+ label_overview: ĐŃогНод
+ label_version: ĐĐľŃСиŃĐ°
+ label_version_new: ĐОва воŃСиŃĐ°
+ label_version_plural: ĐĐľŃСии
+ label_close_versions: ĐĐ°ŃвОŃи ги СавŃŃониŃĐľ вŃСии
+ label_confirmation: ĐĐžŃвŃĐ´Đ°
+ label_export_to: 'ĐĐžŃŃапнО и вО:'
+ label_read: ĐŃĐžŃиŃĐ°Ń...
+ label_public_projects: Đавни ĐżŃОокŃи
+ label_open_issues: ĐžŃвОŃона
+ label_open_issues_plural: ĐžŃвОŃони
+ label_closed_issues: СаŃвОŃона
+ label_closed_issues_plural: СаŃвОŃони
+ label_x_open_issues_abbr_on_total:
+ zero: 0 ĐžŃвОŃони / %{total}
+ one: 1 ĐžŃвОŃона / %{total}
+ other: "%{count} ĐžŃвОŃони / %{total}"
+ label_x_open_issues_abbr:
+ zero: 0 ĐžŃвОŃони
+ one: 1 ĐžŃвОŃона
+ other: "%{count} ĐžŃвОŃони"
+ label_x_closed_issues_abbr:
+ zero: 0 СаŃвОŃони
+ one: 1 СаŃвОŃона
+ other: "%{count} СаŃвОŃони"
+ label_total: ĐĐşŃпнО
+ label_permissions: ĐвНаŃŃŃваŃĐ°
+ label_current_status: ĐОПонŃаНон ŃŃĐ°ŃŃŃ
+ label_new_statuses_allowed: ĐОСвОНони нОви ŃŃĐ°ŃŃŃи
+ label_all: ŃиŃĐľ
+ label_none: ниодон
+ label_nobody: никОŃ
+ label_next: ХНоднО
+ label_previous: ĐŃĐľŃŃ
ОднО
+ label_used_by: ĐĐžŃиŃŃонО Од
+ label_details: ĐĐľŃаНи
+ label_add_note: ĐОдади йоНоŃка
+ label_per_page: ĐĐž ŃŃŃана
+ label_calendar: ĐаНондаŃ
+ label_months_from: ПоŃĐľŃи Од
+ label_gantt: Gantt
+ label_internal: Internal
+ label_last_changes: "пОŃНодни %{count} ĐżŃОПони"
+ label_change_view_all: ĐŃĐľĐłĐťĐľĐ´Đ°Ń ĐłĐ¸ ŃиŃĐľ ĐżŃОПони
+ label_personalize_page: ĐŃиНагОди ŃĐ° ŃŃŃанава
+ label_comment: ĐОПонŃĐ°Ń
+ label_comment_plural: ĐОПонŃĐ°Ńи
+ label_x_comments:
+ zero: ноПа кОПонŃĐ°Ńи
+ one: 1 кОПонŃĐ°Ń
+ other: "%{count} кОПонŃĐ°Ńи"
+ label_comment_add: ĐОдади кОПонŃĐ°Ń
+ label_comment_added: ĐОПонŃĐ°ŃĐžŃ Đľ дОдадон
+ label_comment_delete: ĐСйŃиŃи кОПонŃĐ°Ńи
+ label_query: Custom query
+ label_query_plural: Custom queries
+ label_query_new: New query
+ label_filter_add: ĐОдади ŃиНŃĐľŃ
+ label_filter_plural: ФиНŃŃи
+ label_equals: Đľ
+ label_not_equals: но о
+ label_in_less_than: Са ĐżĐžĐźĐ°ĐťĐşŃ ĐžĐ´
+ label_in_more_than: Са пОвоŃĐľ Од
+ label_greater_or_equal: '>='
+ label_less_or_equal: '<='
+ label_in: вО
+ label_today: доноŃ
+ label_all_time: ŃоНО вŃоПо
+ label_yesterday: вŃĐľŃĐ°
+ label_this_week: Оваа нодоНа
+ label_last_week: ПинаŃĐ°ŃĐ° нодоНа
+ label_last_n_days: "пОŃНодниŃĐľ %{count} дона"
+ label_this_month: ĐžĐ˛ĐžŃ ĐźĐľŃĐľŃ
+ label_last_month: ПинаŃĐ¸ĐžŃ ĐźĐľŃĐľŃ
+ label_this_year: Оваа гОдина
+ label_date_range: Date range
+ label_less_than_ago: ĐżŃод ĐżĐžĐźĐ°ĐťĐşŃ ĐžĐ´ донОви
+ label_more_than_ago: ĐżŃод пОвоŃĐľ Од донОви
+ label_ago: ĐżŃод донОви
+ label_contains: ŃОдŃМи
+ label_not_contains: но ŃОдŃМи
+ label_day_plural: донОви
+ label_repository: ХкНадиŃŃĐľ
+ label_repository_plural: ХкНадиŃŃĐ°
+ label_browse: ĐŃоНиŃŃŃваŃ
+ label_modification: "%{count} ĐżŃОПони"
+ label_modification_plural: "%{count} ĐżŃОПони"
+ label_branch: ĐŃанка
+ label_tag: Tag
+ label_revision: РовиСиŃĐ°
+ label_revision_plural: РовиСии
+ label_revision_id: "РовиСиŃĐ° %{value}"
+ label_associated_revisions: Associated revisions
+ label_added: added
+ label_modified: modified
+ label_copied: copied
+ label_renamed: renamed
+ label_deleted: deleted
+ label_latest_revision: ĐĐžŃНодна ŃовиСиŃĐ°
+ label_latest_revision_plural: ĐĐžŃНодни ŃовиСии
+ label_view_revisions: ĐŃĐľĐłĐťĐľĐ´Đ°Ń ĐłĐ¸ ŃовиСииŃĐľ
+ label_view_all_revisions: ĐŃĐľĐłĐťĐľĐ´Đ°Ń ĐłĐ¸ ŃиŃĐľ ŃовиСии
+ label_max_size: ĐĐ°ĐşŃ. гОНоПина
+ label_sort_highest: ĐŃоПоŃŃи наŃгОŃĐľ
+ label_sort_higher: ĐŃоПоŃŃи нагОŃĐľ
+ label_sort_lower: ĐŃоПоŃŃи надОНо
+ label_sort_lowest: ĐŃоПоŃŃи наŃдОНо
+ label_roadmap: Roadmap
+ label_roadmap_due_in: "Due in %{value}"
+ label_roadmap_overdue: "ĐĐ°Ńни %{value}"
+ label_roadmap_no_issues: ĐоПа СадаŃи Са Оваа воŃСиŃĐ°
+ label_search: ĐĐ°ŃĐ°Ń
+ label_result_plural: РоСŃĐťŃĐ°Ńи
+ label_all_words: ХиŃĐľ СйОŃОви
+ label_wiki: Đики
+ label_wiki_edit: Đики ŃŃодŃваŃĐľ
+ label_wiki_edit_plural: Đики ŃŃодŃваŃĐ°
+ label_wiki_page: Đики ŃŃŃаниŃĐ°
+ label_wiki_page_plural: Đики ŃŃŃаниŃи
+ label_index_by_title: ĐĐ˝Đ´ĐľĐşŃ ĐżĐž наŃНОв
+ label_index_by_date: ĐĐ˝Đ´ĐľĐşŃ ĐżĐž Đ´Đ°ŃĐ°
+ label_current_version: Current version
+ label_preview: Preview
+ label_feed_plural: Feeds
+ label_changes_details: ĐĐľŃаНи Са ŃиŃĐľ ĐżŃОПони
+ label_issue_tracking: ХНодоŃĐľ на СадаŃи
+ label_spent_time: ĐĐžŃŃĐžŃонО вŃоПо
+ label_overall_spent_time: ĐĐşŃпнО пОŃŃĐžŃонО вŃоПо
+ label_f_hour: "%{value} ŃĐ°Ń"
+ label_f_hour_plural: "%{value} ŃĐ°ŃĐ°"
+ label_time_tracking: ХНодоŃĐľ на вŃоПо
+ label_change_plural: ĐŃОПони
+ label_statistics: ĐĄŃĐ°ŃиŃŃики
+ label_commits_per_month: Commits per month
+ label_commits_per_author: Commits per author
+ label_view_diff: View differences
+ label_diff_inline: inline
+ label_diff_side_by_side: side by side
+ label_options: ĐĐżŃии
+ label_copy_workflow_from: Copy workflow from
+ label_permissions_report: Permissions report
+ label_watched_issues: Watched issues
+ label_related_issues: ĐОвŃСани СадаŃи
+ label_applied_status: Applied status
+ label_loading: Loading...
+ label_relation_new: ĐОва ŃоНаŃиŃĐ°
+ label_relation_delete: ĐСйŃиŃи ŃоНаŃиŃĐ°
+ label_relates_to: related to
+ label_duplicates: Đ´ŃпНикаŃи
+ label_duplicated_by: duplicated by
+ label_blocks: blocks
+ label_blocked_by: йНОкиŃанО Од
+ label_precedes: ĐżŃĐľŃŃ
Оди
+ label_follows: ŃНоди
+ label_end_to_start: ĐşŃĐ°Ń Đ´Đž пОŃĐľŃОк
+ label_end_to_end: ĐşŃĐ°Ń Đ´Đž ĐşŃĐ°Ń
+ label_start_to_start: пОŃĐľŃОк Đ´Đž пОŃĐľŃОк
+ label_start_to_end: пОŃĐľŃОк Đ´Đž ĐşŃĐ°Ń
+ label_stay_logged_in: ĐŃŃаноŃĐľ наŃавони
+ label_disabled: disabled
+ label_show_completed_versions: Show completed versions
+ label_me: ŃĐ°Ń
+ label_board: ФОŃŃĐź
+ label_board_new: ĐОв ŃĐžŃŃĐź
+ label_board_plural: ФОŃŃПи
+ label_board_locked: ĐакНŃŃон
+ label_board_sticky: Sticky
+ label_topic_plural: ТоПи
+ label_message_plural: ĐĐžŃаки
+ label_message_last: ĐĐžŃНодна пОŃака
+ label_message_new: ĐОва пОŃака
+ label_message_posted: ĐĐžŃакаŃĐľ Đľ дОдадона
+ label_reply_plural: ĐдгОвОŃи
+ label_send_information: ĐŃĐżŃĐ°Ńи ги инŃĐžŃПаŃииŃĐľ Са ĐżŃĐžŃĐ¸ĐťĐžŃ Đ˝Đ° кОŃиŃникОŃ
+ label_year: ĐОдина
+ label_month: ĐĐľŃĐľŃ
+ label_week: ĐодоНа
+ label_date_from: ĐĐ´
+ label_date_to: ĐĐž
+ label_language_based: ХпОŃод ŃĐ°ĐˇĐ¸ĐşĐžŃ Đ˝Đ° кОŃиŃникОŃ
+ label_sort_by: "ĐОдŃоди ŃпОŃод %{value}"
+ label_send_test_email: ĐŃĐżŃĐ°Ńи ŃĐľŃŃ Đľ-пОŃака
+ label_feeds_access_key: RSS кНŃŃ ĐˇĐ° ĐżŃиŃŃĐ°Đż
+ label_missing_feeds_access_key: ĐодОŃŃика RSS кНŃŃ ĐˇĐ° ĐżŃиŃŃĐ°Đż
+ label_feeds_access_key_created_on: "RSS кНŃŃĐžŃ ĐˇĐ° ĐżŃиŃŃĐ°Đż ĐşŃоиŃĐ°Đ˝ ĐżŃод %{value}"
+ label_module_plural: ĐОдŃНи
+ label_added_time_by: "ĐОдадонО Од %{author} ĐżŃод %{age}"
+ label_updated_time_by: "ĐĐśŃŃиŃанО Од %{author} ĐżŃод %{age}"
+ label_updated_time: "ĐĐśŃŃиŃанО ĐżŃод %{value}"
+ label_jump_to_a_project: ĐŃĐľŃŃНи ŃĐľ на ĐżŃОокŃ...
+ label_file_plural: ĐĐ°ŃĐžŃоки
+ label_changeset_plural: Changesets
+ label_default_columns: ĐŃнОвни кОНОни
+ label_no_change_option: (ĐоС ĐżŃОПона)
+ label_bulk_edit_selected_issues: ĐŃŃпнО ŃŃодŃваŃĐľ на СадаŃи
+ label_theme: ТоПа
+ label_default: Default
+ label_search_titles_only: ĐŃойаŃŃĐ˛Đ°Ń ŃаПО наŃНОви
+ label_user_mail_option_all: "ĐĐ° йиНО ĐşĐžŃ Đ˝Đ°ŃŃĐ°Đ˝ вО ŃиŃĐľ ПОи ĐżŃОокŃи"
+ label_user_mail_option_selected: "ĐĐ° йиНО ĐşĐžŃ Đ˝Đ°ŃŃĐ°Đ˝ ŃаПО вО иСйŃаниŃĐľ ĐżŃОокŃи..."
+ label_user_mail_no_self_notified: "ĐĐľ По иСвоŃŃŃĐ˛Đ°Ń ĐˇĐ° ĐżŃОПониŃĐľ ŃŃĐž ŃĐ°Ń ĐłĐ¸ ĐżŃаваП"
+ label_registration_activation_by_email: Đ°ĐşŃиваŃиŃĐ° на ĐżŃĐžŃиН ĐżŃĐľĐşŃ Đľ-пОŃŃĐ°
+ label_registration_manual_activation: ПанŃоНна Đ°ĐşŃиваŃиŃĐ° на ĐżŃĐžŃиН
+ label_registration_automatic_activation: авŃОПаŃŃка Đ°ĐşŃиваŃиŃĐ° на ĐżŃĐžŃиН
+ label_display_per_page: "ĐĐž ŃŃŃана: %{value}"
+ label_age: Age
+ label_change_properties: Change properties
+ label_general: ĐĐżŃŃĐž
+ label_more: ĐОвоŃĐľ
+ label_scm: SCM
+ label_plugins: ĐОдаŃĐžŃи
+ label_ldap_authentication: LDAP авŃонŃикаŃиŃĐ°
+ label_downloads_abbr: ĐŃовСоПаŃĐ°
+ label_optional_description: ĐĐżĐ¸Ń (ноСадОНМиŃоНнО)
+ label_add_another_file: ĐОдади ŃŃŃĐľ одна Đ´Đ°ŃĐžŃока
+ label_preferences: Preferences
+ label_chronological_order: ĐĐž Ń
ŃОнОНОŃки Ńод
+ label_reverse_chronological_order: In reverse chronological order
+ label_planning: ĐНаниŃĐ°ŃĐľ
+ label_incoming_emails: ĐĐžŃдОвни Đľ-пОŃаки
+ label_generate_key: ĐоноŃиŃĐ°Ń ĐşĐťŃŃ
+ label_issue_watchers: Watchers
+ label_example: ĐŃиПоŃ
+ label_display: ĐŃикаМи
+ label_sort: ĐОдŃоди
+ label_ascending: Đ Đ°ŃŃĐľŃки
+ label_descending: ĐпаŃĐ°Ńки
+ label_date_from_to: ĐĐ´ %{start} Đ´Đž %{end}
+ label_wiki_content_added: Đики ŃŃŃаниŃĐ° дОдадона
+ label_wiki_content_updated: Đики ŃŃŃаниŃĐ° Đ°ĐśŃŃиŃана
+ label_group: ĐŃŃпа
+ label_group_plural: ĐŃŃпи
+ label_group_new: ĐОва ĐłŃŃпа
+ label_time_entry_plural: ĐĐžŃŃĐžŃонО вŃоПо
+ label_version_sharing_none: ĐĐľ ŃпОдоНонО
+ label_version_sharing_descendants: ĐĄĐž ŃиŃĐľ пОдпŃОокŃи
+ label_version_sharing_hierarchy: ĐĄĐž Ń
иоŃĐ°ŃŃ
иŃĐ°ŃĐ° на ĐżŃОокŃĐžŃ
+ label_version_sharing_tree: ĐĄĐž Đ´ŃвОŃĐž на ĐżŃОокŃĐžŃ
+ label_version_sharing_system: ĐĄĐž ŃиŃĐľ ĐżŃОокŃи
+ label_update_issue_done_ratios: Update issue done ratios
+ label_copy_source: ĐСвОŃ
+ label_copy_target: ĐĐľŃŃинаŃиŃĐ°
+ label_copy_same_as_target: ĐŃŃĐž какО Đ´ĐľŃŃинаŃиŃĐ°ŃĐ°
+ label_display_used_statuses_only: Only display statuses that are used by this tracker
+ label_api_access_key: API кНŃŃ ĐˇĐ° ĐżŃиŃŃĐ°Đż
+ label_missing_api_access_key: ĐодОŃŃига API кНŃŃ ĐˇĐ° ĐżŃиŃŃĐ°Đż
+ label_api_access_key_created_on: "API кНŃŃĐžŃ ĐˇĐ° ĐżŃиŃŃĐ°Đż Đľ ĐşŃоиŃĐ°Đ˝ ĐżŃод %{value}"
+ label_profile: ĐŃĐžŃиН
+ label_subtask_plural: ĐОдСадаŃи
+ label_project_copy_notifications: ĐŃĐ°ŃĐ°Ń Đ¸ĐˇĐ˛ĐľŃŃŃваŃĐ° пО Đľ-пОŃŃĐ° ĐżŃи кОпиŃĐ°ŃĐľ на ĐżŃОокŃ
+
+ button_login: ĐĐ°Ńави ŃĐľ
+ button_submit: ĐŃĐżŃĐ°Ńи
+ button_save: ĐĐ°ŃŃваŃ
+ button_check_all: ШŃикНиŃĐ°Ń ĐłĐ¸ ŃиŃĐľ
+ button_uncheck_all: ĐĐ´ŃŃикНиŃĐ°Ń ĐłĐ¸ ŃиŃĐľ
+ button_delete: ĐСйŃиŃи
+ button_create: ĐŃоиŃĐ°Ń
+ button_create_and_continue: ĐŃоиŃĐ°Ń Đ¸ ĐżŃОдОНМи
+ button_test: ТоŃŃ
+ button_edit: ĐŁŃоди
+ button_add: ĐОдади
+ button_change: ĐŃОПони
+ button_apply: ĐŃиПони
+ button_clear: ĐСйŃиŃи
+ button_lock: ĐакНŃŃи
+ button_unlock: ĐŃкНŃŃи
+ button_download: ĐŃовСоПи
+ button_list: List
+ button_view: ĐŃогНодаŃ
+ button_move: ĐŃоПоŃŃи
+ button_move_and_follow: ĐŃоПоŃŃи и ŃНоди
+ button_back: Back
+ button_cancel: ĐŃкаМи
+ button_activate: ĐĐşŃивиŃĐ°Ń
+ button_sort: ĐОдŃоди
+ button_log_time: ĐоНоМи вŃоПо
+ button_rollback: Rollback to this version
+ button_watch: ХНоди
+ button_unwatch: ĐĐľ ŃНоди
+ button_reply: ĐдгОвОŃи
+ button_archive: ĐŃŃ
ивиŃĐ°Ń
+ button_unarchive: ĐĐ´Đ°ŃŃ
ивиŃĐ°Ń
+ button_reset: Reset
+ button_rename: ĐŃоиПонŃваŃ
+ button_change_password: ĐŃОПони НОСинка
+ button_copy: ĐОпиŃĐ°Ń
+ button_copy_and_follow: ĐОпиŃĐ°Ń Đ¸ ŃНоди
+ button_annotate: Annotate
+ button_update: ĐĐśŃŃиŃĐ°Ń
+ button_configure: ĐОнŃигŃŃиŃĐ°Ń
+ button_quote: ЌиŃиŃĐ°Ń
+ button_duplicate: ĐОпиŃĐ°Ń
+ button_show: Show
+
+ status_active: Đ°ĐşŃивни
+ status_registered: ŃогиŃŃŃиŃани
+ status_locked: СакНŃŃони
+
+ version_status_open: ĐžŃвОŃони
+ version_status_locked: СакНŃŃони
+ version_status_closed: СаŃвОŃони
+
+ field_active: Active
+
+ text_select_mail_notifications: ĐСйоŃĐľŃĐľ Са кОи наŃŃани Đ´Đ° ŃĐľ ĐżŃĐ°ŃĐ°Đ°Ń Đ¸ĐˇĐ˛ĐľŃŃŃваŃĐ° пО Đľ-пОŃŃĐ° Đ´Đ° ŃĐľ ĐżŃĐ°ŃĐ°Đ°Ń.
+ text_regexp_info: eg. ^[A-Z0-9]+$
+ text_min_max_length_info: 0 СнаŃи йоС ОгŃаниŃŃваŃĐľ
+ text_project_destroy_confirmation: ĐаНи ŃŃĐľ ŃигŃŃни дока ŃакаŃĐľ Đ´Đ° гО иСйŃиŃĐľŃĐľ ĐżŃОокŃĐžŃ Đ¸ ŃиŃĐľ пОвŃСани пОдаŃĐžŃи?
+ text_subprojects_destroy_warning: "ĐогОвиŃĐľ пОдпŃОокŃи: %{value} иŃŃĐž Ńака ŃĐľ ĐąĐ¸Đ´Đ°Ń Đ¸ĐˇĐąŃиŃани."
+ text_workflow_edit: Select a role and a tracker to edit the workflow
+ text_are_you_sure: ĐаНи ŃŃĐľ ŃигŃŃни?
+ text_journal_changed: "%{label} ĐżŃОПоноŃĐž Од %{old} вО %{new}"
+ text_journal_set_to: "%{label} set to %{value}"
+ text_journal_deleted: "%{label} иСйŃиŃĐ°Đ˝ (%{old})"
+ text_journal_added: "%{label} %{value} дОдадон"
+ text_tip_issue_begin_day: СадаŃи ŃŃĐž пОŃĐ˝ŃĐ˛Đ°Đ°Ń ĐžĐ˛ĐžŃ Đ´ĐľĐ˝
+ text_tip_issue_end_day: СадаŃи ŃŃĐž СавŃŃŃĐ˛Đ°Đ°Ń ĐžĐ˛ĐžŃ Đ´ĐľĐ˝
+ text_tip_issue_begin_end_day: СадаŃи ŃŃĐž пОŃĐ˝ŃĐ˛Đ°Đ°Ń Đ¸ СавŃŃŃĐ˛Đ°Đ°Ń ĐžĐ˛ĐžŃ Đ´ĐľĐ˝
+ text_project_identifier_info: 'Only lower case letters (a-z), numbers, dashes and underscores are allowed.
Once saved, the identifier can not be changed.'
+ text_caracters_maximum: "%{count} СнаŃи ПакŃиПŃĐź."
+ text_caracters_minimum: "ĐĐžŃĐ° Đ´Đ° Đľ наŃĐźĐ°ĐťĐşŃ %{count} СнаŃи дОНгО."
+ text_length_between: "ĐОНМина пОПоŃŃ %{min} и %{max} СнаŃи."
+ text_tracker_no_workflow: No workflow defined for this tracker
+ text_unallowed_characters: ĐодОСвОНони СнаŃи
+ text_comma_separated: ĐОСвОНони ŃĐľ пОвоŃĐľ вŃоднОŃŃи (ŃаСдоНони ŃĐž СапиŃка).
+ text_line_separated: ĐОСвОНони ŃĐľ пОвоŃĐľ вŃоднОŃŃи (одна НиниŃĐ° Са ŃокОŃĐ° вŃоднОŃŃ).
+ text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages
+ text_issue_added: "ĐĐ°Đ´Đ°ŃĐ°ŃĐ° %{id} Đľ ĐżŃиŃавона Од %{author}."
+ text_issue_updated: "ĐĐ°Đ´Đ°ŃĐ°ŃĐ° %{id} Đľ Đ°ĐśŃŃиŃана Од %{author}."
+ text_wiki_destroy_confirmation: ĐаНи ŃŃĐľ ŃигŃŃни дока ŃакаŃĐľ Đ´Đ° гО иСйŃиŃĐľŃĐľ Ова вики и ŃоНаŃĐ° ногОва ŃОдŃМина?
+ text_issue_category_destroy_question: "ĐокОи СадаŃи (%{count}) ŃĐľ дОдоНони на Оваа каŃогОŃиŃĐ°. ШŃĐž ŃакаŃĐľ Đ´Đ° ĐżŃавиŃĐľ?"
+ text_issue_category_destroy_assignments: Remove category assignments
+ text_issue_category_reassign_to: ĐОдоНи ги СадаŃиŃĐľ на Оваа каŃогОŃиŃĐ°
+ 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_issues_destroy_confirmation: 'ĐаНи ŃŃĐľ ŃигŃŃни дока ŃакаŃĐľ Đ´Đ° ги иСйŃиŃĐľŃĐľ иСйŃаниŃĐľ СадаŃи?'
+ text_select_project_modules: 'ĐСйоŃĐľŃĐľ ПОдŃНи Са ĐžĐ˛ĐžŃ ĐżŃОокŃ:'
+ text_default_administrator_account_changed: Default administrator account changed
+ text_file_repository_writable: ĐĐž папкаŃĐ° Са ĐżŃиНОСи ПОМо Đ´Đ° ŃĐľ СапиŃŃва
+ text_plugin_assets_writable: ĐĐž папкаŃĐ° Са дОдаŃĐžŃи ПОМо Đ´Đ° ŃĐľ СапиŃŃва
+ text_rmagick_available: RMagick available (ноСадОНМиŃоНнО)
+ 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: ĐОдоНи ги ĐżŃиŃавониŃĐľ ŃĐ°ŃОви на ĐżŃОокŃĐžŃ
+ text_reassign_time_entries: 'Reassign reported hours to this issue:'
+ text_user_wrote: "%{value} напиŃĐ°:"
+ 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: "ĐĐžŃŃаваŃĐ° пО Đľ-пОŃŃĐ° но Đľ кОнŃигŃŃиŃана, и иСвоŃŃŃваŃĐ°ŃĐ° ŃĐľ ОновОСПОМони.\nĐОнŃигŃŃиŃĐ°ŃŃĐľ гО ĐĐ°ŃĐ¸ĐžŃ SMTP ŃĐľŃĐ˛ĐľŃ Đ˛Đž config/configuration.yml и ŃĐľŃŃĐ°ŃŃиŃĐ°ŃŃĐľ ŃĐ° апНикаŃиŃĐ°ŃĐ°."
+ 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
+
+ default_role_manager: ĐонаŃĐľŃ
+ default_role_developer: Developer
+ default_role_reporter: Reporter
+ default_role_non_member: Non member
+ default_role_anonymous: Anonymous
+ default_tracker_bug: ĐŃĐľŃка
+ default_tracker_feature: ФŃнкŃиОнаНнОŃŃ
+ default_tracker_support: ĐОддŃŃка
+ default_issue_status_new: ĐОва
+ default_issue_status_in_progress: ĐĐž ĐżŃОгŃĐľŃ
+ default_issue_status_resolved: РаСŃĐľŃона
+ default_issue_status_feedback: Feedback
+ default_issue_status_closed: ĐĐ°ŃвОŃона
+ default_issue_status_rejected: Đдйиона
+ default_doc_category_user: ĐĐžŃиŃниŃка дОкŃПонŃĐ°ŃиŃĐ°
+ default_doc_category_tech: ТоŃ
ниŃка дОкŃПонŃĐ°ŃиŃĐ°
+ default_priority_low: ĐиСОк
+ default_priority_normal: ĐĐžŃПаНон
+ default_priority_high: ĐиŃОк
+ default_priority_urgent: ĐŃнО
+ default_priority_immediate: ĐоднаŃ
+ default_activity_design: ĐиСаŃĐ˝
+ default_activity_development: РаСвОŃ
+
+ enumeration_issue_priorities: ĐŃиОŃиŃĐľŃи на СадаŃĐ°
+ enumeration_doc_categories: ĐĐ°ŃогОŃии на дОкŃПонŃ
+ enumeration_activities: ĐĐşŃивнОŃŃи (ŃНодоŃĐľ на вŃоПо)
+ enumeration_system_activity: ХиŃŃоПŃка Đ°ĐşŃивнОŃŃ
+
+ button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}"
+ text_are_you_sure_with_children: Delete issue and all child issues?
+ field_text: Text field
+ label_user_mail_option_only_owner: Only for things I am the owner of
+ setting_default_notification_option: Default notification option
+ 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_none: No events
+ field_member_of_group: Assignee's group
+ field_assigned_to_role: Assignee's role
+ notice_not_authorized_archived_project: The project you're trying to access has been archived.
+ label_principal_search: "Search for user or group:"
+ label_user_search: "Search for user:"
+ field_visible: Visible
+ setting_emails_header: Emails header
+ setting_commit_logtime_activity_id: Activity for logged time
+ text_time_logged_by_changeset: Applied in changeset %{value}.
+ setting_commit_logtime_enabled: Enable time logging
+ notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
+ setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ text_powered_by: Powered by %{link}
label_cvs_module: Module
label_filesystem_path: Root directory
label_darcs_path: Root directory
diff --git a/config/locales/mn.yml b/config/locales/mn.yml
index 6277ffc7..3eb21c5c 100644
--- a/config/locales/mn.yml
+++ b/config/locales/mn.yml
@@ -1,947 +1,947 @@
-mn:
- 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: "%Y/%m/%d"
- short: "%b %d"
- long: "%Y, %B %d"
-
- day_names: [Đаваа, ĐŃгПаŃ, ĐŃ
агва, ĐŇŻŃŃв, ĐĐ°Đ°ŃĐ°Đ˝, ĐŃПйа, ĐŃĐź]
- abbr_day_names: [Đав, ĐŃĐł, ĐŃ
Đ°, ĐŇŻŃ, ĐŃĐ˝, ĐŃĐź, ĐŃĐź]
-
- # Don't forget the nil at the beginning; there's no such thing as a 0th month
- month_names: [~, 1-Ń ŃĐ°Ń, 2-Ń ŃĐ°Ń, 3-Ń ŃĐ°Ń, 4-Ń ŃĐ°Ń, 5-Ń ŃĐ°Ń, 6-Ń ŃĐ°Ń, 7-Ń ŃĐ°Ń, 8-Ń ŃĐ°Ń, 9-Ń ŃĐ°Ń, 10-Ń ŃĐ°Ń, 11-Ń ŃĐ°Ń, 12-Ń ŃĐ°Ń]
- abbr_month_names: [~, 1ŃĐ°Ń, 2ŃĐ°Ń, 3ŃĐ°Ń, 4ŃĐ°Ń, 5ŃĐ°Ń, 6ŃĐ°Ń, 7ŃĐ°Ń, 8ŃĐ°Ń, 9ŃĐ°Ń, 10ŃĐ°Ń, 11ŃĐ°Ń, 12ŃĐ°Ń]
- # Used in date_select and datime_select.
- order:
- - :day
- - :month
- - :year
-
- time:
- formats:
- default: "%Y/%m/%d %I:%M %p"
- time: "%I:%M %p"
- short: "%d %b %H:%M"
- long: "%Y, %B %d %H:%M"
- am: "am"
- pm: "pm"
-
- datetime:
- distance_in_words:
- half_a_minute: "Ń
Đ°ĐłĐ°Ń ĐźĐ¸Đ˝ŃŃ"
- less_than_x_seconds:
- one: "ŃокŃнд ĐžŃŃиП"
- other: "%{count} ŃокŃндŃŃŃ ĐąĐ°ĐłĐ° Ń
ŃгаŃĐ°Đ°"
- x_seconds:
- one: "1 ŃокŃнд"
- other: "%{count} ŃокŃнд"
- less_than_x_minutes:
- one: "ПинŃŃĐ°Đ°Ń ĐąĐ°ĐłĐ° Ń
ŃгаŃĐ°Đ°"
- other: "%{count} ПинŃŃĐ°Đ°Ń ĐąĐ°ĐłĐ° Ń
ŃгаŃĐ°Đ°"
- x_minutes:
- one: "1 ПинŃŃ"
- other: "%{count} ПинŃŃ"
- about_x_hours:
- one: "1 ŃĐ°Đł ĐžŃŃиП"
- other: "ОКŃОНŃĐžĐžĐłĐžĐžŃ %{count} ŃĐ°Đł"
- x_days:
- one: "1 ÓŠĐ´ÓŠŃ"
- other: "%{count} ÓŠĐ´ÓŠŃ"
- about_x_months:
- one: "1 ŃĐ°Ń ĐžŃŃиП"
- other: "ОКŃОНŃĐžĐžĐłĐžĐžŃ %{count} ŃĐ°Ń"
- x_months:
- one: "1 ŃĐ°Ń"
- other: "%{count} ŃĐ°Ń"
- about_x_years:
- one: "ОКŃОНŃĐžĐžĐłĐžĐžŃ 1 МиН"
- other: "ОКŃОНŃĐžĐžĐłĐžĐžŃ %{count} МиН"
- over_x_years:
- one: "1 МиНŃŃŃ Đ¸Ń
"
- other: "%{count} МиНŃŃŃ Đ¸Ń
"
- almost_x_years:
- one: "йаŃĐ°Đł 1 МиН"
- other: "йаŃĐ°Đł %{count} МиН"
-
- number:
- format:
- separator: "."
- delimiter: ""
- precision: 3
- human:
- format:
- delimiter: ""
- precision: 1
- storage_units:
- format: "%n %u"
- units:
- byte:
- one: "ĐĐ°ĐšŃ"
- other: "ĐĐ°ĐšŃ"
- kb: "KB"
- mb: "MB"
- gb: "GB"
- tb: "TB"
-
-
-# Used in array.to_sentence.
- support:
- array:
- sentence_connector: "йаŃ"
- 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: "МагŃĐ°Đ°ĐťŃĐ°Đ´ СаагдаагүК йаКна"
- exclusion: "нӊӊŃНӊгдŃÓŠĐ˝"
- invalid: "ĐąŃŃŃŃ"
- confirmation: "йаŃаНгааМŃĐ°Đ˝ ӊгӊгдӊНŃŃĐš ŃĐ°Đ°ŃĐ°Ń
гүК йаКна"
- accepted: "Ń
ŇŻĐťŃŃĐś аваŃ
ŃŃŃОК"
- empty: "Ń
ООŃОн йаКМ йОНОŃ
гүК"
- blank: "йНанк йаКМ йОНОŃ
гүК"
- too_long: "Đ´Ńндүү ŃŃŃ ĐąĐ°ĐšĐ˝Đ° (Ń
аПгиКн иŃ
Đ´ŃŃ %{count} ŃŃПдŃĐłŃ)"
- too_short: "Đ´Ńндүү йОгинО йаКна (Ń
аПгиКн йагадаа %{count} ŃŃПдŃĐłŃ)"
- wrong_length: "ĐąŃŃŃŃ ŃŃŃŃĐ°Đš йаКна (СааваН %{count} ŃŃПдŃĐłŃ)"
- taken: "Đ°ĐťŃ Ń
ŃĐ´Đ¸ĐšĐ˝Ń Đ°Đ˛ŃĐ°Đ˝ йаКна"
- not_a_number: "ŃОО ĐąĐ¸Ń ĐąĐ°ĐšĐ˝Đ°"
- not_a_date: "Сӊв ОгнОО ĐąĐ¸Ń ĐąĐ°ĐšĐ˝Đ°"
- 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: "СааваН ŃОндгОК"
- even: "СааваН ŃŃĐłŃ"
- greater_than_start_date: "must be greater than start date"
- not_same_project: "Đ˝ŃĐł иМиН ŃÓŠŃӊНд Ń
аПааŃĐ°Ń
гүК йаКна"
- circular_dependency: "ĐĐ˝Ń Ń
Đ°ŃŃŃĐ°Đ° Đ˝Ń ĐłĐ¸Đ˝ĐśĐ¸Đ˝(ŃокŃŃŃив) Ń
Đ°ŃŃŃĐ°Đ° ŇŻŇŻŃĐłŃŃ
ŃĐź йаКна"
- cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
-
- actionview_instancetag_blank_option: ХОнгОнО ŃŃ
-
- general_text_No: 'ҎгүК'
- general_text_Yes: 'ТиКП'
- general_text_no: 'үгүК'
- general_text_yes: 'ŃиКП'
- general_lang_name: 'Mongolian (ĐОнгОН)'
- general_csv_separator: ','
- general_csv_decimal_separator: '.'
- general_csv_encoding: UTF-8
- general_pdf_encoding: UTF-8
- general_first_day_of_week: '7'
-
- notice_account_updated: ĐĐ°Đ˝ŃŃĐł аПМиНŃŃĐ°Đš ÓŠÓŠŃŃиННӊӊ.
- notice_account_invalid_creditentials: ĐĽŃŃŃгНŃĐłŃиКн Đ˝ŃŃ ŃŃвŃĐť Đ˝ŃŃŃ ŇŻĐł ĐąŃŃŃŃ ĐąĐ°ĐšĐ˝Đ°
- notice_account_password_updated: ĐŃŃŃ ŇŻĐłĐ¸ĐšĐł аПМиНŃŃĐ°Đš ÓŠÓŠŃŃиННӊӊ.
- notice_account_wrong_password: ĐŃŃŃŃ Đ˝ŃŃŃ ŇŻĐł
- notice_account_register_done: Đ¨Đ¸Đ˝Ń Ń
ŃŃŃгНŃĐłŃ Đ°ĐźĐśĐ¸ĐťŃŃĐ°Đš ŇŻŇŻŃĐłŃĐťŃŃ. ĐĐ´ŃвŃ
МүүНŃŃ
иКн ŃŃНд, йидниК ŃĐ°Đ˝Ń ĐťŃŃ Đ¸ĐťĐłŃŃŃŃĐ˝ ĐźŃКН Đ´ĐžŃĐžŃ ĐąĐ°ĐšĐłĐ°Đ° Ń
ĐžĐťĐąĐžĐžŃ Đ´ŃŃŃ Đ´Đ°ŃĐ°Đ°ŃĐ°Đš.
- notice_account_unknown_email: ŇŽĐť ĐźŃĐ´ŃгдŃŃ
Ń
ŃŃŃгНŃĐłŃ.
- notice_can_t_change_password: ĐĐ˝Ń ŃŃŃ
гадаад Đ˝ŃвŃŃŃĐťŃŃĐ´ Đ°ŃигНадаг ŃŃŃĐ°Đ°Ń Đ˝ŃŃŃ ŇŻĐłĐ¸ĐšĐł ÓŠÓŠŃŃĐťÓŠŃ
йОНОПМгүК.
- notice_account_lost_email_sent: Đид ŃĐ°Đ˝ŃĐ´ ĐźŃКНŃŃŃ Đ˝ŃŃŃ ŇŻĐłŃŃ ÓŠÓŠŃŃĐťÓŠŃ
СаавŃŃĐł иНгŃŃŃŃĐ˝ йаКгаа.
- notice_account_activated: Đ˘Đ°Đ˝Ń Đ´Đ°Đ˝Ń Đ¸Đ´ŃвŃ
МНŃŃ. ĐдОО Đ˝ŃвŃŃŃŃ ĐžŃĐś йОНнО.
- notice_successful_create: ĐПМиНŃŃĐ°Đš ŇŻŇŻŃĐłŃĐťŃŃ.
- notice_successful_update: ĐПМиНŃŃĐ°Đš ÓŠÓŠŃŃиННӊӊ.
- notice_successful_delete: ĐПМиНŃŃĐ°Đš ŃŃŃгаНаа.
- notice_successful_connection: ĐПМиНŃŃĐ°Đš Ń
ОНйОгдНОО.
- notice_file_not_found: Đ˘Đ°Đ˝Ń ŇŻĐˇŃŃ
ĐłŃŃŃĐ˝ Ń
ŃŃĐ´Đ°Ń ĐąĐ°ĐšŃ
гүК ŃĐźŃŃ ŃŃŃгагдŃĐ°Đ˝ йаКна.
- notice_locking_conflict: ӨгӊгдНиКг ÓŠÓŠŃ Ń
ŇŻĐ˝ ÓŠÓŠŃŃиНŃÓŠĐ˝ йаКна.
- notice_not_authorized: Танд ŃĐ˝Ń Ń
ŃŃĐ´ŃŃĐł үСŃŃ
ŃŃŃ
йаКŃ
гүК йаКна.
- notice_email_sent: "%{value} - ŃŃŃ ĐźŃКН иНгŃŃĐťŃŃ"
- notice_email_error: "ĐŃКН иНгŃŃŃ
ŃĐ´ аНдаа гаŃНаа (%{value})"
- notice_feeds_access_key_reseted: Đ˘Đ°Đ˝Ń RSS Ń
андаНŃŃĐ˝ ŃŇŻĐťŃ
ŇŻŇŻŃиКг Đ´Đ°Ń
ин ŃŃ
НүүННŃŃ.
- notice_api_access_key_reseted: Your API access key was reset.
- notice_failed_to_save_issues: "%{total} Đ°ŃŃŃĐ´Đ°Đť ŃОнгОгдŃĐžĐ˝ĐžĐžŃ %{count} Đ°ŃŃŃĐ´ĐťŃĐł Đ˝Ń Ń
адгаНаŃ
Đ°Đ´ аНдаа гаŃНаа: %{ids}."
- notice_no_issue_selected: "ĐŻĐźĐ°Ń Ń Đ°ŃŃŃĐ´Đ°Đť ŃОнгОгдООгүК йаКна! ĐĐ°ŃваŃНаŃ
Đ°ŃŃŃĐ´ĐťŃŃĐ´Đ°Đ° ŃОнгОнО ŃŃ."
- notice_account_pending: "Đ˘Đ°Đ˝Ń Đ´Đ°Đ˝ŃŃĐł ŇŻŇŻŃĐłŃĐś Đ´ŃŃŃНаа, адПиниŃŃŃĐ°ŃĐžŃ ĐąĐ°ŃаНгааМŃŃНаŃ
Ń
ŇŻŃŃŃĐť Ń
ŇŻĐťŃŃĐ˝Ń ŇŻŇŻ."
- notice_default_data_loaded: ĐĄŃандаŃŃ ŃĐžŃ
иŃгООг аПМиНŃŃĐ°Đš Đ°ŃааННаа.
- notice_unable_delete_version: ĐĽŃвиНйаŃŃĐł ŃŃŃгаŃ
йОНОПМгүК.
- notice_issue_done_ratios_updated: Issue done ratios updated.
-
- error_can_t_load_default_data: "ĐĄŃандаŃŃ ŃĐžŃ
иŃгООг Đ°ŃааНМ ŃĐ°Đ´ŃангүК: %{value}"
- error_scm_not_found: "Repository Đ´ĐžŃĐžŃ ŃŃŃ
аКн йиŃĐťŃĐł ŃŃвŃĐť Ń
ŃвиНйаŃŃĐł ОНŃОнгүК."
- error_scm_command_failed: "Repository-Đ´ Ń
андаŃ
Đ°Đ´ аНдаа гаŃНаа: %{value}"
- error_scm_annotate: "ĐиŃĐťŃĐł йаКŃ
гүК йаКна, ŃŃвŃĐť йиŃĐťŃĐłŃ ŃĐ°ĐšĐťĐąĐ°Ń Ń
авŃĐ°ŃгаМ йОНОŃ
гүК."
- error_issue_not_found_in_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_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened'
- error_can_not_archive_project: This project can not 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)'
-
- warning_attachments_not_saved: "%{count} file(s) ŃаКНŃĐł Ń
адгаНМ ŃĐ°Đ´ŃангүК."
-
- mail_subject_lost_password: "Đ˘Đ°Đ˝Ń %{value} Đ˝ŃŃŃ ŇŻĐł"
- mail_body_lost_password: 'ĐŃŃŃ ŇŻĐłŃŃ ÓŠÓŠŃŃĐťÓŠŃ
иКн ŃŃНд дООŃŃ
Ń
ĐžĐťĐąĐžĐžŃ Đ´ŃŃŃ Đ´Đ°Ńна ŃŃ:'
- mail_subject_register: "Đ˘Đ°Đ˝Ń %{value} Đ´Đ°Đ˝ŃŃĐł идŃвŃ
МүүНŃŃ
"
- mail_body_register: 'ĐĐ°Đ˝ŃĐ°Đ° идŃвŃ
МүүНŃŃ
иКн ŃŃНд дООŃŃ
Ń
ĐžĐťĐąĐžĐžŃ Đ´ŃŃŃ Đ´Đ°Ńна ŃŃ:'
- mail_body_account_information_external: "Та ÓŠÓŠŃиКнŃ
ÓŠÓŠ %{value} Đ´Đ°Đ˝ŃŃĐł Đ°ŃигНаМ Ń
ОНйОгдОМ йОНнО."
- mail_body_account_information: Đ˘Đ°Đ˝Ń Đ´Đ°Đ˝ŃĐ˝Ń ŃŃŃ
Đ°Đš ĐźŃĐ´ŃŃĐťŃĐť
- mail_subject_account_activation_request: "%{value} Đ´Đ°Đ˝ŃŃĐł идŃвŃ
МүүНŃŃ
Ń
ŇŻŃŃĐťŃ"
- mail_body_account_activation_request: "Đ¨Đ¸Đ˝Ń Ń
ŃŃŃгНŃĐłŃ (%{value}) йүŃŃгүүНŃŃĐ˝ йаКна. Đ˘Đ°Đ˝Ń ĐąĐ°ŃаНгааМŃŃНаŃ
ŃĐł Ń
ŇŻĐťŃŃĐś йаКна:"
- mail_subject_reminder: "ĐĐ°ŃаагиКн ÓŠĐ´ŃŇŻŇŻĐ´ŃĐ´ %{count} Đ°ŃŃŃĐ´ĐťŃĐł ŃиКдŃŃ
Ń
ŃŃŃĐłŃŃĐš (%{days})"
- mail_body_reminder: "Танд ОнООгдŃОн %{count} Đ°ŃŃŃĐ´ĐťŃŃĐ´ŃĐł Đ´Đ°ŃаагиКн %{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 аНдаа
- gui_validation_error_plural: "%{count} аНдаа"
-
- field_name: ĐŃŃ
- field_description: ТаКНйаŃ
- field_summary: ĐүгнŃĐťŃ
- field_is_required: ĐаКНŃгүК
- field_firstname: Đ˘Đ°Đ˝Ń Đ˝ŃŃ
- field_lastname: ĐвОг
- field_mail: ĐĐźŃКН
- field_filename: ФаКН
- field_filesize: ĐĽŃПМŃŃ
- field_downloads: ТаŃĐ°Đś аваŃ
СүКНŃ
- field_author: ĐĐžŃ
иОгŃ
- field_created_on: ŇŽŇŻŃŃŃĐ˝
- field_updated_on: Ó¨ÓŠŃŃиНŃÓŠĐ˝
- field_field_format: ФОŃПаŃ
- field_is_for_all: ĐŇŻŃ
ŃÓŠŃНиКн Ń
ŃвŃĐ´
- field_possible_values: ĐОНОПМŃОК ŃŃĐłŃŃĐ´
- field_regexp: ĐнгиКн иНŃŃŃ
иКНŃĐť
- field_min_length: ĐиниПŃĐź ŃŃŃ
- field_max_length: ĐĐ°ĐşŃиПŃĐź ŃŃŃ
- field_value: ĐŁŃга
- field_category: ТӊŃÓŠĐť
- field_title: ĐĐ°ŃŃиг
- field_project: ТӊŃÓŠĐť
- field_issue: ĐŃŃŃĐ´Đ°Đť
- field_status: ТӊНӊв
- field_notes: ТŃПдŃгНŃНүүд
- field_is_closed: ĐŃŃŃĐ´Đ°Đť Ń
аагдŃĐ°Đ˝
- field_is_default: ĐĄŃандаŃŃ ŃŃга
- field_tracker: ЧигНŃĐť
- field_subject: ĐĐ°ŃŃиг
- field_due_date: ĐŃŃŃĐ°Ń
ОгнОО
- field_assigned_to: ĐнООгдŃОн
- field_priority: ĐŃŃŃгНŃĐť
- field_fixed_version: ĐĽŃвиНйаŃ
- field_user: ĐĽŃŃŃгНŃĐłŃ
- field_role: мандаНŃŃĐ˝ ŃŃŃ
- field_homepage: ĐŇŻŇŻŃ Ń
ŃŃĐ´Đ°Ń
- field_is_public: ĐНОн ниКŃиКн
- field_parent: ĐŃŃĐł ŃÓŠŃÓŠĐť Đ˝Ń
- field_is_in_roadmap: ĐŃŃŃĐ´ĐťŃŃĐ´ŃĐł ŃвŃŃĐ˝ СŃŃĐ°Đł Đ´ŃŃŃ Ń
Đ°ŃŃŃНаŃ
- field_login: ĐŃвŃŃŃŃ
Đ˝ŃŃ
- field_mail_notification: ĐĐźŃКН ĐźŃĐ´ŃгдНүүд
- field_admin: ĐдПиниŃŃŃĐ°ŃĐžŃ
- field_last_login_on: ХүүНиКн Ń
ОНйОО
- field_language: ĐĽŃĐť
- field_password: ĐŃŃŃ ŇŻĐł
- field_new_password: Đ¨Đ˝Đ˝Ń Đ˝ŃŃŃ ŇŻĐł
- field_password_confirmation: ĐĐ°ŃаНгааМŃŃНаŃ
- field_version: ĐĽŃвиНйаŃ
- field_type: ТӊŃÓŠĐť
- field_host: ĐĽĐžŃŃ
- field_port: ĐĐžŃŃ
- field_account: ĐĐ°Đ˝Ń
- field_base_dn: ҎндŃŃĐ˝ ĐĐ
- field_attr_login: ĐŃвŃŃŃŃ
Đ°ŃŃŃийŃŃ
- field_attr_firstname: Đ˘Đ°Đ˝Ń Đ˝ŃŃ Đ°ŃŃŃийŃŃ
- field_attr_lastname: ĐвОг Đ°ŃŃŃийŃŃ
- field_attr_mail: ĐĐźŃКН Đ°ŃŃŃийŃŃ
- field_onthefly: ĐĽŇŻŃŃŃĐ˝ үодŃŃ Ń
ŃŃŃгНŃĐłŃ ŇŻŇŻŃĐłŃŃ
- field_start_date: ĐŃ
ĐťŃĐť
- field_done_ratio: "%% ĐŇŻĐšŃŃŃĐłŃŃŃĐ˝"
- field_auth_source: ĐŃвŃŃŃŃ
Đ°Ńга
- field_hide_mail: ĐиниК иПŃКН Ń
Đ°ŃгиКг Đ˝ŃŃ
- field_comments: ТаКНйаŃ
- field_url: URL ĐĽĐ°ŃĐł
- field_start_page: ТŃŃгүүн Ń
ŃŃĐ´Đ°Ń
- field_subproject: ĐŃĐ´ ŃÓŠŃÓŠĐť
- field_hours: ĐŚĐ°Đł
- field_activity: ҎКН аМиННагаа
- field_spent_on: ĐгнОО
- field_identifier: ТӊŃНиКн гНОйаН Đ˝ŃŃ
- field_is_filter: ШүүНŃŇŻŇŻŃ ĐąĐžĐťĐłĐžĐ˝ Ń
ŃŃŃгНŃгддŃĐł
- field_issue_to: маПааŃĐ°Đš Đ°ŃŃŃĐ´Đ°Đť
- field_delay: ĐĽĐžŃŃОНŃ
- field_assignable: ĐĐ˝Ń Ń
андаНŃŃĐ˝ ŃŃŃ
ŃĐ´ Đ°ŃŃŃĐ´ĐťŃŃĐ´ŃĐł ОнООМ ÓŠĐłŃ ĐąĐžĐťĐ˝Đž
- field_redirect_existing_links: ĐаКгаа Ń
ОНйООŃŃŃĐ´ŃĐł Đ´Đ°Ń
ин ŃигНүүНŃŃ
- field_estimated_hours: ĐĐ°ŃĐ°ĐłŃĐ°Đ°ĐťŃĐ°Đ˝ ŃĐ°Đł
- field_column_names: ĐаганŃŃĐ´
- field_time_zone: ĐŚĐ°ĐłŃĐ˝ йүŃ
- field_searchable: маКМ йОНОŃ
- field_default_value: ĐĄŃандаŃŃ ŃŃга
- field_comments_sorting: ТаКНйаŃŃŃĐ´ŃĐł Ń
Đ°ŃŃŃĐť
- field_parent_title: ĐŃŃĐł Ń
ŃŃĐ´Đ°Ń
- field_editable: ĐĐ°ŃваŃНагдана
- field_watcher: ĐĽĐ°Ńна
- field_identity_url: OpenID URL
- field_content: ĐĐłŃŃНга
- field_group_by: ŇŽŃ Đ´ŇŻĐ˝ĐłŃŃŃ ĐąŇŻĐťŃгНŃŃ
- field_sharing: Sharing
-
- setting_app_title: ĐŃОгŃаППŃĐ˝ гаŃŃиг
- setting_app_subtitle: ĐŃОгŃаППŃĐ˝ Đ´ŃĐ´ гаŃŃиг
- setting_welcome_text: ĐŃндŃиНгŃŃ
- setting_default_language: ĐĄŃандаŃŃ Ń
ŃĐť
- setting_login_required: ĐŃвŃŃŃŃ
ŃĐ°Đ°ŃдНагаŃĐ°Đš
- setting_self_registration: Ó¨ÓŠŃиКгӊӊ йүŃŃгүүНŃŃ
- setting_attachment_max_size: мавŃŃĐ°ĐťŃ ŃаКНŃĐ˝ Đ´ŃŃĐ´ Ń
ŃПМŃŃ
- setting_issues_export_limit: ĐŃŃŃĐ´Đ°Đť ŃĐşŃпОŃŃНОŃ
Ń
ŃСгааŃ
- setting_mail_from: ĐŻĐźĐ°Ń Đ¸ĐźŃКН Ń
Đ°ŃĐł ŇŻŇŻŃĐłŃŃ
- setting_bcc_recipients: BCC ŃаНйаŃŃĐ˝ Ń
Đ°ŃĐłŃŃĐ´ (bcc)
- setting_plain_text_mail: Đ´Đ°Đ˝ ŃокŃŃ ĐźŃКН (HTML йиŃ)
- setting_host_name: ĐĽĐžŃŃŃĐ˝ Đ˝ŃŃ ĐąĐžĐťĐžĐ˝ СаП
- setting_text_formatting: ТокŃŃ Ń
ŃНйŃŃМүүНŃĐťŃ
- setting_wiki_compression: Đики Ń
ŃŃĐ´ŃŃŃĐ´ŃĐ˝ ŃŇŻŇŻŃ
Đ´ŃŃŃ ŃĐ°Ń
Đ°ĐťŃ Ń
иКŃ
- setting_feeds_limit: ФиКд Đ°ĐłŃŃНгŃĐ˝ Ń
ŃСгааŃ
- setting_default_projects_public: Đ¨Đ¸Đ˝Ń ŃÓŠŃНүүд авŃОПаŃĐ°Đ°Ń ĐžĐťĐžĐ˝ ниКŃиКнŃ
йаКна
- setting_autofetch_changesets: ĐОПиŃŃŃĐ´ŃĐł авŃОПаŃĐ°Đ°Ń ŃĐ°ŃĐ°Đś аваŃ
- setting_sys_api_enabled: РопОСиŃĐžŃи ПоноМПонŃŃĐ´ СОŃиŃНан WS-иКг идŃвŃ
МүүНŃŃ
- setting_commit_ref_keywords: маПааŃŃŃНаŃ
ŃŇŻĐťŃ
ŇŻŇŻŃ ŇŻĐłŃ
- setting_commit_fix_keywords: ĐООНŃŃОК ŃŇŻĐťŃ
ŇŻŇŻŃ ŇŻĐłŃ
- setting_autologin: ĐОПпŃŃŃĐľŃ Đ´ŃŃŃ ŃанаŃ
- setting_date_format: ĐĐłĐ˝ĐžĐžĐ˝Ń ŃĐžŃПаŃ
- setting_time_format: ЌагиКн ŃĐžŃПаŃ
- setting_cross_project_issue_relations: ТӊŃÓŠĐť Ń
ООŃОнд Đ°ŃŃŃĐ´Đ°Đť Ń
аПааŃŃŃНаŃ
ŃĐł СӊвŃÓŠÓŠŃÓŠŃ
- setting_issue_list_default_columns: ĐŃŃŃĐ´ĐťŃŃĐ´ŃĐł Ń
Đ°ŃŃŃНаŃ
ŃŃандаŃŃ ĐąĐ°ĐłĐ°Đ˝ŃŃĐ´
- setting_repositories_encodings: РопОСиŃĐžŃиКн ŃнкОдинг
- setting_commit_logs_encoding: ĐĐžĐźĐźĐ¸Ń Ń
иКŃ
үод Ń
Đ°ŃŃŃНаŃ
ŃокŃŃүүдиКн ŃнкОдинг
- setting_emails_footer: ĐĐźŃКНүүдиКн Ń
ÓŠĐť Ń
ŃŃŃĐł
- setting_protocol: ĐŃĐžŃОкОН
- setting_per_page_options: ĐŃĐł Ń
ŃŃĐ´Ńанд йаКŃ
ОйŃокŃŃŃĐ´ŃĐ˝ ŃĐžŃ
иŃгОО
- setting_user_format: ĐĽŃŃŃгНŃĐłŃдиКг Ń
Đ°ŃŃŃНаŃ
ŃĐžŃПаŃ
- setting_activity_days_default: ТӊŃНиКн үКН аМиННагаа Ń
ŃŃŃĐłŃ ŇŻĐˇŇŻŇŻĐťŃŃ
ÓŠĐ´ŃиКн ŃОО
- setting_display_subprojects_issues: ĐŃĐ´ ŃÓŠŃНүүдиКн Đ°ŃŃŃĐ´ĐťŃŃĐ´ŃĐł авŃОПаŃĐ°Đ°Ń ĐłĐžĐť ŃÓŠŃÓŠĐť Đ´ŃŃŃ Ń
Đ°ŃŃŃНаŃ
- setting_enabled_scm: SCM - иКг идŃвŃ
МүүНŃŃ
- setting_mail_handler_body_delimiters: "Truncate emails after one of these lines"
- setting_mail_handler_api_enabled: ĐŃŃŃĐ˝ ĐźŃКНүүдиКн Ń
ŃвŃĐ´ WS-иКг идŃвŃ
МүүНŃŃ
- setting_mail_handler_api_key: API ŃŇŻĐťŃ
ŇŻŇŻŃ
- setting_sequential_project_identifiers: ĐŃŃ Đ´Đ°ŃĐ°Đ°ĐťŃĐ°Đ˝ ŃÓŠŃНиКн гНОйаН Đ˝ŃŃ ŇŻŇŻŃĐłŃĐś йаКŃ
- setting_gravatar_enabled: Gravatar Đ´ŇŻŃŃүүдиКг Ń
ŃŃŃгНŃĐłŃĐ´ŃĐ´ Ń
ŃŃŃгНŃĐś йаКŃ
- setting_gravatar_default: Default Gravatar image
- setting_diff_max_lines_displayed: ЯНгааŃĐ°Đš ĐźÓŠŃүүдиКн ŃОО (Đ´ŃŃĐ´ ŃĐ°Đť Đ˝Ń)
- setting_file_max_size_displayed: Max 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
-
- permission_add_project: Create project
- permission_add_subprojects: Create subprojects
- permission_edit_project: ТӊŃНиКг СаŃваŃНаŃ
- permission_select_project_modules: ТӊŃНиКн ПОдŃĐťŃŃдиКг ŃОнгОнО ŃŃ
- permission_manage_members: ХиŃŃоПиКн Ń
ŃŃŃгНŃĐłŃид
- permission_manage_project_activities: Manage project activities
- permission_manage_versions: ĐĽŃвиНйаŃŃŃĐ´
- permission_manage_categories: ĐŃŃŃĐ´ĐťŃĐ˝ ангиННŃŃĐ´
- permission_view_issues: ĐŃŃŃĐ´ĐťŃŃĐ´ŃĐł Ń
Đ°ŃĐ°Ń
- permission_add_issues: ĐŃŃŃĐ´ĐťŃŃĐ´ Đ˝ŃĐźŃŃ
- permission_edit_issues: ĐŃŃŃĐ´ĐťŃŃĐ´ŃĐł СаŃваŃНаŃ
- permission_manage_issue_relations: ĐŃŃŃĐ´ĐťŃĐ˝ Ń
аПааŃĐťŃĐł СОŃ
иŃŃŃНаŃ
- permission_add_issue_notes: ТŃПдŃгНŃĐť Đ˝ŃĐźŃŃ
- permission_edit_issue_notes: ТŃПдŃгНŃНүүд СаŃваŃНаŃ
- permission_edit_own_issue_notes: Ó¨ÓŠŃиКн үНдŃŃŃŃĐ˝ ŃŃПдŃгНŃНүүдиКг СаŃваŃНаŃ
- permission_move_issues: ĐŃŃŃĐ´ĐťŃŃĐ´ŃĐł СӊӊŃ
- permission_delete_issues: ĐŃŃŃĐ´ĐťŃŃĐ´ŃĐł ŃŃŃгаŃ
- permission_manage_public_queries: ĐНОн ниКŃиКн Đ°ŃŃŃĐťŃŃŃĐ´
- permission_save_queries: ĐŃŃŃĐťŃŃŃĐ´ŃĐł Ń
адгаНаŃ
- permission_view_gantt: ĐĐ°Đ˝Ń Đ´Đ¸Đ°ĐłŃĐ°ĐźŃĐł үСŃŃ
- permission_view_calendar: ĐаНондаŃŃ ŇŻĐˇŃŃ
- permission_view_issue_watchers: ĐМигНагŃĐ´ŃĐ˝ МагŃĐ°Đ°ĐťŃŃĐł Ń
Đ°ŃĐ°Ń
- permission_add_issue_watchers: ĐМигНагŃид Đ˝ŃĐźŃŃ
- permission_delete_issue_watchers: ĐМигНагŃĐ´ŃĐł ŃŃŃгаŃ
- permission_log_time: ĐĐ°ŃŃŃŃĐťŃĐ°Đ˝ Ń
ŃгаŃĐ°Đ°Đł НОг Ń
иКŃ
- permission_view_time_entries: ĐĐ°ŃŃŃŃĐťŃĐ°Đ˝ Ń
ŃгаŃĐ°Đ°Đł Ń
Đ°ŃĐ°Ń
- permission_edit_time_entries: ĐĽŃгаŃĐ°Đ°Đ˝Ń ĐťĐžĐłŃŃĐ´ŃĐł СаŃваŃНаŃ
- permission_edit_own_time_entries: Ó¨ÓŠŃиКн Ń
ŃгаŃĐ°Đ°Đ˝Ń ĐťĐžĐłŃŃĐ´ŃĐł СаŃваŃНаŃ
- permission_manage_news: ĐŃĐ´ŃŃ ĐźŃĐ´ŃŃННүүд
- permission_comment_news: ĐŃĐ´ŃŃнд ŃĐ°ĐšĐťĐąĐ°Ń ŇŻĐťĐ´ŃŃŃ
- permission_manage_documents: ĐиŃиг йаŃиПŃŃŃĐ´
- permission_view_documents: ĐиŃиг йаŃиПŃŃŃĐ´ŃĐł Ń
Đ°ŃĐ°Ń
- permission_manage_files: ФаКНŃŃĐ´
- permission_view_files: ФаКНŃŃĐ´ŃĐł Ń
Đ°ŃĐ°Ń
- permission_manage_wiki: Đики ŃдиŃĐ´Đ°Ń
- permission_rename_wiki_pages: Đики Ń
ŃŃĐ´ŃŃŃĐ´ŃĐł Đ´Đ°Ń
иМ Đ˝ŃŃĐťŃŃ
- permission_delete_wiki_pages: Đики Ń
ŃŃĐ´ŃŃŃĐ´ŃĐł ŃŃŃгаŃ
- permission_view_wiki_pages: Đики үСŃŃ
- permission_view_wiki_edits: Đики ŃŇŻŇŻŃ
үСŃŃ
- permission_edit_wiki_pages: Đики Ń
ŃŃĐ´ŃŃŃĐ´ŃĐł СаŃваŃНаŃ
- permission_delete_wiki_pages_attachments: мавŃŃĐ°ĐťŃŃŃĐ´ŃĐł ŃŃŃгаŃ
- permission_protect_wiki_pages: Đики Ń
ŃŃĐ´ŃŃŃĐ´ŃĐł Ń
аПгааНаŃ
- permission_manage_repository: РопОСиŃĐžŃи
- permission_browse_repository: РопОСиŃĐžŃиКг үСŃŃ
- permission_view_changesets: Ó¨ÓŠŃŃĐťÓŠĐťŃүүдиКг Ń
Đ°ŃĐ°Ń
- permission_commit_access: ĐĐžĐźĐźĐ¸Ń Ń
андаНŃ
- permission_manage_boards: ХаПйаŃŃŃĐ´
- permission_view_messages: ĐŃŃваŃŃŃĐ´ŃĐł Ń
Đ°ŃĐ°Ń
- permission_add_messages: ĐŃŃĐ˛Đ°Ń Đ¸ĐťĐłŃŃŃ
- permission_edit_messages: ĐŃŃваŃŃŃĐ´ŃĐł СаŃваŃНаŃ
- permission_edit_own_messages: Ó¨ÓŠŃиКн СŃŃваŃŃŃĐ´ŃĐł СаŃваŃНаŃ
- permission_delete_messages: ĐŃŃваŃŃŃĐ´ŃĐł ŃŃŃгаŃ
- permission_delete_own_messages: Ó¨ÓŠŃиКн СŃŃваŃŃŃĐ´ŃĐł ŃŃŃгаŃ
- permission_export_wiki_pages: Đики Ń
ŃŃĐ´ŃŃŃĐ´ŃĐł ŃĐşŃпОŃŃ Ń
иКŃ
-
- project_module_issue_tracking: ĐŃŃŃĐ´Đ°Đť Ń
ŃнаŃ
- project_module_time_tracking: ĐĽŃгаŃĐ°Đ° Ń
ŃнаŃ
- project_module_news: ĐŃĐ´ŃŃ ĐźŃĐ´ŃŃННүүд
- project_module_documents: ĐиŃиг йаŃиПŃŃŃĐ´
- project_module_files: ФаКНŃŃĐ´
- project_module_wiki: Đики
- project_module_repository: РопОСиŃĐžŃи
- project_module_boards: ХаПйаŃŃŃĐ´
-
- label_user: ĐĽŃŃŃгНŃĐłŃ
- label_user_plural: ĐĽŃŃŃгНŃĐłŃид
- label_user_new: Đ¨Đ¸Đ˝Ń Ń
ŃŃŃгНŃĐłŃ
- label_user_anonymous: маПаагүК Ń
ŃŃŃгНŃĐłŃ
- label_project: ТӊŃÓŠĐť
- label_project_new: Đ¨Đ¸Đ˝Ń ŃÓŠŃÓŠĐť
- label_project_plural: ТӊŃНүүд
- label_x_projects:
- zero: ŃÓŠŃÓŠĐť йаКŃ
гүК
- one: 1 ŃÓŠŃÓŠĐť
- other: "%{count} ŃÓŠŃНүүд"
- label_project_all: ĐŇŻŃ
ТӊŃНүүд
- label_project_latest: ХүүНиКн үоиКн ŃÓŠŃНүүд
- label_issue: ĐŃŃŃĐ´Đ°Đť
- label_issue_new: Đ¨Đ¸Đ˝Ń Đ°ŃŃŃĐ´Đ°Đť
- label_issue_plural: ĐŃŃŃĐ´ĐťŃŃĐ´
- label_issue_view_all: ĐŇŻŃ
Đ°ŃŃŃĐ´ĐťŃŃĐ´ŃĐł Ń
Đ°ŃĐ°Ń
- label_issues_by: "%{value} - Đ˝ Đ°ŃŃŃĐ´ĐťŃŃĐ´"
- label_issue_added: ĐŃŃŃĐ´Đ°Đť Đ˝ŃĐźŃгдНŃŃ
- label_issue_updated: ĐŃŃŃĐ´Đ°Đť ÓŠÓŠŃŃНӊгдНӊӊ
- label_document: ĐиŃиг йаŃиПŃ
- label_document_new: Đ¨Đ¸Đ˝Ń ĐąĐ¸Ńиг йаŃиПŃ
- label_document_plural: ĐиŃиг йаŃиПŃŃŃĐ´
- label_document_added: ĐиŃиг йаŃĐ¸ĐźŃ Đ˝ŃĐźŃгдНŃŃ
- label_role: мандаНŃŃĐ˝ ŃŃŃ
- label_role_plural: мандаНŃŃĐ˝ ŃŃŃ
ŇŻŇŻĐ´
- label_role_new: Đ¨Đ¸Đ˝Ń Ń
андаНŃŃĐ˝ ŃŃŃ
- label_role_and_permissions: мандаНŃŃĐ˝ ŃŃŃ
ŇŻŇŻĐ´ йОНОн СӊвŃÓŠÓŠŃНүүд
- label_member: ĐиŃŇŻŇŻĐ˝
- label_member_new: Đ¨Đ¸Đ˝Ń ĐłĐ¸ŃŇŻŇŻĐ˝
- label_member_plural: ĐиŃŇŻŇŻĐ´
- label_tracker: ЧигНŃĐť
- label_tracker_plural: ЧигНŃНүүд
- label_tracker_new: Đ¨Đ¸Đ˝Ń ŃигНŃĐť
- label_workflow: ĐМНŃĐ˝ Đ´Đ°ŃааНаН
- label_issue_status: ĐŃŃŃĐ´ĐťŃĐ˝ ŃӊНӊв
- label_issue_status_plural: ĐŃŃŃĐ´ĐťŃĐ˝ ŃӊНвүүд
- label_issue_status_new: Đ¨Đ¸Đ˝Ń ŃӊНӊв
- label_issue_category: ĐŃŃŃĐ´ĐťŃĐ˝ ангиНаН
- label_issue_category_plural: ĐŃŃŃĐ´ĐťŃĐ˝ ангиННŃŃĐ´
- label_issue_category_new: Đ¨Đ¸Đ˝Ń Đ°Đ˝ĐłĐ¸ĐťĐ°Đť
- label_custom_field: ĐĽŃŃŃгНŃĐłŃиКн ŃОдОŃŃ
ОКНŃОн ŃаНйаŃ
- label_custom_field_plural: ĐĽŃŃŃгНŃĐłŃиКн ŃОдОŃŃ
ОКНŃОн ŃаНйаŃŃŃĐ´
- label_custom_field_new: ШинŃŃŃ Ń
ŃŃŃгНŃĐłŃиКн ŃОдОŃŃ
ОКНŃОн ŃĐ°ĐťĐąĐ°Ń ŇŻŇŻŃĐłŃŃ
- label_enumerations: ĐнгиННŃŃĐ´
- label_enumeration_new: Đ¨Đ¸Đ˝Ń ŃŃга
- label_information: ĐŃĐ´ŃŃĐťŃĐť
- label_information_plural: ĐŃĐ´ŃŃННүүд
- label_please_login: ĐŃвŃŃŃŃ ĐžŃнО ŃŃ
- label_register: ĐŇŻŃŃгүүНŃŃ
- label_login_with_open_id_option: or login with OpenID
- label_password_lost: ĐŃŃŃ ŇŻĐłŃŃ Đ°ĐťĐ´ŃĐ°Đ˝
- label_home: ĐŇŻŇŻŃ
- label_my_page: ĐиниК Ń
ŃŃĐ´Đ°Ń
- label_my_account: ĐиниК Đ´Đ°Đ˝Ń
- label_my_projects: ĐиниК ŃÓŠŃНүүд
- label_administration: ĐдПин Ń
ŃŃŃĐł
- label_login: ĐŃвŃŃŃŃ
- label_logout: ĐĐ°ŃĐ°Ń
- label_help: ТŃŃНаПМ
- label_reported_issues: ĐŃĐ´ŃгдŃŃĐ˝ Đ°ŃŃŃĐ´ĐťŃŃĐ´
- label_assigned_to_me_issues: ĐĐ°Đ´Đ°Đ´ ОнООгдŃОн Đ°ŃŃŃĐ´ĐťŃŃĐ´
- label_last_login: ХүүНиКн Ń
ОНйОНŃ
- label_registered_on: ĐŇŻŃŃгүүНŃŃĐ˝ ОгнОО
- label_activity: ҎКН аМиННагаа
- label_overall_activity: ĐŃÓŠĐ˝Ń
иК үКН аМиННагаа
- label_user_activity: "%{value}-иКн үКН аМиННагаа"
- label_new: ШинŃ
- label_logged_as: мОНйОгдŃОн Đ˝ŃŃ
- label_environment: ĐŃŃин
- label_authentication: ĐŃвŃŃŃŃ
- label_auth_source: ĐŃвŃŃŃŃ
Đ°Ńга
- label_auth_source_new: Đ¨Đ¸Đ˝Ń Đ˝ŃвŃŃŃŃ
Đ°Ńга
- label_auth_source_plural: ĐŃвŃŃŃŃ
Đ°ŃĐłŃŃĐ´
- label_subproject_plural: ĐŃĐ´ ŃÓŠŃНүүд
- label_subproject_new: Đ¨Đ¸Đ˝Ń Đ´ŃĐ´ ŃÓŠŃÓŠĐť
- label_and_its_subprojects: "%{value} йОНОн Ń
ОНйОгдОŃ
Đ´ŃĐ´ ŃÓŠŃНүүд"
- label_min_max_length: ĐŃŃĐ´ - ĐООд ŃŃŃ
- label_list: ĐĐ°ĐłŃĐ°Đ°ĐťŃ
- label_date: ĐгнОО
- label_integer: ĐŇŻŃ
ŃĐť ŃОО
- label_float: ĐŃŃĐ°ŃŃ
Đ°Đš ŃОО
- label_boolean: ŇŽĐ˝ŃĐ˝ Ń
ŃĐ´Đ°Đť ŃŃга
- label_string: ТокŃŃ
- label_text: ĐŁŃŃ ŃокŃŃ
- label_attribute: ĐŃŃŃийŃŃ
- label_attribute_plural: ĐŃŃŃийŃŃŃŃĐ´
- label_download: "%{count} ТаŃĐ°Đś авŃĐ°Đ˝ СүКН"
- label_download_plural: "%{count} ТаŃĐ°Đś авŃĐ°Đ˝ СүКНŃ"
- label_no_data: ҎСүүНŃŃ
ӊгӊгдӊН йаКŃ
гүК йаКна
- label_change_status: ТӊНвиКг ÓŠÓŠŃŃĐťÓŠŃ
- label_history: ТүүŃ
- label_attachment: ФаКН
- label_attachment_new: Đ¨Đ¸Đ˝Ń ŃаКН
- label_attachment_delete: ФаКН ŃŃŃгаŃ
- label_attachment_plural: ФаКНŃŃĐ´
- label_file_added: ФаКН Đ˝ŃĐźŃгдНŃŃ
- label_report: ТаКНан
- label_report_plural: ТаКНангŃŃĐ´
- label_news: ĐŃĐ´ŃŃ
- label_news_new: Đ¨Đ¸Đ˝Ń ĐźŃĐ´ŃŃ
- label_news_plural: ĐŃĐ´ŃŃ
- label_news_latest: ХүүНиКн үоиКн ĐźŃĐ´ŃŃнүүд
- label_news_view_all: ĐŇŻŃ
ĐźŃĐ´ŃŃĐł Ń
Đ°ŃĐ°Ń
- label_news_added: ĐŃĐ´ŃŃ Đ˝ŃĐźŃгдНŃŃ
- label_change_log: Ó¨ÓŠŃŃĐťÓŠĐťŃиКн НОг
- label_settings: ТОŃ
иŃгОО
- label_overview: ĐŃ
ĐťŃĐť
- label_version: ĐĽŃвиНйаŃ
- label_version_new: Đ¨Đ¸Đ˝Ń Ń
ŃвиНйаŃ
- label_version_plural: ĐĽŃвиНйаŃŃŃĐ´
- label_close_versions: ĐŇŻĐšŃŃŃ Ń
ŃвиНйаŃŃŃĐ´ŃĐł Ń
ааНаа
- label_confirmation: ĐĐ°ŃаНгааМŃŃНаŃ
- label_export_to: 'Ó¨ÓŠŃ Đ°Đ˛Ń ĐąĐžĐťĐžŃ
ŃĐžŃПаŃ:'
- label_read: ĐŁĐ˝ŃиŃ
...
- label_public_projects: ĐНОн ниКŃиКн ŃÓŠŃНүүд
- label_open_issues: Đ˝ŃŃĐťŃŃŃĐš
- label_open_issues_plural: Đ˝ŃŃĐťŃŃŃĐš
- label_closed_issues: Ń
Đ°Đ°ĐťŃŃĐ°Đš
- label_closed_issues_plural: Ń
Đ°Đ°ĐťŃŃĐ°Đš
- label_x_open_issues_abbr_on_total:
- zero: 0 Đ˝ŃŃĐťŃŃŃĐš / %{total}
- one: 1 Đ˝ŃŃĐťŃŃŃĐš / %{total}
- other: "%{count} Đ˝ŃŃĐťŃŃŃĐš / %{total}"
- label_x_open_issues_abbr:
- zero: 0 Đ˝ŃŃĐťŃŃŃĐš
- one: 1 Đ˝ŃŃĐťŃŃŃĐš
- other: "%{count} Đ˝ŃŃĐťŃŃŃĐš"
- label_x_closed_issues_abbr:
- zero: 0 Ń
Đ°Đ°ĐťŃŃĐ°Đš
- one: 1 Ń
Đ°Đ°ĐťŃŃĐ°Đš
- other: "%{count} Ń
Đ°Đ°ĐťŃŃĐ°Đš"
- label_total: ĐиКŃ
- label_permissions: ĐӊвŃÓŠÓŠŃНүүд
- label_current_status: ĐдООгиКн ŃӊНӊв
- label_new_statuses_allowed: ШинŃŃŃ ĐžĐťĐłĐžĐś йОНОŃ
ŃӊНвүүд
- label_all: йүгд
- label_none: Ń
ООŃОн
- label_nobody: Ń
ŃĐ˝ Ń ĐąĐ¸Ń
- label_next: ĐĐ°ŃаагиКн
- label_previous: ӨПнӊŃ
- label_used_by: ĐĽŃŃŃгНŃгддŃĐł
- label_details: ĐŃНгŃŃŃнгүК
- label_add_note: ТŃПдŃгНŃĐť Đ˝ŃĐźŃŃ
- label_per_page: ĐŃĐł Ń
ŃŃĐ´Ńанд
- label_calendar: ĐаНондаŃŃ
- label_months_from: ĐĄĐ°ŃŃŃĐ´ŃĐł Ń
аанааŃ
- label_gantt: ĐĐ°Đ˝Ń Đ´Đ¸Đ°ĐłŃĐ°Đź
- label_internal: ĐĐžŃООд
- label_last_changes: "ŃүүНиКн %{count} ÓŠÓŠŃŃĐťÓŠĐťŃŇŻŇŻĐ´"
- label_change_view_all: ĐŇŻŃ
ÓŠÓŠŃŃĐťÓŠĐťŃүүдиКг Ń
Đ°ŃĐ°Ń
- label_personalize_page: ĐĐ˝Ń Ń
ŃŃĐ´ŃŃĐł ÓŠÓŠŃŃ ĐˇĐžŃиŃНан ÓŠÓŠŃŃĐťÓŠŃ
- label_comment: ТаКНйаŃ
- label_comment_plural: ТаКНйаŃŃŃĐ´
- label_x_comments:
- zero: ŃŃŃĐłŃгдŃĐť йаКŃ
гүК
- one: 1 ŃŃŃĐłŃгдŃĐťŃŃĐš
- other: "%{count} ŃŃŃĐłŃгдŃĐťŃŃĐš"
- label_comment_add: Đ˘Đ°ĐšĐťĐąĐ°Ń Đ˝ŃĐźŃŃ
- label_comment_added: Đ˘Đ°ĐšĐťĐąĐ°Ń Đ˝ŃĐźŃгдНŃŃ
- label_comment_delete: ТаКНйаŃŃŃĐ´ ŃŃŃгаŃ
- label_query: ĐĽŃŃŃгНŃĐłŃиКн ŃОдОŃŃ
ОКНŃОн Đ°ŃŃŃĐťŃ
- label_query_plural: ĐĽŃŃŃгНŃĐłŃиКн ŃОдОŃŃ
ОКНŃОн Đ°ŃŃŃĐťŃŃŃĐ´
- label_query_new: ШинŃŃŃ Ń
ŃŃŃгНŃĐłŃиКн ŃОдОŃŃ
ОКНŃОн Đ°ŃŃŃĐťŃ ŇŻŇŻŃĐłŃŃ
- label_filter_add: ШүүНŃŇŻŇŻŃ Đ˝ŃĐźŃŃ
- label_filter_plural: ШүүНŃŇŻŇŻŃŇŻŇŻĐ´
- label_equals: йОН
- label_not_equals: йиŃ
- label_in_less_than: Đ°Đ°Ń ĐąĐ°ĐłĐ°
- label_in_more_than: Đ°Đ°Ń Đ¸Ń
- label_greater_or_equal: '>='
- label_less_or_equal: '<='
- label_in: Đ´ĐžŃĐžŃ
- label_today: ӊнӊӊдӊŃ
- label_all_time: йүŃ
Ń
ŃгаŃĐ°Đ°
- label_yesterday: ÓŠŃигдӊŃ
- label_this_week: ŃĐ˝Ń Đ´ĐžĐťĐžĐž Ń
ОнОг
- label_last_week: ӊнгӊŃŃÓŠĐ˝ дОНОО Ń
ОнОг
- label_last_n_days: "ŃүүНиКн %{count} ÓŠĐ´ŃŇŻŇŻĐ´"
- label_this_month: ŃĐ˝Ń ŃĐ°Ń
- label_last_month: ŃүүНиКн ŃĐ°Ń
- label_this_year: ŃĐ˝Ń ĐśĐ¸Đť
- label_date_range: ĐĽŃĐˇĐłĐ°Đ°Ń ĐžĐłĐ˝ĐžĐž
- label_less_than_ago: йага ÓŠĐ´ŃиКн Đ´ĐžŃĐžŃ
- label_more_than_ago: иŃ
ÓŠĐ´ŃиКн Đ´ĐžŃĐžŃ
- label_ago: ÓŠĐ´ŃиКн ӊПнӊ
- label_contains: Đ°ĐłŃŃНМ йаКгаа
- label_not_contains: Đ°ĐłŃŃНаагүК
- label_day_plural: ÓŠĐ´ŃŇŻŇŻĐ´
- label_repository: РопОСиŃĐžŃи
- label_repository_plural: РопОСиŃĐžŃŃŃĐ´
- label_browse: ҎСŃŃ
- label_modification: "%{count} ÓŠÓŠŃŃĐťÓŠĐťŃ"
- label_modification_plural: "%{count} ÓŠÓŠŃŃĐťÓŠĐťŃŇŻŇŻĐ´"
- label_branch: ХаНйаŃ
- label_tag: ШОŃгО
- label_revision: ĐĽŃвиНйаŃ
- label_revision_plural: ĐĽŃвиНйаŃŃŃĐ´
- label_revision_id: "%{value} ĐĽŃвиНйаŃ"
- label_associated_revisions: маПааŃĐ°ĐťŃĐ°Đš Ń
ŃвиНйаŃŃŃĐ´
- label_added: Đ˝ŃĐźŃгдŃŃĐ˝
- label_modified: ÓŠÓŠŃŃНӊгдŃÓŠĐ˝
- label_copied: Ń
ŃŃĐťŃĐ°Đ˝
- label_renamed: Đ˝ŃŃиКг Đ˝Ń ÓŠÓŠŃŃиНŃÓŠĐ˝
- label_deleted: ŃŃŃгаŃĐ°Đ˝
- label_latest_revision: ХүүНиКн үоиКн Ń
ŃвиНйаŃ
- label_latest_revision_plural: ХүүНиКн үоиКн Ń
ŃвиНйаŃŃŃĐ´
- label_view_revisions: ĐĽŃвиНйаŃŃŃĐ´ŃĐł Ń
Đ°ŃĐ°Ń
- label_view_all_revisions: ĐŇŻŃ
Ń
ŃвиНйаŃŃŃĐ´ŃĐł Ń
Đ°ŃĐ°Ń
- label_max_size: Maximum size
- label_sort_highest: маПгиКн Đ´ŃŃŃ
- label_sort_higher: ĐŃŃŃ Đ˝Ń
- label_sort_lower: ĐĐžĐžŃ Đ˝Ń
- label_sort_lowest: маПгиКн дООŃ
- label_roadmap: ĐĽÓŠŃÓŠŃ
- label_roadmap_due_in: "%{value} Đ´ĐžŃĐžŃ Đ´ŃŃŃгаŃ
"
- label_roadmap_overdue: "%{value} ĐžŃОКŃŃОн"
- label_roadmap_no_issues: ĐĐ˝Ń Ń
ŃвиНйаŃŃ Đ°ŃŃŃĐ´Đ°Đť йаКŃ
гүК йаКна
- label_search: ĐĽĐ°ĐšŃ
- label_result_plural: ŇŽŃ Đ´ŇŻĐ˝
- label_all_words: ĐŇŻŃ
ŇŻĐłŃ
- label_wiki: Đики
- label_wiki_edit: Đики СаŃваŃ
- label_wiki_edit_plural: Đики СаŃваŃŃŃĐ´
- label_wiki_page: Đики Ń
ŃŃĐ´Đ°Ń
- label_wiki_page_plural: Đики Ń
ŃŃĐ´Đ°Ń
- label_index_by_title: ĐĐ°ŃŃĐłĐ°Đ°Ń ŃŃŃПйŃĐťŃŃ
- label_index_by_date: ĐĐłĐ˝ĐžĐžĐłĐžĐžŃ ŃŃŃПйŃĐťŃŃ
- label_current_version: ĐдООгиКн Ń
ŃвиНйаŃ
- label_preview: ĐŻĐźĐ°Ń Ń
Đ°ŃагдаŃ
ŃĐł ŃаНгаŃ
- label_feed_plural: Feeds
- label_changes_details: ĐŇŻŃ
ÓŠÓŠŃŃĐťÓŠĐťŃүүдиКн Đ´ŃНгŃŃŃнгүК
- label_issue_tracking: ĐŃŃŃĐ´Đ°Đť Ń
ŃнаŃ
- label_spent_time: ĐĐ°ŃŃŃŃĐťŃĐ°Đ˝ Ń
ŃгаŃĐ°Đ°
- label_f_hour: "%{value} ŃĐ°Đł"
- label_f_hour_plural: "%{value} ŃĐ°Đł"
- label_time_tracking: ĐĽŃгаŃĐ°Đ°Đł Ń
ŃнаŃ
- label_change_plural: Ó¨ÓŠŃŃĐťÓŠĐťŃŇŻŇŻĐ´
- label_statistics: ĐĄŃĐ°ŃиŃŃик
- label_commits_per_month: ĐĄĐ°ŃĐ´ Ń
иКŃŃĐ˝ кОППиŃŃĐ˝ ŃОО
- label_commits_per_author: ĐĐžŃ
Đ¸ĐžĐłŃ ĐąŇŻŃиКн Ń
ŃвŃĐ´ кОППиŃŃĐ˝ ŃОО
- label_view_diff: ЯНгаанŃŃĐ´ŃĐł Ń
Đ°ŃĐ°Ń
- label_diff_inline: Đ´ĐžŃĐžŃ Đ˝Ń
- label_diff_side_by_side: СŃŃŃĐłŃүүНМ
- label_options: ТОŃ
иŃгОО
- label_copy_workflow_from: ĐМНŃĐ˝ Đ´Đ°ŃааННŃĐł Ń
ŃŃНаŃ
- label_permissions_report: ĐӊвŃÓŠÓŠŃНүүдиКн ŃайНиŃ
- label_watched_issues: ĐМигНагдаМ йаКгаа Đ°ŃŃŃĐ´ĐťŃŃĐ´
- label_related_issues: маПааŃĐ°ĐťŃĐ°Đš Đ°ŃŃŃĐ´ĐťŃŃĐ´
- label_applied_status: ĐНгОŃОн ŃӊНӊв
- label_loading: ĐŃааНМ йаКна...
- label_relation_new: Đ¨Đ¸Đ˝Ń Ń
аПааŃĐ°Đť
- label_relation_delete: маПааŃĐťŃĐł ŃŃŃгаŃ
- label_relates_to: ŃнгиКн Ń
аПааŃĐ°ĐťŃĐ°Đš
- label_duplicates: Ń
ĐžŃ Ń
аПааŃĐ°ĐťŃĐ°Đš
- label_duplicated_by: давŃ
Đ°ŃĐ´ŃŃĐťŃĐ°Đ˝ ŃСŃĐ˝
- label_blocks: ŃĐ°Đ°ŃĐ´Đ°Ń
Ń
аПааŃĐ°ĐťŃĐ°Đš
- label_blocked_by: йНОкОНŃОн ŃСŃĐ˝
- label_precedes: ŃŃŃĐ´ŃиНаŃ
Ń
аПааŃĐ°ĐťŃĐ°Đš
- label_follows: дагаМ
- label_end_to_start: Ń
ĐžĐšĐ˝ĐžĐžŃ Đ˝Ń ŃŃĐ°ĐłŃĐ°Đ°
- label_end_to_end: Ń
ĐžĐšĐ˝ĐžĐžŃ Đ˝Ń Ń
ОКŃОО
- label_start_to_start: ŃŃĐ´Đ°Đ°Ń Đ˝Ń ŃŃагаа
- label_start_to_end: ŃŃĐ´Đ°Đ°Ń Đ˝Ń Ń
ОКŃОО
- label_stay_logged_in: ĐĐ˝Ń ĐşĐžĐźŃŃŃĐľŃ Đ´ŃŃŃ ŃанаŃ
- label_disabled: идŃвŃ
гүК йОНŃОн
- label_show_completed_versions: ĐŇŻĐšŃŃĐ´ Ń
ŃвиНйаŃŃŃĐ´ŃĐł Ń
Đ°ŃŃŃНаŃ
- label_me: йи
- label_board: ФОŃŃĐź
- label_board_new: Đ¨Đ¸Đ˝Ń ŃĐžŃŃĐź
- label_board_plural: ФОŃŃĐźŃŃĐ´
- label_board_locked: ТүгМŃŃŃŃĐš
- label_board_sticky: Sticky
- label_topic_plural: ĐĄŃдвүүд
- label_message_plural: ĐŃŃваŃŃŃĐ´
- label_message_last: ХүүНиКн СŃŃваŃ
- label_message_new: Đ¨Đ¸Đ˝Ń ĐˇŃŃваŃ
- label_message_posted: ĐŃŃĐ˛Đ°Ń Đ˝ŃĐźŃгдНŃŃ
- label_reply_plural: ĐĽĐ°ŃиŃĐťŃŃŃĐ´
- label_send_information: ĐĐ°Đ˝ŃĐ˝Ń ĐźŃĐ´ŃŃННиКг Ń
ŃŃŃгНŃĐłŃид иНгŃŃŃ
- label_year: ĐиН
- label_month: ĐĄĐ°Ń
- label_week: ĐОНОО Ń
ОнОг
- label_date_from: ĐĽŃСŃŃĐ˝ŃŃŃ
- label_date_to: ĐĽŃдиК Ń
ŇŻŃŃŃĐť
- label_language_based: ĐĽŃŃŃгНŃĐłŃиКн Ń
ŃĐťĐ˝Đ°Ń ŃĐ°ĐťŃгааНан
- label_sort_by: "%{value} ŃаНйаŃĐ°Đ°Ń Đ˝Ń ŃŃŃПйŃĐťŃŃ
"
- label_send_test_email: ТŃŃŃиŃ
ĐźŃКН иНгŃŃŃ
- label_feeds_access_key: RSS Ń
андаŃ
ŃŇŻĐťŃ
ŇŻŇŻŃ
- label_missing_feeds_access_key: RSS Ń
андаŃ
ŃŇŻĐťŃ
ŇŻŇŻŃ Đ°ĐťĐłĐ°
- label_feeds_access_key_created_on: "RSS Ń
андаНŃŃĐ˝ ŃŇŻĐťŃ
ŇŻŇŻŃ %{value}-иКн ӊПнӊ ŇŻŇŻŃŃŃĐ˝"
- label_module_plural: ĐОдŃĐťŃŃĐ´
- label_added_time_by: "%{author} %{age}-иКн ӊПнӊ Đ˝ŃĐźŃŃĐ˝"
- label_updated_time_by: "%{author} %{age}-иКн ӊПнӊ ÓŠÓŠŃŃиНŃÓŠĐ˝"
- label_updated_time: "%{value} -иКн ӊПнӊ ÓŠÓŠŃŃНӊгдŃÓŠĐ˝"
- label_jump_to_a_project: ТӊŃÓŠĐť ŃŇŻŇŻ ĐžŃиŃ
...
- label_file_plural: ФаКНŃŃĐ´
- label_changeset_plural: Ó¨ÓŠŃŃĐťÓŠĐťŃŇŻŇŻĐ´
- label_default_columns: ĐĄŃандаŃŃ ĐąĐ°ĐłĐ°Đ˝ŃŃĐ´
- label_no_change_option: (Ó¨ÓŠŃŃĐťÓŠĐťŃ ĐąĐ°ĐšŃ
гүК)
- label_bulk_edit_selected_issues: ХОнгОгдŃОн Đ°ŃŃŃĐ´ĐťŃŃĐ´ŃĐł ĐąÓŠÓŠĐ˝ÓŠÓŠŃ ĐˇĐ°ŃваŃНаŃ
- label_theme: ХиŃŃоПиКн ĐиСаКн
- label_default: ĐĄŃандаŃŃ
- label_search_titles_only: ĐӊвŃ
ÓŠĐ˝ гаŃŃиг Ń
Đ°ĐšŃ
- label_user_mail_option_all: "ĐиниК йүŃ
ŃÓŠŃÓŠĐť Đ´ŃŃŃŃ
йүŃ
үСŃгдНүүдиКн Ń
ŃвŃĐ´"
- label_user_mail_option_selected: "ХОнгОгдŃОн ŃÓŠŃНүүдиКн Ń
ŃвŃĐ´ йүŃ
үСŃгдŃĐť Đ´ŃŃŃ..."
- label_user_mail_no_self_notified: "ĐиниК ÓŠÓŠŃиКн Ń
иКŃŃĐ˝ ÓŠÓŠŃŃĐťÓŠĐťŃүүдиКн ŃŃŃ
Đ°Đš надад ĐźŃĐ´ŃгдŃŃ
Ń
ŃŃŃггүК"
- label_registration_activation_by_email: Đ´Đ°Đ˝ŃŃĐł иПŃКНŃŃŃ Đ¸Đ´ŃвŃ
МүүНŃŃ
- label_registration_manual_activation: Đ´Đ°Đ˝ŃŃĐł гаŃĐ°Đ°Ń Đ¸Đ´ŃвŃ
МүүНŃŃ
- label_registration_automatic_activation: Đ´Đ°Đ˝ŃŃĐł авŃОПаŃĐ°Đ°Ń Đ¸Đ´ŃвŃ
МүүНŃŃ
- label_display_per_page: 'ĐŃĐł Ń
ŃŃĐ´Ńанд: %{value}'
- label_age: ĐĐ°Ń
- label_change_properties: ТОŃ
иŃгООг ÓŠÓŠŃŃĐťÓŠŃ
- label_general: ĐŃÓŠĐ˝Ń
иК
- label_more: ĐŚĐ°Đ°Ń Đ˝Ń
- label_scm: SCM
- label_plugins: ĐОдŃĐťŃŃĐ´
- label_ldap_authentication: LDAP Đ˝ŃвŃŃŃŃ
гОŃиП
- label_downloads_abbr: D/L
- label_optional_description: ĐŃŃŃĐ˝ ŃаКНйаŃ
- label_add_another_file: ĐĐ°Ń
ин ŃаКН Đ˝ŃĐźŃŃ
- label_preferences: ТОŃ
иŃгОО
- label_chronological_order: Ќагаан ŃОНгОКн ŇŻŃгиКн Đ´Đ°ŃааННааŃ
- label_reverse_chronological_order: ĐŁŃвŃŃ Ńагаан ŃОНгОКн ŇŻŃгиКн Đ´Đ°ŃааННааŃ
- label_planning: ТӊНӊвНӊНŃ
- label_incoming_emails: ĐŃŃŃĐ˝ ĐźŃКНүүд
- label_generate_key: ТүНŃ
ŇŻŇŻŃ ŇŻŇŻŃĐłŃŃ
- label_issue_watchers: ĐМигНагŃид
- label_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"
-
- button_login: ĐŃвŃŃŃŃ
- button_submit: ĐНгŃŃŃ
- button_save: мадгаНаŃ
- button_check_all: ĐүгдиКг ŃОнгО
- button_uncheck_all: ĐүгдиКг ŇŻĐť ŃОнгО
- button_delete: ĐŁŃŃгаŃ
- button_create: ŇŽŇŻŃĐłŃŃ
- button_create_and_continue: ŇŽŇŻŃĐłŃŃĐ´ ŃĐ°Đ°Ń ŇŻŃĐłŃНМНүүНŃŃ
- button_test: ТŃŃŃиŃ
- button_edit: ĐĐ°ŃваŃНаŃ
- button_add: ĐŃĐźŃŃ
- button_change: Ó¨ÓŠŃŃĐťÓŠŃ
- button_apply: Ó¨ÓŠŃŃĐťÓŠĐťŃиКг Ń
адгаНаŃ
- button_clear: ĐŚŃвŃŃĐťŃŃ
- button_lock: ТүгМиŃ
- button_unlock: ТүгМŃŃĐł ŃаКНаŃ
- button_download: ТаŃĐ°Ń
- button_list: ĐĐ°ĐłŃĐ°Đ°ĐťŃ
- button_view: ĐĽĐ°ŃĐ°Ń
- button_move: ĐÓŠÓŠŃ
- button_move_and_follow: ĐÓŠÓŠ ĐąĐ°Ń Đ´Đ°ĐłĐ°
- button_back: ĐŃŃĐ°Ń
- button_cancel: ĐОНиŃ
- button_activate: ĐĐ´ŃвŃ
МүүНŃŃ
- button_sort: ĐŃŃПйŃĐťŃŃ
- button_log_time: ĐОг Ń
иКŃŃĐ˝ Ń
ŃгаŃĐ°Đ°
- button_rollback: ĐĐ˝Ń Ń
ŃĐ˛Đ¸ĐťĐąĐ°Ń ŃŃŃ ĐąŃŃĐ°Ń
- button_watch: ĐМигНаŃ
- button_unwatch: ĐМигНаŃ
Đ°Đ° йОНиŃ
- button_reply: ĐĽĐ°ŃиŃНаŃ
- button_archive: ĐŃŃ
ивНаŃ
- button_unarchive: ĐŃŃ
ивŃĐł СадНаŃ
- button_reset: ĐĐ˝Ń
Đ˝Ń ŃŃĐłŃŃĐ´
- button_rename: ĐŃŃиКг Đ˝Ń ŃОНиŃ
- button_change_password: ĐŃŃŃ ŇŻĐłŃŃ ÓŠÓŠŃŃĐťÓŠŃ
- button_copy: ĐĽŃŃНаŃ
- button_copy_and_follow: ĐÓŠÓŠ ĐąĐ°Ń Đ´Đ°ĐłĐ°
- button_annotate: Đ˘Đ°ĐšĐťĐąĐ°Ń Ń
авŃĐ°ŃгаŃ
- button_update: ШинŃŃĐťŃŃ
- button_configure: ТОŃ
иŃŃŃНаŃ
- button_quote: ĐŃĐťŃĐť
- button_duplicate: ĐĽŃŃНйаŃ
- button_show: ҎСŃŃ
-
- status_active: идŃвŃ
ŃŃĐš
- status_registered: йүŃŃгүүНŃŃĐ˝
- status_locked: ŃүгМŃŃŃŃĐš
-
- version_status_open: Đ˝ŃŃĐťŃŃŃĐš
- version_status_locked: ŃүгМŃŃŃŃĐš
- version_status_closed: Ń
Đ°Đ°ĐťŃŃĐ°Đš
-
- field_active: идŃвŃ
ŃŃĐš
-
- text_select_mail_notifications: ĐŻĐźĐ°Ń ŇŻĐľĐ´ иПŃКНŃŃŃ ĐźŃĐ´ŃгдŃĐť иНгŃŃŃ
иКг ŃОнгОнО ŃŃ.
- text_regexp_info: eg. ^[A-Z0-9]+$
- text_min_max_length_info: 0 ĐłŃвŃĐť ŃĐźĐ°Ń Ń Ń
ŃСгааŃгүК ĐłŃŃŃĐ˝ ŇŻĐł
- text_project_destroy_confirmation: Та ŃĐ˝Ń ŃÓŠŃÓŠĐť йОНООд ĐąŃŃĐ°Đ´ ĐźŃĐ´ŃŃННиКг Đ˝Ń ŇŻĐ˝ŃŃ
ŃŃŃ ŃŃŃĐłĐ°ĐźĐ°Đ°Ń ĐąĐ°ĐšĐ˝Đ° ŃŃ ?
- text_subprojects_destroy_warning: "ĐŁĐł ŃÓŠŃНиКн Đ´ŃĐ´ ŃÓŠŃНүүд : %{value} Đ˝Ń ĐąĐ°Ń ŃŃŃгагдаŃ
йОНнО."
- text_workflow_edit: ĐМНŃĐ˝ Đ´Đ°ŃааННŃĐł ÓŠÓŠŃŃĐťÓŠŃ
иКн ŃŃНд Ń
андаНŃŃĐ˝ ŃŃŃ
йОНОн Đ°ŃŃŃĐ´ĐťŃĐ˝ ŃигНŃНиКг ŃОнгОнО ŃŃ
- text_are_you_sure: Та иŃĐłŃĐťŃŃĐš йаКна ŃŃ ?
- text_journal_changed: "%{label} %{old} йаКŃĐ°Đ˝ Đ˝Ń %{new} йОНОв"
- text_journal_set_to: "%{label} %{value} йОНгОМ ÓŠÓŠŃŃиННӊӊ"
- text_journal_deleted: "%{label} ŃŃŃŃĐ°Đ˝ (%{old})"
- text_journal_added: "%{label} %{value} Đ˝ŃĐźŃгдŃŃĐ˝"
- text_tip_issue_begin_day: ŃĐ˝Ń ÓŠĐ´ÓŠŃ ŃŃ
ĐťŃŃ
аМиН
- text_tip_issue_end_day: ŃĐ˝Ń ÓŠĐ´ÓŠŃ Đ´ŃŃŃĐ°Ń
аМиН
- text_tip_issue_begin_end_day: ŃĐ˝Ń ÓŠĐ´ÓŠŃ ŃŃ
ĐťŃŃĐ´ ĐźÓŠĐ˝ Đ´ŃŃŃŃ ĐąĐ°ĐšĐłĐ°Đ° аМиН
- text_project_identifier_info: 'Only lower case letters (a-z), numbers, dashes and underscores are allowed.
Once saved, the identifier can not be changed.'
- text_caracters_maximum: "Đ´ŃŃĐ´ ŃĐ°Đť Đ˝Ń %{count} ŇŻŃŃĐł."
- text_caracters_minimum: "маПгиКн йагадаа ŃĐ´Đ°Đś %{count} ŃŃПдŃĐłŃ ĐąĐ°ĐšŃ
."
- text_length_between: "ĐŁŃŃ Đ˝Ń ĐąĐ°ĐłĐ°Đ´Đ°Đ° %{min}, иŃ
Đ´ŃŃ %{max} ŃŃПдŃĐłŃ."
- text_tracker_no_workflow: ĐĐ˝ŃŃ
ŇŻŇŻ Đ°ŃŃŃĐ´ĐťŃĐ˝ ŃигНŃНд ŃĐźĐ°Ń Ń Đ°ĐśĐťŃĐ˝ Đ´Đ°ŃааНаН ŃОдОŃŃ
ОКНОгдООгүК йаКна
- text_unallowed_characters: ĐĽŃŃŃгНŃĐś йОНОŃ
гүК ŃŃПдŃĐłŃŇŻŇŻĐ´
- text_comma_separated: ТаŃĐťĐ°ĐťĐ°Đ°Ń ĐˇĐ°Đ°ĐłĐťĐ°Đ˝ ОНОн ŃŃга ĐžŃŃŃНМ йОНнО.
- text_line_separated: Multiple values allowed (one line for each value).
- text_issues_ref_in_commit_messages: ĐОППиŃиКн СŃŃваŃŃŃĐ´Đ°Đ´ Ń
аПааŃŃŃĐťŃĐ°Đ˝ йОНОн йаКнгŃĐ˝ Đ°ŃŃŃĐ´ĐťŃŃĐ´
- text_issue_added: "ĐŃŃŃĐ´Đ°Đť %{id} - иКг Ń
ŃŃŃгНŃĐłŃ %{author} ĐźŃĐ´ŃгдŃŃĐ˝ йаКна."
- text_issue_updated: "ĐŃŃŃĐ´Đ°Đť %{id} - иКг Ń
ŃŃŃгНŃĐłŃ %{author} ÓŠÓŠŃŃиНŃÓŠĐ˝ йаКна."
- text_wiki_destroy_confirmation: Та ŃĐ˝Ń Đ˛Đ¸ĐşĐ¸ йОНОн Ń
ОНйОгдОŃ
йүŃ
ĐźŃĐ´ŃŃННиКг ŇŻĐ˝ŃŃ
ŃŃŃ ŃŃŃĐłĐ°ĐźĐ°Đ°Ń ĐąĐ°ĐšĐ˝Đ° ŃŃ ?
- text_issue_category_destroy_question: "ĐĐ˝Ń Đ°Đ˝ĐłĐ¸ĐťĐ°ĐťĐ´ СаŃиП Đ°ŃŃŃĐ´ĐťŃŃĐ´ (%{count}) ĐžŃŃОн йаКна. Та ŃĐ°Ń
Đ˛Ń ?"
- text_issue_category_destroy_assignments: ĐŃŃŃĐ´ĐťŃŃĐ´ŃĐł ŃĐ˝Ń Đ°Đ˝ĐłĐ¸ĐťĐťĐ°Đ°Ń Đ°Đ˛Đ°Ń
- text_issue_category_reassign_to: ĐŃŃŃĐ´ĐťŃŃĐ´ŃĐł ŃĐ˝Ń Đ°Đ˝ĐłĐ¸ĐťĐ°ĐťĐ´ Đ´Đ°Ń
ин ОнООŃ
- text_user_mail_option: "ХОнгОгдООгүК ŃÓŠŃНүүдиКн Ń
ŃвŃĐ´, ŃĐ° СӊвŃ
ÓŠĐ˝ ÓŠÓŠŃиКнŃ
ÓŠÓŠ аМигНаМ йаКгаа ĐˇŇŻĐšĐťŃ ŃĐźŃŃ Ńанд Ń
аПааŃĐ°Đš СүКНŃиКн ŃĐ°ĐťĐ°Đ°Ń ĐźŃĐ´ŃгдŃĐť аваŃ
йОНнО (Đ˘Đ°Đ˝Ń ĐžŃŃŃĐťŃĐ°Đ˝ Đ°ŃŃŃĐ´Đ°Đť, ŃŃвŃĐť Ńанд ОнООŃОн ĐłŃŃ
ĐźŃŃ)."
- text_no_configuration_data: "мандаНŃŃĐ˝ ŃŃŃ
ŇŻŇŻĐ´, ŃигНŃНүүд, Đ°ŃŃŃĐ´ĐťŃĐ˝ ŃӊНвүүд йОНОн аМНŃĐ˝ Đ´Đ°ŃааННŃĐ˝ ŃŃŃ
Đ°Đš ĐźŃĐ´ŃŃННиКг Ń
Đ°ŃĐ°Đ°Ń
Đ°Đ˝ ĐžŃŃŃНаагүК йаКна.\nТа ŃŃандаŃŃ ÓŠĐłÓŠĐłĐ´ĐťŇŻŇŻĐ´Đ¸ĐšĐł Đ´Đ°ŃŃĐšŃ
Đ°Đ˝ ĐžŃŃŃНаŃ
ŃĐł СӊвНӊМ йаКна, ĐžŃŃŃĐťŃĐ°Đ˝ Ń
ОКнО ŃĐ° СаŃваŃНаМ йОНнО."
- text_load_default_configuration: ĐĄŃандаŃŃ ÓŠĐłÓŠĐłĐ´ĐťĐ¸ĐšĐł Đ°ŃааНаŃ
- text_status_changed_by_changeset: "%{value} ÓŠÓŠŃŃĐťÓŠĐťŃÓŠĐ´ Ń
иКгдŃŃĐ˝."
- text_issues_destroy_confirmation: 'Та ŃОнгОгдŃОн Đ°ŃŃŃĐ´ĐťŃŃĐ´ŃĐł ŇŻĐ˝ŃŃ
ŃŃŃ ŃŃŃĐłĐ°ĐźĐ°Đ°Ń ĐąĐ°ĐšĐ˝Đ° ŃŃ ?'
- text_select_project_modules: 'ĐĐ˝Ń ŃÓŠŃНиКн Ń
ŃвŃĐ´ идŃвŃ
МүүНŃŃ
ПОдŃĐťŃŃĐ´Đ°Đ° ŃОнгОнО ŃŃ:'
- text_default_administrator_account_changed: ĐĄŃандаŃŃ Đ°Đ´ĐźĐ¸Đ˝Đ¸ŃŃŃĐ°ŃĐžŃŃĐ˝ йүŃŃĐłŃĐť ÓŠÓŠŃŃНӊгдНӊӊ
- text_file_repository_writable: мавŃŃĐ°ĐťŃ ŃаКН Ń
адгаНаŃ
Ń
авŃĐ°Ń ŃŃŃ ĐąĐ¸ŃиŃ
ŃŃŃ
ŃŃĐš
- text_plugin_assets_writable: ĐНагин ПОдŃНиКн Đ°ŃŃĐľŃ Ń
авŃĐ°Ń ŃŃŃ ĐąĐ¸ŃиŃ
ŃŃŃ
ŃŃĐš
- text_rmagick_available: RMagick ŃŃŃНгагдŃĐ°Đ˝ (СааваН йиŃ)
- text_destroy_time_entries_question: "Đ˘Đ°Đ˝Ń ŃŃŃгаŃ
ĐłŃĐś йаКгаа Đ°ŃŃŃĐ´ĐťŃŃĐ´ Đ´ŃŃŃ Đ˝Đ¸ĐšŃ %{hours} ŃĐ°Đł СаŃŃŃŃĐťŃĐ°Đ˝ ŃĐź йаКна, ŃĐ° ŃĐ°Ń
Đ˛Ń ?"
- text_destroy_time_entries: ĐŃĐ´ŃгдŃŃĐ˝ ŃĐ°ĐłŃŃĐ´ŃĐł ŃŃŃгаŃ
- text_assign_time_entries_to_project: ĐŃĐ´ŃгдŃŃĐ˝ Đ°ŃŃŃĐ´ĐťŃŃĐ´ŃĐł ŃÓŠŃӊНд ОнООŃ
- text_reassign_time_entries: 'ĐŃĐ´ŃгдŃŃĐ˝ Đ°ŃŃŃĐ´ĐťŃŃĐ´ŃĐł ŃĐ˝Ń Đ°ŃŃŃдаНд Đ´Đ°Ń
ин ОнОО:'
- text_user_wrote: "%{value} йиŃиŃ
Đ´ŃŃ:"
- text_enumeration_destroy_question: "ĐĐ˝Ń ŃŃгад %{count} ОйŃĐľĐşŃ ĐžĐ˝ĐžĐžĐłĐ´ŃОн йаКна."
- text_enumeration_category_reassign_to: 'ТŃĐ´ĐłŃŃŃиКг ŃĐ˝Ń ŃŃгад Đ´Đ°Ń
ин ОнОО:'
- text_email_delivery_not_configured: "ĐĐźŃКНиКн ŃĐžŃ
иŃгООг Ń
Đ°ŃĐ°Đ°Ń
Đ°Đ˝ ŃĐžŃ
иŃŃŃНаагүК йаКна, ŃиКПŃŃŃ Đ¸ĐźŃКН ĐźŃĐ´ŃгдŃĐť ŃвŃŃНаŃ
йОНОПМгүК йаКна.\nSMTP ŃĐľŃвŃŃŃŃ config/configuration.yml ŃаКН Đ´ĐžŃĐžŃ ŃĐžŃ
иŃŃŃНаад ŃÓŠŃНиКн ПоноМоŃŃŃ Đ´Đ°Ń
иад ŃŃ
НүүНŃŃŃŃĐš."
- text_repository_usernames_mapping: "РопОСиŃĐžŃиКн НОгд йаКгаа йүŃ
Ń
ŃŃŃгНŃĐłŃиКн Đ˝ŃŃŇŻŇŻĐ´ŃĐ´ Ń
Đ°ŃгаНСŃĐ°Đ˝ ТӊŃНиКн ĐĐľĐ˝ĐľĐśĐľŃ ŃиŃŃоПд йүŃŃĐłŃĐťŃŃĐš Ń
ŃŃŃгНŃĐłŃдиКг ХОнгОŃ
ŃĐźŃŃ ŃинŃŃĐ¸ĐťĐ˝Ń ŇŻŇŻ.\nТӊŃНиКн ĐźĐľĐ˝ĐľĐśĐľŃ ĐąĐžĐťĐžĐ˝ ŃопОСиŃĐžŃид йаКгаа иМиНŃ
ŃĐ˝ Đ˝ŃŃ ŃĐźŃŃ Đ¸ĐźŃКНŃŃĐš Ń
ŃŃŃгНŃĐłŃид Ń
Đ°ŃиНŃĐ°Đ˝ Ń
Đ°ŃгаНСна."
- text_diff_truncated: '... ФаКНŃĐ˝ ŃНгавŃŃĐ˝ Ń
ŃПМŃŃ ŇŻĐˇŇŻŇŻĐťŃŃ
ŃĐ´ Đ´Ńндүү ŃŃŃ ĐąĐ°ĐšĐłĐ°Đ° ŃŃŃĐ°Đ°Ń ŃÓŠĐłŃĐłÓŠĐťÓŠÓŠŃ Đ˝Ń Ń
Đ°ŃŃ ŇŻĐˇŇŻŇŻĐťŃв.'
- 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?"
-
- default_role_manager: ĐоноМоŃ
- default_role_developer: мӊгМүүНŃĐłŃ
- default_role_reporter: ĐŃĐ´ŃгдŃĐłŃ
- default_role_non_member: Non member
- default_role_anonymous: Anonymous
- default_tracker_bug: ĐНдаа
- default_tracker_feature: ĐĐ˝ŃНОг
- default_tracker_support: ТŃŃНаПМ
- default_issue_status_new: ШинŃ
- default_issue_status_in_progress: ĐŃ
иŃŃĐ°Đš
- default_issue_status_assigned: ĐнООгдŃОн
- default_issue_status_resolved: ШиКдвŃŃĐťŃгдŃŃĐ˝
- default_issue_status_feedback: Feedback
- default_issue_status_closed: маагдŃĐ°Đ˝
- default_issue_status_rejected: ĐĽŇŻĐťŃŃĐś аваагүК
- default_doc_category_user: ĐĽŃŃŃгНŃĐłŃиКн йиŃиг йаŃиПŃ
- default_doc_category_tech: ТоŃ
никиКн йиŃиг йаŃиПŃ
- default_priority_low: Đага
- default_priority_normal: ĐĽŃвиКн
- default_priority_high: ӨндӊŃ
- default_priority_urgent: ĐŃĐ˝ ŃĐ°ŃĐ°ĐťŃĐ°Đš
- default_priority_immediate: ĐŃĐ˝ Đ´Đ°ŃŃĐš
- default_activity_design: ĐиСаКн
- default_activity_development: мӊгМүүНŃĐťŃ
-
- enumeration_issue_priorities: ĐŃŃŃĐ´ĐťŃĐ˝ СŃŃŃгНŃНүүд
- enumeration_doc_categories: ĐиŃиг йаŃиПŃŃĐ˝ ангиННŃŃĐ´
- enumeration_activities: ҎКН аМиННагаанŃŃĐ´ (Ń
ŃгаŃĐ°Đ°Đł Ń
ŃнаŃ
)
- enumeration_system_activity: ХиŃŃоПиКн үКН аМиННагаа
-
- permission_manage_subtasks: Manage subtasks
- label_profile: Profile
- field_parent_issue: Parent task
- error_unable_delete_issue_status: Unable to delete issue status
- label_subtask_plural: Subtasks
- label_project_copy_notifications: Send email notifications during the project copy
- error_can_not_delete_custom_field: Unable to delete custom field
- error_unable_to_connect: Unable to connect (%{value})
- error_can_not_remove_role: This role is in use and can not be deleted.
- error_can_not_delete_tracker: This tracker contains issues and can't be deleted.
- field_principal: Principal
- label_my_page_block: My page block
- notice_failed_to_save_members: "Failed to save member(s): %{errors}."
- text_zoom_out: Zoom out
- text_zoom_in: Zoom in
- notice_unable_delete_time_entry: Unable to delete time log entry.
- label_overall_spent_time: Overall spent time
- field_time_entries: Log time
- project_module_gantt: Gantt
- project_module_calendar: Calendar
- button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}"
- text_are_you_sure_with_children: Delete issue and all child issues?
- field_text: Text field
- label_user_mail_option_only_owner: Only for things I am the owner of
- setting_default_notification_option: Default notification option
- 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_none: No events
- field_member_of_group: Assignee's group
- field_assigned_to_role: Assignee's role
- notice_not_authorized_archived_project: The project you're trying to access has been archived.
- label_principal_search: "Search for user or group:"
- label_user_search: "Search for user:"
- field_visible: Visible
- setting_emails_header: Emails header
- setting_commit_logtime_activity_id: Activity for logged time
- text_time_logged_by_changeset: Applied in changeset %{value}.
- setting_commit_logtime_enabled: Enable time logging
- notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
- setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
- text_powered_by: Powered by %{link}
+mn:
+ 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: "%Y/%m/%d"
+ short: "%b %d"
+ long: "%Y, %B %d"
+
+ day_names: [Đаваа, ĐŃгПаŃ, ĐŃ
агва, ĐŇŻŃŃв, ĐĐ°Đ°ŃĐ°Đ˝, ĐŃПйа, ĐŃĐź]
+ abbr_day_names: [Đав, ĐŃĐł, ĐŃ
Đ°, ĐŇŻŃ, ĐŃĐ˝, ĐŃĐź, ĐŃĐź]
+
+ # Don't forget the nil at the beginning; there's no such thing as a 0th month
+ month_names: [~, 1-Ń ŃĐ°Ń, 2-Ń ŃĐ°Ń, 3-Ń ŃĐ°Ń, 4-Ń ŃĐ°Ń, 5-Ń ŃĐ°Ń, 6-Ń ŃĐ°Ń, 7-Ń ŃĐ°Ń, 8-Ń ŃĐ°Ń, 9-Ń ŃĐ°Ń, 10-Ń ŃĐ°Ń, 11-Ń ŃĐ°Ń, 12-Ń ŃĐ°Ń]
+ abbr_month_names: [~, 1ŃĐ°Ń, 2ŃĐ°Ń, 3ŃĐ°Ń, 4ŃĐ°Ń, 5ŃĐ°Ń, 6ŃĐ°Ń, 7ŃĐ°Ń, 8ŃĐ°Ń, 9ŃĐ°Ń, 10ŃĐ°Ń, 11ŃĐ°Ń, 12ŃĐ°Ń]
+ # Used in date_select and datime_select.
+ order:
+ - :day
+ - :month
+ - :year
+
+ time:
+ formats:
+ default: "%Y/%m/%d %I:%M %p"
+ time: "%I:%M %p"
+ short: "%d %b %H:%M"
+ long: "%Y, %B %d %H:%M"
+ am: "am"
+ pm: "pm"
+
+ datetime:
+ distance_in_words:
+ half_a_minute: "Ń
Đ°ĐłĐ°Ń ĐźĐ¸Đ˝ŃŃ"
+ less_than_x_seconds:
+ one: "ŃокŃнд ĐžŃŃиП"
+ other: "%{count} ŃокŃндŃŃŃ ĐąĐ°ĐłĐ° Ń
ŃгаŃĐ°Đ°"
+ x_seconds:
+ one: "1 ŃокŃнд"
+ other: "%{count} ŃокŃнд"
+ less_than_x_minutes:
+ one: "ПинŃŃĐ°Đ°Ń ĐąĐ°ĐłĐ° Ń
ŃгаŃĐ°Đ°"
+ other: "%{count} ПинŃŃĐ°Đ°Ń ĐąĐ°ĐłĐ° Ń
ŃгаŃĐ°Đ°"
+ x_minutes:
+ one: "1 ПинŃŃ"
+ other: "%{count} ПинŃŃ"
+ about_x_hours:
+ one: "1 ŃĐ°Đł ĐžŃŃиП"
+ other: "ОКŃОНŃĐžĐžĐłĐžĐžŃ %{count} ŃĐ°Đł"
+ x_days:
+ one: "1 ÓŠĐ´ÓŠŃ"
+ other: "%{count} ÓŠĐ´ÓŠŃ"
+ about_x_months:
+ one: "1 ŃĐ°Ń ĐžŃŃиП"
+ other: "ОКŃОНŃĐžĐžĐłĐžĐžŃ %{count} ŃĐ°Ń"
+ x_months:
+ one: "1 ŃĐ°Ń"
+ other: "%{count} ŃĐ°Ń"
+ about_x_years:
+ one: "ОКŃОНŃĐžĐžĐłĐžĐžŃ 1 МиН"
+ other: "ОКŃОНŃĐžĐžĐłĐžĐžŃ %{count} МиН"
+ over_x_years:
+ one: "1 МиНŃŃŃ Đ¸Ń
"
+ other: "%{count} МиНŃŃŃ Đ¸Ń
"
+ almost_x_years:
+ one: "йаŃĐ°Đł 1 МиН"
+ other: "йаŃĐ°Đł %{count} МиН"
+
+ number:
+ format:
+ separator: "."
+ delimiter: ""
+ precision: 3
+ human:
+ format:
+ delimiter: ""
+ precision: 1
+ storage_units:
+ format: "%n %u"
+ units:
+ byte:
+ one: "ĐĐ°ĐšŃ"
+ other: "ĐĐ°ĐšŃ"
+ kb: "KB"
+ mb: "MB"
+ gb: "GB"
+ tb: "TB"
+
+
+# Used in array.to_sentence.
+ support:
+ array:
+ sentence_connector: "йаŃ"
+ 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: "МагŃĐ°Đ°ĐťŃĐ°Đ´ СаагдаагүК йаКна"
+ exclusion: "нӊӊŃНӊгдŃÓŠĐ˝"
+ invalid: "ĐąŃŃŃŃ"
+ confirmation: "йаŃаНгааМŃĐ°Đ˝ ӊгӊгдӊНŃŃĐš ŃĐ°Đ°ŃĐ°Ń
гүК йаКна"
+ accepted: "Ń
ŇŻĐťŃŃĐś аваŃ
ŃŃŃОК"
+ empty: "Ń
ООŃОн йаКМ йОНОŃ
гүК"
+ blank: "йНанк йаКМ йОНОŃ
гүК"
+ too_long: "Đ´Ńндүү ŃŃŃ ĐąĐ°ĐšĐ˝Đ° (Ń
аПгиКн иŃ
Đ´ŃŃ %{count} ŃŃПдŃĐłŃ)"
+ too_short: "Đ´Ńндүү йОгинО йаКна (Ń
аПгиКн йагадаа %{count} ŃŃПдŃĐłŃ)"
+ wrong_length: "ĐąŃŃŃŃ ŃŃŃŃĐ°Đš йаКна (СааваН %{count} ŃŃПдŃĐłŃ)"
+ taken: "Đ°ĐťŃ Ń
ŃĐ´Đ¸ĐšĐ˝Ń Đ°Đ˛ŃĐ°Đ˝ йаКна"
+ not_a_number: "ŃОО ĐąĐ¸Ń ĐąĐ°ĐšĐ˝Đ°"
+ not_a_date: "Сӊв ОгнОО ĐąĐ¸Ń ĐąĐ°ĐšĐ˝Đ°"
+ 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: "СааваН ŃОндгОК"
+ even: "СааваН ŃŃĐłŃ"
+ greater_than_start_date: "must be greater than start date"
+ not_same_project: "Đ˝ŃĐł иМиН ŃÓŠŃӊНд Ń
аПааŃĐ°Ń
гүК йаКна"
+ circular_dependency: "ĐĐ˝Ń Ń
Đ°ŃŃŃĐ°Đ° Đ˝Ń ĐłĐ¸Đ˝ĐśĐ¸Đ˝(ŃокŃŃŃив) Ń
Đ°ŃŃŃĐ°Đ° ŇŻŇŻŃĐłŃŃ
ŃĐź йаКна"
+ cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
+
+ actionview_instancetag_blank_option: ХОнгОнО ŃŃ
+
+ general_text_No: 'ҎгүК'
+ general_text_Yes: 'ТиКП'
+ general_text_no: 'үгүК'
+ general_text_yes: 'ŃиКП'
+ general_lang_name: 'Mongolian (ĐОнгОН)'
+ general_csv_separator: ','
+ general_csv_decimal_separator: '.'
+ general_csv_encoding: UTF-8
+ general_pdf_encoding: UTF-8
+ general_first_day_of_week: '7'
+
+ notice_account_updated: ĐĐ°Đ˝ŃŃĐł аПМиНŃŃĐ°Đš ÓŠÓŠŃŃиННӊӊ.
+ notice_account_invalid_creditentials: ĐĽŃŃŃгНŃĐłŃиКн Đ˝ŃŃ ŃŃвŃĐť Đ˝ŃŃŃ ŇŻĐł ĐąŃŃŃŃ ĐąĐ°ĐšĐ˝Đ°
+ notice_account_password_updated: ĐŃŃŃ ŇŻĐłĐ¸ĐšĐł аПМиНŃŃĐ°Đš ÓŠÓŠŃŃиННӊӊ.
+ notice_account_wrong_password: ĐŃŃŃŃ Đ˝ŃŃŃ ŇŻĐł
+ notice_account_register_done: Đ¨Đ¸Đ˝Ń Ń
ŃŃŃгНŃĐłŃ Đ°ĐźĐśĐ¸ĐťŃŃĐ°Đš ŇŻŇŻŃĐłŃĐťŃŃ. ĐĐ´ŃвŃ
МүүНŃŃ
иКн ŃŃНд, йидниК ŃĐ°Đ˝Ń ĐťŃŃ Đ¸ĐťĐłŃŃŃŃĐ˝ ĐźŃКН Đ´ĐžŃĐžŃ ĐąĐ°ĐšĐłĐ°Đ° Ń
ĐžĐťĐąĐžĐžŃ Đ´ŃŃŃ Đ´Đ°ŃĐ°Đ°ŃĐ°Đš.
+ notice_account_unknown_email: ŇŽĐť ĐźŃĐ´ŃгдŃŃ
Ń
ŃŃŃгНŃĐłŃ.
+ notice_can_t_change_password: ĐĐ˝Ń ŃŃŃ
гадаад Đ˝ŃвŃŃŃĐťŃŃĐ´ Đ°ŃигНадаг ŃŃŃĐ°Đ°Ń Đ˝ŃŃŃ ŇŻĐłĐ¸ĐšĐł ÓŠÓŠŃŃĐťÓŠŃ
йОНОПМгүК.
+ notice_account_lost_email_sent: Đид ŃĐ°Đ˝ŃĐ´ ĐźŃКНŃŃŃ Đ˝ŃŃŃ ŇŻĐłŃŃ ÓŠÓŠŃŃĐťÓŠŃ
СаавŃŃĐł иНгŃŃŃŃĐ˝ йаКгаа.
+ notice_account_activated: Đ˘Đ°Đ˝Ń Đ´Đ°Đ˝Ń Đ¸Đ´ŃвŃ
МНŃŃ. ĐдОО Đ˝ŃвŃŃŃŃ ĐžŃĐś йОНнО.
+ notice_successful_create: ĐПМиНŃŃĐ°Đš ŇŻŇŻŃĐłŃĐťŃŃ.
+ notice_successful_update: ĐПМиНŃŃĐ°Đš ÓŠÓŠŃŃиННӊӊ.
+ notice_successful_delete: ĐПМиНŃŃĐ°Đš ŃŃŃгаНаа.
+ notice_successful_connection: ĐПМиНŃŃĐ°Đš Ń
ОНйОгдНОО.
+ notice_file_not_found: Đ˘Đ°Đ˝Ń ŇŻĐˇŃŃ
ĐłŃŃŃĐ˝ Ń
ŃŃĐ´Đ°Ń ĐąĐ°ĐšŃ
гүК ŃĐźŃŃ ŃŃŃгагдŃĐ°Đ˝ йаКна.
+ notice_locking_conflict: ӨгӊгдНиКг ÓŠÓŠŃ Ń
ŇŻĐ˝ ÓŠÓŠŃŃиНŃÓŠĐ˝ йаКна.
+ notice_not_authorized: Танд ŃĐ˝Ń Ń
ŃŃĐ´ŃŃĐł үСŃŃ
ŃŃŃ
йаКŃ
гүК йаКна.
+ notice_email_sent: "%{value} - ŃŃŃ ĐźŃКН иНгŃŃĐťŃŃ"
+ notice_email_error: "ĐŃКН иНгŃŃŃ
ŃĐ´ аНдаа гаŃНаа (%{value})"
+ notice_feeds_access_key_reseted: Đ˘Đ°Đ˝Ń RSS Ń
андаНŃŃĐ˝ ŃŇŻĐťŃ
ŇŻŇŻŃиКг Đ´Đ°Ń
ин ŃŃ
НүүННŃŃ.
+ notice_api_access_key_reseted: Your API access key was reset.
+ notice_failed_to_save_issues: "%{total} Đ°ŃŃŃĐ´Đ°Đť ŃОнгОгдŃĐžĐ˝ĐžĐžŃ %{count} Đ°ŃŃŃĐ´ĐťŃĐł Đ˝Ń Ń
адгаНаŃ
Đ°Đ´ аНдаа гаŃНаа: %{ids}."
+ notice_no_issue_selected: "ĐŻĐźĐ°Ń Ń Đ°ŃŃŃĐ´Đ°Đť ŃОнгОгдООгүК йаКна! ĐĐ°ŃваŃНаŃ
Đ°ŃŃŃĐ´ĐťŃŃĐ´Đ°Đ° ŃОнгОнО ŃŃ."
+ notice_account_pending: "Đ˘Đ°Đ˝Ń Đ´Đ°Đ˝ŃŃĐł ŇŻŇŻŃĐłŃĐś Đ´ŃŃŃНаа, адПиниŃŃŃĐ°ŃĐžŃ ĐąĐ°ŃаНгааМŃŃНаŃ
Ń
ŇŻŃŃŃĐť Ń
ŇŻĐťŃŃĐ˝Ń ŇŻŇŻ."
+ notice_default_data_loaded: ĐĄŃандаŃŃ ŃĐžŃ
иŃгООг аПМиНŃŃĐ°Đš Đ°ŃааННаа.
+ notice_unable_delete_version: ĐĽŃвиНйаŃŃĐł ŃŃŃгаŃ
йОНОПМгүК.
+ notice_issue_done_ratios_updated: Issue done ratios updated.
+
+ error_can_t_load_default_data: "ĐĄŃандаŃŃ ŃĐžŃ
иŃгООг Đ°ŃааНМ ŃĐ°Đ´ŃангүК: %{value}"
+ error_scm_not_found: "Repository Đ´ĐžŃĐžŃ ŃŃŃ
аКн йиŃĐťŃĐł ŃŃвŃĐť Ń
ŃвиНйаŃŃĐł ОНŃОнгүК."
+ error_scm_command_failed: "Repository-Đ´ Ń
андаŃ
Đ°Đ´ аНдаа гаŃНаа: %{value}"
+ error_scm_annotate: "ĐиŃĐťŃĐł йаКŃ
гүК йаКна, ŃŃвŃĐť йиŃĐťŃĐłŃ ŃĐ°ĐšĐťĐąĐ°Ń Ń
авŃĐ°ŃгаМ йОНОŃ
гүК."
+ error_issue_not_found_in_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_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened'
+ error_can_not_archive_project: This project can not 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)'
+
+ warning_attachments_not_saved: "%{count} file(s) ŃаКНŃĐł Ń
адгаНМ ŃĐ°Đ´ŃангүК."
+
+ mail_subject_lost_password: "Đ˘Đ°Đ˝Ń %{value} Đ˝ŃŃŃ ŇŻĐł"
+ mail_body_lost_password: 'ĐŃŃŃ ŇŻĐłŃŃ ÓŠÓŠŃŃĐťÓŠŃ
иКн ŃŃНд дООŃŃ
Ń
ĐžĐťĐąĐžĐžŃ Đ´ŃŃŃ Đ´Đ°Ńна ŃŃ:'
+ mail_subject_register: "Đ˘Đ°Đ˝Ń %{value} Đ´Đ°Đ˝ŃŃĐł идŃвŃ
МүүНŃŃ
"
+ mail_body_register: 'ĐĐ°Đ˝ŃĐ°Đ° идŃвŃ
МүүНŃŃ
иКн ŃŃНд дООŃŃ
Ń
ĐžĐťĐąĐžĐžŃ Đ´ŃŃŃ Đ´Đ°Ńна ŃŃ:'
+ mail_body_account_information_external: "Та ÓŠÓŠŃиКнŃ
ÓŠÓŠ %{value} Đ´Đ°Đ˝ŃŃĐł Đ°ŃигНаМ Ń
ОНйОгдОМ йОНнО."
+ mail_body_account_information: Đ˘Đ°Đ˝Ń Đ´Đ°Đ˝ŃĐ˝Ń ŃŃŃ
Đ°Đš ĐźŃĐ´ŃŃĐťŃĐť
+ mail_subject_account_activation_request: "%{value} Đ´Đ°Đ˝ŃŃĐł идŃвŃ
МүүНŃŃ
Ń
ŇŻŃŃĐťŃ"
+ mail_body_account_activation_request: "Đ¨Đ¸Đ˝Ń Ń
ŃŃŃгНŃĐłŃ (%{value}) йүŃŃгүүНŃŃĐ˝ йаКна. Đ˘Đ°Đ˝Ń ĐąĐ°ŃаНгааМŃŃНаŃ
ŃĐł Ń
ŇŻĐťŃŃĐś йаКна:"
+ mail_subject_reminder: "ĐĐ°ŃаагиКн ÓŠĐ´ŃŇŻŇŻĐ´ŃĐ´ %{count} Đ°ŃŃŃĐ´ĐťŃĐł ŃиКдŃŃ
Ń
ŃŃŃĐłŃŃĐš (%{days})"
+ mail_body_reminder: "Танд ОнООгдŃОн %{count} Đ°ŃŃŃĐ´ĐťŃŃĐ´ŃĐł Đ´Đ°ŃаагиКн %{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 аНдаа
+ gui_validation_error_plural: "%{count} аНдаа"
+
+ field_name: ĐŃŃ
+ field_description: ТаКНйаŃ
+ field_summary: ĐүгнŃĐťŃ
+ field_is_required: ĐаКНŃгүК
+ field_firstname: Đ˘Đ°Đ˝Ń Đ˝ŃŃ
+ field_lastname: ĐвОг
+ field_mail: ĐĐźŃКН
+ field_filename: ФаКН
+ field_filesize: ĐĽŃПМŃŃ
+ field_downloads: ТаŃĐ°Đś аваŃ
СүКНŃ
+ field_author: ĐĐžŃ
иОгŃ
+ field_created_on: ŇŽŇŻŃŃŃĐ˝
+ field_updated_on: Ó¨ÓŠŃŃиНŃÓŠĐ˝
+ field_field_format: ФОŃПаŃ
+ field_is_for_all: ĐŇŻŃ
ŃÓŠŃНиКн Ń
ŃвŃĐ´
+ field_possible_values: ĐОНОПМŃОК ŃŃĐłŃŃĐ´
+ field_regexp: ĐнгиКн иНŃŃŃ
иКНŃĐť
+ field_min_length: ĐиниПŃĐź ŃŃŃ
+ field_max_length: ĐĐ°ĐşŃиПŃĐź ŃŃŃ
+ field_value: ĐŁŃга
+ field_category: ТӊŃÓŠĐť
+ field_title: ĐĐ°ŃŃиг
+ field_project: ТӊŃÓŠĐť
+ field_issue: ĐŃŃŃĐ´Đ°Đť
+ field_status: ТӊНӊв
+ field_notes: ТŃПдŃгНŃНүүд
+ field_is_closed: ĐŃŃŃĐ´Đ°Đť Ń
аагдŃĐ°Đ˝
+ field_is_default: ĐĄŃандаŃŃ ŃŃга
+ field_tracker: ЧигНŃĐť
+ field_subject: ĐĐ°ŃŃиг
+ field_due_date: ĐŃŃŃĐ°Ń
ОгнОО
+ field_assigned_to: ĐнООгдŃОн
+ field_priority: ĐŃŃŃгНŃĐť
+ field_fixed_version: ĐĽŃвиНйаŃ
+ field_user: ĐĽŃŃŃгНŃĐłŃ
+ field_role: мандаНŃŃĐ˝ ŃŃŃ
+ field_homepage: ĐŇŻŇŻŃ Ń
ŃŃĐ´Đ°Ń
+ field_is_public: ĐНОн ниКŃиКн
+ field_parent: ĐŃŃĐł ŃÓŠŃÓŠĐť Đ˝Ń
+ field_is_in_roadmap: ĐŃŃŃĐ´ĐťŃŃĐ´ŃĐł ŃвŃŃĐ˝ СŃŃĐ°Đł Đ´ŃŃŃ Ń
Đ°ŃŃŃНаŃ
+ field_login: ĐŃвŃŃŃŃ
Đ˝ŃŃ
+ field_mail_notification: ĐĐźŃКН ĐźŃĐ´ŃгдНүүд
+ field_admin: ĐдПиниŃŃŃĐ°ŃĐžŃ
+ field_last_login_on: ХүүНиКн Ń
ОНйОО
+ field_language: ĐĽŃĐť
+ field_password: ĐŃŃŃ ŇŻĐł
+ field_new_password: Đ¨Đ˝Đ˝Ń Đ˝ŃŃŃ ŇŻĐł
+ field_password_confirmation: ĐĐ°ŃаНгааМŃŃНаŃ
+ field_version: ĐĽŃвиНйаŃ
+ field_type: ТӊŃÓŠĐť
+ field_host: ĐĽĐžŃŃ
+ field_port: ĐĐžŃŃ
+ field_account: ĐĐ°Đ˝Ń
+ field_base_dn: ҎндŃŃĐ˝ ĐĐ
+ field_attr_login: ĐŃвŃŃŃŃ
Đ°ŃŃŃийŃŃ
+ field_attr_firstname: Đ˘Đ°Đ˝Ń Đ˝ŃŃ Đ°ŃŃŃийŃŃ
+ field_attr_lastname: ĐвОг Đ°ŃŃŃийŃŃ
+ field_attr_mail: ĐĐźŃКН Đ°ŃŃŃийŃŃ
+ field_onthefly: ĐĽŇŻŃŃŃĐ˝ үодŃŃ Ń
ŃŃŃгНŃĐłŃ ŇŻŇŻŃĐłŃŃ
+ field_start_date: ĐŃ
ĐťŃĐť
+ field_done_ratio: "%% ĐŇŻĐšŃŃŃĐłŃŃŃĐ˝"
+ field_auth_source: ĐŃвŃŃŃŃ
Đ°Ńга
+ field_hide_mail: ĐиниК иПŃКН Ń
Đ°ŃгиКг Đ˝ŃŃ
+ field_comments: ТаКНйаŃ
+ field_url: URL ĐĽĐ°ŃĐł
+ field_start_page: ТŃŃгүүн Ń
ŃŃĐ´Đ°Ń
+ field_subproject: ĐŃĐ´ ŃÓŠŃÓŠĐť
+ field_hours: ĐŚĐ°Đł
+ field_activity: ҎКН аМиННагаа
+ field_spent_on: ĐгнОО
+ field_identifier: ТӊŃНиКн гНОйаН Đ˝ŃŃ
+ field_is_filter: ШүүНŃŇŻŇŻŃ ĐąĐžĐťĐłĐžĐ˝ Ń
ŃŃŃгНŃгддŃĐł
+ field_issue_to: маПааŃĐ°Đš Đ°ŃŃŃĐ´Đ°Đť
+ field_delay: ĐĽĐžŃŃОНŃ
+ field_assignable: ĐĐ˝Ń Ń
андаНŃŃĐ˝ ŃŃŃ
ŃĐ´ Đ°ŃŃŃĐ´ĐťŃŃĐ´ŃĐł ОнООМ ÓŠĐłŃ ĐąĐžĐťĐ˝Đž
+ field_redirect_existing_links: ĐаКгаа Ń
ОНйООŃŃŃĐ´ŃĐł Đ´Đ°Ń
ин ŃигНүүНŃŃ
+ field_estimated_hours: ĐĐ°ŃĐ°ĐłŃĐ°Đ°ĐťŃĐ°Đ˝ ŃĐ°Đł
+ field_column_names: ĐаганŃŃĐ´
+ field_time_zone: ĐŚĐ°ĐłŃĐ˝ йүŃ
+ field_searchable: маКМ йОНОŃ
+ field_default_value: ĐĄŃандаŃŃ ŃŃга
+ field_comments_sorting: ТаКНйаŃŃŃĐ´ŃĐł Ń
Đ°ŃŃŃĐť
+ field_parent_title: ĐŃŃĐł Ń
ŃŃĐ´Đ°Ń
+ field_editable: ĐĐ°ŃваŃНагдана
+ field_watcher: ĐĽĐ°Ńна
+ field_identity_url: OpenID URL
+ field_content: ĐĐłŃŃНга
+ field_group_by: ŇŽŃ Đ´ŇŻĐ˝ĐłŃŃŃ ĐąŇŻĐťŃгНŃŃ
+ field_sharing: Sharing
+
+ setting_app_title: ĐŃОгŃаППŃĐ˝ гаŃŃиг
+ setting_app_subtitle: ĐŃОгŃаППŃĐ˝ Đ´ŃĐ´ гаŃŃиг
+ setting_welcome_text: ĐŃндŃиНгŃŃ
+ setting_default_language: ĐĄŃандаŃŃ Ń
ŃĐť
+ setting_login_required: ĐŃвŃŃŃŃ
ŃĐ°Đ°ŃдНагаŃĐ°Đš
+ setting_self_registration: Ó¨ÓŠŃиКгӊӊ йүŃŃгүүНŃŃ
+ setting_attachment_max_size: мавŃŃĐ°ĐťŃ ŃаКНŃĐ˝ Đ´ŃŃĐ´ Ń
ŃПМŃŃ
+ setting_issues_export_limit: ĐŃŃŃĐ´Đ°Đť ŃĐşŃпОŃŃНОŃ
Ń
ŃСгааŃ
+ setting_mail_from: ĐŻĐźĐ°Ń Đ¸ĐźŃКН Ń
Đ°ŃĐł ŇŻŇŻŃĐłŃŃ
+ setting_bcc_recipients: BCC ŃаНйаŃŃĐ˝ Ń
Đ°ŃĐłŃŃĐ´ (bcc)
+ setting_plain_text_mail: Đ´Đ°Đ˝ ŃокŃŃ ĐźŃКН (HTML йиŃ)
+ setting_host_name: ĐĽĐžŃŃŃĐ˝ Đ˝ŃŃ ĐąĐžĐťĐžĐ˝ СаП
+ setting_text_formatting: ТокŃŃ Ń
ŃНйŃŃМүүНŃĐťŃ
+ setting_wiki_compression: Đики Ń
ŃŃĐ´ŃŃŃĐ´ŃĐ˝ ŃŇŻŇŻŃ
Đ´ŃŃŃ ŃĐ°Ń
Đ°ĐťŃ Ń
иКŃ
+ setting_feeds_limit: ФиКд Đ°ĐłŃŃНгŃĐ˝ Ń
ŃСгааŃ
+ setting_default_projects_public: Đ¨Đ¸Đ˝Ń ŃÓŠŃНүүд авŃОПаŃĐ°Đ°Ń ĐžĐťĐžĐ˝ ниКŃиКнŃ
йаКна
+ setting_autofetch_changesets: ĐОПиŃŃŃĐ´ŃĐł авŃОПаŃĐ°Đ°Ń ŃĐ°ŃĐ°Đś аваŃ
+ setting_sys_api_enabled: РопОСиŃĐžŃи ПоноМПонŃŃĐ´ СОŃиŃНан WS-иКг идŃвŃ
МүүНŃŃ
+ setting_commit_ref_keywords: маПааŃŃŃНаŃ
ŃŇŻĐťŃ
ŇŻŇŻŃ ŇŻĐłŃ
+ setting_commit_fix_keywords: ĐООНŃŃОК ŃŇŻĐťŃ
ŇŻŇŻŃ ŇŻĐłŃ
+ setting_autologin: ĐОПпŃŃŃĐľŃ Đ´ŃŃŃ ŃанаŃ
+ setting_date_format: ĐĐłĐ˝ĐžĐžĐ˝Ń ŃĐžŃПаŃ
+ setting_time_format: ЌагиКн ŃĐžŃПаŃ
+ setting_cross_project_issue_relations: ТӊŃÓŠĐť Ń
ООŃОнд Đ°ŃŃŃĐ´Đ°Đť Ń
аПааŃŃŃНаŃ
ŃĐł СӊвŃÓŠÓŠŃÓŠŃ
+ setting_issue_list_default_columns: ĐŃŃŃĐ´ĐťŃŃĐ´ŃĐł Ń
Đ°ŃŃŃНаŃ
ŃŃандаŃŃ ĐąĐ°ĐłĐ°Đ˝ŃŃĐ´
+ setting_repositories_encodings: РопОСиŃĐžŃиКн ŃнкОдинг
+ setting_commit_logs_encoding: ĐĐžĐźĐźĐ¸Ń Ń
иКŃ
үод Ń
Đ°ŃŃŃНаŃ
ŃокŃŃүүдиКн ŃнкОдинг
+ setting_emails_footer: ĐĐźŃКНүүдиКн Ń
ÓŠĐť Ń
ŃŃŃĐł
+ setting_protocol: ĐŃĐžŃОкОН
+ setting_per_page_options: ĐŃĐł Ń
ŃŃĐ´Ńанд йаКŃ
ОйŃокŃŃŃĐ´ŃĐ˝ ŃĐžŃ
иŃгОО
+ setting_user_format: ĐĽŃŃŃгНŃĐłŃдиКг Ń
Đ°ŃŃŃНаŃ
ŃĐžŃПаŃ
+ setting_activity_days_default: ТӊŃНиКн үКН аМиННагаа Ń
ŃŃŃĐłŃ ŇŻĐˇŇŻŇŻĐťŃŃ
ÓŠĐ´ŃиКн ŃОО
+ setting_display_subprojects_issues: ĐŃĐ´ ŃÓŠŃНүүдиКн Đ°ŃŃŃĐ´ĐťŃŃĐ´ŃĐł авŃОПаŃĐ°Đ°Ń ĐłĐžĐť ŃÓŠŃÓŠĐť Đ´ŃŃŃ Ń
Đ°ŃŃŃНаŃ
+ setting_enabled_scm: SCM - иКг идŃвŃ
МүүНŃŃ
+ setting_mail_handler_body_delimiters: "Truncate emails after one of these lines"
+ setting_mail_handler_api_enabled: ĐŃŃŃĐ˝ ĐźŃКНүүдиКн Ń
ŃвŃĐ´ WS-иКг идŃвŃ
МүүНŃŃ
+ setting_mail_handler_api_key: API ŃŇŻĐťŃ
ŇŻŇŻŃ
+ setting_sequential_project_identifiers: ĐŃŃ Đ´Đ°ŃĐ°Đ°ĐťŃĐ°Đ˝ ŃÓŠŃНиКн гНОйаН Đ˝ŃŃ ŇŻŇŻŃĐłŃĐś йаКŃ
+ setting_gravatar_enabled: Gravatar Đ´ŇŻŃŃүүдиКг Ń
ŃŃŃгНŃĐłŃĐ´ŃĐ´ Ń
ŃŃŃгНŃĐś йаКŃ
+ setting_gravatar_default: Default Gravatar image
+ setting_diff_max_lines_displayed: ЯНгааŃĐ°Đš ĐźÓŠŃүүдиКн ŃОО (Đ´ŃŃĐ´ ŃĐ°Đť Đ˝Ń)
+ setting_file_max_size_displayed: Max 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
+
+ permission_add_project: Create project
+ permission_add_subprojects: Create subprojects
+ permission_edit_project: ТӊŃНиКг СаŃваŃНаŃ
+ permission_select_project_modules: ТӊŃНиКн ПОдŃĐťŃŃдиКг ŃОнгОнО ŃŃ
+ permission_manage_members: ХиŃŃоПиКн Ń
ŃŃŃгНŃĐłŃид
+ permission_manage_project_activities: Manage project activities
+ permission_manage_versions: ĐĽŃвиНйаŃŃŃĐ´
+ permission_manage_categories: ĐŃŃŃĐ´ĐťŃĐ˝ ангиННŃŃĐ´
+ permission_view_issues: ĐŃŃŃĐ´ĐťŃŃĐ´ŃĐł Ń
Đ°ŃĐ°Ń
+ permission_add_issues: ĐŃŃŃĐ´ĐťŃŃĐ´ Đ˝ŃĐźŃŃ
+ permission_edit_issues: ĐŃŃŃĐ´ĐťŃŃĐ´ŃĐł СаŃваŃНаŃ
+ permission_manage_issue_relations: ĐŃŃŃĐ´ĐťŃĐ˝ Ń
аПааŃĐťŃĐł СОŃ
иŃŃŃНаŃ
+ permission_add_issue_notes: ТŃПдŃгНŃĐť Đ˝ŃĐźŃŃ
+ permission_edit_issue_notes: ТŃПдŃгНŃНүүд СаŃваŃНаŃ
+ permission_edit_own_issue_notes: Ó¨ÓŠŃиКн үНдŃŃŃŃĐ˝ ŃŃПдŃгНŃНүүдиКг СаŃваŃНаŃ
+ permission_move_issues: ĐŃŃŃĐ´ĐťŃŃĐ´ŃĐł СӊӊŃ
+ permission_delete_issues: ĐŃŃŃĐ´ĐťŃŃĐ´ŃĐł ŃŃŃгаŃ
+ permission_manage_public_queries: ĐНОн ниКŃиКн Đ°ŃŃŃĐťŃŃŃĐ´
+ permission_save_queries: ĐŃŃŃĐťŃŃŃĐ´ŃĐł Ń
адгаНаŃ
+ permission_view_gantt: ĐĐ°Đ˝Ń Đ´Đ¸Đ°ĐłŃĐ°ĐźŃĐł үСŃŃ
+ permission_view_calendar: ĐаНондаŃŃ ŇŻĐˇŃŃ
+ permission_view_issue_watchers: ĐМигНагŃĐ´ŃĐ˝ МагŃĐ°Đ°ĐťŃŃĐł Ń
Đ°ŃĐ°Ń
+ permission_add_issue_watchers: ĐМигНагŃид Đ˝ŃĐźŃŃ
+ permission_delete_issue_watchers: ĐМигНагŃĐ´ŃĐł ŃŃŃгаŃ
+ permission_log_time: ĐĐ°ŃŃŃŃĐťŃĐ°Đ˝ Ń
ŃгаŃĐ°Đ°Đł НОг Ń
иКŃ
+ permission_view_time_entries: ĐĐ°ŃŃŃŃĐťŃĐ°Đ˝ Ń
ŃгаŃĐ°Đ°Đł Ń
Đ°ŃĐ°Ń
+ permission_edit_time_entries: ĐĽŃгаŃĐ°Đ°Đ˝Ń ĐťĐžĐłŃŃĐ´ŃĐł СаŃваŃНаŃ
+ permission_edit_own_time_entries: Ó¨ÓŠŃиКн Ń
ŃгаŃĐ°Đ°Đ˝Ń ĐťĐžĐłŃŃĐ´ŃĐł СаŃваŃНаŃ
+ permission_manage_news: ĐŃĐ´ŃŃ ĐźŃĐ´ŃŃННүүд
+ permission_comment_news: ĐŃĐ´ŃŃнд ŃĐ°ĐšĐťĐąĐ°Ń ŇŻĐťĐ´ŃŃŃ
+ permission_manage_documents: ĐиŃиг йаŃиПŃŃŃĐ´
+ permission_view_documents: ĐиŃиг йаŃиПŃŃŃĐ´ŃĐł Ń
Đ°ŃĐ°Ń
+ permission_manage_files: ФаКНŃŃĐ´
+ permission_view_files: ФаКНŃŃĐ´ŃĐł Ń
Đ°ŃĐ°Ń
+ permission_manage_wiki: Đики ŃдиŃĐ´Đ°Ń
+ permission_rename_wiki_pages: Đики Ń
ŃŃĐ´ŃŃŃĐ´ŃĐł Đ´Đ°Ń
иМ Đ˝ŃŃĐťŃŃ
+ permission_delete_wiki_pages: Đики Ń
ŃŃĐ´ŃŃŃĐ´ŃĐł ŃŃŃгаŃ
+ permission_view_wiki_pages: Đики үСŃŃ
+ permission_view_wiki_edits: Đики ŃŇŻŇŻŃ
үСŃŃ
+ permission_edit_wiki_pages: Đики Ń
ŃŃĐ´ŃŃŃĐ´ŃĐł СаŃваŃНаŃ
+ permission_delete_wiki_pages_attachments: мавŃŃĐ°ĐťŃŃŃĐ´ŃĐł ŃŃŃгаŃ
+ permission_protect_wiki_pages: Đики Ń
ŃŃĐ´ŃŃŃĐ´ŃĐł Ń
аПгааНаŃ
+ permission_manage_repository: РопОСиŃĐžŃи
+ permission_browse_repository: РопОСиŃĐžŃиКг үСŃŃ
+ permission_view_changesets: Ó¨ÓŠŃŃĐťÓŠĐťŃүүдиКг Ń
Đ°ŃĐ°Ń
+ permission_commit_access: ĐĐžĐźĐźĐ¸Ń Ń
андаНŃ
+ permission_manage_boards: ХаПйаŃŃŃĐ´
+ permission_view_messages: ĐŃŃваŃŃŃĐ´ŃĐł Ń
Đ°ŃĐ°Ń
+ permission_add_messages: ĐŃŃĐ˛Đ°Ń Đ¸ĐťĐłŃŃŃ
+ permission_edit_messages: ĐŃŃваŃŃŃĐ´ŃĐł СаŃваŃНаŃ
+ permission_edit_own_messages: Ó¨ÓŠŃиКн СŃŃваŃŃŃĐ´ŃĐł СаŃваŃНаŃ
+ permission_delete_messages: ĐŃŃваŃŃŃĐ´ŃĐł ŃŃŃгаŃ
+ permission_delete_own_messages: Ó¨ÓŠŃиКн СŃŃваŃŃŃĐ´ŃĐł ŃŃŃгаŃ
+ permission_export_wiki_pages: Đики Ń
ŃŃĐ´ŃŃŃĐ´ŃĐł ŃĐşŃпОŃŃ Ń
иКŃ
+
+ project_module_issue_tracking: ĐŃŃŃĐ´Đ°Đť Ń
ŃнаŃ
+ project_module_time_tracking: ĐĽŃгаŃĐ°Đ° Ń
ŃнаŃ
+ project_module_news: ĐŃĐ´ŃŃ ĐźŃĐ´ŃŃННүүд
+ project_module_documents: ĐиŃиг йаŃиПŃŃŃĐ´
+ project_module_files: ФаКНŃŃĐ´
+ project_module_wiki: Đики
+ project_module_repository: РопОСиŃĐžŃи
+ project_module_boards: ХаПйаŃŃŃĐ´
+
+ label_user: ĐĽŃŃŃгНŃĐłŃ
+ label_user_plural: ĐĽŃŃŃгНŃĐłŃид
+ label_user_new: Đ¨Đ¸Đ˝Ń Ń
ŃŃŃгНŃĐłŃ
+ label_user_anonymous: маПаагүК Ń
ŃŃŃгНŃĐłŃ
+ label_project: ТӊŃÓŠĐť
+ label_project_new: Đ¨Đ¸Đ˝Ń ŃÓŠŃÓŠĐť
+ label_project_plural: ТӊŃНүүд
+ label_x_projects:
+ zero: ŃÓŠŃÓŠĐť йаКŃ
гүК
+ one: 1 ŃÓŠŃÓŠĐť
+ other: "%{count} ŃÓŠŃНүүд"
+ label_project_all: ĐŇŻŃ
ТӊŃНүүд
+ label_project_latest: ХүүНиКн үоиКн ŃÓŠŃНүүд
+ label_issue: ĐŃŃŃĐ´Đ°Đť
+ label_issue_new: Đ¨Đ¸Đ˝Ń Đ°ŃŃŃĐ´Đ°Đť
+ label_issue_plural: ĐŃŃŃĐ´ĐťŃŃĐ´
+ label_issue_view_all: ĐŇŻŃ
Đ°ŃŃŃĐ´ĐťŃŃĐ´ŃĐł Ń
Đ°ŃĐ°Ń
+ label_issues_by: "%{value} - Đ˝ Đ°ŃŃŃĐ´ĐťŃŃĐ´"
+ label_issue_added: ĐŃŃŃĐ´Đ°Đť Đ˝ŃĐźŃгдНŃŃ
+ label_issue_updated: ĐŃŃŃĐ´Đ°Đť ÓŠÓŠŃŃНӊгдНӊӊ
+ label_document: ĐиŃиг йаŃиПŃ
+ label_document_new: Đ¨Đ¸Đ˝Ń ĐąĐ¸Ńиг йаŃиПŃ
+ label_document_plural: ĐиŃиг йаŃиПŃŃŃĐ´
+ label_document_added: ĐиŃиг йаŃĐ¸ĐźŃ Đ˝ŃĐźŃгдНŃŃ
+ label_role: мандаНŃŃĐ˝ ŃŃŃ
+ label_role_plural: мандаНŃŃĐ˝ ŃŃŃ
ŇŻŇŻĐ´
+ label_role_new: Đ¨Đ¸Đ˝Ń Ń
андаНŃŃĐ˝ ŃŃŃ
+ label_role_and_permissions: мандаНŃŃĐ˝ ŃŃŃ
ŇŻŇŻĐ´ йОНОн СӊвŃÓŠÓŠŃНүүд
+ label_member: ĐиŃŇŻŇŻĐ˝
+ label_member_new: Đ¨Đ¸Đ˝Ń ĐłĐ¸ŃŇŻŇŻĐ˝
+ label_member_plural: ĐиŃŇŻŇŻĐ´
+ label_tracker: ЧигНŃĐť
+ label_tracker_plural: ЧигНŃНүүд
+ label_tracker_new: Đ¨Đ¸Đ˝Ń ŃигНŃĐť
+ label_workflow: ĐМНŃĐ˝ Đ´Đ°ŃааНаН
+ label_issue_status: ĐŃŃŃĐ´ĐťŃĐ˝ ŃӊНӊв
+ label_issue_status_plural: ĐŃŃŃĐ´ĐťŃĐ˝ ŃӊНвүүд
+ label_issue_status_new: Đ¨Đ¸Đ˝Ń ŃӊНӊв
+ label_issue_category: ĐŃŃŃĐ´ĐťŃĐ˝ ангиНаН
+ label_issue_category_plural: ĐŃŃŃĐ´ĐťŃĐ˝ ангиННŃŃĐ´
+ label_issue_category_new: Đ¨Đ¸Đ˝Ń Đ°Đ˝ĐłĐ¸ĐťĐ°Đť
+ label_custom_field: ĐĽŃŃŃгНŃĐłŃиКн ŃОдОŃŃ
ОКНŃОн ŃаНйаŃ
+ label_custom_field_plural: ĐĽŃŃŃгНŃĐłŃиКн ŃОдОŃŃ
ОКНŃОн ŃаНйаŃŃŃĐ´
+ label_custom_field_new: ШинŃŃŃ Ń
ŃŃŃгНŃĐłŃиКн ŃОдОŃŃ
ОКНŃОн ŃĐ°ĐťĐąĐ°Ń ŇŻŇŻŃĐłŃŃ
+ label_enumerations: ĐнгиННŃŃĐ´
+ label_enumeration_new: Đ¨Đ¸Đ˝Ń ŃŃга
+ label_information: ĐŃĐ´ŃŃĐťŃĐť
+ label_information_plural: ĐŃĐ´ŃŃННүүд
+ label_please_login: ĐŃвŃŃŃŃ ĐžŃнО ŃŃ
+ label_register: ĐŇŻŃŃгүүНŃŃ
+ label_login_with_open_id_option: or login with OpenID
+ label_password_lost: ĐŃŃŃ ŇŻĐłŃŃ Đ°ĐťĐ´ŃĐ°Đ˝
+ label_home: ĐŇŻŇŻŃ
+ label_my_page: ĐиниК Ń
ŃŃĐ´Đ°Ń
+ label_my_account: ĐиниК Đ´Đ°Đ˝Ń
+ label_my_projects: ĐиниК ŃÓŠŃНүүд
+ label_administration: ĐдПин Ń
ŃŃŃĐł
+ label_login: ĐŃвŃŃŃŃ
+ label_logout: ĐĐ°ŃĐ°Ń
+ label_help: ТŃŃНаПМ
+ label_reported_issues: ĐŃĐ´ŃгдŃŃĐ˝ Đ°ŃŃŃĐ´ĐťŃŃĐ´
+ label_assigned_to_me_issues: ĐĐ°Đ´Đ°Đ´ ОнООгдŃОн Đ°ŃŃŃĐ´ĐťŃŃĐ´
+ label_last_login: ХүүНиКн Ń
ОНйОНŃ
+ label_registered_on: ĐŇŻŃŃгүүНŃŃĐ˝ ОгнОО
+ label_activity: ҎКН аМиННагаа
+ label_overall_activity: ĐŃÓŠĐ˝Ń
иК үКН аМиННагаа
+ label_user_activity: "%{value}-иКн үКН аМиННагаа"
+ label_new: ШинŃ
+ label_logged_as: мОНйОгдŃОн Đ˝ŃŃ
+ label_environment: ĐŃŃин
+ label_authentication: ĐŃвŃŃŃŃ
+ label_auth_source: ĐŃвŃŃŃŃ
Đ°Ńга
+ label_auth_source_new: Đ¨Đ¸Đ˝Ń Đ˝ŃвŃŃŃŃ
Đ°Ńга
+ label_auth_source_plural: ĐŃвŃŃŃŃ
Đ°ŃĐłŃŃĐ´
+ label_subproject_plural: ĐŃĐ´ ŃÓŠŃНүүд
+ label_subproject_new: Đ¨Đ¸Đ˝Ń Đ´ŃĐ´ ŃÓŠŃÓŠĐť
+ label_and_its_subprojects: "%{value} йОНОн Ń
ОНйОгдОŃ
Đ´ŃĐ´ ŃÓŠŃНүүд"
+ label_min_max_length: ĐŃŃĐ´ - ĐООд ŃŃŃ
+ label_list: ĐĐ°ĐłŃĐ°Đ°ĐťŃ
+ label_date: ĐгнОО
+ label_integer: ĐŇŻŃ
ŃĐť ŃОО
+ label_float: ĐŃŃĐ°ŃŃ
Đ°Đš ŃОО
+ label_boolean: ŇŽĐ˝ŃĐ˝ Ń
ŃĐ´Đ°Đť ŃŃга
+ label_string: ТокŃŃ
+ label_text: ĐŁŃŃ ŃокŃŃ
+ label_attribute: ĐŃŃŃийŃŃ
+ label_attribute_plural: ĐŃŃŃийŃŃŃŃĐ´
+ label_download: "%{count} ТаŃĐ°Đś авŃĐ°Đ˝ СүКН"
+ label_download_plural: "%{count} ТаŃĐ°Đś авŃĐ°Đ˝ СүКНŃ"
+ label_no_data: ҎСүүНŃŃ
ӊгӊгдӊН йаКŃ
гүК йаКна
+ label_change_status: ТӊНвиКг ÓŠÓŠŃŃĐťÓŠŃ
+ label_history: ТүүŃ
+ label_attachment: ФаКН
+ label_attachment_new: Đ¨Đ¸Đ˝Ń ŃаКН
+ label_attachment_delete: ФаКН ŃŃŃгаŃ
+ label_attachment_plural: ФаКНŃŃĐ´
+ label_file_added: ФаКН Đ˝ŃĐźŃгдНŃŃ
+ label_report: ТаКНан
+ label_report_plural: ТаКНангŃŃĐ´
+ label_news: ĐŃĐ´ŃŃ
+ label_news_new: Đ¨Đ¸Đ˝Ń ĐźŃĐ´ŃŃ
+ label_news_plural: ĐŃĐ´ŃŃ
+ label_news_latest: ХүүНиКн үоиКн ĐźŃĐ´ŃŃнүүд
+ label_news_view_all: ĐŇŻŃ
ĐźŃĐ´ŃŃĐł Ń
Đ°ŃĐ°Ń
+ label_news_added: ĐŃĐ´ŃŃ Đ˝ŃĐźŃгдНŃŃ
+ label_change_log: Ó¨ÓŠŃŃĐťÓŠĐťŃиКн НОг
+ label_settings: ТОŃ
иŃгОО
+ label_overview: ĐŃ
ĐťŃĐť
+ label_version: ĐĽŃвиНйаŃ
+ label_version_new: Đ¨Đ¸Đ˝Ń Ń
ŃвиНйаŃ
+ label_version_plural: ĐĽŃвиНйаŃŃŃĐ´
+ label_close_versions: ĐŇŻĐšŃŃŃ Ń
ŃвиНйаŃŃŃĐ´ŃĐł Ń
ааНаа
+ label_confirmation: ĐĐ°ŃаНгааМŃŃНаŃ
+ label_export_to: 'Ó¨ÓŠŃ Đ°Đ˛Ń ĐąĐžĐťĐžŃ
ŃĐžŃПаŃ:'
+ label_read: ĐŁĐ˝ŃиŃ
...
+ label_public_projects: ĐНОн ниКŃиКн ŃÓŠŃНүүд
+ label_open_issues: Đ˝ŃŃĐťŃŃŃĐš
+ label_open_issues_plural: Đ˝ŃŃĐťŃŃŃĐš
+ label_closed_issues: Ń
Đ°Đ°ĐťŃŃĐ°Đš
+ label_closed_issues_plural: Ń
Đ°Đ°ĐťŃŃĐ°Đš
+ label_x_open_issues_abbr_on_total:
+ zero: 0 Đ˝ŃŃĐťŃŃŃĐš / %{total}
+ one: 1 Đ˝ŃŃĐťŃŃŃĐš / %{total}
+ other: "%{count} Đ˝ŃŃĐťŃŃŃĐš / %{total}"
+ label_x_open_issues_abbr:
+ zero: 0 Đ˝ŃŃĐťŃŃŃĐš
+ one: 1 Đ˝ŃŃĐťŃŃŃĐš
+ other: "%{count} Đ˝ŃŃĐťŃŃŃĐš"
+ label_x_closed_issues_abbr:
+ zero: 0 Ń
Đ°Đ°ĐťŃŃĐ°Đš
+ one: 1 Ń
Đ°Đ°ĐťŃŃĐ°Đš
+ other: "%{count} Ń
Đ°Đ°ĐťŃŃĐ°Đš"
+ label_total: ĐиКŃ
+ label_permissions: ĐӊвŃÓŠÓŠŃНүүд
+ label_current_status: ĐдООгиКн ŃӊНӊв
+ label_new_statuses_allowed: ШинŃŃŃ ĐžĐťĐłĐžĐś йОНОŃ
ŃӊНвүүд
+ label_all: йүгд
+ label_none: Ń
ООŃОн
+ label_nobody: Ń
ŃĐ˝ Ń ĐąĐ¸Ń
+ label_next: ĐĐ°ŃаагиКн
+ label_previous: ӨПнӊŃ
+ label_used_by: ĐĽŃŃŃгНŃгддŃĐł
+ label_details: ĐŃНгŃŃŃнгүК
+ label_add_note: ТŃПдŃгНŃĐť Đ˝ŃĐźŃŃ
+ label_per_page: ĐŃĐł Ń
ŃŃĐ´Ńанд
+ label_calendar: ĐаНондаŃŃ
+ label_months_from: ĐĄĐ°ŃŃŃĐ´ŃĐł Ń
аанааŃ
+ label_gantt: ĐĐ°Đ˝Ń Đ´Đ¸Đ°ĐłŃĐ°Đź
+ label_internal: ĐĐžŃООд
+ label_last_changes: "ŃүүНиКн %{count} ÓŠÓŠŃŃĐťÓŠĐťŃŇŻŇŻĐ´"
+ label_change_view_all: ĐŇŻŃ
ÓŠÓŠŃŃĐťÓŠĐťŃүүдиКг Ń
Đ°ŃĐ°Ń
+ label_personalize_page: ĐĐ˝Ń Ń
ŃŃĐ´ŃŃĐł ÓŠÓŠŃŃ ĐˇĐžŃиŃНан ÓŠÓŠŃŃĐťÓŠŃ
+ label_comment: ТаКНйаŃ
+ label_comment_plural: ТаКНйаŃŃŃĐ´
+ label_x_comments:
+ zero: ŃŃŃĐłŃгдŃĐť йаКŃ
гүК
+ one: 1 ŃŃŃĐłŃгдŃĐťŃŃĐš
+ other: "%{count} ŃŃŃĐłŃгдŃĐťŃŃĐš"
+ label_comment_add: Đ˘Đ°ĐšĐťĐąĐ°Ń Đ˝ŃĐźŃŃ
+ label_comment_added: Đ˘Đ°ĐšĐťĐąĐ°Ń Đ˝ŃĐźŃгдНŃŃ
+ label_comment_delete: ТаКНйаŃŃŃĐ´ ŃŃŃгаŃ
+ label_query: ĐĽŃŃŃгНŃĐłŃиКн ŃОдОŃŃ
ОКНŃОн Đ°ŃŃŃĐťŃ
+ label_query_plural: ĐĽŃŃŃгНŃĐłŃиКн ŃОдОŃŃ
ОКНŃОн Đ°ŃŃŃĐťŃŃŃĐ´
+ label_query_new: ШинŃŃŃ Ń
ŃŃŃгНŃĐłŃиКн ŃОдОŃŃ
ОКНŃОн Đ°ŃŃŃĐťŃ ŇŻŇŻŃĐłŃŃ
+ label_filter_add: ШүүНŃŇŻŇŻŃ Đ˝ŃĐźŃŃ
+ label_filter_plural: ШүүНŃŇŻŇŻŃŇŻŇŻĐ´
+ label_equals: йОН
+ label_not_equals: йиŃ
+ label_in_less_than: Đ°Đ°Ń ĐąĐ°ĐłĐ°
+ label_in_more_than: Đ°Đ°Ń Đ¸Ń
+ label_greater_or_equal: '>='
+ label_less_or_equal: '<='
+ label_in: Đ´ĐžŃĐžŃ
+ label_today: ӊнӊӊдӊŃ
+ label_all_time: йүŃ
Ń
ŃгаŃĐ°Đ°
+ label_yesterday: ÓŠŃигдӊŃ
+ label_this_week: ŃĐ˝Ń Đ´ĐžĐťĐžĐž Ń
ОнОг
+ label_last_week: ӊнгӊŃŃÓŠĐ˝ дОНОО Ń
ОнОг
+ label_last_n_days: "ŃүүНиКн %{count} ÓŠĐ´ŃŇŻŇŻĐ´"
+ label_this_month: ŃĐ˝Ń ŃĐ°Ń
+ label_last_month: ŃүүНиКн ŃĐ°Ń
+ label_this_year: ŃĐ˝Ń ĐśĐ¸Đť
+ label_date_range: ĐĽŃĐˇĐłĐ°Đ°Ń ĐžĐłĐ˝ĐžĐž
+ label_less_than_ago: йага ÓŠĐ´ŃиКн Đ´ĐžŃĐžŃ
+ label_more_than_ago: иŃ
ÓŠĐ´ŃиКн Đ´ĐžŃĐžŃ
+ label_ago: ÓŠĐ´ŃиКн ӊПнӊ
+ label_contains: Đ°ĐłŃŃНМ йаКгаа
+ label_not_contains: Đ°ĐłŃŃНаагүК
+ label_day_plural: ÓŠĐ´ŃŇŻŇŻĐ´
+ label_repository: РопОСиŃĐžŃи
+ label_repository_plural: РопОСиŃĐžŃŃŃĐ´
+ label_browse: ҎСŃŃ
+ label_modification: "%{count} ÓŠÓŠŃŃĐťÓŠĐťŃ"
+ label_modification_plural: "%{count} ÓŠÓŠŃŃĐťÓŠĐťŃŇŻŇŻĐ´"
+ label_branch: ХаНйаŃ
+ label_tag: ШОŃгО
+ label_revision: ĐĽŃвиНйаŃ
+ label_revision_plural: ĐĽŃвиНйаŃŃŃĐ´
+ label_revision_id: "%{value} ĐĽŃвиНйаŃ"
+ label_associated_revisions: маПааŃĐ°ĐťŃĐ°Đš Ń
ŃвиНйаŃŃŃĐ´
+ label_added: Đ˝ŃĐźŃгдŃŃĐ˝
+ label_modified: ÓŠÓŠŃŃНӊгдŃÓŠĐ˝
+ label_copied: Ń
ŃŃĐťŃĐ°Đ˝
+ label_renamed: Đ˝ŃŃиКг Đ˝Ń ÓŠÓŠŃŃиНŃÓŠĐ˝
+ label_deleted: ŃŃŃгаŃĐ°Đ˝
+ label_latest_revision: ХүүНиКн үоиКн Ń
ŃвиНйаŃ
+ label_latest_revision_plural: ХүүНиКн үоиКн Ń
ŃвиНйаŃŃŃĐ´
+ label_view_revisions: ĐĽŃвиНйаŃŃŃĐ´ŃĐł Ń
Đ°ŃĐ°Ń
+ label_view_all_revisions: ĐŇŻŃ
Ń
ŃвиНйаŃŃŃĐ´ŃĐł Ń
Đ°ŃĐ°Ń
+ label_max_size: Maximum size
+ label_sort_highest: маПгиКн Đ´ŃŃŃ
+ label_sort_higher: ĐŃŃŃ Đ˝Ń
+ label_sort_lower: ĐĐžĐžŃ Đ˝Ń
+ label_sort_lowest: маПгиКн дООŃ
+ label_roadmap: ĐĽÓŠŃÓŠŃ
+ label_roadmap_due_in: "%{value} Đ´ĐžŃĐžŃ Đ´ŃŃŃгаŃ
"
+ label_roadmap_overdue: "%{value} ĐžŃОКŃŃОн"
+ label_roadmap_no_issues: ĐĐ˝Ń Ń
ŃвиНйаŃŃ Đ°ŃŃŃĐ´Đ°Đť йаКŃ
гүК йаКна
+ label_search: ĐĽĐ°ĐšŃ
+ label_result_plural: ŇŽŃ Đ´ŇŻĐ˝
+ label_all_words: ĐŇŻŃ
ŇŻĐłŃ
+ label_wiki: Đики
+ label_wiki_edit: Đики СаŃваŃ
+ label_wiki_edit_plural: Đики СаŃваŃŃŃĐ´
+ label_wiki_page: Đики Ń
ŃŃĐ´Đ°Ń
+ label_wiki_page_plural: Đики Ń
ŃŃĐ´Đ°Ń
+ label_index_by_title: ĐĐ°ŃŃĐłĐ°Đ°Ń ŃŃŃПйŃĐťŃŃ
+ label_index_by_date: ĐĐłĐ˝ĐžĐžĐłĐžĐžŃ ŃŃŃПйŃĐťŃŃ
+ label_current_version: ĐдООгиКн Ń
ŃвиНйаŃ
+ label_preview: ĐŻĐźĐ°Ń Ń
Đ°ŃагдаŃ
ŃĐł ŃаНгаŃ
+ label_feed_plural: Feeds
+ label_changes_details: ĐŇŻŃ
ÓŠÓŠŃŃĐťÓŠĐťŃүүдиКн Đ´ŃНгŃŃŃнгүК
+ label_issue_tracking: ĐŃŃŃĐ´Đ°Đť Ń
ŃнаŃ
+ label_spent_time: ĐĐ°ŃŃŃŃĐťŃĐ°Đ˝ Ń
ŃгаŃĐ°Đ°
+ label_f_hour: "%{value} ŃĐ°Đł"
+ label_f_hour_plural: "%{value} ŃĐ°Đł"
+ label_time_tracking: ĐĽŃгаŃĐ°Đ°Đł Ń
ŃнаŃ
+ label_change_plural: Ó¨ÓŠŃŃĐťÓŠĐťŃŇŻŇŻĐ´
+ label_statistics: ĐĄŃĐ°ŃиŃŃик
+ label_commits_per_month: ĐĄĐ°ŃĐ´ Ń
иКŃŃĐ˝ кОППиŃŃĐ˝ ŃОО
+ label_commits_per_author: ĐĐžŃ
Đ¸ĐžĐłŃ ĐąŇŻŃиКн Ń
ŃвŃĐ´ кОППиŃŃĐ˝ ŃОО
+ label_view_diff: ЯНгаанŃŃĐ´ŃĐł Ń
Đ°ŃĐ°Ń
+ label_diff_inline: Đ´ĐžŃĐžŃ Đ˝Ń
+ label_diff_side_by_side: СŃŃŃĐłŃүүНМ
+ label_options: ТОŃ
иŃгОО
+ label_copy_workflow_from: ĐМНŃĐ˝ Đ´Đ°ŃааННŃĐł Ń
ŃŃНаŃ
+ label_permissions_report: ĐӊвŃÓŠÓŠŃНүүдиКн ŃайНиŃ
+ label_watched_issues: ĐМигНагдаМ йаКгаа Đ°ŃŃŃĐ´ĐťŃŃĐ´
+ label_related_issues: маПааŃĐ°ĐťŃĐ°Đš Đ°ŃŃŃĐ´ĐťŃŃĐ´
+ label_applied_status: ĐНгОŃОн ŃӊНӊв
+ label_loading: ĐŃааНМ йаКна...
+ label_relation_new: Đ¨Đ¸Đ˝Ń Ń
аПааŃĐ°Đť
+ label_relation_delete: маПааŃĐťŃĐł ŃŃŃгаŃ
+ label_relates_to: ŃнгиКн Ń
аПааŃĐ°ĐťŃĐ°Đš
+ label_duplicates: Ń
ĐžŃ Ń
аПааŃĐ°ĐťŃĐ°Đš
+ label_duplicated_by: давŃ
Đ°ŃĐ´ŃŃĐťŃĐ°Đ˝ ŃСŃĐ˝
+ label_blocks: ŃĐ°Đ°ŃĐ´Đ°Ń
Ń
аПааŃĐ°ĐťŃĐ°Đš
+ label_blocked_by: йНОкОНŃОн ŃСŃĐ˝
+ label_precedes: ŃŃŃĐ´ŃиНаŃ
Ń
аПааŃĐ°ĐťŃĐ°Đš
+ label_follows: дагаМ
+ label_end_to_start: Ń
ĐžĐšĐ˝ĐžĐžŃ Đ˝Ń ŃŃĐ°ĐłŃĐ°Đ°
+ label_end_to_end: Ń
ĐžĐšĐ˝ĐžĐžŃ Đ˝Ń Ń
ОКŃОО
+ label_start_to_start: ŃŃĐ´Đ°Đ°Ń Đ˝Ń ŃŃагаа
+ label_start_to_end: ŃŃĐ´Đ°Đ°Ń Đ˝Ń Ń
ОКŃОО
+ label_stay_logged_in: ĐĐ˝Ń ĐşĐžĐźŃŃŃĐľŃ Đ´ŃŃŃ ŃанаŃ
+ label_disabled: идŃвŃ
гүК йОНŃОн
+ label_show_completed_versions: ĐŇŻĐšŃŃĐ´ Ń
ŃвиНйаŃŃŃĐ´ŃĐł Ń
Đ°ŃŃŃНаŃ
+ label_me: йи
+ label_board: ФОŃŃĐź
+ label_board_new: Đ¨Đ¸Đ˝Ń ŃĐžŃŃĐź
+ label_board_plural: ФОŃŃĐźŃŃĐ´
+ label_board_locked: ТүгМŃŃŃŃĐš
+ label_board_sticky: Sticky
+ label_topic_plural: ĐĄŃдвүүд
+ label_message_plural: ĐŃŃваŃŃŃĐ´
+ label_message_last: ХүүНиКн СŃŃваŃ
+ label_message_new: Đ¨Đ¸Đ˝Ń ĐˇŃŃваŃ
+ label_message_posted: ĐŃŃĐ˛Đ°Ń Đ˝ŃĐźŃгдНŃŃ
+ label_reply_plural: ĐĽĐ°ŃиŃĐťŃŃŃĐ´
+ label_send_information: ĐĐ°Đ˝ŃĐ˝Ń ĐźŃĐ´ŃŃННиКг Ń
ŃŃŃгНŃĐłŃид иНгŃŃŃ
+ label_year: ĐиН
+ label_month: ĐĄĐ°Ń
+ label_week: ĐОНОО Ń
ОнОг
+ label_date_from: ĐĽŃСŃŃĐ˝ŃŃŃ
+ label_date_to: ĐĽŃдиК Ń
ŇŻŃŃŃĐť
+ label_language_based: ĐĽŃŃŃгНŃĐłŃиКн Ń
ŃĐťĐ˝Đ°Ń ŃĐ°ĐťŃгааНан
+ label_sort_by: "%{value} ŃаНйаŃĐ°Đ°Ń Đ˝Ń ŃŃŃПйŃĐťŃŃ
"
+ label_send_test_email: ТŃŃŃиŃ
ĐźŃКН иНгŃŃŃ
+ label_feeds_access_key: RSS Ń
андаŃ
ŃŇŻĐťŃ
ŇŻŇŻŃ
+ label_missing_feeds_access_key: RSS Ń
андаŃ
ŃŇŻĐťŃ
ŇŻŇŻŃ Đ°ĐťĐłĐ°
+ label_feeds_access_key_created_on: "RSS Ń
андаНŃŃĐ˝ ŃŇŻĐťŃ
ŇŻŇŻŃ %{value}-иКн ӊПнӊ ŇŻŇŻŃŃŃĐ˝"
+ label_module_plural: ĐОдŃĐťŃŃĐ´
+ label_added_time_by: "%{author} %{age}-иКн ӊПнӊ Đ˝ŃĐźŃŃĐ˝"
+ label_updated_time_by: "%{author} %{age}-иКн ӊПнӊ ÓŠÓŠŃŃиНŃÓŠĐ˝"
+ label_updated_time: "%{value} -иКн ӊПнӊ ÓŠÓŠŃŃНӊгдŃÓŠĐ˝"
+ label_jump_to_a_project: ТӊŃÓŠĐť ŃŇŻŇŻ ĐžŃиŃ
...
+ label_file_plural: ФаКНŃŃĐ´
+ label_changeset_plural: Ó¨ÓŠŃŃĐťÓŠĐťŃŇŻŇŻĐ´
+ label_default_columns: ĐĄŃандаŃŃ ĐąĐ°ĐłĐ°Đ˝ŃŃĐ´
+ label_no_change_option: (Ó¨ÓŠŃŃĐťÓŠĐťŃ ĐąĐ°ĐšŃ
гүК)
+ label_bulk_edit_selected_issues: ХОнгОгдŃОн Đ°ŃŃŃĐ´ĐťŃŃĐ´ŃĐł ĐąÓŠÓŠĐ˝ÓŠÓŠŃ ĐˇĐ°ŃваŃНаŃ
+ label_theme: ХиŃŃоПиКн ĐиСаКн
+ label_default: ĐĄŃандаŃŃ
+ label_search_titles_only: ĐӊвŃ
ÓŠĐ˝ гаŃŃиг Ń
Đ°ĐšŃ
+ label_user_mail_option_all: "ĐиниК йүŃ
ŃÓŠŃÓŠĐť Đ´ŃŃŃŃ
йүŃ
үСŃгдНүүдиКн Ń
ŃвŃĐ´"
+ label_user_mail_option_selected: "ХОнгОгдŃОн ŃÓŠŃНүүдиКн Ń
ŃвŃĐ´ йүŃ
үСŃгдŃĐť Đ´ŃŃŃ..."
+ label_user_mail_no_self_notified: "ĐиниК ÓŠÓŠŃиКн Ń
иКŃŃĐ˝ ÓŠÓŠŃŃĐťÓŠĐťŃүүдиКн ŃŃŃ
Đ°Đš надад ĐźŃĐ´ŃгдŃŃ
Ń
ŃŃŃггүК"
+ label_registration_activation_by_email: Đ´Đ°Đ˝ŃŃĐł иПŃКНŃŃŃ Đ¸Đ´ŃвŃ
МүүНŃŃ
+ label_registration_manual_activation: Đ´Đ°Đ˝ŃŃĐł гаŃĐ°Đ°Ń Đ¸Đ´ŃвŃ
МүүНŃŃ
+ label_registration_automatic_activation: Đ´Đ°Đ˝ŃŃĐł авŃОПаŃĐ°Đ°Ń Đ¸Đ´ŃвŃ
МүүНŃŃ
+ label_display_per_page: 'ĐŃĐł Ń
ŃŃĐ´Ńанд: %{value}'
+ label_age: ĐĐ°Ń
+ label_change_properties: ТОŃ
иŃгООг ÓŠÓŠŃŃĐťÓŠŃ
+ label_general: ĐŃÓŠĐ˝Ń
иК
+ label_more: ĐŚĐ°Đ°Ń Đ˝Ń
+ label_scm: SCM
+ label_plugins: ĐОдŃĐťŃŃĐ´
+ label_ldap_authentication: LDAP Đ˝ŃвŃŃŃŃ
гОŃиП
+ label_downloads_abbr: D/L
+ label_optional_description: ĐŃŃŃĐ˝ ŃаКНйаŃ
+ label_add_another_file: ĐĐ°Ń
ин ŃаКН Đ˝ŃĐźŃŃ
+ label_preferences: ТОŃ
иŃгОО
+ label_chronological_order: Ќагаан ŃОНгОКн ŇŻŃгиКн Đ´Đ°ŃааННааŃ
+ label_reverse_chronological_order: ĐŁŃвŃŃ Ńагаан ŃОНгОКн ŇŻŃгиКн Đ´Đ°ŃааННааŃ
+ label_planning: ТӊНӊвНӊНŃ
+ label_incoming_emails: ĐŃŃŃĐ˝ ĐźŃКНүүд
+ label_generate_key: ТүНŃ
ŇŻŇŻŃ ŇŻŇŻŃĐłŃŃ
+ label_issue_watchers: ĐМигНагŃид
+ label_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"
+
+ button_login: ĐŃвŃŃŃŃ
+ button_submit: ĐНгŃŃŃ
+ button_save: мадгаНаŃ
+ button_check_all: ĐүгдиКг ŃОнгО
+ button_uncheck_all: ĐүгдиКг ŇŻĐť ŃОнгО
+ button_delete: ĐŁŃŃгаŃ
+ button_create: ŇŽŇŻŃĐłŃŃ
+ button_create_and_continue: ŇŽŇŻŃĐłŃŃĐ´ ŃĐ°Đ°Ń ŇŻŃĐłŃНМНүүНŃŃ
+ button_test: ТŃŃŃиŃ
+ button_edit: ĐĐ°ŃваŃНаŃ
+ button_add: ĐŃĐźŃŃ
+ button_change: Ó¨ÓŠŃŃĐťÓŠŃ
+ button_apply: Ó¨ÓŠŃŃĐťÓŠĐťŃиКг Ń
адгаНаŃ
+ button_clear: ĐŚŃвŃŃĐťŃŃ
+ button_lock: ТүгМиŃ
+ button_unlock: ТүгМŃŃĐł ŃаКНаŃ
+ button_download: ТаŃĐ°Ń
+ button_list: ĐĐ°ĐłŃĐ°Đ°ĐťŃ
+ button_view: ĐĽĐ°ŃĐ°Ń
+ button_move: ĐÓŠÓŠŃ
+ button_move_and_follow: ĐÓŠÓŠ ĐąĐ°Ń Đ´Đ°ĐłĐ°
+ button_back: ĐŃŃĐ°Ń
+ button_cancel: ĐОНиŃ
+ button_activate: ĐĐ´ŃвŃ
МүүНŃŃ
+ button_sort: ĐŃŃПйŃĐťŃŃ
+ button_log_time: ĐОг Ń
иКŃŃĐ˝ Ń
ŃгаŃĐ°Đ°
+ button_rollback: ĐĐ˝Ń Ń
ŃĐ˛Đ¸ĐťĐąĐ°Ń ŃŃŃ ĐąŃŃĐ°Ń
+ button_watch: ĐМигНаŃ
+ button_unwatch: ĐМигНаŃ
Đ°Đ° йОНиŃ
+ button_reply: ĐĽĐ°ŃиŃНаŃ
+ button_archive: ĐŃŃ
ивНаŃ
+ button_unarchive: ĐŃŃ
ивŃĐł СадНаŃ
+ button_reset: ĐĐ˝Ń
Đ˝Ń ŃŃĐłŃŃĐ´
+ button_rename: ĐŃŃиКг Đ˝Ń ŃОНиŃ
+ button_change_password: ĐŃŃŃ ŇŻĐłŃŃ ÓŠÓŠŃŃĐťÓŠŃ
+ button_copy: ĐĽŃŃНаŃ
+ button_copy_and_follow: ĐÓŠÓŠ ĐąĐ°Ń Đ´Đ°ĐłĐ°
+ button_annotate: Đ˘Đ°ĐšĐťĐąĐ°Ń Ń
авŃĐ°ŃгаŃ
+ button_update: ШинŃŃĐťŃŃ
+ button_configure: ТОŃ
иŃŃŃНаŃ
+ button_quote: ĐŃĐťŃĐť
+ button_duplicate: ĐĽŃŃНйаŃ
+ button_show: ҎСŃŃ
+
+ status_active: идŃвŃ
ŃŃĐš
+ status_registered: йүŃŃгүүНŃŃĐ˝
+ status_locked: ŃүгМŃŃŃŃĐš
+
+ version_status_open: Đ˝ŃŃĐťŃŃŃĐš
+ version_status_locked: ŃүгМŃŃŃŃĐš
+ version_status_closed: Ń
Đ°Đ°ĐťŃŃĐ°Đš
+
+ field_active: идŃвŃ
ŃŃĐš
+
+ text_select_mail_notifications: ĐŻĐźĐ°Ń ŇŻĐľĐ´ иПŃКНŃŃŃ ĐźŃĐ´ŃгдŃĐť иНгŃŃŃ
иКг ŃОнгОнО ŃŃ.
+ text_regexp_info: eg. ^[A-Z0-9]+$
+ text_min_max_length_info: 0 ĐłŃвŃĐť ŃĐźĐ°Ń Ń Ń
ŃСгааŃгүК ĐłŃŃŃĐ˝ ŇŻĐł
+ text_project_destroy_confirmation: Та ŃĐ˝Ń ŃÓŠŃÓŠĐť йОНООд ĐąŃŃĐ°Đ´ ĐźŃĐ´ŃŃННиКг Đ˝Ń ŇŻĐ˝ŃŃ
ŃŃŃ ŃŃŃĐłĐ°ĐźĐ°Đ°Ń ĐąĐ°ĐšĐ˝Đ° ŃŃ ?
+ text_subprojects_destroy_warning: "ĐŁĐł ŃÓŠŃНиКн Đ´ŃĐ´ ŃÓŠŃНүүд : %{value} Đ˝Ń ĐąĐ°Ń ŃŃŃгагдаŃ
йОНнО."
+ text_workflow_edit: ĐМНŃĐ˝ Đ´Đ°ŃааННŃĐł ÓŠÓŠŃŃĐťÓŠŃ
иКн ŃŃНд Ń
андаНŃŃĐ˝ ŃŃŃ
йОНОн Đ°ŃŃŃĐ´ĐťŃĐ˝ ŃигНŃНиКг ŃОнгОнО ŃŃ
+ text_are_you_sure: Та иŃĐłŃĐťŃŃĐš йаКна ŃŃ ?
+ text_journal_changed: "%{label} %{old} йаКŃĐ°Đ˝ Đ˝Ń %{new} йОНОв"
+ text_journal_set_to: "%{label} %{value} йОНгОМ ÓŠÓŠŃŃиННӊӊ"
+ text_journal_deleted: "%{label} ŃŃŃŃĐ°Đ˝ (%{old})"
+ text_journal_added: "%{label} %{value} Đ˝ŃĐźŃгдŃŃĐ˝"
+ text_tip_issue_begin_day: ŃĐ˝Ń ÓŠĐ´ÓŠŃ ŃŃ
ĐťŃŃ
аМиН
+ text_tip_issue_end_day: ŃĐ˝Ń ÓŠĐ´ÓŠŃ Đ´ŃŃŃĐ°Ń
аМиН
+ text_tip_issue_begin_end_day: ŃĐ˝Ń ÓŠĐ´ÓŠŃ ŃŃ
ĐťŃŃĐ´ ĐźÓŠĐ˝ Đ´ŃŃŃŃ ĐąĐ°ĐšĐłĐ°Đ° аМиН
+ text_project_identifier_info: 'Only lower case letters (a-z), numbers, dashes and underscores are allowed.
Once saved, the identifier can not be changed.'
+ text_caracters_maximum: "Đ´ŃŃĐ´ ŃĐ°Đť Đ˝Ń %{count} ŇŻŃŃĐł."
+ text_caracters_minimum: "маПгиКн йагадаа ŃĐ´Đ°Đś %{count} ŃŃПдŃĐłŃ ĐąĐ°ĐšŃ
."
+ text_length_between: "ĐŁŃŃ Đ˝Ń ĐąĐ°ĐłĐ°Đ´Đ°Đ° %{min}, иŃ
Đ´ŃŃ %{max} ŃŃПдŃĐłŃ."
+ text_tracker_no_workflow: ĐĐ˝ŃŃ
ŇŻŇŻ Đ°ŃŃŃĐ´ĐťŃĐ˝ ŃигНŃНд ŃĐźĐ°Ń Ń Đ°ĐśĐťŃĐ˝ Đ´Đ°ŃааНаН ŃОдОŃŃ
ОКНОгдООгүК йаКна
+ text_unallowed_characters: ĐĽŃŃŃгНŃĐś йОНОŃ
гүК ŃŃПдŃĐłŃŇŻŇŻĐ´
+ text_comma_separated: ТаŃĐťĐ°ĐťĐ°Đ°Ń ĐˇĐ°Đ°ĐłĐťĐ°Đ˝ ОНОн ŃŃга ĐžŃŃŃНМ йОНнО.
+ text_line_separated: Multiple values allowed (one line for each value).
+ text_issues_ref_in_commit_messages: ĐОППиŃиКн СŃŃваŃŃŃĐ´Đ°Đ´ Ń
аПааŃŃŃĐťŃĐ°Đ˝ йОНОн йаКнгŃĐ˝ Đ°ŃŃŃĐ´ĐťŃŃĐ´
+ text_issue_added: "ĐŃŃŃĐ´Đ°Đť %{id} - иКг Ń
ŃŃŃгНŃĐłŃ %{author} ĐźŃĐ´ŃгдŃŃĐ˝ йаКна."
+ text_issue_updated: "ĐŃŃŃĐ´Đ°Đť %{id} - иКг Ń
ŃŃŃгНŃĐłŃ %{author} ÓŠÓŠŃŃиНŃÓŠĐ˝ йаКна."
+ text_wiki_destroy_confirmation: Та ŃĐ˝Ń Đ˛Đ¸ĐşĐ¸ йОНОн Ń
ОНйОгдОŃ
йүŃ
ĐźŃĐ´ŃŃННиКг ŇŻĐ˝ŃŃ
ŃŃŃ ŃŃŃĐłĐ°ĐźĐ°Đ°Ń ĐąĐ°ĐšĐ˝Đ° ŃŃ ?
+ text_issue_category_destroy_question: "ĐĐ˝Ń Đ°Đ˝ĐłĐ¸ĐťĐ°ĐťĐ´ СаŃиП Đ°ŃŃŃĐ´ĐťŃŃĐ´ (%{count}) ĐžŃŃОн йаКна. Та ŃĐ°Ń
Đ˛Ń ?"
+ text_issue_category_destroy_assignments: ĐŃŃŃĐ´ĐťŃŃĐ´ŃĐł ŃĐ˝Ń Đ°Đ˝ĐłĐ¸ĐťĐťĐ°Đ°Ń Đ°Đ˛Đ°Ń
+ text_issue_category_reassign_to: ĐŃŃŃĐ´ĐťŃŃĐ´ŃĐł ŃĐ˝Ń Đ°Đ˝ĐłĐ¸ĐťĐ°ĐťĐ´ Đ´Đ°Ń
ин ОнООŃ
+ text_user_mail_option: "ХОнгОгдООгүК ŃÓŠŃНүүдиКн Ń
ŃвŃĐ´, ŃĐ° СӊвŃ
ÓŠĐ˝ ÓŠÓŠŃиКнŃ
ÓŠÓŠ аМигНаМ йаКгаа ĐˇŇŻĐšĐťŃ ŃĐźŃŃ Ńанд Ń
аПааŃĐ°Đš СүКНŃиКн ŃĐ°ĐťĐ°Đ°Ń ĐźŃĐ´ŃгдŃĐť аваŃ
йОНнО (Đ˘Đ°Đ˝Ń ĐžŃŃŃĐťŃĐ°Đ˝ Đ°ŃŃŃĐ´Đ°Đť, ŃŃвŃĐť Ńанд ОнООŃОн ĐłŃŃ
ĐźŃŃ)."
+ text_no_configuration_data: "мандаНŃŃĐ˝ ŃŃŃ
ŇŻŇŻĐ´, ŃигНŃНүүд, Đ°ŃŃŃĐ´ĐťŃĐ˝ ŃӊНвүүд йОНОн аМНŃĐ˝ Đ´Đ°ŃааННŃĐ˝ ŃŃŃ
Đ°Đš ĐźŃĐ´ŃŃННиКг Ń
Đ°ŃĐ°Đ°Ń
Đ°Đ˝ ĐžŃŃŃНаагүК йаКна.\nТа ŃŃандаŃŃ ÓŠĐłÓŠĐłĐ´ĐťŇŻŇŻĐ´Đ¸ĐšĐł Đ´Đ°ŃŃĐšŃ
Đ°Đ˝ ĐžŃŃŃНаŃ
ŃĐł СӊвНӊМ йаКна, ĐžŃŃŃĐťŃĐ°Đ˝ Ń
ОКнО ŃĐ° СаŃваŃНаМ йОНнО."
+ text_load_default_configuration: ĐĄŃандаŃŃ ÓŠĐłÓŠĐłĐ´ĐťĐ¸ĐšĐł Đ°ŃааНаŃ
+ text_status_changed_by_changeset: "%{value} ÓŠÓŠŃŃĐťÓŠĐťŃÓŠĐ´ Ń
иКгдŃŃĐ˝."
+ text_issues_destroy_confirmation: 'Та ŃОнгОгдŃОн Đ°ŃŃŃĐ´ĐťŃŃĐ´ŃĐł ŇŻĐ˝ŃŃ
ŃŃŃ ŃŃŃĐłĐ°ĐźĐ°Đ°Ń ĐąĐ°ĐšĐ˝Đ° ŃŃ ?'
+ text_select_project_modules: 'ĐĐ˝Ń ŃÓŠŃНиКн Ń
ŃвŃĐ´ идŃвŃ
МүүНŃŃ
ПОдŃĐťŃŃĐ´Đ°Đ° ŃОнгОнО ŃŃ:'
+ text_default_administrator_account_changed: ĐĄŃандаŃŃ Đ°Đ´ĐźĐ¸Đ˝Đ¸ŃŃŃĐ°ŃĐžŃŃĐ˝ йүŃŃĐłŃĐť ÓŠÓŠŃŃНӊгдНӊӊ
+ text_file_repository_writable: мавŃŃĐ°ĐťŃ ŃаКН Ń
адгаНаŃ
Ń
авŃĐ°Ń ŃŃŃ ĐąĐ¸ŃиŃ
ŃŃŃ
ŃŃĐš
+ text_plugin_assets_writable: ĐНагин ПОдŃНиКн Đ°ŃŃĐľŃ Ń
авŃĐ°Ń ŃŃŃ ĐąĐ¸ŃиŃ
ŃŃŃ
ŃŃĐš
+ text_rmagick_available: RMagick ŃŃŃНгагдŃĐ°Đ˝ (СааваН йиŃ)
+ text_destroy_time_entries_question: "Đ˘Đ°Đ˝Ń ŃŃŃгаŃ
ĐłŃĐś йаКгаа Đ°ŃŃŃĐ´ĐťŃŃĐ´ Đ´ŃŃŃ Đ˝Đ¸ĐšŃ %{hours} ŃĐ°Đł СаŃŃŃŃĐťŃĐ°Đ˝ ŃĐź йаКна, ŃĐ° ŃĐ°Ń
Đ˛Ń ?"
+ text_destroy_time_entries: ĐŃĐ´ŃгдŃŃĐ˝ ŃĐ°ĐłŃŃĐ´ŃĐł ŃŃŃгаŃ
+ text_assign_time_entries_to_project: ĐŃĐ´ŃгдŃŃĐ˝ Đ°ŃŃŃĐ´ĐťŃŃĐ´ŃĐł ŃÓŠŃӊНд ОнООŃ
+ text_reassign_time_entries: 'ĐŃĐ´ŃгдŃŃĐ˝ Đ°ŃŃŃĐ´ĐťŃŃĐ´ŃĐł ŃĐ˝Ń Đ°ŃŃŃдаНд Đ´Đ°Ń
ин ОнОО:'
+ text_user_wrote: "%{value} йиŃиŃ
Đ´ŃŃ:"
+ text_enumeration_destroy_question: "ĐĐ˝Ń ŃŃгад %{count} ОйŃĐľĐşŃ ĐžĐ˝ĐžĐžĐłĐ´ŃОн йаКна."
+ text_enumeration_category_reassign_to: 'ТŃĐ´ĐłŃŃŃиКг ŃĐ˝Ń ŃŃгад Đ´Đ°Ń
ин ОнОО:'
+ text_email_delivery_not_configured: "ĐĐźŃКНиКн ŃĐžŃ
иŃгООг Ń
Đ°ŃĐ°Đ°Ń
Đ°Đ˝ ŃĐžŃ
иŃŃŃНаагүК йаКна, ŃиКПŃŃŃ Đ¸ĐźŃКН ĐźŃĐ´ŃгдŃĐť ŃвŃŃНаŃ
йОНОПМгүК йаКна.\nSMTP ŃĐľŃвŃŃŃŃ config/configuration.yml ŃаКН Đ´ĐžŃĐžŃ ŃĐžŃ
иŃŃŃНаад ŃÓŠŃНиКн ПоноМоŃŃŃ Đ´Đ°Ń
иад ŃŃ
НүүНŃŃŃŃĐš."
+ text_repository_usernames_mapping: "РопОСиŃĐžŃиКн НОгд йаКгаа йүŃ
Ń
ŃŃŃгНŃĐłŃиКн Đ˝ŃŃŇŻŇŻĐ´ŃĐ´ Ń
Đ°ŃгаНСŃĐ°Đ˝ ТӊŃНиКн ĐĐľĐ˝ĐľĐśĐľŃ ŃиŃŃоПд йүŃŃĐłŃĐťŃŃĐš Ń
ŃŃŃгНŃĐłŃдиКг ХОнгОŃ
ŃĐźŃŃ ŃинŃŃĐ¸ĐťĐ˝Ń ŇŻŇŻ.\nТӊŃНиКн ĐźĐľĐ˝ĐľĐśĐľŃ ĐąĐžĐťĐžĐ˝ ŃопОСиŃĐžŃид йаКгаа иМиНŃ
ŃĐ˝ Đ˝ŃŃ ŃĐźŃŃ Đ¸ĐźŃКНŃŃĐš Ń
ŃŃŃгНŃĐłŃид Ń
Đ°ŃиНŃĐ°Đ˝ Ń
Đ°ŃгаНСна."
+ text_diff_truncated: '... ФаКНŃĐ˝ ŃНгавŃŃĐ˝ Ń
ŃПМŃŃ ŇŻĐˇŇŻŇŻĐťŃŃ
ŃĐ´ Đ´Ńндүү ŃŃŃ ĐąĐ°ĐšĐłĐ°Đ° ŃŃŃĐ°Đ°Ń ŃÓŠĐłŃĐłÓŠĐťÓŠÓŠŃ Đ˝Ń Ń
Đ°ŃŃ ŇŻĐˇŇŻŇŻĐťŃв.'
+ 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?"
+
+ default_role_manager: ĐоноМоŃ
+ default_role_developer: мӊгМүүНŃĐłŃ
+ default_role_reporter: ĐŃĐ´ŃгдŃĐłŃ
+ default_role_non_member: Non member
+ default_role_anonymous: Anonymous
+ default_tracker_bug: ĐНдаа
+ default_tracker_feature: ĐĐ˝ŃНОг
+ default_tracker_support: ТŃŃНаПМ
+ default_issue_status_new: ШинŃ
+ default_issue_status_in_progress: ĐŃ
иŃŃĐ°Đš
+ default_issue_status_assigned: ĐнООгдŃОн
+ default_issue_status_resolved: ШиКдвŃŃĐťŃгдŃŃĐ˝
+ default_issue_status_feedback: Feedback
+ default_issue_status_closed: маагдŃĐ°Đ˝
+ default_issue_status_rejected: ĐĽŇŻĐťŃŃĐś аваагүК
+ default_doc_category_user: ĐĽŃŃŃгНŃĐłŃиКн йиŃиг йаŃиПŃ
+ default_doc_category_tech: ТоŃ
никиКн йиŃиг йаŃиПŃ
+ default_priority_low: Đага
+ default_priority_normal: ĐĽŃвиКн
+ default_priority_high: ӨндӊŃ
+ default_priority_urgent: ĐŃĐ˝ ŃĐ°ŃĐ°ĐťŃĐ°Đš
+ default_priority_immediate: ĐŃĐ˝ Đ´Đ°ŃŃĐš
+ default_activity_design: ĐиСаКн
+ default_activity_development: мӊгМүүНŃĐťŃ
+
+ enumeration_issue_priorities: ĐŃŃŃĐ´ĐťŃĐ˝ СŃŃŃгНŃНүүд
+ enumeration_doc_categories: ĐиŃиг йаŃиПŃŃĐ˝ ангиННŃŃĐ´
+ enumeration_activities: ҎКН аМиННагаанŃŃĐ´ (Ń
ŃгаŃĐ°Đ°Đł Ń
ŃнаŃ
)
+ enumeration_system_activity: ХиŃŃоПиКн үКН аМиННагаа
+
+ permission_manage_subtasks: Manage subtasks
+ label_profile: Profile
+ field_parent_issue: Parent task
+ error_unable_delete_issue_status: Unable to delete issue status
+ label_subtask_plural: Subtasks
+ label_project_copy_notifications: Send email notifications during the project copy
+ error_can_not_delete_custom_field: Unable to delete custom field
+ error_unable_to_connect: Unable to connect (%{value})
+ error_can_not_remove_role: This role is in use and can not be deleted.
+ error_can_not_delete_tracker: This tracker contains issues and can't be deleted.
+ field_principal: Principal
+ label_my_page_block: My page block
+ notice_failed_to_save_members: "Failed to save member(s): %{errors}."
+ text_zoom_out: Zoom out
+ text_zoom_in: Zoom in
+ notice_unable_delete_time_entry: Unable to delete time log entry.
+ label_overall_spent_time: Overall spent time
+ field_time_entries: Log time
+ project_module_gantt: Gantt
+ project_module_calendar: Calendar
+ button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}"
+ text_are_you_sure_with_children: Delete issue and all child issues?
+ field_text: Text field
+ label_user_mail_option_only_owner: Only for things I am the owner of
+ setting_default_notification_option: Default notification option
+ 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_none: No events
+ field_member_of_group: Assignee's group
+ field_assigned_to_role: Assignee's role
+ notice_not_authorized_archived_project: The project you're trying to access has been archived.
+ label_principal_search: "Search for user or group:"
+ label_user_search: "Search for user:"
+ field_visible: Visible
+ setting_emails_header: Emails header
+ setting_commit_logtime_activity_id: Activity for logged time
+ text_time_logged_by_changeset: Applied in changeset %{value}.
+ setting_commit_logtime_enabled: Enable time logging
+ notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
+ setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ text_powered_by: Powered by %{link}
label_cvs_module: Module
label_filesystem_path: Root directory
label_darcs_path: Root directory
diff --git a/config/locales/sr-YU.yml b/config/locales/sr-YU.yml
index 6e43db73..d70a6f50 100644
--- a/config/locales/sr-YU.yml
+++ b/config/locales/sr-YU.yml
@@ -1,946 +1,946 @@
-# Serbian translations for Redmine
-# by Vladimir MedaroviÄ (vlada@medarovic.com)
-sr-YU:
- 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: "%B %e, %Y"
-
- day_names: [nedelja, ponedeljak, utorak, sreda, Äetvrtak, petak, subota]
- abbr_day_names: [ned, pon, uto, sre, Äet, pet, sub]
-
- # Don't forget the nil at the beginning; there's no such thing as a 0th month
- month_names: [~, januar, februar, mart, april, maj, jun, jul, avgust, septembar, oktobar, novembar, decembar]
- abbr_month_names: [~, jan, feb, mar, apr, maj, jun, jul, avg, sep, okt, nov, dec]
- # Used in date_select and datime_select.
- order:
- - :day
- - :month
- - :year
-
- time:
- formats:
- default: "%d.%m.%Y. u %H:%M"
- time: "%H:%M"
- short: "%d. %b u %H:%M"
- long: "%d. %B %Y u %H:%M"
- am: "am"
- pm: "pm"
-
- datetime:
- distance_in_words:
- half_a_minute: "pola minuta"
- less_than_x_seconds:
- one: "manje od jedne sekunde"
- other: "manje od %{count} sek."
- x_seconds:
- one: "jedna sekunda"
- other: "%{count} sek."
- less_than_x_minutes:
- one: "manje od minuta"
- other: "manje od %{count} min."
- x_minutes:
- one: "jedan minut"
- other: "%{count} min."
- about_x_hours:
- one: "pribliĹžno jedan sat"
- other: "pribliĹžno %{count} sati"
- x_days:
- one: "jedan dan"
- other: "%{count} dana"
- about_x_months:
- one: "pribliĹžno jedan mesec"
- other: "pribliĹžno %{count} meseci"
- x_months:
- one: "jedan mesec"
- other: "%{count} meseci"
- about_x_years:
- one: "pribliĹžno godinu dana"
- other: "pribliĹžno %{count} god."
- over_x_years:
- one: "preko godinu dana"
- other: "preko %{count} god."
- almost_x_years:
- one: "skoro godinu dana"
- other: "skoro %{count} god."
-
- number:
- format:
- separator: ","
- delimiter: ""
- precision: 3
- human:
- format:
- delimiter: ""
- precision: 1
- 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: "i"
- 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: "nije ukljuÄen u spisak"
- exclusion: "je rezervisan"
- invalid: "je neispravan"
- confirmation: "potvrda ne odgovara"
- accepted: "mora biti prihvaÄen"
- empty: "ne moĹže biti prazno"
- blank: "ne moĹže biti prazno"
- too_long: "je predugaÄka (maksimum znakova je %{count})"
- too_short: "je prekratka (minimum znakova je %{count})"
- wrong_length: "je pogreĹĄne duĹžine (broj znakova mora biti %{count})"
- taken: "je veÄ u upotrebi"
- not_a_number: "nije broj"
- not_a_date: "nije ispravan datum"
- greater_than: "mora biti veÄi od %{count}"
- greater_than_or_equal_to: "mora biti veÄi ili jednak %{count}"
- equal_to: "mora biti jednak %{count}"
- less_than: "mora biti manji od %{count}"
- less_than_or_equal_to: "mora biti manji ili jednak %{count}"
- odd: "mora biti paran"
- even: "mora biti neparan"
- greater_than_start_date: "mora biti veÄi od poÄetnog datuma"
- not_same_project: "ne pripada istom projektu"
- circular_dependency: "Ova veza Äe stvoriti kruĹžnu referencu"
- cant_link_an_issue_with_a_descendant: "Problem ne moĹže biti povezan sa jednim od svojih podzadataka"
-
- actionview_instancetag_blank_option: Molim odaberite
-
- general_text_No: 'Ne'
- general_text_Yes: 'Da'
- general_text_no: 'ne'
- general_text_yes: 'da'
- general_lang_name: 'Srpski'
- general_csv_separator: ','
- general_csv_decimal_separator: '.'
- general_csv_encoding: UTF-8
- general_pdf_encoding: UTF-8
- general_first_day_of_week: '1'
-
- notice_account_updated: Nalog je uspeĹĄno aĹžuriran.
- notice_account_invalid_creditentials: Neispravno korisniÄko ime ili lozinka.
- notice_account_password_updated: Lozinka je uspeĹĄno aĹžurirana.
- notice_account_wrong_password: PogreĹĄna lozinka
- notice_account_register_done: KorisniÄki nalog je uspeĹĄno kreiran. Kliknite na link koji ste dobili u e-poruci za aktivaciju.
- notice_account_unknown_email: Nepoznat korisnik.
- notice_can_t_change_password: Ovaj korisniÄki nalog za potvrdu identiteta koristi spoljni izvor. NemoguÄe je promeniti lozinku.
- notice_account_lost_email_sent: Poslata vam je e-poruka sa uputstvom za izbor nove lozinke
- notice_account_activated: VaĹĄ korisniÄki nalog je aktiviran. Sada se moĹžete prijaviti.
- notice_successful_create: UspeĹĄno kreiranje.
- notice_successful_update: UspeĹĄno aĹžuriranje.
- notice_successful_delete: UspeĹĄno brisanje.
- notice_successful_connection: UspeĹĄno povezivanje.
- notice_file_not_found: Strana kojoj Ĺželite pristupiti ne postoji ili je uklonjena.
- notice_locking_conflict: Podatak je aĹžuriran od strane drugog korisnika.
- notice_not_authorized: Niste ovlaĹĄÄeni za pristup ovoj strani.
- notice_email_sent: "E-poruka je poslata na %{value}"
- notice_email_error: "Dogodila se greĹĄka prilikom slanja e-poruke (%{value})"
- notice_feeds_access_key_reseted: VaĹĄ RSS pristupni kljuÄ je poniĹĄten.
- notice_api_access_key_reseted: VaĹĄ API pristupni kljuÄ je poniĹĄten.
- notice_failed_to_save_issues: "NeuspeĹĄno snimanje %{count} problema od %{total} odabranih: %{ids}."
- notice_failed_to_save_members: "NeuspeĹĄno snimanje Älana(ova): %{errors}."
- notice_no_issue_selected: "Ni jedan problem nije odabran! Molimo, odaberite problem koji Ĺželite da menjate."
- notice_account_pending: "VaĹĄ nalog je kreiran i Äeka na odobrenje administratora."
- notice_default_data_loaded: Podrazumevano konfigurisanje je uspeĹĄno uÄitano.
- notice_unable_delete_version: Verziju je nemoguÄe izbrisati.
- notice_unable_delete_time_entry: Stavku evidencije vremena je nemoguÄe izbrisati.
- notice_issue_done_ratios_updated: Odnos reĹĄenih problema je aĹžuriran.
-
- error_can_t_load_default_data: "Podrazumevano konfigurisanje je nemoguÄe uÄitati: %{value}"
- error_scm_not_found: "Stavka ili ispravka nisu pronaÄene u spremiĹĄtu."
- error_scm_command_failed: "GreĹĄka se javila prilikom pokuĹĄaja pristupa spremiĹĄtu: %{value}"
- error_scm_annotate: "Stavka ne postoji ili ne moĹže biti oznaÄena."
- error_issue_not_found_in_project: 'Problem nije pronaÄen ili ne pripada ovom projektu.'
- error_no_tracker_in_project: 'Ni jedno praÄenje nije povezano sa ovim projektom. Molimo proverite podeĹĄavanja projekta.'
- error_no_default_issue_status: 'Podrazumevani status problema nije definisan. Molimo proverite vaĹĄe konfigurisanje (idite na "Administracija -> Statusi problema").'
- error_can_not_delete_custom_field: NemoguÄe je izbrisati prilagoÄeno polje
- error_can_not_delete_tracker: "Ovo praÄenje sadrĹži probleme i ne moĹže biti obrisano."
- error_can_not_remove_role: "Ova uloga je u upotrebi i ne moĹže biti obrisana."
- error_can_not_reopen_issue_on_closed_version: 'Problem dodeljen zatvorenoj verziji ne moĹže biti ponovo otvoren'
- error_can_not_archive_project: Ovaj projekat se ne moĹže arhivirati
- error_issue_done_ratios_not_updated: "Odnos reĹĄenih problema nije aĹžuriran."
- error_workflow_copy_source: 'Molimo odaberite izvorno praÄenje ili ulogu'
- error_workflow_copy_target: 'Molimo odaberite odrediĹĄno praÄenje i ulogu'
- error_unable_delete_issue_status: 'Status problema je nemoguÄe obrisati'
- error_unable_to_connect: "Povezivanje sa (%{value}) je nemoguÄe"
- warning_attachments_not_saved: "%{count} datoteka ne moĹže biti snimljena."
-
- mail_subject_lost_password: "VaĹĄa %{value} lozinka"
- mail_body_lost_password: 'Za promenu vaĹĄe lozinke, kliknite na sledeÄi link:'
- mail_subject_register: "Aktivacija vaĹĄeg %{value} naloga"
- mail_body_register: 'Za aktivaciju vaĹĄeg naloga, kliknite na sledeÄi link:'
- mail_body_account_information_external: "VaĹĄ nalog %{value} moĹžete koristiti za prijavu."
- mail_body_account_information: Informacije o vaĹĄem nalogu
- mail_subject_account_activation_request: "Zahtev za aktivaciju naloga %{value}"
- mail_body_account_activation_request: "Novi korisnik (%{value}) je registrovan. Nalog Äeka na vaĹĄe odobrenje:"
- mail_subject_reminder: "%{count} problema dospeva narednih %{days} dana"
- mail_body_reminder: "%{count} problema dodeljenih vama dospeva u narednih %{days} dana:"
- mail_subject_wiki_content_added: "Wiki stranica '%{id}' je dodata"
- mail_body_wiki_content_added: "%{author} je dodao wiki stranicu '%{id}'."
- mail_subject_wiki_content_updated: "Wiki stranica '%{id}' je aĹžurirana"
- mail_body_wiki_content_updated: "%{author} je aĹžurirao wiki stranicu '%{id}'."
-
- gui_validation_error: jedna greĹĄka
- gui_validation_error_plural: "%{count} greĹĄaka"
-
- field_name: Naziv
- field_description: Opis
- field_summary: Rezime
- field_is_required: Obavezno
- field_firstname: Ime
- field_lastname: Prezime
- field_mail: E-adresa
- field_filename: Datoteka
- field_filesize: VeliÄina
- field_downloads: Preuzimanja
- field_author: Autor
- field_created_on: Kreirano
- field_updated_on: AĹžurirano
- field_field_format: Format
- field_is_for_all: Za sve projekte
- field_possible_values: MoguÄe vrednosti
- field_regexp: Regularan izraz
- field_min_length: Minimalna duĹžina
- field_max_length: Maksimalna duĹžina
- field_value: Vrednost
- field_category: Kategorija
- field_title: Naslov
- field_project: Projekat
- field_issue: Problem
- field_status: Status
- field_notes: BeleĹĄke
- field_is_closed: Zatvoren problem
- field_is_default: Podrazumevana vrednost
- field_tracker: PraÄenje
- field_subject: Predmet
- field_due_date: Krajnji rok
- field_assigned_to: Dodeljeno
- field_priority: Prioritet
- field_fixed_version: OdrediĹĄna verzija
- field_user: Korisnik
- field_principal: Glavni
- field_role: Uloga
- field_homepage: PoÄetna stranica
- field_is_public: Javno objavljivanje
- field_parent: Potprojekat od
- field_is_in_roadmap: Problemi prikazani u planu rada
- field_login: KorisniÄko ime
- field_mail_notification: ObaveĹĄtenja putem e-poĹĄte
- field_admin: Administrator
- field_last_login_on: Poslednje povezivanje
- field_language: Jezik
- field_password: Lozinka
- field_new_password: Nova lozinka
- field_password_confirmation: Potvrda lozinke
- field_version: Verzija
- field_type: Tip
- field_host: Glavni raÄunar
- field_port: Port
- field_account: KorisniÄki nalog
- field_base_dn: Bazni DN
- field_attr_login: Atribut prijavljivanja
- field_attr_firstname: Atribut imena
- field_attr_lastname: Atribut prezimena
- field_attr_mail: Atribut e-adrese
- field_onthefly: Kreiranje korisnika u toku rada
- field_start_date: PoÄetak
- field_done_ratio: "% uraÄeno"
- field_auth_source: ReĹžim potvrde identiteta
- field_hide_mail: Sakrij moju e-adresu
- field_comments: Komentar
- field_url: URL
- field_start_page: PoÄetna stranica
- field_subproject: Potprojekat
- field_hours: sati
- field_activity: Aktivnost
- field_spent_on: Datum
- field_identifier: Identifikator
- field_is_filter: Upotrebi kao filter
- field_issue_to: Srodni problemi
- field_delay: KaĹĄnjenje
- field_assignable: Problem moĹže biti dodeljen ovoj ulozi
- field_redirect_existing_links: Preusmeri postojeÄe veze
- field_estimated_hours: Proteklo vreme
- field_column_names: Kolone
- field_time_zone: Vremenska zona
- field_searchable: MoĹže da se pretraĹžuje
- field_default_value: Podrazumevana vrednost
- field_comments_sorting: PrikaĹži komentare
- field_parent_title: MatiÄna stranica
- field_editable: Izmenljivo
- field_watcher: PosmatraÄ
- field_identity_url: OpenID URL
- field_content: SadrĹžaj
- field_group_by: Grupisanje rezultata po
- field_sharing: Deljenje
- field_parent_issue: MatiÄni zadatak
-
- setting_app_title: Naslov aplikacije
- setting_app_subtitle: Podnaslov aplikacije
- setting_welcome_text: Tekst dobrodoĹĄlice
- setting_default_language: Podrazumevani jezik
- setting_login_required: Obavezna potvrda identiteta
- setting_self_registration: Samoregistracija
- setting_attachment_max_size: Maks. veliÄina priloĹžene datoteke
- setting_issues_export_limit: OgraniÄenje izvoza âproblemaâ
- setting_mail_from: E-adresa poĹĄiljaoca
- setting_bcc_recipients: Primaoci âBccâ kopije
- setting_plain_text_mail: Poruka sa Äistim tekstom (bez HTML-a)
- setting_host_name: Putanja i naziv glavnog raÄunara
- setting_text_formatting: Oblikovanje teksta
- setting_wiki_compression: Kompresija Wiki istorije
- setting_feeds_limit: OgraniÄenje sadrĹžaja izvora vesti
- setting_default_projects_public: Podrazumeva se javno prikazivanje novih projekata
- setting_autofetch_changesets: IzvrĹĄavanje automatskog preuzimanja
- setting_sys_api_enabled: OmoguÄavanje WS za upravljanje spremiĹĄtem
- setting_commit_ref_keywords: Referenciranje kljuÄnih reÄi
- setting_commit_fix_keywords: Popravljanje kljuÄnih reÄi
- setting_autologin: Automatska prijava
- setting_date_format: Format datuma
- setting_time_format: Format vremena
- setting_cross_project_issue_relations: Dozvoli povezivanje problema iz unakrsnih projekata
- setting_issue_list_default_columns: Podrazumevane kolone prikazane na spisku problema
- setting_repositories_encodings: Kodiranje spremiĹĄta
- setting_commit_logs_encoding: Kodiranje izvrĹĄnih poruka
- setting_emails_footer: PodnoĹžje stranice e-poruke
- setting_protocol: Protokol
- setting_per_page_options: Opcije prikaza objekata po stranici
- setting_user_format: Format prikaza korisnika
- setting_activity_days_default: Broj dana prikazanih na projektnoj aktivnosti
- setting_display_subprojects_issues: Prikazuj probleme iz potprojekata na glavnom projektu, ukoliko nije drugaÄije navedeno
- setting_enabled_scm: OmoguÄavanje SCM
- setting_mail_handler_body_delimiters: "SkraÄivanje e-poruke nakon jedne od ovih linija"
- setting_mail_handler_api_enabled: OmoguÄavanje WS dolazne e-poruke
- setting_mail_handler_api_key: API kljuÄ
- setting_sequential_project_identifiers: Generisanje sekvencijalnog imena projekta
- setting_gravatar_enabled: Koristi Gravatar korisniÄke ikone
- setting_gravatar_default: Podrazumevana Gravatar slika
- setting_diff_max_lines_displayed: Maks. broj prikazanih razliÄitih linija
- setting_file_max_size_displayed: Maks. veliÄina tekst. datoteka prikazanih umetnuto
- setting_repository_log_display_limit: Maks. broj revizija prikazanih u datoteci za evidenciju
- setting_openid: Dozvoli OpenID prijavu i registraciju
- setting_password_min_length: Minimalna duĹžina lozinke
- setting_new_project_user_role_id: Kreatoru projekta (koji nije administrator) dodeljuje je uloga
- setting_default_projects_modules: Podrazumevano omoguÄeni moduli za nove projekte
- setting_issue_done_ratio: IzraÄunaj odnos reĹĄenih problema
- setting_issue_done_ratio_issue_field: koristeÄi polje problema
- setting_issue_done_ratio_issue_status: koristeÄi status problema
- setting_start_of_week: Prvi dan u sedmici
- setting_rest_api_enabled: OmoguÄi REST web usluge
- setting_cache_formatted_text: KeĹĄiranje obraÄenog teksta
-
- permission_add_project: Kreiranje projekta
- permission_add_subprojects: Kreiranje potpojekta
- permission_edit_project: Izmena projekata
- permission_select_project_modules: Odabiranje modula projekta
- permission_manage_members: Upravljanje Älanovima
- permission_manage_project_activities: Upravljanje projektnim aktivnostima
- permission_manage_versions: Upravljanje verzijama
- permission_manage_categories: Upravljanje kategorijama problema
- permission_view_issues: Pregled problema
- permission_add_issues: Dodavanje problema
- permission_edit_issues: Izmena problema
- permission_manage_issue_relations: Upravljanje vezama izmeÄu problema
- permission_add_issue_notes: Dodavanje beleĹĄki
- permission_edit_issue_notes: Izmena beleĹĄki
- permission_edit_own_issue_notes: Izmena sopstvenih beleĹĄki
- permission_move_issues: Pomeranje problema
- permission_delete_issues: Brisanje problema
- permission_manage_public_queries: Upravljanje javnim upitima
- permission_save_queries: Snimanje upita
- permission_view_gantt: Pregledanje Gantovog dijagrama
- permission_view_calendar: Pregledanje kalendara
- permission_view_issue_watchers: Pregledanje spiska posmatraÄa
- permission_add_issue_watchers: Dodavanje posmatraÄa
- permission_delete_issue_watchers: Brisanje posmatraÄa
- permission_log_time: BeleĹženje utroĹĄenog vremena
- permission_view_time_entries: Pregledanje utroĹĄenog vremena
- permission_edit_time_entries: Izmena utroĹĄenog vremena
- permission_edit_own_time_entries: Izmena sopstvenog utroĹĄenog vremena
- permission_manage_news: Upravljanje vestima
- permission_comment_news: Komentarisanje vesti
- permission_manage_documents: Upravljanje dokumentima
- permission_view_documents: Pregledanje dokumenata
- permission_manage_files: Upravljanje datotekama
- permission_view_files: Pregledanje datoteka
- permission_manage_wiki: Upravljanje wiki stranicama
- permission_rename_wiki_pages: Promena imena wiki stranicama
- permission_delete_wiki_pages: Brisanje wiki stranica
- permission_view_wiki_pages: Pregledanje wiki stranica
- permission_view_wiki_edits: Pregledanje wiki istorije
- permission_edit_wiki_pages: Izmena wiki stranica
- permission_delete_wiki_pages_attachments: Brisanje priloĹženih datoteka
- permission_protect_wiki_pages: ZaĹĄtita wiki stranica
- permission_manage_repository: Upravljanje spremiĹĄtem
- permission_browse_repository: Pregledanje spremiĹĄta
- permission_view_changesets: Pregledanje skupa promena
- permission_commit_access: Potvrda pristupa
- permission_manage_boards: Upravljanje forumima
- permission_view_messages: Pregledanje poruka
- permission_add_messages: Slanje poruka
- permission_edit_messages: Izmena poruka
- permission_edit_own_messages: Izmena sopstvenih poruka
- permission_delete_messages: Brisanje poruka
- permission_delete_own_messages: Brisanje sopstvenih poruka
- permission_export_wiki_pages: Izvoz wiki stranica
- permission_manage_subtasks: Upravljanje podzadacima
-
- project_module_issue_tracking: PraÄenje problema
- project_module_time_tracking: PraÄenje vremena
- project_module_news: Vesti
- project_module_documents: Dokumenti
- project_module_files: Datoteke
- project_module_wiki: Wiki
- project_module_repository: SpremiĹĄte
- project_module_boards: Forumi
-
- label_user: Korisnik
- label_user_plural: Korisnici
- label_user_new: Novi korisnik
- label_user_anonymous: Anoniman
- label_project: Projekat
- label_project_new: Novi projekat
- label_project_plural: Projekti
- label_x_projects:
- zero: nema projekata
- one: jedan projekat
- other: "%{count} projekata"
- label_project_all: Svi projekti
- label_project_latest: Poslednji projekti
- label_issue: Problem
- label_issue_new: Novi problem
- label_issue_plural: Problemi
- label_issue_view_all: Prikaz svih problema
- label_issues_by: "Problemi (%{value})"
- label_issue_added: Problem je dodat
- label_issue_updated: Problem je aĹžuriran
- label_document: Dokument
- label_document_new: Novi dokument
- label_document_plural: Dokumenti
- label_document_added: Dokument je dodat
- label_role: Uloga
- label_role_plural: Uloge
- label_role_new: Nova uloga
- label_role_and_permissions: Uloge i dozvole
- label_member: Älan
- label_member_new: Novi Älan
- label_member_plural: Älanovi
- label_tracker: PraÄenje
- label_tracker_plural: PraÄenja
- label_tracker_new: Novo praÄenje
- label_workflow: Tok posla
- label_issue_status: Status problema
- label_issue_status_plural: Statusi problema
- label_issue_status_new: Novi status
- label_issue_category: Kategorija problema
- label_issue_category_plural: Kategorije problema
- label_issue_category_new: Nova kategorija
- label_custom_field: PrilagoÄeno polje
- label_custom_field_plural: PrilagoÄena polja
- label_custom_field_new: Novo prilagoÄeno polje
- label_enumerations: Nabrojiva lista
- label_enumeration_new: Nova vrednost
- label_information: Informacija
- label_information_plural: Informacije
- label_please_login: Molimo, prijavite se
- label_register: Registracija
- label_login_with_open_id_option: ili prijava sa OpenID
- label_password_lost: Izgubljena lozinka
- label_home: PoÄetak
- label_my_page: Moja stranica
- label_my_account: Moj nalog
- label_my_projects: Moji projekti
- label_my_page_block: My page block
- label_administration: Administracija
- label_login: Prijava
- label_logout: Odjava
- label_help: PomoÄ
- label_reported_issues: Prijavljeni problemi
- label_assigned_to_me_issues: Problemi dodeljeni meni
- label_last_login: Poslednje povezivanje
- label_registered_on: Registrovan
- label_activity: Aktivnost
- label_overall_activity: Celokupna aktivnost
- label_user_activity: "Aktivnost korisnika %{value}"
- label_new: Novo
- label_logged_as: Prijavljeni ste kao
- label_environment: OkruĹženje
- label_authentication: Potvrda identiteta
- label_auth_source: ReĹžim potvrde identiteta
- label_auth_source_new: Novi reĹžim potvrde identiteta
- label_auth_source_plural: ReĹžimi potvrde identiteta
- label_subproject_plural: Potprojekti
- label_subproject_new: Novi potprojekat
- label_and_its_subprojects: "%{value} i njegovi potprojekti"
- label_min_max_length: Min. - Maks. duĹžina
- label_list: Spisak
- label_date: Datum
- label_integer: Ceo broj
- label_float: Sa pokretnim zarezom
- label_boolean: LogiÄki operator
- label_string: Tekst
- label_text: Dugi tekst
- label_attribute: Osobina
- label_attribute_plural: Osobine
- label_download: "%{count} preuzimanje"
- label_download_plural: "%{count} preuzimanja"
- label_no_data: Nema podataka za prikazivanje
- label_change_status: Promena statusa
- label_history: Istorija
- label_attachment: Datoteka
- label_attachment_new: Nova datoteka
- label_attachment_delete: Brisanje datoteke
- label_attachment_plural: Datoteke
- label_file_added: Datoteka je dodata
- label_report: IzveĹĄtaj
- label_report_plural: IzveĹĄtaji
- label_news: Vesti
- label_news_new: Dodavanje vesti
- label_news_plural: Vesti
- label_news_latest: Poslednje vesti
- label_news_view_all: Prikaz svih vesti
- label_news_added: Vesti su dodate
- label_settings: PodeĹĄavanja
- label_overview: Pregled
- label_version: Verzija
- label_version_new: Nova verzija
- label_version_plural: Verzije
- label_close_versions: Zatvori zavrĹĄene verzije
- label_confirmation: Potvrda
- label_export_to: 'TakoÄe dostupno i u varijanti:'
- label_read: Äitanje...
- label_public_projects: Javni projekti
- label_open_issues: otvoren
- label_open_issues_plural: otvorenih
- label_closed_issues: zatvoren
- label_closed_issues_plural: zatvorenih
- label_x_open_issues_abbr_on_total:
- zero: 0 otvorenih / %{total}
- one: 1 otvoren / %{total}
- other: "%{count} otvorenih / %{total}"
- label_x_open_issues_abbr:
- zero: 0 otvorenih
- one: 1 otvoren
- other: "%{count} otvorenih"
- label_x_closed_issues_abbr:
- zero: 0 zatvorenih
- one: 1 zatvoren
- other: "%{count} zatvorenih"
- label_total: Ukupno
- label_permissions: Dozvole
- label_current_status: Trenutni status
- label_new_statuses_allowed: Novi statusi dozvoljeni
- label_all: svi
- label_none: nijedan
- label_nobody: nikome
- label_next: SledeÄe
- label_previous: Prethodno
- label_used_by: Koristio
- label_details: Detalji
- label_add_note: Dodaj beleĹĄku
- label_per_page: Po strani
- label_calendar: Kalendar
- label_months_from: meseci od
- label_gantt: Gantov dijagram
- label_internal: UnutraĹĄnji
- label_last_changes: "poslednjih %{count} promena"
- label_change_view_all: PrikaĹži sve promene
- label_personalize_page: Personalizuj ovu stranu
- label_comment: Komentar
- label_comment_plural: Komentari
- label_x_comments:
- zero: bez komentara
- one: jedan komentar
- other: "%{count} komentara"
- label_comment_add: Dodaj komentar
- label_comment_added: Komentar dodat
- label_comment_delete: ObriĹĄi komentare
- label_query: PrilagoÄen upit
- label_query_plural: PrilagoÄeni upiti
- label_query_new: Novi upit
- label_filter_add: Dodavanje filtera
- label_filter_plural: Filteri
- label_equals: je
- label_not_equals: nije
- label_in_less_than: manje od
- label_in_more_than: viĹĄe od
- label_greater_or_equal: '>='
- label_less_or_equal: '<='
- label_in: u
- label_today: danas
- label_all_time: sve vreme
- label_yesterday: juÄe
- label_this_week: ove sedmice
- label_last_week: poslednje sedmice
- label_last_n_days: "poslednjih %{count} dana"
- label_this_month: ovog meseca
- label_last_month: poslednjeg meseca
- label_this_year: ove godine
- label_date_range: Vremenski period
- label_less_than_ago: pre manje od nekoliko dana
- label_more_than_ago: pre viĹĄe od nekoliko dana
- label_ago: pre nekoliko dana
- label_contains: sadrĹži
- label_not_contains: ne sadrĹži
- label_day_plural: dana
- label_repository: SpremiĹĄte
- label_repository_plural: SpremiĹĄta
- label_browse: Pregledanje
- label_modification: "%{count} promena"
- label_modification_plural: "%{count} promena"
- label_branch: Grana
- label_tag: Oznaka
- label_revision: Revizija
- label_revision_plural: Revizije
- label_revision_id: "Revizija %{value}"
- label_associated_revisions: PridruĹžene revizije
- label_added: dodato
- label_modified: promenjeno
- label_copied: kopirano
- label_renamed: preimenovano
- label_deleted: izbrisano
- label_latest_revision: Poslednja revizija
- label_latest_revision_plural: Poslednje revizije
- label_view_revisions: Pregled revizija
- label_view_all_revisions: Pregled svih revizija
- label_max_size: Maksimalna veliÄina
- label_sort_highest: PremeĹĄtanje na vrh
- label_sort_higher: PremeĹĄtanje na gore
- label_sort_lower: PremeĹĄtanje na dole
- label_sort_lowest: PremeĹĄtanje na dno
- label_roadmap: Plan rada
- label_roadmap_due_in: "Dospeva %{value}"
- label_roadmap_overdue: "%{value} najkasnije"
- label_roadmap_no_issues: Nema problema za ovu verziju
- label_search: Pretraga
- label_result_plural: Rezultati
- label_all_words: Sve reÄi
- label_wiki: Wiki
- label_wiki_edit: Wiki izmena
- label_wiki_edit_plural: Wiki izmene
- label_wiki_page: Wiki stranica
- label_wiki_page_plural: Wiki stranice
- label_index_by_title: Indeksiranje po naslovu
- label_index_by_date: Indeksiranje po datumu
- label_current_version: Trenutna verzija
- label_preview: Pregled
- label_feed_plural: Izvori vesti
- label_changes_details: Detalji svih promena
- label_issue_tracking: PraÄenje problema
- label_spent_time: UtroĹĄeno vreme
- label_overall_spent_time: Celokupno utroĹĄeno vreme
- label_f_hour: "%{value} sat"
- label_f_hour_plural: "%{value} sati"
- label_time_tracking: PraÄenje vremena
- label_change_plural: Promene
- label_statistics: Statistika
- label_commits_per_month: IzvrĹĄenja meseÄno
- label_commits_per_author: IzvrĹĄenja po autoru
- label_view_diff: Pogledaj razlike
- label_diff_inline: unutra
- label_diff_side_by_side: uporedo
- label_options: Opcije
- label_copy_workflow_from: Kopiranje toka posla od
- label_permissions_report: IzveĹĄtaj o dozvolama
- label_watched_issues: Posmatrani problemi
- label_related_issues: Srodni problemi
- label_applied_status: Primenjeni statusi
- label_loading: UÄitavanje...
- label_relation_new: Nova relacija
- label_relation_delete: Brisanje relacije
- label_relates_to: srodnih sa
- label_duplicates: dupliranih
- label_duplicated_by: dupliranih od
- label_blocks: odbijenih
- label_blocked_by: odbijenih od
- label_precedes: prethodi
- label_follows: praÄenih
- label_end_to_start: od kraja do poÄetka
- label_end_to_end: od kraja do kraja
- label_start_to_start: od poÄetka do poÄetka
- label_start_to_end: od poÄetka do kraja
- label_stay_logged_in: Ostanite prijavljeni
- label_disabled: onemoguÄeno
- label_show_completed_versions: Prikazivanje zavrĹĄene verzije
- label_me: meni
- label_board: Forum
- label_board_new: Novi forum
- label_board_plural: Forumi
- label_board_locked: ZakljuÄana
- label_board_sticky: Lepljiva
- label_topic_plural: Teme
- label_message_plural: Poruke
- label_message_last: Poslednja poruka
- label_message_new: Nova poruka
- label_message_posted: Poruka je dodata
- label_reply_plural: Odgovori
- label_send_information: PoĹĄalji korisniku detalje naloga
- label_year: Godina
- label_month: Mesec
- label_week: Sedmica
- label_date_from: Ĺ alje
- label_date_to: Prima
- label_language_based: Bazirano na jeziku korisnika
- label_sort_by: "Sortirano po %{value}"
- label_send_test_email: Slanje probne e-poruke
- label_feeds_access_key: RSS pristupni kljuÄ
- label_missing_feeds_access_key: RSS pristupni kljuÄ nedostaje
- label_feeds_access_key_created_on: "RSS pristupni kljuÄ je napravljen pre %{value}"
- label_module_plural: Moduli
- label_added_time_by: "Dodao %{author} pre %{age}"
- label_updated_time_by: "AĹžurirao %{author} pre %{age}"
- label_updated_time: "AĹžurirano pre %{value}"
- label_jump_to_a_project: Skok na projekat...
- label_file_plural: Datoteke
- label_changeset_plural: Skupovi promena
- label_default_columns: Podrazumevane kolone
- label_no_change_option: (Bez promena)
- label_bulk_edit_selected_issues: Grupna izmena odabranih problema
- label_theme: Tema
- label_default: Podrazumevano
- label_search_titles_only: PretraĹžuj samo naslove
- label_user_mail_option_all: "Za bilo koji dogaÄaj na svim mojim projektima"
- label_user_mail_option_selected: "Za bilo koji dogaÄaj na samo odabranim projektima..."
- label_user_mail_no_self_notified: "Ne Ĺželim biti obaveĹĄtavan za promene koje sam pravim"
- label_registration_activation_by_email: aktivacija naloga putem e-poruke
- label_registration_manual_activation: ruÄna aktivacija naloga
- label_registration_automatic_activation: automatska aktivacija naloga
- label_display_per_page: "Broj stavki po stranici: %{value}"
- label_age: Starost
- label_change_properties: Promeni svojstva
- label_general: OpĹĄti
- label_more: ViĹĄe
- label_scm: SCM
- label_plugins: Dodatne komponente
- label_ldap_authentication: LDAP potvrda identiteta
- label_downloads_abbr: D/L
- label_optional_description: Opciono opis
- label_add_another_file: Dodaj joĹĄ jednu datoteku
- label_preferences: PodeĹĄavanja
- label_chronological_order: po hronoloĹĄkom redosledu
- label_reverse_chronological_order: po obrnutom hronoloĹĄkom redosledu
- label_planning: Planiranje
- label_incoming_emails: Dolazne e-poruke
- label_generate_key: Generisanje kljuÄa
- label_issue_watchers: PosmatraÄi
- label_example: Primer
- label_display: Prikaz
- label_sort: Sortiranje
- label_ascending: RastuÄi niz
- label_descending: OpadajuÄi niz
- label_date_from_to: Od %{start} do %{end}
- label_wiki_content_added: Wiki stranica je dodata
- label_wiki_content_updated: Wiki stranica je aĹžurirana
- label_group: Grupa
- label_group_plural: Grupe
- label_group_new: Nova grupa
- label_time_entry_plural: UtroĹĄeno vreme
- label_version_sharing_none: Nije deljeno
- label_version_sharing_descendants: Sa potprojektima
- label_version_sharing_hierarchy: Sa hijerarhijom projekta
- label_version_sharing_tree: Sa stablom projekta
- label_version_sharing_system: Sa svim projektima
- label_update_issue_done_ratios: AĹžuriraj odnos reĹĄenih problema
- label_copy_source: Izvor
- label_copy_target: OdrediĹĄte
- label_copy_same_as_target: Isto kao odrediĹĄte
- label_display_used_statuses_only: Prikazuj statuse koriĹĄÄene samo od strane ovog praÄenja
- label_api_access_key: API pristupni kljuÄ
- label_missing_api_access_key: Nedostaje API pristupni kljuÄ
- label_api_access_key_created_on: "API pristupni kljuÄ je kreiran pre %{value}"
- label_profile: Profil
- label_subtask_plural: Podzadatak
- label_project_copy_notifications: PoĹĄalji e-poruku sa obaveĹĄtenjem prilikom kopiranja projekta
-
- button_login: Prijava
- button_submit: PoĹĄalji
- button_save: Snimi
- button_check_all: UkljuÄi sve
- button_uncheck_all: IskljuÄi sve
- button_delete: IzbriĹĄi
- button_create: Kreiraj
- button_create_and_continue: Kreiraj i nastavi
- button_test: Test
- button_edit: Izmeni
- button_add: Dodaj
- button_change: Promeni
- button_apply: Primeni
- button_clear: ObriĹĄi
- button_lock: ZakljuÄaj
- button_unlock: OtkljuÄaj
- button_download: Preuzmi
- button_list: Spisak
- button_view: PrikaĹži
- button_move: Pomeri
- button_move_and_follow: Pomeri i prati
- button_back: Nazad
- button_cancel: PoniĹĄti
- button_activate: Aktiviraj
- button_sort: Sortiraj
- button_log_time: Evidentiraj vreme
- button_rollback: Povratak na ovu verziju
- button_watch: Prati
- button_unwatch: Ne prati viĹĄe
- button_reply: Odgovori
- button_archive: Arhiviraj
- button_unarchive: Vrati iz arhive
- button_reset: PoniĹĄti
- button_rename: Preimenuj
- button_change_password: Promeni lozinku
- button_copy: Kopiraj
- button_copy_and_follow: Kopiraj i prati
- button_annotate: PribeleĹži
- button_update: AĹžuriraj
- button_configure: Podesi
- button_quote: Pod navodnicima
- button_duplicate: Dupliraj
- button_show: PrikaĹži
-
- status_active: aktivni
- status_registered: registrovani
- status_locked: zakljuÄani
-
- version_status_open: otvoren
- version_status_locked: zakljuÄan
- version_status_closed: zatvoren
-
- field_active: Aktivan
-
- text_select_mail_notifications: Odaberi akcije za koje Äe obaveĹĄtenje biti poslato putem e-poĹĄte.
- text_regexp_info: npr. ^[A-Z0-9]+$
- text_min_max_length_info: 0 znaÄi bez ograniÄenja
- text_project_destroy_confirmation: Jeste li sigurni da Ĺželite da izbriĹĄete ovaj projekat i sve pripadajuÄe podatke?
- text_subprojects_destroy_warning: "Potprojekti: %{value} Äe takoÄe biti izbrisan."
- text_workflow_edit: Odaberite ulogu i praÄenje za izmenu toka posla
- text_are_you_sure: Jeste li sigurni?
- text_journal_changed: "%{label} promenjen od %{old} u %{new}"
- text_journal_set_to: "%{label} postavljen u %{value}"
- text_journal_deleted: "%{label} izbrisano (%{old})"
- text_journal_added: "%{label} %{value} dodato"
- text_tip_issue_begin_day: zadatak poÄinje ovog dana
- text_tip_issue_end_day: zadatak se zavrĹĄava ovog dana
- text_tip_issue_begin_end_day: zadatak poÄinje i zavrĹĄava ovog dana
- text_project_identifier_info: 'Only lower case letters (a-z), numbers, dashes and underscores are allowed.
Once saved, the identifier can not be changed.'
- text_caracters_maximum: "NajviĹĄe %{count} znak(ova)."
- text_caracters_minimum: "Broj znakova mora biti najmanje %{count}."
- text_length_between: "Broj znakova mora biti izmeÄu %{min} i %{max}."
- text_tracker_no_workflow: Ovo praÄenje nema definisan tok posla
- text_unallowed_characters: Nedozvoljeni znakovi
- text_comma_separated: Dozvoljene su viĹĄestruke vrednosti (odvojene zarezom).
- text_line_separated: Dozvoljene su viĹĄestruke vrednosti (jedan red za svaku vrednost).
- text_issues_ref_in_commit_messages: Referenciranje i popravljanje problema u izvrĹĄnim porukama
- text_issue_added: "%{author} je prijavio problem %{id}."
- text_issue_updated: "%{author} je aĹžurirao problem %{id}."
- text_wiki_destroy_confirmation: Jeste li sigurni da Ĺželite da obriĹĄete wiki i sav sadrĹžaj?
- text_issue_category_destroy_question: "Nekoliko problema (%{count}) je dodeljeno ovoj kategoriji. Ĺ ta Ĺželite da uradite?"
- text_issue_category_destroy_assignments: Ukloni dodeljene kategorije
- text_issue_category_reassign_to: Dodeli ponovo probleme ovoj kategoriji
- text_user_mail_option: "Za neizabrane projekte, dobiÄete samo obaveĹĄtenje o stvarima koje pratite ili ste ukljuÄeni (npr. problemi Äiji ste vi autor ili zastupnik)."
- text_no_configuration_data: "Uloge, praÄenja, statusi problema i toka posla joĹĄ uvek nisu podeĹĄeni.\nPreporuÄljivo je da uÄitate podrazumevano konfigurisanje. Izmena je moguÄa nakon prvog uÄitavanja."
- text_load_default_configuration: UÄitaj podrazumevano konfigurisanje
- text_status_changed_by_changeset: "Primenjeno u skupu sa promenama %{value}."
- text_issues_destroy_confirmation: 'Jeste li sigurni da Ĺželite da izbriĹĄete odabrane probleme?'
- text_select_project_modules: 'Odaberite module koje Ĺželite omoguÄiti za ovaj projekat:'
- text_default_administrator_account_changed: Podrazumevani administratorski nalog je promenjen
- text_file_repository_writable: Fascikla priloĹženih datoteka je upisiva
- text_plugin_assets_writable: Fascikla elemenata dodatnih komponenti je upisiva
- text_rmagick_available: RMagick je dostupan (opciono)
- text_destroy_time_entries_question: "%{hours} sati je prijavljeno za ovaj problem koji Ĺželite izbrisati. Ĺ ta Ĺželite da uradite?"
- text_destroy_time_entries: IzbriĹĄi prijavljene sate
- text_assign_time_entries_to_project: Dodeli prijavljene sate projektu
- text_reassign_time_entries: 'Dodeli ponovo prijavljene sate ovom problemu:'
- text_user_wrote: "%{value} je napisao:"
- text_enumeration_destroy_question: "%{count} objekat(a) je dodeljeno ovoj vrednosti."
- text_enumeration_category_reassign_to: 'Dodeli ih ponovo ovoj vrednosti:'
- text_email_delivery_not_configured: "Isporuka e-poruka nije konfigurisana i obaveĹĄtenja su onemoguÄena.\nPodesite vaĹĄ SMTP server u config/configuration.yml i pokrenite ponovo aplikaciju za njihovo omoguÄavanje."
- text_repository_usernames_mapping: "Odaberite ili aĹžurirajte Redmine korisnike mapiranjem svakog korisniÄkog imena pronaÄenog u evidenciji spremiĹĄta.\nKorisnici sa istim Redmine imenom i imenom spremiĹĄta ili e-adresom su automatski mapirani."
- text_diff_truncated: '... Ova razlika je iseÄena jer je dostignuta maksimalna veliÄina prikaza.'
- text_custom_field_possible_values_info: 'Jedan red za svaku vrednost'
- text_wiki_page_destroy_question: "Ova stranica ima %{descendants} podreÄenih stranica i podstranica. Ĺ ta Ĺželite da uradite?"
- text_wiki_page_nullify_children: "ZadrĹži podreÄene stranice kao korene stranice"
- text_wiki_page_destroy_children: "IzbriĹĄi podreÄene stranice i sve njihove podstranice"
- text_wiki_page_reassign_children: "Dodeli ponovo podreÄene stranice ovoj matiÄnoj stranici"
- text_own_membership_delete_confirmation: "Nakon uklanjanja pojedinih ili svih vaĹĄih dozvola neÄete viĹĄe moÄi da ureÄujete ovaj projekat.\nĹ˝elite li da nastavite?"
- text_zoom_in: UveÄaj
- text_zoom_out: Umanji
-
- default_role_manager: MenadĹžer
- default_role_developer: Programer
- default_role_reporter: IzveĹĄtaÄ
- default_role_non_member: Non member
- default_role_anonymous: Anonymous
- default_tracker_bug: GreĹĄka
- default_tracker_feature: Funkcionalnost
- default_tracker_support: PodrĹĄka
- default_issue_status_new: Novo
- default_issue_status_in_progress: U toku
- default_issue_status_resolved: ReĹĄeno
- default_issue_status_feedback: Povratna informacija
- default_issue_status_closed: Zatvoreno
- default_issue_status_rejected: Odbijeno
- default_doc_category_user: KorisniÄka dokumentacija
- default_doc_category_tech: TehniÄka dokumentacija
- default_priority_low: Nizak
- default_priority_normal: Normalan
- default_priority_high: Visok
- default_priority_urgent: Hitno
- default_priority_immediate: Neposredno
- default_activity_design: Dizajn
- default_activity_development: Razvoj
-
- enumeration_issue_priorities: Prioriteti problema
- enumeration_doc_categories: Kategorije dokumenta
- enumeration_activities: Aktivnosti (praÄenje vremena)
- enumeration_system_activity: Sistemska aktivnost
-
- field_time_entries: Vreme evidencije
- project_module_gantt: Gantov dijagram
- project_module_calendar: Kalendar
- button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}"
- text_are_you_sure_with_children: Delete issue and all child issues?
- field_text: Text field
- label_user_mail_option_only_owner: Only for things I am the owner of
- setting_default_notification_option: Default notification option
- 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_none: No events
- field_member_of_group: Assignee's group
- field_assigned_to_role: Assignee's role
- notice_not_authorized_archived_project: The project you're trying to access has been archived.
- label_principal_search: "Search for user or group:"
- label_user_search: "Search for user:"
- field_visible: Visible
- setting_emails_header: Emails header
- setting_commit_logtime_activity_id: Activity for logged time
- text_time_logged_by_changeset: Applied in changeset %{value}.
- setting_commit_logtime_enabled: Enable time logging
- notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
- setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
- text_powered_by: Powered by %{link}
+# Serbian translations for Redmine
+# by Vladimir MedaroviÄ (vlada@medarovic.com)
+sr-YU:
+ 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: "%B %e, %Y"
+
+ day_names: [nedelja, ponedeljak, utorak, sreda, Äetvrtak, petak, subota]
+ abbr_day_names: [ned, pon, uto, sre, Äet, pet, sub]
+
+ # Don't forget the nil at the beginning; there's no such thing as a 0th month
+ month_names: [~, januar, februar, mart, april, maj, jun, jul, avgust, septembar, oktobar, novembar, decembar]
+ abbr_month_names: [~, jan, feb, mar, apr, maj, jun, jul, avg, sep, okt, nov, dec]
+ # Used in date_select and datime_select.
+ order:
+ - :day
+ - :month
+ - :year
+
+ time:
+ formats:
+ default: "%d.%m.%Y. u %H:%M"
+ time: "%H:%M"
+ short: "%d. %b u %H:%M"
+ long: "%d. %B %Y u %H:%M"
+ am: "am"
+ pm: "pm"
+
+ datetime:
+ distance_in_words:
+ half_a_minute: "pola minuta"
+ less_than_x_seconds:
+ one: "manje od jedne sekunde"
+ other: "manje od %{count} sek."
+ x_seconds:
+ one: "jedna sekunda"
+ other: "%{count} sek."
+ less_than_x_minutes:
+ one: "manje od minuta"
+ other: "manje od %{count} min."
+ x_minutes:
+ one: "jedan minut"
+ other: "%{count} min."
+ about_x_hours:
+ one: "pribliĹžno jedan sat"
+ other: "pribliĹžno %{count} sati"
+ x_days:
+ one: "jedan dan"
+ other: "%{count} dana"
+ about_x_months:
+ one: "pribliĹžno jedan mesec"
+ other: "pribliĹžno %{count} meseci"
+ x_months:
+ one: "jedan mesec"
+ other: "%{count} meseci"
+ about_x_years:
+ one: "pribliĹžno godinu dana"
+ other: "pribliĹžno %{count} god."
+ over_x_years:
+ one: "preko godinu dana"
+ other: "preko %{count} god."
+ almost_x_years:
+ one: "skoro godinu dana"
+ other: "skoro %{count} god."
+
+ number:
+ format:
+ separator: ","
+ delimiter: ""
+ precision: 3
+ human:
+ format:
+ delimiter: ""
+ precision: 1
+ 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: "i"
+ 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: "nije ukljuÄen u spisak"
+ exclusion: "je rezervisan"
+ invalid: "je neispravan"
+ confirmation: "potvrda ne odgovara"
+ accepted: "mora biti prihvaÄen"
+ empty: "ne moĹže biti prazno"
+ blank: "ne moĹže biti prazno"
+ too_long: "je predugaÄka (maksimum znakova je %{count})"
+ too_short: "je prekratka (minimum znakova je %{count})"
+ wrong_length: "je pogreĹĄne duĹžine (broj znakova mora biti %{count})"
+ taken: "je veÄ u upotrebi"
+ not_a_number: "nije broj"
+ not_a_date: "nije ispravan datum"
+ greater_than: "mora biti veÄi od %{count}"
+ greater_than_or_equal_to: "mora biti veÄi ili jednak %{count}"
+ equal_to: "mora biti jednak %{count}"
+ less_than: "mora biti manji od %{count}"
+ less_than_or_equal_to: "mora biti manji ili jednak %{count}"
+ odd: "mora biti paran"
+ even: "mora biti neparan"
+ greater_than_start_date: "mora biti veÄi od poÄetnog datuma"
+ not_same_project: "ne pripada istom projektu"
+ circular_dependency: "Ova veza Äe stvoriti kruĹžnu referencu"
+ cant_link_an_issue_with_a_descendant: "Problem ne moĹže biti povezan sa jednim od svojih podzadataka"
+
+ actionview_instancetag_blank_option: Molim odaberite
+
+ general_text_No: 'Ne'
+ general_text_Yes: 'Da'
+ general_text_no: 'ne'
+ general_text_yes: 'da'
+ general_lang_name: 'Srpski'
+ general_csv_separator: ','
+ general_csv_decimal_separator: '.'
+ general_csv_encoding: UTF-8
+ general_pdf_encoding: UTF-8
+ general_first_day_of_week: '1'
+
+ notice_account_updated: Nalog je uspeĹĄno aĹžuriran.
+ notice_account_invalid_creditentials: Neispravno korisniÄko ime ili lozinka.
+ notice_account_password_updated: Lozinka je uspeĹĄno aĹžurirana.
+ notice_account_wrong_password: PogreĹĄna lozinka
+ notice_account_register_done: KorisniÄki nalog je uspeĹĄno kreiran. Kliknite na link koji ste dobili u e-poruci za aktivaciju.
+ notice_account_unknown_email: Nepoznat korisnik.
+ notice_can_t_change_password: Ovaj korisniÄki nalog za potvrdu identiteta koristi spoljni izvor. NemoguÄe je promeniti lozinku.
+ notice_account_lost_email_sent: Poslata vam je e-poruka sa uputstvom za izbor nove lozinke
+ notice_account_activated: VaĹĄ korisniÄki nalog je aktiviran. Sada se moĹžete prijaviti.
+ notice_successful_create: UspeĹĄno kreiranje.
+ notice_successful_update: UspeĹĄno aĹžuriranje.
+ notice_successful_delete: UspeĹĄno brisanje.
+ notice_successful_connection: UspeĹĄno povezivanje.
+ notice_file_not_found: Strana kojoj Ĺželite pristupiti ne postoji ili je uklonjena.
+ notice_locking_conflict: Podatak je aĹžuriran od strane drugog korisnika.
+ notice_not_authorized: Niste ovlaĹĄÄeni za pristup ovoj strani.
+ notice_email_sent: "E-poruka je poslata na %{value}"
+ notice_email_error: "Dogodila se greĹĄka prilikom slanja e-poruke (%{value})"
+ notice_feeds_access_key_reseted: VaĹĄ RSS pristupni kljuÄ je poniĹĄten.
+ notice_api_access_key_reseted: VaĹĄ API pristupni kljuÄ je poniĹĄten.
+ notice_failed_to_save_issues: "NeuspeĹĄno snimanje %{count} problema od %{total} odabranih: %{ids}."
+ notice_failed_to_save_members: "NeuspeĹĄno snimanje Älana(ova): %{errors}."
+ notice_no_issue_selected: "Ni jedan problem nije odabran! Molimo, odaberite problem koji Ĺželite da menjate."
+ notice_account_pending: "VaĹĄ nalog je kreiran i Äeka na odobrenje administratora."
+ notice_default_data_loaded: Podrazumevano konfigurisanje je uspeĹĄno uÄitano.
+ notice_unable_delete_version: Verziju je nemoguÄe izbrisati.
+ notice_unable_delete_time_entry: Stavku evidencije vremena je nemoguÄe izbrisati.
+ notice_issue_done_ratios_updated: Odnos reĹĄenih problema je aĹžuriran.
+
+ error_can_t_load_default_data: "Podrazumevano konfigurisanje je nemoguÄe uÄitati: %{value}"
+ error_scm_not_found: "Stavka ili ispravka nisu pronaÄene u spremiĹĄtu."
+ error_scm_command_failed: "GreĹĄka se javila prilikom pokuĹĄaja pristupa spremiĹĄtu: %{value}"
+ error_scm_annotate: "Stavka ne postoji ili ne moĹže biti oznaÄena."
+ error_issue_not_found_in_project: 'Problem nije pronaÄen ili ne pripada ovom projektu.'
+ error_no_tracker_in_project: 'Ni jedno praÄenje nije povezano sa ovim projektom. Molimo proverite podeĹĄavanja projekta.'
+ error_no_default_issue_status: 'Podrazumevani status problema nije definisan. Molimo proverite vaĹĄe konfigurisanje (idite na "Administracija -> Statusi problema").'
+ error_can_not_delete_custom_field: NemoguÄe je izbrisati prilagoÄeno polje
+ error_can_not_delete_tracker: "Ovo praÄenje sadrĹži probleme i ne moĹže biti obrisano."
+ error_can_not_remove_role: "Ova uloga je u upotrebi i ne moĹže biti obrisana."
+ error_can_not_reopen_issue_on_closed_version: 'Problem dodeljen zatvorenoj verziji ne moĹže biti ponovo otvoren'
+ error_can_not_archive_project: Ovaj projekat se ne moĹže arhivirati
+ error_issue_done_ratios_not_updated: "Odnos reĹĄenih problema nije aĹžuriran."
+ error_workflow_copy_source: 'Molimo odaberite izvorno praÄenje ili ulogu'
+ error_workflow_copy_target: 'Molimo odaberite odrediĹĄno praÄenje i ulogu'
+ error_unable_delete_issue_status: 'Status problema je nemoguÄe obrisati'
+ error_unable_to_connect: "Povezivanje sa (%{value}) je nemoguÄe"
+ warning_attachments_not_saved: "%{count} datoteka ne moĹže biti snimljena."
+
+ mail_subject_lost_password: "VaĹĄa %{value} lozinka"
+ mail_body_lost_password: 'Za promenu vaĹĄe lozinke, kliknite na sledeÄi link:'
+ mail_subject_register: "Aktivacija vaĹĄeg %{value} naloga"
+ mail_body_register: 'Za aktivaciju vaĹĄeg naloga, kliknite na sledeÄi link:'
+ mail_body_account_information_external: "VaĹĄ nalog %{value} moĹžete koristiti za prijavu."
+ mail_body_account_information: Informacije o vaĹĄem nalogu
+ mail_subject_account_activation_request: "Zahtev za aktivaciju naloga %{value}"
+ mail_body_account_activation_request: "Novi korisnik (%{value}) je registrovan. Nalog Äeka na vaĹĄe odobrenje:"
+ mail_subject_reminder: "%{count} problema dospeva narednih %{days} dana"
+ mail_body_reminder: "%{count} problema dodeljenih vama dospeva u narednih %{days} dana:"
+ mail_subject_wiki_content_added: "Wiki stranica '%{id}' je dodata"
+ mail_body_wiki_content_added: "%{author} je dodao wiki stranicu '%{id}'."
+ mail_subject_wiki_content_updated: "Wiki stranica '%{id}' je aĹžurirana"
+ mail_body_wiki_content_updated: "%{author} je aĹžurirao wiki stranicu '%{id}'."
+
+ gui_validation_error: jedna greĹĄka
+ gui_validation_error_plural: "%{count} greĹĄaka"
+
+ field_name: Naziv
+ field_description: Opis
+ field_summary: Rezime
+ field_is_required: Obavezno
+ field_firstname: Ime
+ field_lastname: Prezime
+ field_mail: E-adresa
+ field_filename: Datoteka
+ field_filesize: VeliÄina
+ field_downloads: Preuzimanja
+ field_author: Autor
+ field_created_on: Kreirano
+ field_updated_on: AĹžurirano
+ field_field_format: Format
+ field_is_for_all: Za sve projekte
+ field_possible_values: MoguÄe vrednosti
+ field_regexp: Regularan izraz
+ field_min_length: Minimalna duĹžina
+ field_max_length: Maksimalna duĹžina
+ field_value: Vrednost
+ field_category: Kategorija
+ field_title: Naslov
+ field_project: Projekat
+ field_issue: Problem
+ field_status: Status
+ field_notes: BeleĹĄke
+ field_is_closed: Zatvoren problem
+ field_is_default: Podrazumevana vrednost
+ field_tracker: PraÄenje
+ field_subject: Predmet
+ field_due_date: Krajnji rok
+ field_assigned_to: Dodeljeno
+ field_priority: Prioritet
+ field_fixed_version: OdrediĹĄna verzija
+ field_user: Korisnik
+ field_principal: Glavni
+ field_role: Uloga
+ field_homepage: PoÄetna stranica
+ field_is_public: Javno objavljivanje
+ field_parent: Potprojekat od
+ field_is_in_roadmap: Problemi prikazani u planu rada
+ field_login: KorisniÄko ime
+ field_mail_notification: ObaveĹĄtenja putem e-poĹĄte
+ field_admin: Administrator
+ field_last_login_on: Poslednje povezivanje
+ field_language: Jezik
+ field_password: Lozinka
+ field_new_password: Nova lozinka
+ field_password_confirmation: Potvrda lozinke
+ field_version: Verzija
+ field_type: Tip
+ field_host: Glavni raÄunar
+ field_port: Port
+ field_account: KorisniÄki nalog
+ field_base_dn: Bazni DN
+ field_attr_login: Atribut prijavljivanja
+ field_attr_firstname: Atribut imena
+ field_attr_lastname: Atribut prezimena
+ field_attr_mail: Atribut e-adrese
+ field_onthefly: Kreiranje korisnika u toku rada
+ field_start_date: PoÄetak
+ field_done_ratio: "% uraÄeno"
+ field_auth_source: ReĹžim potvrde identiteta
+ field_hide_mail: Sakrij moju e-adresu
+ field_comments: Komentar
+ field_url: URL
+ field_start_page: PoÄetna stranica
+ field_subproject: Potprojekat
+ field_hours: sati
+ field_activity: Aktivnost
+ field_spent_on: Datum
+ field_identifier: Identifikator
+ field_is_filter: Upotrebi kao filter
+ field_issue_to: Srodni problemi
+ field_delay: KaĹĄnjenje
+ field_assignable: Problem moĹže biti dodeljen ovoj ulozi
+ field_redirect_existing_links: Preusmeri postojeÄe veze
+ field_estimated_hours: Proteklo vreme
+ field_column_names: Kolone
+ field_time_zone: Vremenska zona
+ field_searchable: MoĹže da se pretraĹžuje
+ field_default_value: Podrazumevana vrednost
+ field_comments_sorting: PrikaĹži komentare
+ field_parent_title: MatiÄna stranica
+ field_editable: Izmenljivo
+ field_watcher: PosmatraÄ
+ field_identity_url: OpenID URL
+ field_content: SadrĹžaj
+ field_group_by: Grupisanje rezultata po
+ field_sharing: Deljenje
+ field_parent_issue: MatiÄni zadatak
+
+ setting_app_title: Naslov aplikacije
+ setting_app_subtitle: Podnaslov aplikacije
+ setting_welcome_text: Tekst dobrodoĹĄlice
+ setting_default_language: Podrazumevani jezik
+ setting_login_required: Obavezna potvrda identiteta
+ setting_self_registration: Samoregistracija
+ setting_attachment_max_size: Maks. veliÄina priloĹžene datoteke
+ setting_issues_export_limit: OgraniÄenje izvoza âproblemaâ
+ setting_mail_from: E-adresa poĹĄiljaoca
+ setting_bcc_recipients: Primaoci âBccâ kopije
+ setting_plain_text_mail: Poruka sa Äistim tekstom (bez HTML-a)
+ setting_host_name: Putanja i naziv glavnog raÄunara
+ setting_text_formatting: Oblikovanje teksta
+ setting_wiki_compression: Kompresija Wiki istorije
+ setting_feeds_limit: OgraniÄenje sadrĹžaja izvora vesti
+ setting_default_projects_public: Podrazumeva se javno prikazivanje novih projekata
+ setting_autofetch_changesets: IzvrĹĄavanje automatskog preuzimanja
+ setting_sys_api_enabled: OmoguÄavanje WS za upravljanje spremiĹĄtem
+ setting_commit_ref_keywords: Referenciranje kljuÄnih reÄi
+ setting_commit_fix_keywords: Popravljanje kljuÄnih reÄi
+ setting_autologin: Automatska prijava
+ setting_date_format: Format datuma
+ setting_time_format: Format vremena
+ setting_cross_project_issue_relations: Dozvoli povezivanje problema iz unakrsnih projekata
+ setting_issue_list_default_columns: Podrazumevane kolone prikazane na spisku problema
+ setting_repositories_encodings: Kodiranje spremiĹĄta
+ setting_commit_logs_encoding: Kodiranje izvrĹĄnih poruka
+ setting_emails_footer: PodnoĹžje stranice e-poruke
+ setting_protocol: Protokol
+ setting_per_page_options: Opcije prikaza objekata po stranici
+ setting_user_format: Format prikaza korisnika
+ setting_activity_days_default: Broj dana prikazanih na projektnoj aktivnosti
+ setting_display_subprojects_issues: Prikazuj probleme iz potprojekata na glavnom projektu, ukoliko nije drugaÄije navedeno
+ setting_enabled_scm: OmoguÄavanje SCM
+ setting_mail_handler_body_delimiters: "SkraÄivanje e-poruke nakon jedne od ovih linija"
+ setting_mail_handler_api_enabled: OmoguÄavanje WS dolazne e-poruke
+ setting_mail_handler_api_key: API kljuÄ
+ setting_sequential_project_identifiers: Generisanje sekvencijalnog imena projekta
+ setting_gravatar_enabled: Koristi Gravatar korisniÄke ikone
+ setting_gravatar_default: Podrazumevana Gravatar slika
+ setting_diff_max_lines_displayed: Maks. broj prikazanih razliÄitih linija
+ setting_file_max_size_displayed: Maks. veliÄina tekst. datoteka prikazanih umetnuto
+ setting_repository_log_display_limit: Maks. broj revizija prikazanih u datoteci za evidenciju
+ setting_openid: Dozvoli OpenID prijavu i registraciju
+ setting_password_min_length: Minimalna duĹžina lozinke
+ setting_new_project_user_role_id: Kreatoru projekta (koji nije administrator) dodeljuje je uloga
+ setting_default_projects_modules: Podrazumevano omoguÄeni moduli za nove projekte
+ setting_issue_done_ratio: IzraÄunaj odnos reĹĄenih problema
+ setting_issue_done_ratio_issue_field: koristeÄi polje problema
+ setting_issue_done_ratio_issue_status: koristeÄi status problema
+ setting_start_of_week: Prvi dan u sedmici
+ setting_rest_api_enabled: OmoguÄi REST web usluge
+ setting_cache_formatted_text: KeĹĄiranje obraÄenog teksta
+
+ permission_add_project: Kreiranje projekta
+ permission_add_subprojects: Kreiranje potpojekta
+ permission_edit_project: Izmena projekata
+ permission_select_project_modules: Odabiranje modula projekta
+ permission_manage_members: Upravljanje Älanovima
+ permission_manage_project_activities: Upravljanje projektnim aktivnostima
+ permission_manage_versions: Upravljanje verzijama
+ permission_manage_categories: Upravljanje kategorijama problema
+ permission_view_issues: Pregled problema
+ permission_add_issues: Dodavanje problema
+ permission_edit_issues: Izmena problema
+ permission_manage_issue_relations: Upravljanje vezama izmeÄu problema
+ permission_add_issue_notes: Dodavanje beleĹĄki
+ permission_edit_issue_notes: Izmena beleĹĄki
+ permission_edit_own_issue_notes: Izmena sopstvenih beleĹĄki
+ permission_move_issues: Pomeranje problema
+ permission_delete_issues: Brisanje problema
+ permission_manage_public_queries: Upravljanje javnim upitima
+ permission_save_queries: Snimanje upita
+ permission_view_gantt: Pregledanje Gantovog dijagrama
+ permission_view_calendar: Pregledanje kalendara
+ permission_view_issue_watchers: Pregledanje spiska posmatraÄa
+ permission_add_issue_watchers: Dodavanje posmatraÄa
+ permission_delete_issue_watchers: Brisanje posmatraÄa
+ permission_log_time: BeleĹženje utroĹĄenog vremena
+ permission_view_time_entries: Pregledanje utroĹĄenog vremena
+ permission_edit_time_entries: Izmena utroĹĄenog vremena
+ permission_edit_own_time_entries: Izmena sopstvenog utroĹĄenog vremena
+ permission_manage_news: Upravljanje vestima
+ permission_comment_news: Komentarisanje vesti
+ permission_manage_documents: Upravljanje dokumentima
+ permission_view_documents: Pregledanje dokumenata
+ permission_manage_files: Upravljanje datotekama
+ permission_view_files: Pregledanje datoteka
+ permission_manage_wiki: Upravljanje wiki stranicama
+ permission_rename_wiki_pages: Promena imena wiki stranicama
+ permission_delete_wiki_pages: Brisanje wiki stranica
+ permission_view_wiki_pages: Pregledanje wiki stranica
+ permission_view_wiki_edits: Pregledanje wiki istorije
+ permission_edit_wiki_pages: Izmena wiki stranica
+ permission_delete_wiki_pages_attachments: Brisanje priloĹženih datoteka
+ permission_protect_wiki_pages: ZaĹĄtita wiki stranica
+ permission_manage_repository: Upravljanje spremiĹĄtem
+ permission_browse_repository: Pregledanje spremiĹĄta
+ permission_view_changesets: Pregledanje skupa promena
+ permission_commit_access: Potvrda pristupa
+ permission_manage_boards: Upravljanje forumima
+ permission_view_messages: Pregledanje poruka
+ permission_add_messages: Slanje poruka
+ permission_edit_messages: Izmena poruka
+ permission_edit_own_messages: Izmena sopstvenih poruka
+ permission_delete_messages: Brisanje poruka
+ permission_delete_own_messages: Brisanje sopstvenih poruka
+ permission_export_wiki_pages: Izvoz wiki stranica
+ permission_manage_subtasks: Upravljanje podzadacima
+
+ project_module_issue_tracking: PraÄenje problema
+ project_module_time_tracking: PraÄenje vremena
+ project_module_news: Vesti
+ project_module_documents: Dokumenti
+ project_module_files: Datoteke
+ project_module_wiki: Wiki
+ project_module_repository: SpremiĹĄte
+ project_module_boards: Forumi
+
+ label_user: Korisnik
+ label_user_plural: Korisnici
+ label_user_new: Novi korisnik
+ label_user_anonymous: Anoniman
+ label_project: Projekat
+ label_project_new: Novi projekat
+ label_project_plural: Projekti
+ label_x_projects:
+ zero: nema projekata
+ one: jedan projekat
+ other: "%{count} projekata"
+ label_project_all: Svi projekti
+ label_project_latest: Poslednji projekti
+ label_issue: Problem
+ label_issue_new: Novi problem
+ label_issue_plural: Problemi
+ label_issue_view_all: Prikaz svih problema
+ label_issues_by: "Problemi (%{value})"
+ label_issue_added: Problem je dodat
+ label_issue_updated: Problem je aĹžuriran
+ label_document: Dokument
+ label_document_new: Novi dokument
+ label_document_plural: Dokumenti
+ label_document_added: Dokument je dodat
+ label_role: Uloga
+ label_role_plural: Uloge
+ label_role_new: Nova uloga
+ label_role_and_permissions: Uloge i dozvole
+ label_member: Älan
+ label_member_new: Novi Älan
+ label_member_plural: Älanovi
+ label_tracker: PraÄenje
+ label_tracker_plural: PraÄenja
+ label_tracker_new: Novo praÄenje
+ label_workflow: Tok posla
+ label_issue_status: Status problema
+ label_issue_status_plural: Statusi problema
+ label_issue_status_new: Novi status
+ label_issue_category: Kategorija problema
+ label_issue_category_plural: Kategorije problema
+ label_issue_category_new: Nova kategorija
+ label_custom_field: PrilagoÄeno polje
+ label_custom_field_plural: PrilagoÄena polja
+ label_custom_field_new: Novo prilagoÄeno polje
+ label_enumerations: Nabrojiva lista
+ label_enumeration_new: Nova vrednost
+ label_information: Informacija
+ label_information_plural: Informacije
+ label_please_login: Molimo, prijavite se
+ label_register: Registracija
+ label_login_with_open_id_option: ili prijava sa OpenID
+ label_password_lost: Izgubljena lozinka
+ label_home: PoÄetak
+ label_my_page: Moja stranica
+ label_my_account: Moj nalog
+ label_my_projects: Moji projekti
+ label_my_page_block: My page block
+ label_administration: Administracija
+ label_login: Prijava
+ label_logout: Odjava
+ label_help: PomoÄ
+ label_reported_issues: Prijavljeni problemi
+ label_assigned_to_me_issues: Problemi dodeljeni meni
+ label_last_login: Poslednje povezivanje
+ label_registered_on: Registrovan
+ label_activity: Aktivnost
+ label_overall_activity: Celokupna aktivnost
+ label_user_activity: "Aktivnost korisnika %{value}"
+ label_new: Novo
+ label_logged_as: Prijavljeni ste kao
+ label_environment: OkruĹženje
+ label_authentication: Potvrda identiteta
+ label_auth_source: ReĹžim potvrde identiteta
+ label_auth_source_new: Novi reĹžim potvrde identiteta
+ label_auth_source_plural: ReĹžimi potvrde identiteta
+ label_subproject_plural: Potprojekti
+ label_subproject_new: Novi potprojekat
+ label_and_its_subprojects: "%{value} i njegovi potprojekti"
+ label_min_max_length: Min. - Maks. duĹžina
+ label_list: Spisak
+ label_date: Datum
+ label_integer: Ceo broj
+ label_float: Sa pokretnim zarezom
+ label_boolean: LogiÄki operator
+ label_string: Tekst
+ label_text: Dugi tekst
+ label_attribute: Osobina
+ label_attribute_plural: Osobine
+ label_download: "%{count} preuzimanje"
+ label_download_plural: "%{count} preuzimanja"
+ label_no_data: Nema podataka za prikazivanje
+ label_change_status: Promena statusa
+ label_history: Istorija
+ label_attachment: Datoteka
+ label_attachment_new: Nova datoteka
+ label_attachment_delete: Brisanje datoteke
+ label_attachment_plural: Datoteke
+ label_file_added: Datoteka je dodata
+ label_report: IzveĹĄtaj
+ label_report_plural: IzveĹĄtaji
+ label_news: Vesti
+ label_news_new: Dodavanje vesti
+ label_news_plural: Vesti
+ label_news_latest: Poslednje vesti
+ label_news_view_all: Prikaz svih vesti
+ label_news_added: Vesti su dodate
+ label_settings: PodeĹĄavanja
+ label_overview: Pregled
+ label_version: Verzija
+ label_version_new: Nova verzija
+ label_version_plural: Verzije
+ label_close_versions: Zatvori zavrĹĄene verzije
+ label_confirmation: Potvrda
+ label_export_to: 'TakoÄe dostupno i u varijanti:'
+ label_read: Äitanje...
+ label_public_projects: Javni projekti
+ label_open_issues: otvoren
+ label_open_issues_plural: otvorenih
+ label_closed_issues: zatvoren
+ label_closed_issues_plural: zatvorenih
+ label_x_open_issues_abbr_on_total:
+ zero: 0 otvorenih / %{total}
+ one: 1 otvoren / %{total}
+ other: "%{count} otvorenih / %{total}"
+ label_x_open_issues_abbr:
+ zero: 0 otvorenih
+ one: 1 otvoren
+ other: "%{count} otvorenih"
+ label_x_closed_issues_abbr:
+ zero: 0 zatvorenih
+ one: 1 zatvoren
+ other: "%{count} zatvorenih"
+ label_total: Ukupno
+ label_permissions: Dozvole
+ label_current_status: Trenutni status
+ label_new_statuses_allowed: Novi statusi dozvoljeni
+ label_all: svi
+ label_none: nijedan
+ label_nobody: nikome
+ label_next: SledeÄe
+ label_previous: Prethodno
+ label_used_by: Koristio
+ label_details: Detalji
+ label_add_note: Dodaj beleĹĄku
+ label_per_page: Po strani
+ label_calendar: Kalendar
+ label_months_from: meseci od
+ label_gantt: Gantov dijagram
+ label_internal: UnutraĹĄnji
+ label_last_changes: "poslednjih %{count} promena"
+ label_change_view_all: PrikaĹži sve promene
+ label_personalize_page: Personalizuj ovu stranu
+ label_comment: Komentar
+ label_comment_plural: Komentari
+ label_x_comments:
+ zero: bez komentara
+ one: jedan komentar
+ other: "%{count} komentara"
+ label_comment_add: Dodaj komentar
+ label_comment_added: Komentar dodat
+ label_comment_delete: ObriĹĄi komentare
+ label_query: PrilagoÄen upit
+ label_query_plural: PrilagoÄeni upiti
+ label_query_new: Novi upit
+ label_filter_add: Dodavanje filtera
+ label_filter_plural: Filteri
+ label_equals: je
+ label_not_equals: nije
+ label_in_less_than: manje od
+ label_in_more_than: viĹĄe od
+ label_greater_or_equal: '>='
+ label_less_or_equal: '<='
+ label_in: u
+ label_today: danas
+ label_all_time: sve vreme
+ label_yesterday: juÄe
+ label_this_week: ove sedmice
+ label_last_week: poslednje sedmice
+ label_last_n_days: "poslednjih %{count} dana"
+ label_this_month: ovog meseca
+ label_last_month: poslednjeg meseca
+ label_this_year: ove godine
+ label_date_range: Vremenski period
+ label_less_than_ago: pre manje od nekoliko dana
+ label_more_than_ago: pre viĹĄe od nekoliko dana
+ label_ago: pre nekoliko dana
+ label_contains: sadrĹži
+ label_not_contains: ne sadrĹži
+ label_day_plural: dana
+ label_repository: SpremiĹĄte
+ label_repository_plural: SpremiĹĄta
+ label_browse: Pregledanje
+ label_modification: "%{count} promena"
+ label_modification_plural: "%{count} promena"
+ label_branch: Grana
+ label_tag: Oznaka
+ label_revision: Revizija
+ label_revision_plural: Revizije
+ label_revision_id: "Revizija %{value}"
+ label_associated_revisions: PridruĹžene revizije
+ label_added: dodato
+ label_modified: promenjeno
+ label_copied: kopirano
+ label_renamed: preimenovano
+ label_deleted: izbrisano
+ label_latest_revision: Poslednja revizija
+ label_latest_revision_plural: Poslednje revizije
+ label_view_revisions: Pregled revizija
+ label_view_all_revisions: Pregled svih revizija
+ label_max_size: Maksimalna veliÄina
+ label_sort_highest: PremeĹĄtanje na vrh
+ label_sort_higher: PremeĹĄtanje na gore
+ label_sort_lower: PremeĹĄtanje na dole
+ label_sort_lowest: PremeĹĄtanje na dno
+ label_roadmap: Plan rada
+ label_roadmap_due_in: "Dospeva %{value}"
+ label_roadmap_overdue: "%{value} najkasnije"
+ label_roadmap_no_issues: Nema problema za ovu verziju
+ label_search: Pretraga
+ label_result_plural: Rezultati
+ label_all_words: Sve reÄi
+ label_wiki: Wiki
+ label_wiki_edit: Wiki izmena
+ label_wiki_edit_plural: Wiki izmene
+ label_wiki_page: Wiki stranica
+ label_wiki_page_plural: Wiki stranice
+ label_index_by_title: Indeksiranje po naslovu
+ label_index_by_date: Indeksiranje po datumu
+ label_current_version: Trenutna verzija
+ label_preview: Pregled
+ label_feed_plural: Izvori vesti
+ label_changes_details: Detalji svih promena
+ label_issue_tracking: PraÄenje problema
+ label_spent_time: UtroĹĄeno vreme
+ label_overall_spent_time: Celokupno utroĹĄeno vreme
+ label_f_hour: "%{value} sat"
+ label_f_hour_plural: "%{value} sati"
+ label_time_tracking: PraÄenje vremena
+ label_change_plural: Promene
+ label_statistics: Statistika
+ label_commits_per_month: IzvrĹĄenja meseÄno
+ label_commits_per_author: IzvrĹĄenja po autoru
+ label_view_diff: Pogledaj razlike
+ label_diff_inline: unutra
+ label_diff_side_by_side: uporedo
+ label_options: Opcije
+ label_copy_workflow_from: Kopiranje toka posla od
+ label_permissions_report: IzveĹĄtaj o dozvolama
+ label_watched_issues: Posmatrani problemi
+ label_related_issues: Srodni problemi
+ label_applied_status: Primenjeni statusi
+ label_loading: UÄitavanje...
+ label_relation_new: Nova relacija
+ label_relation_delete: Brisanje relacije
+ label_relates_to: srodnih sa
+ label_duplicates: dupliranih
+ label_duplicated_by: dupliranih od
+ label_blocks: odbijenih
+ label_blocked_by: odbijenih od
+ label_precedes: prethodi
+ label_follows: praÄenih
+ label_end_to_start: od kraja do poÄetka
+ label_end_to_end: od kraja do kraja
+ label_start_to_start: od poÄetka do poÄetka
+ label_start_to_end: od poÄetka do kraja
+ label_stay_logged_in: Ostanite prijavljeni
+ label_disabled: onemoguÄeno
+ label_show_completed_versions: Prikazivanje zavrĹĄene verzije
+ label_me: meni
+ label_board: Forum
+ label_board_new: Novi forum
+ label_board_plural: Forumi
+ label_board_locked: ZakljuÄana
+ label_board_sticky: Lepljiva
+ label_topic_plural: Teme
+ label_message_plural: Poruke
+ label_message_last: Poslednja poruka
+ label_message_new: Nova poruka
+ label_message_posted: Poruka je dodata
+ label_reply_plural: Odgovori
+ label_send_information: PoĹĄalji korisniku detalje naloga
+ label_year: Godina
+ label_month: Mesec
+ label_week: Sedmica
+ label_date_from: Ĺ alje
+ label_date_to: Prima
+ label_language_based: Bazirano na jeziku korisnika
+ label_sort_by: "Sortirano po %{value}"
+ label_send_test_email: Slanje probne e-poruke
+ label_feeds_access_key: RSS pristupni kljuÄ
+ label_missing_feeds_access_key: RSS pristupni kljuÄ nedostaje
+ label_feeds_access_key_created_on: "RSS pristupni kljuÄ je napravljen pre %{value}"
+ label_module_plural: Moduli
+ label_added_time_by: "Dodao %{author} pre %{age}"
+ label_updated_time_by: "AĹžurirao %{author} pre %{age}"
+ label_updated_time: "AĹžurirano pre %{value}"
+ label_jump_to_a_project: Skok na projekat...
+ label_file_plural: Datoteke
+ label_changeset_plural: Skupovi promena
+ label_default_columns: Podrazumevane kolone
+ label_no_change_option: (Bez promena)
+ label_bulk_edit_selected_issues: Grupna izmena odabranih problema
+ label_theme: Tema
+ label_default: Podrazumevano
+ label_search_titles_only: PretraĹžuj samo naslove
+ label_user_mail_option_all: "Za bilo koji dogaÄaj na svim mojim projektima"
+ label_user_mail_option_selected: "Za bilo koji dogaÄaj na samo odabranim projektima..."
+ label_user_mail_no_self_notified: "Ne Ĺželim biti obaveĹĄtavan za promene koje sam pravim"
+ label_registration_activation_by_email: aktivacija naloga putem e-poruke
+ label_registration_manual_activation: ruÄna aktivacija naloga
+ label_registration_automatic_activation: automatska aktivacija naloga
+ label_display_per_page: "Broj stavki po stranici: %{value}"
+ label_age: Starost
+ label_change_properties: Promeni svojstva
+ label_general: OpĹĄti
+ label_more: ViĹĄe
+ label_scm: SCM
+ label_plugins: Dodatne komponente
+ label_ldap_authentication: LDAP potvrda identiteta
+ label_downloads_abbr: D/L
+ label_optional_description: Opciono opis
+ label_add_another_file: Dodaj joĹĄ jednu datoteku
+ label_preferences: PodeĹĄavanja
+ label_chronological_order: po hronoloĹĄkom redosledu
+ label_reverse_chronological_order: po obrnutom hronoloĹĄkom redosledu
+ label_planning: Planiranje
+ label_incoming_emails: Dolazne e-poruke
+ label_generate_key: Generisanje kljuÄa
+ label_issue_watchers: PosmatraÄi
+ label_example: Primer
+ label_display: Prikaz
+ label_sort: Sortiranje
+ label_ascending: RastuÄi niz
+ label_descending: OpadajuÄi niz
+ label_date_from_to: Od %{start} do %{end}
+ label_wiki_content_added: Wiki stranica je dodata
+ label_wiki_content_updated: Wiki stranica je aĹžurirana
+ label_group: Grupa
+ label_group_plural: Grupe
+ label_group_new: Nova grupa
+ label_time_entry_plural: UtroĹĄeno vreme
+ label_version_sharing_none: Nije deljeno
+ label_version_sharing_descendants: Sa potprojektima
+ label_version_sharing_hierarchy: Sa hijerarhijom projekta
+ label_version_sharing_tree: Sa stablom projekta
+ label_version_sharing_system: Sa svim projektima
+ label_update_issue_done_ratios: AĹžuriraj odnos reĹĄenih problema
+ label_copy_source: Izvor
+ label_copy_target: OdrediĹĄte
+ label_copy_same_as_target: Isto kao odrediĹĄte
+ label_display_used_statuses_only: Prikazuj statuse koriĹĄÄene samo od strane ovog praÄenja
+ label_api_access_key: API pristupni kljuÄ
+ label_missing_api_access_key: Nedostaje API pristupni kljuÄ
+ label_api_access_key_created_on: "API pristupni kljuÄ je kreiran pre %{value}"
+ label_profile: Profil
+ label_subtask_plural: Podzadatak
+ label_project_copy_notifications: PoĹĄalji e-poruku sa obaveĹĄtenjem prilikom kopiranja projekta
+
+ button_login: Prijava
+ button_submit: PoĹĄalji
+ button_save: Snimi
+ button_check_all: UkljuÄi sve
+ button_uncheck_all: IskljuÄi sve
+ button_delete: IzbriĹĄi
+ button_create: Kreiraj
+ button_create_and_continue: Kreiraj i nastavi
+ button_test: Test
+ button_edit: Izmeni
+ button_add: Dodaj
+ button_change: Promeni
+ button_apply: Primeni
+ button_clear: ObriĹĄi
+ button_lock: ZakljuÄaj
+ button_unlock: OtkljuÄaj
+ button_download: Preuzmi
+ button_list: Spisak
+ button_view: PrikaĹži
+ button_move: Pomeri
+ button_move_and_follow: Pomeri i prati
+ button_back: Nazad
+ button_cancel: PoniĹĄti
+ button_activate: Aktiviraj
+ button_sort: Sortiraj
+ button_log_time: Evidentiraj vreme
+ button_rollback: Povratak na ovu verziju
+ button_watch: Prati
+ button_unwatch: Ne prati viĹĄe
+ button_reply: Odgovori
+ button_archive: Arhiviraj
+ button_unarchive: Vrati iz arhive
+ button_reset: PoniĹĄti
+ button_rename: Preimenuj
+ button_change_password: Promeni lozinku
+ button_copy: Kopiraj
+ button_copy_and_follow: Kopiraj i prati
+ button_annotate: PribeleĹži
+ button_update: AĹžuriraj
+ button_configure: Podesi
+ button_quote: Pod navodnicima
+ button_duplicate: Dupliraj
+ button_show: PrikaĹži
+
+ status_active: aktivni
+ status_registered: registrovani
+ status_locked: zakljuÄani
+
+ version_status_open: otvoren
+ version_status_locked: zakljuÄan
+ version_status_closed: zatvoren
+
+ field_active: Aktivan
+
+ text_select_mail_notifications: Odaberi akcije za koje Äe obaveĹĄtenje biti poslato putem e-poĹĄte.
+ text_regexp_info: npr. ^[A-Z0-9]+$
+ text_min_max_length_info: 0 znaÄi bez ograniÄenja
+ text_project_destroy_confirmation: Jeste li sigurni da Ĺželite da izbriĹĄete ovaj projekat i sve pripadajuÄe podatke?
+ text_subprojects_destroy_warning: "Potprojekti: %{value} Äe takoÄe biti izbrisan."
+ text_workflow_edit: Odaberite ulogu i praÄenje za izmenu toka posla
+ text_are_you_sure: Jeste li sigurni?
+ text_journal_changed: "%{label} promenjen od %{old} u %{new}"
+ text_journal_set_to: "%{label} postavljen u %{value}"
+ text_journal_deleted: "%{label} izbrisano (%{old})"
+ text_journal_added: "%{label} %{value} dodato"
+ text_tip_issue_begin_day: zadatak poÄinje ovog dana
+ text_tip_issue_end_day: zadatak se zavrĹĄava ovog dana
+ text_tip_issue_begin_end_day: zadatak poÄinje i zavrĹĄava ovog dana
+ text_project_identifier_info: 'Only lower case letters (a-z), numbers, dashes and underscores are allowed.
Once saved, the identifier can not be changed.'
+ text_caracters_maximum: "NajviĹĄe %{count} znak(ova)."
+ text_caracters_minimum: "Broj znakova mora biti najmanje %{count}."
+ text_length_between: "Broj znakova mora biti izmeÄu %{min} i %{max}."
+ text_tracker_no_workflow: Ovo praÄenje nema definisan tok posla
+ text_unallowed_characters: Nedozvoljeni znakovi
+ text_comma_separated: Dozvoljene su viĹĄestruke vrednosti (odvojene zarezom).
+ text_line_separated: Dozvoljene su viĹĄestruke vrednosti (jedan red za svaku vrednost).
+ text_issues_ref_in_commit_messages: Referenciranje i popravljanje problema u izvrĹĄnim porukama
+ text_issue_added: "%{author} je prijavio problem %{id}."
+ text_issue_updated: "%{author} je aĹžurirao problem %{id}."
+ text_wiki_destroy_confirmation: Jeste li sigurni da Ĺželite da obriĹĄete wiki i sav sadrĹžaj?
+ text_issue_category_destroy_question: "Nekoliko problema (%{count}) je dodeljeno ovoj kategoriji. Ĺ ta Ĺželite da uradite?"
+ text_issue_category_destroy_assignments: Ukloni dodeljene kategorije
+ text_issue_category_reassign_to: Dodeli ponovo probleme ovoj kategoriji
+ text_user_mail_option: "Za neizabrane projekte, dobiÄete samo obaveĹĄtenje o stvarima koje pratite ili ste ukljuÄeni (npr. problemi Äiji ste vi autor ili zastupnik)."
+ text_no_configuration_data: "Uloge, praÄenja, statusi problema i toka posla joĹĄ uvek nisu podeĹĄeni.\nPreporuÄljivo je da uÄitate podrazumevano konfigurisanje. Izmena je moguÄa nakon prvog uÄitavanja."
+ text_load_default_configuration: UÄitaj podrazumevano konfigurisanje
+ text_status_changed_by_changeset: "Primenjeno u skupu sa promenama %{value}."
+ text_issues_destroy_confirmation: 'Jeste li sigurni da Ĺželite da izbriĹĄete odabrane probleme?'
+ text_select_project_modules: 'Odaberite module koje Ĺželite omoguÄiti za ovaj projekat:'
+ text_default_administrator_account_changed: Podrazumevani administratorski nalog je promenjen
+ text_file_repository_writable: Fascikla priloĹženih datoteka je upisiva
+ text_plugin_assets_writable: Fascikla elemenata dodatnih komponenti je upisiva
+ text_rmagick_available: RMagick je dostupan (opciono)
+ text_destroy_time_entries_question: "%{hours} sati je prijavljeno za ovaj problem koji Ĺželite izbrisati. Ĺ ta Ĺželite da uradite?"
+ text_destroy_time_entries: IzbriĹĄi prijavljene sate
+ text_assign_time_entries_to_project: Dodeli prijavljene sate projektu
+ text_reassign_time_entries: 'Dodeli ponovo prijavljene sate ovom problemu:'
+ text_user_wrote: "%{value} je napisao:"
+ text_enumeration_destroy_question: "%{count} objekat(a) je dodeljeno ovoj vrednosti."
+ text_enumeration_category_reassign_to: 'Dodeli ih ponovo ovoj vrednosti:'
+ text_email_delivery_not_configured: "Isporuka e-poruka nije konfigurisana i obaveĹĄtenja su onemoguÄena.\nPodesite vaĹĄ SMTP server u config/configuration.yml i pokrenite ponovo aplikaciju za njihovo omoguÄavanje."
+ text_repository_usernames_mapping: "Odaberite ili aĹžurirajte Redmine korisnike mapiranjem svakog korisniÄkog imena pronaÄenog u evidenciji spremiĹĄta.\nKorisnici sa istim Redmine imenom i imenom spremiĹĄta ili e-adresom su automatski mapirani."
+ text_diff_truncated: '... Ova razlika je iseÄena jer je dostignuta maksimalna veliÄina prikaza.'
+ text_custom_field_possible_values_info: 'Jedan red za svaku vrednost'
+ text_wiki_page_destroy_question: "Ova stranica ima %{descendants} podreÄenih stranica i podstranica. Ĺ ta Ĺželite da uradite?"
+ text_wiki_page_nullify_children: "ZadrĹži podreÄene stranice kao korene stranice"
+ text_wiki_page_destroy_children: "IzbriĹĄi podreÄene stranice i sve njihove podstranice"
+ text_wiki_page_reassign_children: "Dodeli ponovo podreÄene stranice ovoj matiÄnoj stranici"
+ text_own_membership_delete_confirmation: "Nakon uklanjanja pojedinih ili svih vaĹĄih dozvola neÄete viĹĄe moÄi da ureÄujete ovaj projekat.\nĹ˝elite li da nastavite?"
+ text_zoom_in: UveÄaj
+ text_zoom_out: Umanji
+
+ default_role_manager: MenadĹžer
+ default_role_developer: Programer
+ default_role_reporter: IzveĹĄtaÄ
+ default_role_non_member: Non member
+ default_role_anonymous: Anonymous
+ default_tracker_bug: GreĹĄka
+ default_tracker_feature: Funkcionalnost
+ default_tracker_support: PodrĹĄka
+ default_issue_status_new: Novo
+ default_issue_status_in_progress: U toku
+ default_issue_status_resolved: ReĹĄeno
+ default_issue_status_feedback: Povratna informacija
+ default_issue_status_closed: Zatvoreno
+ default_issue_status_rejected: Odbijeno
+ default_doc_category_user: KorisniÄka dokumentacija
+ default_doc_category_tech: TehniÄka dokumentacija
+ default_priority_low: Nizak
+ default_priority_normal: Normalan
+ default_priority_high: Visok
+ default_priority_urgent: Hitno
+ default_priority_immediate: Neposredno
+ default_activity_design: Dizajn
+ default_activity_development: Razvoj
+
+ enumeration_issue_priorities: Prioriteti problema
+ enumeration_doc_categories: Kategorije dokumenta
+ enumeration_activities: Aktivnosti (praÄenje vremena)
+ enumeration_system_activity: Sistemska aktivnost
+
+ field_time_entries: Vreme evidencije
+ project_module_gantt: Gantov dijagram
+ project_module_calendar: Kalendar
+ button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}"
+ text_are_you_sure_with_children: Delete issue and all child issues?
+ field_text: Text field
+ label_user_mail_option_only_owner: Only for things I am the owner of
+ setting_default_notification_option: Default notification option
+ 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_none: No events
+ field_member_of_group: Assignee's group
+ field_assigned_to_role: Assignee's role
+ notice_not_authorized_archived_project: The project you're trying to access has been archived.
+ label_principal_search: "Search for user or group:"
+ label_user_search: "Search for user:"
+ field_visible: Visible
+ setting_emails_header: Emails header
+ setting_commit_logtime_activity_id: Activity for logged time
+ text_time_logged_by_changeset: Applied in changeset %{value}.
+ setting_commit_logtime_enabled: Enable time logging
+ notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
+ setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ text_powered_by: Powered by %{link}
label_cvs_module: Module
label_filesystem_path: Root directory
label_darcs_path: Root directory
diff --git a/db/migrate/001_setup.rb b/db/migrate/001_setup.rb
index f5b0d108..5b83e63e 100644
--- a/db/migrate/001_setup.rb
+++ b/db/migrate/001_setup.rb
@@ -21,19 +21,19 @@ class Setup < ActiveRecord::Migration
# model removed
class Permission < ActiveRecord::Base; end
- def self.up
- create_table "attachments", :force => true do |t|
- t.column "container_id", :integer, :default => 0, :null => false
- t.column "container_type", :string, :limit => 30, :default => "", :null => false
- t.column "filename", :string, :default => "", :null => false
- t.column "disk_filename", :string, :default => "", :null => false
- t.column "filesize", :integer, :default => 0, :null => false
- t.column "content_type", :string, :limit => 60, :default => ""
- t.column "digest", :string, :limit => 40, :default => "", :null => false
- t.column "downloads", :integer, :default => 0, :null => false
- t.column "author_id", :integer, :default => 0, :null => false
- t.column "created_on", :timestamp
- end
+ def self.up
+ create_table "attachments", :force => true do |t|
+ t.column "container_id", :integer, :default => 0, :null => false
+ t.column "container_type", :string, :limit => 30, :default => "", :null => false
+ t.column "filename", :string, :default => "", :null => false
+ t.column "disk_filename", :string, :default => "", :null => false
+ t.column "filesize", :integer, :default => 0, :null => false
+ t.column "content_type", :string, :limit => 60, :default => ""
+ t.column "digest", :string, :limit => 40, :default => "", :null => false
+ t.column "downloads", :integer, :default => 0, :null => false
+ t.column "author_id", :integer, :default => 0, :null => false
+ t.column "created_on", :timestamp
+ end
create_table "auth_sources", :force => true do |t|
t.column "type", :string, :limit => 30, :default => "", :null => false
@@ -49,143 +49,143 @@ class Setup < ActiveRecord::Migration
t.column "attr_mail", :string, :limit => 30
t.column "onthefly_register", :boolean, :default => false, :null => false
end
-
+
create_table "custom_fields", :force => true do |t|
- t.column "type", :string, :limit => 30, :default => "", :null => false
- t.column "name", :string, :limit => 30, :default => "", :null => false
- t.column "field_format", :string, :limit => 30, :default => "", :null => false
- t.column "possible_values", :text
- t.column "regexp", :string, :default => ""
- t.column "min_length", :integer, :default => 0, :null => false
- t.column "max_length", :integer, :default => 0, :null => false
+ t.column "type", :string, :limit => 30, :default => "", :null => false
+ t.column "name", :string, :limit => 30, :default => "", :null => false
+ t.column "field_format", :string, :limit => 30, :default => "", :null => false
+ t.column "possible_values", :text
+ t.column "regexp", :string, :default => ""
+ t.column "min_length", :integer, :default => 0, :null => false
+ t.column "max_length", :integer, :default => 0, :null => false
t.column "is_required", :boolean, :default => false, :null => false
t.column "is_for_all", :boolean, :default => false, :null => false
- end
-
- create_table "custom_fields_projects", :id => false, :force => true do |t|
- t.column "custom_field_id", :integer, :default => 0, :null => false
- t.column "project_id", :integer, :default => 0, :null => false
- end
+ end
+
+ create_table "custom_fields_projects", :id => false, :force => true do |t|
+ t.column "custom_field_id", :integer, :default => 0, :null => false
+ t.column "project_id", :integer, :default => 0, :null => false
+ end
create_table "custom_fields_trackers", :id => false, :force => true do |t|
t.column "custom_field_id", :integer, :default => 0, :null => false
t.column "tracker_id", :integer, :default => 0, :null => false
end
-
- create_table "custom_values", :force => true do |t|
+
+ create_table "custom_values", :force => true do |t|
t.column "customized_type", :string, :limit => 30, :default => "", :null => false
t.column "customized_id", :integer, :default => 0, :null => false
- t.column "custom_field_id", :integer, :default => 0, :null => false
- t.column "value", :text
- end
-
- create_table "documents", :force => true do |t|
- t.column "project_id", :integer, :default => 0, :null => false
- t.column "category_id", :integer, :default => 0, :null => false
- t.column "title", :string, :limit => 60, :default => "", :null => false
- t.column "description", :text
- t.column "created_on", :timestamp
+ t.column "custom_field_id", :integer, :default => 0, :null => false
+ t.column "value", :text
end
-
- add_index "documents", ["project_id"], :name => "documents_project_id"
-
- create_table "enumerations", :force => true do |t|
- t.column "opt", :string, :limit => 4, :default => "", :null => false
- t.column "name", :string, :limit => 30, :default => "", :null => false
- end
-
- create_table "issue_categories", :force => true do |t|
- t.column "project_id", :integer, :default => 0, :null => false
- t.column "name", :string, :limit => 30, :default => "", :null => false
- end
-
- add_index "issue_categories", ["project_id"], :name => "issue_categories_project_id"
-
- create_table "issue_histories", :force => true do |t|
- t.column "issue_id", :integer, :default => 0, :null => false
- t.column "status_id", :integer, :default => 0, :null => false
- t.column "author_id", :integer, :default => 0, :null => false
- t.column "notes", :text
- t.column "created_on", :timestamp
- end
-
- add_index "issue_histories", ["issue_id"], :name => "issue_histories_issue_id"
-
- create_table "issue_statuses", :force => true do |t|
- t.column "name", :string, :limit => 30, :default => "", :null => false
- t.column "is_closed", :boolean, :default => false, :null => false
- t.column "is_default", :boolean, :default => false, :null => false
- t.column "html_color", :string, :limit => 6, :default => "FFFFFF", :null => false
- end
-
- create_table "issues", :force => true do |t|
- t.column "tracker_id", :integer, :default => 0, :null => false
- t.column "project_id", :integer, :default => 0, :null => false
- t.column "subject", :string, :default => "", :null => false
+
+ create_table "documents", :force => true do |t|
+ t.column "project_id", :integer, :default => 0, :null => false
+ t.column "category_id", :integer, :default => 0, :null => false
+ t.column "title", :string, :limit => 60, :default => "", :null => false
t.column "description", :text
- t.column "due_date", :date
- t.column "category_id", :integer
- t.column "status_id", :integer, :default => 0, :null => false
- t.column "assigned_to_id", :integer
- t.column "priority_id", :integer, :default => 0, :null => false
- t.column "fixed_version_id", :integer
- t.column "author_id", :integer, :default => 0, :null => false
- t.column "lock_version", :integer, :default => 0, :null => false
- t.column "created_on", :timestamp
- t.column "updated_on", :timestamp
- end
-
- add_index "issues", ["project_id"], :name => "issues_project_id"
-
- create_table "members", :force => true do |t|
- t.column "user_id", :integer, :default => 0, :null => false
- t.column "project_id", :integer, :default => 0, :null => false
- t.column "role_id", :integer, :default => 0, :null => false
- t.column "created_on", :timestamp
- end
-
- create_table "news", :force => true do |t|
- t.column "project_id", :integer
- t.column "title", :string, :limit => 60, :default => "", :null => false
- t.column "summary", :string, :limit => 255, :default => ""
- t.column "description", :text
- t.column "author_id", :integer, :default => 0, :null => false
- t.column "created_on", :timestamp
+ t.column "created_on", :timestamp
end
- add_index "news", ["project_id"], :name => "news_project_id"
-
- create_table "permissions", :force => true do |t|
- t.column "controller", :string, :limit => 30, :default => "", :null => false
- t.column "action", :string, :limit => 30, :default => "", :null => false
- t.column "description", :string, :limit => 60, :default => "", :null => false
- t.column "is_public", :boolean, :default => false, :null => false
- t.column "sort", :integer, :default => 0, :null => false
- t.column "mail_option", :boolean, :default => false, :null => false
- t.column "mail_enabled", :boolean, :default => false, :null => false
- end
-
- create_table "permissions_roles", :id => false, :force => true do |t|
- t.column "permission_id", :integer, :default => 0, :null => false
- t.column "role_id", :integer, :default => 0, :null => false
- end
-
- add_index "permissions_roles", ["role_id"], :name => "permissions_roles_role_id"
-
- create_table "projects", :force => true do |t|
- t.column "name", :string, :limit => 30, :default => "", :null => false
- t.column "description", :string, :default => "", :null => false
- t.column "homepage", :string, :limit => 60, :default => ""
+ add_index "documents", ["project_id"], :name => "documents_project_id"
+
+ create_table "enumerations", :force => true do |t|
+ t.column "opt", :string, :limit => 4, :default => "", :null => false
+ t.column "name", :string, :limit => 30, :default => "", :null => false
+ end
+
+ create_table "issue_categories", :force => true do |t|
+ t.column "project_id", :integer, :default => 0, :null => false
+ t.column "name", :string, :limit => 30, :default => "", :null => false
+ end
+
+ add_index "issue_categories", ["project_id"], :name => "issue_categories_project_id"
+
+ create_table "issue_histories", :force => true do |t|
+ t.column "issue_id", :integer, :default => 0, :null => false
+ t.column "status_id", :integer, :default => 0, :null => false
+ t.column "author_id", :integer, :default => 0, :null => false
+ t.column "notes", :text
+ t.column "created_on", :timestamp
+ end
+
+ add_index "issue_histories", ["issue_id"], :name => "issue_histories_issue_id"
+
+ create_table "issue_statuses", :force => true do |t|
+ t.column "name", :string, :limit => 30, :default => "", :null => false
+ t.column "is_closed", :boolean, :default => false, :null => false
+ t.column "is_default", :boolean, :default => false, :null => false
+ t.column "html_color", :string, :limit => 6, :default => "FFFFFF", :null => false
+ end
+
+ create_table "issues", :force => true do |t|
+ t.column "tracker_id", :integer, :default => 0, :null => false
+ t.column "project_id", :integer, :default => 0, :null => false
+ t.column "subject", :string, :default => "", :null => false
+ t.column "description", :text
+ t.column "due_date", :date
+ t.column "category_id", :integer
+ t.column "status_id", :integer, :default => 0, :null => false
+ t.column "assigned_to_id", :integer
+ t.column "priority_id", :integer, :default => 0, :null => false
+ t.column "fixed_version_id", :integer
+ t.column "author_id", :integer, :default => 0, :null => false
+ t.column "lock_version", :integer, :default => 0, :null => false
+ t.column "created_on", :timestamp
+ t.column "updated_on", :timestamp
+ end
+
+ add_index "issues", ["project_id"], :name => "issues_project_id"
+
+ create_table "members", :force => true do |t|
+ t.column "user_id", :integer, :default => 0, :null => false
+ t.column "project_id", :integer, :default => 0, :null => false
+ t.column "role_id", :integer, :default => 0, :null => false
+ t.column "created_on", :timestamp
+ end
+
+ create_table "news", :force => true do |t|
+ t.column "project_id", :integer
+ t.column "title", :string, :limit => 60, :default => "", :null => false
+ t.column "summary", :string, :limit => 255, :default => ""
+ t.column "description", :text
+ t.column "author_id", :integer, :default => 0, :null => false
+ t.column "created_on", :timestamp
+ end
+
+ add_index "news", ["project_id"], :name => "news_project_id"
+
+ create_table "permissions", :force => true do |t|
+ t.column "controller", :string, :limit => 30, :default => "", :null => false
+ t.column "action", :string, :limit => 30, :default => "", :null => false
+ t.column "description", :string, :limit => 60, :default => "", :null => false
+ t.column "is_public", :boolean, :default => false, :null => false
+ t.column "sort", :integer, :default => 0, :null => false
+ t.column "mail_option", :boolean, :default => false, :null => false
+ t.column "mail_enabled", :boolean, :default => false, :null => false
+ end
+
+ create_table "permissions_roles", :id => false, :force => true do |t|
+ t.column "permission_id", :integer, :default => 0, :null => false
+ t.column "role_id", :integer, :default => 0, :null => false
+ end
+
+ add_index "permissions_roles", ["role_id"], :name => "permissions_roles_role_id"
+
+ create_table "projects", :force => true do |t|
+ t.column "name", :string, :limit => 30, :default => "", :null => false
+ t.column "description", :string, :default => "", :null => false
+ t.column "homepage", :string, :limit => 60, :default => ""
t.column "is_public", :boolean, :default => true, :null => false
t.column "parent_id", :integer
- t.column "projects_count", :integer, :default => 0
- t.column "created_on", :timestamp
- t.column "updated_on", :timestamp
- end
-
- create_table "roles", :force => true do |t|
- t.column "name", :string, :limit => 30, :default => "", :null => false
- end
+ t.column "projects_count", :integer, :default => 0
+ t.column "created_on", :timestamp
+ t.column "updated_on", :timestamp
+ end
+
+ create_table "roles", :force => true do |t|
+ t.column "name", :string, :limit => 30, :default => "", :null => false
+ end
create_table "tokens", :force => true do |t|
t.column "user_id", :integer, :default => 0, :null => false
@@ -193,98 +193,98 @@ class Setup < ActiveRecord::Migration
t.column "value", :string, :limit => 40, :default => "", :null => false
t.column "created_on", :datetime, :null => false
end
-
- create_table "trackers", :force => true do |t|
- t.column "name", :string, :limit => 30, :default => "", :null => false
- t.column "is_in_chlog", :boolean, :default => false, :null => false
- end
-
- create_table "users", :force => true do |t|
- t.column "login", :string, :limit => 30, :default => "", :null => false
- t.column "hashed_password", :string, :limit => 40, :default => "", :null => false
- t.column "firstname", :string, :limit => 30, :default => "", :null => false
- t.column "lastname", :string, :limit => 30, :default => "", :null => false
- t.column "mail", :string, :limit => 60, :default => "", :null => false
- t.column "mail_notification", :boolean, :default => true, :null => false
- t.column "admin", :boolean, :default => false, :null => false
- t.column "status", :integer, :default => 1, :null => false
- t.column "last_login_on", :datetime
+
+ create_table "trackers", :force => true do |t|
+ t.column "name", :string, :limit => 30, :default => "", :null => false
+ t.column "is_in_chlog", :boolean, :default => false, :null => false
+ end
+
+ create_table "users", :force => true do |t|
+ t.column "login", :string, :limit => 30, :default => "", :null => false
+ t.column "hashed_password", :string, :limit => 40, :default => "", :null => false
+ t.column "firstname", :string, :limit => 30, :default => "", :null => false
+ t.column "lastname", :string, :limit => 30, :default => "", :null => false
+ t.column "mail", :string, :limit => 60, :default => "", :null => false
+ t.column "mail_notification", :boolean, :default => true, :null => false
+ t.column "admin", :boolean, :default => false, :null => false
+ t.column "status", :integer, :default => 1, :null => false
+ t.column "last_login_on", :datetime
t.column "language", :string, :limit => 2, :default => ""
- t.column "auth_source_id", :integer
- t.column "created_on", :timestamp
- t.column "updated_on", :timestamp
- end
-
- create_table "versions", :force => true do |t|
- t.column "project_id", :integer, :default => 0, :null => false
- t.column "name", :string, :limit => 30, :default => "", :null => false
- t.column "description", :string, :default => ""
- t.column "effective_date", :date
- t.column "created_on", :timestamp
- t.column "updated_on", :timestamp
+ t.column "auth_source_id", :integer
+ t.column "created_on", :timestamp
+ t.column "updated_on", :timestamp
+ end
+
+ create_table "versions", :force => true do |t|
+ t.column "project_id", :integer, :default => 0, :null => false
+ t.column "name", :string, :limit => 30, :default => "", :null => false
+ t.column "description", :string, :default => ""
+ t.column "effective_date", :date
+ t.column "created_on", :timestamp
+ t.column "updated_on", :timestamp
end
- add_index "versions", ["project_id"], :name => "versions_project_id"
-
- create_table "workflows", :force => true do |t|
- t.column "tracker_id", :integer, :default => 0, :null => false
- t.column "old_status_id", :integer, :default => 0, :null => false
- t.column "new_status_id", :integer, :default => 0, :null => false
- t.column "role_id", :integer, :default => 0, :null => false
- end
-
- # project
- Permission.create :controller => "projects", :action => "show", :description => "label_overview", :sort => 100, :is_public => true
- Permission.create :controller => "projects", :action => "changelog", :description => "label_change_log", :sort => 105, :is_public => true
- Permission.create :controller => "reports", :action => "issue_report", :description => "label_report_plural", :sort => 110, :is_public => true
- Permission.create :controller => "projects", :action => "settings", :description => "label_settings", :sort => 150
- Permission.create :controller => "projects", :action => "edit", :description => "button_edit", :sort => 151
- # members
- Permission.create :controller => "projects", :action => "list_members", :description => "button_list", :sort => 200, :is_public => true
- Permission.create :controller => "projects", :action => "add_member", :description => "button_add", :sort => 220
- Permission.create :controller => "members", :action => "edit", :description => "button_edit", :sort => 221
- Permission.create :controller => "members", :action => "destroy", :description => "button_delete", :sort => 222
- # versions
- Permission.create :controller => "projects", :action => "add_version", :description => "button_add", :sort => 320
- Permission.create :controller => "versions", :action => "edit", :description => "button_edit", :sort => 321
- Permission.create :controller => "versions", :action => "destroy", :description => "button_delete", :sort => 322
- # issue categories
- Permission.create :controller => "projects", :action => "add_issue_category", :description => "button_add", :sort => 420
- Permission.create :controller => "issue_categories", :action => "edit", :description => "button_edit", :sort => 421
- Permission.create :controller => "issue_categories", :action => "destroy", :description => "button_delete", :sort => 422
- # issues
- Permission.create :controller => "projects", :action => "list_issues", :description => "button_list", :sort => 1000, :is_public => true
+ add_index "versions", ["project_id"], :name => "versions_project_id"
+
+ create_table "workflows", :force => true do |t|
+ t.column "tracker_id", :integer, :default => 0, :null => false
+ t.column "old_status_id", :integer, :default => 0, :null => false
+ t.column "new_status_id", :integer, :default => 0, :null => false
+ t.column "role_id", :integer, :default => 0, :null => false
+ end
+
+ # project
+ Permission.create :controller => "projects", :action => "show", :description => "label_overview", :sort => 100, :is_public => true
+ Permission.create :controller => "projects", :action => "changelog", :description => "label_change_log", :sort => 105, :is_public => true
+ Permission.create :controller => "reports", :action => "issue_report", :description => "label_report_plural", :sort => 110, :is_public => true
+ Permission.create :controller => "projects", :action => "settings", :description => "label_settings", :sort => 150
+ Permission.create :controller => "projects", :action => "edit", :description => "button_edit", :sort => 151
+ # members
+ Permission.create :controller => "projects", :action => "list_members", :description => "button_list", :sort => 200, :is_public => true
+ Permission.create :controller => "projects", :action => "add_member", :description => "button_add", :sort => 220
+ Permission.create :controller => "members", :action => "edit", :description => "button_edit", :sort => 221
+ Permission.create :controller => "members", :action => "destroy", :description => "button_delete", :sort => 222
+ # versions
+ Permission.create :controller => "projects", :action => "add_version", :description => "button_add", :sort => 320
+ Permission.create :controller => "versions", :action => "edit", :description => "button_edit", :sort => 321
+ Permission.create :controller => "versions", :action => "destroy", :description => "button_delete", :sort => 322
+ # issue categories
+ Permission.create :controller => "projects", :action => "add_issue_category", :description => "button_add", :sort => 420
+ Permission.create :controller => "issue_categories", :action => "edit", :description => "button_edit", :sort => 421
+ Permission.create :controller => "issue_categories", :action => "destroy", :description => "button_delete", :sort => 422
+ # issues
+ Permission.create :controller => "projects", :action => "list_issues", :description => "button_list", :sort => 1000, :is_public => true
Permission.create :controller => "projects", :action => "export_issues_csv", :description => "label_export_csv", :sort => 1001, :is_public => true
- Permission.create :controller => "issues", :action => "show", :description => "button_view", :sort => 1005, :is_public => true
- Permission.create :controller => "issues", :action => "download", :description => "button_download", :sort => 1010, :is_public => true
- Permission.create :controller => "projects", :action => "add_issue", :description => "button_add", :sort => 1050, :mail_option => 1, :mail_enabled => 1
- Permission.create :controller => "issues", :action => "edit", :description => "button_edit", :sort => 1055
- Permission.create :controller => "issues", :action => "change_status", :description => "label_change_status", :sort => 1060, :mail_option => 1, :mail_enabled => 1
- Permission.create :controller => "issues", :action => "destroy", :description => "button_delete", :sort => 1065
- Permission.create :controller => "issues", :action => "add_attachment", :description => "label_attachment_new", :sort => 1070
- Permission.create :controller => "issues", :action => "destroy_attachment", :description => "label_attachment_delete", :sort => 1075
- # news
- Permission.create :controller => "projects", :action => "list_news", :description => "button_list", :sort => 1100, :is_public => true
- Permission.create :controller => "news", :action => "show", :description => "button_view", :sort => 1101, :is_public => true
- Permission.create :controller => "projects", :action => "add_news", :description => "button_add", :sort => 1120
- Permission.create :controller => "news", :action => "edit", :description => "button_edit", :sort => 1121
- Permission.create :controller => "news", :action => "destroy", :description => "button_delete", :sort => 1122
+ Permission.create :controller => "issues", :action => "show", :description => "button_view", :sort => 1005, :is_public => true
+ Permission.create :controller => "issues", :action => "download", :description => "button_download", :sort => 1010, :is_public => true
+ Permission.create :controller => "projects", :action => "add_issue", :description => "button_add", :sort => 1050, :mail_option => 1, :mail_enabled => 1
+ Permission.create :controller => "issues", :action => "edit", :description => "button_edit", :sort => 1055
+ Permission.create :controller => "issues", :action => "change_status", :description => "label_change_status", :sort => 1060, :mail_option => 1, :mail_enabled => 1
+ Permission.create :controller => "issues", :action => "destroy", :description => "button_delete", :sort => 1065
+ Permission.create :controller => "issues", :action => "add_attachment", :description => "label_attachment_new", :sort => 1070
+ Permission.create :controller => "issues", :action => "destroy_attachment", :description => "label_attachment_delete", :sort => 1075
+ # news
+ Permission.create :controller => "projects", :action => "list_news", :description => "button_list", :sort => 1100, :is_public => true
+ Permission.create :controller => "news", :action => "show", :description => "button_view", :sort => 1101, :is_public => true
+ Permission.create :controller => "projects", :action => "add_news", :description => "button_add", :sort => 1120
+ Permission.create :controller => "news", :action => "edit", :description => "button_edit", :sort => 1121
+ Permission.create :controller => "news", :action => "destroy", :description => "button_delete", :sort => 1122
# documents
- Permission.create :controller => "projects", :action => "list_documents", :description => "button_list", :sort => 1200, :is_public => true
- Permission.create :controller => "documents", :action => "show", :description => "button_view", :sort => 1201, :is_public => true
- Permission.create :controller => "documents", :action => "download", :description => "button_download", :sort => 1202, :is_public => true
- Permission.create :controller => "projects", :action => "add_document", :description => "button_add", :sort => 1220
- Permission.create :controller => "documents", :action => "edit", :description => "button_edit", :sort => 1221
- Permission.create :controller => "documents", :action => "destroy", :description => "button_delete", :sort => 1222
- Permission.create :controller => "documents", :action => "add_attachment", :description => "label_attachment_new", :sort => 1223
- Permission.create :controller => "documents", :action => "destroy_attachment", :description => "label_attachment_delete", :sort => 1224
- # files
- Permission.create :controller => "projects", :action => "list_files", :description => "button_list", :sort => 1300, :is_public => true
- Permission.create :controller => "versions", :action => "download", :description => "button_download", :sort => 1301, :is_public => true
- Permission.create :controller => "projects", :action => "add_file", :description => "button_add", :sort => 1320
- Permission.create :controller => "versions", :action => "destroy_file", :description => "button_delete", :sort => 1322
-
- # create default administrator account
+ Permission.create :controller => "projects", :action => "list_documents", :description => "button_list", :sort => 1200, :is_public => true
+ Permission.create :controller => "documents", :action => "show", :description => "button_view", :sort => 1201, :is_public => true
+ Permission.create :controller => "documents", :action => "download", :description => "button_download", :sort => 1202, :is_public => true
+ Permission.create :controller => "projects", :action => "add_document", :description => "button_add", :sort => 1220
+ Permission.create :controller => "documents", :action => "edit", :description => "button_edit", :sort => 1221
+ Permission.create :controller => "documents", :action => "destroy", :description => "button_delete", :sort => 1222
+ Permission.create :controller => "documents", :action => "add_attachment", :description => "label_attachment_new", :sort => 1223
+ Permission.create :controller => "documents", :action => "destroy_attachment", :description => "label_attachment_delete", :sort => 1224
+ # files
+ Permission.create :controller => "projects", :action => "list_files", :description => "button_list", :sort => 1300, :is_public => true
+ Permission.create :controller => "versions", :action => "download", :description => "button_download", :sort => 1301, :is_public => true
+ Permission.create :controller => "projects", :action => "add_file", :description => "button_add", :sort => 1320
+ Permission.create :controller => "versions", :action => "destroy_file", :description => "button_delete", :sort => 1322
+
+ # create default administrator account
user = User.create :login => "admin",
:hashed_password => "d033e22ae348aeb5660fc2140aec35850c4da997",
:admin => true,
@@ -296,29 +296,29 @@ class Setup < ActiveRecord::Migration
:status => 1
end
- def self.down
+ def self.down
drop_table :attachments
- drop_table :auth_sources
- drop_table :custom_fields
+ drop_table :auth_sources
+ drop_table :custom_fields
drop_table :custom_fields_projects
- drop_table :custom_fields_trackers
- drop_table :custom_values
- drop_table :documents
- drop_table :enumerations
- drop_table :issue_categories
- drop_table :issue_histories
- drop_table :issue_statuses
- drop_table :issues
- drop_table :members
- drop_table :news
- drop_table :permissions
- drop_table :permissions_roles
- drop_table :projects
- drop_table :roles
- drop_table :trackers
+ drop_table :custom_fields_trackers
+ drop_table :custom_values
+ drop_table :documents
+ drop_table :enumerations
+ drop_table :issue_categories
+ drop_table :issue_histories
+ drop_table :issue_statuses
+ drop_table :issues
+ drop_table :members
+ drop_table :news
+ drop_table :permissions
+ drop_table :permissions_roles
+ drop_table :projects
+ drop_table :roles
+ drop_table :trackers
drop_table :tokens
- drop_table :users
- drop_table :versions
+ drop_table :users
+ drop_table :versions
drop_table :workflows
end
end
diff --git a/lib/SVG/Graph/Bar.rb b/lib/SVG/Graph/Bar.rb
index 6836c501..69515659 100644
--- a/lib/SVG/Graph/Bar.rb
+++ b/lib/SVG/Graph/Bar.rb
@@ -1,148 +1,148 @@
-require 'rexml/document'
-require 'SVG/Graph/Graph'
-require 'SVG/Graph/BarBase'
-
-module SVG
- module Graph
- # === Create presentation quality SVG bar graphs easily
- #
- # = Synopsis
- #
- # require 'SVG/Graph/Bar'
- #
- # fields = %w(Jan Feb Mar);
- # data_sales_02 = [12, 45, 21]
- #
- # graph = SVG::Graph::Bar.new(
- # :height => 500,
- # :width => 300,
- # :fields => fields
- # )
- #
- # graph.add_data(
- # :data => data_sales_02,
- # :title => 'Sales 2002'
- # )
- #
- # print "Content-type: image/svg+xml\r\n\r\n"
- # print graph.burn
- #
- # = Description
- #
- # This object aims to allow you to easily create high quality
- # SVG[http://www.w3c.org/tr/svg bar graphs. You can either use the default
- # style sheet or supply your own. Either way there are many options which
- # can be configured to give you control over how the graph is generated -
- # with or without a key, data elements at each point, title, subtitle etc.
- #
- # = Notes
- #
- # The default stylesheet handles upto 12 data sets, if you
- # use more you must create your own stylesheet and add the
- # additional settings for the extra data sets. You will know
- # if you go over 12 data sets as they will have no style and
- # be in black.
- #
- # = Examples
- #
- # * http://germane-software.com/repositories/public/SVG/test/test.rb
- #
- # = See also
- #
- # * SVG::Graph::Graph
- # * SVG::Graph::BarHorizontal
- # * SVG::Graph::Line
- # * SVG::Graph::Pie
- # * SVG::Graph::Plot
- # * SVG::Graph::TimeSeries
- class Bar < BarBase
- include REXML
-
- # See Graph::initialize and BarBase::set_defaults
- def set_defaults
- super
- self.top_align = self.top_font = 1
- end
-
- protected
-
- def get_x_labels
- @config[:fields]
- end
-
- def get_y_labels
- maxvalue = max_value
- minvalue = min_value
- range = maxvalue - minvalue
-
- top_pad = range == 0 ? 10 : range / 20.0
- scale_range = (maxvalue + top_pad) - minvalue
-
- scale_division = scale_divisions || (scale_range / 10.0)
-
- if scale_integers
- scale_division = scale_division < 1 ? 1 : scale_division.round
- end
-
- rv = []
- maxvalue = maxvalue%scale_division == 0 ?
- maxvalue : maxvalue + scale_division
- minvalue.step( maxvalue, scale_division ) {|v| rv << v}
- return rv
- end
-
- def x_label_offset( width )
- width / 2.0
- end
-
- def draw_data
- minvalue = min_value
- fieldwidth = field_width
-
- unit_size = (@graph_height.to_f - font_size*2*top_font) /
- (get_y_labels.max - get_y_labels.min)
- bargap = bar_gap ? (fieldwidth < 10 ? fieldwidth / 2 : 10) : 0
-
- bar_width = fieldwidth - bargap
- bar_width /= @data.length if stack == :side
- x_mod = (@graph_width-bargap)/2 - (stack==:side ? bar_width/2 : 0)
-
- bottom = @graph_height
-
- field_count = 0
- @config[:fields].each_index { |i|
- dataset_count = 0
- for dataset in @data
-
- # cases (assume 0 = +ve):
- # value min length
- # +ve +ve value - min
- # +ve -ve value - 0
- # -ve -ve value.abs - 0
-
- value = dataset[:data][i]
-
- left = (fieldwidth * field_count)
-
- length = (value.abs - (minvalue > 0 ? minvalue : 0)) * unit_size
- # top is 0 if value is negative
- top = bottom - (((value < 0 ? 0 : value) - minvalue) * unit_size)
- left += bar_width * dataset_count if stack == :side
-
- @graph.add_element( "rect", {
- "x" => left.to_s,
- "y" => top.to_s,
- "width" => bar_width.to_s,
- "height" => length.to_s,
- "class" => "fill#{dataset_count+1}"
- })
-
- make_datapoint_text(left + bar_width/2.0, top - 6, value.to_s)
- dataset_count += 1
- end
- field_count += 1
- }
- end
- end
- end
-end
+require 'rexml/document'
+require 'SVG/Graph/Graph'
+require 'SVG/Graph/BarBase'
+
+module SVG
+ module Graph
+ # === Create presentation quality SVG bar graphs easily
+ #
+ # = Synopsis
+ #
+ # require 'SVG/Graph/Bar'
+ #
+ # fields = %w(Jan Feb Mar);
+ # data_sales_02 = [12, 45, 21]
+ #
+ # graph = SVG::Graph::Bar.new(
+ # :height => 500,
+ # :width => 300,
+ # :fields => fields
+ # )
+ #
+ # graph.add_data(
+ # :data => data_sales_02,
+ # :title => 'Sales 2002'
+ # )
+ #
+ # print "Content-type: image/svg+xml\r\n\r\n"
+ # print graph.burn
+ #
+ # = Description
+ #
+ # This object aims to allow you to easily create high quality
+ # SVG[http://www.w3c.org/tr/svg bar graphs. You can either use the default
+ # style sheet or supply your own. Either way there are many options which
+ # can be configured to give you control over how the graph is generated -
+ # with or without a key, data elements at each point, title, subtitle etc.
+ #
+ # = Notes
+ #
+ # The default stylesheet handles upto 12 data sets, if you
+ # use more you must create your own stylesheet and add the
+ # additional settings for the extra data sets. You will know
+ # if you go over 12 data sets as they will have no style and
+ # be in black.
+ #
+ # = Examples
+ #
+ # * http://germane-software.com/repositories/public/SVG/test/test.rb
+ #
+ # = See also
+ #
+ # * SVG::Graph::Graph
+ # * SVG::Graph::BarHorizontal
+ # * SVG::Graph::Line
+ # * SVG::Graph::Pie
+ # * SVG::Graph::Plot
+ # * SVG::Graph::TimeSeries
+ class Bar < BarBase
+ include REXML
+
+ # See Graph::initialize and BarBase::set_defaults
+ def set_defaults
+ super
+ self.top_align = self.top_font = 1
+ end
+
+ protected
+
+ def get_x_labels
+ @config[:fields]
+ end
+
+ def get_y_labels
+ maxvalue = max_value
+ minvalue = min_value
+ range = maxvalue - minvalue
+
+ top_pad = range == 0 ? 10 : range / 20.0
+ scale_range = (maxvalue + top_pad) - minvalue
+
+ scale_division = scale_divisions || (scale_range / 10.0)
+
+ if scale_integers
+ scale_division = scale_division < 1 ? 1 : scale_division.round
+ end
+
+ rv = []
+ maxvalue = maxvalue%scale_division == 0 ?
+ maxvalue : maxvalue + scale_division
+ minvalue.step( maxvalue, scale_division ) {|v| rv << v}
+ return rv
+ end
+
+ def x_label_offset( width )
+ width / 2.0
+ end
+
+ def draw_data
+ minvalue = min_value
+ fieldwidth = field_width
+
+ unit_size = (@graph_height.to_f - font_size*2*top_font) /
+ (get_y_labels.max - get_y_labels.min)
+ bargap = bar_gap ? (fieldwidth < 10 ? fieldwidth / 2 : 10) : 0
+
+ bar_width = fieldwidth - bargap
+ bar_width /= @data.length if stack == :side
+ x_mod = (@graph_width-bargap)/2 - (stack==:side ? bar_width/2 : 0)
+
+ bottom = @graph_height
+
+ field_count = 0
+ @config[:fields].each_index { |i|
+ dataset_count = 0
+ for dataset in @data
+
+ # cases (assume 0 = +ve):
+ # value min length
+ # +ve +ve value - min
+ # +ve -ve value - 0
+ # -ve -ve value.abs - 0
+
+ value = dataset[:data][i]
+
+ left = (fieldwidth * field_count)
+
+ length = (value.abs - (minvalue > 0 ? minvalue : 0)) * unit_size
+ # top is 0 if value is negative
+ top = bottom - (((value < 0 ? 0 : value) - minvalue) * unit_size)
+ left += bar_width * dataset_count if stack == :side
+
+ @graph.add_element( "rect", {
+ "x" => left.to_s,
+ "y" => top.to_s,
+ "width" => bar_width.to_s,
+ "height" => length.to_s,
+ "class" => "fill#{dataset_count+1}"
+ })
+
+ make_datapoint_text(left + bar_width/2.0, top - 6, value.to_s)
+ dataset_count += 1
+ end
+ field_count += 1
+ }
+ end
+ end
+ end
+end
diff --git a/lib/SVG/Graph/BarBase.rb b/lib/SVG/Graph/BarBase.rb
index acc9fecd..7b7dda88 100644
--- a/lib/SVG/Graph/BarBase.rb
+++ b/lib/SVG/Graph/BarBase.rb
@@ -1,139 +1,139 @@
-require 'rexml/document'
-require 'SVG/Graph/Graph'
-
-module SVG
- module Graph
- # = Synopsis
- #
- # A superclass for bar-style graphs. Do not attempt to instantiate
- # directly; use one of the subclasses instead.
- #
- # = Author
- #
- # Sean E. Russell
- #
- # Copyright 2004 Sean E. Russell
- # This software is available under the Ruby license[LICENSE.txt]
- #
- class BarBase < SVG::Graph::Graph
- # Ensures that :fields are provided in the configuration.
- def initialize config
- raise "fields was not supplied or is empty" unless config[:fields] &&
- config[:fields].kind_of?(Array) &&
- config[:fields].length > 0
- super
- end
-
- # In addition to the defaults set in Graph::initialize, sets
- # [bar_gap] true
- # [stack] :overlap
- def set_defaults
- init_with( :bar_gap => true, :stack => :overlap )
- end
-
- # Whether to have a gap between the bars or not, default
- # is true, set to false if you don't want gaps.
- attr_accessor :bar_gap
- # How to stack data sets. :overlap overlaps bars with
- # transparent colors, :top stacks bars on top of one another,
- # :side stacks the bars side-by-side. Defaults to :overlap.
- attr_accessor :stack
-
-
- protected
-
- def max_value
- @data.collect{|x| x[:data].max}.max
- end
-
- def min_value
- min = 0
- if min_scale_value.nil?
- min = @data.collect{|x| x[:data].min}.min
- min = min > 0 ? 0 : min
- else
- min = min_scale_value
- end
- return min
- end
-
- def get_css
- return <
+ #
+ # Copyright 2004 Sean E. Russell
+ # This software is available under the Ruby license[LICENSE.txt]
+ #
+ class BarBase < SVG::Graph::Graph
+ # Ensures that :fields are provided in the configuration.
+ def initialize config
+ raise "fields was not supplied or is empty" unless config[:fields] &&
+ config[:fields].kind_of?(Array) &&
+ config[:fields].length > 0
+ super
+ end
+
+ # In addition to the defaults set in Graph::initialize, sets
+ # [bar_gap] true
+ # [stack] :overlap
+ def set_defaults
+ init_with( :bar_gap => true, :stack => :overlap )
+ end
+
+ # Whether to have a gap between the bars or not, default
+ # is true, set to false if you don't want gaps.
+ attr_accessor :bar_gap
+ # How to stack data sets. :overlap overlaps bars with
+ # transparent colors, :top stacks bars on top of one another,
+ # :side stacks the bars side-by-side. Defaults to :overlap.
+ attr_accessor :stack
+
+
+ protected
+
+ def max_value
+ @data.collect{|x| x[:data].max}.max
+ end
+
+ def min_value
+ min = 0
+ if min_scale_value.nil?
+ min = @data.collect{|x| x[:data].min}.min
+ min = min > 0 ? 0 : min
+ else
+ min = min_scale_value
+ end
+ return min
+ end
+
+ def get_css
+ return < 500,
- # :width => 300,
- # :fields => fields,
- # })
- #
- # graph.add_data({
- # :data => data_sales_02,
- # :title => 'Sales 2002',
- # })
- #
- # print "Content-type: image/svg+xml\r\n\r\n"
- # print graph.burn
- #
- # = Description
- #
- # This object aims to allow you to easily create high quality
- # SVG horitonzal bar graphs. You can either use the default style sheet
- # or supply your own. Either way there are many options which can
- # be configured to give you control over how the graph is
- # generated - with or without a key, data elements at each point,
- # title, subtitle etc.
- #
- # = Examples
- #
- # * http://germane-software.com/repositories/public/SVG/test/test.rb
- #
- # = See also
- #
- # * SVG::Graph::Graph
- # * SVG::Graph::Bar
- # * SVG::Graph::Line
- # * SVG::Graph::Pie
- # * SVG::Graph::Plot
- # * SVG::Graph::TimeSeries
- #
- # == Author
- #
- # Sean E. Russell
- #
- # Copyright 2004 Sean E. Russell
- # This software is available under the Ruby license[LICENSE.txt]
- #
- class BarHorizontal < BarBase
- # In addition to the defaults set in BarBase::set_defaults, sets
- # [rotate_y_labels] true
- # [show_x_guidelines] true
- # [show_y_guidelines] false
- def set_defaults
- super
- init_with(
- :rotate_y_labels => true,
- :show_x_guidelines => true,
- :show_y_guidelines => false
- )
- self.right_align = self.right_font = 1
- end
-
- protected
-
- def get_x_labels
- maxvalue = max_value
- minvalue = min_value
- range = maxvalue - minvalue
- top_pad = range == 0 ? 10 : range / 20.0
- scale_range = (maxvalue + top_pad) - minvalue
-
- scale_division = scale_divisions || (scale_range / 10.0)
-
- if scale_integers
- scale_division = scale_division < 1 ? 1 : scale_division.round
- end
-
- rv = []
- maxvalue = maxvalue%scale_division == 0 ?
- maxvalue : maxvalue + scale_division
- minvalue.step( maxvalue, scale_division ) {|v| rv << v}
- return rv
- end
-
- def get_y_labels
- @config[:fields]
- end
-
- def y_label_offset( height )
- height / -2.0
- end
-
- def draw_data
- minvalue = min_value
- fieldheight = field_height
-
- unit_size = (@graph_width.to_f - font_size*2*right_font ) /
- (get_x_labels.max - get_x_labels.min )
- bargap = bar_gap ? (fieldheight < 10 ? fieldheight / 2 : 10) : 0
-
- bar_height = fieldheight - bargap
- bar_height /= @data.length if stack == :side
- y_mod = (bar_height / 2) + (font_size / 2)
-
- field_count = 1
- @config[:fields].each_index { |i|
- dataset_count = 0
- for dataset in @data
- value = dataset[:data][i]
-
- top = @graph_height - (fieldheight * field_count)
- top += (bar_height * dataset_count) if stack == :side
- # cases (assume 0 = +ve):
- # value min length left
- # +ve +ve value.abs - min minvalue.abs
- # +ve -ve value.abs - 0 minvalue.abs
- # -ve -ve value.abs - 0 minvalue.abs + value
- length = (value.abs - (minvalue > 0 ? minvalue : 0)) * unit_size
- left = (minvalue.abs + (value < 0 ? value : 0)) * unit_size
-
- @graph.add_element( "rect", {
- "x" => left.to_s,
- "y" => top.to_s,
- "width" => length.to_s,
- "height" => bar_height.to_s,
- "class" => "fill#{dataset_count+1}"
- })
-
- make_datapoint_text(
- left+length+5, top+y_mod, value, "text-anchor: start; "
- )
- dataset_count += 1
- end
- field_count += 1
- }
- end
- end
- end
-end
+require 'rexml/document'
+require 'SVG/Graph/BarBase'
+
+module SVG
+ module Graph
+ # === Create presentation quality SVG horitonzal bar graphs easily
+ #
+ # = Synopsis
+ #
+ # require 'SVG/Graph/BarHorizontal'
+ #
+ # fields = %w(Jan Feb Mar)
+ # data_sales_02 = [12, 45, 21]
+ #
+ # graph = SVG::Graph::BarHorizontal.new({
+ # :height => 500,
+ # :width => 300,
+ # :fields => fields,
+ # })
+ #
+ # graph.add_data({
+ # :data => data_sales_02,
+ # :title => 'Sales 2002',
+ # })
+ #
+ # print "Content-type: image/svg+xml\r\n\r\n"
+ # print graph.burn
+ #
+ # = Description
+ #
+ # This object aims to allow you to easily create high quality
+ # SVG horitonzal bar graphs. You can either use the default style sheet
+ # or supply your own. Either way there are many options which can
+ # be configured to give you control over how the graph is
+ # generated - with or without a key, data elements at each point,
+ # title, subtitle etc.
+ #
+ # = Examples
+ #
+ # * http://germane-software.com/repositories/public/SVG/test/test.rb
+ #
+ # = See also
+ #
+ # * SVG::Graph::Graph
+ # * SVG::Graph::Bar
+ # * SVG::Graph::Line
+ # * SVG::Graph::Pie
+ # * SVG::Graph::Plot
+ # * SVG::Graph::TimeSeries
+ #
+ # == Author
+ #
+ # Sean E. Russell
+ #
+ # Copyright 2004 Sean E. Russell
+ # This software is available under the Ruby license[LICENSE.txt]
+ #
+ class BarHorizontal < BarBase
+ # In addition to the defaults set in BarBase::set_defaults, sets
+ # [rotate_y_labels] true
+ # [show_x_guidelines] true
+ # [show_y_guidelines] false
+ def set_defaults
+ super
+ init_with(
+ :rotate_y_labels => true,
+ :show_x_guidelines => true,
+ :show_y_guidelines => false
+ )
+ self.right_align = self.right_font = 1
+ end
+
+ protected
+
+ def get_x_labels
+ maxvalue = max_value
+ minvalue = min_value
+ range = maxvalue - minvalue
+ top_pad = range == 0 ? 10 : range / 20.0
+ scale_range = (maxvalue + top_pad) - minvalue
+
+ scale_division = scale_divisions || (scale_range / 10.0)
+
+ if scale_integers
+ scale_division = scale_division < 1 ? 1 : scale_division.round
+ end
+
+ rv = []
+ maxvalue = maxvalue%scale_division == 0 ?
+ maxvalue : maxvalue + scale_division
+ minvalue.step( maxvalue, scale_division ) {|v| rv << v}
+ return rv
+ end
+
+ def get_y_labels
+ @config[:fields]
+ end
+
+ def y_label_offset( height )
+ height / -2.0
+ end
+
+ def draw_data
+ minvalue = min_value
+ fieldheight = field_height
+
+ unit_size = (@graph_width.to_f - font_size*2*right_font ) /
+ (get_x_labels.max - get_x_labels.min )
+ bargap = bar_gap ? (fieldheight < 10 ? fieldheight / 2 : 10) : 0
+
+ bar_height = fieldheight - bargap
+ bar_height /= @data.length if stack == :side
+ y_mod = (bar_height / 2) + (font_size / 2)
+
+ field_count = 1
+ @config[:fields].each_index { |i|
+ dataset_count = 0
+ for dataset in @data
+ value = dataset[:data][i]
+
+ top = @graph_height - (fieldheight * field_count)
+ top += (bar_height * dataset_count) if stack == :side
+ # cases (assume 0 = +ve):
+ # value min length left
+ # +ve +ve value.abs - min minvalue.abs
+ # +ve -ve value.abs - 0 minvalue.abs
+ # -ve -ve value.abs - 0 minvalue.abs + value
+ length = (value.abs - (minvalue > 0 ? minvalue : 0)) * unit_size
+ left = (minvalue.abs + (value < 0 ? value : 0)) * unit_size
+
+ @graph.add_element( "rect", {
+ "x" => left.to_s,
+ "y" => top.to_s,
+ "width" => length.to_s,
+ "height" => bar_height.to_s,
+ "class" => "fill#{dataset_count+1}"
+ })
+
+ make_datapoint_text(
+ left+length+5, top+y_mod, value, "text-anchor: start; "
+ )
+ dataset_count += 1
+ end
+ field_count += 1
+ }
+ end
+ end
+ end
+end
diff --git a/lib/SVG/Graph/Graph.rb b/lib/SVG/Graph/Graph.rb
index 497bb7c3..8a840b2f 100644
--- a/lib/SVG/Graph/Graph.rb
+++ b/lib/SVG/Graph/Graph.rb
@@ -1,978 +1,978 @@
-begin
- require 'zlib'
- @@__have_zlib = true
-rescue
- @@__have_zlib = false
-end
-
-require 'rexml/document'
-
-module SVG
- module Graph
- VERSION = '@ANT_VERSION@'
-
- # === Base object for generating SVG Graphs
- #
- # == Synopsis
- #
- # This class is only used as a superclass of specialized charts. Do not
- # attempt to use this class directly, unless creating a new chart type.
- #
- # For examples of how to subclass this class, see the existing specific
- # subclasses, such as SVG::Graph::Pie.
- #
- # == Examples
- #
- # For examples of how to use this package, see either the test files, or
- # the documentation for the specific class you want to use.
- #
- # * file:test/plot.rb
- # * file:test/single.rb
- # * file:test/test.rb
- # * file:test/timeseries.rb
- #
- # == Description
- #
- # This package should be used as a base for creating SVG graphs.
- #
- # == Acknowledgements
- #
- # Leo Lapworth for creating the SVG::TT::Graph package which this Ruby
- # port is based on.
- #
- # Stephen Morgan for creating the TT template and SVG.
- #
- # == See
- #
- # * SVG::Graph::BarHorizontal
- # * SVG::Graph::Bar
- # * SVG::Graph::Line
- # * SVG::Graph::Pie
- # * SVG::Graph::Plot
- # * SVG::Graph::TimeSeries
- #
- # == Author
- #
- # Sean E. Russell
- #
- # Copyright 2004 Sean E. Russell
- # This software is available under the Ruby license[LICENSE.txt]
- #
- class Graph
- include REXML
-
- # Initialize the graph object with the graph settings. You won't
- # instantiate this class directly; see the subclass for options.
- # [width] 500
- # [height] 300
- # [show_x_guidelines] false
- # [show_y_guidelines] true
- # [show_data_values] true
- # [min_scale_value] 0
- # [show_x_labels] true
- # [stagger_x_labels] false
- # [rotate_x_labels] false
- # [step_x_labels] 1
- # [step_include_first_x_label] true
- # [show_y_labels] true
- # [rotate_y_labels] false
- # [scale_integers] false
- # [show_x_title] false
- # [x_title] 'X Field names'
- # [show_y_title] false
- # [y_title_text_direction] :bt
- # [y_title] 'Y Scale'
- # [show_graph_title] false
- # [graph_title] 'Graph Title'
- # [show_graph_subtitle] false
- # [graph_subtitle] 'Graph Sub Title'
- # [key] true,
- # [key_position] :right, # bottom or righ
- # [font_size] 12
- # [title_font_size] 16
- # [subtitle_font_size] 14
- # [x_label_font_size] 12
- # [x_title_font_size] 14
- # [y_label_font_size] 12
- # [y_title_font_size] 14
- # [key_font_size] 10
- # [no_css] false
- # [add_popups] false
- def initialize( config )
- @config = config
-
- self.top_align = self.top_font = self.right_align = self.right_font = 0
-
- init_with({
- :width => 500,
- :height => 300,
- :show_x_guidelines => false,
- :show_y_guidelines => true,
- :show_data_values => true,
-
-# :min_scale_value => 0,
-
- :show_x_labels => true,
- :stagger_x_labels => false,
- :rotate_x_labels => false,
- :step_x_labels => 1,
- :step_include_first_x_label => true,
-
- :show_y_labels => true,
- :rotate_y_labels => false,
- :stagger_y_labels => false,
- :scale_integers => false,
-
- :show_x_title => false,
- :x_title => 'X Field names',
-
- :show_y_title => false,
- :y_title_text_direction => :bt,
- :y_title => 'Y Scale',
-
- :show_graph_title => false,
- :graph_title => 'Graph Title',
- :show_graph_subtitle => false,
- :graph_subtitle => 'Graph Sub Title',
- :key => true,
- :key_position => :right, # bottom or right
-
- :font_size =>12,
- :title_font_size =>16,
- :subtitle_font_size =>14,
- :x_label_font_size =>12,
- :x_title_font_size =>14,
- :y_label_font_size =>12,
- :y_title_font_size =>14,
- :key_font_size =>10,
-
- :no_css =>false,
- :add_popups =>false,
- })
-
- set_defaults if respond_to? :set_defaults
-
- init_with config
- end
-
-
- # This method allows you do add data to the graph object.
- # It can be called several times to add more data sets in.
- #
- # data_sales_02 = [12, 45, 21];
- #
- # graph.add_data({
- # :data => data_sales_02,
- # :title => 'Sales 2002'
- # })
- def add_data conf
- @data = [] unless defined? @data
-
- if conf[:data] and conf[:data].kind_of? Array
- @data << conf
- else
- raise "No data provided by #{conf.inspect}"
- end
- end
-
-
- # This method removes all data from the object so that you can
- # reuse it to create a new graph but with the same config options.
- #
- # graph.clear_data
- def clear_data
- @data = []
- end
-
-
- # This method processes the template with the data and
- # config which has been set and returns the resulting SVG.
- #
- # This method will croak unless at least one data set has
- # been added to the graph object.
- #
- # print graph.burn
- def burn
- raise "No data available" unless @data.size > 0
-
- calculations if respond_to? :calculations
-
- start_svg
- calculate_graph_dimensions
- @foreground = Element.new( "g" )
- draw_graph
- draw_titles
- draw_legend
- draw_data
- @graph.add_element( @foreground )
- style
-
- data = ""
- @doc.write( data, 0 )
-
- if @config[:compress]
- if @@__have_zlib
- inp, out = IO.pipe
- gz = Zlib::GzipWriter.new( out )
- gz.write data
- gz.close
- data = inp.read
- else
- data << "";
- end
- end
-
- return data
- end
-
-
- # Set the height of the graph box, this is the total height
- # of the SVG box created - not the graph it self which auto
- # scales to fix the space.
- attr_accessor :height
- # Set the width of the graph box, this is the total width
- # of the SVG box created - not the graph it self which auto
- # scales to fix the space.
- attr_accessor :width
- # Set the path to an external stylesheet, set to '' if
- # you want to revert back to using the defaut internal version.
- #
- # To create an external stylesheet create a graph using the
- # default internal version and copy the stylesheet section to
- # an external file and edit from there.
- attr_accessor :style_sheet
- # (Bool) Show the value of each element of data on the graph
- attr_accessor :show_data_values
- # The point at which the Y axis starts, defaults to '0',
- # if set to nil it will default to the minimum data value.
- attr_accessor :min_scale_value
- # Whether to show labels on the X axis or not, defaults
- # to true, set to false if you want to turn them off.
- attr_accessor :show_x_labels
- # This puts the X labels at alternative levels so if they
- # are long field names they will not overlap so easily.
- # Default it false, to turn on set to true.
- attr_accessor :stagger_x_labels
- # This puts the Y labels at alternative levels so if they
- # are long field names they will not overlap so easily.
- # Default it false, to turn on set to true.
- attr_accessor :stagger_y_labels
- # This turns the X axis labels by 90 degrees.
- # Default it false, to turn on set to true.
- attr_accessor :rotate_x_labels
- # This turns the Y axis labels by 90 degrees.
- # Default it false, to turn on set to true.
- attr_accessor :rotate_y_labels
- # How many "steps" to use between displayed X axis labels,
- # a step of one means display every label, a step of two results
- # in every other label being displayed (label label label),
- # a step of three results in every third label being displayed
- # (label label label) and so on.
- attr_accessor :step_x_labels
- # Whether to (when taking "steps" between X axis labels) step from
- # the first label (i.e. always include the first label) or step from
- # the X axis origin (i.e. start with a gap if step_x_labels is greater
- # than one).
- attr_accessor :step_include_first_x_label
- # Whether to show labels on the Y axis or not, defaults
- # to true, set to false if you want to turn them off.
- attr_accessor :show_y_labels
- # Ensures only whole numbers are used as the scale divisions.
- # Default it false, to turn on set to true. This has no effect if
- # scale divisions are less than 1.
- attr_accessor :scale_integers
- # This defines the gap between markers on the Y axis,
- # default is a 10th of the max_value, e.g. you will have
- # 10 markers on the Y axis. NOTE: do not set this too
- # low - you are limited to 999 markers, after that the
- # graph won't generate.
- attr_accessor :scale_divisions
- # Whether to show the title under the X axis labels,
- # default is false, set to true to show.
- attr_accessor :show_x_title
- # What the title under X axis should be, e.g. 'Months'.
- attr_accessor :x_title
- # Whether to show the title under the Y axis labels,
- # default is false, set to true to show.
- attr_accessor :show_y_title
- # Aligns writing mode for Y axis label.
- # Defaults to :bt (Bottom to Top).
- # Change to :tb (Top to Bottom) to reverse.
- attr_accessor :y_title_text_direction
- # What the title under Y axis should be, e.g. 'Sales in thousands'.
- attr_accessor :y_title
- # Whether to show a title on the graph, defaults
- # to false, set to true to show.
- attr_accessor :show_graph_title
- # What the title on the graph should be.
- attr_accessor :graph_title
- # Whether to show a subtitle on the graph, defaults
- # to false, set to true to show.
- attr_accessor :show_graph_subtitle
- # What the subtitle on the graph should be.
- attr_accessor :graph_subtitle
- # Whether to show a key, defaults to false, set to
- # true if you want to show it.
- attr_accessor :key
- # Where the key should be positioned, defaults to
- # :right, set to :bottom if you want to move it.
- attr_accessor :key_position
- # Set the font size (in points) of the data point labels
- attr_accessor :font_size
- # Set the font size of the X axis labels
- attr_accessor :x_label_font_size
- # Set the font size of the X axis title
- attr_accessor :x_title_font_size
- # Set the font size of the Y axis labels
- attr_accessor :y_label_font_size
- # Set the font size of the Y axis title
- attr_accessor :y_title_font_size
- # Set the title font size
- attr_accessor :title_font_size
- # Set the subtitle font size
- attr_accessor :subtitle_font_size
- # Set the key font size
- attr_accessor :key_font_size
- # Show guidelines for the X axis
- attr_accessor :show_x_guidelines
- # Show guidelines for the Y axis
- attr_accessor :show_y_guidelines
- # Do not use CSS if set to true. Many SVG viewers do not support CSS, but
- # not using CSS can result in larger SVGs as well as making it impossible to
- # change colors after the chart is generated. Defaults to false.
- attr_accessor :no_css
- # Add popups for the data points on some graphs
- attr_accessor :add_popups
-
-
- protected
-
- def sort( *arrys )
- sort_multiple( arrys )
- end
-
- # Overwrite configuration options with supplied options. Used
- # by subclasses.
- def init_with config
- config.each { |key, value|
- self.send((key.to_s+"=").to_sym, value ) if respond_to? key.to_sym
- }
- end
-
- attr_accessor :top_align, :top_font, :right_align, :right_font
-
- KEY_BOX_SIZE = 12
-
- # Override this (and call super) to change the margin to the left
- # of the plot area. Results in @border_left being set.
- def calculate_left_margin
- @border_left = 7
- # Check for Y labels
- max_y_label_height_px = rotate_y_labels ?
- y_label_font_size :
- get_y_labels.max{|a,b|
- a.to_s.length<=>b.to_s.length
- }.to_s.length * y_label_font_size * 0.6
- @border_left += max_y_label_height_px if show_y_labels
- @border_left += max_y_label_height_px + 10 if stagger_y_labels
- @border_left += y_title_font_size + 5 if show_y_title
- end
-
-
- # Calculates the width of the widest Y label. This will be the
- # character height if the Y labels are rotated
- def max_y_label_width_px
- return font_size if rotate_y_labels
- end
-
-
- # Override this (and call super) to change the margin to the right
- # of the plot area. Results in @border_right being set.
- def calculate_right_margin
- @border_right = 7
- if key and key_position == :right
- val = keys.max { |a,b| a.length <=> b.length }
- @border_right += val.length * key_font_size * 0.6
- @border_right += KEY_BOX_SIZE
- @border_right += 10 # Some padding around the box
- end
- end
-
-
- # Override this (and call super) to change the margin to the top
- # of the plot area. Results in @border_top being set.
- def calculate_top_margin
- @border_top = 5
- @border_top += title_font_size if show_graph_title
- @border_top += 5
- @border_top += subtitle_font_size if show_graph_subtitle
- end
-
-
- # Adds pop-up point information to a graph.
- def add_popup( x, y, label )
- txt_width = label.length * font_size * 0.6 + 10
- tx = (x+txt_width > width ? x-5 : x+5)
- t = @foreground.add_element( "text", {
- "x" => tx.to_s,
- "y" => (y - font_size).to_s,
- "visibility" => "hidden",
- })
- t.attributes["style"] = "fill: #000; "+
- (x+txt_width > width ? "text-anchor: end;" : "text-anchor: start;")
- t.text = label.to_s
- t.attributes["id"] = t.object_id.to_s
-
- @foreground.add_element( "circle", {
- "cx" => x.to_s,
- "cy" => y.to_s,
- "r" => "10",
- "style" => "opacity: 0",
- "onmouseover" =>
- "document.getElementById(#{t.object_id}).setAttribute('visibility', 'visible' )",
- "onmouseout" =>
- "document.getElementById(#{t.object_id}).setAttribute('visibility', 'hidden' )",
- })
-
- end
-
-
- # Override this (and call super) to change the margin to the bottom
- # of the plot area. Results in @border_bottom being set.
- def calculate_bottom_margin
- @border_bottom = 7
- if key and key_position == :bottom
- @border_bottom += @data.size * (font_size + 5)
- @border_bottom += 10
- end
- if show_x_labels
- max_x_label_height_px = (not rotate_x_labels) ?
- x_label_font_size :
- get_x_labels.max{|a,b|
- a.to_s.length<=>b.to_s.length
- }.to_s.length * x_label_font_size * 0.6
- @border_bottom += max_x_label_height_px
- @border_bottom += max_x_label_height_px + 10 if stagger_x_labels
- end
- @border_bottom += x_title_font_size + 5 if show_x_title
- end
-
-
- # Draws the background, axis, and labels.
- def draw_graph
- @graph = @root.add_element( "g", {
- "transform" => "translate( #@border_left #@border_top )"
- })
-
- # Background
- @graph.add_element( "rect", {
- "x" => "0",
- "y" => "0",
- "width" => @graph_width.to_s,
- "height" => @graph_height.to_s,
- "class" => "graphBackground"
- })
-
- # Axis
- @graph.add_element( "path", {
- "d" => "M 0 0 v#@graph_height",
- "class" => "axis",
- "id" => "xAxis"
- })
- @graph.add_element( "path", {
- "d" => "M 0 #@graph_height h#@graph_width",
- "class" => "axis",
- "id" => "yAxis"
- })
-
- draw_x_labels
- draw_y_labels
- end
-
-
- # Where in the X area the label is drawn
- # Centered in the field, should be width/2. Start, 0.
- def x_label_offset( width )
- 0
- end
-
- def make_datapoint_text( x, y, value, style="" )
- if show_data_values
- @foreground.add_element( "text", {
- "x" => x.to_s,
- "y" => y.to_s,
- "class" => "dataPointLabel",
- "style" => "#{style} stroke: #fff; stroke-width: 2;"
- }).text = value.to_s
- text = @foreground.add_element( "text", {
- "x" => x.to_s,
- "y" => y.to_s,
- "class" => "dataPointLabel"
- })
- text.text = value.to_s
- text.attributes["style"] = style if style.length > 0
- end
- end
-
-
- # Draws the X axis labels
- def draw_x_labels
- stagger = x_label_font_size + 5
- if show_x_labels
- label_width = field_width
-
- count = 0
- for label in get_x_labels
- if step_include_first_x_label == true then
- step = count % step_x_labels
- else
- step = (count + 1) % step_x_labels
- end
-
- if step == 0 then
- text = @graph.add_element( "text" )
- text.attributes["class"] = "xAxisLabels"
- text.text = label.to_s
-
- x = count * label_width + x_label_offset( label_width )
- y = @graph_height + x_label_font_size + 3
- t = 0 - (font_size / 2)
-
- if stagger_x_labels and count % 2 == 1
- y += stagger
- @graph.add_element( "path", {
- "d" => "M#{x} #@graph_height v#{stagger}",
- "class" => "staggerGuideLine"
- })
- end
-
- text.attributes["x"] = x.to_s
- text.attributes["y"] = y.to_s
- if rotate_x_labels
- text.attributes["transform"] =
- "rotate( 90 #{x} #{y-x_label_font_size} )"+
- " translate( 0 -#{x_label_font_size/4} )"
- text.attributes["style"] = "text-anchor: start"
- else
- text.attributes["style"] = "text-anchor: middle"
- end
- end
-
- draw_x_guidelines( label_width, count ) if show_x_guidelines
- count += 1
- end
- end
- end
-
-
- # Where in the Y area the label is drawn
- # Centered in the field, should be width/2. Start, 0.
- def y_label_offset( height )
- 0
- end
-
-
- def field_width
- (@graph_width.to_f - font_size*2*right_font) /
- (get_x_labels.length - right_align)
- end
-
-
- def field_height
- (@graph_height.to_f - font_size*2*top_font) /
- (get_y_labels.length - top_align)
- end
-
-
- # Draws the Y axis labels
- def draw_y_labels
- stagger = y_label_font_size + 5
- if show_y_labels
- label_height = field_height
-
- count = 0
- y_offset = @graph_height + y_label_offset( label_height )
- y_offset += font_size/1.2 unless rotate_y_labels
- for label in get_y_labels
- y = y_offset - (label_height * count)
- x = rotate_y_labels ? 0 : -3
-
- if stagger_y_labels and count % 2 == 1
- x -= stagger
- @graph.add_element( "path", {
- "d" => "M#{x} #{y} h#{stagger}",
- "class" => "staggerGuideLine"
- })
- end
-
- text = @graph.add_element( "text", {
- "x" => x.to_s,
- "y" => y.to_s,
- "class" => "yAxisLabels"
- })
- text.text = label.to_s
- if rotate_y_labels
- text.attributes["transform"] = "translate( -#{font_size} 0 ) "+
- "rotate( 90 #{x} #{y} ) "
- text.attributes["style"] = "text-anchor: middle"
- else
- text.attributes["y"] = (y - (y_label_font_size/2)).to_s
- text.attributes["style"] = "text-anchor: end"
- end
- draw_y_guidelines( label_height, count ) if show_y_guidelines
- count += 1
- end
- end
- end
-
-
- # Draws the X axis guidelines
- def draw_x_guidelines( label_height, count )
- if count != 0
- @graph.add_element( "path", {
- "d" => "M#{label_height*count} 0 v#@graph_height",
- "class" => "guideLines"
- })
- end
- end
-
-
- # Draws the Y axis guidelines
- def draw_y_guidelines( label_height, count )
- if count != 0
- @graph.add_element( "path", {
- "d" => "M0 #{@graph_height-(label_height*count)} h#@graph_width",
- "class" => "guideLines"
- })
- end
- end
-
-
- # Draws the graph title and subtitle
- def draw_titles
- if show_graph_title
- @root.add_element( "text", {
- "x" => (width / 2).to_s,
- "y" => (title_font_size).to_s,
- "class" => "mainTitle"
- }).text = graph_title.to_s
- end
-
- if show_graph_subtitle
- y_subtitle = show_graph_title ?
- title_font_size + 10 :
- subtitle_font_size
- @root.add_element("text", {
- "x" => (width / 2).to_s,
- "y" => (y_subtitle).to_s,
- "class" => "subTitle"
- }).text = graph_subtitle.to_s
- end
-
- if show_x_title
- y = @graph_height + @border_top + x_title_font_size
- if show_x_labels
- y += x_label_font_size + 5 if stagger_x_labels
- y += x_label_font_size + 5
- end
- x = width / 2
-
- @root.add_element("text", {
- "x" => x.to_s,
- "y" => y.to_s,
- "class" => "xAxisTitle",
- }).text = x_title.to_s
- end
-
- if show_y_title
- x = y_title_font_size + (y_title_text_direction==:bt ? 3 : -3)
- y = height / 2
-
- text = @root.add_element("text", {
- "x" => x.to_s,
- "y" => y.to_s,
- "class" => "yAxisTitle",
- })
- text.text = y_title.to_s
- if y_title_text_direction == :bt
- text.attributes["transform"] = "rotate( -90, #{x}, #{y} )"
- else
- text.attributes["transform"] = "rotate( 90, #{x}, #{y} )"
- end
- end
- end
-
- def keys
- return @data.collect{ |d| d[:title] }
- end
-
- # Draws the legend on the graph
- def draw_legend
- if key
- group = @root.add_element( "g" )
-
- key_count = 0
- for key_name in keys
- y_offset = (KEY_BOX_SIZE * key_count) + (key_count * 5)
- group.add_element( "rect", {
- "x" => 0.to_s,
- "y" => y_offset.to_s,
- "width" => KEY_BOX_SIZE.to_s,
- "height" => KEY_BOX_SIZE.to_s,
- "class" => "key#{key_count+1}"
- })
- group.add_element( "text", {
- "x" => (KEY_BOX_SIZE + 5).to_s,
- "y" => (y_offset + KEY_BOX_SIZE).to_s,
- "class" => "keyText"
- }).text = key_name.to_s
- key_count += 1
- end
-
- case key_position
- when :right
- x_offset = @graph_width + @border_left + 10
- y_offset = @border_top + 20
- when :bottom
- x_offset = @border_left + 20
- y_offset = @border_top + @graph_height + 5
- if show_x_labels
- max_x_label_height_px = (not rotate_x_labels) ?
- x_label_font_size :
- get_x_labels.max{|a,b|
- a.to_s.length<=>b.to_s.length
- }.to_s.length * x_label_font_size * 0.6
- x_label_font_size
- y_offset += max_x_label_height_px
- y_offset += max_x_label_height_px + 5 if stagger_x_labels
- end
- y_offset += x_title_font_size + 5 if show_x_title
- end
- group.attributes["transform"] = "translate(#{x_offset} #{y_offset})"
- end
- end
-
-
- private
-
- def sort_multiple( arrys, lo=0, hi=arrys[0].length-1 )
- if lo < hi
- p = partition(arrys,lo,hi)
- sort_multiple(arrys, lo, p-1)
- sort_multiple(arrys, p+1, hi)
- end
- arrys
- end
-
- def partition( arrys, lo, hi )
- p = arrys[0][lo]
- l = lo
- z = lo+1
- while z <= hi
- if arrys[0][z] < p
- l += 1
- arrys.each { |arry| arry[z], arry[l] = arry[l], arry[z] }
- end
- z += 1
- end
- arrys.each { |arry| arry[lo], arry[l] = arry[l], arry[lo] }
- l
- end
-
- def style
- if no_css
- styles = parse_css
- @root.elements.each("//*[@class]") { |el|
- cl = el.attributes["class"]
- style = styles[cl]
- style += el.attributes["style"] if el.attributes["style"]
- el.attributes["style"] = style
- }
- end
- end
-
- def parse_css
- css = get_style
- rv = {}
- while css =~ /^(\.(\w+)(?:\s*,\s*\.\w+)*)\s*\{/m
- names_orig = names = $1
- css = $'
- css =~ /([^}]+)\}/m
- content = $1
- css = $'
-
- nms = []
- while names =~ /^\s*,?\s*\.(\w+)/
- nms << $1
- names = $'
- end
-
- content = content.tr( "\n\t", " ")
- for name in nms
- current = rv[name]
- current = current ? current+"; "+content : content
- rv[name] = current.strip.squeeze(" ")
- end
- end
- return rv
- end
-
-
- # Override and place code to add defs here
- def add_defs defs
- end
-
-
- def start_svg
- # Base document
- @doc = Document.new
- @doc << XMLDecl.new
- @doc << DocType.new( %q{svg PUBLIC "-//W3C//DTD SVG 1.0//EN" } +
- %q{"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"} )
- if style_sheet && style_sheet != ''
- @doc << Instruction.new( "xml-stylesheet",
- %Q{href="#{style_sheet}" type="text/css"} )
- end
- @root = @doc.add_element( "svg", {
- "width" => width.to_s,
- "height" => height.to_s,
- "viewBox" => "0 0 #{width} #{height}",
- "xmlns" => "http://www.w3.org/2000/svg",
- "xmlns:xlink" => "http://www.w3.org/1999/xlink",
- "xmlns:a3" => "http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/",
- "a3:scriptImplementation" => "Adobe"
- })
- @root << Comment.new( " "+"\\"*66 )
- @root << Comment.new( " Created with SVG::Graph " )
- @root << Comment.new( " SVG::Graph by Sean E. Russell " )
- @root << Comment.new( " Losely based on SVG::TT::Graph for Perl by"+
- " Leo Lapworth & Stephan Morgan " )
- @root << Comment.new( " "+"/"*66 )
-
- defs = @root.add_element( "defs" )
- add_defs defs
- if not(style_sheet && style_sheet != '') and !no_css
- @root << Comment.new(" include default stylesheet if none specified ")
- style = defs.add_element( "style", {"type"=>"text/css"} )
- style << CData.new( get_style )
- end
-
- @root << Comment.new( "SVG Background" )
- @root.add_element( "rect", {
- "width" => width.to_s,
- "height" => height.to_s,
- "x" => "0",
- "y" => "0",
- "class" => "svgBackground"
- })
- end
-
-
- def calculate_graph_dimensions
- calculate_left_margin
- calculate_right_margin
- calculate_bottom_margin
- calculate_top_margin
- @graph_width = width - @border_left - @border_right
- @graph_height = height - @border_top - @border_bottom
- end
-
- def get_style
- return <
+ #
+ # Copyright 2004 Sean E. Russell
+ # This software is available under the Ruby license[LICENSE.txt]
+ #
+ class Graph
+ include REXML
+
+ # Initialize the graph object with the graph settings. You won't
+ # instantiate this class directly; see the subclass for options.
+ # [width] 500
+ # [height] 300
+ # [show_x_guidelines] false
+ # [show_y_guidelines] true
+ # [show_data_values] true
+ # [min_scale_value] 0
+ # [show_x_labels] true
+ # [stagger_x_labels] false
+ # [rotate_x_labels] false
+ # [step_x_labels] 1
+ # [step_include_first_x_label] true
+ # [show_y_labels] true
+ # [rotate_y_labels] false
+ # [scale_integers] false
+ # [show_x_title] false
+ # [x_title] 'X Field names'
+ # [show_y_title] false
+ # [y_title_text_direction] :bt
+ # [y_title] 'Y Scale'
+ # [show_graph_title] false
+ # [graph_title] 'Graph Title'
+ # [show_graph_subtitle] false
+ # [graph_subtitle] 'Graph Sub Title'
+ # [key] true,
+ # [key_position] :right, # bottom or righ
+ # [font_size] 12
+ # [title_font_size] 16
+ # [subtitle_font_size] 14
+ # [x_label_font_size] 12
+ # [x_title_font_size] 14
+ # [y_label_font_size] 12
+ # [y_title_font_size] 14
+ # [key_font_size] 10
+ # [no_css] false
+ # [add_popups] false
+ def initialize( config )
+ @config = config
+
+ self.top_align = self.top_font = self.right_align = self.right_font = 0
+
+ init_with({
+ :width => 500,
+ :height => 300,
+ :show_x_guidelines => false,
+ :show_y_guidelines => true,
+ :show_data_values => true,
+
+# :min_scale_value => 0,
+
+ :show_x_labels => true,
+ :stagger_x_labels => false,
+ :rotate_x_labels => false,
+ :step_x_labels => 1,
+ :step_include_first_x_label => true,
+
+ :show_y_labels => true,
+ :rotate_y_labels => false,
+ :stagger_y_labels => false,
+ :scale_integers => false,
+
+ :show_x_title => false,
+ :x_title => 'X Field names',
+
+ :show_y_title => false,
+ :y_title_text_direction => :bt,
+ :y_title => 'Y Scale',
+
+ :show_graph_title => false,
+ :graph_title => 'Graph Title',
+ :show_graph_subtitle => false,
+ :graph_subtitle => 'Graph Sub Title',
+ :key => true,
+ :key_position => :right, # bottom or right
+
+ :font_size =>12,
+ :title_font_size =>16,
+ :subtitle_font_size =>14,
+ :x_label_font_size =>12,
+ :x_title_font_size =>14,
+ :y_label_font_size =>12,
+ :y_title_font_size =>14,
+ :key_font_size =>10,
+
+ :no_css =>false,
+ :add_popups =>false,
+ })
+
+ set_defaults if respond_to? :set_defaults
+
+ init_with config
+ end
+
+
+ # This method allows you do add data to the graph object.
+ # It can be called several times to add more data sets in.
+ #
+ # data_sales_02 = [12, 45, 21];
+ #
+ # graph.add_data({
+ # :data => data_sales_02,
+ # :title => 'Sales 2002'
+ # })
+ def add_data conf
+ @data = [] unless defined? @data
+
+ if conf[:data] and conf[:data].kind_of? Array
+ @data << conf
+ else
+ raise "No data provided by #{conf.inspect}"
+ end
+ end
+
+
+ # This method removes all data from the object so that you can
+ # reuse it to create a new graph but with the same config options.
+ #
+ # graph.clear_data
+ def clear_data
+ @data = []
+ end
+
+
+ # This method processes the template with the data and
+ # config which has been set and returns the resulting SVG.
+ #
+ # This method will croak unless at least one data set has
+ # been added to the graph object.
+ #
+ # print graph.burn
+ def burn
+ raise "No data available" unless @data.size > 0
+
+ calculations if respond_to? :calculations
+
+ start_svg
+ calculate_graph_dimensions
+ @foreground = Element.new( "g" )
+ draw_graph
+ draw_titles
+ draw_legend
+ draw_data
+ @graph.add_element( @foreground )
+ style
+
+ data = ""
+ @doc.write( data, 0 )
+
+ if @config[:compress]
+ if @@__have_zlib
+ inp, out = IO.pipe
+ gz = Zlib::GzipWriter.new( out )
+ gz.write data
+ gz.close
+ data = inp.read
+ else
+ data << "";
+ end
+ end
+
+ return data
+ end
+
+
+ # Set the height of the graph box, this is the total height
+ # of the SVG box created - not the graph it self which auto
+ # scales to fix the space.
+ attr_accessor :height
+ # Set the width of the graph box, this is the total width
+ # of the SVG box created - not the graph it self which auto
+ # scales to fix the space.
+ attr_accessor :width
+ # Set the path to an external stylesheet, set to '' if
+ # you want to revert back to using the defaut internal version.
+ #
+ # To create an external stylesheet create a graph using the
+ # default internal version and copy the stylesheet section to
+ # an external file and edit from there.
+ attr_accessor :style_sheet
+ # (Bool) Show the value of each element of data on the graph
+ attr_accessor :show_data_values
+ # The point at which the Y axis starts, defaults to '0',
+ # if set to nil it will default to the minimum data value.
+ attr_accessor :min_scale_value
+ # Whether to show labels on the X axis or not, defaults
+ # to true, set to false if you want to turn them off.
+ attr_accessor :show_x_labels
+ # This puts the X labels at alternative levels so if they
+ # are long field names they will not overlap so easily.
+ # Default it false, to turn on set to true.
+ attr_accessor :stagger_x_labels
+ # This puts the Y labels at alternative levels so if they
+ # are long field names they will not overlap so easily.
+ # Default it false, to turn on set to true.
+ attr_accessor :stagger_y_labels
+ # This turns the X axis labels by 90 degrees.
+ # Default it false, to turn on set to true.
+ attr_accessor :rotate_x_labels
+ # This turns the Y axis labels by 90 degrees.
+ # Default it false, to turn on set to true.
+ attr_accessor :rotate_y_labels
+ # How many "steps" to use between displayed X axis labels,
+ # a step of one means display every label, a step of two results
+ # in every other label being displayed (label label label),
+ # a step of three results in every third label being displayed
+ # (label label label) and so on.
+ attr_accessor :step_x_labels
+ # Whether to (when taking "steps" between X axis labels) step from
+ # the first label (i.e. always include the first label) or step from
+ # the X axis origin (i.e. start with a gap if step_x_labels is greater
+ # than one).
+ attr_accessor :step_include_first_x_label
+ # Whether to show labels on the Y axis or not, defaults
+ # to true, set to false if you want to turn them off.
+ attr_accessor :show_y_labels
+ # Ensures only whole numbers are used as the scale divisions.
+ # Default it false, to turn on set to true. This has no effect if
+ # scale divisions are less than 1.
+ attr_accessor :scale_integers
+ # This defines the gap between markers on the Y axis,
+ # default is a 10th of the max_value, e.g. you will have
+ # 10 markers on the Y axis. NOTE: do not set this too
+ # low - you are limited to 999 markers, after that the
+ # graph won't generate.
+ attr_accessor :scale_divisions
+ # Whether to show the title under the X axis labels,
+ # default is false, set to true to show.
+ attr_accessor :show_x_title
+ # What the title under X axis should be, e.g. 'Months'.
+ attr_accessor :x_title
+ # Whether to show the title under the Y axis labels,
+ # default is false, set to true to show.
+ attr_accessor :show_y_title
+ # Aligns writing mode for Y axis label.
+ # Defaults to :bt (Bottom to Top).
+ # Change to :tb (Top to Bottom) to reverse.
+ attr_accessor :y_title_text_direction
+ # What the title under Y axis should be, e.g. 'Sales in thousands'.
+ attr_accessor :y_title
+ # Whether to show a title on the graph, defaults
+ # to false, set to true to show.
+ attr_accessor :show_graph_title
+ # What the title on the graph should be.
+ attr_accessor :graph_title
+ # Whether to show a subtitle on the graph, defaults
+ # to false, set to true to show.
+ attr_accessor :show_graph_subtitle
+ # What the subtitle on the graph should be.
+ attr_accessor :graph_subtitle
+ # Whether to show a key, defaults to false, set to
+ # true if you want to show it.
+ attr_accessor :key
+ # Where the key should be positioned, defaults to
+ # :right, set to :bottom if you want to move it.
+ attr_accessor :key_position
+ # Set the font size (in points) of the data point labels
+ attr_accessor :font_size
+ # Set the font size of the X axis labels
+ attr_accessor :x_label_font_size
+ # Set the font size of the X axis title
+ attr_accessor :x_title_font_size
+ # Set the font size of the Y axis labels
+ attr_accessor :y_label_font_size
+ # Set the font size of the Y axis title
+ attr_accessor :y_title_font_size
+ # Set the title font size
+ attr_accessor :title_font_size
+ # Set the subtitle font size
+ attr_accessor :subtitle_font_size
+ # Set the key font size
+ attr_accessor :key_font_size
+ # Show guidelines for the X axis
+ attr_accessor :show_x_guidelines
+ # Show guidelines for the Y axis
+ attr_accessor :show_y_guidelines
+ # Do not use CSS if set to true. Many SVG viewers do not support CSS, but
+ # not using CSS can result in larger SVGs as well as making it impossible to
+ # change colors after the chart is generated. Defaults to false.
+ attr_accessor :no_css
+ # Add popups for the data points on some graphs
+ attr_accessor :add_popups
+
+
+ protected
+
+ def sort( *arrys )
+ sort_multiple( arrys )
+ end
+
+ # Overwrite configuration options with supplied options. Used
+ # by subclasses.
+ def init_with config
+ config.each { |key, value|
+ self.send((key.to_s+"=").to_sym, value ) if respond_to? key.to_sym
+ }
+ end
+
+ attr_accessor :top_align, :top_font, :right_align, :right_font
+
+ KEY_BOX_SIZE = 12
+
+ # Override this (and call super) to change the margin to the left
+ # of the plot area. Results in @border_left being set.
+ def calculate_left_margin
+ @border_left = 7
+ # Check for Y labels
+ max_y_label_height_px = rotate_y_labels ?
+ y_label_font_size :
+ get_y_labels.max{|a,b|
+ a.to_s.length<=>b.to_s.length
+ }.to_s.length * y_label_font_size * 0.6
+ @border_left += max_y_label_height_px if show_y_labels
+ @border_left += max_y_label_height_px + 10 if stagger_y_labels
+ @border_left += y_title_font_size + 5 if show_y_title
+ end
+
+
+ # Calculates the width of the widest Y label. This will be the
+ # character height if the Y labels are rotated
+ def max_y_label_width_px
+ return font_size if rotate_y_labels
+ end
+
+
+ # Override this (and call super) to change the margin to the right
+ # of the plot area. Results in @border_right being set.
+ def calculate_right_margin
+ @border_right = 7
+ if key and key_position == :right
+ val = keys.max { |a,b| a.length <=> b.length }
+ @border_right += val.length * key_font_size * 0.6
+ @border_right += KEY_BOX_SIZE
+ @border_right += 10 # Some padding around the box
+ end
+ end
+
+
+ # Override this (and call super) to change the margin to the top
+ # of the plot area. Results in @border_top being set.
+ def calculate_top_margin
+ @border_top = 5
+ @border_top += title_font_size if show_graph_title
+ @border_top += 5
+ @border_top += subtitle_font_size if show_graph_subtitle
+ end
+
+
+ # Adds pop-up point information to a graph.
+ def add_popup( x, y, label )
+ txt_width = label.length * font_size * 0.6 + 10
+ tx = (x+txt_width > width ? x-5 : x+5)
+ t = @foreground.add_element( "text", {
+ "x" => tx.to_s,
+ "y" => (y - font_size).to_s,
+ "visibility" => "hidden",
+ })
+ t.attributes["style"] = "fill: #000; "+
+ (x+txt_width > width ? "text-anchor: end;" : "text-anchor: start;")
+ t.text = label.to_s
+ t.attributes["id"] = t.object_id.to_s
+
+ @foreground.add_element( "circle", {
+ "cx" => x.to_s,
+ "cy" => y.to_s,
+ "r" => "10",
+ "style" => "opacity: 0",
+ "onmouseover" =>
+ "document.getElementById(#{t.object_id}).setAttribute('visibility', 'visible' )",
+ "onmouseout" =>
+ "document.getElementById(#{t.object_id}).setAttribute('visibility', 'hidden' )",
+ })
+
+ end
+
+
+ # Override this (and call super) to change the margin to the bottom
+ # of the plot area. Results in @border_bottom being set.
+ def calculate_bottom_margin
+ @border_bottom = 7
+ if key and key_position == :bottom
+ @border_bottom += @data.size * (font_size + 5)
+ @border_bottom += 10
+ end
+ if show_x_labels
+ max_x_label_height_px = (not rotate_x_labels) ?
+ x_label_font_size :
+ get_x_labels.max{|a,b|
+ a.to_s.length<=>b.to_s.length
+ }.to_s.length * x_label_font_size * 0.6
+ @border_bottom += max_x_label_height_px
+ @border_bottom += max_x_label_height_px + 10 if stagger_x_labels
+ end
+ @border_bottom += x_title_font_size + 5 if show_x_title
+ end
+
+
+ # Draws the background, axis, and labels.
+ def draw_graph
+ @graph = @root.add_element( "g", {
+ "transform" => "translate( #@border_left #@border_top )"
+ })
+
+ # Background
+ @graph.add_element( "rect", {
+ "x" => "0",
+ "y" => "0",
+ "width" => @graph_width.to_s,
+ "height" => @graph_height.to_s,
+ "class" => "graphBackground"
+ })
+
+ # Axis
+ @graph.add_element( "path", {
+ "d" => "M 0 0 v#@graph_height",
+ "class" => "axis",
+ "id" => "xAxis"
+ })
+ @graph.add_element( "path", {
+ "d" => "M 0 #@graph_height h#@graph_width",
+ "class" => "axis",
+ "id" => "yAxis"
+ })
+
+ draw_x_labels
+ draw_y_labels
+ end
+
+
+ # Where in the X area the label is drawn
+ # Centered in the field, should be width/2. Start, 0.
+ def x_label_offset( width )
+ 0
+ end
+
+ def make_datapoint_text( x, y, value, style="" )
+ if show_data_values
+ @foreground.add_element( "text", {
+ "x" => x.to_s,
+ "y" => y.to_s,
+ "class" => "dataPointLabel",
+ "style" => "#{style} stroke: #fff; stroke-width: 2;"
+ }).text = value.to_s
+ text = @foreground.add_element( "text", {
+ "x" => x.to_s,
+ "y" => y.to_s,
+ "class" => "dataPointLabel"
+ })
+ text.text = value.to_s
+ text.attributes["style"] = style if style.length > 0
+ end
+ end
+
+
+ # Draws the X axis labels
+ def draw_x_labels
+ stagger = x_label_font_size + 5
+ if show_x_labels
+ label_width = field_width
+
+ count = 0
+ for label in get_x_labels
+ if step_include_first_x_label == true then
+ step = count % step_x_labels
+ else
+ step = (count + 1) % step_x_labels
+ end
+
+ if step == 0 then
+ text = @graph.add_element( "text" )
+ text.attributes["class"] = "xAxisLabels"
+ text.text = label.to_s
+
+ x = count * label_width + x_label_offset( label_width )
+ y = @graph_height + x_label_font_size + 3
+ t = 0 - (font_size / 2)
+
+ if stagger_x_labels and count % 2 == 1
+ y += stagger
+ @graph.add_element( "path", {
+ "d" => "M#{x} #@graph_height v#{stagger}",
+ "class" => "staggerGuideLine"
+ })
+ end
+
+ text.attributes["x"] = x.to_s
+ text.attributes["y"] = y.to_s
+ if rotate_x_labels
+ text.attributes["transform"] =
+ "rotate( 90 #{x} #{y-x_label_font_size} )"+
+ " translate( 0 -#{x_label_font_size/4} )"
+ text.attributes["style"] = "text-anchor: start"
+ else
+ text.attributes["style"] = "text-anchor: middle"
+ end
+ end
+
+ draw_x_guidelines( label_width, count ) if show_x_guidelines
+ count += 1
+ end
+ end
+ end
+
+
+ # Where in the Y area the label is drawn
+ # Centered in the field, should be width/2. Start, 0.
+ def y_label_offset( height )
+ 0
+ end
+
+
+ def field_width
+ (@graph_width.to_f - font_size*2*right_font) /
+ (get_x_labels.length - right_align)
+ end
+
+
+ def field_height
+ (@graph_height.to_f - font_size*2*top_font) /
+ (get_y_labels.length - top_align)
+ end
+
+
+ # Draws the Y axis labels
+ def draw_y_labels
+ stagger = y_label_font_size + 5
+ if show_y_labels
+ label_height = field_height
+
+ count = 0
+ y_offset = @graph_height + y_label_offset( label_height )
+ y_offset += font_size/1.2 unless rotate_y_labels
+ for label in get_y_labels
+ y = y_offset - (label_height * count)
+ x = rotate_y_labels ? 0 : -3
+
+ if stagger_y_labels and count % 2 == 1
+ x -= stagger
+ @graph.add_element( "path", {
+ "d" => "M#{x} #{y} h#{stagger}",
+ "class" => "staggerGuideLine"
+ })
+ end
+
+ text = @graph.add_element( "text", {
+ "x" => x.to_s,
+ "y" => y.to_s,
+ "class" => "yAxisLabels"
+ })
+ text.text = label.to_s
+ if rotate_y_labels
+ text.attributes["transform"] = "translate( -#{font_size} 0 ) "+
+ "rotate( 90 #{x} #{y} ) "
+ text.attributes["style"] = "text-anchor: middle"
+ else
+ text.attributes["y"] = (y - (y_label_font_size/2)).to_s
+ text.attributes["style"] = "text-anchor: end"
+ end
+ draw_y_guidelines( label_height, count ) if show_y_guidelines
+ count += 1
+ end
+ end
+ end
+
+
+ # Draws the X axis guidelines
+ def draw_x_guidelines( label_height, count )
+ if count != 0
+ @graph.add_element( "path", {
+ "d" => "M#{label_height*count} 0 v#@graph_height",
+ "class" => "guideLines"
+ })
+ end
+ end
+
+
+ # Draws the Y axis guidelines
+ def draw_y_guidelines( label_height, count )
+ if count != 0
+ @graph.add_element( "path", {
+ "d" => "M0 #{@graph_height-(label_height*count)} h#@graph_width",
+ "class" => "guideLines"
+ })
+ end
+ end
+
+
+ # Draws the graph title and subtitle
+ def draw_titles
+ if show_graph_title
+ @root.add_element( "text", {
+ "x" => (width / 2).to_s,
+ "y" => (title_font_size).to_s,
+ "class" => "mainTitle"
+ }).text = graph_title.to_s
+ end
+
+ if show_graph_subtitle
+ y_subtitle = show_graph_title ?
+ title_font_size + 10 :
+ subtitle_font_size
+ @root.add_element("text", {
+ "x" => (width / 2).to_s,
+ "y" => (y_subtitle).to_s,
+ "class" => "subTitle"
+ }).text = graph_subtitle.to_s
+ end
+
+ if show_x_title
+ y = @graph_height + @border_top + x_title_font_size
+ if show_x_labels
+ y += x_label_font_size + 5 if stagger_x_labels
+ y += x_label_font_size + 5
+ end
+ x = width / 2
+
+ @root.add_element("text", {
+ "x" => x.to_s,
+ "y" => y.to_s,
+ "class" => "xAxisTitle",
+ }).text = x_title.to_s
+ end
+
+ if show_y_title
+ x = y_title_font_size + (y_title_text_direction==:bt ? 3 : -3)
+ y = height / 2
+
+ text = @root.add_element("text", {
+ "x" => x.to_s,
+ "y" => y.to_s,
+ "class" => "yAxisTitle",
+ })
+ text.text = y_title.to_s
+ if y_title_text_direction == :bt
+ text.attributes["transform"] = "rotate( -90, #{x}, #{y} )"
+ else
+ text.attributes["transform"] = "rotate( 90, #{x}, #{y} )"
+ end
+ end
+ end
+
+ def keys
+ return @data.collect{ |d| d[:title] }
+ end
+
+ # Draws the legend on the graph
+ def draw_legend
+ if key
+ group = @root.add_element( "g" )
+
+ key_count = 0
+ for key_name in keys
+ y_offset = (KEY_BOX_SIZE * key_count) + (key_count * 5)
+ group.add_element( "rect", {
+ "x" => 0.to_s,
+ "y" => y_offset.to_s,
+ "width" => KEY_BOX_SIZE.to_s,
+ "height" => KEY_BOX_SIZE.to_s,
+ "class" => "key#{key_count+1}"
+ })
+ group.add_element( "text", {
+ "x" => (KEY_BOX_SIZE + 5).to_s,
+ "y" => (y_offset + KEY_BOX_SIZE).to_s,
+ "class" => "keyText"
+ }).text = key_name.to_s
+ key_count += 1
+ end
+
+ case key_position
+ when :right
+ x_offset = @graph_width + @border_left + 10
+ y_offset = @border_top + 20
+ when :bottom
+ x_offset = @border_left + 20
+ y_offset = @border_top + @graph_height + 5
+ if show_x_labels
+ max_x_label_height_px = (not rotate_x_labels) ?
+ x_label_font_size :
+ get_x_labels.max{|a,b|
+ a.to_s.length<=>b.to_s.length
+ }.to_s.length * x_label_font_size * 0.6
+ x_label_font_size
+ y_offset += max_x_label_height_px
+ y_offset += max_x_label_height_px + 5 if stagger_x_labels
+ end
+ y_offset += x_title_font_size + 5 if show_x_title
+ end
+ group.attributes["transform"] = "translate(#{x_offset} #{y_offset})"
+ end
+ end
+
+
+ private
+
+ def sort_multiple( arrys, lo=0, hi=arrys[0].length-1 )
+ if lo < hi
+ p = partition(arrys,lo,hi)
+ sort_multiple(arrys, lo, p-1)
+ sort_multiple(arrys, p+1, hi)
+ end
+ arrys
+ end
+
+ def partition( arrys, lo, hi )
+ p = arrys[0][lo]
+ l = lo
+ z = lo+1
+ while z <= hi
+ if arrys[0][z] < p
+ l += 1
+ arrys.each { |arry| arry[z], arry[l] = arry[l], arry[z] }
+ end
+ z += 1
+ end
+ arrys.each { |arry| arry[lo], arry[l] = arry[l], arry[lo] }
+ l
+ end
+
+ def style
+ if no_css
+ styles = parse_css
+ @root.elements.each("//*[@class]") { |el|
+ cl = el.attributes["class"]
+ style = styles[cl]
+ style += el.attributes["style"] if el.attributes["style"]
+ el.attributes["style"] = style
+ }
+ end
+ end
+
+ def parse_css
+ css = get_style
+ rv = {}
+ while css =~ /^(\.(\w+)(?:\s*,\s*\.\w+)*)\s*\{/m
+ names_orig = names = $1
+ css = $'
+ css =~ /([^}]+)\}/m
+ content = $1
+ css = $'
+
+ nms = []
+ while names =~ /^\s*,?\s*\.(\w+)/
+ nms << $1
+ names = $'
+ end
+
+ content = content.tr( "\n\t", " ")
+ for name in nms
+ current = rv[name]
+ current = current ? current+"; "+content : content
+ rv[name] = current.strip.squeeze(" ")
+ end
+ end
+ return rv
+ end
+
+
+ # Override and place code to add defs here
+ def add_defs defs
+ end
+
+
+ def start_svg
+ # Base document
+ @doc = Document.new
+ @doc << XMLDecl.new
+ @doc << DocType.new( %q{svg PUBLIC "-//W3C//DTD SVG 1.0//EN" } +
+ %q{"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"} )
+ if style_sheet && style_sheet != ''
+ @doc << Instruction.new( "xml-stylesheet",
+ %Q{href="#{style_sheet}" type="text/css"} )
+ end
+ @root = @doc.add_element( "svg", {
+ "width" => width.to_s,
+ "height" => height.to_s,
+ "viewBox" => "0 0 #{width} #{height}",
+ "xmlns" => "http://www.w3.org/2000/svg",
+ "xmlns:xlink" => "http://www.w3.org/1999/xlink",
+ "xmlns:a3" => "http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/",
+ "a3:scriptImplementation" => "Adobe"
+ })
+ @root << Comment.new( " "+"\\"*66 )
+ @root << Comment.new( " Created with SVG::Graph " )
+ @root << Comment.new( " SVG::Graph by Sean E. Russell " )
+ @root << Comment.new( " Losely based on SVG::TT::Graph for Perl by"+
+ " Leo Lapworth & Stephan Morgan " )
+ @root << Comment.new( " "+"/"*66 )
+
+ defs = @root.add_element( "defs" )
+ add_defs defs
+ if not(style_sheet && style_sheet != '') and !no_css
+ @root << Comment.new(" include default stylesheet if none specified ")
+ style = defs.add_element( "style", {"type"=>"text/css"} )
+ style << CData.new( get_style )
+ end
+
+ @root << Comment.new( "SVG Background" )
+ @root.add_element( "rect", {
+ "width" => width.to_s,
+ "height" => height.to_s,
+ "x" => "0",
+ "y" => "0",
+ "class" => "svgBackground"
+ })
+ end
+
+
+ def calculate_graph_dimensions
+ calculate_left_margin
+ calculate_right_margin
+ calculate_bottom_margin
+ calculate_top_margin
+ @graph_width = width - @border_left - @border_right
+ @graph_height = height - @border_top - @border_bottom
+ end
+
+ def get_style
+ return < 500,
- # :width => 300,
- # :fields => fields,
- # })
- #
- # graph.add_data({
- # :data => data_sales_02,
- # :title => 'Sales 2002',
- # })
- #
- # print "Content-type: image/svg+xml\r\n\r\n"
- # print graph.burn();
- #
- # == Description
- #
- # This object aims to allow you to easily create high quality
- # SVG pie graphs. You can either use the default style sheet
- # or supply your own. Either way there are many options which can
- # be configured to give you control over how the graph is
- # generated - with or without a key, display percent on pie chart,
- # title, subtitle etc.
- #
- # = Examples
- #
- # http://www.germane-software/repositories/public/SVG/test/single.rb
- #
- # == See also
- #
- # * SVG::Graph::Graph
- # * SVG::Graph::BarHorizontal
- # * SVG::Graph::Bar
- # * SVG::Graph::Line
- # * SVG::Graph::Plot
- # * SVG::Graph::TimeSeries
- #
- # == Author
- #
- # Sean E. Russell
- #
- # Copyright 2004 Sean E. Russell
- # This software is available under the Ruby license[LICENSE.txt]
- #
- class Pie < Graph
- # Defaults are those set by Graph::initialize, and
- # [show_shadow] true
- # [shadow_offset] 10
- # [show_data_labels] false
- # [show_actual_values] false
- # [show_percent] true
- # [show_key_data_labels] true
- # [show_key_actual_values] true
- # [show_key_percent] false
- # [expanded] false
- # [expand_greatest] false
- # [expand_gap] 10
- # [show_x_labels] false
- # [show_y_labels] false
- # [datapoint_font_size] 12
- def set_defaults
- init_with(
- :show_shadow => true,
- :shadow_offset => 10,
-
- :show_data_labels => false,
- :show_actual_values => false,
- :show_percent => true,
-
- :show_key_data_labels => true,
- :show_key_actual_values => true,
- :show_key_percent => false,
-
- :expanded => false,
- :expand_greatest => false,
- :expand_gap => 10,
-
- :show_x_labels => false,
- :show_y_labels => false,
- :datapoint_font_size => 12
- )
- @data = []
- end
-
- # Adds a data set to the graph.
- #
- # graph.add_data( { :data => [1,2,3,4] } )
- #
- # Note that the :title is not necessary. If multiple
- # data sets are added to the graph, the pie chart will
- # display the +sums+ of the data. EG:
- #
- # graph.add_data( { :data => [1,2,3,4] } )
- # graph.add_data( { :data => [2,3,5,9] } )
- #
- # is the same as:
- #
- # graph.add_data( { :data => [3,5,8,13] } )
- def add_data arg
- arg[:data].each_index {|idx|
- @data[idx] = 0 unless @data[idx]
- @data[idx] += arg[:data][idx]
- }
- end
-
- # If true, displays a drop shadow for the chart
- attr_accessor :show_shadow
- # Sets the offset of the shadow from the pie chart
- attr_accessor :shadow_offset
- # If true, display the data labels on the chart
- attr_accessor :show_data_labels
- # If true, display the actual field values in the data labels
- attr_accessor :show_actual_values
- # If true, display the percentage value of each pie wedge in the data
- # labels
- attr_accessor :show_percent
- # If true, display the labels in the key
- attr_accessor :show_key_data_labels
- # If true, display the actual value of the field in the key
- attr_accessor :show_key_actual_values
- # If true, display the percentage value of the wedges in the key
- attr_accessor :show_key_percent
- # If true, "explode" the pie (put space between the wedges)
- attr_accessor :expanded
- # If true, expand the largest pie wedge
- attr_accessor :expand_greatest
- # The amount of space between expanded wedges
- attr_accessor :expand_gap
- # The font size of the data point labels
- attr_accessor :datapoint_font_size
-
-
- protected
-
- def add_defs defs
- gradient = defs.add_element( "filter", {
- "id"=>"dropshadow",
- "width" => "1.2",
- "height" => "1.2",
- } )
- gradient.add_element( "feGaussianBlur", {
- "stdDeviation" => "4",
- "result" => "blur"
- })
- end
-
- # We don't need the graph
- def draw_graph
- end
-
- def get_y_labels
- [""]
- end
-
- def get_x_labels
- [""]
- end
-
- def keys
- total = 0
- max_value = 0
- @data.each {|x| total += x }
- percent_scale = 100.0 / total
- count = -1
- a = @config[:fields].collect{ |x|
- count += 1
- v = @data[count]
- perc = show_key_percent ? " "+(v * percent_scale).round.to_s+"%" : ""
- x + " [" + v.to_s + "]" + perc
- }
- end
-
- RADIANS = Math::PI/180
-
- def draw_data
- @graph = @root.add_element( "g" )
- background = @graph.add_element("g")
- midground = @graph.add_element("g")
-
- diameter = @graph_height > @graph_width ? @graph_width : @graph_height
- diameter -= expand_gap if expanded or expand_greatest
- diameter -= datapoint_font_size if show_data_labels
- diameter -= 10 if show_shadow
- radius = diameter / 2.0
-
- xoff = (width - diameter) / 2
- yoff = (height - @border_bottom - diameter)
- yoff -= 10 if show_shadow
- @graph.attributes['transform'] = "translate( #{xoff} #{yoff} )"
-
- wedge_text_pad = 5
- wedge_text_pad = 20 if show_percent and show_data_labels
-
- total = 0
- max_value = 0
- @data.each {|x|
- max_value = max_value < x ? x : max_value
- total += x
- }
- percent_scale = 100.0 / total
-
- prev_percent = 0
- rad_mult = 3.6 * RADIANS
- @config[:fields].each_index { |count|
- value = @data[count]
- percent = percent_scale * value
-
- radians = prev_percent * rad_mult
- x_start = radius+(Math.sin(radians) * radius)
- y_start = radius-(Math.cos(radians) * radius)
- radians = (prev_percent+percent) * rad_mult
- x_end = radius+(Math.sin(radians) * radius)
- x_end -= 0.00001 if @data.length == 1
- y_end = radius-(Math.cos(radians) * radius)
- path = "M#{radius},#{radius} L#{x_start},#{y_start} "+
- "A#{radius},#{radius} "+
- "0, #{percent >= 50 ? '1' : '0'},1, "+
- "#{x_end} #{y_end} Z"
-
-
- wedge = @foreground.add_element( "path", {
- "d" => path,
- "class" => "fill#{count+1}"
- })
-
- translate = nil
- tx = 0
- ty = 0
- half_percent = prev_percent + percent / 2
- radians = half_percent * rad_mult
-
- if show_shadow
- shadow = background.add_element( "path", {
- "d" => path,
- "filter" => "url(#dropshadow)",
- "style" => "fill: #ccc; stroke: none;"
- })
- clear = midground.add_element( "path", {
- "d" => path,
- "style" => "fill: #fff; stroke: none;"
- })
- end
-
- if expanded or (expand_greatest && value == max_value)
- tx = (Math.sin(radians) * expand_gap)
- ty = -(Math.cos(radians) * expand_gap)
- translate = "translate( #{tx} #{ty} )"
- wedge.attributes["transform"] = translate
- clear.attributes["transform"] = translate if clear
- end
-
- if show_shadow
- shadow.attributes["transform"] =
- "translate( #{tx+shadow_offset} #{ty+shadow_offset} )"
- end
-
- if show_data_labels and value != 0
- label = ""
- label += @config[:fields][count] if show_key_data_labels
- label += " ["+value.to_s+"]" if show_actual_values
- label += " "+percent.round.to_s+"%" if show_percent
-
- msr = Math.sin(radians)
- mcr = Math.cos(radians)
- tx = radius + (msr * radius)
- ty = radius -(mcr * radius)
-
- if expanded or (expand_greatest && value == max_value)
- tx += (msr * expand_gap)
- ty -= (mcr * expand_gap)
- end
- @foreground.add_element( "text", {
- "x" => tx.to_s,
- "y" => ty.to_s,
- "class" => "dataPointLabel",
- "style" => "stroke: #fff; stroke-width: 2;"
- }).text = label.to_s
- @foreground.add_element( "text", {
- "x" => tx.to_s,
- "y" => ty.to_s,
- "class" => "dataPointLabel",
- }).text = label.to_s
- end
-
- prev_percent += percent
- }
- end
-
-
- def round val, to
- up = 10**to.to_f
- (val * up).to_i / up
- end
-
-
- def get_css
- return < 500,
+ # :width => 300,
+ # :fields => fields,
+ # })
+ #
+ # graph.add_data({
+ # :data => data_sales_02,
+ # :title => 'Sales 2002',
+ # })
+ #
+ # print "Content-type: image/svg+xml\r\n\r\n"
+ # print graph.burn();
+ #
+ # == Description
+ #
+ # This object aims to allow you to easily create high quality
+ # SVG pie graphs. You can either use the default style sheet
+ # or supply your own. Either way there are many options which can
+ # be configured to give you control over how the graph is
+ # generated - with or without a key, display percent on pie chart,
+ # title, subtitle etc.
+ #
+ # = Examples
+ #
+ # http://www.germane-software/repositories/public/SVG/test/single.rb
+ #
+ # == See also
+ #
+ # * SVG::Graph::Graph
+ # * SVG::Graph::BarHorizontal
+ # * SVG::Graph::Bar
+ # * SVG::Graph::Line
+ # * SVG::Graph::Plot
+ # * SVG::Graph::TimeSeries
+ #
+ # == Author
+ #
+ # Sean E. Russell
+ #
+ # Copyright 2004 Sean E. Russell
+ # This software is available under the Ruby license[LICENSE.txt]
+ #
+ class Pie < Graph
+ # Defaults are those set by Graph::initialize, and
+ # [show_shadow] true
+ # [shadow_offset] 10
+ # [show_data_labels] false
+ # [show_actual_values] false
+ # [show_percent] true
+ # [show_key_data_labels] true
+ # [show_key_actual_values] true
+ # [show_key_percent] false
+ # [expanded] false
+ # [expand_greatest] false
+ # [expand_gap] 10
+ # [show_x_labels] false
+ # [show_y_labels] false
+ # [datapoint_font_size] 12
+ def set_defaults
+ init_with(
+ :show_shadow => true,
+ :shadow_offset => 10,
+
+ :show_data_labels => false,
+ :show_actual_values => false,
+ :show_percent => true,
+
+ :show_key_data_labels => true,
+ :show_key_actual_values => true,
+ :show_key_percent => false,
+
+ :expanded => false,
+ :expand_greatest => false,
+ :expand_gap => 10,
+
+ :show_x_labels => false,
+ :show_y_labels => false,
+ :datapoint_font_size => 12
+ )
+ @data = []
+ end
+
+ # Adds a data set to the graph.
+ #
+ # graph.add_data( { :data => [1,2,3,4] } )
+ #
+ # Note that the :title is not necessary. If multiple
+ # data sets are added to the graph, the pie chart will
+ # display the +sums+ of the data. EG:
+ #
+ # graph.add_data( { :data => [1,2,3,4] } )
+ # graph.add_data( { :data => [2,3,5,9] } )
+ #
+ # is the same as:
+ #
+ # graph.add_data( { :data => [3,5,8,13] } )
+ def add_data arg
+ arg[:data].each_index {|idx|
+ @data[idx] = 0 unless @data[idx]
+ @data[idx] += arg[:data][idx]
+ }
+ end
+
+ # If true, displays a drop shadow for the chart
+ attr_accessor :show_shadow
+ # Sets the offset of the shadow from the pie chart
+ attr_accessor :shadow_offset
+ # If true, display the data labels on the chart
+ attr_accessor :show_data_labels
+ # If true, display the actual field values in the data labels
+ attr_accessor :show_actual_values
+ # If true, display the percentage value of each pie wedge in the data
+ # labels
+ attr_accessor :show_percent
+ # If true, display the labels in the key
+ attr_accessor :show_key_data_labels
+ # If true, display the actual value of the field in the key
+ attr_accessor :show_key_actual_values
+ # If true, display the percentage value of the wedges in the key
+ attr_accessor :show_key_percent
+ # If true, "explode" the pie (put space between the wedges)
+ attr_accessor :expanded
+ # If true, expand the largest pie wedge
+ attr_accessor :expand_greatest
+ # The amount of space between expanded wedges
+ attr_accessor :expand_gap
+ # The font size of the data point labels
+ attr_accessor :datapoint_font_size
+
+
+ protected
+
+ def add_defs defs
+ gradient = defs.add_element( "filter", {
+ "id"=>"dropshadow",
+ "width" => "1.2",
+ "height" => "1.2",
+ } )
+ gradient.add_element( "feGaussianBlur", {
+ "stdDeviation" => "4",
+ "result" => "blur"
+ })
+ end
+
+ # We don't need the graph
+ def draw_graph
+ end
+
+ def get_y_labels
+ [""]
+ end
+
+ def get_x_labels
+ [""]
+ end
+
+ def keys
+ total = 0
+ max_value = 0
+ @data.each {|x| total += x }
+ percent_scale = 100.0 / total
+ count = -1
+ a = @config[:fields].collect{ |x|
+ count += 1
+ v = @data[count]
+ perc = show_key_percent ? " "+(v * percent_scale).round.to_s+"%" : ""
+ x + " [" + v.to_s + "]" + perc
+ }
+ end
+
+ RADIANS = Math::PI/180
+
+ def draw_data
+ @graph = @root.add_element( "g" )
+ background = @graph.add_element("g")
+ midground = @graph.add_element("g")
+
+ diameter = @graph_height > @graph_width ? @graph_width : @graph_height
+ diameter -= expand_gap if expanded or expand_greatest
+ diameter -= datapoint_font_size if show_data_labels
+ diameter -= 10 if show_shadow
+ radius = diameter / 2.0
+
+ xoff = (width - diameter) / 2
+ yoff = (height - @border_bottom - diameter)
+ yoff -= 10 if show_shadow
+ @graph.attributes['transform'] = "translate( #{xoff} #{yoff} )"
+
+ wedge_text_pad = 5
+ wedge_text_pad = 20 if show_percent and show_data_labels
+
+ total = 0
+ max_value = 0
+ @data.each {|x|
+ max_value = max_value < x ? x : max_value
+ total += x
+ }
+ percent_scale = 100.0 / total
+
+ prev_percent = 0
+ rad_mult = 3.6 * RADIANS
+ @config[:fields].each_index { |count|
+ value = @data[count]
+ percent = percent_scale * value
+
+ radians = prev_percent * rad_mult
+ x_start = radius+(Math.sin(radians) * radius)
+ y_start = radius-(Math.cos(radians) * radius)
+ radians = (prev_percent+percent) * rad_mult
+ x_end = radius+(Math.sin(radians) * radius)
+ x_end -= 0.00001 if @data.length == 1
+ y_end = radius-(Math.cos(radians) * radius)
+ path = "M#{radius},#{radius} L#{x_start},#{y_start} "+
+ "A#{radius},#{radius} "+
+ "0, #{percent >= 50 ? '1' : '0'},1, "+
+ "#{x_end} #{y_end} Z"
+
+
+ wedge = @foreground.add_element( "path", {
+ "d" => path,
+ "class" => "fill#{count+1}"
+ })
+
+ translate = nil
+ tx = 0
+ ty = 0
+ half_percent = prev_percent + percent / 2
+ radians = half_percent * rad_mult
+
+ if show_shadow
+ shadow = background.add_element( "path", {
+ "d" => path,
+ "filter" => "url(#dropshadow)",
+ "style" => "fill: #ccc; stroke: none;"
+ })
+ clear = midground.add_element( "path", {
+ "d" => path,
+ "style" => "fill: #fff; stroke: none;"
+ })
+ end
+
+ if expanded or (expand_greatest && value == max_value)
+ tx = (Math.sin(radians) * expand_gap)
+ ty = -(Math.cos(radians) * expand_gap)
+ translate = "translate( #{tx} #{ty} )"
+ wedge.attributes["transform"] = translate
+ clear.attributes["transform"] = translate if clear
+ end
+
+ if show_shadow
+ shadow.attributes["transform"] =
+ "translate( #{tx+shadow_offset} #{ty+shadow_offset} )"
+ end
+
+ if show_data_labels and value != 0
+ label = ""
+ label += @config[:fields][count] if show_key_data_labels
+ label += " ["+value.to_s+"]" if show_actual_values
+ label += " "+percent.round.to_s+"%" if show_percent
+
+ msr = Math.sin(radians)
+ mcr = Math.cos(radians)
+ tx = radius + (msr * radius)
+ ty = radius -(mcr * radius)
+
+ if expanded or (expand_greatest && value == max_value)
+ tx += (msr * expand_gap)
+ ty -= (mcr * expand_gap)
+ end
+ @foreground.add_element( "text", {
+ "x" => tx.to_s,
+ "y" => ty.to_s,
+ "class" => "dataPointLabel",
+ "style" => "stroke: #fff; stroke-width: 2;"
+ }).text = label.to_s
+ @foreground.add_element( "text", {
+ "x" => tx.to_s,
+ "y" => ty.to_s,
+ "class" => "dataPointLabel",
+ }).text = label.to_s
+ end
+
+ prev_percent += percent
+ }
+ end
+
+
+ def round val, to
+ up = 10**to.to_f
+ (val * up).to_i / up
+ end
+
+
+ def get_css
+ return < 500,
- # :width => 300,
- # :key => true,
- # :scale_x_integers => true,
- # :scale_y_integerrs => true,
- # })
- #
- # graph.add_data({
- # :data => projection
- # :title => 'Projected',
- # })
- #
- # graph.add_data({
- # :data => actual,
- # :title => 'Actual',
- # })
- #
- # print graph.burn()
- #
- # = Description
- #
- # Produces a graph of scalar data.
- #
- # This object aims to allow you to easily create high quality
- # SVG[http://www.w3c.org/tr/svg] scalar plots. You can either use the
- # default style sheet or supply your own. Either way there are many options
- # which can be configured to give you control over how the graph is
- # generated - with or without a key, data elements at each point, title,
- # subtitle etc.
- #
- # = Examples
- #
- # http://www.germane-software/repositories/public/SVG/test/plot.rb
- #
- # = Notes
- #
- # The default stylesheet handles upto 10 data sets, if you
- # use more you must create your own stylesheet and add the
- # additional settings for the extra data sets. You will know
- # if you go over 10 data sets as they will have no style and
- # be in black.
- #
- # Unlike the other types of charts, data sets must contain x,y pairs:
- #
- # [ 1, 2 ] # A data set with 1 point: (1,2)
- # [ 1,2, 5,6] # A data set with 2 points: (1,2) and (5,6)
- #
- # = See also
- #
- # * SVG::Graph::Graph
- # * SVG::Graph::BarHorizontal
- # * SVG::Graph::Bar
- # * SVG::Graph::Line
- # * SVG::Graph::Pie
- # * SVG::Graph::TimeSeries
- #
- # == Author
- #
- # Sean E. Russell
- #
- # Copyright 2004 Sean E. Russell
- # This software is available under the Ruby license[LICENSE.txt]
- #
- class Plot < Graph
-
- # In addition to the defaults set by Graph::initialize, sets
- # [show_data_values] true
- # [show_data_points] true
- # [area_fill] false
- # [stacked] false
- def set_defaults
- init_with(
- :show_data_values => true,
- :show_data_points => true,
- :area_fill => false,
- :stacked => false
- )
- self.top_align = self.right_align = self.top_font = self.right_font = 1
- end
-
- # Determines the scaling for the X axis divisions.
- #
- # graph.scale_x_divisions = 2
- #
- # would cause the graph to attempt to generate labels stepped by 2; EG:
- # 0,2,4,6,8...
- attr_accessor :scale_x_divisions
- # Determines the scaling for the Y axis divisions.
- #
- # graph.scale_y_divisions = 0.5
- #
- # would cause the graph to attempt to generate labels stepped by 0.5; EG:
- # 0, 0.5, 1, 1.5, 2, ...
- attr_accessor :scale_y_divisions
- # Make the X axis labels integers
- attr_accessor :scale_x_integers
- # Make the Y axis labels integers
- attr_accessor :scale_y_integers
- # Fill the area under the line
- attr_accessor :area_fill
- # Show a small circle on the graph where the line
- # goes from one point to the next.
- attr_accessor :show_data_points
- # Set the minimum value of the X axis
- attr_accessor :min_x_value
- # Set the minimum value of the Y axis
- attr_accessor :min_y_value
-
-
- # Adds data to the plot. The data must be in X,Y pairs; EG
- # [ 1, 2 ] # A data set with 1 point: (1,2)
- # [ 1,2, 5,6] # A data set with 2 points: (1,2) and (5,6)
- def add_data data
- @data = [] unless @data
-
- raise "No data provided by #{conf.inspect}" unless data[:data] and
- data[:data].kind_of? Array
- raise "Data supplied must be x,y pairs! "+
- "The data provided contained an odd set of "+
- "data points" unless data[:data].length % 2 == 0
- return if data[:data].length == 0
-
- x = []
- y = []
- data[:data].each_index {|i|
- (i%2 == 0 ? x : y) << data[:data][i]
- }
- sort( x, y )
- data[:data] = [x,y]
- @data << data
- end
-
-
- protected
-
- def keys
- @data.collect{ |x| x[:title] }
- end
-
- def calculate_left_margin
- super
- label_left = get_x_labels[0].to_s.length / 2 * font_size * 0.6
- @border_left = label_left if label_left > @border_left
- end
-
- def calculate_right_margin
- super
- label_right = get_x_labels[-1].to_s.length / 2 * font_size * 0.6
- @border_right = label_right if label_right > @border_right
- end
-
-
- X = 0
- Y = 1
- def x_range
- max_value = @data.collect{|x| x[:data][X][-1] }.max
- min_value = @data.collect{|x| x[:data][X][0] }.min
- min_value = min_value "M#{x_start} #@graph_height #{lpath} V#@graph_height Z",
- "class" => "fill#{line}"
- })
- end
-
- @graph.add_element( "path", {
- "d" => "M#{x_start} #{y_start} #{lpath}",
- "class" => "line#{line}"
- })
-
- if show_data_points || show_data_values
- x_points.each_index { |idx|
- x = (x_points[idx] - x_min) * x_step
- y = @graph_height - (y_points[idx] - y_min) * y_step
- if show_data_points
- @graph.add_element( "circle", {
- "cx" => x.to_s,
- "cy" => y.to_s,
- "r" => "2.5",
- "class" => "dataPoint#{line}"
- })
- add_popup(x, y, format( x_points[idx], y_points[idx] )) if add_popups
- end
- make_datapoint_text( x, y-6, y_points[idx] ) if show_data_values
- }
- end
- line += 1
- end
- end
-
- def format x, y
- "(#{(x * 100).to_i / 100}, #{(y * 100).to_i / 100})"
- end
-
- def get_css
- return < 500,
+ # :width => 300,
+ # :key => true,
+ # :scale_x_integers => true,
+ # :scale_y_integerrs => true,
+ # })
+ #
+ # graph.add_data({
+ # :data => projection
+ # :title => 'Projected',
+ # })
+ #
+ # graph.add_data({
+ # :data => actual,
+ # :title => 'Actual',
+ # })
+ #
+ # print graph.burn()
+ #
+ # = Description
+ #
+ # Produces a graph of scalar data.
+ #
+ # This object aims to allow you to easily create high quality
+ # SVG[http://www.w3c.org/tr/svg] scalar plots. You can either use the
+ # default style sheet or supply your own. Either way there are many options
+ # which can be configured to give you control over how the graph is
+ # generated - with or without a key, data elements at each point, title,
+ # subtitle etc.
+ #
+ # = Examples
+ #
+ # http://www.germane-software/repositories/public/SVG/test/plot.rb
+ #
+ # = Notes
+ #
+ # The default stylesheet handles upto 10 data sets, if you
+ # use more you must create your own stylesheet and add the
+ # additional settings for the extra data sets. You will know
+ # if you go over 10 data sets as they will have no style and
+ # be in black.
+ #
+ # Unlike the other types of charts, data sets must contain x,y pairs:
+ #
+ # [ 1, 2 ] # A data set with 1 point: (1,2)
+ # [ 1,2, 5,6] # A data set with 2 points: (1,2) and (5,6)
+ #
+ # = See also
+ #
+ # * SVG::Graph::Graph
+ # * SVG::Graph::BarHorizontal
+ # * SVG::Graph::Bar
+ # * SVG::Graph::Line
+ # * SVG::Graph::Pie
+ # * SVG::Graph::TimeSeries
+ #
+ # == Author
+ #
+ # Sean E. Russell
+ #
+ # Copyright 2004 Sean E. Russell
+ # This software is available under the Ruby license[LICENSE.txt]
+ #
+ class Plot < Graph
+
+ # In addition to the defaults set by Graph::initialize, sets
+ # [show_data_values] true
+ # [show_data_points] true
+ # [area_fill] false
+ # [stacked] false
+ def set_defaults
+ init_with(
+ :show_data_values => true,
+ :show_data_points => true,
+ :area_fill => false,
+ :stacked => false
+ )
+ self.top_align = self.right_align = self.top_font = self.right_font = 1
+ end
+
+ # Determines the scaling for the X axis divisions.
+ #
+ # graph.scale_x_divisions = 2
+ #
+ # would cause the graph to attempt to generate labels stepped by 2; EG:
+ # 0,2,4,6,8...
+ attr_accessor :scale_x_divisions
+ # Determines the scaling for the Y axis divisions.
+ #
+ # graph.scale_y_divisions = 0.5
+ #
+ # would cause the graph to attempt to generate labels stepped by 0.5; EG:
+ # 0, 0.5, 1, 1.5, 2, ...
+ attr_accessor :scale_y_divisions
+ # Make the X axis labels integers
+ attr_accessor :scale_x_integers
+ # Make the Y axis labels integers
+ attr_accessor :scale_y_integers
+ # Fill the area under the line
+ attr_accessor :area_fill
+ # Show a small circle on the graph where the line
+ # goes from one point to the next.
+ attr_accessor :show_data_points
+ # Set the minimum value of the X axis
+ attr_accessor :min_x_value
+ # Set the minimum value of the Y axis
+ attr_accessor :min_y_value
+
+
+ # Adds data to the plot. The data must be in X,Y pairs; EG
+ # [ 1, 2 ] # A data set with 1 point: (1,2)
+ # [ 1,2, 5,6] # A data set with 2 points: (1,2) and (5,6)
+ def add_data data
+ @data = [] unless @data
+
+ raise "No data provided by #{conf.inspect}" unless data[:data] and
+ data[:data].kind_of? Array
+ raise "Data supplied must be x,y pairs! "+
+ "The data provided contained an odd set of "+
+ "data points" unless data[:data].length % 2 == 0
+ return if data[:data].length == 0
+
+ x = []
+ y = []
+ data[:data].each_index {|i|
+ (i%2 == 0 ? x : y) << data[:data][i]
+ }
+ sort( x, y )
+ data[:data] = [x,y]
+ @data << data
+ end
+
+
+ protected
+
+ def keys
+ @data.collect{ |x| x[:title] }
+ end
+
+ def calculate_left_margin
+ super
+ label_left = get_x_labels[0].to_s.length / 2 * font_size * 0.6
+ @border_left = label_left if label_left > @border_left
+ end
+
+ def calculate_right_margin
+ super
+ label_right = get_x_labels[-1].to_s.length / 2 * font_size * 0.6
+ @border_right = label_right if label_right > @border_right
+ end
+
+
+ X = 0
+ Y = 1
+ def x_range
+ max_value = @data.collect{|x| x[:data][X][-1] }.max
+ min_value = @data.collect{|x| x[:data][X][0] }.min
+ min_value = min_value "M#{x_start} #@graph_height #{lpath} V#@graph_height Z",
+ "class" => "fill#{line}"
+ })
+ end
+
+ @graph.add_element( "path", {
+ "d" => "M#{x_start} #{y_start} #{lpath}",
+ "class" => "line#{line}"
+ })
+
+ if show_data_points || show_data_values
+ x_points.each_index { |idx|
+ x = (x_points[idx] - x_min) * x_step
+ y = @graph_height - (y_points[idx] - y_min) * y_step
+ if show_data_points
+ @graph.add_element( "circle", {
+ "cx" => x.to_s,
+ "cy" => y.to_s,
+ "r" => "2.5",
+ "class" => "dataPoint#{line}"
+ })
+ add_popup(x, y, format( x_points[idx], y_points[idx] )) if add_popups
+ end
+ make_datapoint_text( x, y-6, y_points[idx] ) if show_data_values
+ }
+ end
+ line += 1
+ end
+ end
+
+ def format x, y
+ "(#{(x * 100).to_i / 100}, #{(y * 100).to_i / 100})"
+ end
+
+ def get_css
+ return < 640,
- # :height => 480,
- # :graph_title => title,
- # :show_graph_title => true,
- # :no_css => true,
- # :key => true,
- # :scale_x_integers => true,
- # :scale_y_integers => true,
- # :min_x_value => 0,
- # :min_y_value => 0,
- # :show_data_labels => true,
- # :show_x_guidelines => true,
- # :show_x_title => true,
- # :x_title => "Time",
- # :show_y_title => true,
- # :y_title => "Ice Cream Cones",
- # :y_title_text_direction => :bt,
- # :stagger_x_labels => true,
- # :x_label_format => "%m/%d/%y",
- # })
- #
- # graph.add_data({
- # :data => projection
- # :title => 'Projected',
- # })
- #
- # graph.add_data({
- # :data => actual,
- # :title => 'Actual',
- # })
- #
- # print graph.burn()
- #
- # = Description
- #
- # Produces a graph of temporal scalar data.
- #
- # = Examples
- #
- # http://www.germane-software/repositories/public/SVG/test/timeseries.rb
- #
- # = Notes
- #
- # The default stylesheet handles upto 10 data sets, if you
- # use more you must create your own stylesheet and add the
- # additional settings for the extra data sets. You will know
- # if you go over 10 data sets as they will have no style and
- # be in black.
- #
- # Unlike the other types of charts, data sets must contain x,y pairs:
- #
- # [ "12:30", 2 ] # A data set with 1 point: ("12:30",2)
- # [ "01:00",2, "14:20",6] # A data set with 2 points: ("01:00",2) and
- # # ("14:20",6)
- #
- # Note that multiple data sets within the same chart can differ in length,
- # and that the data in the datasets needn't be in order; they will be ordered
- # by the plot along the X-axis.
- #
- # The dates must be parseable by ParseDate, but otherwise can be
- # any order of magnitude (seconds within the hour, or years)
- #
- # = See also
- #
- # * SVG::Graph::Graph
- # * SVG::Graph::BarHorizontal
- # * SVG::Graph::Bar
- # * SVG::Graph::Line
- # * SVG::Graph::Pie
- # * SVG::Graph::Plot
- #
- # == Author
- #
- # Sean E. Russell
- #
- # Copyright 2004 Sean E. Russell
- # This software is available under the Ruby license[LICENSE.txt]
- #
- class TimeSeries < Plot
- # In addition to the defaults set by Graph::initialize and
- # Plot::set_defaults, sets:
- # [x_label_format] '%Y-%m-%d %H:%M:%S'
- # [popup_format] '%Y-%m-%d %H:%M:%S'
- def set_defaults
- super
- init_with(
- #:max_time_span => '',
- :x_label_format => '%Y-%m-%d %H:%M:%S',
- :popup_format => '%Y-%m-%d %H:%M:%S'
- )
- end
-
- # The format string use do format the X axis labels.
- # See Time::strformat
- attr_accessor :x_label_format
- # Use this to set the spacing between dates on the axis. The value
- # must be of the form
- # "\d+ ?(days|weeks|months|years|hours|minutes|seconds)?"
- #
- # EG:
- #
- # graph.timescale_divisions = "2 weeks"
- #
- # will cause the chart to try to divide the X axis up into segments of
- # two week periods.
- attr_accessor :timescale_divisions
- # The formatting used for the popups. See x_label_format
- attr_accessor :popup_format
-
- # Add data to the plot.
- #
- # d1 = [ "12:30", 2 ] # A data set with 1 point: ("12:30",2)
- # d2 = [ "01:00",2, "14:20",6] # A data set with 2 points: ("01:00",2) and
- # # ("14:20",6)
- # graph.add_data(
- # :data => d1,
- # :title => 'One'
- # )
- # graph.add_data(
- # :data => d2,
- # :title => 'Two'
- # )
- #
- # Note that the data must be in time,value pairs, and that the date format
- # may be any date that is parseable by ParseDate.
- def add_data data
- @data = [] unless @data
-
- raise "No data provided by #{@data.inspect}" unless data[:data] and
- data[:data].kind_of? Array
- raise "Data supplied must be x,y pairs! "+
- "The data provided contained an odd set of "+
- "data points" unless data[:data].length % 2 == 0
- return if data[:data].length == 0
-
-
- x = []
- y = []
- data[:data].each_index {|i|
- if i%2 == 0
- arr = ParseDate.parsedate( data[:data][i] )
- t = Time.local( *arr[0,6].compact )
- x << t.to_i
- else
- y << data[:data][i]
- end
- }
- sort( x, y )
- data[:data] = [x,y]
- @data << data
- end
-
-
- protected
-
- def min_x_value=(value)
- arr = ParseDate.parsedate( value )
- @min_x_value = Time.local( *arr[0,6].compact ).to_i
- end
-
-
- def format x, y
- Time.at( x ).strftime( popup_format )
- end
-
- def get_x_labels
- get_x_values.collect { |v| Time.at(v).strftime( x_label_format ) }
- end
-
- private
- def get_x_values
- rv = []
- min, max, scale_division = x_range
- if timescale_divisions
- timescale_divisions =~ /(\d+) ?(day|week|month|year|hour|minute|second)?/
- division_units = $2 ? $2 : "day"
- amount = $1.to_i
- if amount
- step = nil
- case division_units
- when "month"
- cur = min
- while cur < max
- rv << cur
- arr = Time.at( cur ).to_a
- arr[4] += amount
- if arr[4] > 12
- arr[5] += (arr[4] / 12).to_i
- arr[4] = (arr[4] % 12)
- end
- cur = Time.local(*arr).to_i
- end
- when "year"
- cur = min
- while cur < max
- rv << cur
- arr = Time.at( cur ).to_a
- arr[5] += amount
- cur = Time.local(*arr).to_i
- end
- when "week"
- step = 7 * 24 * 60 * 60 * amount
- when "day"
- step = 24 * 60 * 60 * amount
- when "hour"
- step = 60 * 60 * amount
- when "minute"
- step = 60 * amount
- when "second"
- step = amount
- end
- min.step( max, step ) {|v| rv << v} if step
-
- return rv
- end
- end
- min.step( max, scale_division ) {|v| rv << v}
- return rv
- end
- end
- end
-end
+require 'SVG/Graph/Plot'
+require 'parsedate'
+
+module SVG
+ module Graph
+ # === For creating SVG plots of scalar temporal data
+ #
+ # = Synopsis
+ #
+ # require 'SVG/Graph/TimeSeriess'
+ #
+ # # Data sets are x,y pairs
+ # data1 = ["6/17/72", 11, "1/11/72", 7, "4/13/04 17:31", 11,
+ # "9/11/01", 9, "9/1/85", 2, "9/1/88", 1, "1/15/95", 13]
+ # data2 = ["8/1/73", 18, "3/1/77", 15, "10/1/98", 4,
+ # "5/1/02", 14, "3/1/95", 6, "8/1/91", 12, "12/1/87", 6,
+ # "5/1/84", 17, "10/1/80", 12]
+ #
+ # graph = SVG::Graph::TimeSeries.new( {
+ # :width => 640,
+ # :height => 480,
+ # :graph_title => title,
+ # :show_graph_title => true,
+ # :no_css => true,
+ # :key => true,
+ # :scale_x_integers => true,
+ # :scale_y_integers => true,
+ # :min_x_value => 0,
+ # :min_y_value => 0,
+ # :show_data_labels => true,
+ # :show_x_guidelines => true,
+ # :show_x_title => true,
+ # :x_title => "Time",
+ # :show_y_title => true,
+ # :y_title => "Ice Cream Cones",
+ # :y_title_text_direction => :bt,
+ # :stagger_x_labels => true,
+ # :x_label_format => "%m/%d/%y",
+ # })
+ #
+ # graph.add_data({
+ # :data => projection
+ # :title => 'Projected',
+ # })
+ #
+ # graph.add_data({
+ # :data => actual,
+ # :title => 'Actual',
+ # })
+ #
+ # print graph.burn()
+ #
+ # = Description
+ #
+ # Produces a graph of temporal scalar data.
+ #
+ # = Examples
+ #
+ # http://www.germane-software/repositories/public/SVG/test/timeseries.rb
+ #
+ # = Notes
+ #
+ # The default stylesheet handles upto 10 data sets, if you
+ # use more you must create your own stylesheet and add the
+ # additional settings for the extra data sets. You will know
+ # if you go over 10 data sets as they will have no style and
+ # be in black.
+ #
+ # Unlike the other types of charts, data sets must contain x,y pairs:
+ #
+ # [ "12:30", 2 ] # A data set with 1 point: ("12:30",2)
+ # [ "01:00",2, "14:20",6] # A data set with 2 points: ("01:00",2) and
+ # # ("14:20",6)
+ #
+ # Note that multiple data sets within the same chart can differ in length,
+ # and that the data in the datasets needn't be in order; they will be ordered
+ # by the plot along the X-axis.
+ #
+ # The dates must be parseable by ParseDate, but otherwise can be
+ # any order of magnitude (seconds within the hour, or years)
+ #
+ # = See also
+ #
+ # * SVG::Graph::Graph
+ # * SVG::Graph::BarHorizontal
+ # * SVG::Graph::Bar
+ # * SVG::Graph::Line
+ # * SVG::Graph::Pie
+ # * SVG::Graph::Plot
+ #
+ # == Author
+ #
+ # Sean E. Russell
+ #
+ # Copyright 2004 Sean E. Russell
+ # This software is available under the Ruby license[LICENSE.txt]
+ #
+ class TimeSeries < Plot
+ # In addition to the defaults set by Graph::initialize and
+ # Plot::set_defaults, sets:
+ # [x_label_format] '%Y-%m-%d %H:%M:%S'
+ # [popup_format] '%Y-%m-%d %H:%M:%S'
+ def set_defaults
+ super
+ init_with(
+ #:max_time_span => '',
+ :x_label_format => '%Y-%m-%d %H:%M:%S',
+ :popup_format => '%Y-%m-%d %H:%M:%S'
+ )
+ end
+
+ # The format string use do format the X axis labels.
+ # See Time::strformat
+ attr_accessor :x_label_format
+ # Use this to set the spacing between dates on the axis. The value
+ # must be of the form
+ # "\d+ ?(days|weeks|months|years|hours|minutes|seconds)?"
+ #
+ # EG:
+ #
+ # graph.timescale_divisions = "2 weeks"
+ #
+ # will cause the chart to try to divide the X axis up into segments of
+ # two week periods.
+ attr_accessor :timescale_divisions
+ # The formatting used for the popups. See x_label_format
+ attr_accessor :popup_format
+
+ # Add data to the plot.
+ #
+ # d1 = [ "12:30", 2 ] # A data set with 1 point: ("12:30",2)
+ # d2 = [ "01:00",2, "14:20",6] # A data set with 2 points: ("01:00",2) and
+ # # ("14:20",6)
+ # graph.add_data(
+ # :data => d1,
+ # :title => 'One'
+ # )
+ # graph.add_data(
+ # :data => d2,
+ # :title => 'Two'
+ # )
+ #
+ # Note that the data must be in time,value pairs, and that the date format
+ # may be any date that is parseable by ParseDate.
+ def add_data data
+ @data = [] unless @data
+
+ raise "No data provided by #{@data.inspect}" unless data[:data] and
+ data[:data].kind_of? Array
+ raise "Data supplied must be x,y pairs! "+
+ "The data provided contained an odd set of "+
+ "data points" unless data[:data].length % 2 == 0
+ return if data[:data].length == 0
+
+
+ x = []
+ y = []
+ data[:data].each_index {|i|
+ if i%2 == 0
+ arr = ParseDate.parsedate( data[:data][i] )
+ t = Time.local( *arr[0,6].compact )
+ x << t.to_i
+ else
+ y << data[:data][i]
+ end
+ }
+ sort( x, y )
+ data[:data] = [x,y]
+ @data << data
+ end
+
+
+ protected
+
+ def min_x_value=(value)
+ arr = ParseDate.parsedate( value )
+ @min_x_value = Time.local( *arr[0,6].compact ).to_i
+ end
+
+
+ def format x, y
+ Time.at( x ).strftime( popup_format )
+ end
+
+ def get_x_labels
+ get_x_values.collect { |v| Time.at(v).strftime( x_label_format ) }
+ end
+
+ private
+ def get_x_values
+ rv = []
+ min, max, scale_division = x_range
+ if timescale_divisions
+ timescale_divisions =~ /(\d+) ?(day|week|month|year|hour|minute|second)?/
+ division_units = $2 ? $2 : "day"
+ amount = $1.to_i
+ if amount
+ step = nil
+ case division_units
+ when "month"
+ cur = min
+ while cur < max
+ rv << cur
+ arr = Time.at( cur ).to_a
+ arr[4] += amount
+ if arr[4] > 12
+ arr[5] += (arr[4] / 12).to_i
+ arr[4] = (arr[4] % 12)
+ end
+ cur = Time.local(*arr).to_i
+ end
+ when "year"
+ cur = min
+ while cur < max
+ rv << cur
+ arr = Time.at( cur ).to_a
+ arr[5] += amount
+ cur = Time.local(*arr).to_i
+ end
+ when "week"
+ step = 7 * 24 * 60 * 60 * amount
+ when "day"
+ step = 24 * 60 * 60 * amount
+ when "hour"
+ step = 60 * 60 * amount
+ when "minute"
+ step = 60 * amount
+ when "second"
+ step = amount
+ end
+ min.step( max, step ) {|v| rv << v} if step
+
+ return rv
+ end
+ end
+ min.step( max, scale_division ) {|v| rv << v}
+ return rv
+ end
+ end
+ end
+end
diff --git a/lib/redmine/scm/adapters/subversion_adapter.rb b/lib/redmine/scm/adapters/subversion_adapter.rb
index 59f577e6..600f1365 100644
--- a/lib/redmine/scm/adapters/subversion_adapter.rb
+++ b/lib/redmine/scm/adapters/subversion_adapter.rb
@@ -1,282 +1,282 @@
-# Redmine - project management software
-# Copyright (C) 2006-2010 Jean-Philippe Lang
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-require 'redmine/scm/adapters/abstract_adapter'
-require 'uri'
-
-module Redmine
- module Scm
- module Adapters
- class SubversionAdapter < AbstractAdapter
-
- # SVN executable name
- SVN_BIN = Redmine::Configuration['scm_subversion_command'] || "svn"
-
- class << self
- def client_command
- @@bin ||= SVN_BIN
- end
-
- def sq_bin
- @@sq_bin ||= shell_quote(SVN_BIN)
- end
-
- def client_version
- @@client_version ||= (svn_binary_version || [])
- end
-
- def client_available
- !client_version.empty?
- end
-
- def svn_binary_version
- scm_version = scm_version_from_command_line.dup
- if scm_version.respond_to?(:force_encoding)
- scm_version.force_encoding('ASCII-8BIT')
- end
- if m = scm_version.match(%r{\A(.*?)((\d+\.)+\d+)})
- m[2].scan(%r{\d+}).collect(&:to_i)
- end
- end
-
- def scm_version_from_command_line
- shellout("#{sq_bin} --version") { |io| io.read }.to_s
- end
- end
-
- # Get info about the svn repository
- def info
- cmd = "#{self.class.sq_bin} info --xml #{target}"
- cmd << credentials_string
- info = nil
- shellout(cmd) do |io|
- output = io.read
- if output.respond_to?(:force_encoding)
- output.force_encoding('UTF-8')
- end
- begin
- doc = ActiveSupport::XmlMini.parse(output)
- #root_url = doc.elements["info/entry/repository/root"].text
- info = Info.new({:root_url => doc['info']['entry']['repository']['root']['__content__'],
- :lastrev => Revision.new({
- :identifier => doc['info']['entry']['commit']['revision'],
- :time => Time.parse(doc['info']['entry']['commit']['date']['__content__']).localtime,
- :author => (doc['info']['entry']['commit']['author'] ? doc['info']['entry']['commit']['author']['__content__'] : "")
- })
- })
- rescue
- end
- end
- return nil if $? && $?.exitstatus != 0
- info
- rescue CommandFailed
- return nil
- end
-
- # Returns an Entries collection
- # or nil if the given path doesn't exist in the repository
- def entries(path=nil, identifier=nil)
- path ||= ''
- identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD"
- entries = Entries.new
- cmd = "#{self.class.sq_bin} list --xml #{target(path)}@#{identifier}"
- cmd << credentials_string
- shellout(cmd) do |io|
- output = io.read
- if output.respond_to?(:force_encoding)
- output.force_encoding('UTF-8')
- end
- begin
- doc = ActiveSupport::XmlMini.parse(output)
- each_xml_element(doc['lists']['list'], 'entry') do |entry|
- commit = entry['commit']
- commit_date = commit['date']
- # Skip directory if there is no commit date (usually that
- # means that we don't have read access to it)
- next if entry['kind'] == 'dir' && commit_date.nil?
- name = entry['name']['__content__']
- entries << Entry.new({:name => URI.unescape(name),
- :path => ((path.empty? ? "" : "#{path}/") + name),
- :kind => entry['kind'],
- :size => ((s = entry['size']) ? s['__content__'].to_i : nil),
- :lastrev => Revision.new({
- :identifier => commit['revision'],
- :time => Time.parse(commit_date['__content__'].to_s).localtime,
- :author => ((a = commit['author']) ? a['__content__'] : nil)
- })
- })
- end
- rescue Exception => e
- logger.error("Error parsing svn output: #{e.message}")
- logger.error("Output was:\n #{output}")
- end
- end
- return nil if $? && $?.exitstatus != 0
- logger.debug("Found #{entries.size} entries in the repository for #{target(path)}") if logger && logger.debug?
- entries.sort_by_name
- end
-
- def properties(path, identifier=nil)
- # proplist xml output supported in svn 1.5.0 and higher
- return nil unless self.class.client_version_above?([1, 5, 0])
-
- identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD"
- cmd = "#{self.class.sq_bin} proplist --verbose --xml #{target(path)}@#{identifier}"
- cmd << credentials_string
- properties = {}
- shellout(cmd) do |io|
- output = io.read
- if output.respond_to?(:force_encoding)
- output.force_encoding('UTF-8')
- end
- begin
- doc = ActiveSupport::XmlMini.parse(output)
- each_xml_element(doc['properties']['target'], 'property') do |property|
- properties[ property['name'] ] = property['__content__'].to_s
- end
- rescue
- end
- end
- return nil if $? && $?.exitstatus != 0
- properties
- end
-
- def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={})
- path ||= ''
- identifier_from = (identifier_from && identifier_from.to_i > 0) ? identifier_from.to_i : "HEAD"
- identifier_to = (identifier_to && identifier_to.to_i > 0) ? identifier_to.to_i : 1
- revisions = Revisions.new
- cmd = "#{self.class.sq_bin} log --xml -r #{identifier_from}:#{identifier_to}"
- cmd << credentials_string
- cmd << " --verbose " if options[:with_paths]
- cmd << " --limit #{options[:limit].to_i}" if options[:limit]
- cmd << ' ' + target(path)
- shellout(cmd) do |io|
- output = io.read
- if output.respond_to?(:force_encoding)
- output.force_encoding('UTF-8')
- end
- begin
- doc = ActiveSupport::XmlMini.parse(output)
- each_xml_element(doc['log'], 'logentry') do |logentry|
- paths = []
- each_xml_element(logentry['paths'], 'path') do |path|
- paths << {:action => path['action'],
- :path => path['__content__'],
- :from_path => path['copyfrom-path'],
- :from_revision => path['copyfrom-rev']
- }
- end if logentry['paths'] && logentry['paths']['path']
- paths.sort! { |x,y| x[:path] <=> y[:path] }
-
- revisions << Revision.new({:identifier => logentry['revision'],
- :author => (logentry['author'] ? logentry['author']['__content__'] : ""),
- :time => Time.parse(logentry['date']['__content__'].to_s).localtime,
- :message => logentry['msg']['__content__'],
- :paths => paths
- })
- end
- rescue
- end
- end
- return nil if $? && $?.exitstatus != 0
- revisions
- end
-
- def diff(path, identifier_from, identifier_to=nil, type="inline")
- path ||= ''
- identifier_from = (identifier_from and identifier_from.to_i > 0) ? identifier_from.to_i : ''
-
- identifier_to = (identifier_to and identifier_to.to_i > 0) ? identifier_to.to_i : (identifier_from.to_i - 1)
-
- cmd = "#{self.class.sq_bin} diff -r "
- cmd << "#{identifier_to}:"
- cmd << "#{identifier_from}"
- cmd << " #{target(path)}@#{identifier_from}"
- cmd << credentials_string
- diff = []
- shellout(cmd) do |io|
- io.each_line do |line|
- diff << line
- end
- end
- return nil if $? && $?.exitstatus != 0
- diff
- end
-
- def cat(path, identifier=nil)
- identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD"
- cmd = "#{self.class.sq_bin} cat #{target(path)}@#{identifier}"
- cmd << credentials_string
- cat = nil
- shellout(cmd) do |io|
- io.binmode
- cat = io.read
- end
- return nil if $? && $?.exitstatus != 0
- cat
- end
-
- def annotate(path, identifier=nil)
- identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD"
- cmd = "#{self.class.sq_bin} blame #{target(path)}@#{identifier}"
- cmd << credentials_string
- blame = Annotate.new
- shellout(cmd) do |io|
- io.each_line do |line|
- next unless line =~ %r{^\s*(\d+)\s*(\S+)\s(.*)$}
- blame.add_line($3.rstrip, Revision.new(:identifier => $1.to_i, :author => $2.strip))
- end
- end
- return nil if $? && $?.exitstatus != 0
- blame
- end
-
- private
-
- def credentials_string
- str = ''
- str << " --username #{shell_quote(@login)}" unless @login.blank?
- str << " --password #{shell_quote(@password)}" unless @login.blank? || @password.blank?
- str << " --no-auth-cache --non-interactive"
- str
- end
-
- # Helper that iterates over the child elements of a xml node
- # MiniXml returns a hash when a single child is found or an array of hashes for multiple children
- def each_xml_element(node, name)
- if node && node[name]
- if node[name].is_a?(Hash)
- yield node[name]
- else
- node[name].each do |element|
- yield element
- end
- end
- end
- end
-
- def target(path = '')
- base = path.match(/^\//) ? root_url : url
- uri = "#{base}/#{path}"
- uri = URI.escape(URI.escape(uri), '[]')
- shell_quote(uri.gsub(/[?<>\*]/, ''))
- end
- end
- end
- end
-end
+# Redmine - project management software
+# Copyright (C) 2006-2010 Jean-Philippe Lang
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+require 'redmine/scm/adapters/abstract_adapter'
+require 'uri'
+
+module Redmine
+ module Scm
+ module Adapters
+ class SubversionAdapter < AbstractAdapter
+
+ # SVN executable name
+ SVN_BIN = Redmine::Configuration['scm_subversion_command'] || "svn"
+
+ class << self
+ def client_command
+ @@bin ||= SVN_BIN
+ end
+
+ def sq_bin
+ @@sq_bin ||= shell_quote(SVN_BIN)
+ end
+
+ def client_version
+ @@client_version ||= (svn_binary_version || [])
+ end
+
+ def client_available
+ !client_version.empty?
+ end
+
+ def svn_binary_version
+ scm_version = scm_version_from_command_line.dup
+ if scm_version.respond_to?(:force_encoding)
+ scm_version.force_encoding('ASCII-8BIT')
+ end
+ if m = scm_version.match(%r{\A(.*?)((\d+\.)+\d+)})
+ m[2].scan(%r{\d+}).collect(&:to_i)
+ end
+ end
+
+ def scm_version_from_command_line
+ shellout("#{sq_bin} --version") { |io| io.read }.to_s
+ end
+ end
+
+ # Get info about the svn repository
+ def info
+ cmd = "#{self.class.sq_bin} info --xml #{target}"
+ cmd << credentials_string
+ info = nil
+ shellout(cmd) do |io|
+ output = io.read
+ if output.respond_to?(:force_encoding)
+ output.force_encoding('UTF-8')
+ end
+ begin
+ doc = ActiveSupport::XmlMini.parse(output)
+ #root_url = doc.elements["info/entry/repository/root"].text
+ info = Info.new({:root_url => doc['info']['entry']['repository']['root']['__content__'],
+ :lastrev => Revision.new({
+ :identifier => doc['info']['entry']['commit']['revision'],
+ :time => Time.parse(doc['info']['entry']['commit']['date']['__content__']).localtime,
+ :author => (doc['info']['entry']['commit']['author'] ? doc['info']['entry']['commit']['author']['__content__'] : "")
+ })
+ })
+ rescue
+ end
+ end
+ return nil if $? && $?.exitstatus != 0
+ info
+ rescue CommandFailed
+ return nil
+ end
+
+ # Returns an Entries collection
+ # or nil if the given path doesn't exist in the repository
+ def entries(path=nil, identifier=nil)
+ path ||= ''
+ identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD"
+ entries = Entries.new
+ cmd = "#{self.class.sq_bin} list --xml #{target(path)}@#{identifier}"
+ cmd << credentials_string
+ shellout(cmd) do |io|
+ output = io.read
+ if output.respond_to?(:force_encoding)
+ output.force_encoding('UTF-8')
+ end
+ begin
+ doc = ActiveSupport::XmlMini.parse(output)
+ each_xml_element(doc['lists']['list'], 'entry') do |entry|
+ commit = entry['commit']
+ commit_date = commit['date']
+ # Skip directory if there is no commit date (usually that
+ # means that we don't have read access to it)
+ next if entry['kind'] == 'dir' && commit_date.nil?
+ name = entry['name']['__content__']
+ entries << Entry.new({:name => URI.unescape(name),
+ :path => ((path.empty? ? "" : "#{path}/") + name),
+ :kind => entry['kind'],
+ :size => ((s = entry['size']) ? s['__content__'].to_i : nil),
+ :lastrev => Revision.new({
+ :identifier => commit['revision'],
+ :time => Time.parse(commit_date['__content__'].to_s).localtime,
+ :author => ((a = commit['author']) ? a['__content__'] : nil)
+ })
+ })
+ end
+ rescue Exception => e
+ logger.error("Error parsing svn output: #{e.message}")
+ logger.error("Output was:\n #{output}")
+ end
+ end
+ return nil if $? && $?.exitstatus != 0
+ logger.debug("Found #{entries.size} entries in the repository for #{target(path)}") if logger && logger.debug?
+ entries.sort_by_name
+ end
+
+ def properties(path, identifier=nil)
+ # proplist xml output supported in svn 1.5.0 and higher
+ return nil unless self.class.client_version_above?([1, 5, 0])
+
+ identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD"
+ cmd = "#{self.class.sq_bin} proplist --verbose --xml #{target(path)}@#{identifier}"
+ cmd << credentials_string
+ properties = {}
+ shellout(cmd) do |io|
+ output = io.read
+ if output.respond_to?(:force_encoding)
+ output.force_encoding('UTF-8')
+ end
+ begin
+ doc = ActiveSupport::XmlMini.parse(output)
+ each_xml_element(doc['properties']['target'], 'property') do |property|
+ properties[ property['name'] ] = property['__content__'].to_s
+ end
+ rescue
+ end
+ end
+ return nil if $? && $?.exitstatus != 0
+ properties
+ end
+
+ def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={})
+ path ||= ''
+ identifier_from = (identifier_from && identifier_from.to_i > 0) ? identifier_from.to_i : "HEAD"
+ identifier_to = (identifier_to && identifier_to.to_i > 0) ? identifier_to.to_i : 1
+ revisions = Revisions.new
+ cmd = "#{self.class.sq_bin} log --xml -r #{identifier_from}:#{identifier_to}"
+ cmd << credentials_string
+ cmd << " --verbose " if options[:with_paths]
+ cmd << " --limit #{options[:limit].to_i}" if options[:limit]
+ cmd << ' ' + target(path)
+ shellout(cmd) do |io|
+ output = io.read
+ if output.respond_to?(:force_encoding)
+ output.force_encoding('UTF-8')
+ end
+ begin
+ doc = ActiveSupport::XmlMini.parse(output)
+ each_xml_element(doc['log'], 'logentry') do |logentry|
+ paths = []
+ each_xml_element(logentry['paths'], 'path') do |path|
+ paths << {:action => path['action'],
+ :path => path['__content__'],
+ :from_path => path['copyfrom-path'],
+ :from_revision => path['copyfrom-rev']
+ }
+ end if logentry['paths'] && logentry['paths']['path']
+ paths.sort! { |x,y| x[:path] <=> y[:path] }
+
+ revisions << Revision.new({:identifier => logentry['revision'],
+ :author => (logentry['author'] ? logentry['author']['__content__'] : ""),
+ :time => Time.parse(logentry['date']['__content__'].to_s).localtime,
+ :message => logentry['msg']['__content__'],
+ :paths => paths
+ })
+ end
+ rescue
+ end
+ end
+ return nil if $? && $?.exitstatus != 0
+ revisions
+ end
+
+ def diff(path, identifier_from, identifier_to=nil, type="inline")
+ path ||= ''
+ identifier_from = (identifier_from and identifier_from.to_i > 0) ? identifier_from.to_i : ''
+
+ identifier_to = (identifier_to and identifier_to.to_i > 0) ? identifier_to.to_i : (identifier_from.to_i - 1)
+
+ cmd = "#{self.class.sq_bin} diff -r "
+ cmd << "#{identifier_to}:"
+ cmd << "#{identifier_from}"
+ cmd << " #{target(path)}@#{identifier_from}"
+ cmd << credentials_string
+ diff = []
+ shellout(cmd) do |io|
+ io.each_line do |line|
+ diff << line
+ end
+ end
+ return nil if $? && $?.exitstatus != 0
+ diff
+ end
+
+ def cat(path, identifier=nil)
+ identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD"
+ cmd = "#{self.class.sq_bin} cat #{target(path)}@#{identifier}"
+ cmd << credentials_string
+ cat = nil
+ shellout(cmd) do |io|
+ io.binmode
+ cat = io.read
+ end
+ return nil if $? && $?.exitstatus != 0
+ cat
+ end
+
+ def annotate(path, identifier=nil)
+ identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD"
+ cmd = "#{self.class.sq_bin} blame #{target(path)}@#{identifier}"
+ cmd << credentials_string
+ blame = Annotate.new
+ shellout(cmd) do |io|
+ io.each_line do |line|
+ next unless line =~ %r{^\s*(\d+)\s*(\S+)\s(.*)$}
+ blame.add_line($3.rstrip, Revision.new(:identifier => $1.to_i, :author => $2.strip))
+ end
+ end
+ return nil if $? && $?.exitstatus != 0
+ blame
+ end
+
+ private
+
+ def credentials_string
+ str = ''
+ str << " --username #{shell_quote(@login)}" unless @login.blank?
+ str << " --password #{shell_quote(@password)}" unless @login.blank? || @password.blank?
+ str << " --no-auth-cache --non-interactive"
+ str
+ end
+
+ # Helper that iterates over the child elements of a xml node
+ # MiniXml returns a hash when a single child is found or an array of hashes for multiple children
+ def each_xml_element(node, name)
+ if node && node[name]
+ if node[name].is_a?(Hash)
+ yield node[name]
+ else
+ node[name].each do |element|
+ yield element
+ end
+ end
+ end
+ end
+
+ def target(path = '')
+ base = path.match(/^\//) ? root_url : url
+ uri = "#{base}/#{path}"
+ uri = URI.escape(URI.escape(uri), '[]')
+ shell_quote(uri.gsub(/[?<>\*]/, ''))
+ end
+ end
+ end
+ end
+end
diff --git a/lib/tasks/email.rake b/lib/tasks/email.rake
index a4036f90..40ea22c2 100644
--- a/lib/tasks/email.rake
+++ b/lib/tasks/email.rake
@@ -1,186 +1,186 @@
-# Redmine - project management software
-# Copyright (C) 2006-2008 Jean-Philippe Lang
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-namespace :redmine do
- namespace :email do
-
- desc <<-END_DESC
-Read an email from standard input.
-
-General options:
- unknown_user=ACTION how to handle emails from an unknown user
- ACTION can be one of the following values:
- ignore: email is ignored (default)
- accept: accept as anonymous user
- create: create a user account
- no_permission_check=1 disable permission checking when receiving
- the email
-
-Issue attributes control options:
- project=PROJECT identifier of the target project
- status=STATUS name of the target status
- tracker=TRACKER name of the target tracker
- category=CATEGORY name of the target category
- priority=PRIORITY name of the target priority
- allow_override=ATTRS allow email content to override attributes
- specified by previous options
- ATTRS is a comma separated list of attributes
-
-Examples:
- # No project specified. Emails MUST contain the 'Project' keyword:
- rake redmine:email:read RAILS_ENV="production" < raw_email
-
- # Fixed project and default tracker specified, but emails can override
- # both tracker and priority attributes:
- rake redmine:email:read RAILS_ENV="production" \\
- project=foo \\
- tracker=bug \\
- allow_override=tracker,priority < raw_email
-END_DESC
-
- task :read => :environment do
- options = { :issue => {} }
- %w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = ENV[a] if ENV[a] }
- options[:allow_override] = ENV['allow_override'] if ENV['allow_override']
- options[:unknown_user] = ENV['unknown_user'] if ENV['unknown_user']
- options[:no_permission_check] = ENV['no_permission_check'] if ENV['no_permission_check']
-
- MailHandler.receive(STDIN.read, options)
- end
-
- desc <<-END_DESC
-Read emails from an IMAP server.
-
-General options:
- unknown_user=ACTION how to handle emails from an unknown user
- ACTION can be one of the following values:
- ignore: email is ignored (default)
- accept: accept as anonymous user
- create: create a user account
- no_permission_check=1 disable permission checking when receiving
- the email
-
-Available IMAP options:
- host=HOST IMAP server host (default: 127.0.0.1)
- port=PORT IMAP server port (default: 143)
- ssl=SSL Use SSL? (default: false)
- username=USERNAME IMAP account
- password=PASSWORD IMAP password
- folder=FOLDER IMAP folder to read (default: INBOX)
-
-Issue attributes control options:
- project=PROJECT identifier of the target project
- status=STATUS name of the target status
- tracker=TRACKER name of the target tracker
- category=CATEGORY name of the target category
- priority=PRIORITY name of the target priority
- allow_override=ATTRS allow email content to override attributes
- specified by previous options
- ATTRS is a comma separated list of attributes
-
-Processed emails control options:
- move_on_success=MAILBOX move emails that were successfully received
- to MAILBOX instead of deleting them
- move_on_failure=MAILBOX move emails that were ignored to MAILBOX
-
-Examples:
- # No project specified. Emails MUST contain the 'Project' keyword:
-
- rake redmine:email:receive_iamp RAILS_ENV="production" \\
- host=imap.foo.bar username=redmine@example.net password=xxx
-
-
- # Fixed project and default tracker specified, but emails can override
- # both tracker and priority attributes:
-
- rake redmine:email:receive_iamp RAILS_ENV="production" \\
- host=imap.foo.bar username=redmine@example.net password=xxx ssl=1 \\
- project=foo \\
- tracker=bug \\
- allow_override=tracker,priority
-END_DESC
-
- task :receive_imap => :environment do
- imap_options = {:host => ENV['host'],
- :port => ENV['port'],
- :ssl => ENV['ssl'],
- :username => ENV['username'],
- :password => ENV['password'],
- :folder => ENV['folder'],
- :move_on_success => ENV['move_on_success'],
- :move_on_failure => ENV['move_on_failure']}
-
- options = { :issue => {} }
- %w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = ENV[a] if ENV[a] }
- options[:allow_override] = ENV['allow_override'] if ENV['allow_override']
- options[:unknown_user] = ENV['unknown_user'] if ENV['unknown_user']
- options[:no_permission_check] = ENV['no_permission_check'] if ENV['no_permission_check']
-
- Redmine::IMAP.check(imap_options, options)
- end
-
- desc <<-END_DESC
-Read emails from an POP3 server.
-
-Available POP3 options:
- host=HOST POP3 server host (default: 127.0.0.1)
- port=PORT POP3 server port (default: 110)
- username=USERNAME POP3 account
- password=PASSWORD POP3 password
- apop=1 use APOP authentication (default: false)
- delete_unprocessed=1 delete messages that could not be processed
- successfully from the server (default
- behaviour is to leave them on the server)
-
-See redmine:email:receive_imap for more options and examples.
-END_DESC
-
- task :receive_pop3 => :environment do
- pop_options = {:host => ENV['host'],
- :port => ENV['port'],
- :apop => ENV['apop'],
- :username => ENV['username'],
- :password => ENV['password'],
- :delete_unprocessed => ENV['delete_unprocessed']}
-
- options = { :issue => {} }
- %w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = ENV[a] if ENV[a] }
- options[:allow_override] = ENV['allow_override'] if ENV['allow_override']
- options[:unknown_user] = ENV['unknown_user'] if ENV['unknown_user']
- options[:no_permission_check] = ENV['no_permission_check'] if ENV['no_permission_check']
-
- Redmine::POP3.check(pop_options, options)
- end
-
- desc "Send a test email to the user with the provided login name"
- task :test, [:login] => :environment do |task, args|
- include Redmine::I18n
- abort l(:notice_email_error, "Please include the user login to test with. Example: login=example-login") if args[:login].blank?
-
- user = User.find_by_login(args[:login])
- abort l(:notice_email_error, "User #{args[:login]} not found") unless user && user.logged?
-
- ActionMailer::Base.raise_delivery_errors = true
- begin
- Mailer.deliver_test(User.current)
- puts l(:notice_email_sent, user.mail)
- rescue Exception => e
- abort l(:notice_email_error, e.message)
- end
- end
- end
-end
+# Redmine - project management software
+# Copyright (C) 2006-2008 Jean-Philippe Lang
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+namespace :redmine do
+ namespace :email do
+
+ desc <<-END_DESC
+Read an email from standard input.
+
+General options:
+ unknown_user=ACTION how to handle emails from an unknown user
+ ACTION can be one of the following values:
+ ignore: email is ignored (default)
+ accept: accept as anonymous user
+ create: create a user account
+ no_permission_check=1 disable permission checking when receiving
+ the email
+
+Issue attributes control options:
+ project=PROJECT identifier of the target project
+ status=STATUS name of the target status
+ tracker=TRACKER name of the target tracker
+ category=CATEGORY name of the target category
+ priority=PRIORITY name of the target priority
+ allow_override=ATTRS allow email content to override attributes
+ specified by previous options
+ ATTRS is a comma separated list of attributes
+
+Examples:
+ # No project specified. Emails MUST contain the 'Project' keyword:
+ rake redmine:email:read RAILS_ENV="production" < raw_email
+
+ # Fixed project and default tracker specified, but emails can override
+ # both tracker and priority attributes:
+ rake redmine:email:read RAILS_ENV="production" \\
+ project=foo \\
+ tracker=bug \\
+ allow_override=tracker,priority < raw_email
+END_DESC
+
+ task :read => :environment do
+ options = { :issue => {} }
+ %w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = ENV[a] if ENV[a] }
+ options[:allow_override] = ENV['allow_override'] if ENV['allow_override']
+ options[:unknown_user] = ENV['unknown_user'] if ENV['unknown_user']
+ options[:no_permission_check] = ENV['no_permission_check'] if ENV['no_permission_check']
+
+ MailHandler.receive(STDIN.read, options)
+ end
+
+ desc <<-END_DESC
+Read emails from an IMAP server.
+
+General options:
+ unknown_user=ACTION how to handle emails from an unknown user
+ ACTION can be one of the following values:
+ ignore: email is ignored (default)
+ accept: accept as anonymous user
+ create: create a user account
+ no_permission_check=1 disable permission checking when receiving
+ the email
+
+Available IMAP options:
+ host=HOST IMAP server host (default: 127.0.0.1)
+ port=PORT IMAP server port (default: 143)
+ ssl=SSL Use SSL? (default: false)
+ username=USERNAME IMAP account
+ password=PASSWORD IMAP password
+ folder=FOLDER IMAP folder to read (default: INBOX)
+
+Issue attributes control options:
+ project=PROJECT identifier of the target project
+ status=STATUS name of the target status
+ tracker=TRACKER name of the target tracker
+ category=CATEGORY name of the target category
+ priority=PRIORITY name of the target priority
+ allow_override=ATTRS allow email content to override attributes
+ specified by previous options
+ ATTRS is a comma separated list of attributes
+
+Processed emails control options:
+ move_on_success=MAILBOX move emails that were successfully received
+ to MAILBOX instead of deleting them
+ move_on_failure=MAILBOX move emails that were ignored to MAILBOX
+
+Examples:
+ # No project specified. Emails MUST contain the 'Project' keyword:
+
+ rake redmine:email:receive_iamp RAILS_ENV="production" \\
+ host=imap.foo.bar username=redmine@example.net password=xxx
+
+
+ # Fixed project and default tracker specified, but emails can override
+ # both tracker and priority attributes:
+
+ rake redmine:email:receive_iamp RAILS_ENV="production" \\
+ host=imap.foo.bar username=redmine@example.net password=xxx ssl=1 \\
+ project=foo \\
+ tracker=bug \\
+ allow_override=tracker,priority
+END_DESC
+
+ task :receive_imap => :environment do
+ imap_options = {:host => ENV['host'],
+ :port => ENV['port'],
+ :ssl => ENV['ssl'],
+ :username => ENV['username'],
+ :password => ENV['password'],
+ :folder => ENV['folder'],
+ :move_on_success => ENV['move_on_success'],
+ :move_on_failure => ENV['move_on_failure']}
+
+ options = { :issue => {} }
+ %w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = ENV[a] if ENV[a] }
+ options[:allow_override] = ENV['allow_override'] if ENV['allow_override']
+ options[:unknown_user] = ENV['unknown_user'] if ENV['unknown_user']
+ options[:no_permission_check] = ENV['no_permission_check'] if ENV['no_permission_check']
+
+ Redmine::IMAP.check(imap_options, options)
+ end
+
+ desc <<-END_DESC
+Read emails from an POP3 server.
+
+Available POP3 options:
+ host=HOST POP3 server host (default: 127.0.0.1)
+ port=PORT POP3 server port (default: 110)
+ username=USERNAME POP3 account
+ password=PASSWORD POP3 password
+ apop=1 use APOP authentication (default: false)
+ delete_unprocessed=1 delete messages that could not be processed
+ successfully from the server (default
+ behaviour is to leave them on the server)
+
+See redmine:email:receive_imap for more options and examples.
+END_DESC
+
+ task :receive_pop3 => :environment do
+ pop_options = {:host => ENV['host'],
+ :port => ENV['port'],
+ :apop => ENV['apop'],
+ :username => ENV['username'],
+ :password => ENV['password'],
+ :delete_unprocessed => ENV['delete_unprocessed']}
+
+ options = { :issue => {} }
+ %w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = ENV[a] if ENV[a] }
+ options[:allow_override] = ENV['allow_override'] if ENV['allow_override']
+ options[:unknown_user] = ENV['unknown_user'] if ENV['unknown_user']
+ options[:no_permission_check] = ENV['no_permission_check'] if ENV['no_permission_check']
+
+ Redmine::POP3.check(pop_options, options)
+ end
+
+ desc "Send a test email to the user with the provided login name"
+ task :test, [:login] => :environment do |task, args|
+ include Redmine::I18n
+ abort l(:notice_email_error, "Please include the user login to test with. Example: login=example-login") if args[:login].blank?
+
+ user = User.find_by_login(args[:login])
+ abort l(:notice_email_error, "User #{args[:login]} not found") unless user && user.logged?
+
+ ActionMailer::Base.raise_delivery_errors = true
+ begin
+ Mailer.deliver_test(User.current)
+ puts l(:notice_email_sent, user.mail)
+ rescue Exception => e
+ abort l(:notice_email_error, e.message)
+ end
+ end
+ end
+end
diff --git a/lib/tasks/extract_fixtures.rake b/lib/tasks/extract_fixtures.rake
index 49834e5a..d11fa7ef 100644
--- a/lib/tasks/extract_fixtures.rake
+++ b/lib/tasks/extract_fixtures.rake
@@ -1,24 +1,24 @@
-desc 'Create YAML test fixtures from data in an existing database.
-Defaults to development database. Set RAILS_ENV to override.'
-
-task :extract_fixtures => :environment do
- sql = "SELECT * FROM %s"
- skip_tables = ["schema_info"]
- ActiveRecord::Base.establish_connection
- (ActiveRecord::Base.connection.tables - skip_tables).each do |table_name|
- i = "000"
- File.open("#{RAILS_ROOT}/#{table_name}.yml", 'w' ) do |file|
- data = ActiveRecord::Base.connection.select_all(sql % table_name)
- file.write data.inject({}) { |hash, record|
-
- # cast extracted values
- ActiveRecord::Base.connection.columns(table_name).each { |col|
- record[col.name] = col.type_cast(record[col.name]) if record[col.name]
- }
-
- hash["#{table_name}_#{i.succ!}"] = record
- hash
- }.to_yaml
- end
- end
+desc 'Create YAML test fixtures from data in an existing database.
+Defaults to development database. Set RAILS_ENV to override.'
+
+task :extract_fixtures => :environment do
+ sql = "SELECT * FROM %s"
+ skip_tables = ["schema_info"]
+ ActiveRecord::Base.establish_connection
+ (ActiveRecord::Base.connection.tables - skip_tables).each do |table_name|
+ i = "000"
+ File.open("#{RAILS_ROOT}/#{table_name}.yml", 'w' ) do |file|
+ data = ActiveRecord::Base.connection.select_all(sql % table_name)
+ file.write data.inject({}) { |hash, record|
+
+ # cast extracted values
+ ActiveRecord::Base.connection.columns(table_name).each { |col|
+ record[col.name] = col.type_cast(record[col.name]) if record[col.name]
+ }
+
+ hash["#{table_name}_#{i.succ!}"] = record
+ hash
+ }.to_yaml
+ end
+ end
end
\ No newline at end of file
diff --git a/lib/tasks/fetch_changesets.rake b/lib/tasks/fetch_changesets.rake
index 681032bd..0a64ec72 100644
--- a/lib/tasks/fetch_changesets.rake
+++ b/lib/tasks/fetch_changesets.rake
@@ -1,24 +1,24 @@
-# redMine - project management software
-# Copyright (C) 2006-2008 Jean-Philippe Lang
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-desc 'Fetch changesets from the repositories'
-
-namespace :redmine do
- task :fetch_changesets => :environment do
- Repository.fetch_changesets
- end
-end
+# redMine - project management software
+# Copyright (C) 2006-2008 Jean-Philippe Lang
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+desc 'Fetch changesets from the repositories'
+
+namespace :redmine do
+ task :fetch_changesets => :environment do
+ Repository.fetch_changesets
+ end
+end
diff --git a/lib/tasks/load_default_data.rake b/lib/tasks/load_default_data.rake
index 0aa7ab74..7c10f424 100644
--- a/lib/tasks/load_default_data.rake
+++ b/lib/tasks/load_default_data.rake
@@ -1,35 +1,35 @@
-desc 'Load Redmine default configuration data. Language is chosen interactively or by setting REDMINE_LANG environment variable.'
-
-namespace :redmine do
- task :load_default_data => :environment do
- include Redmine::I18n
- set_language_if_valid('en')
-
- envlang = ENV['REDMINE_LANG']
- if !envlang || !set_language_if_valid(envlang)
- puts
- while true
- print "Select language: "
- print valid_languages.collect(&:to_s).sort.join(", ")
- print " [#{current_language}] "
- STDOUT.flush
- lang = STDIN.gets.chomp!
- break if lang.empty?
- break if set_language_if_valid(lang)
- puts "Unknown language!"
- end
- STDOUT.flush
- puts "===================================="
- end
-
- begin
- Redmine::DefaultData::Loader.load(current_language)
- puts "Default configuration data loaded."
- rescue Redmine::DefaultData::DataAlreadyLoaded => error
- puts error
- rescue => error
- puts "Error: " + error
- puts "Default configuration data was not loaded."
- end
- end
-end
+desc 'Load Redmine default configuration data. Language is chosen interactively or by setting REDMINE_LANG environment variable.'
+
+namespace :redmine do
+ task :load_default_data => :environment do
+ include Redmine::I18n
+ set_language_if_valid('en')
+
+ envlang = ENV['REDMINE_LANG']
+ if !envlang || !set_language_if_valid(envlang)
+ puts
+ while true
+ print "Select language: "
+ print valid_languages.collect(&:to_s).sort.join(", ")
+ print " [#{current_language}] "
+ STDOUT.flush
+ lang = STDIN.gets.chomp!
+ break if lang.empty?
+ break if set_language_if_valid(lang)
+ puts "Unknown language!"
+ end
+ STDOUT.flush
+ puts "===================================="
+ end
+
+ begin
+ Redmine::DefaultData::Loader.load(current_language)
+ puts "Default configuration data loaded."
+ rescue Redmine::DefaultData::DataAlreadyLoaded => error
+ puts error
+ rescue => error
+ puts "Error: " + error
+ puts "Default configuration data was not loaded."
+ end
+ end
+end
diff --git a/lib/tasks/migrate_from_mantis.rake b/lib/tasks/migrate_from_mantis.rake
index c45ce68e..e74b8797 100644
--- a/lib/tasks/migrate_from_mantis.rake
+++ b/lib/tasks/migrate_from_mantis.rake
@@ -1,512 +1,512 @@
-# redMine - project management software
-# Copyright (C) 2006-2007 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.
-
-desc 'Mantis migration script'
-
-require 'active_record'
-require 'iconv'
-require 'pp'
-
-namespace :redmine do
-task :migrate_from_mantis => :environment do
-
- module MantisMigrate
-
- DEFAULT_STATUS = IssueStatus.default
- assigned_status = IssueStatus.find_by_position(2)
- resolved_status = IssueStatus.find_by_position(3)
- feedback_status = IssueStatus.find_by_position(4)
- closed_status = IssueStatus.find :first, :conditions => { :is_closed => true }
- STATUS_MAPPING = {10 => DEFAULT_STATUS, # new
- 20 => feedback_status, # feedback
- 30 => DEFAULT_STATUS, # acknowledged
- 40 => DEFAULT_STATUS, # confirmed
- 50 => assigned_status, # assigned
- 80 => resolved_status, # resolved
- 90 => closed_status # closed
- }
-
- priorities = IssuePriority.all
- DEFAULT_PRIORITY = priorities[2]
- PRIORITY_MAPPING = {10 => priorities[1], # none
- 20 => priorities[1], # low
- 30 => priorities[2], # normal
- 40 => priorities[3], # high
- 50 => priorities[4], # urgent
- 60 => priorities[5] # immediate
- }
-
- TRACKER_BUG = Tracker.find_by_position(1)
- TRACKER_FEATURE = Tracker.find_by_position(2)
-
- roles = Role.find(:all, :conditions => {:builtin => 0}, :order => 'position ASC')
- manager_role = roles[0]
- developer_role = roles[1]
- DEFAULT_ROLE = roles.last
- ROLE_MAPPING = {10 => DEFAULT_ROLE, # viewer
- 25 => DEFAULT_ROLE, # reporter
- 40 => DEFAULT_ROLE, # updater
- 55 => developer_role, # developer
- 70 => manager_role, # manager
- 90 => manager_role # administrator
- }
-
- CUSTOM_FIELD_TYPE_MAPPING = {0 => 'string', # String
- 1 => 'int', # Numeric
- 2 => 'int', # Float
- 3 => 'list', # Enumeration
- 4 => 'string', # Email
- 5 => 'bool', # Checkbox
- 6 => 'list', # List
- 7 => 'list', # Multiselection list
- 8 => 'date', # Date
- }
-
- RELATION_TYPE_MAPPING = {1 => IssueRelation::TYPE_RELATES, # related to
- 2 => IssueRelation::TYPE_RELATES, # parent of
- 3 => IssueRelation::TYPE_RELATES, # child of
- 0 => IssueRelation::TYPE_DUPLICATES, # duplicate of
- 4 => IssueRelation::TYPE_DUPLICATES # has duplicate
- }
-
- class MantisUser < ActiveRecord::Base
- set_table_name :mantis_user_table
-
- def firstname
- @firstname = realname.blank? ? username : realname.split.first[0..29]
- @firstname
- end
-
- def lastname
- @lastname = realname.blank? ? '-' : realname.split[1..-1].join(' ')[0..29]
- @lastname = '-' if @lastname.blank?
- @lastname
- end
-
- def email
- if read_attribute(:email).match(/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i) &&
- !User.find_by_mail(read_attribute(:email))
- @email = read_attribute(:email)
- else
- @email = "#{username}@foo.bar"
- end
- end
-
- def username
- read_attribute(:username)[0..29].gsub(/[^a-zA-Z0-9_\-@\.]/, '-')
- end
- end
-
- class MantisProject < ActiveRecord::Base
- set_table_name :mantis_project_table
- has_many :versions, :class_name => "MantisVersion", :foreign_key => :project_id
- has_many :categories, :class_name => "MantisCategory", :foreign_key => :project_id
- has_many :news, :class_name => "MantisNews", :foreign_key => :project_id
- has_many :members, :class_name => "MantisProjectUser", :foreign_key => :project_id
-
- def identifier
- read_attribute(:name).gsub(/[^a-z0-9\-]+/, '-').slice(0, Project::IDENTIFIER_MAX_LENGTH)
- end
- end
-
- class MantisVersion < ActiveRecord::Base
- set_table_name :mantis_project_version_table
-
- def version
- read_attribute(:version)[0..29]
- end
-
- def description
- read_attribute(:description)[0..254]
- end
- end
-
- class MantisCategory < ActiveRecord::Base
- set_table_name :mantis_project_category_table
- end
-
- class MantisProjectUser < ActiveRecord::Base
- set_table_name :mantis_project_user_list_table
- end
-
- class MantisBug < ActiveRecord::Base
- set_table_name :mantis_bug_table
- belongs_to :bug_text, :class_name => "MantisBugText", :foreign_key => :bug_text_id
- has_many :bug_notes, :class_name => "MantisBugNote", :foreign_key => :bug_id
- has_many :bug_files, :class_name => "MantisBugFile", :foreign_key => :bug_id
- has_many :bug_monitors, :class_name => "MantisBugMonitor", :foreign_key => :bug_id
- end
-
- class MantisBugText < ActiveRecord::Base
- set_table_name :mantis_bug_text_table
-
- # Adds Mantis steps_to_reproduce and additional_information fields
- # to description if any
- def full_description
- full_description = description
- full_description += "\n\n*Steps to reproduce:*\n\n#{steps_to_reproduce}" unless steps_to_reproduce.blank?
- full_description += "\n\n*Additional information:*\n\n#{additional_information}" unless additional_information.blank?
- full_description
- end
- end
-
- class MantisBugNote < ActiveRecord::Base
- set_table_name :mantis_bugnote_table
- belongs_to :bug, :class_name => "MantisBug", :foreign_key => :bug_id
- belongs_to :bug_note_text, :class_name => "MantisBugNoteText", :foreign_key => :bugnote_text_id
- end
-
- class MantisBugNoteText < ActiveRecord::Base
- set_table_name :mantis_bugnote_text_table
- end
-
- class MantisBugFile < ActiveRecord::Base
- set_table_name :mantis_bug_file_table
-
- def size
- filesize
- end
-
- def original_filename
- MantisMigrate.encode(filename)
- end
-
- def content_type
- file_type
- end
-
- def read(*args)
- if @read_finished
- nil
- else
- @read_finished = true
- content
- end
- end
- end
-
- class MantisBugRelationship < ActiveRecord::Base
- set_table_name :mantis_bug_relationship_table
- end
-
- class MantisBugMonitor < ActiveRecord::Base
- set_table_name :mantis_bug_monitor_table
- end
-
- class MantisNews < ActiveRecord::Base
- set_table_name :mantis_news_table
- end
-
- class MantisCustomField < ActiveRecord::Base
- set_table_name :mantis_custom_field_table
- set_inheritance_column :none
- has_many :values, :class_name => "MantisCustomFieldString", :foreign_key => :field_id
- has_many :projects, :class_name => "MantisCustomFieldProject", :foreign_key => :field_id
-
- def format
- read_attribute :type
- end
-
- def name
- read_attribute(:name)[0..29]
- end
- end
-
- class MantisCustomFieldProject < ActiveRecord::Base
- set_table_name :mantis_custom_field_project_table
- end
-
- class MantisCustomFieldString < ActiveRecord::Base
- set_table_name :mantis_custom_field_string_table
- end
-
-
- def self.migrate
-
- # Users
- print "Migrating users"
- User.delete_all "login <> 'admin'"
- users_map = {}
- users_migrated = 0
- MantisUser.find(:all).each do |user|
- u = User.new :firstname => encode(user.firstname),
- :lastname => encode(user.lastname),
- :mail => user.email,
- :last_login_on => user.last_visit
- u.login = user.username
- u.password = 'mantis'
- u.status = User::STATUS_LOCKED if user.enabled != 1
- u.admin = true if user.access_level == 90
- next unless u.save!
- users_migrated += 1
- users_map[user.id] = u.id
- print '.'
- end
- puts
-
- # Projects
- print "Migrating projects"
- Project.destroy_all
- projects_map = {}
- versions_map = {}
- categories_map = {}
- MantisProject.find(:all).each do |project|
- p = Project.new :name => encode(project.name),
- :description => encode(project.description)
- p.identifier = project.identifier
- next unless p.save
- projects_map[project.id] = p.id
- p.enabled_module_names = ['issue_tracking', 'news', 'wiki']
- p.trackers << TRACKER_BUG
- p.trackers << TRACKER_FEATURE
- print '.'
-
- # Project members
- project.members.each do |member|
- m = Member.new :user => User.find_by_id(users_map[member.user_id]),
- :roles => [ROLE_MAPPING[member.access_level] || DEFAULT_ROLE]
- m.project = p
- m.save
- end
-
- # Project versions
- project.versions.each do |version|
- v = Version.new :name => encode(version.version),
- :description => encode(version.description),
- :effective_date => (version.date_order ? version.date_order.to_date : nil)
- v.project = p
- v.save
- versions_map[version.id] = v.id
- end
-
- # Project categories
- project.categories.each do |category|
- g = IssueCategory.new :name => category.category[0,30]
- g.project = p
- g.save
- categories_map[category.category] = g.id
- end
- end
- puts
-
- # Bugs
- print "Migrating bugs"
- Issue.destroy_all
- issues_map = {}
- keep_bug_ids = (Issue.count == 0)
- MantisBug.find_each(:batch_size => 200) do |bug|
- next unless projects_map[bug.project_id] && users_map[bug.reporter_id]
- i = Issue.new :project_id => projects_map[bug.project_id],
- :subject => encode(bug.summary),
- :description => encode(bug.bug_text.full_description),
- :priority => PRIORITY_MAPPING[bug.priority] || DEFAULT_PRIORITY,
- :created_on => bug.date_submitted,
- :updated_on => bug.last_updated
- i.author = User.find_by_id(users_map[bug.reporter_id])
- i.category = IssueCategory.find_by_project_id_and_name(i.project_id, bug.category[0,30]) unless bug.category.blank?
- i.fixed_version = Version.find_by_project_id_and_name(i.project_id, bug.fixed_in_version) unless bug.fixed_in_version.blank?
- i.status = STATUS_MAPPING[bug.status] || DEFAULT_STATUS
- i.tracker = (bug.severity == 10 ? TRACKER_FEATURE : TRACKER_BUG)
- i.id = bug.id if keep_bug_ids
- next unless i.save
- issues_map[bug.id] = i.id
- print '.'
- STDOUT.flush
-
- # Assignee
- # Redmine checks that the assignee is a project member
- if (bug.handler_id && users_map[bug.handler_id])
- i.assigned_to = User.find_by_id(users_map[bug.handler_id])
- i.save_with_validation(false)
- end
-
- # Bug notes
- bug.bug_notes.each do |note|
- next unless users_map[note.reporter_id]
- n = Journal.new :notes => encode(note.bug_note_text.note),
- :created_on => note.date_submitted
- n.user = User.find_by_id(users_map[note.reporter_id])
- n.journalized = i
- n.save
- end
-
- # Bug files
- bug.bug_files.each do |file|
- a = Attachment.new :created_on => file.date_added
- a.file = file
- a.author = User.find :first
- a.container = i
- a.save
- end
-
- # Bug monitors
- bug.bug_monitors.each do |monitor|
- next unless users_map[monitor.user_id]
- i.add_watcher(User.find_by_id(users_map[monitor.user_id]))
- end
- end
-
- # update issue id sequence if needed (postgresql)
- Issue.connection.reset_pk_sequence!(Issue.table_name) if Issue.connection.respond_to?('reset_pk_sequence!')
- puts
-
- # Bug relationships
- print "Migrating bug relations"
- MantisBugRelationship.find(:all).each do |relation|
- next unless issues_map[relation.source_bug_id] && issues_map[relation.destination_bug_id]
- r = IssueRelation.new :relation_type => RELATION_TYPE_MAPPING[relation.relationship_type]
- r.issue_from = Issue.find_by_id(issues_map[relation.source_bug_id])
- r.issue_to = Issue.find_by_id(issues_map[relation.destination_bug_id])
- pp r unless r.save
- print '.'
- STDOUT.flush
- end
- puts
-
- # News
- print "Migrating news"
- News.destroy_all
- MantisNews.find(:all, :conditions => 'project_id > 0').each do |news|
- next unless projects_map[news.project_id]
- n = News.new :project_id => projects_map[news.project_id],
- :title => encode(news.headline[0..59]),
- :description => encode(news.body),
- :created_on => news.date_posted
- n.author = User.find_by_id(users_map[news.poster_id])
- n.save
- print '.'
- STDOUT.flush
- end
- puts
-
- # Custom fields
- print "Migrating custom fields"
- IssueCustomField.destroy_all
- MantisCustomField.find(:all).each do |field|
- f = IssueCustomField.new :name => field.name[0..29],
- :field_format => CUSTOM_FIELD_TYPE_MAPPING[field.format],
- :min_length => field.length_min,
- :max_length => field.length_max,
- :regexp => field.valid_regexp,
- :possible_values => field.possible_values.split('|'),
- :is_required => field.require_report?
- next unless f.save
- print '.'
- STDOUT.flush
- # Trackers association
- f.trackers = Tracker.find :all
-
- # Projects association
- field.projects.each do |project|
- f.projects << Project.find_by_id(projects_map[project.project_id]) if projects_map[project.project_id]
- end
-
- # Values
- field.values.each do |value|
- v = CustomValue.new :custom_field_id => f.id,
- :value => value.value
- v.customized = Issue.find_by_id(issues_map[value.bug_id]) if issues_map[value.bug_id]
- v.save
- end unless f.new_record?
- end
- puts
-
- puts
- puts "Users: #{users_migrated}/#{MantisUser.count}"
- puts "Projects: #{Project.count}/#{MantisProject.count}"
- puts "Memberships: #{Member.count}/#{MantisProjectUser.count}"
- puts "Versions: #{Version.count}/#{MantisVersion.count}"
- puts "Categories: #{IssueCategory.count}/#{MantisCategory.count}"
- puts "Bugs: #{Issue.count}/#{MantisBug.count}"
- puts "Bug notes: #{Journal.count}/#{MantisBugNote.count}"
- puts "Bug files: #{Attachment.count}/#{MantisBugFile.count}"
- puts "Bug relations: #{IssueRelation.count}/#{MantisBugRelationship.count}"
- puts "Bug monitors: #{Watcher.count}/#{MantisBugMonitor.count}"
- puts "News: #{News.count}/#{MantisNews.count}"
- puts "Custom fields: #{IssueCustomField.count}/#{MantisCustomField.count}"
- end
-
- def self.encoding(charset)
- @ic = Iconv.new('UTF-8', charset)
- rescue Iconv::InvalidEncoding
- return false
- end
-
- def self.establish_connection(params)
- constants.each do |const|
- klass = const_get(const)
- next unless klass.respond_to? 'establish_connection'
- klass.establish_connection params
- end
- end
-
- def self.encode(text)
- @ic.iconv text
- rescue
- text
- end
- end
-
- puts
- if Redmine::DefaultData::Loader.no_data?
- puts "Redmine configuration need to be loaded before importing data."
- puts "Please, run this first:"
- puts
- puts " rake redmine:load_default_data RAILS_ENV=\"#{ENV['RAILS_ENV']}\""
- exit
- end
-
- puts "WARNING: Your Redmine data will be deleted during this process."
- print "Are you sure you want to continue ? [y/N] "
- STDOUT.flush
- break unless STDIN.gets.match(/^y$/i)
-
- # Default Mantis database settings
- db_params = {:adapter => 'mysql',
- :database => 'bugtracker',
- :host => 'localhost',
- :username => 'root',
- :password => '' }
-
- puts
- puts "Please enter settings for your Mantis database"
- [:adapter, :host, :database, :username, :password].each do |param|
- print "#{param} [#{db_params[param]}]: "
- value = STDIN.gets.chomp!
- db_params[param] = value unless value.blank?
- end
-
- while true
- print "encoding [UTF-8]: "
- STDOUT.flush
- encoding = STDIN.gets.chomp!
- encoding = 'UTF-8' if encoding.blank?
- break if MantisMigrate.encoding encoding
- puts "Invalid encoding!"
- end
- puts
-
- # Make sure bugs can refer bugs in other projects
- Setting.cross_project_issue_relations = 1 if Setting.respond_to? 'cross_project_issue_relations'
-
- # Turn off email notifications
- Setting.notified_events = []
-
- MantisMigrate.establish_connection db_params
- MantisMigrate.migrate
-end
-end
+# redMine - project management software
+# Copyright (C) 2006-2007 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.
+
+desc 'Mantis migration script'
+
+require 'active_record'
+require 'iconv'
+require 'pp'
+
+namespace :redmine do
+task :migrate_from_mantis => :environment do
+
+ module MantisMigrate
+
+ DEFAULT_STATUS = IssueStatus.default
+ assigned_status = IssueStatus.find_by_position(2)
+ resolved_status = IssueStatus.find_by_position(3)
+ feedback_status = IssueStatus.find_by_position(4)
+ closed_status = IssueStatus.find :first, :conditions => { :is_closed => true }
+ STATUS_MAPPING = {10 => DEFAULT_STATUS, # new
+ 20 => feedback_status, # feedback
+ 30 => DEFAULT_STATUS, # acknowledged
+ 40 => DEFAULT_STATUS, # confirmed
+ 50 => assigned_status, # assigned
+ 80 => resolved_status, # resolved
+ 90 => closed_status # closed
+ }
+
+ priorities = IssuePriority.all
+ DEFAULT_PRIORITY = priorities[2]
+ PRIORITY_MAPPING = {10 => priorities[1], # none
+ 20 => priorities[1], # low
+ 30 => priorities[2], # normal
+ 40 => priorities[3], # high
+ 50 => priorities[4], # urgent
+ 60 => priorities[5] # immediate
+ }
+
+ TRACKER_BUG = Tracker.find_by_position(1)
+ TRACKER_FEATURE = Tracker.find_by_position(2)
+
+ roles = Role.find(:all, :conditions => {:builtin => 0}, :order => 'position ASC')
+ manager_role = roles[0]
+ developer_role = roles[1]
+ DEFAULT_ROLE = roles.last
+ ROLE_MAPPING = {10 => DEFAULT_ROLE, # viewer
+ 25 => DEFAULT_ROLE, # reporter
+ 40 => DEFAULT_ROLE, # updater
+ 55 => developer_role, # developer
+ 70 => manager_role, # manager
+ 90 => manager_role # administrator
+ }
+
+ CUSTOM_FIELD_TYPE_MAPPING = {0 => 'string', # String
+ 1 => 'int', # Numeric
+ 2 => 'int', # Float
+ 3 => 'list', # Enumeration
+ 4 => 'string', # Email
+ 5 => 'bool', # Checkbox
+ 6 => 'list', # List
+ 7 => 'list', # Multiselection list
+ 8 => 'date', # Date
+ }
+
+ RELATION_TYPE_MAPPING = {1 => IssueRelation::TYPE_RELATES, # related to
+ 2 => IssueRelation::TYPE_RELATES, # parent of
+ 3 => IssueRelation::TYPE_RELATES, # child of
+ 0 => IssueRelation::TYPE_DUPLICATES, # duplicate of
+ 4 => IssueRelation::TYPE_DUPLICATES # has duplicate
+ }
+
+ class MantisUser < ActiveRecord::Base
+ set_table_name :mantis_user_table
+
+ def firstname
+ @firstname = realname.blank? ? username : realname.split.first[0..29]
+ @firstname
+ end
+
+ def lastname
+ @lastname = realname.blank? ? '-' : realname.split[1..-1].join(' ')[0..29]
+ @lastname = '-' if @lastname.blank?
+ @lastname
+ end
+
+ def email
+ if read_attribute(:email).match(/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i) &&
+ !User.find_by_mail(read_attribute(:email))
+ @email = read_attribute(:email)
+ else
+ @email = "#{username}@foo.bar"
+ end
+ end
+
+ def username
+ read_attribute(:username)[0..29].gsub(/[^a-zA-Z0-9_\-@\.]/, '-')
+ end
+ end
+
+ class MantisProject < ActiveRecord::Base
+ set_table_name :mantis_project_table
+ has_many :versions, :class_name => "MantisVersion", :foreign_key => :project_id
+ has_many :categories, :class_name => "MantisCategory", :foreign_key => :project_id
+ has_many :news, :class_name => "MantisNews", :foreign_key => :project_id
+ has_many :members, :class_name => "MantisProjectUser", :foreign_key => :project_id
+
+ def identifier
+ read_attribute(:name).gsub(/[^a-z0-9\-]+/, '-').slice(0, Project::IDENTIFIER_MAX_LENGTH)
+ end
+ end
+
+ class MantisVersion < ActiveRecord::Base
+ set_table_name :mantis_project_version_table
+
+ def version
+ read_attribute(:version)[0..29]
+ end
+
+ def description
+ read_attribute(:description)[0..254]
+ end
+ end
+
+ class MantisCategory < ActiveRecord::Base
+ set_table_name :mantis_project_category_table
+ end
+
+ class MantisProjectUser < ActiveRecord::Base
+ set_table_name :mantis_project_user_list_table
+ end
+
+ class MantisBug < ActiveRecord::Base
+ set_table_name :mantis_bug_table
+ belongs_to :bug_text, :class_name => "MantisBugText", :foreign_key => :bug_text_id
+ has_many :bug_notes, :class_name => "MantisBugNote", :foreign_key => :bug_id
+ has_many :bug_files, :class_name => "MantisBugFile", :foreign_key => :bug_id
+ has_many :bug_monitors, :class_name => "MantisBugMonitor", :foreign_key => :bug_id
+ end
+
+ class MantisBugText < ActiveRecord::Base
+ set_table_name :mantis_bug_text_table
+
+ # Adds Mantis steps_to_reproduce and additional_information fields
+ # to description if any
+ def full_description
+ full_description = description
+ full_description += "\n\n*Steps to reproduce:*\n\n#{steps_to_reproduce}" unless steps_to_reproduce.blank?
+ full_description += "\n\n*Additional information:*\n\n#{additional_information}" unless additional_information.blank?
+ full_description
+ end
+ end
+
+ class MantisBugNote < ActiveRecord::Base
+ set_table_name :mantis_bugnote_table
+ belongs_to :bug, :class_name => "MantisBug", :foreign_key => :bug_id
+ belongs_to :bug_note_text, :class_name => "MantisBugNoteText", :foreign_key => :bugnote_text_id
+ end
+
+ class MantisBugNoteText < ActiveRecord::Base
+ set_table_name :mantis_bugnote_text_table
+ end
+
+ class MantisBugFile < ActiveRecord::Base
+ set_table_name :mantis_bug_file_table
+
+ def size
+ filesize
+ end
+
+ def original_filename
+ MantisMigrate.encode(filename)
+ end
+
+ def content_type
+ file_type
+ end
+
+ def read(*args)
+ if @read_finished
+ nil
+ else
+ @read_finished = true
+ content
+ end
+ end
+ end
+
+ class MantisBugRelationship < ActiveRecord::Base
+ set_table_name :mantis_bug_relationship_table
+ end
+
+ class MantisBugMonitor < ActiveRecord::Base
+ set_table_name :mantis_bug_monitor_table
+ end
+
+ class MantisNews < ActiveRecord::Base
+ set_table_name :mantis_news_table
+ end
+
+ class MantisCustomField < ActiveRecord::Base
+ set_table_name :mantis_custom_field_table
+ set_inheritance_column :none
+ has_many :values, :class_name => "MantisCustomFieldString", :foreign_key => :field_id
+ has_many :projects, :class_name => "MantisCustomFieldProject", :foreign_key => :field_id
+
+ def format
+ read_attribute :type
+ end
+
+ def name
+ read_attribute(:name)[0..29]
+ end
+ end
+
+ class MantisCustomFieldProject < ActiveRecord::Base
+ set_table_name :mantis_custom_field_project_table
+ end
+
+ class MantisCustomFieldString < ActiveRecord::Base
+ set_table_name :mantis_custom_field_string_table
+ end
+
+
+ def self.migrate
+
+ # Users
+ print "Migrating users"
+ User.delete_all "login <> 'admin'"
+ users_map = {}
+ users_migrated = 0
+ MantisUser.find(:all).each do |user|
+ u = User.new :firstname => encode(user.firstname),
+ :lastname => encode(user.lastname),
+ :mail => user.email,
+ :last_login_on => user.last_visit
+ u.login = user.username
+ u.password = 'mantis'
+ u.status = User::STATUS_LOCKED if user.enabled != 1
+ u.admin = true if user.access_level == 90
+ next unless u.save!
+ users_migrated += 1
+ users_map[user.id] = u.id
+ print '.'
+ end
+ puts
+
+ # Projects
+ print "Migrating projects"
+ Project.destroy_all
+ projects_map = {}
+ versions_map = {}
+ categories_map = {}
+ MantisProject.find(:all).each do |project|
+ p = Project.new :name => encode(project.name),
+ :description => encode(project.description)
+ p.identifier = project.identifier
+ next unless p.save
+ projects_map[project.id] = p.id
+ p.enabled_module_names = ['issue_tracking', 'news', 'wiki']
+ p.trackers << TRACKER_BUG
+ p.trackers << TRACKER_FEATURE
+ print '.'
+
+ # Project members
+ project.members.each do |member|
+ m = Member.new :user => User.find_by_id(users_map[member.user_id]),
+ :roles => [ROLE_MAPPING[member.access_level] || DEFAULT_ROLE]
+ m.project = p
+ m.save
+ end
+
+ # Project versions
+ project.versions.each do |version|
+ v = Version.new :name => encode(version.version),
+ :description => encode(version.description),
+ :effective_date => (version.date_order ? version.date_order.to_date : nil)
+ v.project = p
+ v.save
+ versions_map[version.id] = v.id
+ end
+
+ # Project categories
+ project.categories.each do |category|
+ g = IssueCategory.new :name => category.category[0,30]
+ g.project = p
+ g.save
+ categories_map[category.category] = g.id
+ end
+ end
+ puts
+
+ # Bugs
+ print "Migrating bugs"
+ Issue.destroy_all
+ issues_map = {}
+ keep_bug_ids = (Issue.count == 0)
+ MantisBug.find_each(:batch_size => 200) do |bug|
+ next unless projects_map[bug.project_id] && users_map[bug.reporter_id]
+ i = Issue.new :project_id => projects_map[bug.project_id],
+ :subject => encode(bug.summary),
+ :description => encode(bug.bug_text.full_description),
+ :priority => PRIORITY_MAPPING[bug.priority] || DEFAULT_PRIORITY,
+ :created_on => bug.date_submitted,
+ :updated_on => bug.last_updated
+ i.author = User.find_by_id(users_map[bug.reporter_id])
+ i.category = IssueCategory.find_by_project_id_and_name(i.project_id, bug.category[0,30]) unless bug.category.blank?
+ i.fixed_version = Version.find_by_project_id_and_name(i.project_id, bug.fixed_in_version) unless bug.fixed_in_version.blank?
+ i.status = STATUS_MAPPING[bug.status] || DEFAULT_STATUS
+ i.tracker = (bug.severity == 10 ? TRACKER_FEATURE : TRACKER_BUG)
+ i.id = bug.id if keep_bug_ids
+ next unless i.save
+ issues_map[bug.id] = i.id
+ print '.'
+ STDOUT.flush
+
+ # Assignee
+ # Redmine checks that the assignee is a project member
+ if (bug.handler_id && users_map[bug.handler_id])
+ i.assigned_to = User.find_by_id(users_map[bug.handler_id])
+ i.save_with_validation(false)
+ end
+
+ # Bug notes
+ bug.bug_notes.each do |note|
+ next unless users_map[note.reporter_id]
+ n = Journal.new :notes => encode(note.bug_note_text.note),
+ :created_on => note.date_submitted
+ n.user = User.find_by_id(users_map[note.reporter_id])
+ n.journalized = i
+ n.save
+ end
+
+ # Bug files
+ bug.bug_files.each do |file|
+ a = Attachment.new :created_on => file.date_added
+ a.file = file
+ a.author = User.find :first
+ a.container = i
+ a.save
+ end
+
+ # Bug monitors
+ bug.bug_monitors.each do |monitor|
+ next unless users_map[monitor.user_id]
+ i.add_watcher(User.find_by_id(users_map[monitor.user_id]))
+ end
+ end
+
+ # update issue id sequence if needed (postgresql)
+ Issue.connection.reset_pk_sequence!(Issue.table_name) if Issue.connection.respond_to?('reset_pk_sequence!')
+ puts
+
+ # Bug relationships
+ print "Migrating bug relations"
+ MantisBugRelationship.find(:all).each do |relation|
+ next unless issues_map[relation.source_bug_id] && issues_map[relation.destination_bug_id]
+ r = IssueRelation.new :relation_type => RELATION_TYPE_MAPPING[relation.relationship_type]
+ r.issue_from = Issue.find_by_id(issues_map[relation.source_bug_id])
+ r.issue_to = Issue.find_by_id(issues_map[relation.destination_bug_id])
+ pp r unless r.save
+ print '.'
+ STDOUT.flush
+ end
+ puts
+
+ # News
+ print "Migrating news"
+ News.destroy_all
+ MantisNews.find(:all, :conditions => 'project_id > 0').each do |news|
+ next unless projects_map[news.project_id]
+ n = News.new :project_id => projects_map[news.project_id],
+ :title => encode(news.headline[0..59]),
+ :description => encode(news.body),
+ :created_on => news.date_posted
+ n.author = User.find_by_id(users_map[news.poster_id])
+ n.save
+ print '.'
+ STDOUT.flush
+ end
+ puts
+
+ # Custom fields
+ print "Migrating custom fields"
+ IssueCustomField.destroy_all
+ MantisCustomField.find(:all).each do |field|
+ f = IssueCustomField.new :name => field.name[0..29],
+ :field_format => CUSTOM_FIELD_TYPE_MAPPING[field.format],
+ :min_length => field.length_min,
+ :max_length => field.length_max,
+ :regexp => field.valid_regexp,
+ :possible_values => field.possible_values.split('|'),
+ :is_required => field.require_report?
+ next unless f.save
+ print '.'
+ STDOUT.flush
+ # Trackers association
+ f.trackers = Tracker.find :all
+
+ # Projects association
+ field.projects.each do |project|
+ f.projects << Project.find_by_id(projects_map[project.project_id]) if projects_map[project.project_id]
+ end
+
+ # Values
+ field.values.each do |value|
+ v = CustomValue.new :custom_field_id => f.id,
+ :value => value.value
+ v.customized = Issue.find_by_id(issues_map[value.bug_id]) if issues_map[value.bug_id]
+ v.save
+ end unless f.new_record?
+ end
+ puts
+
+ puts
+ puts "Users: #{users_migrated}/#{MantisUser.count}"
+ puts "Projects: #{Project.count}/#{MantisProject.count}"
+ puts "Memberships: #{Member.count}/#{MantisProjectUser.count}"
+ puts "Versions: #{Version.count}/#{MantisVersion.count}"
+ puts "Categories: #{IssueCategory.count}/#{MantisCategory.count}"
+ puts "Bugs: #{Issue.count}/#{MantisBug.count}"
+ puts "Bug notes: #{Journal.count}/#{MantisBugNote.count}"
+ puts "Bug files: #{Attachment.count}/#{MantisBugFile.count}"
+ puts "Bug relations: #{IssueRelation.count}/#{MantisBugRelationship.count}"
+ puts "Bug monitors: #{Watcher.count}/#{MantisBugMonitor.count}"
+ puts "News: #{News.count}/#{MantisNews.count}"
+ puts "Custom fields: #{IssueCustomField.count}/#{MantisCustomField.count}"
+ end
+
+ def self.encoding(charset)
+ @ic = Iconv.new('UTF-8', charset)
+ rescue Iconv::InvalidEncoding
+ return false
+ end
+
+ def self.establish_connection(params)
+ constants.each do |const|
+ klass = const_get(const)
+ next unless klass.respond_to? 'establish_connection'
+ klass.establish_connection params
+ end
+ end
+
+ def self.encode(text)
+ @ic.iconv text
+ rescue
+ text
+ end
+ end
+
+ puts
+ if Redmine::DefaultData::Loader.no_data?
+ puts "Redmine configuration need to be loaded before importing data."
+ puts "Please, run this first:"
+ puts
+ puts " rake redmine:load_default_data RAILS_ENV=\"#{ENV['RAILS_ENV']}\""
+ exit
+ end
+
+ puts "WARNING: Your Redmine data will be deleted during this process."
+ print "Are you sure you want to continue ? [y/N] "
+ STDOUT.flush
+ break unless STDIN.gets.match(/^y$/i)
+
+ # Default Mantis database settings
+ db_params = {:adapter => 'mysql',
+ :database => 'bugtracker',
+ :host => 'localhost',
+ :username => 'root',
+ :password => '' }
+
+ puts
+ puts "Please enter settings for your Mantis database"
+ [:adapter, :host, :database, :username, :password].each do |param|
+ print "#{param} [#{db_params[param]}]: "
+ value = STDIN.gets.chomp!
+ db_params[param] = value unless value.blank?
+ end
+
+ while true
+ print "encoding [UTF-8]: "
+ STDOUT.flush
+ encoding = STDIN.gets.chomp!
+ encoding = 'UTF-8' if encoding.blank?
+ break if MantisMigrate.encoding encoding
+ puts "Invalid encoding!"
+ end
+ puts
+
+ # Make sure bugs can refer bugs in other projects
+ Setting.cross_project_issue_relations = 1 if Setting.respond_to? 'cross_project_issue_relations'
+
+ # Turn off email notifications
+ Setting.notified_events = []
+
+ MantisMigrate.establish_connection db_params
+ MantisMigrate.migrate
+end
+end
diff --git a/lib/tasks/migrate_plugins.rake b/lib/tasks/migrate_plugins.rake
index 61df9c3f..0516d830 100644
--- a/lib/tasks/migrate_plugins.rake
+++ b/lib/tasks/migrate_plugins.rake
@@ -1,15 +1,15 @@
-namespace :db do
- desc 'Migrates installed plugins.'
- task :migrate_plugins => :environment do
- if Rails.respond_to?('plugins')
- Rails.plugins.each do |plugin|
- next unless plugin.respond_to?('migrate')
- puts "Migrating #{plugin.name}..."
- plugin.migrate
- end
- else
- puts "Undefined method plugins for Rails!"
- puts "Make sure engines plugin is installed."
- end
- end
-end
+namespace :db do
+ desc 'Migrates installed plugins.'
+ task :migrate_plugins => :environment do
+ if Rails.respond_to?('plugins')
+ Rails.plugins.each do |plugin|
+ next unless plugin.respond_to?('migrate')
+ puts "Migrating #{plugin.name}..."
+ plugin.migrate
+ end
+ else
+ puts "Undefined method plugins for Rails!"
+ puts "Make sure engines plugin is installed."
+ end
+ end
+end
diff --git a/lib/tasks/testing.rake b/lib/tasks/testing.rake
index 266dcf9c..fe6bf007 100644
--- a/lib/tasks/testing.rake
+++ b/lib/tasks/testing.rake
@@ -1,91 +1,91 @@
-### From http://svn.geekdaily.org/public/rails/plugins/generally_useful/tasks/coverage_via_rcov.rake
-
-namespace :test do
- desc 'Measures test coverage'
- task :coverage do
- rm_f "coverage"
- rm_f "coverage.data"
- rcov = "rcov --rails --aggregate coverage.data --text-summary -Ilib --html"
- files = Dir.glob("test/**/*_test.rb").join(" ")
- system("#{rcov} #{files}")
- system("open coverage/index.html") if PLATFORM['darwin']
- end
-
- desc 'Run unit and functional scm tests'
- task :scm do
- errors = %w(test:scm:units test:scm:functionals).collect do |task|
- begin
- Rake::Task[task].invoke
- nil
- rescue => e
- task
- end
- end.compact
- abort "Errors running #{errors.to_sentence(:locale => :en)}!" if errors.any?
- end
-
- namespace :scm do
- namespace :setup do
- desc "Creates directory for test repositories"
- task :create_dir do
- FileUtils.mkdir_p Rails.root + '/tmp/test'
- end
-
- supported_scms = [:subversion, :cvs, :bazaar, :mercurial, :git, :darcs, :filesystem]
-
- desc "Creates a test subversion repository"
- task :subversion => :create_dir do
- repo_path = "tmp/test/subversion_repository"
- system "svnadmin create #{repo_path}"
- system "gunzip < test/fixtures/repositories/subversion_repository.dump.gz | svnadmin load #{repo_path}"
- end
-
- desc "Creates a test mercurial repository"
- task :mercurial => :create_dir do
- repo_path = "tmp/test/mercurial_repository"
- bundle_path = "test/fixtures/repositories/mercurial_repository.hg"
- system "hg init #{repo_path}"
- system "hg -R #{repo_path} pull #{bundle_path}"
- end
-
- (supported_scms - [:subversion, :mercurial]).each do |scm|
- desc "Creates a test #{scm} repository"
- task scm => :create_dir do
+### From http://svn.geekdaily.org/public/rails/plugins/generally_useful/tasks/coverage_via_rcov.rake
+
+namespace :test do
+ desc 'Measures test coverage'
+ task :coverage do
+ rm_f "coverage"
+ rm_f "coverage.data"
+ rcov = "rcov --rails --aggregate coverage.data --text-summary -Ilib --html"
+ files = Dir.glob("test/**/*_test.rb").join(" ")
+ system("#{rcov} #{files}")
+ system("open coverage/index.html") if PLATFORM['darwin']
+ end
+
+ desc 'Run unit and functional scm tests'
+ task :scm do
+ errors = %w(test:scm:units test:scm:functionals).collect do |task|
+ begin
+ Rake::Task[task].invoke
+ nil
+ rescue => e
+ task
+ end
+ end.compact
+ abort "Errors running #{errors.to_sentence(:locale => :en)}!" if errors.any?
+ end
+
+ namespace :scm do
+ namespace :setup do
+ desc "Creates directory for test repositories"
+ task :create_dir do
+ FileUtils.mkdir_p Rails.root + '/tmp/test'
+ end
+
+ supported_scms = [:subversion, :cvs, :bazaar, :mercurial, :git, :darcs, :filesystem]
+
+ desc "Creates a test subversion repository"
+ task :subversion => :create_dir do
+ repo_path = "tmp/test/subversion_repository"
+ system "svnadmin create #{repo_path}"
+ system "gunzip < test/fixtures/repositories/subversion_repository.dump.gz | svnadmin load #{repo_path}"
+ end
+
+ desc "Creates a test mercurial repository"
+ task :mercurial => :create_dir do
+ repo_path = "tmp/test/mercurial_repository"
+ bundle_path = "test/fixtures/repositories/mercurial_repository.hg"
+ system "hg init #{repo_path}"
+ system "hg -R #{repo_path} pull #{bundle_path}"
+ end
+
+ (supported_scms - [:subversion, :mercurial]).each do |scm|
+ desc "Creates a test #{scm} repository"
+ task scm => :create_dir do
# system "gunzip < test/fixtures/repositories/#{scm}_repository.tar.gz | tar -xv -C tmp/test"
system "tar -xvz -C tmp/test -f test/fixtures/repositories/#{scm}_repository.tar.gz"
- end
- end
-
- desc "Creates all test repositories"
- task :all => supported_scms
- end
-
- desc "Updates installed test repositories"
- task :update do
- require 'fileutils'
- Dir.glob("tmp/test/*_repository").each do |dir|
- next unless File.basename(dir) =~ %r{^(.+)_repository$} && File.directory?(dir)
- scm = $1
- next unless fixture = Dir.glob("test/fixtures/repositories/#{scm}_repository.*").first
- next if File.stat(dir).ctime > File.stat(fixture).mtime
-
- FileUtils.rm_rf dir
- Rake::Task["test:scm:setup:#{scm}"].execute
- end
- end
-
- Rake::TestTask.new(:units => "db:test:prepare") do |t|
- t.libs << "test"
- t.verbose = true
- t.test_files = FileList['test/unit/repository*_test.rb'] + FileList['test/unit/lib/redmine/scm/**/*_test.rb']
- end
- Rake::Task['test:scm:units'].comment = "Run the scm unit tests"
-
- Rake::TestTask.new(:functionals => "db:test:prepare") do |t|
- t.libs << "test"
- t.verbose = true
- t.test_files = FileList['test/functional/repositories*_test.rb']
- end
- Rake::Task['test:scm:functionals'].comment = "Run the scm functional tests"
- end
-end
+ end
+ end
+
+ desc "Creates all test repositories"
+ task :all => supported_scms
+ end
+
+ desc "Updates installed test repositories"
+ task :update do
+ require 'fileutils'
+ Dir.glob("tmp/test/*_repository").each do |dir|
+ next unless File.basename(dir) =~ %r{^(.+)_repository$} && File.directory?(dir)
+ scm = $1
+ next unless fixture = Dir.glob("test/fixtures/repositories/#{scm}_repository.*").first
+ next if File.stat(dir).ctime > File.stat(fixture).mtime
+
+ FileUtils.rm_rf dir
+ Rake::Task["test:scm:setup:#{scm}"].execute
+ end
+ end
+
+ Rake::TestTask.new(:units => "db:test:prepare") do |t|
+ t.libs << "test"
+ t.verbose = true
+ t.test_files = FileList['test/unit/repository*_test.rb'] + FileList['test/unit/lib/redmine/scm/**/*_test.rb']
+ end
+ Rake::Task['test:scm:units'].comment = "Run the scm unit tests"
+
+ Rake::TestTask.new(:functionals => "db:test:prepare") do |t|
+ t.libs << "test"
+ t.verbose = true
+ t.test_files = FileList['test/functional/repositories*_test.rb']
+ end
+ Rake::Task['test:scm:functionals'].comment = "Run the scm functional tests"
+ end
+end
diff --git a/test/exemplars/version_exemplar.rb b/test/exemplars/version_exemplar.rb
index 04335549..33e7c3a7 100644
--- a/test/exemplars/version_exemplar.rb
+++ b/test/exemplars/version_exemplar.rb
@@ -1,11 +1,11 @@
-class Version < ActiveRecord::Base
- generator_for :name, :method => :next_name
- generator_for :status => 'open'
-
- def self.next_name
- @last_name ||= 'Version 1.0.0'
- @last_name.succ!
- @last_name
- end
-
-end
+class Version < ActiveRecord::Base
+ generator_for :name, :method => :next_name
+ generator_for :status => 'open'
+
+ def self.next_name
+ @last_name ||= 'Version 1.0.0'
+ @last_name.succ!
+ @last_name
+ end
+
+end
diff --git a/test/fixtures/mail_handler/issue_update_with_multiple_quoted_reply_above.eml b/test/fixtures/mail_handler/issue_update_with_multiple_quoted_reply_above.eml
index 2a94ee5d..13684349 100644
--- a/test/fixtures/mail_handler/issue_update_with_multiple_quoted_reply_above.eml
+++ b/test/fixtures/mail_handler/issue_update_with_multiple_quoted_reply_above.eml
@@ -1,48 +1,48 @@
-Return-Path:
-Received: from osiris ([127.0.0.1])
- by OSIRIS
- with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200
-Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris>
-In-Reply-To:
-From: "John Smith"
-To:
-Subject: Re: update to issue 2
-Date: Sun, 22 Jun 2008 12:28:07 +0200
-MIME-Version: 1.0
-Content-Type: text/plain;
- format=flowed;
- charset="iso-8859-1";
- reply-type=original
-Content-Transfer-Encoding: 7bit
-X-Priority: 3
-X-MSMail-Priority: Normal
-X-Mailer: Microsoft Outlook Express 6.00.2900.2869
-X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869
-
-An update to the issue by the sender.
-
-Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas imperdiet
-turpis et odio. Integer eget pede vel dolor euismod varius. Phasellus
-blandit eleifend augue. Nulla facilisi. Duis id diam. Class aptent taciti
-sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In
-in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras
-sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum
-id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus
-eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique
-sed, mauris --- Pellentesque habitant morbi tristique senectus et netus et
-malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse
-platea dictumst.
-
->> > --- Reply above. Do not remove this line. ---
->> >
->> > Issue #6779 has been updated by Eric Davis.
->> >
->> > Subject changed from Projects with JSON to Project JSON API
->> > Status changed from New to Assigned
->> > Assignee set to Eric Davis
->> > Priority changed from Low to Normal
->> > Estimated time deleted (1.00)
->> >
->> > Looks like the JSON api for projects was missed. I'm going to be
->> > reviewing the existing APIs and trying to clean them up over the next
->> > few weeks.
+Return-Path:
+Received: from osiris ([127.0.0.1])
+ by OSIRIS
+ with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200
+Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris>
+In-Reply-To:
+From: "John Smith"
+To:
+Subject: Re: update to issue 2
+Date: Sun, 22 Jun 2008 12:28:07 +0200
+MIME-Version: 1.0
+Content-Type: text/plain;
+ format=flowed;
+ charset="iso-8859-1";
+ reply-type=original
+Content-Transfer-Encoding: 7bit
+X-Priority: 3
+X-MSMail-Priority: Normal
+X-Mailer: Microsoft Outlook Express 6.00.2900.2869
+X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869
+
+An update to the issue by the sender.
+
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas imperdiet
+turpis et odio. Integer eget pede vel dolor euismod varius. Phasellus
+blandit eleifend augue. Nulla facilisi. Duis id diam. Class aptent taciti
+sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In
+in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras
+sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum
+id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus
+eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique
+sed, mauris --- Pellentesque habitant morbi tristique senectus et netus et
+malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse
+platea dictumst.
+
+>> > --- Reply above. Do not remove this line. ---
+>> >
+>> > Issue #6779 has been updated by Eric Davis.
+>> >
+>> > Subject changed from Projects with JSON to Project JSON API
+>> > Status changed from New to Assigned
+>> > Assignee set to Eric Davis
+>> > Priority changed from Low to Normal
+>> > Estimated time deleted (1.00)
+>> >
+>> > Looks like the JSON api for projects was missed. I'm going to be
+>> > reviewing the existing APIs and trying to clean them up over the next
+>> > few weeks.
diff --git a/test/fixtures/mail_handler/issue_update_with_quoted_reply_above.eml b/test/fixtures/mail_handler/issue_update_with_quoted_reply_above.eml
index 7febc72c..d70b918e 100644
--- a/test/fixtures/mail_handler/issue_update_with_quoted_reply_above.eml
+++ b/test/fixtures/mail_handler/issue_update_with_quoted_reply_above.eml
@@ -1,48 +1,48 @@
-Return-Path:
-Received: from osiris ([127.0.0.1])
- by OSIRIS
- with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200
-Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris>
-In-Reply-To:
-From: "John Smith"
-To:
-Subject: Re: update to issue 2
-Date: Sun, 22 Jun 2008 12:28:07 +0200
-MIME-Version: 1.0
-Content-Type: text/plain;
- format=flowed;
- charset="iso-8859-1";
- reply-type=original
-Content-Transfer-Encoding: 7bit
-X-Priority: 3
-X-MSMail-Priority: Normal
-X-Mailer: Microsoft Outlook Express 6.00.2900.2869
-X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869
-
-An update to the issue by the sender.
-
-Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas imperdiet
-turpis et odio. Integer eget pede vel dolor euismod varius. Phasellus
-blandit eleifend augue. Nulla facilisi. Duis id diam. Class aptent taciti
-sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In
-in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras
-sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum
-id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus
-eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique
-sed, mauris --- Pellentesque habitant morbi tristique senectus et netus et
-malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse
-platea dictumst.
-
-> --- Reply above. Do not remove this line. ---
->
-> Issue #6779 has been updated by Eric Davis.
->
-> Subject changed from Projects with JSON to Project JSON API
-> Status changed from New to Assigned
-> Assignee set to Eric Davis
-> Priority changed from Low to Normal
-> Estimated time deleted (1.00)
->
-> Looks like the JSON api for projects was missed. I'm going to be
-> reviewing the existing APIs and trying to clean them up over the next
-> few weeks.
+Return-Path:
+Received: from osiris ([127.0.0.1])
+ by OSIRIS
+ with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200
+Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris>
+In-Reply-To:
+From: "John Smith"
+To:
+Subject: Re: update to issue 2
+Date: Sun, 22 Jun 2008 12:28:07 +0200
+MIME-Version: 1.0
+Content-Type: text/plain;
+ format=flowed;
+ charset="iso-8859-1";
+ reply-type=original
+Content-Transfer-Encoding: 7bit
+X-Priority: 3
+X-MSMail-Priority: Normal
+X-Mailer: Microsoft Outlook Express 6.00.2900.2869
+X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869
+
+An update to the issue by the sender.
+
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas imperdiet
+turpis et odio. Integer eget pede vel dolor euismod varius. Phasellus
+blandit eleifend augue. Nulla facilisi. Duis id diam. Class aptent taciti
+sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In
+in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras
+sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum
+id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus
+eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique
+sed, mauris --- Pellentesque habitant morbi tristique senectus et netus et
+malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse
+platea dictumst.
+
+> --- Reply above. Do not remove this line. ---
+>
+> Issue #6779 has been updated by Eric Davis.
+>
+> Subject changed from Projects with JSON to Project JSON API
+> Status changed from New to Assigned
+> Assignee set to Eric Davis
+> Priority changed from Low to Normal
+> Estimated time deleted (1.00)
+>
+> Looks like the JSON api for projects was missed. I'm going to be
+> reviewing the existing APIs and trying to clean them up over the next
+> few weeks.
diff --git a/test/fixtures/mail_handler/ticket_by_empty_user.eml b/test/fixtures/mail_handler/ticket_by_empty_user.eml
index e0d168a7..850f05db 100644
--- a/test/fixtures/mail_handler/ticket_by_empty_user.eml
+++ b/test/fixtures/mail_handler/ticket_by_empty_user.eml
@@ -1,17 +1,17 @@
-Return-Path:
-Received: from osiris ([127.0.0.1])
- by OSIRIS
- with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200
-Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris>
-To:
-Subject: Ticket by unknown user
-Date: Sun, 22 Jun 2008 12:28:07 +0200
-MIME-Version: 1.0
-Content-Type: text/plain;
- format=flowed;
- charset="iso-8859-1";
- reply-type=original
-Content-Transfer-Encoding: 7bit
-
-This is a ticket submitted by an unknown user.
-
+Return-Path:
+Received: from osiris ([127.0.0.1])
+ by OSIRIS
+ with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200
+Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris>
+To:
+Subject: Ticket by unknown user
+Date: Sun, 22 Jun 2008 12:28:07 +0200
+MIME-Version: 1.0
+Content-Type: text/plain;
+ format=flowed;
+ charset="iso-8859-1";
+ reply-type=original
+Content-Transfer-Encoding: 7bit
+
+This is a ticket submitted by an unknown user.
+
diff --git a/test/fixtures/mail_handler/ticket_by_unknown_user.eml b/test/fixtures/mail_handler/ticket_by_unknown_user.eml
index a7abb05e..c5854769 100644
--- a/test/fixtures/mail_handler/ticket_by_unknown_user.eml
+++ b/test/fixtures/mail_handler/ticket_by_unknown_user.eml
@@ -1,18 +1,18 @@
-Return-Path:
-Received: from osiris ([127.0.0.1])
- by OSIRIS
- with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200
-Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris>
-From: "John Doe"
-To:
-Subject: Ticket by unknown user
-Date: Sun, 22 Jun 2008 12:28:07 +0200
-MIME-Version: 1.0
-Content-Type: text/plain;
- format=flowed;
- charset="iso-8859-1";
- reply-type=original
-Content-Transfer-Encoding: 7bit
-
-This is a ticket submitted by an unknown user.
-
+Return-Path:
+Received: from osiris ([127.0.0.1])
+ by OSIRIS
+ with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200
+Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris>
+From: "John Doe"
+To:
+Subject: Ticket by unknown user
+Date: Sun, 22 Jun 2008 12:28:07 +0200
+MIME-Version: 1.0
+Content-Type: text/plain;
+ format=flowed;
+ charset="iso-8859-1";
+ reply-type=original
+Content-Transfer-Encoding: 7bit
+
+This is a ticket submitted by an unknown user.
+
diff --git a/test/fixtures/mail_handler/ticket_on_given_project.eml b/test/fixtures/mail_handler/ticket_on_given_project.eml
index 39790f28..5e6d9113 100644
--- a/test/fixtures/mail_handler/ticket_on_given_project.eml
+++ b/test/fixtures/mail_handler/ticket_on_given_project.eml
@@ -1,60 +1,60 @@
-Return-Path:
-Received: from osiris ([127.0.0.1])
- by OSIRIS
- with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200
-Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris>
-From: "John Smith"
-To:
-Subject: New ticket on a given project
-Date: Sun, 22 Jun 2008 12:28:07 +0200
-MIME-Version: 1.0
-Content-Type: text/plain;
- format=flowed;
- charset="iso-8859-1";
- reply-type=original
-Content-Transfer-Encoding: 7bit
-X-Priority: 3
-X-MSMail-Priority: Normal
-X-Mailer: Microsoft Outlook Express 6.00.2900.2869
-X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869
-
-Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas imperdiet
-turpis et odio. Integer eget pede vel dolor euismod varius. Phasellus
-blandit eleifend augue. Nulla facilisi. Duis id diam. Class aptent taciti
-sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In
-in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras
-sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum
-id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus
-eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique
-sed, mauris --- Pellentesque habitant morbi tristique senectus et netus et
-malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse
-platea dictumst.
-
---- This line starts with a delimiter and should not be stripped
-
-This paragraph is before delimiters.
-
-BREAK
-
-This paragraph is between delimiters.
-
----
-
-This paragraph is after the delimiter so it shouldn't appear.
-
-Nulla et nunc. Duis pede. Donec et ipsum. Nam ut dui tincidunt neque
-sollicitudin iaculis. Duis vitae dolor. Vestibulum eget massa. Sed lorem.
-Nullam volutpat cursus erat. Cras felis dolor, lacinia quis, rutrum et,
-dictum et, ligula. Sed erat nibh, gravida in, accumsan non, placerat sed,
-massa. Sed sodales, ante fermentum ultricies sollicitudin, massa leo
-pulvinar dui, a gravida orci mi eget odio. Nunc a lacus.
-
-Project: onlinestore
-Status: Resolved
-due date: 2010-12-31
-Start Date:2010-01-01
-Assigned to: John Smith
-fixed version: alpha
-estimated hours: 2.5
-done ratio: 30
-
+Return-Path:
+Received: from osiris ([127.0.0.1])
+ by OSIRIS
+ with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200
+Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris>
+From: "John Smith"
+To:
+Subject: New ticket on a given project
+Date: Sun, 22 Jun 2008 12:28:07 +0200
+MIME-Version: 1.0
+Content-Type: text/plain;
+ format=flowed;
+ charset="iso-8859-1";
+ reply-type=original
+Content-Transfer-Encoding: 7bit
+X-Priority: 3
+X-MSMail-Priority: Normal
+X-Mailer: Microsoft Outlook Express 6.00.2900.2869
+X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869
+
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas imperdiet
+turpis et odio. Integer eget pede vel dolor euismod varius. Phasellus
+blandit eleifend augue. Nulla facilisi. Duis id diam. Class aptent taciti
+sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In
+in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras
+sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum
+id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus
+eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique
+sed, mauris --- Pellentesque habitant morbi tristique senectus et netus et
+malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse
+platea dictumst.
+
+--- This line starts with a delimiter and should not be stripped
+
+This paragraph is before delimiters.
+
+BREAK
+
+This paragraph is between delimiters.
+
+---
+
+This paragraph is after the delimiter so it shouldn't appear.
+
+Nulla et nunc. Duis pede. Donec et ipsum. Nam ut dui tincidunt neque
+sollicitudin iaculis. Duis vitae dolor. Vestibulum eget massa. Sed lorem.
+Nullam volutpat cursus erat. Cras felis dolor, lacinia quis, rutrum et,
+dictum et, ligula. Sed erat nibh, gravida in, accumsan non, placerat sed,
+massa. Sed sodales, ante fermentum ultricies sollicitudin, massa leo
+pulvinar dui, a gravida orci mi eget odio. Nunc a lacus.
+
+Project: onlinestore
+Status: Resolved
+due date: 2010-12-31
+Start Date:2010-01-01
+Assigned to: John Smith
+fixed version: alpha
+estimated hours: 2.5
+done ratio: 30
+
diff --git a/test/fixtures/mail_handler/ticket_reply.eml b/test/fixtures/mail_handler/ticket_reply.eml
index 93b54dd6..65cb5ed7 100644
--- a/test/fixtures/mail_handler/ticket_reply.eml
+++ b/test/fixtures/mail_handler/ticket_reply.eml
@@ -1,74 +1,74 @@
-Return-Path:
-Received: from osiris ([127.0.0.1])
- by OSIRIS
- with hMailServer ; Sat, 21 Jun 2008 18:41:39 +0200
-Message-ID: <006a01c8d3bd$ad9baec0$0a00a8c0@osiris>
-In-Reply-To:
-From: "John Smith"
-To:
-References: <485d0ad366c88_d7014663a025f@osiris.tmail>
-Subject: Re: Add ingredients categories
-Date: Sat, 21 Jun 2008 18:41:39 +0200
-MIME-Version: 1.0
-Content-Type: multipart/alternative;
- boundary="----=_NextPart_000_0067_01C8D3CE.711F9CC0"
-X-Priority: 3
-X-MSMail-Priority: Normal
-X-Mailer: Microsoft Outlook Express 6.00.2900.2869
-X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869
-
-This is a multi-part message in MIME format.
-
-------=_NextPart_000_0067_01C8D3CE.711F9CC0
-Content-Type: text/plain;
- charset="utf-8"
-Content-Transfer-Encoding: quoted-printable
-
-This is reply
-------=_NextPart_000_0067_01C8D3CE.711F9CC0
-Content-Type: text/html;
- charset="utf-8"
-Content-Transfer-Encoding: quoted-printable
-
-=EF=BB=BF
-
-
-
-
-
-
-
-
-------=_NextPart_000_0067_01C8D3CE.711F9CC0--
-
+Return-Path:
+Received: from osiris ([127.0.0.1])
+ by OSIRIS
+ with hMailServer ; Sat, 21 Jun 2008 18:41:39 +0200
+Message-ID: <006a01c8d3bd$ad9baec0$0a00a8c0@osiris>
+In-Reply-To:
+From: "John Smith"
+To:
+References: <485d0ad366c88_d7014663a025f@osiris.tmail>
+Subject: Re: Add ingredients categories
+Date: Sat, 21 Jun 2008 18:41:39 +0200
+MIME-Version: 1.0
+Content-Type: multipart/alternative;
+ boundary="----=_NextPart_000_0067_01C8D3CE.711F9CC0"
+X-Priority: 3
+X-MSMail-Priority: Normal
+X-Mailer: Microsoft Outlook Express 6.00.2900.2869
+X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869
+
+This is a multi-part message in MIME format.
+
+------=_NextPart_000_0067_01C8D3CE.711F9CC0
+Content-Type: text/plain;
+ charset="utf-8"
+Content-Transfer-Encoding: quoted-printable
+
+This is reply
+------=_NextPart_000_0067_01C8D3CE.711F9CC0
+Content-Type: text/html;
+ charset="utf-8"
+Content-Transfer-Encoding: quoted-printable
+
+=EF=BB=BF
+
+
+
+
+
+
+
+
+------=_NextPart_000_0067_01C8D3CE.711F9CC0--
+
diff --git a/test/fixtures/mail_handler/ticket_with_attachment.eml b/test/fixtures/mail_handler/ticket_with_attachment.eml
index c85f6b4a..230823f9 100644
--- a/test/fixtures/mail_handler/ticket_with_attachment.eml
+++ b/test/fixtures/mail_handler/ticket_with_attachment.eml
@@ -1,248 +1,248 @@
-Return-Path:
-Received: from osiris ([127.0.0.1])
- by OSIRIS
- with hMailServer ; Sat, 21 Jun 2008 15:53:25 +0200
-Message-ID: <002301c8d3a6$2cdf6950$0a00a8c0@osiris>
-From: "John Smith"
-To:
-Subject: Ticket created by email with attachment
-Date: Sat, 21 Jun 2008 15:53:25 +0200
-MIME-Version: 1.0
-Content-Type: multipart/mixed;
- boundary="----=_NextPart_000_001F_01C8D3B6.F05C5270"
-X-Priority: 3
-X-MSMail-Priority: Normal
-X-Mailer: Microsoft Outlook Express 6.00.2900.2869
-X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869
-
-This is a multi-part message in MIME format.
-
-------=_NextPart_000_001F_01C8D3B6.F05C5270
-Content-Type: multipart/alternative;
- boundary="----=_NextPart_001_0020_01C8D3B6.F05C5270"
-
-
-------=_NextPart_001_0020_01C8D3B6.F05C5270
-Content-Type: text/plain;
- charset="iso-8859-1"
-Content-Transfer-Encoding: quoted-printable
-
-This is a new ticket with attachments
-------=_NextPart_001_0020_01C8D3B6.F05C5270
-Content-Type: text/html;
- charset="iso-8859-1"
-Content-Transfer-Encoding: quoted-printable
-
-
-
-
-
-
-
-
-This is a new ticket with=20
-attachments
-
-------=_NextPart_001_0020_01C8D3B6.F05C5270--
-
-------=_NextPart_000_001F_01C8D3B6.F05C5270
-Content-Type: image/jpeg;
- name="Paella.jpg"
-Content-Transfer-Encoding: base64
-Content-Disposition: attachment;
- filename="Paella.jpg"
-
-/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcU
-FhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgo
-KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCACmAMgDASIA
-AhEBAxEB/8QAHQAAAgMBAQEBAQAAAAAAAAAABQYABAcDCAIBCf/EADsQAAEDAwMCBQIDBQcFAQAA
-AAECAwQABREGEiExQQcTIlFhcYEUMpEVI0Kh0QhSYrHB4fAWJCUzQ3L/xAAaAQADAQEBAQAAAAAA
-AAAAAAADBAUCAQYA/8QAKhEAAgIBBAICAgIDAAMAAAAAAQIAAxEEEiExIkEFE1FhMnFCkaEjwdH/
-2gAMAwEAAhEDEQA/ACTUdSsdhRCNE54GTRaBaXHiBtNOVo0wEpSt8BKfmpWCZRPHcVbdZ3X1J9Jx
-Tla9OBpIU8Noo7Gjx4qdrCBkfxGupUSck13GJjeT1ObEdthOG04/zpX8SNXjR1njym46ZMmQ+llp
-pStuc9T9hRq/X22afhKl3iazEYHdxWCfgDqT9K83eKfiFG1RfIEi3tuC3W9KlNh0YLqyeuO3QV0D
-MznM9O2uai4QI8psYQ8gLA9virY615P034xX+zNNslLDsMKOG1J5HuAa3nQPiBZ9WtpUy4lmcE4U
-ypXP2rmMHmcI/EealD7te7ZZ2S7dLhGiN9cvOBP+dIF18btHw3C1DkSbi7nATGZJBPwTitTIyZp9
-SsCun9oJaEFUDTy0oyQFyXSOfoB/rQOL466huE9LIagxW1A48tkuKJxwBlQrm4YzNhGPE9Mmua8Y
-JrzsrXPiQ42y7+KtsZt4kpS8ltK0p91J5IzXGFr3xFef8pMqE4vJABZT6se3FDNyEZzNCh89Tfbv
-aoV2iKj3GO2+0eyh0+h7VkWq/CqTDUqXpp0uJHPkKOFj6HofvQRzxZ1bbwFTG7c+jO0lKeh+cGi8
-bxrebZZVMtjDqljKgw4Rt9uuea5vEIEceoL09ZnHQoyGy3KaOFhxO0j6g0J8QNPr3tzorHmsJSUv
-NgdQeprTIuqbfqdtD7MRxh7HO/H6ZHWlnW0e5tQnv2WgupAyEg8p9xUl7WGowpzKCoDXyJ5nvMdK
-Uuho4bSv057CqK2stIWrgEZp2kWtE+O5+MC0OKUchHFCbnaWVNeW1KU3tTtwtAUkj6jkfpXoK7gQ
-AZLsqYEmJ0mUBlLeCfeqHKl5PqJopNhriupQWyoqPpKeQfpTXYPDW+3ZlEhTTcVpXI8w+oj6Cmty
-qMxTazHAi1ZLG/PXuKClv3Ip7t2n4yI3lKZSsEc7hmicXwfu5ThN22fCUH+tXB4QX1KdzN6WVjth
-Q/1oDuG/yjCIV/xgWLouQFfiLK/5LqejbnKT9D1FStX05DRaYrTN8K232wEl1aMJV856VKF9hPc3
-9QPM32HEjxEjykBSh/ERSd4s61uGjLbBnQrcie2t4pfClEFKAM8Y704uvtsMrdfcQ20gZUtZAAHu
-SawHxt8V7PKt/wCytPp/aLrToW7JAPlNkAjAPfOfpQ0JY4E42B3Nf09ruwXvTQvjM9lmGkfvvOWE
-llXdKvn/ADrONZeNwU28zo2Ml1tHpXc5Y2spP+EHlR/5ivOzYkPPKdjMechRDjrCUHy1Ec9Aa1Lw
-l0VF10pcy4XJC0RlbTFTgKbHwnokfSibFXkzAJbiJ0tN81jc1yHXplzkEEqkPA7UjvtR2H1/SrOl
-rGu6NvP7Q8yhaWkDruVj/n616Lvl20n4Z2cpeS02tSfRHbAU69/t8nivOGoNXzNQSVRbFAbtsFal
-FESEjBOepUR1rBs3D8CFVMHjmXNYW+wWtsMrlMvyyOW4h3FB9irpn70lx7k9AeDttW4w70DgWd3+
-1NmlvDi7XpL0iShcWG0dqllO5SlHsB35NG7l4PSRG823z0YbGFqkDaFK+MZx7d6XOu09Z2M8MKHb
-OBM1vBuAkJcuUgyHXRu3KfDp+5ycVTaeU36kKUlYOQQcEVrehvC5l1Mh/VClISHFMttIVgL45VnH
-TkEH4rQbjpHTbyGWVQIzL7bYabc2AnaMfYnAxk0K35Smo7e/2IRdC7eXUwfT5m6pfbtC/wARIlLW
-VNu7yoN9MlQ9h3NO+n9Cwo8rzZU1Sm2Mlx9YLaUkHjaOv3Nc7zd7FoyY5D07HR56SfMl7961ZGNo
-9gKXrtd77dnkssoSwt7K9rZG8jHU44Tkc9q0rvbyvipnNgT9kTRLvqKy2JDgS/8AiH3hjecKXjv2
-/SkG8akmRyhqG+hKSQ4dpyofBxxV2w+Hkuda27pMW5tcSpWxati1HJGQTkYp70xoS2MW1pp+ImXN
-koJLi+UtfP1FAt1dFPHcPXQ9nPUy+/3pu4usrYZS16MOKCAkuLJypRxX5aG5ExX4VlfC/Vt98e3z
-WvL8M9NsNMtyFyVyGx6h5uPMPyMcV9Q9HQbbdWwzHQGFHKVhStw+uTQTr6tu1IQad85M46baVarV
-uVkJ/mDVCVqWUll59t4FxlW0ocOA4k+1P8uLGU35UgAhQ2kgdRWUeIMi2WyKqASFLJJbWchQI7Ul
-pWWyw5GSYZ1IXA4Ez7U12mR7q95jCWgTuCQeoPsaGqntylbCpIdxnaSM/wBK56lujtydZS4UkNIw
-CBzQO4RURywWnUupcQF7knoT1BHYg5r0lFY2DIwZKvYq5x1DjUo26WzJKEuIQoFSFDIP+9bzaL0x
-+HZcZcQpC0ggewIrzYzNJQGpGVt+/cUw2PU8+0vqWEJnW8q/9KzgpHslXb6UV6yw4gBZg8z1NZbj
-Ek43LQDjkZFMLbkMcJW3+orKvDq86T1SUssrEef3iPq2rz8f3vtTZrtizaR0pOvD8XephOG2959a
-ycJH60HBBxDBhjMB+L9/RY7WpT7jam3kkNNJwSs+/NSss0Bpi4+Jmpfxl7kPOQ2k7iCfyI/hQOwz
-/vUroqrUnceZ8LnIG2Cdaa61Dq54i7SVJi5ymGwdjSf/ANe/86s6W0TLvkNySp5pcVjBUy0oAD5x
-1P1NbDbPALTQjp/aC5bj+OS27tH+VOmjPDqw6QEv9lNPFcpIQ4p5zeSB0A/WtNYoXCwK1nOWgjwk
-sFrg2wuJjtKl5IJUBwPakLxDXbNI6/alaGW6b87uL1vjJCmAogjcvHTrnb8DpVnxj1q1oOS7b9PP
-j9qSEErA58gHuf8AF7CsStOurpBjKZioQqS6sqU+vlayepPvQytu3cgz/fEPWaXfFjYEfLlo5+bM
-/aurr+X33vW6lIJUD/dyen2p80zboMNG6NBEGOygJLy04cdAGRjjn5NYRD1NcjMMme8XpST6Q4Mp
-H0HStstF4kO2lMS5vAlTfq9O04PQZ+KifILaqg3PnPodS5o0S3I0q4x2T3Kr+obzH1HsjuFFpeUU
-B5s5Snck4ST0z0p502w5HZW86qW5lXLbpSeMfHFZH4gpFutbDlrmNtujlxvzc705HAHfB5qknVSI
-VliuWK7STcHVBL7Ticc8c8f70IaMaipWq4z+oo6jT2sr8ma3qCfBky48be4zvcAOB6gR/CMd6EXF
-m9EPKhx3Vx92EJdADmOmQKJ2y5xVpiJlW+OzPSj1LbSBtURyoGjFzWqPbHljClFBLbiBnHHUmpeT
-WdqiPISuDM/e0bark4YzkEJkJ9RebGF7u+T/AKVeg6DbVdXHJ6U/hi35KAlRGU44zj/WrtpdfSlt
-D7m54jKznr/WnOAVKa9Y7cGtDVWodhaH1WnVlD7cZxPhq3NMobbeBeZQnalKlZ47cUQDSGtvlqwn
-GEp7AVQdbddWQHkp2dOea6qWHQlPmJSscEE9aET/AJCK/X+JFxUtuKecHnKxx8VXRKiBSkuKII55
-PSvq4yUQmf3qspxwc8is71fqZMeKtTO0AHn3V8UaitrDgdmcdtoyZ215q1USShq0bZClghTYPqFL
-Vr0xH1otbt1XKZkpT6cccfOaF6SZkz7q7dZYWHjz0ykJp2Yvi4YaYVHdUXjs2eSUlR7HPt89KoW5
-p8af5D3OVLldz9GLmsNLR1WZiI+oJlRB5aHgBuKe2cdaxd5tVsuy0OJbdWwvkKGUq+or0PqiyXVy
-IJ7za1NlIJbz6m/fgdv61lN000qWJ09EWQ8++6lqM01k8geokY5p/wCK1RXK2Nn/AOz75PS1vStt
-Y594iCUnOauWi5SLXMDzIQ4g8ONOp3IcT7KHcVduWn7nbWg5OgSI6SopBcQUjPtzXK1RX1OqkMtb
-0xcPO9PSkHrzV0WKRkHM86a2BwZqFm0da9c2pdw0asM3JgBT9qdd2uNH+8y51x7A/rSjrXUmq129
-Om9TuyvKhu70NyUYd4GBlX8QofG1hcLbrBF/tZ/DvtqGEDhJQONpA6gjrXq61f8AS/jDo9mXNhNu
-nGxxPR2O5jkBXX+tY3bcFhPtoPAin4H6gsMTQgLEhtM7eoyGioBYI4Tx7Yx+pqUr668ILjZXDOtS
-XZsdvlMiGkJlND/GgYDg+Rg1KwUDHIM2r7Bgiei5NwiQo635cllllAypbiwAPvWO678c4UJuRH0y
-gSHkDBkrHpz2CR3+prHbXJ1L4o6matwkKaYP7xzkhthsdVEf8NLWrzbo94fh2RKjAjqLSHFnKniO
-Cs/X/KuLSAcN3OfYW5HUD3SXJutxfnTnVOyn1lbi1HJJNPnh9otyfbJF5lLabjpJQ0FjlZHUis9C
-lDOO9bdHkS4WkbXBlIMdaGUnyhwkjqFfU5pf5K566gqe+I98TpBqb9pnB/Q9wu7kdyOGUNNp3oWp
-Owq7+3P1r9uQmqllqS+S+ghClFWR+vtT/Z7goWGOopbjodwEltQOcdR16/WrcrTFmW4tyYZHmuDc
-dhwkDHSvNvq2BC2+up6PThdIzDvMypelJN2lI8+M9JKxsZS1/Cfcn2+tF9K6Oh6ZeW5fYS5VwKgl
-locpR3Cvk0+zJTdtioi2htDe5OVL/KAPcn3r5j3ZtdmkrKFTFJ3EDG7BAzgH9a+XX2sNi8CJXaZW
-c3GIN7u0u931+KwhaGGspKQMKcKepVV5UmU1DZZtzspMVKQXm3F5B+gHIH0zQCBImKuiJMeCuEH1
-YCfVkjv+bqSKr6t1U7a7uxEgurS0yMLBASc/arlenBULiSGtOSSY6WKJKXckJU2tplSt6FA7gfvW
-gxA/sUBggDGSayGya5ed8tkNqSlXVYOVVpEZydIablRFF6ORgjGFJPyKga3Tuj5Il2rVC6sKT1L9
-tiuPTnDI3eSfc/lqrqWOuHFK4qlF1HIX7j2NWIkyQ8XEApSUcD/Ea5TmZj2SggqUMKSrp9KUByQM
-T45U5mSS9UzJMtMZ93GFcqJ7UL8Q3UOOww24Bx6h3V8/Sqev0sx7u4IqkB5w8tJ4KFfNBXG3Fuo/
-FPqLxA3FXXHtXp9PQiBXXiTGZrmIjTo68qh+Y2ygPhYSAlXIBz1rYHp04RkNRnWDOA5KyEgDrgVh
-mmSmPcCfQpWCACnINFdRXOW3GQ4+60GgcJKDgr+R70lqdP8AZaAvuUK3woDY4mqyrjeFWppZZUXW
-lnzUlYCVp+K+LLeYEoLLG5lGdxQk4wcfyrOourlyIzbDhcKVNhHB7e9XYlxatbam0dVDOAOT96Rf
-TEDBHMMpU9dTQpVxiTWXGUqDy1n0hxCSAPvXnfWVtnWO9TI8lpLHnZOGxhKkE54+K1K1XhLj4S4j
-GOnxX5qiNZ7wlpd1Di30ZS0hKtu4kdCaN8fqG0luxhwYtrdOtqZXsTA1dTWh+B+unNG6tbTIWTap
-hDUhGeE56L+oP8qSbtBXDnyWSB+7WUnadwH3rgYT6IQmEpS0VbU5WNyj8DrXr/F1/ueXIZT1P6Hh
-aVoSpJBSoZBB4IqVjPgP4ii72eHZLsSJrCPKadP8YA4B+cfrUpMgg4jK8jMybw5vUfT/AIXatujD
-iRc5S24DX95KVAkn/P8ASstODk9asPSXvwZbUEoQpzhtIwkYHt9z1q3NZiO2uNMhFLbif3chkryc
-9lAHsabbAbP5i6DI/qctPSokW9w3p0cvsIcBLY7+2fituuVxYvDbAMZ2VIUkeX5I5x3Tgdqznwz0
-xbb/ADZQuy3w2y2FISycHJz3+MVtWnNLwNMb3G0SZDvlgb3DlWPgf86V5/5e+oOAc7l/9y18WLK/
-IdH/AHB+l23bLPLMl0RkyQS22r1eWQO/tR178NEju3GS8ZahyVIc7ewA4qpKKfxzTMOGHCsBZSob
-ueveitut+XGo8tpDacEp2DAP69ahNYHO4yo1rMxJgt22RLy0l5bYQ04jckLWfM+o7frVPUMpdg0a
-65EfXvaX5XOArnp9hTtGgRbcyhL6PPbaG1ClnJAPvWeeMl0FogwnWGYkqKHSFxnUkpSojgkD79aJ
-pQbblr9ZgNRcAhMzli9zZYfS27NkPBIKAFKVnnkn2pf1PaZbMNm4PpkDzeV+c0UEK+p6/WtX8H5M
-GXDm3OS22Jq3P/W2AlIHwOgFVPF+VBfjqKi4sEHBKSAVfFegXWsmo+pV4zJZ0wareTFbw71Y1Ab/
-AAjbcNh1Q/8Ae9yaYU33VESW5KdK1wucuMpwgj3FYq4S456E7VDjimGHqa6wYqIS5HmMq42LOQBT
-Wo0AYll5z+YCjV7MA+puVmuDkgh7evZt3bsdK46s1uiNZSY6iHwSj82CPnFC7PcbdbdOxkPTiqaB
-5iQlXCf61mV9uC79dn39oDIVztGAajafRK9pPoSrZezKAOzKclyXcLgue8VLUo7sHrUaVIfeCloG
-T0Uo9qstKdbcBLZUg9DiuzkbY4VDIBGQkdBVkuBxOrRtAwf7naKlyMoqQ4pRI9RHH2qtc1/i/KS+
-p3yWchtKwcIzX7HnoQv1nbgYUR7+9NESXCmR1xdjexxOXCTg9ODSzO1bBiJvCsCBFu3eahwltCnA
-O6ATj6082K2rlltyXGSsIGEhzPP1xQa1QJNngLmMuNPMrPKE5BwKuzrw6Yu6JJVGWkZSkHIXn274
-pe8m0+H+51G2DBlu4J/DzFKbWhICiS2EgH7H2FD3JTMuclt7B2ArBzgJPvQNF1lSUFoON5JyST1P
-tmgEu5yY0wgJ2uoUd27nPtRKdEzHk8xezVLUnHudtXsRYc4rt8pxZdKvMSpWcH60M07a03W5JZcW
-UtgFSj8Dt96orKnVKUQVK6nv966R5b0dCksLLe4gkp68dOatKjBNgPMiM4Z9xHE1fwCkQx4pqYdC
-vJcC1RwT0WkZH8s1KVPDm+Psa208ogAtysqWOqyo4JP2qUtanPM2jDEL+OWn49u8R5UK0MbGClDg
-bSOApYyQPvSzM0rKt9qiXCRs8uSSlCeQoHnII+1aJ/aAZWjxImL3FILTSwR/+RX7bhqJ561XC5Jj
-O20pSnyFYJWMZypJ6djWLdSa1BzxDUaYWnaOzH/RlmZ0nYWPJab9SQqS5t/eLV2+wzj7UfZmouM8
-MNtlsNoKlFZAV8H4FULPfmrmtyCtwJfQjKggFIVx2orHsbUZ1TzCktFwfvVKJJUB05968jqHaxyz
-y3t+sBeiJJTLSXA6hAWscFSTjke561yfkAlte4h88BIJwB3q5Hjx297RUpWfUD+YYqs5Gjx3HJJK
-ywRylIGM+/vShBMIrDMtpKiyVKcWtvaP3aRnn3HevOfi9eZM/UEiEv8A7eOHgkhfT0jg4+5r0JJu
-ENLad0plpWM9c8dqUtTaMtGoJS37gyXH3UANyEHH6iqXx99entD2CK31m1CqmZZomd+HjORbXte8
-hOVLSk4USeTRm4xrvqbTjseUGmozTmVPLH5fgfNNNhYtWmJardbw3tf59XqIwepNM2poyJVpdKEt
-+SRuCR/EfemLdWou3oO/cJXVmsI08z3BiFp7UakMuonR0jk47+31oG7iTM/dkNoWvCdx/KCe9P8A
-dIzR1PAZfjtI3gx3QsAJHznFKOqbfbbXKSzbriZrwJ8390UJRjpgnrXpdNeLAM9kSDqKDWT+AYcu
-1ivcK2x1KdiyYSejrCgSnPZXehTLqou7cghKRkgd6Px9SWp2xsMT23HF7QgpaOCFDoaCxFee4UKC
-gCT14P3oKs5B+xccx+kIpG0wlaJKZLB9KglB5Uo9KsLeDj2GzjI+1AjmPLH4ZzCVEApPAIopGCFR
-1rSpW4naaFbWB5DqUabMnaYEuTGyc40le4deO1fMZam17krwAOua7yYjyZCiG8hZ65ya57WW3W2y
-lS3FDkFW0CmgdygdydZ4MT1HezzUy4iCwVKLKcFtSuD74r9uVtRJabLZ8obckpTlP60ItSLXOeDT
-KlR1spG9W7clw/ejN4mXa0MDYA9FLn7olIxtxyFCprVkWbU7/cY+0FNx6/UU70GYDBQw6FrUcAgH
-ke9Lq3FHkkk980xXedHuYWt6D5L4A2rQrCQO4xV+yaaiTrW5JL29GRgflUCOoJ5wPmqaOKUy/cl3
-Zufw6itbriuAJHloSVPNlvJ/hB61RCwVAKPHc1YubQZmvNpSlKUqIACtwH371Tzk/FOKAeR7ibEj
-g+o06QWy7riziG2pDf4lsJCjknnrUrv4TtIe1/ZQ50Q+Fk/TkfzxUpW7ggQ1a7xmbF/aGsKEX83N
-U4IU8wFJZWMbtvBwf04pOieITadOMxXmWRJR6CsD1HHTH2xWx/2irAu9aJTIjJJkQXgsYHJSrg/6
-V5os1rjsynVXOQY8uMsER1t8r+M9j0pSymu1P/J6j+ktatxtE23QtvmwYar3cX0JjyE+hhQ9ROeC
-a0CJJaLTe+Uhfm/l7/YUhWKUxfbKxCztdQkJStWdySf7o/rTHZLC7bW3g5M819Y2pLiPy/TmvLak
-AsSeCPUp7i1hB6h+Ytbnl+US2AfVx/nXyWg4kpeOQ4CPT2FVX0JacS6qWpASnC0qIINDLlKKGyGp
-QaLmADgYA74xzSY7zDpWW4Eq2e0N2yXMdmKS6twlCUO4IQj3+po86RGWzGjtNgO4AATwlPXNAmPK
-dLanH15K04SEE5x7GrsGWLnclJ9SHGuCrOCU+1E2s5zNfSE/7mJniFFciyHJ6XEktoIylWBjPPHv
-SnC1HKlFK25Kls7cBpSvy4PtWwXHSsCXIUqUt15Tg2qStfpx7kUIc0JZIqHlpGwqTgFJxgZzx809
-XfWE22DJgwQD49TGr0pN2nlL7i2JKjvC1DCc9qUtRR47sjLQWiYkYdbX0PyDWwax09bZpcZtpdbl
-FJO5aztJxkD46Vl83TclMT8SlDjh28lIJwfY/NXdDqK8Ag4iGsosYHK8QVKiRIztv/BqccWUhT6l
-jASruBVpEoKkOAYLhJO0D9KGIUoqQ2vucYPaidptb0i6lCMNt8lSlq/N8VRcDblz1J9Tbf4CEGYb
-rzbjiEBLqQQAtQAzUs7jrqnGFNJy0fUMcA/WjlutUySrLT0dLGw5C08hQ6fbNCrTBuVlubjjkJ58
-pJwU5Lef72B1pQMLFYZGY0bHQggS7KYUw35ivUlXU9xSfdCp5QWltSUp/iPfNaBLtv4KGiVOkYcf
-X5imS2dyE9uM8DvjrQc2hyYsg+WGSfSQKxRatfJMLepvXA7iilxtKmlMJcQ4nlSlKzn7U4wbou7Y
-RK9SGeUpzjJPciuLmi5ayDF8t3nsrHFfFx0lcbeSptYWhKUlS0EjBP8ADR2votx5DMSFF1eRjiGF
-OWuK4mO+y2lTyFIWpw5SCeivgZpNuCzBU4zEmBbTnUtq4UP+ZoxaNIXG6So5ebX5C3NillXQd/pV
-zWlmYtEJmEiARLz6XEerf78jrXy3VK4XO4mDsSzbwMYiQI8iQlx5tpa2kfmWBwK4BKVdDiicpq5t
-NGItl1DbbYdUgDgAjO40JZSpxwBA5zVBDnn1EnGD+5rn9n+1pXeZlzcQFIYbCEEjoo9x9galN/hp
-BFn06wwQA89+9cPfJ7fpUpG072zHql2Libtf225NukRX+WnWyhX0Iry9drM3ar2i4XN0h6BKS28r
-O5TiByleD8Yr0ldJyHWtyOD0UKzHW9taloXM8jzkhBbkN4yVt+4HunqPvQXBxkTqH1E2dck2u5wp
-9rUW0yiVPKCdwQgkYJx361pca9NSGG3C5kIR6nkD0g/Ws5uMMT4DJtFyZTCdSlAjlsJKTnHpP+hr
-hapk+yxP2fNW7+DeSrAIyN3uP0qJfQtij8/9lPTlkznmPNwdh3FgILzgcK/3bqSfUfZQpW1BMuNr
-hKeeQlCyrCWeu0DjdXL9oW2NAadjuLbdj4UFBQIWoe6Scg/NEo5cu81h+5JAQtvcgdE++Tmlvr+o
-5YZEbpvstyvRlPSGtFvNJjzox4JKHknHP0pq03c2GlTAp5j8Spw7d5CVEYHANL9xsrTbMibHUCUJ
-IKEt8JPvxSey4ZylLX/8yOSMbqIK67stXwIT0NxyZubSDKUX1lbawkAZ9u+KHXeez5ja3HwhpPxy
-D2HNZu1rG7W5zeqS0EgbUggHA+nvVaNqOXdr5HVNcQhCV71BKQNx7ZzxQxoW7PUIgGcmNs6SqW+W
-2hvdc53qRgkHgc0YsdpVGgluSGygrUdqQClJ+TXVu2sSSu4x3PxD20qDa14yccAe2KruPvNw23Lg
-z+HDytqh1Chjoo9utAJ9LC22h0CqMRc15omyXhCnLc0mLc0c7mcBKiBnCk/PuKy646YvkCU0qLuL
-iWylQUPyE9cH5/WtkRLs0VhTLzqW22sEqLm5xXPTjtV2bLt88sttrCSpQxsOSCPeqGn191ACnyH7
-k27RI/K8TFdFOOYcTcAWENqIcUpJBz23DvTqvWMRElm3uQiUpIQ08BgJV259qdFWjzorsd8RXQ7k
-KJHCh7E9yBWWatszVpmsKRuCRgJTn0g5P9KKt9WrtJYYM+q07IgQGWpsNN/lsTH5W7yF7H22+Nqc
-ZJz84r8sMda284IRztBHal19yRbslgltMjKVA01abvCmLamK6AprbtGeoo1ysKwF5Eao0TsxK9xu
-03BS6hS9gU4DzkUWj26G4osKbSpRysBQJGaE2W822NHDbyngM7s4wM/avmZqdhrelhorSoEbxknn
-5qVtctnEOdLZnkQvKjIhuNojNZyraQMYTx1PtXzeYMZtDS30IS4lQWhWMkH4+tIxvz8GT5iQt1Bz
-vSoHBPbNVjPvGo33HWnSEsgqTgcE9NtMJpWyGJwJ9dQVGOxAGt9QruazbYxQGMAOOjBUo9hn4pf0
-vYiu7AvEKQ0rcQOh9hX47bJMW5qjlrCyohKSoEgfOKboflWmIhhsb5S+Sfk16SsCmsLX1PLWoXsz
-Z2I6QZ3kBKc5dPGPapSw28qMn1q3PK/Mc9PipQ4YVMwyJt2oHV2uZuGVML/mKoKWlwbkHchQ4qkN
-ZaevsQxzcmQsj0byUkH71TgOvRVqbeG6Ks+l5PqSD9RXxBioihqTS8Vm7JlNyHGIqlZWWujDmQQr
-H9339q/bihUVLqVvh1ak7S6g8KHwO1OshQIIUAoHg96z7VdpkxIEw2chTDqTmOr/AOZ90Ht9KWv0
-7WkYMf0Oqr075sXIgLTkZl7Uy1zZCQhpsuDOOuQOa05NvYkS0J8h1UUDd5w5UOOAfisK026yJZj3
-YOR3i56XRzkn+EitUsN4uEvEeCpDCGlEOL67ldMikfk6HUg54Ef02pS9i6jEcLpcGUMLSW9iU43J
-6EjH+VZ9NuLDmQqCIsdxR7e30rQWNPKaebmOTVrdXysq5C+OhFfcm129Y/7ptghJ3JKU8j6VLqtS
-rvmNFNx4mNXGMy6jEQqeUF5V8D2oS63JalpaQdrhxjdyQK2O6Ls8SOGm0hO7ohKeVH2FIl205Pdd
-cmMskrICkNg+pIz0IqrptWGGDwP3M3VhFye4w2hmVGYaUmUUsrwcpOSn5xTpcpUJu1vOmQpwObUK
-S6njfnjjtzWOu6iu3luRnIhQGTtJHBB/pRq1u3G5hhKFlIVneVdz9+lKXaRgdzkCdRxYMg9S9qB+
-A/MS0tpYIVudaZTgOqwAPtUdjTkORXGmhHbKgltKVBJSMd+9Mtv/ABrcWRFLUdxATl0lGFlWOx7/
-AAaEOJhuLZipYdksr6BokraVnnd7VhbOl7xBfWwctnj8T9m39strVFa9aMggZKlK+lLGpXLhc47d
-smsKjlSgpJWg5A65B7dfrWk2vTdus8p+clS1vYyEurB2H+pqs9erVc32zJIbeZXtS2oZO8fH+tap
-sVH3VrnHucXftIeZf/0zdZDYbKlPlpJWVnkZ7D704WLRhTbkOzg6XVpxsB2+Wfr3p0hzIylPPtth
-KEr2uFQxuI7ChV61IhaTGay24okBST0J6GutrLLPACMJY6DxMze/Ldtdzcik7gnlJ+DVJF2KTlVO
-0O2M3WK8mQ0h5/HoIOFdepPalq5aTuapziQhptrPUkHA609VZW3i3cbHyRVfKU03RLishXIpfVqe
-Q2lyJC/dZWQpfzmqF5f/AGdcSw08hwJxnb3V7CqcNl5qWp6U2lKRnYnOefeqlOjQDcw4kX5D5g2Y
-Wn13GOKsQklxR8yU51UecUSt+5GX3vU8rue1CbeypxfnO/YUWB9jRGIHAiVNZc72lgLJVzzUrmg1
-KFiOjjqIwUpPKSR96KWnUl1tLoXCmOt+4CuD9qFlOe9fm3nrT5wexPN5I6msWHxHjzili+Nhlw4A
-faGBn5HSmicCI6X2loeiufkeb5Sf6GvPqknrTJpPVs2wPbMh+EvhxhzlKh9KA1XtYZbM9xj1Laos
-/K1ICHv74/1qnbryuwBtCIYQgDatbayQv5wehpnu8NiXaBebK6X7csgOIPK4yj/Cr49jSbJXwQel
-BesWLseGrsNTbkjx/wBWQ4FvYfdntLW8NwZC8qT9RQ9Gq3bo8ERlBDajgrJ/KPekB1ltLqZCAlK0
-HcCUgjP0NfIuy1Tg+yw2y4kEL8kYSv52nj9KSPxNQ/jyZRr+UYfyGJt+nm7Kje95pflEAFxR6H/C
-DQW+OSocpBjL/EFZOHmzyR7GkzSl9ZLr5uE2LFBOPLWlWSPccYFaxpS8WZlP4aEpDri8OKO4KBP+
-lTL9NZQ/kMxg21agBi3MXo9ulOvB1uC8p0j1LV0PH86JQ7QpiSh94mO3tUFBSeMn2zTsJjKFrde8
-g8DbsIJA78VzbuEd6MVLaSWFZSCUZI985pRnJjCviI2nbncJNzXDUhL7aSU5C8J2/OKcbTaodsU7
-K8hLL6zuUndkA/GaU7tM/ZUlQjBlu3bdzbkdHKTnkE+59qU77q+4zISmGY8lbyVH96hKjlPHHFGG
-me0+HAM7bcmMxv1V/wCQkLFvcdxzktd6RbNDC71lDgbS2dy3F9sHmh8PVF5ZQtEdteFDar0eof0o
-8q7abXHYNxdDEhgYUUnYpffkdxmqFelspGMZz+Io2qQ+51v9/wDw7KkwZflxlElIKgTnPJNcH7mz
-Asjbi1smU8QouE/PBH2pd1DreyOwnojMGPIK8+tLe3HGAfrSE9cVrjtJjFfozwv1bfpnj+VOaf40
-so3DETv+RReF5m53LUNis0Bp9ExK3QkAoQ5nPfisq1druXd3CmMVtsDITlXOPn3pcMGS/HW84VKd
-zwF9SKFKCs7T27U/pvjqaju7Mm6jW2uMdCE4tsukyI5cmY77sdtYSt4DICuoBNMFoWiapJcVhY6o
-V7138N9XK0/JWw42l+BIT5cmMv8AK6jv9COxpi1XpBtE2LctJvfi7bOBdbAI8xrH5krHYj370zaf
-R4gqCQwxzOCMJGE9K6A4rm20ttnDysuJ4OBxmq0uWllv08rNIjyOBPRsCg5GJLnODDZQg+s/yqUs
-zJKlqUVHJNSmkqGOZOt1TBvGfZIxkVwWsg1KlaEmT8DhxX7u3dqlStTka/D3Ur2nrylKkfiIEr9z
-IjK/K4g9fvR/xBsyLDqF+IwsrjqSl5rd1CFjcAfkZqVKHYIZOonyclpZz0oeygoUpWetSpWVmz1O
-c6Ol9o9lDoaBIkPMOZS4obTg4URUqUzWAeDE7SVPEYrXrSZb30ORGwhwDG4rUr/M0SXri+SpYcYu
-EiMMcJbVx9alSgtpad27aMw6ai0pjdKFz1nqJuSn/wAtIJIznj+lfQu11VueVdJm9weohwjNSpWj
-UigYAmfsck8wPPlPKz5jzyz33LJoOt1SieSB7VKlGQQDk5n2w35qwCaYLbEQEBwgY7CpUrlphaAC
-3MIkBKc0DuUUKC5CcJIPI96lSh18GH1AyINiI8x9CM4x3Fat4f6okWOY0qKkFv8AKpCgCFp75qVK
-xqfUY+MUENmMmv7bHbDV5tqPJjTFcsK6pVgE4+Kz68xy41vZUEKPvUqUovDyufKjmfrVmYbiHd6n
-cbis+/WpUqUcMZKdF44n/9k=
-
-------=_NextPart_000_001F_01C8D3B6.F05C5270--
-
+Return-Path:
+Received: from osiris ([127.0.0.1])
+ by OSIRIS
+ with hMailServer ; Sat, 21 Jun 2008 15:53:25 +0200
+Message-ID: <002301c8d3a6$2cdf6950$0a00a8c0@osiris>
+From: "John Smith"
+To:
+Subject: Ticket created by email with attachment
+Date: Sat, 21 Jun 2008 15:53:25 +0200
+MIME-Version: 1.0
+Content-Type: multipart/mixed;
+ boundary="----=_NextPart_000_001F_01C8D3B6.F05C5270"
+X-Priority: 3
+X-MSMail-Priority: Normal
+X-Mailer: Microsoft Outlook Express 6.00.2900.2869
+X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869
+
+This is a multi-part message in MIME format.
+
+------=_NextPart_000_001F_01C8D3B6.F05C5270
+Content-Type: multipart/alternative;
+ boundary="----=_NextPart_001_0020_01C8D3B6.F05C5270"
+
+
+------=_NextPart_001_0020_01C8D3B6.F05C5270
+Content-Type: text/plain;
+ charset="iso-8859-1"
+Content-Transfer-Encoding: quoted-printable
+
+This is a new ticket with attachments
+------=_NextPart_001_0020_01C8D3B6.F05C5270
+Content-Type: text/html;
+ charset="iso-8859-1"
+Content-Transfer-Encoding: quoted-printable
+
+
+
+
+
+
+
+
+This is a new ticket with=20
+attachments
+
+------=_NextPart_001_0020_01C8D3B6.F05C5270--
+
+------=_NextPart_000_001F_01C8D3B6.F05C5270
+Content-Type: image/jpeg;
+ name="Paella.jpg"
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment;
+ filename="Paella.jpg"
+
+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
+cbis+/WpUqUcMZKdF44n/9k=
+
+------=_NextPart_000_001F_01C8D3B6.F05C5270--
+
diff --git a/test/fixtures/mail_handler/ticket_with_invalid_attributes.eml b/test/fixtures/mail_handler/ticket_with_invalid_attributes.eml
index 4506078d..cdb72474 100644
--- a/test/fixtures/mail_handler/ticket_with_invalid_attributes.eml
+++ b/test/fixtures/mail_handler/ticket_with_invalid_attributes.eml
@@ -1,47 +1,47 @@
-Return-Path:
-Received: from osiris ([127.0.0.1])
- by OSIRIS
- with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200
-Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris>
-From: "John Smith"
-To:
-Subject: New ticket on a given project
-Date: Sun, 22 Jun 2008 12:28:07 +0200
-MIME-Version: 1.0
-Content-Type: text/plain;
- format=flowed;
- charset="iso-8859-1";
- reply-type=original
-Content-Transfer-Encoding: 7bit
-X-Priority: 3
-X-MSMail-Priority: Normal
-X-Mailer: Microsoft Outlook Express 6.00.2900.2869
-X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869
-
-Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas imperdiet
-turpis et odio. Integer eget pede vel dolor euismod varius. Phasellus
-blandit eleifend augue. Nulla facilisi. Duis id diam. Class aptent taciti
-sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In
-in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras
-sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum
-id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus
-eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique
-sed, mauris. Pellentesque habitant morbi tristique senectus et netus et
-malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse
-platea dictumst.
-
-Nulla et nunc. Duis pede. Donec et ipsum. Nam ut dui tincidunt neque
-sollicitudin iaculis. Duis vitae dolor. Vestibulum eget massa. Sed lorem.
-Nullam volutpat cursus erat. Cras felis dolor, lacinia quis, rutrum et,
-dictum et, ligula. Sed erat nibh, gravida in, accumsan non, placerat sed,
-massa. Sed sodales, ante fermentum ultricies sollicitudin, massa leo
-pulvinar dui, a gravida orci mi eget odio. Nunc a lacus.
-
-Project: onlinestore
-Tracker: Feature request
-category: Stock management
-assigned to: miscuser9@foo.bar
-priority: foo
-done ratio: x
-start date: some day
-due date: never
+Return-Path:
+Received: from osiris ([127.0.0.1])
+ by OSIRIS
+ with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200
+Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris>
+From: "John Smith"
+To:
+Subject: New ticket on a given project
+Date: Sun, 22 Jun 2008 12:28:07 +0200
+MIME-Version: 1.0
+Content-Type: text/plain;
+ format=flowed;
+ charset="iso-8859-1";
+ reply-type=original
+Content-Transfer-Encoding: 7bit
+X-Priority: 3
+X-MSMail-Priority: Normal
+X-Mailer: Microsoft Outlook Express 6.00.2900.2869
+X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869
+
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas imperdiet
+turpis et odio. Integer eget pede vel dolor euismod varius. Phasellus
+blandit eleifend augue. Nulla facilisi. Duis id diam. Class aptent taciti
+sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In
+in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras
+sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum
+id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus
+eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique
+sed, mauris. Pellentesque habitant morbi tristique senectus et netus et
+malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse
+platea dictumst.
+
+Nulla et nunc. Duis pede. Donec et ipsum. Nam ut dui tincidunt neque
+sollicitudin iaculis. Duis vitae dolor. Vestibulum eget massa. Sed lorem.
+Nullam volutpat cursus erat. Cras felis dolor, lacinia quis, rutrum et,
+dictum et, ligula. Sed erat nibh, gravida in, accumsan non, placerat sed,
+massa. Sed sodales, ante fermentum ultricies sollicitudin, massa leo
+pulvinar dui, a gravida orci mi eget odio. Nunc a lacus.
+
+Project: onlinestore
+Tracker: Feature request
+category: Stock management
+assigned to: miscuser9@foo.bar
+priority: foo
+done ratio: x
+start date: some day
+due date: never
diff --git a/test/fixtures/mail_handler/ticket_with_localized_attributes.eml b/test/fixtures/mail_handler/ticket_with_localized_attributes.eml
index 64fabee6..34b39a3c 100644
--- a/test/fixtures/mail_handler/ticket_with_localized_attributes.eml
+++ b/test/fixtures/mail_handler/ticket_with_localized_attributes.eml
@@ -1,43 +1,43 @@
-Return-Path:
-Received: from osiris ([127.0.0.1])
- by OSIRIS
- with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200
-Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris>
-From: "John Smith"
-To:
-Subject: New ticket on a given project
-Date: Sun, 22 Jun 2008 12:28:07 +0200
-MIME-Version: 1.0
-Content-Type: text/plain;
- format=flowed;
- charset="iso-8859-1";
- reply-type=original
-Content-Transfer-Encoding: 7bit
-X-Priority: 3
-X-MSMail-Priority: Normal
-X-Mailer: Microsoft Outlook Express 6.00.2900.2869
-X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869
-
-Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas imperdiet
-turpis et odio. Integer eget pede vel dolor euismod varius. Phasellus
-blandit eleifend augue. Nulla facilisi. Duis id diam. Class aptent taciti
-sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In
-in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras
-sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum
-id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus
-eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique
-sed, mauris. Pellentesque habitant morbi tristique senectus et netus et
-malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse
-platea dictumst.
-
-Nulla et nunc. Duis pede. Donec et ipsum. Nam ut dui tincidunt neque
-sollicitudin iaculis. Duis vitae dolor. Vestibulum eget massa. Sed lorem.
-Nullam volutpat cursus erat. Cras felis dolor, lacinia quis, rutrum et,
-dictum et, ligula. Sed erat nibh, gravida in, accumsan non, placerat sed,
-massa. Sed sodales, ante fermentum ultricies sollicitudin, massa leo
-pulvinar dui, a gravida orci mi eget odio. Nunc a lacus.
-
-Projet: onlinestore
-Tracker: Feature request
-catégorie: Stock management
-priorité: Urgent
+Return-Path:
+Received: from osiris ([127.0.0.1])
+ by OSIRIS
+ with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200
+Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris>
+From: "John Smith"
+To:
+Subject: New ticket on a given project
+Date: Sun, 22 Jun 2008 12:28:07 +0200
+MIME-Version: 1.0
+Content-Type: text/plain;
+ format=flowed;
+ charset="iso-8859-1";
+ reply-type=original
+Content-Transfer-Encoding: 7bit
+X-Priority: 3
+X-MSMail-Priority: Normal
+X-Mailer: Microsoft Outlook Express 6.00.2900.2869
+X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869
+
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas imperdiet
+turpis et odio. Integer eget pede vel dolor euismod varius. Phasellus
+blandit eleifend augue. Nulla facilisi. Duis id diam. Class aptent taciti
+sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In
+in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras
+sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum
+id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus
+eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique
+sed, mauris. Pellentesque habitant morbi tristique senectus et netus et
+malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse
+platea dictumst.
+
+Nulla et nunc. Duis pede. Donec et ipsum. Nam ut dui tincidunt neque
+sollicitudin iaculis. Duis vitae dolor. Vestibulum eget massa. Sed lorem.
+Nullam volutpat cursus erat. Cras felis dolor, lacinia quis, rutrum et,
+dictum et, ligula. Sed erat nibh, gravida in, accumsan non, placerat sed,
+massa. Sed sodales, ante fermentum ultricies sollicitudin, massa leo
+pulvinar dui, a gravida orci mi eget odio. Nunc a lacus.
+
+Projet: onlinestore
+Tracker: Feature request
+catégorie: Stock management
+priorité: Urgent
diff --git a/test/fixtures/mail_handler/ticket_with_long_subject.eml b/test/fixtures/mail_handler/ticket_with_long_subject.eml
index ee0bfcff..0c379af5 100644
--- a/test/fixtures/mail_handler/ticket_with_long_subject.eml
+++ b/test/fixtures/mail_handler/ticket_with_long_subject.eml
@@ -1,57 +1,57 @@
-Return-Path:
-Received: from osiris ([127.0.0.1])
- by OSIRIS
- with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200
-Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris>
-From: "John Smith"
-To:
-Subject: New ticket on a given project with a very long subject line which exceeds 255 chars and should not be ignored but chopped off. And if the subject line is still not long enough, we just add more text. And more text. Wow, this is really annoying. Especially, if you have nothing to say...
-Date: Sun, 22 Jun 2008 12:28:07 +0200
-MIME-Version: 1.0
-Content-Type: text/plain;
- format=flowed;
- charset="iso-8859-1";
- reply-type=original
-Content-Transfer-Encoding: 7bit
-X-Priority: 3
-X-MSMail-Priority: Normal
-X-Mailer: Microsoft Outlook Express 6.00.2900.2869
-X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869
-
-Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas imperdiet
-turpis et odio. Integer eget pede vel dolor euismod varius. Phasellus
-blandit eleifend augue. Nulla facilisi. Duis id diam. Class aptent taciti
-sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In
-in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras
-sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum
-id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus
-eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique
-sed, mauris --- Pellentesque habitant morbi tristique senectus et netus et
-malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse
-platea dictumst.
-
---- This line starts with a delimiter and should not be stripped
-
-This paragraph is before delimiters.
-
-BREAK
-
-This paragraph is between delimiters.
-
----
-
-This paragraph is after the delimiter so it shouldn't appear.
-
-Nulla et nunc. Duis pede. Donec et ipsum. Nam ut dui tincidunt neque
-sollicitudin iaculis. Duis vitae dolor. Vestibulum eget massa. Sed lorem.
-Nullam volutpat cursus erat. Cras felis dolor, lacinia quis, rutrum et,
-dictum et, ligula. Sed erat nibh, gravida in, accumsan non, placerat sed,
-massa. Sed sodales, ante fermentum ultricies sollicitudin, massa leo
-pulvinar dui, a gravida orci mi eget odio. Nunc a lacus.
-
-Project: onlinestore
-Status: Resolved
-due date: 2010-12-31
-Start Date:2010-01-01
-Assigned to: John Smith
-
+Return-Path:
+Received: from osiris ([127.0.0.1])
+ by OSIRIS
+ with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200
+Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris>
+From: "John Smith"
+To:
+Subject: New ticket on a given project with a very long subject line which exceeds 255 chars and should not be ignored but chopped off. And if the subject line is still not long enough, we just add more text. And more text. Wow, this is really annoying. Especially, if you have nothing to say...
+Date: Sun, 22 Jun 2008 12:28:07 +0200
+MIME-Version: 1.0
+Content-Type: text/plain;
+ format=flowed;
+ charset="iso-8859-1";
+ reply-type=original
+Content-Transfer-Encoding: 7bit
+X-Priority: 3
+X-MSMail-Priority: Normal
+X-Mailer: Microsoft Outlook Express 6.00.2900.2869
+X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869
+
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas imperdiet
+turpis et odio. Integer eget pede vel dolor euismod varius. Phasellus
+blandit eleifend augue. Nulla facilisi. Duis id diam. Class aptent taciti
+sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In
+in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras
+sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum
+id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus
+eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique
+sed, mauris --- Pellentesque habitant morbi tristique senectus et netus et
+malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse
+platea dictumst.
+
+--- This line starts with a delimiter and should not be stripped
+
+This paragraph is before delimiters.
+
+BREAK
+
+This paragraph is between delimiters.
+
+---
+
+This paragraph is after the delimiter so it shouldn't appear.
+
+Nulla et nunc. Duis pede. Donec et ipsum. Nam ut dui tincidunt neque
+sollicitudin iaculis. Duis vitae dolor. Vestibulum eget massa. Sed lorem.
+Nullam volutpat cursus erat. Cras felis dolor, lacinia quis, rutrum et,
+dictum et, ligula. Sed erat nibh, gravida in, accumsan non, placerat sed,
+massa. Sed sodales, ante fermentum ultricies sollicitudin, massa leo
+pulvinar dui, a gravida orci mi eget odio. Nunc a lacus.
+
+Project: onlinestore
+Status: Resolved
+due date: 2010-12-31
+Start Date:2010-01-01
+Assigned to: John Smith
+