##// END OF EJS Templates
Fixed: localization problem on issue list headers....
Jean-Philippe Lang -
r893:76cdef46f290
parent child
Show More
@@ -1,345 +1,346
1 # redMine - project management software
1 # redMine - project management software
2 # Copyright (C) 2006-2007 Jean-Philippe Lang
2 # Copyright (C) 2006-2007 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 class QueryColumn
18 class QueryColumn
19 attr_accessor :name, :sortable
19 attr_accessor :name, :sortable
20 include GLoc
20 include GLoc
21
21
22 def initialize(name, options={})
22 def initialize(name, options={})
23 self.name = name
23 self.name = name
24 self.sortable = options[:sortable]
24 self.sortable = options[:sortable]
25 end
25 end
26
26
27 def caption
27 def caption
28 set_language_if_valid(User.current.language)
28 l("field_#{name}")
29 l("field_#{name}")
29 end
30 end
30 end
31 end
31
32
32 class QueryCustomFieldColumn < QueryColumn
33 class QueryCustomFieldColumn < QueryColumn
33
34
34 def initialize(custom_field)
35 def initialize(custom_field)
35 self.name = "cf_#{custom_field.id}".to_sym
36 self.name = "cf_#{custom_field.id}".to_sym
36 self.sortable = false
37 self.sortable = false
37 @cf = custom_field
38 @cf = custom_field
38 end
39 end
39
40
40 def caption
41 def caption
41 @cf.name
42 @cf.name
42 end
43 end
43
44
44 def custom_field
45 def custom_field
45 @cf
46 @cf
46 end
47 end
47 end
48 end
48
49
49 class Query < ActiveRecord::Base
50 class Query < ActiveRecord::Base
50 belongs_to :project
51 belongs_to :project
51 belongs_to :user
52 belongs_to :user
52 serialize :filters
53 serialize :filters
53 serialize :column_names
54 serialize :column_names
54
55
55 attr_protected :project, :user
56 attr_protected :project, :user
56 attr_accessor :executed_by
57 attr_accessor :executed_by
57
58
58 validates_presence_of :name, :on => :save
59 validates_presence_of :name, :on => :save
59 validates_length_of :name, :maximum => 255
60 validates_length_of :name, :maximum => 255
60
61
61 @@operators = { "=" => :label_equals,
62 @@operators = { "=" => :label_equals,
62 "!" => :label_not_equals,
63 "!" => :label_not_equals,
63 "o" => :label_open_issues,
64 "o" => :label_open_issues,
64 "c" => :label_closed_issues,
65 "c" => :label_closed_issues,
65 "!*" => :label_none,
66 "!*" => :label_none,
66 "*" => :label_all,
67 "*" => :label_all,
67 ">=" => '>=',
68 ">=" => '>=',
68 "<=" => '<=',
69 "<=" => '<=',
69 "<t+" => :label_in_less_than,
70 "<t+" => :label_in_less_than,
70 ">t+" => :label_in_more_than,
71 ">t+" => :label_in_more_than,
71 "t+" => :label_in,
72 "t+" => :label_in,
72 "t" => :label_today,
73 "t" => :label_today,
73 "w" => :label_this_week,
74 "w" => :label_this_week,
74 ">t-" => :label_less_than_ago,
75 ">t-" => :label_less_than_ago,
75 "<t-" => :label_more_than_ago,
76 "<t-" => :label_more_than_ago,
76 "t-" => :label_ago,
77 "t-" => :label_ago,
77 "~" => :label_contains,
78 "~" => :label_contains,
78 "!~" => :label_not_contains }
79 "!~" => :label_not_contains }
79
80
80 cattr_reader :operators
81 cattr_reader :operators
81
82
82 @@operators_by_filter_type = { :list => [ "=", "!" ],
83 @@operators_by_filter_type = { :list => [ "=", "!" ],
83 :list_status => [ "o", "=", "!", "c", "*" ],
84 :list_status => [ "o", "=", "!", "c", "*" ],
84 :list_optional => [ "=", "!", "!*", "*" ],
85 :list_optional => [ "=", "!", "!*", "*" ],
85 :list_one_or_more => [ "*", "=" ],
86 :list_one_or_more => [ "*", "=" ],
86 :date => [ "<t+", ">t+", "t+", "t", "w", ">t-", "<t-", "t-" ],
87 :date => [ "<t+", ">t+", "t+", "t", "w", ">t-", "<t-", "t-" ],
87 :date_past => [ ">t-", "<t-", "t-", "t", "w" ],
88 :date_past => [ ">t-", "<t-", "t-", "t", "w" ],
88 :string => [ "=", "~", "!", "!~" ],
89 :string => [ "=", "~", "!", "!~" ],
89 :text => [ "~", "!~" ],
90 :text => [ "~", "!~" ],
90 :integer => [ "=", ">=", "<=" ] }
91 :integer => [ "=", ">=", "<=" ] }
91
92
92 cattr_reader :operators_by_filter_type
93 cattr_reader :operators_by_filter_type
93
94
94 @@available_columns = [
95 @@available_columns = [
95 QueryColumn.new(:tracker, :sortable => "#{Tracker.table_name}.position"),
96 QueryColumn.new(:tracker, :sortable => "#{Tracker.table_name}.position"),
96 QueryColumn.new(:status, :sortable => "#{IssueStatus.table_name}.position"),
97 QueryColumn.new(:status, :sortable => "#{IssueStatus.table_name}.position"),
97 QueryColumn.new(:priority, :sortable => "#{Enumeration.table_name}.position"),
98 QueryColumn.new(:priority, :sortable => "#{Enumeration.table_name}.position"),
98 QueryColumn.new(:subject),
99 QueryColumn.new(:subject),
99 QueryColumn.new(:assigned_to, :sortable => "#{User.table_name}.lastname"),
100 QueryColumn.new(:assigned_to, :sortable => "#{User.table_name}.lastname"),
100 QueryColumn.new(:updated_on, :sortable => "#{Issue.table_name}.updated_on"),
101 QueryColumn.new(:updated_on, :sortable => "#{Issue.table_name}.updated_on"),
101 QueryColumn.new(:category, :sortable => "#{IssueCategory.table_name}.name"),
102 QueryColumn.new(:category, :sortable => "#{IssueCategory.table_name}.name"),
102 QueryColumn.new(:start_date, :sortable => "#{Issue.table_name}.start_date"),
103 QueryColumn.new(:start_date, :sortable => "#{Issue.table_name}.start_date"),
103 QueryColumn.new(:due_date, :sortable => "#{Issue.table_name}.due_date"),
104 QueryColumn.new(:due_date, :sortable => "#{Issue.table_name}.due_date"),
104 QueryColumn.new(:estimated_hours, :sortable => "#{Issue.table_name}.estimated_hours"),
105 QueryColumn.new(:estimated_hours, :sortable => "#{Issue.table_name}.estimated_hours"),
105 QueryColumn.new(:done_ratio, :sortable => "#{Issue.table_name}.done_ratio"),
106 QueryColumn.new(:done_ratio, :sortable => "#{Issue.table_name}.done_ratio"),
106 QueryColumn.new(:created_on, :sortable => "#{Issue.table_name}.created_on"),
107 QueryColumn.new(:created_on, :sortable => "#{Issue.table_name}.created_on"),
107 ]
108 ]
108 cattr_reader :available_columns
109 cattr_reader :available_columns
109
110
110 def initialize(attributes = nil)
111 def initialize(attributes = nil)
111 super attributes
112 super attributes
112 self.filters ||= { 'status_id' => {:operator => "o", :values => [""]} }
113 self.filters ||= { 'status_id' => {:operator => "o", :values => [""]} }
113 end
114 end
114
115
115 def executed_by=(user)
116 def executed_by=(user)
116 @executed_by = user
117 @executed_by = user
117 set_language_if_valid(user.language) if user
118 set_language_if_valid(user.language) if user
118 end
119 end
119
120
120 def validate
121 def validate
121 filters.each_key do |field|
122 filters.each_key do |field|
122 errors.add label_for(field), :activerecord_error_blank unless
123 errors.add label_for(field), :activerecord_error_blank unless
123 # filter requires one or more values
124 # filter requires one or more values
124 (values_for(field) and !values_for(field).first.empty?) or
125 (values_for(field) and !values_for(field).first.empty?) or
125 # filter doesn't require any value
126 # filter doesn't require any value
126 ["o", "c", "!*", "*", "t", "w"].include? operator_for(field)
127 ["o", "c", "!*", "*", "t", "w"].include? operator_for(field)
127 end if filters
128 end if filters
128 end
129 end
129
130
130 def editable_by?(user)
131 def editable_by?(user)
131 return false unless user
132 return false unless user
132 return true if !is_public && self.user_id == user.id
133 return true if !is_public && self.user_id == user.id
133 is_public && user.allowed_to?(:manage_public_queries, project)
134 is_public && user.allowed_to?(:manage_public_queries, project)
134 end
135 end
135
136
136 def available_filters
137 def available_filters
137 return @available_filters if @available_filters
138 return @available_filters if @available_filters
138 @available_filters = { "status_id" => { :type => :list_status, :order => 1, :values => IssueStatus.find(:all, :order => 'position').collect{|s| [s.name, s.id.to_s] } },
139 @available_filters = { "status_id" => { :type => :list_status, :order => 1, :values => IssueStatus.find(:all, :order => 'position').collect{|s| [s.name, s.id.to_s] } },
139 "tracker_id" => { :type => :list, :order => 2, :values => Tracker.find(:all, :order => 'position').collect{|s| [s.name, s.id.to_s] } },
140 "tracker_id" => { :type => :list, :order => 2, :values => Tracker.find(:all, :order => 'position').collect{|s| [s.name, s.id.to_s] } },
140 "priority_id" => { :type => :list, :order => 3, :values => Enumeration.find(:all, :conditions => ['opt=?','IPRI']).collect{|s| [s.name, s.id.to_s] } },
141 "priority_id" => { :type => :list, :order => 3, :values => Enumeration.find(:all, :conditions => ['opt=?','IPRI']).collect{|s| [s.name, s.id.to_s] } },
141 "subject" => { :type => :text, :order => 8 },
142 "subject" => { :type => :text, :order => 8 },
142 "created_on" => { :type => :date_past, :order => 9 },
143 "created_on" => { :type => :date_past, :order => 9 },
143 "updated_on" => { :type => :date_past, :order => 10 },
144 "updated_on" => { :type => :date_past, :order => 10 },
144 "start_date" => { :type => :date, :order => 11 },
145 "start_date" => { :type => :date, :order => 11 },
145 "due_date" => { :type => :date, :order => 12 },
146 "due_date" => { :type => :date, :order => 12 },
146 "done_ratio" => { :type => :integer, :order => 13 }}
147 "done_ratio" => { :type => :integer, :order => 13 }}
147
148
148 user_values = []
149 user_values = []
149 user_values << ["<< #{l(:label_me)} >>", "me"] if executed_by
150 user_values << ["<< #{l(:label_me)} >>", "me"] if executed_by
150 if project
151 if project
151 user_values += project.users.collect{|s| [s.name, s.id.to_s] }
152 user_values += project.users.collect{|s| [s.name, s.id.to_s] }
152 elsif executed_by
153 elsif executed_by
153 # members of the user's projects
154 # members of the user's projects
154 user_values += executed_by.projects.collect(&:users).flatten.uniq.sort.collect{|s| [s.name, s.id.to_s] }
155 user_values += executed_by.projects.collect(&:users).flatten.uniq.sort.collect{|s| [s.name, s.id.to_s] }
155 end
156 end
156 @available_filters["assigned_to_id"] = { :type => :list_optional, :order => 4, :values => user_values } unless user_values.empty?
157 @available_filters["assigned_to_id"] = { :type => :list_optional, :order => 4, :values => user_values } unless user_values.empty?
157 @available_filters["author_id"] = { :type => :list, :order => 5, :values => user_values } unless user_values.empty?
158 @available_filters["author_id"] = { :type => :list, :order => 5, :values => user_values } unless user_values.empty?
158
159
159 if project
160 if project
160 # project specific filters
161 # project specific filters
161 @available_filters["category_id"] = { :type => :list_optional, :order => 6, :values => @project.issue_categories.collect{|s| [s.name, s.id.to_s] } }
162 @available_filters["category_id"] = { :type => :list_optional, :order => 6, :values => @project.issue_categories.collect{|s| [s.name, s.id.to_s] } }
162 @available_filters["fixed_version_id"] = { :type => :list_optional, :order => 7, :values => @project.versions.sort.collect{|s| [s.name, s.id.to_s] } }
163 @available_filters["fixed_version_id"] = { :type => :list_optional, :order => 7, :values => @project.versions.sort.collect{|s| [s.name, s.id.to_s] } }
163 unless @project.active_children.empty?
164 unless @project.active_children.empty?
164 @available_filters["subproject_id"] = { :type => :list_one_or_more, :order => 13, :values => @project.active_children.collect{|s| [s.name, s.id.to_s] } }
165 @available_filters["subproject_id"] = { :type => :list_one_or_more, :order => 13, :values => @project.active_children.collect{|s| [s.name, s.id.to_s] } }
165 end
166 end
166 @project.all_custom_fields.select(&:is_filter?).each do |field|
167 @project.all_custom_fields.select(&:is_filter?).each do |field|
167 case field.field_format
168 case field.field_format
168 when "string", "int"
169 when "string", "int"
169 options = { :type => :string, :order => 20 }
170 options = { :type => :string, :order => 20 }
170 when "text"
171 when "text"
171 options = { :type => :text, :order => 20 }
172 options = { :type => :text, :order => 20 }
172 when "list"
173 when "list"
173 options = { :type => :list_optional, :values => field.possible_values, :order => 20}
174 options = { :type => :list_optional, :values => field.possible_values, :order => 20}
174 when "date"
175 when "date"
175 options = { :type => :date, :order => 20 }
176 options = { :type => :date, :order => 20 }
176 when "bool"
177 when "bool"
177 options = { :type => :list, :values => [[l(:general_text_yes), "1"], [l(:general_text_no), "0"]], :order => 20 }
178 options = { :type => :list, :values => [[l(:general_text_yes), "1"], [l(:general_text_no), "0"]], :order => 20 }
178 end
179 end
179 @available_filters["cf_#{field.id}"] = options.merge({ :name => field.name })
180 @available_filters["cf_#{field.id}"] = options.merge({ :name => field.name })
180 end
181 end
181 # remove category filter if no category defined
182 # remove category filter if no category defined
182 @available_filters.delete "category_id" if @available_filters["category_id"][:values].empty?
183 @available_filters.delete "category_id" if @available_filters["category_id"][:values].empty?
183 end
184 end
184 @available_filters
185 @available_filters
185 end
186 end
186
187
187 def add_filter(field, operator, values)
188 def add_filter(field, operator, values)
188 # values must be an array
189 # values must be an array
189 return unless values and values.is_a? Array # and !values.first.empty?
190 return unless values and values.is_a? Array # and !values.first.empty?
190 # check if field is defined as an available filter
191 # check if field is defined as an available filter
191 if available_filters.has_key? field
192 if available_filters.has_key? field
192 filter_options = available_filters[field]
193 filter_options = available_filters[field]
193 # check if operator is allowed for that filter
194 # check if operator is allowed for that filter
194 #if @@operators_by_filter_type[filter_options[:type]].include? operator
195 #if @@operators_by_filter_type[filter_options[:type]].include? operator
195 # allowed_values = values & ([""] + (filter_options[:values] || []).collect {|val| val[1]})
196 # allowed_values = values & ([""] + (filter_options[:values] || []).collect {|val| val[1]})
196 # filters[field] = {:operator => operator, :values => allowed_values } if (allowed_values.first and !allowed_values.first.empty?) or ["o", "c", "!*", "*", "t"].include? operator
197 # filters[field] = {:operator => operator, :values => allowed_values } if (allowed_values.first and !allowed_values.first.empty?) or ["o", "c", "!*", "*", "t"].include? operator
197 #end
198 #end
198 filters[field] = {:operator => operator, :values => values }
199 filters[field] = {:operator => operator, :values => values }
199 end
200 end
200 end
201 end
201
202
202 def add_short_filter(field, expression)
203 def add_short_filter(field, expression)
203 return unless expression
204 return unless expression
204 parms = expression.scan(/^(o|c|\!|\*)?(.*)$/).first
205 parms = expression.scan(/^(o|c|\!|\*)?(.*)$/).first
205 add_filter field, (parms[0] || "="), [parms[1] || ""]
206 add_filter field, (parms[0] || "="), [parms[1] || ""]
206 end
207 end
207
208
208 def has_filter?(field)
209 def has_filter?(field)
209 filters and filters[field]
210 filters and filters[field]
210 end
211 end
211
212
212 def operator_for(field)
213 def operator_for(field)
213 has_filter?(field) ? filters[field][:operator] : nil
214 has_filter?(field) ? filters[field][:operator] : nil
214 end
215 end
215
216
216 def values_for(field)
217 def values_for(field)
217 has_filter?(field) ? filters[field][:values] : nil
218 has_filter?(field) ? filters[field][:values] : nil
218 end
219 end
219
220
220 def label_for(field)
221 def label_for(field)
221 label = @available_filters[field][:name] if @available_filters.has_key?(field)
222 label = @available_filters[field][:name] if @available_filters.has_key?(field)
222 label ||= field.gsub(/\_id$/, "")
223 label ||= field.gsub(/\_id$/, "")
223 end
224 end
224
225
225 def available_columns
226 def available_columns
226 return @available_columns if @available_columns
227 return @available_columns if @available_columns
227 @available_columns = Query.available_columns
228 @available_columns = Query.available_columns
228 @available_columns += (project ?
229 @available_columns += (project ?
229 project.custom_fields :
230 project.custom_fields :
230 IssueCustomField.find(:all, :conditions => {:is_for_all => true})
231 IssueCustomField.find(:all, :conditions => {:is_for_all => true})
231 ).collect {|cf| QueryCustomFieldColumn.new(cf) }
232 ).collect {|cf| QueryCustomFieldColumn.new(cf) }
232 end
233 end
233
234
234 def columns
235 def columns
235 if has_default_columns?
236 if has_default_columns?
236 available_columns.select {|c| Setting.issue_list_default_columns.include?(c.name.to_s) }
237 available_columns.select {|c| Setting.issue_list_default_columns.include?(c.name.to_s) }
237 else
238 else
238 # preserve the column_names order
239 # preserve the column_names order
239 column_names.collect {|name| available_columns.find {|col| col.name == name}}.compact
240 column_names.collect {|name| available_columns.find {|col| col.name == name}}.compact
240 end
241 end
241 end
242 end
242
243
243 def column_names=(names)
244 def column_names=(names)
244 names = names.select {|n| n.is_a?(Symbol) || !n.blank? } if names
245 names = names.select {|n| n.is_a?(Symbol) || !n.blank? } if names
245 names = names.collect {|n| n.is_a?(Symbol) ? n : n.to_sym } if names
246 names = names.collect {|n| n.is_a?(Symbol) ? n : n.to_sym } if names
246 write_attribute(:column_names, names)
247 write_attribute(:column_names, names)
247 end
248 end
248
249
249 def has_column?(column)
250 def has_column?(column)
250 column_names && column_names.include?(column.name)
251 column_names && column_names.include?(column.name)
251 end
252 end
252
253
253 def has_default_columns?
254 def has_default_columns?
254 column_names.nil? || column_names.empty?
255 column_names.nil? || column_names.empty?
255 end
256 end
256
257
257 def statement
258 def statement
258 # project/subprojects clause
259 # project/subprojects clause
259 clause = ''
260 clause = ''
260 if project && has_filter?("subproject_id")
261 if project && has_filter?("subproject_id")
261 subproject_ids = []
262 subproject_ids = []
262 if operator_for("subproject_id") == "="
263 if operator_for("subproject_id") == "="
263 subproject_ids = values_for("subproject_id").each(&:to_i)
264 subproject_ids = values_for("subproject_id").each(&:to_i)
264 else
265 else
265 subproject_ids = project.active_children.collect{|p| p.id}
266 subproject_ids = project.active_children.collect{|p| p.id}
266 end
267 end
267 clause << "#{Issue.table_name}.project_id IN (%d,%s)" % [project.id, subproject_ids.join(",")] if project
268 clause << "#{Issue.table_name}.project_id IN (%d,%s)" % [project.id, subproject_ids.join(",")] if project
268 elsif project
269 elsif project
269 clause << "#{Issue.table_name}.project_id=%d" % project.id
270 clause << "#{Issue.table_name}.project_id=%d" % project.id
270 else
271 else
271 clause << Project.visible_by(executed_by)
272 clause << Project.visible_by(executed_by)
272 end
273 end
273
274
274 # filters clauses
275 # filters clauses
275 filters_clauses = []
276 filters_clauses = []
276 filters.each_key do |field|
277 filters.each_key do |field|
277 next if field == "subproject_id"
278 next if field == "subproject_id"
278 v = values_for(field).clone
279 v = values_for(field).clone
279 next unless v and !v.empty?
280 next unless v and !v.empty?
280
281
281 sql = ''
282 sql = ''
282 if field =~ /^cf_(\d+)$/
283 if field =~ /^cf_(\d+)$/
283 # custom field
284 # custom field
284 db_table = CustomValue.table_name
285 db_table = CustomValue.table_name
285 db_field = 'value'
286 db_field = 'value'
286 sql << "#{Issue.table_name}.id IN (SELECT #{db_table}.customized_id FROM #{db_table} where #{db_table}.customized_type='Issue' AND #{db_table}.customized_id=#{Issue.table_name}.id AND #{db_table}.custom_field_id=#{$1} AND "
287 sql << "#{Issue.table_name}.id IN (SELECT #{db_table}.customized_id FROM #{db_table} where #{db_table}.customized_type='Issue' AND #{db_table}.customized_id=#{Issue.table_name}.id AND #{db_table}.custom_field_id=#{$1} AND "
287 else
288 else
288 # regular field
289 # regular field
289 db_table = Issue.table_name
290 db_table = Issue.table_name
290 db_field = field
291 db_field = field
291 sql << '('
292 sql << '('
292 end
293 end
293
294
294 # "me" value subsitution
295 # "me" value subsitution
295 if %w(assigned_to_id author_id).include?(field)
296 if %w(assigned_to_id author_id).include?(field)
296 v.push(executed_by ? executed_by.id.to_s : "0") if v.delete("me")
297 v.push(executed_by ? executed_by.id.to_s : "0") if v.delete("me")
297 end
298 end
298
299
299 case operator_for field
300 case operator_for field
300 when "="
301 when "="
301 sql = sql + "#{db_table}.#{db_field} IN (" + v.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + ")"
302 sql = sql + "#{db_table}.#{db_field} IN (" + v.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + ")"
302 when "!"
303 when "!"
303 sql = sql + "#{db_table}.#{db_field} NOT IN (" + v.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + ")"
304 sql = sql + "#{db_table}.#{db_field} NOT IN (" + v.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + ")"
304 when "!*"
305 when "!*"
305 sql = sql + "#{db_table}.#{db_field} IS NULL"
306 sql = sql + "#{db_table}.#{db_field} IS NULL"
306 when "*"
307 when "*"
307 sql = sql + "#{db_table}.#{db_field} IS NOT NULL"
308 sql = sql + "#{db_table}.#{db_field} IS NOT NULL"
308 when ">="
309 when ">="
309 sql = sql + "#{db_table}.#{db_field} >= #{v.first.to_i}"
310 sql = sql + "#{db_table}.#{db_field} >= #{v.first.to_i}"
310 when "<="
311 when "<="
311 sql = sql + "#{db_table}.#{db_field} <= #{v.first.to_i}"
312 sql = sql + "#{db_table}.#{db_field} <= #{v.first.to_i}"
312 when "o"
313 when "o"
313 sql = sql + "#{IssueStatus.table_name}.is_closed=#{connection.quoted_false}" if field == "status_id"
314 sql = sql + "#{IssueStatus.table_name}.is_closed=#{connection.quoted_false}" if field == "status_id"
314 when "c"
315 when "c"
315 sql = sql + "#{IssueStatus.table_name}.is_closed=#{connection.quoted_true}" if field == "status_id"
316 sql = sql + "#{IssueStatus.table_name}.is_closed=#{connection.quoted_true}" if field == "status_id"
316 when ">t-"
317 when ">t-"
317 sql = sql + "#{db_table}.#{db_field} BETWEEN '%s' AND '%s'" % [connection.quoted_date((Date.today - v.first.to_i).to_time), connection.quoted_date((Date.today + 1).to_time)]
318 sql = sql + "#{db_table}.#{db_field} BETWEEN '%s' AND '%s'" % [connection.quoted_date((Date.today - v.first.to_i).to_time), connection.quoted_date((Date.today + 1).to_time)]
318 when "<t-"
319 when "<t-"
319 sql = sql + "#{db_table}.#{db_field} <= '%s'" % connection.quoted_date((Date.today - v.first.to_i).to_time)
320 sql = sql + "#{db_table}.#{db_field} <= '%s'" % connection.quoted_date((Date.today - v.first.to_i).to_time)
320 when "t-"
321 when "t-"
321 sql = sql + "#{db_table}.#{db_field} BETWEEN '%s' AND '%s'" % [connection.quoted_date((Date.today - v.first.to_i).to_time), connection.quoted_date((Date.today - v.first.to_i + 1).to_time)]
322 sql = sql + "#{db_table}.#{db_field} BETWEEN '%s' AND '%s'" % [connection.quoted_date((Date.today - v.first.to_i).to_time), connection.quoted_date((Date.today - v.first.to_i + 1).to_time)]
322 when ">t+"
323 when ">t+"
323 sql = sql + "#{db_table}.#{db_field} >= '%s'" % connection.quoted_date((Date.today + v.first.to_i).to_time)
324 sql = sql + "#{db_table}.#{db_field} >= '%s'" % connection.quoted_date((Date.today + v.first.to_i).to_time)
324 when "<t+"
325 when "<t+"
325 sql = sql + "#{db_table}.#{db_field} BETWEEN '%s' AND '%s'" % [connection.quoted_date(Date.today.to_time), connection.quoted_date((Date.today + v.first.to_i + 1).to_time)]
326 sql = sql + "#{db_table}.#{db_field} BETWEEN '%s' AND '%s'" % [connection.quoted_date(Date.today.to_time), connection.quoted_date((Date.today + v.first.to_i + 1).to_time)]
326 when "t+"
327 when "t+"
327 sql = sql + "#{db_table}.#{db_field} BETWEEN '%s' AND '%s'" % [connection.quoted_date((Date.today + v.first.to_i).to_time), connection.quoted_date((Date.today + v.first.to_i + 1).to_time)]
328 sql = sql + "#{db_table}.#{db_field} BETWEEN '%s' AND '%s'" % [connection.quoted_date((Date.today + v.first.to_i).to_time), connection.quoted_date((Date.today + v.first.to_i + 1).to_time)]
328 when "t"
329 when "t"
329 sql = sql + "#{db_table}.#{db_field} BETWEEN '%s' AND '%s'" % [connection.quoted_date(Date.today.to_time), connection.quoted_date((Date.today+1).to_time)]
330 sql = sql + "#{db_table}.#{db_field} BETWEEN '%s' AND '%s'" % [connection.quoted_date(Date.today.to_time), connection.quoted_date((Date.today+1).to_time)]
330 when "w"
331 when "w"
331 sql = sql + "#{db_table}.#{db_field} BETWEEN '%s' AND '%s'" % [connection.quoted_date(Time.now.at_beginning_of_week), connection.quoted_date(Time.now.next_week.yesterday)]
332 sql = sql + "#{db_table}.#{db_field} BETWEEN '%s' AND '%s'" % [connection.quoted_date(Time.now.at_beginning_of_week), connection.quoted_date(Time.now.next_week.yesterday)]
332 when "~"
333 when "~"
333 sql = sql + "#{db_table}.#{db_field} LIKE '%#{connection.quote_string(v.first)}%'"
334 sql = sql + "#{db_table}.#{db_field} LIKE '%#{connection.quote_string(v.first)}%'"
334 when "!~"
335 when "!~"
335 sql = sql + "#{db_table}.#{db_field} NOT LIKE '%#{connection.quote_string(v.first)}%'"
336 sql = sql + "#{db_table}.#{db_field} NOT LIKE '%#{connection.quote_string(v.first)}%'"
336 end
337 end
337 sql << ')'
338 sql << ')'
338 filters_clauses << sql
339 filters_clauses << sql
339 end if filters and valid?
340 end if filters and valid?
340
341
341 clause << ' AND ' unless clause.empty?
342 clause << ' AND ' unless clause.empty?
342 clause << filters_clauses.join(' AND ') unless filters_clauses.empty?
343 clause << filters_clauses.join(' AND ') unless filters_clauses.empty?
343 clause
344 clause
344 end
345 end
345 end
346 end
@@ -1,540 +1,540
1 _gloc_rule_default: '|n| n==1 ? "" : "_plural" '
1 _gloc_rule_default: '|n| n==1 ? "" : "_plural" '
2
2
3 actionview_datehelper_select_day_prefix:
3 actionview_datehelper_select_day_prefix:
4 actionview_datehelper_select_month_names: Январь,Февраль,Март,Апрель,Май,Июнь,Июль,Август,Сентябрь,Октябрь,Ноябрь,Декабрь
4 actionview_datehelper_select_month_names: Январь,Февраль,Март,Апрель,Май,Июнь,Июль,Август,Сентябрь,Октябрь,Ноябрь,Декабрь
5 actionview_datehelper_select_month_names_abbr: Янв,Фев,Мар,Апр,Май,Июн,Июл,Авг,Сен,Окт,Нояб,Дек
5 actionview_datehelper_select_month_names_abbr: Янв,Фев,Мар,Апр,Май,Июн,Июл,Авг,Сен,Окт,Нояб,Дек
6 actionview_datehelper_select_month_prefix:
6 actionview_datehelper_select_month_prefix:
7 actionview_datehelper_select_year_prefix:
7 actionview_datehelper_select_year_prefix:
8 actionview_datehelper_time_in_words_day: 1 день
8 actionview_datehelper_time_in_words_day: 1 день
9 actionview_datehelper_time_in_words_day_plural: %d дней(я)
9 actionview_datehelper_time_in_words_day_plural: %d дней(я)
10 actionview_datehelper_time_in_words_hour_about: около часа
10 actionview_datehelper_time_in_words_hour_about: около часа
11 actionview_datehelper_time_in_words_hour_about_plural: около %d часов
11 actionview_datehelper_time_in_words_hour_about_plural: около %d часов
12 actionview_datehelper_time_in_words_hour_about_single: около часа
12 actionview_datehelper_time_in_words_hour_about_single: около часа
13 actionview_datehelper_time_in_words_minute: 1 минута
13 actionview_datehelper_time_in_words_minute: 1 минута
14 actionview_datehelper_time_in_words_minute_half: полминуты
14 actionview_datehelper_time_in_words_minute_half: полминуты
15 actionview_datehelper_time_in_words_minute_less_than: менее минуты
15 actionview_datehelper_time_in_words_minute_less_than: менее минуты
16 actionview_datehelper_time_in_words_minute_plural: %d минут(ы)
16 actionview_datehelper_time_in_words_minute_plural: %d минут(ы)
17 actionview_datehelper_time_in_words_minute_single: 1 минута
17 actionview_datehelper_time_in_words_minute_single: 1 минута
18 actionview_datehelper_time_in_words_second_less_than: менее секунды
18 actionview_datehelper_time_in_words_second_less_than: менее секунды
19 actionview_datehelper_time_in_words_second_less_than_plural: менее %d секунд
19 actionview_datehelper_time_in_words_second_less_than_plural: менее %d секунд
20 actionview_instancetag_blank_option: Выберите
20 actionview_instancetag_blank_option: Выберите
21
21
22 activerecord_error_inclusion: нет в списке
22 activerecord_error_inclusion: нет в списке
23 activerecord_error_exclusion: зарезервировано
23 activerecord_error_exclusion: зарезервировано
24 activerecord_error_invalid: неверное значение
24 activerecord_error_invalid: неверное значение
25 activerecord_error_confirmation: ошибка в подтверждении
25 activerecord_error_confirmation: ошибка в подтверждении
26 activerecord_error_accepted: необходимо принять
26 activerecord_error_accepted: необходимо принять
27 activerecord_error_empty: необходимо заполнить
27 activerecord_error_empty: необходимо заполнить
28 activerecord_error_blank: необходимо заполнить
28 activerecord_error_blank: необходимо заполнить
29 activerecord_error_too_long: слишком длинное значение
29 activerecord_error_too_long: слишком длинное значение
30 activerecord_error_too_short: слишком короткое значение
30 activerecord_error_too_short: слишком короткое значение
31 activerecord_error_wrong_length: не соответствует длине
31 activerecord_error_wrong_length: не соответствует длине
32 activerecord_error_taken: уже был принят
32 activerecord_error_taken: уже был принят
33 activerecord_error_not_a_number: не является числом
33 activerecord_error_not_a_number: не является числом
34 activerecord_error_not_a_date: дата недействительна
34 activerecord_error_not_a_date: дата недействительна
35 activerecord_error_greater_than_start_date: должна быть позднее даты начала
35 activerecord_error_greater_than_start_date: должна быть позднее даты начала
36 activerecord_error_not_same_project: не относятся к одному проекту
36 activerecord_error_not_same_project: не относятся к одному проекту
37 activerecord_error_circular_dependency: Такая связь приведет к циклической зависимости
37 activerecord_error_circular_dependency: Такая связь приведет к циклической зависимости
38
38
39 general_fmt_age: %d г.
39 general_fmt_age: %d г.
40 general_fmt_age_plural: %d гг.
40 general_fmt_age_plural: %d гг.
41 general_fmt_date: %%m/%%d/%%Y
41 general_fmt_date: %%m/%%d/%%Y
42 general_fmt_datetime: %%m/%%d/%%Y %%I:%%M %%p
42 general_fmt_datetime: %%m/%%d/%%Y %%I:%%M %%p
43 general_fmt_datetime_short: %%b %%d, %%I:%%M %%p
43 general_fmt_datetime_short: %%b %%d, %%I:%%M %%p
44 general_fmt_time: %%I:%%M %%p
44 general_fmt_time: %%I:%%M %%p
45 general_text_No: 'Нет'
45 general_text_No: 'Нет'
46 general_text_Yes: 'Да'
46 general_text_Yes: 'Да'
47 general_text_no: 'Нет'
47 general_text_no: 'Нет'
48 general_text_yes: 'Да'
48 general_text_yes: 'Да'
49 general_lang_name: 'Russian (Русский)'
49 general_lang_name: 'Russian (Русский)'
50 general_csv_separator: ','
50 general_csv_separator: ','
51 general_csv_encoding: ISO-8859-1
51 general_csv_encoding: ISO-8859-1
52 general_pdf_encoding: ISO-8859-1
52 general_pdf_encoding: ISO-8859-1
53 general_day_names: Понедельник,Вторник,Среда,Четверг,Пятница,Суббота,Воскресенье
53 general_day_names: Понедельник,Вторник,Среда,Четверг,Пятница,Суббота,Воскресенье
54 general_first_day_of_week: '7'
54 general_first_day_of_week: '1'
55
55
56 notice_account_updated: Учетная запись успешно обновлена.
56 notice_account_updated: Учетная запись успешно обновлена.
57 notice_account_invalid_creditentials: Неправильное имя пользователя или пароль
57 notice_account_invalid_creditentials: Неправильное имя пользователя или пароль
58 notice_account_password_updated: Пароль успешно обновлен.
58 notice_account_password_updated: Пароль успешно обновлен.
59 notice_account_wrong_password: Неверный пароль
59 notice_account_wrong_password: Неверный пароль
60 notice_account_register_done: Учетная запись успешно создана. Для активации Вашей учетной записи зайдите по ссылке, которая выслана вам по электронной почте.
60 notice_account_register_done: Учетная запись успешно создана. Для активации Вашей учетной записи зайдите по ссылке, которая выслана вам по электронной почте.
61 notice_account_unknown_email: Неизвестный пользователь.
61 notice_account_unknown_email: Неизвестный пользователь.
62 notice_can_t_change_password: Для данной учетной записи используется источник внешней аутентификации. Невозможно изменить пароль.
62 notice_can_t_change_password: Для данной учетной записи используется источник внешней аутентификации. Невозможно изменить пароль.
63 notice_account_lost_email_sent: Вам отправлено письмо с инструкциями по выбору нового пароля.
63 notice_account_lost_email_sent: Вам отправлено письмо с инструкциями по выбору нового пароля.
64 notice_account_activated: Ваша учетная запись активирована. Вы можете войти.
64 notice_account_activated: Ваша учетная запись активирована. Вы можете войти.
65 notice_successful_create: Создание успешно завершено.
65 notice_successful_create: Создание успешно завершено.
66 notice_successful_update: Обновление успешно завершено.
66 notice_successful_update: Обновление успешно завершено.
67 notice_successful_delete: Удаление успешно завершено.
67 notice_successful_delete: Удаление успешно завершено.
68 notice_successful_connection: Подключение успешно установлено.
68 notice_successful_connection: Подключение успешно установлено.
69 notice_file_not_found: Страница, на которую вы пытаетесь зайти, не существует или удалена.
69 notice_file_not_found: Страница, на которую вы пытаетесь зайти, не существует или удалена.
70 notice_locking_conflict: Информация обновлена другим пользователем.
70 notice_locking_conflict: Информация обновлена другим пользователем.
71 notice_scm_error: Записи и/или исправления нет в репозитории.
71 notice_scm_error: Записи и/или исправления нет в репозитории.
72 notice_not_authorized: У вас нет прав для посещения данной страницы.
72 notice_not_authorized: У вас нет прав для посещения данной страницы.
73 notice_email_sent: Отправлено письмо %s
73 notice_email_sent: Отправлено письмо %s
74 notice_email_error: Во время отправки письма произошла ошибка (%s)
74 notice_email_error: Во время отправки письма произошла ошибка (%s)
75 notice_feeds_access_key_reseted: Ваш ключ доступа RSS был перезапущен.
75 notice_feeds_access_key_reseted: Ваш ключ доступа RSS был перезапущен.
76 notice_failed_to_save_issues: "Не удалось сохранить %d пункт(ов)из %d выбранных: %s."
76 notice_failed_to_save_issues: "Не удалось сохранить %d пункт(ов)из %d выбранных: %s."
77 notice_no_issue_selected: "Не выбрано ни одной задачи! Пожалуйста, отметьте задачи, которые вы хотите отредактировать."
77 notice_no_issue_selected: "Не выбрано ни одной задачи! Пожалуйста, отметьте задачи, которые вы хотите отредактировать."
78
78
79 mail_subject_lost_password: Ваш Redmine пароль
79 mail_subject_lost_password: Ваш Redmine пароль
80 mail_body_lost_password: 'Для изменения Redmine пароля, зайдите по следующей ссылке:'
80 mail_body_lost_password: 'Для изменения Redmine пароля, зайдите по следующей ссылке:'
81 mail_subject_register: Активация учетной записи Redmine
81 mail_subject_register: Активация учетной записи Redmine
82 mail_body_register: 'Для активации учетной записи Redmine, зайдите по следующей ссылке:'
82 mail_body_register: 'Для активации учетной записи Redmine, зайдите по следующей ссылке:'
83 mail_body_account_information_external: Вы можете использовать вашу "%s" учетную запись для входа в Redmine.
83 mail_body_account_information_external: Вы можете использовать вашу "%s" учетную запись для входа в Redmine.
84 mail_body_account_information: Информация по Вашей учетной записи Redmine
84 mail_body_account_information: Информация по Вашей учетной записи Redmine
85
85
86 gui_validation_error: 1 ошибка
86 gui_validation_error: 1 ошибка
87 gui_validation_error_plural: %d ошибки(ок)
87 gui_validation_error_plural: %d ошибки(ок)
88
88
89 field_name: Имя
89 field_name: Имя
90 field_description: Описание
90 field_description: Описание
91 field_summary: Краткое описание
91 field_summary: Краткое описание
92 field_is_required: Необходимо
92 field_is_required: Необходимо
93 field_firstname: Имя
93 field_firstname: Имя
94 field_lastname: Фамилия
94 field_lastname: Фамилия
95 field_mail: Email
95 field_mail: Email
96 field_filename: Файл
96 field_filename: Файл
97 field_filesize: Размер
97 field_filesize: Размер
98 field_downloads: Загрузки
98 field_downloads: Загрузки
99 field_author: Автор
99 field_author: Автор
100 field_created_on: Создано
100 field_created_on: Создано
101 field_updated_on: Обновлено
101 field_updated_on: Обновлено
102 field_field_format: Формат
102 field_field_format: Формат
103 field_is_for_all: Для всех форматов
103 field_is_for_all: Для всех форматов
104 field_possible_values: Возможные значения
104 field_possible_values: Возможные значения
105 field_regexp: Регулярное выражение
105 field_regexp: Регулярное выражение
106 field_min_length: Минимальная длина
106 field_min_length: Минимальная длина
107 field_max_length: Максимальная длина
107 field_max_length: Максимальная длина
108 field_value: Значение
108 field_value: Значение
109 field_category: Категория
109 field_category: Категория
110 field_title: Название
110 field_title: Название
111 field_project: Проект
111 field_project: Проект
112 field_issue: Задача
112 field_issue: Задача
113 field_status: Статус
113 field_status: Статус
114 field_notes: Примечания
114 field_notes: Примечания
115 field_is_closed: Задача закрыта
115 field_is_closed: Задача закрыта
116 field_is_default: Значение по умолчанию
116 field_is_default: Значение по умолчанию
117 field_tracker: Трекер
117 field_tracker: Трекер
118 field_subject: Тема
118 field_subject: Тема
119 field_due_date: Дата выполнения
119 field_due_date: Дата выполнения
120 field_assigned_to: Назначена
120 field_assigned_to: Назначена
121 field_priority: Приоритет
121 field_priority: Приоритет
122 field_fixed_version: Фиксированная версия
122 field_fixed_version: Фиксированная версия
123 field_user: Пользователь
123 field_user: Пользователь
124 field_role: Роль
124 field_role: Роль
125 field_homepage: Стартовая страница
125 field_homepage: Стартовая страница
126 field_is_public: Публичный
126 field_is_public: Публичный
127 field_parent: Подпроект
127 field_parent: Подпроект
128 field_is_in_chlog: Задачи, отображаемые в журнале изменений
128 field_is_in_chlog: Задачи, отображаемые в журнале изменений
129 field_is_in_roadmap: Задачи, отображаемые в оперативном плане
129 field_is_in_roadmap: Задачи, отображаемые в оперативном плане
130 field_login: Вход
130 field_login: Вход
131 field_mail_notification: Уведомления по Email
131 field_mail_notification: Уведомления по Email
132 field_admin: Администратор
132 field_admin: Администратор
133 field_last_login_on: Последнее подключение
133 field_last_login_on: Последнее подключение
134 field_language: Язык
134 field_language: Язык
135 field_effective_date: Дата
135 field_effective_date: Дата
136 field_password: Пароль
136 field_password: Пароль
137 field_new_password: Новый пароль
137 field_new_password: Новый пароль
138 field_password_confirmation: Подтверждение
138 field_password_confirmation: Подтверждение
139 field_version: Версия
139 field_version: Версия
140 field_type: Тип
140 field_type: Тип
141 field_host: Компьютер
141 field_host: Компьютер
142 field_port: Порт
142 field_port: Порт
143 field_account: Учетная запись
143 field_account: Учетная запись
144 field_base_dn: Базовое отличительное имя
144 field_base_dn: Базовое отличительное имя
145 field_attr_login: Атрибут Регистрация
145 field_attr_login: Атрибут Регистрация
146 field_attr_firstname: Атрибут Имя
146 field_attr_firstname: Атрибут Имя
147 field_attr_lastname: Атрибут Фамилия
147 field_attr_lastname: Атрибут Фамилия
148 field_attr_mail: Атрибут Email
148 field_attr_mail: Атрибут Email
149 field_onthefly: Создание пользователя на лету
149 field_onthefly: Создание пользователя на лету
150 field_start_date: Начало
150 field_start_date: Начало
151 field_done_ratio: %% Готовности
151 field_done_ratio: %% Готовности
152 field_auth_source: Режим аутентификации
152 field_auth_source: Режим аутентификации
153 field_hide_mail: Скрывать мой email адрес
153 field_hide_mail: Скрывать мой email
154 field_comments: Комментарий
154 field_comments: Комментарий
155 field_url: URL
155 field_url: URL
156 field_start_page: Стартовая страница
156 field_start_page: Стартовая страница
157 field_subproject: Подпроект
157 field_subproject: Подпроект
158 field_hours: Часы
158 field_hours: Часы
159 field_activity: Деятельность
159 field_activity: Деятельность
160 field_spent_on: Дата
160 field_spent_on: Дата
161 field_identifier: Признак
161 field_identifier: Признак
162 field_is_filter: Используется в качестве фильтра
162 field_is_filter: Используется в качестве фильтра
163 field_issue_to_id: Относящиеся задачи
163 field_issue_to_id: Связанные задачи
164 field_delay: Отложить
164 field_delay: Отложить
165 field_assignable: Задача может быть назначена этой роли
165 field_assignable: Задача может быть назначена этой роли
166 field_redirect_existing_links: Перенаправить существующие ссылки
166 field_redirect_existing_links: Перенаправить существующие ссылки
167 field_estimated_hours: Оцененное время
167 field_estimated_hours: Оцененное время
168 field_column_names: Колонки
168 field_column_names: Колонки
169
169
170 setting_app_title: Название приложения
170 setting_app_title: Название приложения
171 setting_app_subtitle: Подзаголовок приложения
171 setting_app_subtitle: Подзаголовок приложения
172 setting_welcome_text: Текст приветствия
172 setting_welcome_text: Текст приветствия
173 setting_default_language: Язык по умолчанию
173 setting_default_language: Язык по умолчанию
174 setting_login_required: Необходима аутентификация
174 setting_login_required: Необходима аутентификация
175 setting_self_registration: Возможна само-регистрация
175 setting_self_registration: Возможна само-регистрация
176 setting_attachment_max_size: Максимальный размер вложения
176 setting_attachment_max_size: Максимальный размер вложения
177 setting_issues_export_limit: Ограничение по экспортируемым задачам
177 setting_issues_export_limit: Ограничение по экспортируемым задачам
178 setting_mail_from: email адрес для передачи информации
178 setting_mail_from: email адрес для передачи информации
179 setting_host_name: Имя компьютера
179 setting_host_name: Имя компьютера
180 setting_text_formatting: Форматирование текста
180 setting_text_formatting: Форматирование текста
181 setting_wiki_compression: Сжатие истории Wiki
181 setting_wiki_compression: Сжатие истории Wiki
182 setting_feeds_limit: Ограничения вводимого содержания
182 setting_feeds_limit: Ограничения вводимого содержания
183 setting_autofetch_changesets: Autofetch коммиты
183 setting_autofetch_changesets: Autofetch коммиты
184 setting_sys_api_enabled: Разрешить WS для управления репозиторием
184 setting_sys_api_enabled: Разрешить WS для управления репозиторием
185 setting_commit_ref_keywords: Ключевые слова для поиска
185 setting_commit_ref_keywords: Ключевые слова для поиска
186 setting_commit_fix_keywords: Назначение ключевых слов
186 setting_commit_fix_keywords: Назначение ключевых слов
187 setting_autologin: Автоматический вход
187 setting_autologin: Автоматический вход
188 setting_date_format: Формат даты
188 setting_date_format: Формат даты
189 setting_time_format: Time format
189 setting_cross_project_issue_relations: Разрешить пересечение задач по проектам
190 setting_cross_project_issue_relations: Разрешить пересечение задач по проектам
190 setting_issue_list_default_columns: Колонки, отображаемые в списке задач по умолчанию
191 setting_issue_list_default_columns: Колонки, отображаемые в списке задач по умолчанию
191 setting_repositories_encodings: Кодировки репозитория
192 setting_repositories_encodings: Кодировки репозитория
192 setting_emails_footer: Подстрочные примечания Emailов
193 setting_emails_footer: Подстрочные примечания Emailов
193 setting_protocol: Протокол
194 setting_protocol: Протокол
194
195
195 label_user: Пользователь
196 label_user: Пользователь
196 label_user_plural: Пользователи
197 label_user_plural: Пользователи
197 label_user_new: Новый пользователь
198 label_user_new: Новый пользователь
198 label_project: Проект
199 label_project: Проект
199 label_project_new: Новый проект
200 label_project_new: Новый проект
200 label_project_plural: Проекты
201 label_project_plural: Проекты
201 label_project_all: Все проекты
202 label_project_all: Все проекты
202 label_project_latest: Последние проекты
203 label_project_latest: Последние проекты
203 label_issue: Задача
204 label_issue: Задача
204 label_issue_new: Новая задача
205 label_issue_new: Новая задача
205 label_issue_plural: Задачи
206 label_issue_plural: Задачи
206 label_issue_view_all: Просмотреть все задачи
207 label_issue_view_all: Просмотреть все задачи
207 label_document: Документ
208 label_document: Документ
208 label_document_new: Новый документ
209 label_document_new: Новый документ
209 label_document_plural: Документы
210 label_document_plural: Документы
210 label_role: Роль
211 label_role: Роль
211 label_role_plural: Роли
212 label_role_plural: Роли
212 label_role_new: Новая роль
213 label_role_new: Новая роль
213 label_role_and_permissions: Роли и права доступа
214 label_role_and_permissions: Роли и права доступа
214 label_member: Участник
215 label_member: Участник
215 label_member_new: Новый участник
216 label_member_new: Новый участник
216 label_member_plural: Участники
217 label_member_plural: Участники
217 label_tracker: Трекер
218 label_tracker: Трекер
218 label_tracker_plural: Трекеры
219 label_tracker_plural: Трекеры
219 label_tracker_new: Новый трекер
220 label_tracker_new: Новый трекер
220 label_workflow: Последовательность действий
221 label_workflow: Последовательность действий
221 label_issue_status: Статус задачи
222 label_issue_status: Статус задачи
222 label_issue_status_plural: Статусы задачи
223 label_issue_status_plural: Статусы задачи
223 label_issue_status_new: Новый статус
224 label_issue_status_new: Новый статус
224 label_issue_category: Категория задачи
225 label_issue_category: Категория задачи
225 label_issue_category_plural: Категории задачи
226 label_issue_category_plural: Категории задачи
226 label_issue_category_new: Новая категория
227 label_issue_category_new: Новая категория
227 label_custom_field: Поле клиента
228 label_custom_field: Поле клиента
228 label_custom_field_plural: Поля клиента
229 label_custom_field_plural: Поля клиента
229 label_custom_field_new: Новое поле клиента
230 label_custom_field_new: Новое поле клиента
230 label_enumerations: Справочники
231 label_enumerations: Справочники
231 label_enumeration_new: Новое значение
232 label_enumeration_new: Новое значение
232 label_information: Информация
233 label_information: Информация
233 label_information_plural: Информация
234 label_information_plural: Информация
234 label_please_login: Пожалуйста, войдите.
235 label_please_login: Пожалуйста, войдите.
235 label_register: Зарегистрироваться
236 label_register: Зарегистрироваться
236 label_password_lost: Забыли пароль
237 label_password_lost: Забыли пароль
237 label_home: Домашняя страница
238 label_home: Домашняя страница
238 label_my_page: Моя страница
239 label_my_page: Моя страница
239 label_my_account: Моя учетная запись
240 label_my_account: Моя учетная запись
240 label_my_projects: Мои проекты
241 label_my_projects: Мои проекты
241 label_administration: Администрирование
242 label_administration: Администрирование
242 label_login: Войти
243 label_login: Войти
243 label_logout: Выйти
244 label_logout: Выйти
244 label_help: Помощь
245 label_help: Помощь
245 label_reported_issues: Задачи, по которым предоставлен отчет
246 label_reported_issues: Задачи, по которым предоставлен отчет
246 label_assigned_to_me_issues: Мои задачи
247 label_assigned_to_me_issues: Мои задачи
247 label_last_login: Последнее подключение
248 label_last_login: Последнее подключение
248 label_last_updates: Последнее обновление
249 label_last_updates: Последнее обновление
249 label_last_updates_plural: %d последние обновления
250 label_last_updates_plural: %d последние обновления
250 label_registered_on: Зарегистрировано на
251 label_registered_on: Зарегистрировано на
251 label_activity: Активность
252 label_activity: События
252 label_new: Новый
253 label_new: Новый
253 label_logged_as: Вошел как
254 label_logged_as: Вошел как
254 label_environment: Окружение
255 label_environment: Окружение
255 label_authentication: Аутентификация
256 label_authentication: Аутентификация
256 label_auth_source: Режим аутентификации
257 label_auth_source: Режим аутентификации
257 label_auth_source_new: Новый режим аутентификации
258 label_auth_source_new: Новый режим аутентификации
258 label_auth_source_plural: Режимы аутентификации
259 label_auth_source_plural: Режимы аутентификации
259 label_subproject_plural: Подпроекты
260 label_subproject_plural: Подпроекты
260 label_min_max_length: Min - Максимальная длина
261 label_min_max_length: Min - Максимальная длина
261 label_list: Список
262 label_list: Список
262 label_date: Дата
263 label_date: Дата
263 label_integer: Целый
264 label_integer: Целый
264 label_float: Свободный
265 label_float: Свободный
265 label_boolean: Логический
266 label_boolean: Логический
266 label_string: Текст
267 label_string: Текст
267 label_text: Длинный текст
268 label_text: Длинный текст
268 label_attribute: Атрибут
269 label_attribute: Атрибут
269 label_attribute_plural: атрибуты
270 label_attribute_plural: атрибуты
270 label_download: %d Загружено
271 label_download: %d Загружено
271 label_download_plural: %d Загрузок
272 label_download_plural: %d Загрузок
272 label_no_data: Нет данных для отображения
273 label_no_data: Нет данных для отображения
273 label_change_status: Изменить статус
274 label_change_status: Изменить статус
274 label_history: История
275 label_history: История
275 label_attachment: Файл
276 label_attachment: Файл
276 label_attachment_new: Новый файл
277 label_attachment_new: Новый файл
277 label_attachment_delete: Удалить файл
278 label_attachment_delete: Удалить файл
278 label_attachment_plural: Файлы
279 label_attachment_plural: Файлы
279 label_report: Отчет
280 label_report: Отчет
280 label_report_plural: Отчеты
281 label_report_plural: Отчеты
281 label_news: Новости
282 label_news: Новости
282 label_news_new: Добавить новость
283 label_news_new: Добавить новость
283 label_news_plural: Новости
284 label_news_plural: Новости
284 label_news_latest: Последние новости
285 label_news_latest: Последние новости
285 label_news_view_all: Посмотреть все новости
286 label_news_view_all: Посмотреть все новости
286 label_change_log: Журнал изменений
287 label_change_log: Журнал изменений
287 label_settings: Настройки
288 label_settings: Настройки
288 label_overview: Просмотр
289 label_overview: Просмотр
289 label_version: Версия
290 label_version: Версия
290 label_version_new: Новая версия
291 label_version_new: Новая версия
291 label_version_plural: Версии
292 label_version_plural: Версии
292 label_confirmation: Подтверждение
293 label_confirmation: Подтверждение
293 label_export_to: Экспортировать в
294 label_export_to: Экспортировать в
294 label_read: Чтение...
295 label_read: Чтение...
295 label_public_projects: Общие проекты
296 label_public_projects: Общие проекты
296 label_open_issues: открытый
297 label_open_issues: открытый
297 label_open_issues_plural: открытые
298 label_open_issues_plural: открытые
298 label_closed_issues: закрытый
299 label_closed_issues: закрытый
299 label_closed_issues_plural: закрытые
300 label_closed_issues_plural: закрытые
300 label_total: Всего
301 label_total: Всего
301 label_permissions: Права доступа
302 label_permissions: Права доступа
302 label_current_status: Текущий статус
303 label_current_status: Текущий статус
303 label_new_statuses_allowed: Разрешены новые статусы
304 label_new_statuses_allowed: Разрешены новые статусы
304 label_all: Все
305 label_all: Все
305 label_none: Никому
306 label_none: Никому
306 label_nobody: Никто
307 label_nobody: Никто
307 label_next: Следующий
308 label_next: Следующий
308 label_previous: Предыдущий
309 label_previous: Предыдущий
309 label_used_by: Используется
310 label_used_by: Используется
310 label_details: Подробности
311 label_details: Подробности
311 label_add_note: Добавить замечание
312 label_add_note: Добавить замечание
312 label_per_page: На страницу
313 label_per_page: На страницу
313 label_calendar: Календарь
314 label_calendar: Календарь
314 label_months_from: месяцев(ца) с
315 label_months_from: месяцев(ца) с
315 label_gantt: Диаграмма Гантта
316 label_gantt: Диаграмма Гантта
316 label_internal: Внутренний
317 label_internal: Внутренний
317 label_last_changes: менее %d изменений
318 label_last_changes: менее %d изменений
318 label_change_view_all: Просмотреть все изменения
319 label_change_view_all: Просмотреть все изменения
319 label_personalize_page: Персонализировать данную страницу
320 label_personalize_page: Персонализировать данную страницу
320 label_comment: Комментировать
321 label_comment: Комментировать
321 label_comment_plural: Комментарии
322 label_comment_plural: Комментарии
322 label_comment_add: Оставить комментарий
323 label_comment_add: Оставить комментарий
323 label_comment_added: Добавленный комментарий
324 label_comment_added: Добавленный комментарий
324 label_comment_delete: Удалить комментарии
325 label_comment_delete: Удалить комментарии
325 label_query: Запрос клиента
326 label_query: Запрос клиента
326 label_query_plural: Запросы клиентов
327 label_query_plural: Запросы клиентов
327 label_query_new: Новый запрос
328 label_query_new: Новый запрос
328 label_filter_add: Добавить фильтр
329 label_filter_add: Добавить фильтр
329 label_filter_plural: Фильтры
330 label_filter_plural: Фильтры
330 label_equals: есть
331 label_equals: есть
331 label_not_equals: нет
332 label_not_equals: нет
332 label_in_less_than: менее чем
333 label_in_less_than: менее чем
333 label_in_more_than: более чем
334 label_in_more_than: более чем
334 label_in: в
335 label_in: в
335 label_today: сегодня
336 label_today: сегодня
336 label_this_week: на этой неделе
337 label_this_week: на этой неделе
337 label_less_than_ago: менее чем дней(я) назад
338 label_less_than_ago: менее чем дней(я) назад
338 label_more_than_ago: более чем дней(я) назад
339 label_more_than_ago: более чем дней(я) назад
339 label_ago: дней(я) назад
340 label_ago: дней(я) назад
340 label_contains: содержит
341 label_contains: содержит
341 label_not_contains: не содержит
342 label_not_contains: не содержит
342 label_day_plural: дней(я)
343 label_day_plural: дней(я)
343 label_repository: Репозиторий
344 label_repository: Репозиторий
344 label_browse: Искать
345 label_browse: Искать
345 label_modification: %d изменение
346 label_modification: %d изменение
346 label_modification_plural: %d изменений
347 label_modification_plural: %d изменений
347 label_revision: Версия
348 label_revision: Версия
348 label_revision_plural: Версии
349 label_revision_plural: Версии
349 label_added: добавлено
350 label_added: добавлено
350 label_modified: изменено
351 label_modified: изменено
351 label_deleted: удалено
352 label_deleted: удалено
352 label_latest_revision: Последняя версия
353 label_latest_revision: Последняя версия
353 label_latest_revision_plural: Последние версии
354 label_latest_revision_plural: Последние версии
354 label_view_revisions: Просмотреть версии
355 label_view_revisions: Просмотреть версии
355 label_max_size: Максимальный размер
356 label_max_size: Максимальный размер
356 label_on: 'из'
357 label_on: 'из'
357 label_sort_highest: В начало
358 label_sort_highest: В начало
358 label_sort_higher: Вверх
359 label_sort_higher: Вверх
359 label_sort_lower: Вниз
360 label_sort_lower: Вниз
360 label_sort_lowest: В конец
361 label_sort_lowest: В конец
361 label_roadmap: Оперативный план
362 label_roadmap: Оперативный план
362 label_roadmap_due_in: Вовремя
363 label_roadmap_due_in: Вовремя
363 label_roadmap_overdue: %s опоздание
364 label_roadmap_overdue: %s опоздание
364 label_roadmap_no_issues: Нет задач для данной версии
365 label_roadmap_no_issues: Нет задач для данной версии
365 label_search: Поиск
366 label_search: Поиск
366 label_result_plural: Результаты
367 label_result_plural: Результаты
367 label_all_words: Все слова
368 label_all_words: Все слова
368 label_wiki: Wiki
369 label_wiki: Wiki
369 label_wiki_edit: Редактирование Wiki
370 label_wiki_edit: Редактирование Wiki
370 label_wiki_edit_plural: Редактирования Wiki
371 label_wiki_edit_plural: Редактирования Wiki
371 label_wiki_page: Страница Wiki
372 label_wiki_page: Страница Wiki
372 label_wiki_page_plural: Страницы Wiki
373 label_wiki_page_plural: Страницы Wiki
373 label_index_by_title: Индекс по названию
374 label_index_by_title: Индекс по названию
374 label_index_by_date: Индекс по дате
375 label_index_by_date: Индекс по дате
375 label_current_version: Текущая версия
376 label_current_version: Текущая версия
376 label_preview: Предварительный просмотр
377 label_preview: Предварительный просмотр
377 label_feed_plural: Вводы
378 label_feed_plural: Вводы
378 label_changes_details: Подробности по всем изменениям
379 label_changes_details: Подробности по всем изменениям
379 label_issue_tracking: Ситуация по задачам
380 label_issue_tracking: Ситуация по задачам
380 label_spent_time: Затраченное время
381 label_spent_time: Затраченное время
381 label_f_hour: %.2f час
382 label_f_hour: %.2f час
382 label_f_hour_plural: %.2f часов(а)
383 label_f_hour_plural: %.2f часов(а)
383 label_time_tracking: Учет времени
384 label_time_tracking: Учет времени
384 label_change_plural: Изменения
385 label_change_plural: Изменения
385 label_statistics: Статистика
386 label_statistics: Статистика
386 label_commits_per_month: Коммиты на месяц
387 label_commits_per_month: Коммиты на месяц
387 label_commits_per_author: Коммиты на пользователя
388 label_commits_per_author: Коммиты на пользователя
388 label_view_diff: Просмотреть отличия
389 label_view_diff: Просмотреть отличия
389 label_diff_inline: подключенный
390 label_diff_inline: подключенный
390 label_diff_side_by_side: рядом
391 label_diff_side_by_side: рядом
391 label_options: Опции
392 label_options: Опции
392 label_copy_workflow_from: Скопировать последовательность действий из
393 label_copy_workflow_from: Скопировать последовательность действий из
393 label_permissions_report: Отчет о правах доступа
394 label_permissions_report: Отчет о правах доступа
394 label_watched_issues: Просмотренные задачи
395 label_watched_issues: Просмотренные задачи
395 label_related_issues: Относящиеся задачи
396 label_related_issues: Связанные задачи
396 label_applied_status: Применимый статус
397 label_applied_status: Применимый статус
397 label_loading: Загрузка...
398 label_loading: Загрузка...
398 label_relation_new: Новое отношение
399 label_relation_new: Новое отношение
399 label_relation_delete: Удалить отношение
400 label_relation_delete: Удалить связь
400 label_relates_to: относится к
401 label_relates_to: связана с
401 label_duplicates: дубликаты
402 label_duplicates: дублицирует
402 label_blocks: блоки
403 label_blocks: блокирует
403 label_blocked_by: заблокировано
404 label_blocked_by: заблокировано
404 label_precedes: предыдущий
405 label_precedes: предшествует
405 label_follows: следующий
406 label_follows: следующий
406 label_end_to_start: с конца к началу
407 label_end_to_start: с конца к началу
407 label_end_to_end: с конца к концу
408 label_end_to_end: с конца к концу
408 label_start_to_start: с начала к началу
409 label_start_to_start: с начала к началу
409 label_start_to_end: с начала к концу
410 label_start_to_end: с начала к концу
410 label_stay_logged_in: Оставаться в системе
411 label_stay_logged_in: Оставаться в системе
411 label_disabled: отключен
412 label_disabled: отключен
412 label_show_completed_versions: Показать завершенную версию
413 label_show_completed_versions: Показать завершенную версию
413 label_me: Я
414 label_me: Я
414 label_board: Форум
415 label_board: Форум
415 label_board_new: Новый форум
416 label_board_new: Новый форум
416 label_board_plural: Форумы
417 label_board_plural: Форумы
417 label_topic_plural: Темы
418 label_topic_plural: Темы
418 label_message_plural: Сообщения
419 label_message_plural: Сообщения
419 label_message_last: Последнее сообщение
420 label_message_last: Последнее сообщение
420 label_message_new: Новое сообщение
421 label_message_new: Новое сообщение
421 label_reply_plural: Ответы
422 label_reply_plural: Ответы
422 label_send_information: Отправить пользователю информацию по учетной записи
423 label_send_information: Отправить пользователю информацию по учетной записи
423 label_year: Год
424 label_year: Год
424 label_month: Месяц
425 label_month: Месяц
425 label_week: Неделя
426 label_week: Неделя
426 label_date_from: От
427 label_date_from: От
427 label_date_to: Кому
428 label_date_to: Кому
428 label_language_based: На основе языка
429 label_language_based: На основе языка
429 label_sort_by: Сортировать по %s
430 label_sort_by: Сортировать по %s
430 label_send_test_email: Послать email для проверки
431 label_send_test_email: Послать email для проверки
431 label_feeds_access_key_created_on: Ключ доступа RSS создан %s назад
432 label_feeds_access_key_created_on: Ключ доступа RSS создан %s назад
432 label_module_plural: Модули
433 label_module_plural: Модули
433 label_added_time_by: Добавлен %s %s назад
434 label_added_time_by: Добавлен %s %s назад
434 label_updated_time: Обновлен %s назад
435 label_updated_time: Обновлен %s назад
435 label_jump_to_a_project: Перейти к проекту...
436 label_jump_to_a_project: Перейти к проекту...
436 label_file_plural: Файлы
437 label_file_plural: Файлы
437 label_changeset_plural: Наборы изменений
438 label_changeset_plural: Наборы изменений
438 label_default_columns: Колонки по умолчанию
439 label_default_columns: Колонки по умолчанию
439 label_no_change_option: (Нет изменений)
440 label_no_change_option: (Нет изменений)
440 label_bulk_edit_selected_issues: Редактировать все выбранные вопросы
441 label_bulk_edit_selected_issues: Редактировать все выбранные вопросы
441 label_theme: Тема
442 label_theme: Тема
442 label_default: По умолчанию
443 label_default: По умолчанию
443 label_search_titles_only: Искать только в названиях
444 label_search_titles_only: Искать только в названиях
444 label_user_mail_option_all: "Для всех событий во всех моих проектах"
445 label_user_mail_option_all: "Для всех событий во всех моих проектах"
445 label_user_mail_option_selected: "Для всех событий только в выбранном проекте..."
446 label_user_mail_option_selected: "Для всех событий только в выбранном проекте..."
446 label_user_mail_option_none: "Только для того, что я просматриваю или в чем я участвую"
447 label_user_mail_option_none: "Только для того, что я просматриваю или в чем я участвую"
447 label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself"
448 label_user_mail_no_self_notified: "Не извещать об изменениях которые я сделал сам"
448
449
449 button_login: Вход
450 button_login: Вход
450 button_submit: Принять
451 button_submit: Принять
451 button_save: Сохранить
452 button_save: Сохранить
452 button_check_all: Отметить все
453 button_check_all: Отметить все
453 button_uncheck_all: Очистить
454 button_uncheck_all: Очистить
454 button_delete: Удалить
455 button_delete: Удалить
455 button_create: Создать
456 button_create: Создать
456 button_test: Проверить
457 button_test: Проверить
457 button_edit: Редактировать
458 button_edit: Редактировать
458 button_add: Добавить
459 button_add: Добавить
459 button_change: Изменить
460 button_change: Изменить
460 button_apply: Применить
461 button_apply: Применить
461 button_clear: Очистить
462 button_clear: Очистить
462 button_lock: Закрыть
463 button_lock: Закрыть
463 button_unlock: Открыть
464 button_unlock: Открыть
464 button_download: Загрузить
465 button_download: Загрузить
465 button_list: Список
466 button_list: Список
466 button_view: Просмотреть
467 button_view: Просмотреть
467 button_move: Переместить
468 button_move: Переместить
468 button_back: Назад
469 button_back: Назад
469 button_cancel: Отмена
470 button_cancel: Отмена
470 button_activate: Активировать
471 button_activate: Активировать
471 button_sort: Сортировать
472 button_sort: Сортировать
472 button_log_time: Время в системе
473 button_log_time: Время в системе
473 button_rollback: Вернуться к данной версии
474 button_rollback: Вернуться к данной версии
474 button_watch: Смотреть
475 button_watch: Смотреть
475 button_unwatch: Не смотреть
476 button_unwatch: Не смотреть
476 button_reply: Ответить
477 button_reply: Ответить
477 button_archive: Архивировать
478 button_archive: Архивировать
478 button_unarchive: Разархивировать
479 button_unarchive: Разархивировать
479 button_reset: Перезапустить
480 button_reset: Перезапустить
480 button_rename: Переименовать
481 button_rename: Переименовать
481 button_change_password: Изменить пароль
482 button_change_password: Изменить пароль
482 button_copy: Копировать
483 button_copy: Копировать
483
484
484 status_active: Активен
485 status_active: Активен
485 status_registered: Зарегистрирован
486 status_registered: Зарегистрирован
486 status_locked: Закрыт
487 status_locked: Закрыт
487
488
488 text_select_mail_notifications: Выберите действия, на которые будет отсылаться уведомление на электронную почту.
489 text_select_mail_notifications: Выберите действия, на которые будет отсылаться уведомление на электронную почту.
489 text_regexp_info: eg. ^[A-Z0-9]+$
490 text_regexp_info: eg. ^[A-Z0-9]+$
490 text_min_max_length_info: 0 означает отсутствие запретов
491 text_min_max_length_info: 0 означает отсутствие запретов
491 text_project_destroy_confirmation: Вы настаиваете на удалении данного проекта и всей относящейся к нему информации?
492 text_project_destroy_confirmation: Вы настаиваете на удалении данного проекта и всей относящейся к нему информации?
492 text_workflow_edit: Выберите роль и трекер для редактирования последовательности состояний.
493 text_workflow_edit: Выберите роль и трекер для редактирования последовательности состояний
493 text_are_you_sure: Подтвердите
494 text_are_you_sure: Подтвердите
494 text_journal_changed: параметр изменился с %s на %s
495 text_journal_changed: параметр изменился с %s на %s
495 text_journal_set_to: параметр изменился на %s
496 text_journal_set_to: параметр изменился на %s
496 text_journal_deleted: удалено
497 text_journal_deleted: удалено
497 text_tip_task_begin_day: дата начала задачи
498 text_tip_task_begin_day: дата начала задачи
498 text_tip_task_end_day: дата завершения задачи
499 text_tip_task_end_day: дата завершения задачи
499 text_tip_task_begin_end_day: начало задачи и окончание ее в этот день
500 text_tip_task_begin_end_day: начало задачи и окончание ее в этот день
500 text_project_identifier_info: 'Строчные буквы (a-z), допустимы цифры и дефис.<br />Сохраненный идентификатор не может быть изменен.'
501 text_project_identifier_info: 'Строчные буквы (a-z), допустимы цифры и дефис.<br />Сохраненный идентификатор не может быть изменен.'
501 text_caracters_maximum: %d символов(а) максимум.
502 text_caracters_maximum: %d символов(а) максимум.
502 text_length_between: Длина между %d и %d символов.
503 text_length_between: Длина между %d и %d символов.
503 text_tracker_no_workflow: Для этого трекера последовательность действий не определена
504 text_tracker_no_workflow: Для этого трекера последовательность действий не определена
504 text_unallowed_characters: Запрещенные символы
505 text_unallowed_characters: Запрещенные символы
505 text_comma_separated: Допустимы несколько значений (разделенные запятой).
506 text_comma_separated: Допустимы несколько значений (разделенные запятой).
506 text_issues_ref_in_commit_messages: Сопоставление и изменение статуса задач исходя из текста сообщений
507 text_issues_ref_in_commit_messages: Сопоставление и изменение статуса задач исходя из текста сообщений
507 text_issue_added: О вопросе %s был создает отчет.
508 text_issue_added: О вопросе %s был создает отчет.
508 text_issue_updated: Вопрос %s был обновлен.
509 text_issue_updated: Вопрос %s был обновлен.
509 text_wiki_destroy_confirmation: Вы уверены, что хотите удалить данную вики и все содержание?
510 text_wiki_destroy_confirmation: Вы уверены, что хотите удалить данную вики и все содержание?
510 text_issue_category_destroy_question: Несколько задач (%d) назначено в данную категорию. Что вы хотите предпринять?
511 text_issue_category_destroy_question: Несколько задач (%d) назначено в данную категорию. Что вы хотите предпринять?
511 text_issue_category_destroy_assignments: Удалить назначения категории
512 text_issue_category_destroy_assignments: Удалить назначения категории
512 text_issue_category_reassign_to: Переназначить задачи для данной категории
513 text_issue_category_reassign_to: Переназначить задачи для данной категории
513 text_user_mail_option: "Для невыбранных проектов, вы будете получать уведомления только о том что просматриваете или в чем участвуете (например, вопросы автором которых вы являетесь или которые вам назначенАы)."
514 text_user_mail_option: "Для невыбранных проектов, вы будете получать уведомления только о том что просматриваете или в чем участвуете (например, вопросы автором которых вы являетесь или которые вам назначенАы)."
514
515
515 default_role_manager: Менеджер
516 default_role_manager: Менеджер
516 default_role_developper: Разработчик
517 default_role_developper: Разработчик
517 default_role_reporter: Генератор отчетов
518 default_role_reporter: Генератор отчетов
518 default_tracker_bug: Bug Ошибка
519 default_tracker_bug: Bug Ошибка
519 default_tracker_feature: Характеристика
520 default_tracker_feature: Характеристика
520 default_tracker_support: Поддержка
521 default_tracker_support: Поддержка
521 default_issue_status_new: Новый
522 default_issue_status_new: Новый
522 default_issue_status_assigned: Назначен
523 default_issue_status_assigned: Назначен
523 default_issue_status_resolved: Заблокирован
524 default_issue_status_resolved: Заблокирован
524 default_issue_status_feedback: Обратная связь
525 default_issue_status_feedback: Обратная связь
525 default_issue_status_closed: Закрыт
526 default_issue_status_closed: Закрыт
526 default_issue_status_rejected: Отказ
527 default_issue_status_rejected: Отказ
527 default_doc_category_user: Документация пользователя
528 default_doc_category_user: Документация пользователя
528 default_doc_category_tech: Техническая документация
529 default_doc_category_tech: Техническая документация
529 default_priority_low: Низкий
530 default_priority_low: Низкий
530 default_priority_normal: Нормальный
531 default_priority_normal: Нормальный
531 default_priority_high: Высокий
532 default_priority_high: Высокий
532 default_priority_urgent: Срочный
533 default_priority_urgent: Срочный
533 default_priority_immediate: Немедленный
534 default_priority_immediate: Немедленный
534 default_activity_design: Проектирование
535 default_activity_design: Проектирование
535 default_activity_development: Разработка
536 default_activity_development: Разработка
536
537
537 enumeration_issue_priorities: Приоритеты задач
538 enumeration_issue_priorities: Приоритеты задач
538 enumeration_doc_categories: Категории документов
539 enumeration_doc_categories: Категории документов
539 enumeration_activities: Действия (учет времени)
540 enumeration_activities: Действия (учет времени)
540 setting_time_format: Time format
General Comments 0
You need to be logged in to leave comments. Login now