##// END OF EJS Templates
fix for #8973: Export feature(to csv/pdf) doesn't work in Japanese...
Jean-Philippe Lang -
r284:6a875eb69184
parent child
Show More
@@ -1,592 +1,592
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 require 'csv'
18 require 'csv'
19
19
20 class ProjectsController < ApplicationController
20 class ProjectsController < ApplicationController
21 layout 'base'
21 layout 'base'
22 before_filter :find_project, :authorize, :except => [ :index, :list, :add ]
22 before_filter :find_project, :authorize, :except => [ :index, :list, :add ]
23 before_filter :require_admin, :only => [ :add, :destroy ]
23 before_filter :require_admin, :only => [ :add, :destroy ]
24
24
25 helper :sort
25 helper :sort
26 include SortHelper
26 include SortHelper
27 helper :custom_fields
27 helper :custom_fields
28 include CustomFieldsHelper
28 include CustomFieldsHelper
29 helper :ifpdf
29 helper :ifpdf
30 include IfpdfHelper
30 include IfpdfHelper
31 helper IssuesHelper
31 helper IssuesHelper
32 helper :queries
32 helper :queries
33 include QueriesHelper
33 include QueriesHelper
34
34
35 def index
35 def index
36 list
36 list
37 render :action => 'list' unless request.xhr?
37 render :action => 'list' unless request.xhr?
38 end
38 end
39
39
40 # Lists public projects
40 # Lists public projects
41 def list
41 def list
42 sort_init 'name', 'asc'
42 sort_init 'name', 'asc'
43 sort_update
43 sort_update
44 @project_count = Project.count(:all, :conditions => ["is_public=?", true])
44 @project_count = Project.count(:all, :conditions => ["is_public=?", true])
45 @project_pages = Paginator.new self, @project_count,
45 @project_pages = Paginator.new self, @project_count,
46 15,
46 15,
47 params['page']
47 params['page']
48 @projects = Project.find :all, :order => sort_clause,
48 @projects = Project.find :all, :order => sort_clause,
49 :conditions => ["is_public=?", true],
49 :conditions => ["is_public=?", true],
50 :limit => @project_pages.items_per_page,
50 :limit => @project_pages.items_per_page,
51 :offset => @project_pages.current.offset
51 :offset => @project_pages.current.offset
52
52
53 render :action => "list", :layout => false if request.xhr?
53 render :action => "list", :layout => false if request.xhr?
54 end
54 end
55
55
56 # Add a new project
56 # Add a new project
57 def add
57 def add
58 @custom_fields = IssueCustomField.find(:all)
58 @custom_fields = IssueCustomField.find(:all)
59 @root_projects = Project.find(:all, :conditions => "parent_id is null")
59 @root_projects = Project.find(:all, :conditions => "parent_id is null")
60 @project = Project.new(params[:project])
60 @project = Project.new(params[:project])
61 if request.get?
61 if request.get?
62 @custom_values = ProjectCustomField.find(:all).collect { |x| CustomValue.new(:custom_field => x, :customized => @project) }
62 @custom_values = ProjectCustomField.find(:all).collect { |x| CustomValue.new(:custom_field => x, :customized => @project) }
63 else
63 else
64 @project.custom_fields = CustomField.find(params[:custom_field_ids]) if params[:custom_field_ids]
64 @project.custom_fields = CustomField.find(params[:custom_field_ids]) if params[:custom_field_ids]
65 @custom_values = ProjectCustomField.find(:all).collect { |x| CustomValue.new(:custom_field => x, :customized => @project, :value => params["custom_fields"][x.id.to_s]) }
65 @custom_values = ProjectCustomField.find(:all).collect { |x| CustomValue.new(:custom_field => x, :customized => @project, :value => params["custom_fields"][x.id.to_s]) }
66 @project.custom_values = @custom_values
66 @project.custom_values = @custom_values
67 if params[:repository_enabled] && params[:repository_enabled] == "1"
67 if params[:repository_enabled] && params[:repository_enabled] == "1"
68 @project.repository = Repository.new
68 @project.repository = Repository.new
69 @project.repository.attributes = params[:repository]
69 @project.repository.attributes = params[:repository]
70 end
70 end
71 if @project.save
71 if @project.save
72 flash[:notice] = l(:notice_successful_create)
72 flash[:notice] = l(:notice_successful_create)
73 redirect_to :controller => 'admin', :action => 'projects'
73 redirect_to :controller => 'admin', :action => 'projects'
74 end
74 end
75 end
75 end
76 end
76 end
77
77
78 # Show @project
78 # Show @project
79 def show
79 def show
80 @custom_values = @project.custom_values.find(:all, :include => :custom_field)
80 @custom_values = @project.custom_values.find(:all, :include => :custom_field)
81 @members = @project.members.find(:all, :include => [:user, :role])
81 @members = @project.members.find(:all, :include => [:user, :role])
82 @subprojects = @project.children if @project.children.size > 0
82 @subprojects = @project.children if @project.children.size > 0
83 @news = @project.news.find(:all, :limit => 5, :include => [ :author, :project ], :order => "news.created_on DESC")
83 @news = @project.news.find(:all, :limit => 5, :include => [ :author, :project ], :order => "news.created_on DESC")
84 @trackers = Tracker.find(:all, :order => 'position')
84 @trackers = Tracker.find(:all, :order => 'position')
85 @open_issues_by_tracker = Issue.count(:group => :tracker, :joins => "INNER JOIN issue_statuses ON issue_statuses.id = issues.status_id", :conditions => ["project_id=? and issue_statuses.is_closed=?", @project.id, false])
85 @open_issues_by_tracker = Issue.count(:group => :tracker, :joins => "INNER JOIN issue_statuses ON issue_statuses.id = issues.status_id", :conditions => ["project_id=? and issue_statuses.is_closed=?", @project.id, false])
86 @total_issues_by_tracker = Issue.count(:group => :tracker, :conditions => ["project_id=?", @project.id])
86 @total_issues_by_tracker = Issue.count(:group => :tracker, :conditions => ["project_id=?", @project.id])
87 end
87 end
88
88
89 def settings
89 def settings
90 @root_projects = Project::find(:all, :conditions => ["parent_id is null and id <> ?", @project.id])
90 @root_projects = Project::find(:all, :conditions => ["parent_id is null and id <> ?", @project.id])
91 @custom_fields = IssueCustomField.find(:all)
91 @custom_fields = IssueCustomField.find(:all)
92 @issue_category ||= IssueCategory.new
92 @issue_category ||= IssueCategory.new
93 @member ||= @project.members.new
93 @member ||= @project.members.new
94 @roles = Role.find(:all, :order => 'position')
94 @roles = Role.find(:all, :order => 'position')
95 @users = User.find_active(:all) - @project.users
95 @users = User.find_active(:all) - @project.users
96 @custom_values ||= ProjectCustomField.find(:all).collect { |x| @project.custom_values.find_by_custom_field_id(x.id) || CustomValue.new(:custom_field => x) }
96 @custom_values ||= ProjectCustomField.find(:all).collect { |x| @project.custom_values.find_by_custom_field_id(x.id) || CustomValue.new(:custom_field => x) }
97 end
97 end
98
98
99 # Edit @project
99 # Edit @project
100 def edit
100 def edit
101 if request.post?
101 if request.post?
102 @project.custom_fields = IssueCustomField.find(params[:custom_field_ids]) if params[:custom_field_ids]
102 @project.custom_fields = IssueCustomField.find(params[:custom_field_ids]) if params[:custom_field_ids]
103 if params[:custom_fields]
103 if params[:custom_fields]
104 @custom_values = ProjectCustomField.find(:all).collect { |x| CustomValue.new(:custom_field => x, :customized => @project, :value => params["custom_fields"][x.id.to_s]) }
104 @custom_values = ProjectCustomField.find(:all).collect { |x| CustomValue.new(:custom_field => x, :customized => @project, :value => params["custom_fields"][x.id.to_s]) }
105 @project.custom_values = @custom_values
105 @project.custom_values = @custom_values
106 end
106 end
107 if params[:repository_enabled]
107 if params[:repository_enabled]
108 case params[:repository_enabled]
108 case params[:repository_enabled]
109 when "0"
109 when "0"
110 @project.repository = nil
110 @project.repository = nil
111 when "1"
111 when "1"
112 @project.repository ||= Repository.new
112 @project.repository ||= Repository.new
113 @project.repository.update_attributes params[:repository]
113 @project.repository.update_attributes params[:repository]
114 end
114 end
115 end
115 end
116 @project.attributes = params[:project]
116 @project.attributes = params[:project]
117 if @project.save
117 if @project.save
118 flash[:notice] = l(:notice_successful_update)
118 flash[:notice] = l(:notice_successful_update)
119 redirect_to :action => 'settings', :id => @project
119 redirect_to :action => 'settings', :id => @project
120 else
120 else
121 settings
121 settings
122 render :action => 'settings'
122 render :action => 'settings'
123 end
123 end
124 end
124 end
125 end
125 end
126
126
127 # Delete @project
127 # Delete @project
128 def destroy
128 def destroy
129 if request.post? and params[:confirm]
129 if request.post? and params[:confirm]
130 @project.destroy
130 @project.destroy
131 redirect_to :controller => 'admin', :action => 'projects'
131 redirect_to :controller => 'admin', :action => 'projects'
132 end
132 end
133 end
133 end
134
134
135 # Add a new issue category to @project
135 # Add a new issue category to @project
136 def add_issue_category
136 def add_issue_category
137 if request.post?
137 if request.post?
138 @issue_category = @project.issue_categories.build(params[:issue_category])
138 @issue_category = @project.issue_categories.build(params[:issue_category])
139 if @issue_category.save
139 if @issue_category.save
140 flash[:notice] = l(:notice_successful_create)
140 flash[:notice] = l(:notice_successful_create)
141 redirect_to :action => 'settings', :tab => 'categories', :id => @project
141 redirect_to :action => 'settings', :tab => 'categories', :id => @project
142 else
142 else
143 settings
143 settings
144 render :action => 'settings'
144 render :action => 'settings'
145 end
145 end
146 end
146 end
147 end
147 end
148
148
149 # Add a new version to @project
149 # Add a new version to @project
150 def add_version
150 def add_version
151 @version = @project.versions.build(params[:version])
151 @version = @project.versions.build(params[:version])
152 if request.post? and @version.save
152 if request.post? and @version.save
153 flash[:notice] = l(:notice_successful_create)
153 flash[:notice] = l(:notice_successful_create)
154 redirect_to :action => 'settings', :tab => 'versions', :id => @project
154 redirect_to :action => 'settings', :tab => 'versions', :id => @project
155 end
155 end
156 end
156 end
157
157
158 # Add a new member to @project
158 # Add a new member to @project
159 def add_member
159 def add_member
160 @member = @project.members.build(params[:member])
160 @member = @project.members.build(params[:member])
161 if request.post?
161 if request.post?
162 if @member.save
162 if @member.save
163 flash[:notice] = l(:notice_successful_create)
163 flash[:notice] = l(:notice_successful_create)
164 redirect_to :action => 'settings', :tab => 'members', :id => @project
164 redirect_to :action => 'settings', :tab => 'members', :id => @project
165 else
165 else
166 settings
166 settings
167 render :action => 'settings'
167 render :action => 'settings'
168 end
168 end
169 end
169 end
170 end
170 end
171
171
172 # Show members list of @project
172 # Show members list of @project
173 def list_members
173 def list_members
174 @members = @project.members.find(:all)
174 @members = @project.members.find(:all)
175 end
175 end
176
176
177 # Add a new document to @project
177 # Add a new document to @project
178 def add_document
178 def add_document
179 @categories = Enumeration::get_values('DCAT')
179 @categories = Enumeration::get_values('DCAT')
180 @document = @project.documents.build(params[:document])
180 @document = @project.documents.build(params[:document])
181 if request.post? and @document.save
181 if request.post? and @document.save
182 # Save the attachments
182 # Save the attachments
183 params[:attachments].each { |a|
183 params[:attachments].each { |a|
184 Attachment.create(:container => @document, :file => a, :author => logged_in_user) unless a.size == 0
184 Attachment.create(:container => @document, :file => a, :author => logged_in_user) unless a.size == 0
185 } if params[:attachments] and params[:attachments].is_a? Array
185 } if params[:attachments] and params[:attachments].is_a? Array
186 flash[:notice] = l(:notice_successful_create)
186 flash[:notice] = l(:notice_successful_create)
187 Mailer.deliver_document_add(@document) if Permission.find_by_controller_and_action(params[:controller], params[:action]).mail_enabled?
187 Mailer.deliver_document_add(@document) if Permission.find_by_controller_and_action(params[:controller], params[:action]).mail_enabled?
188 redirect_to :action => 'list_documents', :id => @project
188 redirect_to :action => 'list_documents', :id => @project
189 end
189 end
190 end
190 end
191
191
192 # Show documents list of @project
192 # Show documents list of @project
193 def list_documents
193 def list_documents
194 @documents = @project.documents.find :all, :include => :category
194 @documents = @project.documents.find :all, :include => :category
195 end
195 end
196
196
197 # Add a new issue to @project
197 # Add a new issue to @project
198 def add_issue
198 def add_issue
199 @tracker = Tracker.find(params[:tracker_id])
199 @tracker = Tracker.find(params[:tracker_id])
200 @priorities = Enumeration::get_values('IPRI')
200 @priorities = Enumeration::get_values('IPRI')
201 @issue = Issue.new(:project => @project, :tracker => @tracker)
201 @issue = Issue.new(:project => @project, :tracker => @tracker)
202 if request.get?
202 if request.get?
203 @issue.start_date = Date.today
203 @issue.start_date = Date.today
204 @custom_values = @project.custom_fields_for_issues(@tracker).collect { |x| CustomValue.new(:custom_field => x, :customized => @issue) }
204 @custom_values = @project.custom_fields_for_issues(@tracker).collect { |x| CustomValue.new(:custom_field => x, :customized => @issue) }
205 else
205 else
206 @issue.attributes = params[:issue]
206 @issue.attributes = params[:issue]
207 @issue.author_id = self.logged_in_user.id if self.logged_in_user
207 @issue.author_id = self.logged_in_user.id if self.logged_in_user
208 # Multiple file upload
208 # Multiple file upload
209 @attachments = []
209 @attachments = []
210 params[:attachments].each { |a|
210 params[:attachments].each { |a|
211 @attachments << Attachment.new(:container => @issue, :file => a, :author => logged_in_user) unless a.size == 0
211 @attachments << Attachment.new(:container => @issue, :file => a, :author => logged_in_user) unless a.size == 0
212 } if params[:attachments] and params[:attachments].is_a? Array
212 } if params[:attachments] and params[:attachments].is_a? Array
213 @custom_values = @project.custom_fields_for_issues(@tracker).collect { |x| CustomValue.new(:custom_field => x, :customized => @issue, :value => params["custom_fields"][x.id.to_s]) }
213 @custom_values = @project.custom_fields_for_issues(@tracker).collect { |x| CustomValue.new(:custom_field => x, :customized => @issue, :value => params["custom_fields"][x.id.to_s]) }
214 @issue.custom_values = @custom_values
214 @issue.custom_values = @custom_values
215 if @issue.save
215 if @issue.save
216 @attachments.each(&:save)
216 @attachments.each(&:save)
217 flash[:notice] = l(:notice_successful_create)
217 flash[:notice] = l(:notice_successful_create)
218 Mailer.deliver_issue_add(@issue) if Permission.find_by_controller_and_action(params[:controller], params[:action]).mail_enabled?
218 Mailer.deliver_issue_add(@issue) if Permission.find_by_controller_and_action(params[:controller], params[:action]).mail_enabled?
219 redirect_to :action => 'list_issues', :id => @project
219 redirect_to :action => 'list_issues', :id => @project
220 end
220 end
221 end
221 end
222 end
222 end
223
223
224 # Show filtered/sorted issues list of @project
224 # Show filtered/sorted issues list of @project
225 def list_issues
225 def list_issues
226 sort_init 'issues.id', 'desc'
226 sort_init 'issues.id', 'desc'
227 sort_update
227 sort_update
228
228
229 retrieve_query
229 retrieve_query
230
230
231 @results_per_page_options = [ 15, 25, 50, 100 ]
231 @results_per_page_options = [ 15, 25, 50, 100 ]
232 if params[:per_page] and @results_per_page_options.include? params[:per_page].to_i
232 if params[:per_page] and @results_per_page_options.include? params[:per_page].to_i
233 @results_per_page = params[:per_page].to_i
233 @results_per_page = params[:per_page].to_i
234 session[:results_per_page] = @results_per_page
234 session[:results_per_page] = @results_per_page
235 else
235 else
236 @results_per_page = session[:results_per_page] || 25
236 @results_per_page = session[:results_per_page] || 25
237 end
237 end
238
238
239 if @query.valid?
239 if @query.valid?
240 @issue_count = Issue.count(:include => [:status, :project], :conditions => @query.statement)
240 @issue_count = Issue.count(:include => [:status, :project], :conditions => @query.statement)
241 @issue_pages = Paginator.new self, @issue_count, @results_per_page, params['page']
241 @issue_pages = Paginator.new self, @issue_count, @results_per_page, params['page']
242 @issues = Issue.find :all, :order => sort_clause,
242 @issues = Issue.find :all, :order => sort_clause,
243 :include => [ :author, :status, :tracker, :project, :priority ],
243 :include => [ :author, :status, :tracker, :project, :priority ],
244 :conditions => @query.statement,
244 :conditions => @query.statement,
245 :limit => @issue_pages.items_per_page,
245 :limit => @issue_pages.items_per_page,
246 :offset => @issue_pages.current.offset
246 :offset => @issue_pages.current.offset
247 end
247 end
248 @trackers = Tracker.find :all, :order => 'position'
248 @trackers = Tracker.find :all, :order => 'position'
249 render :layout => false if request.xhr?
249 render :layout => false if request.xhr?
250 end
250 end
251
251
252 # Export filtered/sorted issues list to CSV
252 # Export filtered/sorted issues list to CSV
253 def export_issues_csv
253 def export_issues_csv
254 sort_init 'issues.id', 'desc'
254 sort_init 'issues.id', 'desc'
255 sort_update
255 sort_update
256
256
257 retrieve_query
257 retrieve_query
258 render :action => 'list_issues' and return unless @query.valid?
258 render :action => 'list_issues' and return unless @query.valid?
259
259
260 @issues = Issue.find :all, :order => sort_clause,
260 @issues = Issue.find :all, :order => sort_clause,
261 :include => [ :author, :status, :tracker, :priority, {:custom_values => :custom_field} ],
261 :include => [ :author, :status, :tracker, :priority, {:custom_values => :custom_field} ],
262 :conditions => @query.statement,
262 :conditions => @query.statement,
263 :limit => Setting.issues_export_limit
263 :limit => Setting.issues_export_limit
264
264
265 ic = Iconv.new('ISO-8859-1', 'UTF-8')
265 ic = Iconv.new(l(:general_csv_encoding), 'UTF-8')
266 export = StringIO.new
266 export = StringIO.new
267 CSV::Writer.generate(export, l(:general_csv_separator)) do |csv|
267 CSV::Writer.generate(export, l(:general_csv_separator)) do |csv|
268 # csv header fields
268 # csv header fields
269 headers = [ "#", l(:field_status),
269 headers = [ "#", l(:field_status),
270 l(:field_tracker),
270 l(:field_tracker),
271 l(:field_priority),
271 l(:field_priority),
272 l(:field_subject),
272 l(:field_subject),
273 l(:field_author),
273 l(:field_author),
274 l(:field_start_date),
274 l(:field_start_date),
275 l(:field_due_date),
275 l(:field_due_date),
276 l(:field_done_ratio),
276 l(:field_done_ratio),
277 l(:field_created_on),
277 l(:field_created_on),
278 l(:field_updated_on)
278 l(:field_updated_on)
279 ]
279 ]
280 for custom_field in @project.all_custom_fields
280 for custom_field in @project.all_custom_fields
281 headers << custom_field.name
281 headers << custom_field.name
282 end
282 end
283 csv << headers.collect {|c| ic.iconv(c) }
283 csv << headers.collect {|c| ic.iconv(c) }
284 # csv lines
284 # csv lines
285 @issues.each do |issue|
285 @issues.each do |issue|
286 fields = [issue.id, issue.status.name,
286 fields = [issue.id, issue.status.name,
287 issue.tracker.name,
287 issue.tracker.name,
288 issue.priority.name,
288 issue.priority.name,
289 issue.subject,
289 issue.subject,
290 issue.author.display_name,
290 issue.author.display_name,
291 issue.start_date ? l_date(issue.start_date) : nil,
291 issue.start_date ? l_date(issue.start_date) : nil,
292 issue.due_date ? l_date(issue.due_date) : nil,
292 issue.due_date ? l_date(issue.due_date) : nil,
293 issue.done_ratio,
293 issue.done_ratio,
294 l_datetime(issue.created_on),
294 l_datetime(issue.created_on),
295 l_datetime(issue.updated_on)
295 l_datetime(issue.updated_on)
296 ]
296 ]
297 for custom_field in @project.all_custom_fields
297 for custom_field in @project.all_custom_fields
298 fields << (show_value issue.custom_value_for(custom_field))
298 fields << (show_value issue.custom_value_for(custom_field))
299 end
299 end
300 csv << fields.collect {|c| ic.iconv(c.to_s) }
300 csv << fields.collect {|c| ic.iconv(c.to_s) }
301 end
301 end
302 end
302 end
303 export.rewind
303 export.rewind
304 send_data(export.read, :type => 'text/csv; header=present', :filename => 'export.csv')
304 send_data(export.read, :type => 'text/csv; header=present', :filename => 'export.csv')
305 end
305 end
306
306
307 # Export filtered/sorted issues to PDF
307 # Export filtered/sorted issues to PDF
308 def export_issues_pdf
308 def export_issues_pdf
309 sort_init 'issues.id', 'desc'
309 sort_init 'issues.id', 'desc'
310 sort_update
310 sort_update
311
311
312 retrieve_query
312 retrieve_query
313 render :action => 'list_issues' and return unless @query.valid?
313 render :action => 'list_issues' and return unless @query.valid?
314
314
315 @issues = Issue.find :all, :order => sort_clause,
315 @issues = Issue.find :all, :order => sort_clause,
316 :include => [ :author, :status, :tracker, :priority ],
316 :include => [ :author, :status, :tracker, :priority ],
317 :conditions => @query.statement,
317 :conditions => @query.statement,
318 :limit => Setting.issues_export_limit
318 :limit => Setting.issues_export_limit
319
319
320 @options_for_rfpdf ||= {}
320 @options_for_rfpdf ||= {}
321 @options_for_rfpdf[:file_name] = "export.pdf"
321 @options_for_rfpdf[:file_name] = "export.pdf"
322 render :layout => false
322 render :layout => false
323 end
323 end
324
324
325 def move_issues
325 def move_issues
326 @issues = @project.issues.find(params[:issue_ids]) if params[:issue_ids]
326 @issues = @project.issues.find(params[:issue_ids]) if params[:issue_ids]
327 redirect_to :action => 'list_issues', :id => @project and return unless @issues
327 redirect_to :action => 'list_issues', :id => @project and return unless @issues
328 @projects = []
328 @projects = []
329 # find projects to which the user is allowed to move the issue
329 # find projects to which the user is allowed to move the issue
330 @logged_in_user.memberships.each {|m| @projects << m.project if Permission.allowed_to_role("projects/move_issues", m.role_id)}
330 @logged_in_user.memberships.each {|m| @projects << m.project if Permission.allowed_to_role("projects/move_issues", m.role_id)}
331 # issue can be moved to any tracker
331 # issue can be moved to any tracker
332 @trackers = Tracker.find(:all)
332 @trackers = Tracker.find(:all)
333 if request.post? and params[:new_project_id] and params[:new_tracker_id]
333 if request.post? and params[:new_project_id] and params[:new_tracker_id]
334 new_project = Project.find(params[:new_project_id])
334 new_project = Project.find(params[:new_project_id])
335 new_tracker = Tracker.find(params[:new_tracker_id])
335 new_tracker = Tracker.find(params[:new_tracker_id])
336 @issues.each { |i|
336 @issues.each { |i|
337 # project dependent properties
337 # project dependent properties
338 unless i.project_id == new_project.id
338 unless i.project_id == new_project.id
339 i.category = nil
339 i.category = nil
340 i.fixed_version = nil
340 i.fixed_version = nil
341 end
341 end
342 # move the issue
342 # move the issue
343 i.project = new_project
343 i.project = new_project
344 i.tracker = new_tracker
344 i.tracker = new_tracker
345 i.save
345 i.save
346 }
346 }
347 flash[:notice] = l(:notice_successful_update)
347 flash[:notice] = l(:notice_successful_update)
348 redirect_to :action => 'list_issues', :id => @project
348 redirect_to :action => 'list_issues', :id => @project
349 end
349 end
350 end
350 end
351
351
352 def add_query
352 def add_query
353 @query = Query.new(params[:query])
353 @query = Query.new(params[:query])
354 @query.project = @project
354 @query.project = @project
355 @query.user = logged_in_user
355 @query.user = logged_in_user
356
356
357 params[:fields].each do |field|
357 params[:fields].each do |field|
358 @query.add_filter(field, params[:operators][field], params[:values][field])
358 @query.add_filter(field, params[:operators][field], params[:values][field])
359 end if params[:fields]
359 end if params[:fields]
360
360
361 if request.post? and @query.save
361 if request.post? and @query.save
362 flash[:notice] = l(:notice_successful_create)
362 flash[:notice] = l(:notice_successful_create)
363 redirect_to :controller => 'reports', :action => 'issue_report', :id => @project
363 redirect_to :controller => 'reports', :action => 'issue_report', :id => @project
364 end
364 end
365 render :layout => false if request.xhr?
365 render :layout => false if request.xhr?
366 end
366 end
367
367
368 # Add a news to @project
368 # Add a news to @project
369 def add_news
369 def add_news
370 @news = News.new(:project => @project)
370 @news = News.new(:project => @project)
371 if request.post?
371 if request.post?
372 @news.attributes = params[:news]
372 @news.attributes = params[:news]
373 @news.author_id = self.logged_in_user.id if self.logged_in_user
373 @news.author_id = self.logged_in_user.id if self.logged_in_user
374 if @news.save
374 if @news.save
375 flash[:notice] = l(:notice_successful_create)
375 flash[:notice] = l(:notice_successful_create)
376 redirect_to :action => 'list_news', :id => @project
376 redirect_to :action => 'list_news', :id => @project
377 end
377 end
378 end
378 end
379 end
379 end
380
380
381 # Show news list of @project
381 # Show news list of @project
382 def list_news
382 def list_news
383 @news_pages, @news = paginate :news, :per_page => 10, :conditions => ["project_id=?", @project.id], :include => :author, :order => "news.created_on DESC"
383 @news_pages, @news = paginate :news, :per_page => 10, :conditions => ["project_id=?", @project.id], :include => :author, :order => "news.created_on DESC"
384 render :action => "list_news", :layout => false if request.xhr?
384 render :action => "list_news", :layout => false if request.xhr?
385 end
385 end
386
386
387 def add_file
387 def add_file
388 if request.post?
388 if request.post?
389 @version = @project.versions.find_by_id(params[:version_id])
389 @version = @project.versions.find_by_id(params[:version_id])
390 # Save the attachments
390 # Save the attachments
391 @attachments = []
391 @attachments = []
392 params[:attachments].each { |file|
392 params[:attachments].each { |file|
393 next unless file.size > 0
393 next unless file.size > 0
394 a = Attachment.create(:container => @version, :file => file, :author => logged_in_user)
394 a = Attachment.create(:container => @version, :file => file, :author => logged_in_user)
395 @attachments << a unless a.new_record?
395 @attachments << a unless a.new_record?
396 } if params[:attachments] and params[:attachments].is_a? Array
396 } if params[:attachments] and params[:attachments].is_a? Array
397 Mailer.deliver_attachments_add(@attachments) if !@attachments.empty? and Permission.find_by_controller_and_action(params[:controller], params[:action]).mail_enabled?
397 Mailer.deliver_attachments_add(@attachments) if !@attachments.empty? and Permission.find_by_controller_and_action(params[:controller], params[:action]).mail_enabled?
398 redirect_to :controller => 'projects', :action => 'list_files', :id => @project
398 redirect_to :controller => 'projects', :action => 'list_files', :id => @project
399 end
399 end
400 @versions = @project.versions
400 @versions = @project.versions
401 end
401 end
402
402
403 def list_files
403 def list_files
404 @versions = @project.versions
404 @versions = @project.versions
405 end
405 end
406
406
407 # Show changelog for @project
407 # Show changelog for @project
408 def changelog
408 def changelog
409 @trackers = Tracker.find(:all, :conditions => ["is_in_chlog=?", true], :order => 'position')
409 @trackers = Tracker.find(:all, :conditions => ["is_in_chlog=?", true], :order => 'position')
410 if request.get?
410 if request.get?
411 @selected_tracker_ids = @trackers.collect {|t| t.id.to_s }
411 @selected_tracker_ids = @trackers.collect {|t| t.id.to_s }
412 else
412 else
413 @selected_tracker_ids = params[:tracker_ids].collect { |id| id.to_i.to_s } if params[:tracker_ids] and params[:tracker_ids].is_a? Array
413 @selected_tracker_ids = params[:tracker_ids].collect { |id| id.to_i.to_s } if params[:tracker_ids] and params[:tracker_ids].is_a? Array
414 end
414 end
415 @selected_tracker_ids ||= []
415 @selected_tracker_ids ||= []
416 @fixed_issues = @project.issues.find(:all,
416 @fixed_issues = @project.issues.find(:all,
417 :include => [ :fixed_version, :status, :tracker ],
417 :include => [ :fixed_version, :status, :tracker ],
418 :conditions => [ "issue_statuses.is_closed=? and issues.tracker_id in (#{@selected_tracker_ids.join(',')}) and issues.fixed_version_id is not null", true],
418 :conditions => [ "issue_statuses.is_closed=? and issues.tracker_id in (#{@selected_tracker_ids.join(',')}) and issues.fixed_version_id is not null", true],
419 :order => "versions.effective_date DESC, issues.id DESC"
419 :order => "versions.effective_date DESC, issues.id DESC"
420 ) unless @selected_tracker_ids.empty?
420 ) unless @selected_tracker_ids.empty?
421 @fixed_issues ||= []
421 @fixed_issues ||= []
422 end
422 end
423
423
424 def roadmap
424 def roadmap
425 @trackers = Tracker.find(:all, :conditions => ["is_in_roadmap=?", true], :order => 'position')
425 @trackers = Tracker.find(:all, :conditions => ["is_in_roadmap=?", true], :order => 'position')
426 if request.get?
426 if request.get?
427 @selected_tracker_ids = @trackers.collect {|t| t.id.to_s }
427 @selected_tracker_ids = @trackers.collect {|t| t.id.to_s }
428 else
428 else
429 @selected_tracker_ids = params[:tracker_ids].collect { |id| id.to_i.to_s } if params[:tracker_ids] and params[:tracker_ids].is_a? Array
429 @selected_tracker_ids = params[:tracker_ids].collect { |id| id.to_i.to_s } if params[:tracker_ids] and params[:tracker_ids].is_a? Array
430 end
430 end
431 @selected_tracker_ids ||= []
431 @selected_tracker_ids ||= []
432 @versions = @project.versions.find(:all,
432 @versions = @project.versions.find(:all,
433 :conditions => [ "versions.effective_date>?", Date.today],
433 :conditions => [ "versions.effective_date>?", Date.today],
434 :order => "versions.effective_date ASC"
434 :order => "versions.effective_date ASC"
435 )
435 )
436 end
436 end
437
437
438 def activity
438 def activity
439 if params[:year] and params[:year].to_i > 1900
439 if params[:year] and params[:year].to_i > 1900
440 @year = params[:year].to_i
440 @year = params[:year].to_i
441 if params[:month] and params[:month].to_i > 0 and params[:month].to_i < 13
441 if params[:month] and params[:month].to_i > 0 and params[:month].to_i < 13
442 @month = params[:month].to_i
442 @month = params[:month].to_i
443 end
443 end
444 end
444 end
445 @year ||= Date.today.year
445 @year ||= Date.today.year
446 @month ||= Date.today.month
446 @month ||= Date.today.month
447
447
448 @date_from = Date.civil(@year, @month, 1)
448 @date_from = Date.civil(@year, @month, 1)
449 @date_to = (@date_from >> 1)-1
449 @date_to = (@date_from >> 1)-1
450
450
451 @events_by_day = {}
451 @events_by_day = {}
452
452
453 unless params[:show_issues] == "0"
453 unless params[:show_issues] == "0"
454 @project.issues.find(:all, :include => [:author, :status], :conditions => ["issues.created_on>=? and issues.created_on<=?", @date_from, @date_to] ).each { |i|
454 @project.issues.find(:all, :include => [:author, :status], :conditions => ["issues.created_on>=? and issues.created_on<=?", @date_from, @date_to] ).each { |i|
455 @events_by_day[i.created_on.to_date] ||= []
455 @events_by_day[i.created_on.to_date] ||= []
456 @events_by_day[i.created_on.to_date] << i
456 @events_by_day[i.created_on.to_date] << i
457 }
457 }
458 @show_issues = 1
458 @show_issues = 1
459 end
459 end
460
460
461 unless params[:show_news] == "0"
461 unless params[:show_news] == "0"
462 @project.news.find(:all, :conditions => ["news.created_on>=? and news.created_on<=?", @date_from, @date_to], :include => :author ).each { |i|
462 @project.news.find(:all, :conditions => ["news.created_on>=? and news.created_on<=?", @date_from, @date_to], :include => :author ).each { |i|
463 @events_by_day[i.created_on.to_date] ||= []
463 @events_by_day[i.created_on.to_date] ||= []
464 @events_by_day[i.created_on.to_date] << i
464 @events_by_day[i.created_on.to_date] << i
465 }
465 }
466 @show_news = 1
466 @show_news = 1
467 end
467 end
468
468
469 unless params[:show_files] == "0"
469 unless params[:show_files] == "0"
470 Attachment.find(:all, :select => "attachments.*", :joins => "LEFT JOIN versions ON versions.id = attachments.container_id", :conditions => ["attachments.container_type='Version' and versions.project_id=? and attachments.created_on>=? and attachments.created_on<=?", @project.id, @date_from, @date_to], :include => :author ).each { |i|
470 Attachment.find(:all, :select => "attachments.*", :joins => "LEFT JOIN versions ON versions.id = attachments.container_id", :conditions => ["attachments.container_type='Version' and versions.project_id=? and attachments.created_on>=? and attachments.created_on<=?", @project.id, @date_from, @date_to], :include => :author ).each { |i|
471 @events_by_day[i.created_on.to_date] ||= []
471 @events_by_day[i.created_on.to_date] ||= []
472 @events_by_day[i.created_on.to_date] << i
472 @events_by_day[i.created_on.to_date] << i
473 }
473 }
474 @show_files = 1
474 @show_files = 1
475 end
475 end
476
476
477 unless params[:show_documents] == "0"
477 unless params[:show_documents] == "0"
478 @project.documents.find(:all, :conditions => ["documents.created_on>=? and documents.created_on<=?", @date_from, @date_to] ).each { |i|
478 @project.documents.find(:all, :conditions => ["documents.created_on>=? and documents.created_on<=?", @date_from, @date_to] ).each { |i|
479 @events_by_day[i.created_on.to_date] ||= []
479 @events_by_day[i.created_on.to_date] ||= []
480 @events_by_day[i.created_on.to_date] << i
480 @events_by_day[i.created_on.to_date] << i
481 }
481 }
482 Attachment.find(:all, :select => "attachments.*", :joins => "LEFT JOIN documents ON documents.id = attachments.container_id", :conditions => ["attachments.container_type='Document' and documents.project_id=? and attachments.created_on>=? and attachments.created_on<=?", @project.id, @date_from, @date_to], :include => :author ).each { |i|
482 Attachment.find(:all, :select => "attachments.*", :joins => "LEFT JOIN documents ON documents.id = attachments.container_id", :conditions => ["attachments.container_type='Document' and documents.project_id=? and attachments.created_on>=? and attachments.created_on<=?", @project.id, @date_from, @date_to], :include => :author ).each { |i|
483 @events_by_day[i.created_on.to_date] ||= []
483 @events_by_day[i.created_on.to_date] ||= []
484 @events_by_day[i.created_on.to_date] << i
484 @events_by_day[i.created_on.to_date] << i
485 }
485 }
486 @show_documents = 1
486 @show_documents = 1
487 end
487 end
488
488
489 render :layout => false if request.xhr?
489 render :layout => false if request.xhr?
490 end
490 end
491
491
492 def calendar
492 def calendar
493 if params[:year] and params[:year].to_i > 1900
493 if params[:year] and params[:year].to_i > 1900
494 @year = params[:year].to_i
494 @year = params[:year].to_i
495 if params[:month] and params[:month].to_i > 0 and params[:month].to_i < 13
495 if params[:month] and params[:month].to_i > 0 and params[:month].to_i < 13
496 @month = params[:month].to_i
496 @month = params[:month].to_i
497 end
497 end
498 end
498 end
499 @year ||= Date.today.year
499 @year ||= Date.today.year
500 @month ||= Date.today.month
500 @month ||= Date.today.month
501
501
502 @date_from = Date.civil(@year, @month, 1)
502 @date_from = Date.civil(@year, @month, 1)
503 @date_to = (@date_from >> 1)-1
503 @date_to = (@date_from >> 1)-1
504 # start on monday
504 # start on monday
505 @date_from = @date_from - (@date_from.cwday-1)
505 @date_from = @date_from - (@date_from.cwday-1)
506 # finish on sunday
506 # finish on sunday
507 @date_to = @date_to + (7-@date_to.cwday)
507 @date_to = @date_to + (7-@date_to.cwday)
508
508
509 @issues = @project.issues.find(:all, :include => [:tracker, :status, :assigned_to, :priority], :conditions => ["((start_date>=? and start_date<=?) or (due_date>=? and due_date<=?))", @date_from, @date_to, @date_from, @date_to])
509 @issues = @project.issues.find(:all, :include => [:tracker, :status, :assigned_to, :priority], :conditions => ["((start_date>=? and start_date<=?) or (due_date>=? and due_date<=?))", @date_from, @date_to, @date_from, @date_to])
510 render :layout => false if request.xhr?
510 render :layout => false if request.xhr?
511 end
511 end
512
512
513 def gantt
513 def gantt
514 if params[:year] and params[:year].to_i >0
514 if params[:year] and params[:year].to_i >0
515 @year_from = params[:year].to_i
515 @year_from = params[:year].to_i
516 if params[:month] and params[:month].to_i >=1 and params[:month].to_i <= 12
516 if params[:month] and params[:month].to_i >=1 and params[:month].to_i <= 12
517 @month_from = params[:month].to_i
517 @month_from = params[:month].to_i
518 else
518 else
519 @month_from = 1
519 @month_from = 1
520 end
520 end
521 else
521 else
522 @month_from ||= (Date.today << 1).month
522 @month_from ||= (Date.today << 1).month
523 @year_from ||= (Date.today << 1).year
523 @year_from ||= (Date.today << 1).year
524 end
524 end
525
525
526 @zoom = (params[:zoom].to_i > 0 and params[:zoom].to_i < 5) ? params[:zoom].to_i : 2
526 @zoom = (params[:zoom].to_i > 0 and params[:zoom].to_i < 5) ? params[:zoom].to_i : 2
527 @months = (params[:months].to_i > 0 and params[:months].to_i < 25) ? params[:months].to_i : 6
527 @months = (params[:months].to_i > 0 and params[:months].to_i < 25) ? params[:months].to_i : 6
528
528
529 @date_from = Date.civil(@year_from, @month_from, 1)
529 @date_from = Date.civil(@year_from, @month_from, 1)
530 @date_to = (@date_from >> @months) - 1
530 @date_to = (@date_from >> @months) - 1
531 @issues = @project.issues.find(:all, :order => "start_date, due_date", :include => [:tracker, :status, :assigned_to, :priority], :conditions => ["(((start_date>=? and start_date<=?) or (due_date>=? and due_date<=?) or (start_date<? and due_date>?)) and start_date is not null and due_date is not null)", @date_from, @date_to, @date_from, @date_to, @date_from, @date_to])
531 @issues = @project.issues.find(:all, :order => "start_date, due_date", :include => [:tracker, :status, :assigned_to, :priority], :conditions => ["(((start_date>=? and start_date<=?) or (due_date>=? and due_date<=?) or (start_date<? and due_date>?)) and start_date is not null and due_date is not null)", @date_from, @date_to, @date_from, @date_to, @date_from, @date_to])
532
532
533 if params[:output]=='pdf'
533 if params[:output]=='pdf'
534 @options_for_rfpdf ||= {}
534 @options_for_rfpdf ||= {}
535 @options_for_rfpdf[:file_name] = "gantt.pdf"
535 @options_for_rfpdf[:file_name] = "gantt.pdf"
536 render :template => "projects/gantt.rfpdf", :layout => false
536 render :template => "projects/gantt.rfpdf", :layout => false
537 else
537 else
538 render :template => "projects/gantt.rhtml"
538 render :template => "projects/gantt.rhtml"
539 end
539 end
540 end
540 end
541
541
542 def search
542 def search
543 @token = params[:token]
543 @token = params[:token]
544 @scope = params[:scope] || (params[:submit] ? [] : %w(issues news documents) )
544 @scope = params[:scope] || (params[:submit] ? [] : %w(issues news documents) )
545
545
546 if @token and @token.length > 2
546 if @token and @token.length > 2
547 @token.strip!
547 @token.strip!
548 like_token = "%#{@token}%"
548 like_token = "%#{@token}%"
549 @results = []
549 @results = []
550 @results += @project.issues.find(:all, :include => :author, :conditions => ["issues.subject like ? or issues.description like ?", like_token, like_token] ) if @scope.include? 'issues'
550 @results += @project.issues.find(:all, :include => :author, :conditions => ["issues.subject like ? or issues.description like ?", like_token, like_token] ) if @scope.include? 'issues'
551 @results += @project.news.find(:all, :conditions => ["news.title like ? or news.description like ?", like_token, like_token], :include => :author ) if @scope.include? 'news'
551 @results += @project.news.find(:all, :conditions => ["news.title like ? or news.description like ?", like_token, like_token], :include => :author ) if @scope.include? 'news'
552 @results += @project.documents.find(:all, :conditions => ["title like ? or description like ?", like_token, like_token] ) if @scope.include? 'documents'
552 @results += @project.documents.find(:all, :conditions => ["title like ? or description like ?", like_token, like_token] ) if @scope.include? 'documents'
553 end
553 end
554 end
554 end
555
555
556 private
556 private
557 # Find project of id params[:id]
557 # Find project of id params[:id]
558 # if not found, redirect to project list
558 # if not found, redirect to project list
559 # Used as a before_filter
559 # Used as a before_filter
560 def find_project
560 def find_project
561 @project = Project.find(params[:id])
561 @project = Project.find(params[:id])
562 @html_title = @project.name
562 @html_title = @project.name
563 rescue ActiveRecord::RecordNotFound
563 rescue ActiveRecord::RecordNotFound
564 render_404
564 render_404
565 end
565 end
566
566
567 # Retrieve query from session or build a new query
567 # Retrieve query from session or build a new query
568 def retrieve_query
568 def retrieve_query
569 if params[:query_id]
569 if params[:query_id]
570 @query = @project.queries.find(params[:query_id])
570 @query = @project.queries.find(params[:query_id])
571 session[:query] = @query
571 session[:query] = @query
572 else
572 else
573 if params[:set_filter] or !session[:query] or session[:query].project_id != @project.id
573 if params[:set_filter] or !session[:query] or session[:query].project_id != @project.id
574 # Give it a name, required to be valid
574 # Give it a name, required to be valid
575 @query = Query.new(:name => "_")
575 @query = Query.new(:name => "_")
576 @query.project = @project
576 @query.project = @project
577 if params[:fields] and params[:fields].is_a? Array
577 if params[:fields] and params[:fields].is_a? Array
578 params[:fields].each do |field|
578 params[:fields].each do |field|
579 @query.add_filter(field, params[:operators][field], params[:values][field])
579 @query.add_filter(field, params[:operators][field], params[:values][field])
580 end
580 end
581 else
581 else
582 @query.available_filters.keys.each do |field|
582 @query.available_filters.keys.each do |field|
583 @query.add_short_filter(field, params[field]) if params[field]
583 @query.add_short_filter(field, params[field]) if params[field]
584 end
584 end
585 end
585 end
586 session[:query] = @query
586 session[:query] = @query
587 else
587 else
588 @query = session[:query]
588 @query = session[:query]
589 end
589 end
590 end
590 end
591 end
591 end
592 end
592 end
@@ -1,53 +1,70
1 # redMine - project management software
1 # redMine - project management software
2 # Copyright (C) 2006 Jean-Philippe Lang
2 # Copyright (C) 2006 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 require 'iconv'
18 require 'iconv'
19 require 'rfpdf/chinese'
19
20
20 module IfpdfHelper
21 module IfpdfHelper
21
22
22 class IFPDF < FPDF
23 class IFPDF < FPDF
23
24 include GLoc
24 attr_accessor :footer_date
25 attr_accessor :footer_date
25
26
26 def initialize
27 def initialize(lang)
27 super
28 super()
29 set_language_if_valid lang
30 case current_language
31 when :ja
32 extend(PDF_Japanese)
33 AddSJISFont()
34 @font_for_content = 'SJIS'
35 @font_for_footer = 'SJIS'
36 else
37 @font_for_content = 'Arial'
38 @font_for_footer = 'Helvetica'
39 end
28 SetCreator("redMine #{Redmine::VERSION}")
40 SetCreator("redMine #{Redmine::VERSION}")
41 SetFont(@font_for_content)
42 end
43
44 def SetFontStyle(style, size)
45 SetFont(@font_for_content, style, size)
29 end
46 end
30
47
31 def Cell(w,h=0,txt='',border=0,ln=0,align='',fill=0,link='')
48 def Cell(w,h=0,txt='',border=0,ln=0,align='',fill=0,link='')
32 @ic ||= Iconv.new('ISO-8859-1', 'UTF-8')
49 @ic ||= Iconv.new(l(:general_pdf_encoding), 'UTF-8')
33 txt = begin
50 txt = begin
34 @ic.iconv(txt)
51 @ic.iconv(txt)
35 rescue
52 rescue
36 txt
53 txt
37 end
54 end
38 super w,h,txt,border,ln,align,fill,link
55 super w,h,txt,border,ln,align,fill,link
39 end
56 end
40
57
41 def Footer
58 def Footer
42 SetFont('Helvetica', 'I', 8)
59 SetFont(@font_for_footer, 'I', 8)
43 SetY(-15)
60 SetY(-15)
44 SetX(15)
61 SetX(15)
45 Cell(0, 5, @footer_date, 0, 0, 'L')
62 Cell(0, 5, @footer_date, 0, 0, 'L')
46 SetY(-15)
63 SetY(-15)
47 SetX(-30)
64 SetX(-30)
48 Cell(0, 5, PageNo().to_s + '/{nb}', 0, 0, 'C')
65 Cell(0, 5, PageNo().to_s + '/{nb}', 0, 0, 'C')
49 end
66 end
50
67
51 end
68 end
52
69
53 end
70 end
@@ -1,100 +1,100
1 <% pdf.SetFont('Arial','B',11)
1 <% pdf.SetFontStyle('B',11)
2 pdf.Cell(190,10, "#{issue.project.name} - #{issue.tracker.name} # #{issue.long_id} - #{issue.subject}")
2 pdf.Cell(190,10, "#{issue.project.name} - #{issue.tracker.name} # #{issue.long_id} - #{issue.subject}")
3 pdf.Ln
3 pdf.Ln
4
4
5 y0 = pdf.GetY
5 y0 = pdf.GetY
6
6
7 pdf.SetFont('Arial','B',9)
7 pdf.SetFontStyle('B',9)
8 pdf.Cell(35,5, l(:field_status) + ":","LT")
8 pdf.Cell(35,5, l(:field_status) + ":","LT")
9 pdf.SetFont('Arial','',9)
9 pdf.SetFontStyle('',9)
10 pdf.Cell(60,5, issue.status.name,"RT")
10 pdf.Cell(60,5, issue.status.name,"RT")
11 pdf.SetFont('Arial','B',9)
11 pdf.SetFontStyle('B',9)
12 pdf.Cell(35,5, l(:field_priority) + ":","LT")
12 pdf.Cell(35,5, l(:field_priority) + ":","LT")
13 pdf.SetFont('Arial','',9)
13 pdf.SetFontStyle('',9)
14 pdf.Cell(60,5, issue.priority.name,"RT")
14 pdf.Cell(60,5, issue.priority.name,"RT")
15 pdf.Ln
15 pdf.Ln
16
16
17 pdf.SetFont('Arial','B',9)
17 pdf.SetFontStyle('B',9)
18 pdf.Cell(35,5, l(:field_author) + ":","L")
18 pdf.Cell(35,5, l(:field_author) + ":","L")
19 pdf.SetFont('Arial','',9)
19 pdf.SetFontStyle('',9)
20 pdf.Cell(60,5, issue.author.name,"R")
20 pdf.Cell(60,5, issue.author.name,"R")
21 pdf.SetFont('Arial','B',9)
21 pdf.SetFontStyle('B',9)
22 pdf.Cell(35,5, l(:field_category) + ":","L")
22 pdf.Cell(35,5, l(:field_category) + ":","L")
23 pdf.SetFont('Arial','',9)
23 pdf.SetFontStyle('',9)
24 pdf.Cell(60,5, (issue.category ? issue.category.name : "-"),"R")
24 pdf.Cell(60,5, (issue.category ? issue.category.name : "-"),"R")
25 pdf.Ln
25 pdf.Ln
26
26
27 pdf.SetFont('Arial','B',9)
27 pdf.SetFontStyle('B',9)
28 pdf.Cell(35,5, l(:field_created_on) + ":","L")
28 pdf.Cell(35,5, l(:field_created_on) + ":","L")
29 pdf.SetFont('Arial','',9)
29 pdf.SetFontStyle('',9)
30 pdf.Cell(60,5, format_date(issue.created_on),"R")
30 pdf.Cell(60,5, format_date(issue.created_on),"R")
31 pdf.SetFont('Arial','B',9)
31 pdf.SetFontStyle('B',9)
32 pdf.Cell(35,5, l(:field_assigned_to) + ":","L")
32 pdf.Cell(35,5, l(:field_assigned_to) + ":","L")
33 pdf.SetFont('Arial','',9)
33 pdf.SetFontStyle('',9)
34 pdf.Cell(60,5, (issue.assigned_to ? issue.assigned_to.name : "-"),"R")
34 pdf.Cell(60,5, (issue.assigned_to ? issue.assigned_to.name : "-"),"R")
35 pdf.Ln
35 pdf.Ln
36
36
37 pdf.SetFont('Arial','B',9)
37 pdf.SetFontStyle('B',9)
38 pdf.Cell(35,5, l(:field_updated_on) + ":","LB")
38 pdf.Cell(35,5, l(:field_updated_on) + ":","LB")
39 pdf.SetFont('Arial','',9)
39 pdf.SetFontStyle('',9)
40 pdf.Cell(60,5, format_date(issue.updated_on),"RB")
40 pdf.Cell(60,5, format_date(issue.updated_on),"RB")
41 pdf.SetFont('Arial','B',9)
41 pdf.SetFontStyle('B',9)
42 pdf.Cell(35,5, l(:field_due_date) + ":","LB")
42 pdf.Cell(35,5, l(:field_due_date) + ":","LB")
43 pdf.SetFont('Arial','',9)
43 pdf.SetFontStyle('',9)
44 pdf.Cell(60,5, format_date(issue.due_date),"RB")
44 pdf.Cell(60,5, format_date(issue.due_date),"RB")
45 pdf.Ln
45 pdf.Ln
46
46
47 for custom_value in issue.custom_values
47 for custom_value in issue.custom_values
48 pdf.SetFont('Arial','B',9)
48 pdf.SetFontStyle('B',9)
49 pdf.Cell(35,5, custom_value.custom_field.name + ":","L")
49 pdf.Cell(35,5, custom_value.custom_field.name + ":","L")
50 pdf.SetFont('Arial','',9)
50 pdf.SetFontStyle('',9)
51 pdf.MultiCell(155,5, (show_value custom_value),"R")
51 pdf.MultiCell(155,5, (show_value custom_value),"R")
52 end
52 end
53
53
54 pdf.SetFont('Arial','B',9)
54 pdf.SetFontStyle('B',9)
55 pdf.Cell(35,5, l(:field_subject) + ":","LTB")
55 pdf.Cell(35,5, l(:field_subject) + ":","LTB")
56 pdf.SetFont('Arial','',9)
56 pdf.SetFontStyle('',9)
57 pdf.Cell(155,5, issue.subject,"RTB")
57 pdf.Cell(155,5, issue.subject,"RTB")
58 pdf.Ln
58 pdf.Ln
59
59
60 pdf.SetFont('Arial','B',9)
60 pdf.SetFontStyle('B',9)
61 pdf.Cell(35,5, l(:field_description) + ":")
61 pdf.Cell(35,5, l(:field_description) + ":")
62 pdf.SetFont('Arial','',9)
62 pdf.SetFontStyle('',9)
63 pdf.MultiCell(155,5, issue.description,"BR")
63 pdf.MultiCell(155,5, issue.description,"BR")
64
64
65 pdf.Line(pdf.GetX, y0, pdf.GetX, pdf.GetY)
65 pdf.Line(pdf.GetX, y0, pdf.GetX, pdf.GetY)
66 pdf.Line(pdf.GetX, pdf.GetY, 170, pdf.GetY)
66 pdf.Line(pdf.GetX, pdf.GetY, 170, pdf.GetY)
67
67
68 pdf.Ln
68 pdf.Ln
69
69
70 pdf.SetFont('Arial','B',9)
70 pdf.SetFontStyle('B',9)
71 pdf.Cell(190,5, l(:label_history), "B")
71 pdf.Cell(190,5, l(:label_history), "B")
72 pdf.Ln
72 pdf.Ln
73 for journal in issue.journals.find(:all, :include => :user, :order => "journals.created_on desc")
73 for journal in issue.journals.find(:all, :include => :user, :order => "journals.created_on desc")
74 pdf.SetFont('Arial','B',8)
74 pdf.SetFontStyle('B',8)
75 pdf.Cell(190,5, format_time(journal.created_on) + " - " + journal.user.name)
75 pdf.Cell(190,5, format_time(journal.created_on) + " - " + journal.user.name)
76 pdf.Ln
76 pdf.Ln
77 pdf.SetFont('Arial','I',8)
77 pdf.SetFontStyle('I',8)
78 for detail in journal.details
78 for detail in journal.details
79 pdf.Cell(190,5, "- " + show_detail(detail, true))
79 pdf.Cell(190,5, "- " + show_detail(detail, true))
80 pdf.Ln
80 pdf.Ln
81 end
81 end
82 if journal.notes?
82 if journal.notes?
83 pdf.SetFont('Arial','',8)
83 pdf.SetFontStyle('',8)
84 pdf.MultiCell(190,5, journal.notes)
84 pdf.MultiCell(190,5, journal.notes)
85 end
85 end
86 pdf.Ln
86 pdf.Ln
87 end
87 end
88
88
89 pdf.SetFont('Arial','B',9)
89 pdf.SetFontStyle('B',9)
90 pdf.Cell(190,5, l(:label_attachment_plural), "B")
90 pdf.Cell(190,5, l(:label_attachment_plural), "B")
91 pdf.Ln
91 pdf.Ln
92 for attachment in issue.attachments
92 for attachment in issue.attachments
93 pdf.SetFont('Arial','',8)
93 pdf.SetFontStyle('',8)
94 pdf.Cell(80,5, attachment.filename)
94 pdf.Cell(80,5, attachment.filename)
95 pdf.Cell(20,5, number_to_human_size(attachment.filesize),0,0,"R")
95 pdf.Cell(20,5, number_to_human_size(attachment.filesize),0,0,"R")
96 pdf.Cell(20,5, format_date(attachment.created_on),0,0,"R")
96 pdf.Cell(20,5, format_date(attachment.created_on),0,0,"R")
97 pdf.Cell(70,5, attachment.author.name,0,0,"R")
97 pdf.Cell(70,5, attachment.author.name,0,0,"R")
98 pdf.Ln
98 pdf.Ln
99 end
99 end
100 %> No newline at end of file
100 %>
@@ -1,10 +1,10
1 <% pdf=IfpdfHelper::IFPDF.new
1 <% pdf=IfpdfHelper::IFPDF.new(current_language)
2 pdf.SetTitle("#{@project.name} - ##{@issue.tracker.name} #{@issue.id}")
2 pdf.SetTitle("#{@project.name} - ##{@issue.tracker.name} #{@issue.id}")
3 pdf.AliasNbPages
3 pdf.AliasNbPages
4 pdf.footer_date = format_date(Date.today)
4 pdf.footer_date = format_date(Date.today)
5 pdf.AddPage
5 pdf.AddPage
6
6
7 render :partial => 'issues/pdf', :locals => { :pdf => pdf, :issue => @issue }
7 render :partial => 'issues/pdf', :locals => { :pdf => pdf, :issue => @issue }
8 %>
8 %>
9
9
10 <%= pdf.Output %> No newline at end of file
10 <%= pdf.Output %>
@@ -1,49 +1,49
1 <% pdf=IfpdfHelper::IFPDF.new
1 <% pdf=IfpdfHelper::IFPDF.new(current_language)
2 pdf.SetTitle("#{@project.name} - #{l(:label_issue_plural)}")
2 pdf.SetTitle("#{@project.name} - #{l(:label_issue_plural)}")
3 pdf.AliasNbPages
3 pdf.AliasNbPages
4 pdf.footer_date = format_date(Date.today)
4 pdf.footer_date = format_date(Date.today)
5 pdf.AddPage("L")
5 pdf.AddPage("L")
6 row_height = 7
6 row_height = 7
7
7
8 #
8 #
9 # title
9 # title
10 #
10 #
11 pdf.SetFont('Arial','B',11)
11 pdf.SetFontStyle('B',11)
12 pdf.Cell(190,10, "#{@project.name} - #{l(:label_issue_plural)}")
12 pdf.Cell(190,10, "#{@project.name} - #{l(:label_issue_plural)}")
13 pdf.Ln
13 pdf.Ln
14
14
15 #
15 #
16 # headers
16 # headers
17 #
17 #
18 pdf.SetFont('Arial','B',10)
18 pdf.SetFontStyle('B',10)
19 pdf.SetFillColor(230, 230, 230)
19 pdf.SetFillColor(230, 230, 230)
20 pdf.Cell(15, row_height, "#", 0, 0, 'L', 1)
20 pdf.Cell(15, row_height, "#", 0, 0, 'L', 1)
21 pdf.Cell(30, row_height, l(:field_tracker), 0, 0, 'L', 1)
21 pdf.Cell(30, row_height, l(:field_tracker), 0, 0, 'L', 1)
22 pdf.Cell(30, row_height, l(:field_status), 0, 0, 'L', 1)
22 pdf.Cell(30, row_height, l(:field_status), 0, 0, 'L', 1)
23 pdf.Cell(30, row_height, l(:field_priority), 0, 0, 'L', 1)
23 pdf.Cell(30, row_height, l(:field_priority), 0, 0, 'L', 1)
24 pdf.Cell(40, row_height, l(:field_author), 0, 0, 'L', 1)
24 pdf.Cell(40, row_height, l(:field_author), 0, 0, 'L', 1)
25 pdf.Cell(25, row_height, l(:field_updated_on), 0, 0, 'L', 1)
25 pdf.Cell(25, row_height, l(:field_updated_on), 0, 0, 'L', 1)
26 pdf.Cell(0, row_height, l(:field_subject), 0, 0, 'L', 1)
26 pdf.Cell(0, row_height, l(:field_subject), 0, 0, 'L', 1)
27 pdf.Line(10, pdf.GetY, 287, pdf.GetY)
27 pdf.Line(10, pdf.GetY, 287, pdf.GetY)
28 pdf.Ln
28 pdf.Ln
29 pdf.Line(10, pdf.GetY, 287, pdf.GetY)
29 pdf.Line(10, pdf.GetY, 287, pdf.GetY)
30 pdf.SetY(pdf.GetY() + 1)
30 pdf.SetY(pdf.GetY() + 1)
31
31
32 #
32 #
33 # rows
33 # rows
34 #
34 #
35 pdf.SetFont('Arial','',9)
35 pdf.SetFontStyle('',9)
36 pdf.SetFillColor(255, 255, 255)
36 pdf.SetFillColor(255, 255, 255)
37 @issues.each do |issue|
37 @issues.each do |issue|
38 pdf.Cell(15, row_height, issue.id.to_s, 0, 0, 'L', 1)
38 pdf.Cell(15, row_height, issue.id.to_s, 0, 0, 'L', 1)
39 pdf.Cell(30, row_height, issue.tracker.name, 0, 0, 'L', 1)
39 pdf.Cell(30, row_height, issue.tracker.name, 0, 0, 'L', 1)
40 pdf.Cell(30, row_height, issue.status.name, 0, 0, 'L', 1)
40 pdf.Cell(30, row_height, issue.status.name, 0, 0, 'L', 1)
41 pdf.Cell(30, row_height, issue.priority.name, 0, 0, 'L', 1)
41 pdf.Cell(30, row_height, issue.priority.name, 0, 0, 'L', 1)
42 pdf.Cell(40, row_height, issue.author.name, 0, 0, 'L', 1)
42 pdf.Cell(40, row_height, issue.author.name, 0, 0, 'L', 1)
43 pdf.Cell(25, row_height, format_date(issue.updated_on), 0, 0, 'L', 1)
43 pdf.Cell(25, row_height, format_date(issue.updated_on), 0, 0, 'L', 1)
44 pdf.MultiCell(0, row_height, issue.subject)
44 pdf.MultiCell(0, row_height, issue.subject)
45 pdf.Line(10, pdf.GetY, 287, pdf.GetY)
45 pdf.Line(10, pdf.GetY, 287, pdf.GetY)
46 pdf.SetY(pdf.GetY() + 1)
46 pdf.SetY(pdf.GetY() + 1)
47 end
47 end
48 %>
48 %>
49 <%= pdf.Output %> No newline at end of file
49 <%= pdf.Output %>
@@ -1,169 +1,169
1 <%
1 <%
2 pdf=IfpdfHelper::IFPDF.new
2 pdf=IfpdfHelper::IFPDF.new(current_language)
3 pdf.SetTitle("#{@project.name} - #{l(:label_gantt)}")
3 pdf.SetTitle("#{@project.name} - #{l(:label_gantt)}")
4 pdf.AliasNbPages
4 pdf.AliasNbPages
5 pdf.footer_date = format_date(Date.today)
5 pdf.footer_date = format_date(Date.today)
6 pdf.AddPage("L")
6 pdf.AddPage("L")
7 pdf.SetFont('Arial','B',12)
7 pdf.SetFontStyle('B',12)
8 pdf.SetX(15)
8 pdf.SetX(15)
9 pdf.Cell(70, 20, @project.name)
9 pdf.Cell(70, 20, @project.name)
10 pdf.Ln
10 pdf.Ln
11 pdf.SetFont('Arial','B',9)
11 pdf.SetFontStyle('B',9)
12
12
13 subject_width = 70
13 subject_width = 70
14 header_heigth = 5
14 header_heigth = 5
15
15
16 headers_heigth = header_heigth
16 headers_heigth = header_heigth
17 show_weeks = false
17 show_weeks = false
18 show_days = false
18 show_days = false
19
19
20 if @months < 7
20 if @months < 7
21 show_weeks = true
21 show_weeks = true
22 headers_heigth = 2*header_heigth
22 headers_heigth = 2*header_heigth
23 if @months < 3
23 if @months < 3
24 show_days = true
24 show_days = true
25 headers_heigth = 3*header_heigth
25 headers_heigth = 3*header_heigth
26 end
26 end
27 end
27 end
28
28
29 g_width = 210
29 g_width = 210
30 zoom = (g_width) / (@date_to - @date_from + 1)
30 zoom = (g_width) / (@date_to - @date_from + 1)
31 g_height = 120
31 g_height = 120
32 t_height = g_height + headers_heigth
32 t_height = g_height + headers_heigth
33
33
34 y_start = pdf.GetY
34 y_start = pdf.GetY
35
35
36
36
37 #
37 #
38 # Months headers
38 # Months headers
39 #
39 #
40 month_f = @date_from
40 month_f = @date_from
41 left = subject_width
41 left = subject_width
42 height = header_heigth
42 height = header_heigth
43 @months.times do
43 @months.times do
44 width = ((month_f >> 1) - month_f) * zoom
44 width = ((month_f >> 1) - month_f) * zoom
45 pdf.SetY(y_start)
45 pdf.SetY(y_start)
46 pdf.SetX(left)
46 pdf.SetX(left)
47 pdf.Cell(width, height, "#{month_f.year}-#{month_f.month}", "LTR", 0, "C")
47 pdf.Cell(width, height, "#{month_f.year}-#{month_f.month}", "LTR", 0, "C")
48 left = left + width
48 left = left + width
49 month_f = month_f >> 1
49 month_f = month_f >> 1
50 end
50 end
51
51
52 #
52 #
53 # Weeks headers
53 # Weeks headers
54 #
54 #
55 if show_weeks
55 if show_weeks
56 left = subject_width
56 left = subject_width
57 height = header_heigth
57 height = header_heigth
58 if @date_from.cwday == 1
58 if @date_from.cwday == 1
59 # @date_from is monday
59 # @date_from is monday
60 week_f = @date_from
60 week_f = @date_from
61 else
61 else
62 # find next monday after @date_from
62 # find next monday after @date_from
63 week_f = @date_from + (7 - @date_from.cwday + 1)
63 week_f = @date_from + (7 - @date_from.cwday + 1)
64 width = (7 - @date_from.cwday + 1) * zoom-1
64 width = (7 - @date_from.cwday + 1) * zoom-1
65 pdf.SetY(y_start + header_heigth)
65 pdf.SetY(y_start + header_heigth)
66 pdf.SetX(left)
66 pdf.SetX(left)
67 pdf.Cell(width + 1, height, "", "LTR")
67 pdf.Cell(width + 1, height, "", "LTR")
68 left = left + width+1
68 left = left + width+1
69 end
69 end
70 while week_f <= @date_to
70 while week_f <= @date_to
71 width = (week_f + 6 <= @date_to) ? 7 * zoom : (@date_to - week_f + 1) * zoom
71 width = (week_f + 6 <= @date_to) ? 7 * zoom : (@date_to - week_f + 1) * zoom
72 pdf.SetY(y_start + header_heigth)
72 pdf.SetY(y_start + header_heigth)
73 pdf.SetX(left)
73 pdf.SetX(left)
74 pdf.Cell(width, height, (width >= 5 ? week_f.cweek.to_s : ""), "LTR", 0, "C")
74 pdf.Cell(width, height, (width >= 5 ? week_f.cweek.to_s : ""), "LTR", 0, "C")
75 left = left + width
75 left = left + width
76 week_f = week_f+7
76 week_f = week_f+7
77 end
77 end
78 end
78 end
79
79
80 #
80 #
81 # Days headers
81 # Days headers
82 #
82 #
83 if show_days
83 if show_days
84 left = subject_width
84 left = subject_width
85 height = header_heigth
85 height = header_heigth
86 wday = @date_from.cwday
86 wday = @date_from.cwday
87 pdf.SetFont('Arial','B',7)
87 pdf.SetFontStyle('B',7)
88 (@date_to - @date_from + 1).to_i.times do
88 (@date_to - @date_from + 1).to_i.times do
89 width = zoom
89 width = zoom
90 pdf.SetY(y_start + 2 * header_heigth)
90 pdf.SetY(y_start + 2 * header_heigth)
91 pdf.SetX(left)
91 pdf.SetX(left)
92 pdf.Cell(width, height, day_name(wday)[0,1], "LTR", 0, "C")
92 pdf.Cell(width, height, day_name(wday)[0,1], "LTR", 0, "C")
93 left = left + width
93 left = left + width
94 wday = wday + 1
94 wday = wday + 1
95 wday = 1 if wday > 7
95 wday = 1 if wday > 7
96 end
96 end
97 end
97 end
98
98
99 pdf.SetY(y_start)
99 pdf.SetY(y_start)
100 pdf.SetX(15)
100 pdf.SetX(15)
101 pdf.Cell(subject_width+g_width-15, headers_heigth, "", 1)
101 pdf.Cell(subject_width+g_width-15, headers_heigth, "", 1)
102
102
103
103
104 #
104 #
105 # Tasks
105 # Tasks
106 #
106 #
107 top = headers_heigth + y_start
107 top = headers_heigth + y_start
108 pdf.SetFont('Arial','B',7)
108 pdf.SetFontStyle('B',7)
109 @issues.each do |i|
109 @issues.each do |i|
110 pdf.SetY(top)
110 pdf.SetY(top)
111 pdf.SetX(15)
111 pdf.SetX(15)
112 pdf.Cell(subject_width-15, 5, "#{i.tracker.name} #{i.id}: #{i.subject}".sub(/^(.{30}[^\s]*\s).*$/, '\1 (...)'), "LR")
112 pdf.Cell(subject_width-15, 5, "#{i.tracker.name} #{i.id}: #{i.subject}".sub(/^(.{30}[^\s]*\s).*$/, '\1 (...)'), "LR")
113
113
114 pdf.SetY(top)
114 pdf.SetY(top)
115 pdf.SetX(subject_width)
115 pdf.SetX(subject_width)
116 pdf.Cell(g_width, 5, "", "LR")
116 pdf.Cell(g_width, 5, "", "LR")
117
117
118 i_start_date = (i.start_date >= @date_from ? i.start_date : @date_from )
118 i_start_date = (i.start_date >= @date_from ? i.start_date : @date_from )
119 i_end_date = (i.due_date <= @date_to ? i.due_date : @date_to )
119 i_end_date = (i.due_date <= @date_to ? i.due_date : @date_to )
120
120
121 i_done_date = i.start_date + ((i.due_date - i.start_date+1)*i.done_ratio/100).floor
121 i_done_date = i.start_date + ((i.due_date - i.start_date+1)*i.done_ratio/100).floor
122 i_done_date = (i_done_date <= @date_from ? @date_from : i_done_date )
122 i_done_date = (i_done_date <= @date_from ? @date_from : i_done_date )
123 i_done_date = (i_done_date >= @date_to ? @date_to : i_done_date )
123 i_done_date = (i_done_date >= @date_to ? @date_to : i_done_date )
124
124
125 i_late_date = [i_end_date, Date.today].min if i_start_date < Date.today
125 i_late_date = [i_end_date, Date.today].min if i_start_date < Date.today
126
126
127 i_left = ((i_start_date - @date_from)*zoom)
127 i_left = ((i_start_date - @date_from)*zoom)
128 i_width = ((i_end_date - i_start_date + 1)*zoom)
128 i_width = ((i_end_date - i_start_date + 1)*zoom)
129 d_width = ((i_done_date - i_start_date)*zoom)
129 d_width = ((i_done_date - i_start_date)*zoom)
130 l_width = ((i_late_date - i_start_date+1)*zoom) if i_late_date
130 l_width = ((i_late_date - i_start_date+1)*zoom) if i_late_date
131 l_width ||= 0
131 l_width ||= 0
132
132
133 pdf.SetY(top+1.5)
133 pdf.SetY(top+1.5)
134 pdf.SetX(subject_width + i_left)
134 pdf.SetX(subject_width + i_left)
135 pdf.SetFillColor(200,200,200)
135 pdf.SetFillColor(200,200,200)
136 pdf.Cell(i_width, 2, "", 0, 0, "", 1)
136 pdf.Cell(i_width, 2, "", 0, 0, "", 1)
137
137
138 if l_width > 0
138 if l_width > 0
139 pdf.SetY(top+1.5)
139 pdf.SetY(top+1.5)
140 pdf.SetX(subject_width + i_left)
140 pdf.SetX(subject_width + i_left)
141 pdf.SetFillColor(255,100,100)
141 pdf.SetFillColor(255,100,100)
142 pdf.Cell(l_width, 2, "", 0, 0, "", 1)
142 pdf.Cell(l_width, 2, "", 0, 0, "", 1)
143 end
143 end
144 if d_width > 0
144 if d_width > 0
145 pdf.SetY(top+1.5)
145 pdf.SetY(top+1.5)
146 pdf.SetX(subject_width + i_left)
146 pdf.SetX(subject_width + i_left)
147 pdf.SetFillColor(100,100,255)
147 pdf.SetFillColor(100,100,255)
148 pdf.Cell(d_width, 2, "", 0, 0, "", 1)
148 pdf.Cell(d_width, 2, "", 0, 0, "", 1)
149 end
149 end
150
150
151 pdf.SetY(top+1.5)
151 pdf.SetY(top+1.5)
152 pdf.SetX(subject_width + i_left + i_width)
152 pdf.SetX(subject_width + i_left + i_width)
153 pdf.Cell(30, 2, "#{i.status.name} #{i.done_ratio}%")
153 pdf.Cell(30, 2, "#{i.status.name} #{i.done_ratio}%")
154
154
155 top = top + 5
155 top = top + 5
156 pdf.SetDrawColor(200, 200, 200)
156 pdf.SetDrawColor(200, 200, 200)
157 pdf.Line(15, top, subject_width+g_width, top)
157 pdf.Line(15, top, subject_width+g_width, top)
158 if pdf.GetY() > 180
158 if pdf.GetY() > 180
159 pdf.AddPage("L")
159 pdf.AddPage("L")
160 top = 20
160 top = 20
161 pdf.Line(15, top, subject_width+g_width, top)
161 pdf.Line(15, top, subject_width+g_width, top)
162 end
162 end
163 pdf.SetDrawColor(0, 0, 0)
163 pdf.SetDrawColor(0, 0, 0)
164 end
164 end
165
165
166 pdf.Line(15, top, subject_width+g_width, top)
166 pdf.Line(15, top, subject_width+g_width, top)
167
167
168 %>
168 %>
169 <%= pdf.Output %> No newline at end of file
169 <%= pdf.Output %>
@@ -1,380 +1,382
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: January,February,March,April,May,June,July,August,September,October,November,December
4 actionview_datehelper_select_month_names: January,February,March,April,May,June,July,August,September,October,November,December
5 actionview_datehelper_select_month_names_abbr: Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec
5 actionview_datehelper_select_month_names_abbr: Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec
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 day
8 actionview_datehelper_time_in_words_day: 1 day
9 actionview_datehelper_time_in_words_day_plural: %d days
9 actionview_datehelper_time_in_words_day_plural: %d days
10 actionview_datehelper_time_in_words_hour_about: about an hour
10 actionview_datehelper_time_in_words_hour_about: about an hour
11 actionview_datehelper_time_in_words_hour_about_plural: about %d hours
11 actionview_datehelper_time_in_words_hour_about_plural: about %d hours
12 actionview_datehelper_time_in_words_hour_about_single: about an hour
12 actionview_datehelper_time_in_words_hour_about_single: about an hour
13 actionview_datehelper_time_in_words_minute: 1 minute
13 actionview_datehelper_time_in_words_minute: 1 minute
14 actionview_datehelper_time_in_words_minute_half: half a minute
14 actionview_datehelper_time_in_words_minute_half: half a minute
15 actionview_datehelper_time_in_words_minute_less_than: less than a minute
15 actionview_datehelper_time_in_words_minute_less_than: less than a minute
16 actionview_datehelper_time_in_words_minute_plural: %d minutes
16 actionview_datehelper_time_in_words_minute_plural: %d minutes
17 actionview_datehelper_time_in_words_minute_single: 1 minute
17 actionview_datehelper_time_in_words_minute_single: 1 minute
18 actionview_datehelper_time_in_words_second_less_than: less than a second
18 actionview_datehelper_time_in_words_second_less_than: less than a second
19 actionview_datehelper_time_in_words_second_less_than_plural: less than %d seconds
19 actionview_datehelper_time_in_words_second_less_than_plural: less than %d seconds
20 actionview_instancetag_blank_option: Bitte auserwählt
20 actionview_instancetag_blank_option: Bitte auserwählt
21
21
22 activerecord_error_inclusion: ist nicht in der Liste eingeschlossen
22 activerecord_error_inclusion: ist nicht in der Liste eingeschlossen
23 activerecord_error_exclusion: ist reserviert
23 activerecord_error_exclusion: ist reserviert
24 activerecord_error_invalid: ist unzulässig
24 activerecord_error_invalid: ist unzulässig
25 activerecord_error_confirmation: bringt nicht Bestätigung zusammen
25 activerecord_error_confirmation: bringt nicht Bestätigung zusammen
26 activerecord_error_accepted: muß angenommen werden
26 activerecord_error_accepted: muß angenommen werden
27 activerecord_error_empty: kann nicht leer sein
27 activerecord_error_empty: kann nicht leer sein
28 activerecord_error_blank: kann nicht leer sein
28 activerecord_error_blank: kann nicht leer sein
29 activerecord_error_too_long: ist zu lang
29 activerecord_error_too_long: ist zu lang
30 activerecord_error_too_short: ist zu kurz
30 activerecord_error_too_short: ist zu kurz
31 activerecord_error_wrong_length: ist die falsche Länge
31 activerecord_error_wrong_length: ist die falsche Länge
32 activerecord_error_taken: ist bereits genommen worden
32 activerecord_error_taken: ist bereits genommen worden
33 activerecord_error_not_a_number: ist nicht eine Zahl
33 activerecord_error_not_a_number: ist nicht eine Zahl
34 activerecord_error_not_a_date: ist nicht ein gültiges Datum
34 activerecord_error_not_a_date: ist nicht ein gültiges Datum
35 activerecord_error_greater_than_start_date: muß als grösser sein beginnen Datum
35 activerecord_error_greater_than_start_date: muß als grösser sein beginnen Datum
36
36
37 general_fmt_age: %d yr
37 general_fmt_age: %d yr
38 general_fmt_age_plural: %d yrs
38 general_fmt_age_plural: %d yrs
39 general_fmt_date: %%b %%d, %%Y (%%a)
39 general_fmt_date: %%b %%d, %%Y (%%a)
40 general_fmt_datetime: %%b %%d, %%Y (%%a), %%I:%%M %%p
40 general_fmt_datetime: %%b %%d, %%Y (%%a), %%I:%%M %%p
41 general_fmt_datetime_short: %%b %%d, %%I:%%M %%p
41 general_fmt_datetime_short: %%b %%d, %%I:%%M %%p
42 general_fmt_time: %%I:%%M %%p
42 general_fmt_time: %%I:%%M %%p
43 general_text_No: 'Nein'
43 general_text_No: 'Nein'
44 general_text_Yes: 'Ja'
44 general_text_Yes: 'Ja'
45 general_text_no: 'nein'
45 general_text_no: 'nein'
46 general_text_yes: 'ja'
46 general_text_yes: 'ja'
47 general_lang_de: 'Deutsch'
47 general_lang_de: 'Deutsch'
48 general_csv_separator: ';'
48 general_csv_separator: ';'
49 general_csv_encoding: ISO-8859-1
50 general_pdf_encoding: ISO-8859-1
49 general_day_names: Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag,Sonntag
51 general_day_names: Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag,Sonntag
50
52
51 notice_account_updated: Konto wurde erfolgreich aktualisiert.
53 notice_account_updated: Konto wurde erfolgreich aktualisiert.
52 notice_account_invalid_creditentials: Unzulässiger Benutzer oder Passwort
54 notice_account_invalid_creditentials: Unzulässiger Benutzer oder Passwort
53 notice_account_password_updated: Passwort wurde erfolgreich aktualisiert.
55 notice_account_password_updated: Passwort wurde erfolgreich aktualisiert.
54 notice_account_wrong_password: Falsches Passwort
56 notice_account_wrong_password: Falsches Passwort
55 notice_account_register_done: Konto wurde erfolgreich verursacht.
57 notice_account_register_done: Konto wurde erfolgreich verursacht.
56 notice_account_unknown_email: Unbekannter Benutzer.
58 notice_account_unknown_email: Unbekannter Benutzer.
57 notice_can_t_change_password: Dieses Konto verwendet eine externe Authentisierung Quelle. Unmöglich, das Kennwort zu ändern.
59 notice_can_t_change_password: Dieses Konto verwendet eine externe Authentisierung Quelle. Unmöglich, das Kennwort zu ändern.
58 notice_account_lost_email_sent: Ein email mit Anweisungen, ein neues Kennwort zu wählen ist dir geschickt worden.
60 notice_account_lost_email_sent: Ein email mit Anweisungen, ein neues Kennwort zu wählen ist dir geschickt worden.
59 notice_account_activated: Dein Konto ist aktiviert worden. Du kannst jetzt einloggen.
61 notice_account_activated: Dein Konto ist aktiviert worden. Du kannst jetzt einloggen.
60 notice_successful_create: Erfolgreiche Kreation.
62 notice_successful_create: Erfolgreiche Kreation.
61 notice_successful_update: Erfolgreiches Update.
63 notice_successful_update: Erfolgreiches Update.
62 notice_successful_delete: Erfolgreiche Auslassung.
64 notice_successful_delete: Erfolgreiche Auslassung.
63 notice_successful_connection: Erfolgreicher Anschluß.
65 notice_successful_connection: Erfolgreicher Anschluß.
64 notice_file_not_found: Erbetene Akte besteht nicht oder ist gelöscht worden.
66 notice_file_not_found: Erbetene Akte besteht nicht oder ist gelöscht worden.
65 notice_locking_conflict: Data have been updated by another user.
67 notice_locking_conflict: Data have been updated by another user.
66 notice_scm_error: Eintragung und/oder Neuausgabe besteht nicht im Behälter.
68 notice_scm_error: Eintragung und/oder Neuausgabe besteht nicht im Behälter.
67
69
68 mail_subject_lost_password: Dein redMine Kennwort
70 mail_subject_lost_password: Dein redMine Kennwort
69 mail_subject_register: redMine Kontoaktivierung
71 mail_subject_register: redMine Kontoaktivierung
70
72
71 gui_validation_error: 1 Störung
73 gui_validation_error: 1 Störung
72 gui_validation_error_plural: %d Störungen
74 gui_validation_error_plural: %d Störungen
73
75
74 field_name: Name
76 field_name: Name
75 field_description: Beschreibung
77 field_description: Beschreibung
76 field_summary: Zusammenfassung
78 field_summary: Zusammenfassung
77 field_is_required: Erforderlich
79 field_is_required: Erforderlich
78 field_firstname: Vorname
80 field_firstname: Vorname
79 field_lastname: Nachname
81 field_lastname: Nachname
80 field_mail: Email
82 field_mail: Email
81 field_filename: Datei
83 field_filename: Datei
82 field_filesize: Grootte
84 field_filesize: Grootte
83 field_downloads: Downloads
85 field_downloads: Downloads
84 field_author: Autor
86 field_author: Autor
85 field_created_on: Angelegt
87 field_created_on: Angelegt
86 field_updated_on: aktualisiert
88 field_updated_on: aktualisiert
87 field_field_format: Format
89 field_field_format: Format
88 field_is_for_all: Für alle Projekte
90 field_is_for_all: Für alle Projekte
89 field_possible_values: Mögliche Werte
91 field_possible_values: Mögliche Werte
90 field_regexp: Regulärer Ausdruck
92 field_regexp: Regulärer Ausdruck
91 field_min_length: Minimale Länge
93 field_min_length: Minimale Länge
92 field_max_length: Maximale Länge
94 field_max_length: Maximale Länge
93 field_value: Wert
95 field_value: Wert
94 field_category: Kategorie
96 field_category: Kategorie
95 field_title: Títel
97 field_title: Títel
96 field_project: Projekt
98 field_project: Projekt
97 field_issue: Antrag
99 field_issue: Antrag
98 field_status: Status
100 field_status: Status
99 field_notes: Anmerkungen
101 field_notes: Anmerkungen
100 field_is_closed: Problem erledigt
102 field_is_closed: Problem erledigt
101 field_is_default: Rückstellung status
103 field_is_default: Rückstellung status
102 field_html_color: Farbe
104 field_html_color: Farbe
103 field_tracker: Tracker
105 field_tracker: Tracker
104 field_subject: Thema
106 field_subject: Thema
105 field_due_date: Abgabedatum
107 field_due_date: Abgabedatum
106 field_assigned_to: Zugewiesen an
108 field_assigned_to: Zugewiesen an
107 field_priority: Priorität
109 field_priority: Priorität
108 field_fixed_version: Erledigt in Version
110 field_fixed_version: Erledigt in Version
109 field_user: Benutzer
111 field_user: Benutzer
110 field_role: Rolle
112 field_role: Rolle
111 field_homepage: Startseite
113 field_homepage: Startseite
112 field_is_public: Öffentlich
114 field_is_public: Öffentlich
113 field_parent: Subprojekt von
115 field_parent: Subprojekt von
114 field_is_in_chlog: Ansicht der Issues in der Historie
116 field_is_in_chlog: Ansicht der Issues in der Historie
115 field_login: Mitgliedsname
117 field_login: Mitgliedsname
116 field_mail_notification: Mailbenachrichtigung
118 field_mail_notification: Mailbenachrichtigung
117 field_admin: Administrator
119 field_admin: Administrator
118 field_locked: Gesperrt
120 field_locked: Gesperrt
119 field_last_login_on: Letzte Anmeldung
121 field_last_login_on: Letzte Anmeldung
120 field_language: Sprache
122 field_language: Sprache
121 field_effective_date: Datum
123 field_effective_date: Datum
122 field_password: Passwort
124 field_password: Passwort
123 field_new_password: Neues Passwort
125 field_new_password: Neues Passwort
124 field_password_confirmation: Bestätigung
126 field_password_confirmation: Bestätigung
125 field_version: Version
127 field_version: Version
126 field_type: Typ
128 field_type: Typ
127 field_host: Host
129 field_host: Host
128 field_port: Port
130 field_port: Port
129 field_account: Konto
131 field_account: Konto
130 field_base_dn: Base DN
132 field_base_dn: Base DN
131 field_attr_login: Mitgliedsnameattribut
133 field_attr_login: Mitgliedsnameattribut
132 field_attr_firstname: Vornamensattribut
134 field_attr_firstname: Vornamensattribut
133 field_attr_lastname: Namenattribut
135 field_attr_lastname: Namenattribut
134 field_attr_mail: Emailattribut
136 field_attr_mail: Emailattribut
135 field_onthefly: On-the-fly Benutzerkreation
137 field_onthefly: On-the-fly Benutzerkreation
136 field_start_date: Beginn
138 field_start_date: Beginn
137 field_done_ratio: %% Getan
139 field_done_ratio: %% Getan
138 field_auth_source: Authentisierung Modus
140 field_auth_source: Authentisierung Modus
139 field_hide_mail: Mein email address verstecken
141 field_hide_mail: Mein email address verstecken
140 field_comment: Anmerkung
142 field_comment: Anmerkung
141 field_url: URL
143 field_url: URL
142
144
143 setting_app_title: Applikation Titel
145 setting_app_title: Applikation Titel
144 setting_app_subtitle: Applikation Untertitel
146 setting_app_subtitle: Applikation Untertitel
145 setting_welcome_text: Willkommener Text
147 setting_welcome_text: Willkommener Text
146 setting_default_language: Rückstellung Sprache
148 setting_default_language: Rückstellung Sprache
147 setting_login_required: Authent. erfordert
149 setting_login_required: Authent. erfordert
148 setting_self_registration: Selbstausrichtung ermöglicht
150 setting_self_registration: Selbstausrichtung ermöglicht
149 setting_attachment_max_size: Dateimaximumgröße
151 setting_attachment_max_size: Dateimaximumgröße
150 setting_issues_export_limit: Issues export limit
152 setting_issues_export_limit: Issues export limit
151 setting_mail_from: Emission address
153 setting_mail_from: Emission address
152 setting_host_name: Host Name
154 setting_host_name: Host Name
153 setting_text_formatting: Textformatierung
155 setting_text_formatting: Textformatierung
154
156
155 label_user: Benutzer
157 label_user: Benutzer
156 label_user_plural: Benutzer
158 label_user_plural: Benutzer
157 label_user_new: Neuer Benutzer
159 label_user_new: Neuer Benutzer
158 label_project: Projekt
160 label_project: Projekt
159 label_project_new: Neues Projekt
161 label_project_new: Neues Projekt
160 label_project_plural: Projekte
162 label_project_plural: Projekte
161 label_project_latest: Neueste Projekte
163 label_project_latest: Neueste Projekte
162 label_issue: Antrag
164 label_issue: Antrag
163 label_issue_new: Neue Antrag
165 label_issue_new: Neue Antrag
164 label_issue_plural: Anträge
166 label_issue_plural: Anträge
165 label_issue_view_all: Alle Anträge ansehen
167 label_issue_view_all: Alle Anträge ansehen
166 label_document: Dokument
168 label_document: Dokument
167 label_document_new: Neues Dokument
169 label_document_new: Neues Dokument
168 label_document_plural: Dokumente
170 label_document_plural: Dokumente
169 label_role: Rolle
171 label_role: Rolle
170 label_role_plural: Rollen
172 label_role_plural: Rollen
171 label_role_new: Neue Rolle
173 label_role_new: Neue Rolle
172 label_role_and_permissions: Rollen und Rechte
174 label_role_and_permissions: Rollen und Rechte
173 label_member: Mitglied
175 label_member: Mitglied
174 label_member_new: Neues Mitglied
176 label_member_new: Neues Mitglied
175 label_member_plural: Mitglieder
177 label_member_plural: Mitglieder
176 label_tracker: Tracker
178 label_tracker: Tracker
177 label_tracker_plural: Tracker
179 label_tracker_plural: Tracker
178 label_tracker_new: Neuer Tracker
180 label_tracker_new: Neuer Tracker
179 label_workflow: Workflow
181 label_workflow: Workflow
180 label_issue_status: Antrag Status
182 label_issue_status: Antrag Status
181 label_issue_status_plural: Antrag Stati
183 label_issue_status_plural: Antrag Stati
182 label_issue_status_new: Neuer Status
184 label_issue_status_new: Neuer Status
183 label_issue_category: Antrag Kategorie
185 label_issue_category: Antrag Kategorie
184 label_issue_category_plural: Antrag Kategorien
186 label_issue_category_plural: Antrag Kategorien
185 label_issue_category_new: Neue Kategorie
187 label_issue_category_new: Neue Kategorie
186 label_custom_field: Benutzerdefiniertes Feld
188 label_custom_field: Benutzerdefiniertes Feld
187 label_custom_field_plural: Benutzerdefinierte Felder
189 label_custom_field_plural: Benutzerdefinierte Felder
188 label_custom_field_new: Neues Feld
190 label_custom_field_new: Neues Feld
189 label_enumerations: Enumerationen
191 label_enumerations: Enumerationen
190 label_enumeration_new: Neuer Wert
192 label_enumeration_new: Neuer Wert
191 label_information: Information
193 label_information: Information
192 label_information_plural: Informationen
194 label_information_plural: Informationen
193 label_please_login: Anmelden
195 label_please_login: Anmelden
194 label_register: Anmelden
196 label_register: Anmelden
195 label_password_lost: Passwort vergessen
197 label_password_lost: Passwort vergessen
196 label_home: Hauptseite
198 label_home: Hauptseite
197 label_my_page: Meine Seite
199 label_my_page: Meine Seite
198 label_my_account: Mein Konto
200 label_my_account: Mein Konto
199 label_my_projects: Meine Projekte
201 label_my_projects: Meine Projekte
200 label_administration: Administration
202 label_administration: Administration
201 label_login: Einloggen
203 label_login: Einloggen
202 label_logout: Abmelden
204 label_logout: Abmelden
203 label_help: Hilfe
205 label_help: Hilfe
204 label_reported_issues: Gemeldete Issues
206 label_reported_issues: Gemeldete Issues
205 label_assigned_to_me_issues: Mir zugewiesen
207 label_assigned_to_me_issues: Mir zugewiesen
206 label_last_login: Letzte Anmeldung
208 label_last_login: Letzte Anmeldung
207 label_last_updates: Letztes aktualisiertes
209 label_last_updates: Letztes aktualisiertes
208 label_last_updates_plural: %d Letztes aktualisiertes
210 label_last_updates_plural: %d Letztes aktualisiertes
209 label_registered_on: Angemeldet am
211 label_registered_on: Angemeldet am
210 label_activity: Aktivität
212 label_activity: Aktivität
211 label_new: Neue
213 label_new: Neue
212 label_logged_as: Angemeldet als
214 label_logged_as: Angemeldet als
213 label_environment: Environment
215 label_environment: Environment
214 label_authentication: Authentisierung
216 label_authentication: Authentisierung
215 label_auth_source: Authentisierung Modus
217 label_auth_source: Authentisierung Modus
216 label_auth_source_new: Neuer Authentisierung Modus
218 label_auth_source_new: Neuer Authentisierung Modus
217 label_auth_source_plural: Authentisierung Modi
219 label_auth_source_plural: Authentisierung Modi
218 label_subproject: Vorprojekt von
220 label_subproject: Vorprojekt von
219 label_subproject_plural: Vorprojekte
221 label_subproject_plural: Vorprojekte
220 label_min_max_length: Min - Max Länge
222 label_min_max_length: Min - Max Länge
221 label_list: Liste
223 label_list: Liste
222 label_date: Date
224 label_date: Date
223 label_integer: Zahl
225 label_integer: Zahl
224 label_boolean: Boolesch
226 label_boolean: Boolesch
225 label_string: Text
227 label_string: Text
226 label_text: Langer Text
228 label_text: Langer Text
227 label_attribute: Attribut
229 label_attribute: Attribut
228 label_attribute_plural: Attribute
230 label_attribute_plural: Attribute
229 label_download: %d Herunterlade
231 label_download: %d Herunterlade
230 label_download_plural: %d Herunterlade
232 label_download_plural: %d Herunterlade
231 label_no_data: Nichts anzuzeigen
233 label_no_data: Nichts anzuzeigen
232 label_change_status: Statuswechsel
234 label_change_status: Statuswechsel
233 label_history: Historie
235 label_history: Historie
234 label_attachment: Datei
236 label_attachment: Datei
235 label_attachment_new: Neue Datei
237 label_attachment_new: Neue Datei
236 label_attachment_delete: Löschungakten
238 label_attachment_delete: Löschungakten
237 label_attachment_plural: Dateien
239 label_attachment_plural: Dateien
238 label_report: Bericht
240 label_report: Bericht
239 label_report_plural: Berichte
241 label_report_plural: Berichte
240 label_news: Neuigkeit
242 label_news: Neuigkeit
241 label_news_new: Neuigkeite addieren
243 label_news_new: Neuigkeite addieren
242 label_news_plural: Neuigkeiten
244 label_news_plural: Neuigkeiten
243 label_news_latest: Letzte Neuigkeiten
245 label_news_latest: Letzte Neuigkeiten
244 label_news_view_all: Alle Neuigkeiten anzeigen
246 label_news_view_all: Alle Neuigkeiten anzeigen
245 label_change_log: Change log
247 label_change_log: Change log
246 label_settings: Konfiguration
248 label_settings: Konfiguration
247 label_overview: Übersicht
249 label_overview: Übersicht
248 label_version: Version
250 label_version: Version
249 label_version_new: Neue Version
251 label_version_new: Neue Version
250 label_version_plural: Versionen
252 label_version_plural: Versionen
251 label_confirmation: Bestätigung
253 label_confirmation: Bestätigung
252 label_export_to: Export zu
254 label_export_to: Export zu
253 label_read: Lesen...
255 label_read: Lesen...
254 label_public_projects: Öffentliche Projekte
256 label_public_projects: Öffentliche Projekte
255 label_open_issues: geöffnet
257 label_open_issues: geöffnet
256 label_open_issues_plural: geöffnet
258 label_open_issues_plural: geöffnet
257 label_closed_issues: geschlossen
259 label_closed_issues: geschlossen
258 label_closed_issues_plural: geschlossen
260 label_closed_issues_plural: geschlossen
259 label_total: Gesamtzahl
261 label_total: Gesamtzahl
260 label_permissions: Berechtigungen
262 label_permissions: Berechtigungen
261 label_current_status: Gegenwärtiger Status
263 label_current_status: Gegenwärtiger Status
262 label_new_statuses_allowed: Neue Status gewährten
264 label_new_statuses_allowed: Neue Status gewährten
263 label_all: alle
265 label_all: alle
264 label_none: kein
266 label_none: kein
265 label_next: Weiter
267 label_next: Weiter
266 label_previous: Zurück
268 label_previous: Zurück
267 label_used_by: Benutzt von
269 label_used_by: Benutzt von
268 label_details: Details...
270 label_details: Details...
269 label_add_note: Eine Anmerkung addieren
271 label_add_note: Eine Anmerkung addieren
270 label_per_page: Pro Seite
272 label_per_page: Pro Seite
271 label_calendar: Kalender
273 label_calendar: Kalender
272 label_months_from: Monate von
274 label_months_from: Monate von
273 label_gantt: Gantt
275 label_gantt: Gantt
274 label_internal: Intern
276 label_internal: Intern
275 label_last_changes: %d änderungen des Letzten
277 label_last_changes: %d änderungen des Letzten
276 label_change_view_all: Alle änderungen ansehen
278 label_change_view_all: Alle änderungen ansehen
277 label_personalize_page: Diese Seite personifizieren
279 label_personalize_page: Diese Seite personifizieren
278 label_comment: Anmerkung
280 label_comment: Anmerkung
279 label_comment_plural: Anmerkungen
281 label_comment_plural: Anmerkungen
280 label_comment_add: Anmerkung addieren
282 label_comment_add: Anmerkung addieren
281 label_comment_added: Anmerkung fügte hinzu
283 label_comment_added: Anmerkung fügte hinzu
282 label_comment_delete: Anmerkungen löschen
284 label_comment_delete: Anmerkungen löschen
283 label_query: Benutzerdefiniertes Frage
285 label_query: Benutzerdefiniertes Frage
284 label_query_plural: Benutzerdefinierte Fragen
286 label_query_plural: Benutzerdefinierte Fragen
285 label_query_new: Neue Frage
287 label_query_new: Neue Frage
286 label_filter_add: Filter addieren
288 label_filter_add: Filter addieren
287 label_filter_plural: Filter
289 label_filter_plural: Filter
288 label_equals: ist
290 label_equals: ist
289 label_not_equals: ist nicht
291 label_not_equals: ist nicht
290 label_in_less_than: an weniger als
292 label_in_less_than: an weniger als
291 label_in_more_than: an mehr als
293 label_in_more_than: an mehr als
292 label_in: an
294 label_in: an
293 label_today: heute
295 label_today: heute
294 label_less_than_ago: vor weniger als
296 label_less_than_ago: vor weniger als
295 label_more_than_ago: vor mehr als
297 label_more_than_ago: vor mehr als
296 label_ago: vor
298 label_ago: vor
297 label_contains: enthält
299 label_contains: enthält
298 label_not_contains: enthält nicht
300 label_not_contains: enthält nicht
299 label_day_plural: Tage
301 label_day_plural: Tage
300 label_repository: SVN Behälter
302 label_repository: SVN Behälter
301 label_browse: Grasen
303 label_browse: Grasen
302 label_modification: %d änderung
304 label_modification: %d änderung
303 label_modification_plural: %d änderungen
305 label_modification_plural: %d änderungen
304 label_revision: Neuausgabe
306 label_revision: Neuausgabe
305 label_revision_plural: Neuausgaben
307 label_revision_plural: Neuausgaben
306 label_added: hinzugefügt
308 label_added: hinzugefügt
307 label_modified: geändert
309 label_modified: geändert
308 label_deleted: gelöscht
310 label_deleted: gelöscht
309 label_latest_revision: Neueste Neuausgabe
311 label_latest_revision: Neueste Neuausgabe
310 label_view_revisions: Die Neuausgaben ansehen
312 label_view_revisions: Die Neuausgaben ansehen
311 label_max_size: Maximale Größe
313 label_max_size: Maximale Größe
312 label_on: auf
314 label_on: auf
313 label_sort_highest: Erste
315 label_sort_highest: Erste
314 label_sort_higher: Aufzurichten
316 label_sort_higher: Aufzurichten
315 label_sort_lower: Herabzusteigen
317 label_sort_lower: Herabzusteigen
316 label_sort_lowest: Letzter
318 label_sort_lowest: Letzter
317 label_roadmap: Roadmap
319 label_roadmap: Roadmap
318 label_search: Suche
320 label_search: Suche
319 label_result: %d Resultat
321 label_result: %d Resultat
320 label_result_plural: %d Resultate
322 label_result_plural: %d Resultate
321
323
322 button_login: Einloggen
324 button_login: Einloggen
323 button_submit: Einreichen
325 button_submit: Einreichen
324 button_save: Speichern
326 button_save: Speichern
325 button_check_all: Alles auswählen
327 button_check_all: Alles auswählen
326 button_uncheck_all: Alles abwählen
328 button_uncheck_all: Alles abwählen
327 button_delete: Löschen
329 button_delete: Löschen
328 button_create: Anlegen
330 button_create: Anlegen
329 button_test: Testen
331 button_test: Testen
330 button_edit: Bearbeiten
332 button_edit: Bearbeiten
331 button_add: Hinzufügen
333 button_add: Hinzufügen
332 button_change: Wechseln
334 button_change: Wechseln
333 button_apply: Anwenden
335 button_apply: Anwenden
334 button_clear: Zurücksetzen
336 button_clear: Zurücksetzen
335 button_lock: Verriegeln
337 button_lock: Verriegeln
336 button_unlock: Entriegeln
338 button_unlock: Entriegeln
337 button_download: Fernzuladen
339 button_download: Fernzuladen
338 button_list: Aufzulisten
340 button_list: Aufzulisten
339 button_view: Siehe
341 button_view: Siehe
340 button_move: Bewegen
342 button_move: Bewegen
341 button_back: Rückkehr
343 button_back: Rückkehr
342 button_cancel: Annullieren
344 button_cancel: Annullieren
343 button_activate: Aktivieren
345 button_activate: Aktivieren
344 button_sort: Sortieren
346 button_sort: Sortieren
345
347
346 text_select_mail_notifications: Aktionen für die Mailbenachrichtigung aktiviert werden soll.
348 text_select_mail_notifications: Aktionen für die Mailbenachrichtigung aktiviert werden soll.
347 text_regexp_info: eg. ^[A-Z0-9]+$
349 text_regexp_info: eg. ^[A-Z0-9]+$
348 text_min_max_length_info: 0 heisst keine Beschränkung
350 text_min_max_length_info: 0 heisst keine Beschränkung
349 text_project_destroy_confirmation: Sind sie sicher, daß sie das Projekt löschen wollen ?
351 text_project_destroy_confirmation: Sind sie sicher, daß sie das Projekt löschen wollen ?
350 text_workflow_edit: Auswahl Workflow zum Bearbeiten
352 text_workflow_edit: Auswahl Workflow zum Bearbeiten
351 text_are_you_sure: Sind sie sicher ?
353 text_are_you_sure: Sind sie sicher ?
352 text_journal_changed: geändert von %s zu %s
354 text_journal_changed: geändert von %s zu %s
353 text_journal_set_to: gestellt zu %s
355 text_journal_set_to: gestellt zu %s
354 text_journal_deleted: gelöscht
356 text_journal_deleted: gelöscht
355 text_tip_task_begin_day: Aufgabe, die an diesem Tag beginnt
357 text_tip_task_begin_day: Aufgabe, die an diesem Tag beginnt
356 text_tip_task_end_day: Aufgabe, die an diesem Tag beendet
358 text_tip_task_end_day: Aufgabe, die an diesem Tag beendet
357 text_tip_task_begin_end_day: Aufgabe, die an diesem Tag beginnt und beendet
359 text_tip_task_begin_end_day: Aufgabe, die an diesem Tag beginnt und beendet
358
360
359 default_role_manager: Manager
361 default_role_manager: Manager
360 default_role_developper: Developer
362 default_role_developper: Developer
361 default_role_reporter: Reporter
363 default_role_reporter: Reporter
362 default_tracker_bug: Fehler
364 default_tracker_bug: Fehler
363 default_tracker_feature: Feature
365 default_tracker_feature: Feature
364 default_tracker_support: Support
366 default_tracker_support: Support
365 default_issue_status_new: Neu
367 default_issue_status_new: Neu
366 default_issue_status_assigned: Zugewiesen
368 default_issue_status_assigned: Zugewiesen
367 default_issue_status_resolved: Gelöst
369 default_issue_status_resolved: Gelöst
368 default_issue_status_feedback: Feedback
370 default_issue_status_feedback: Feedback
369 default_issue_status_closed: Erledigt
371 default_issue_status_closed: Erledigt
370 default_issue_status_rejected: Abgewiesen
372 default_issue_status_rejected: Abgewiesen
371 default_doc_category_user: Benutzerdokumentation
373 default_doc_category_user: Benutzerdokumentation
372 default_doc_category_tech: Technische Dokumentation
374 default_doc_category_tech: Technische Dokumentation
373 default_priority_low: Niedrig
375 default_priority_low: Niedrig
374 default_priority_normal: Normal
376 default_priority_normal: Normal
375 default_priority_high: Hoch
377 default_priority_high: Hoch
376 default_priority_urgent: Dringend
378 default_priority_urgent: Dringend
377 default_priority_immediate: Sofort
379 default_priority_immediate: Sofort
378
380
379 enumeration_issue_priorities: Issue-Prioritäten
381 enumeration_issue_priorities: Issue-Prioritäten
380 enumeration_doc_categories: Dokumentenkategorien
382 enumeration_doc_categories: Dokumentenkategorien
@@ -1,380 +1,382
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: January,February,March,April,May,June,July,August,September,October,November,December
4 actionview_datehelper_select_month_names: January,February,March,April,May,June,July,August,September,October,November,December
5 actionview_datehelper_select_month_names_abbr: Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec
5 actionview_datehelper_select_month_names_abbr: Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec
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 day
8 actionview_datehelper_time_in_words_day: 1 day
9 actionview_datehelper_time_in_words_day_plural: %d days
9 actionview_datehelper_time_in_words_day_plural: %d days
10 actionview_datehelper_time_in_words_hour_about: about an hour
10 actionview_datehelper_time_in_words_hour_about: about an hour
11 actionview_datehelper_time_in_words_hour_about_plural: about %d hours
11 actionview_datehelper_time_in_words_hour_about_plural: about %d hours
12 actionview_datehelper_time_in_words_hour_about_single: about an hour
12 actionview_datehelper_time_in_words_hour_about_single: about an hour
13 actionview_datehelper_time_in_words_minute: 1 minute
13 actionview_datehelper_time_in_words_minute: 1 minute
14 actionview_datehelper_time_in_words_minute_half: half a minute
14 actionview_datehelper_time_in_words_minute_half: half a minute
15 actionview_datehelper_time_in_words_minute_less_than: less than a minute
15 actionview_datehelper_time_in_words_minute_less_than: less than a minute
16 actionview_datehelper_time_in_words_minute_plural: %d minutes
16 actionview_datehelper_time_in_words_minute_plural: %d minutes
17 actionview_datehelper_time_in_words_minute_single: 1 minute
17 actionview_datehelper_time_in_words_minute_single: 1 minute
18 actionview_datehelper_time_in_words_second_less_than: less than a second
18 actionview_datehelper_time_in_words_second_less_than: less than a second
19 actionview_datehelper_time_in_words_second_less_than_plural: less than %d seconds
19 actionview_datehelper_time_in_words_second_less_than_plural: less than %d seconds
20 actionview_instancetag_blank_option: Please select
20 actionview_instancetag_blank_option: Please select
21
21
22 activerecord_error_inclusion: is not included in the list
22 activerecord_error_inclusion: is not included in the list
23 activerecord_error_exclusion: is reserved
23 activerecord_error_exclusion: is reserved
24 activerecord_error_invalid: is invalid
24 activerecord_error_invalid: is invalid
25 activerecord_error_confirmation: doesn't match confirmation
25 activerecord_error_confirmation: doesn't match confirmation
26 activerecord_error_accepted: must be accepted
26 activerecord_error_accepted: must be accepted
27 activerecord_error_empty: can't be empty
27 activerecord_error_empty: can't be empty
28 activerecord_error_blank: can't be blank
28 activerecord_error_blank: can't be blank
29 activerecord_error_too_long: is too long
29 activerecord_error_too_long: is too long
30 activerecord_error_too_short: is too short
30 activerecord_error_too_short: is too short
31 activerecord_error_wrong_length: is the wrong length
31 activerecord_error_wrong_length: is the wrong length
32 activerecord_error_taken: has already been taken
32 activerecord_error_taken: has already been taken
33 activerecord_error_not_a_number: is not a number
33 activerecord_error_not_a_number: is not a number
34 activerecord_error_not_a_date: is not a valid date
34 activerecord_error_not_a_date: is not a valid date
35 activerecord_error_greater_than_start_date: must be greater than start date
35 activerecord_error_greater_than_start_date: must be greater than start date
36
36
37 general_fmt_age: %d yr
37 general_fmt_age: %d yr
38 general_fmt_age_plural: %d yrs
38 general_fmt_age_plural: %d yrs
39 general_fmt_date: %%m/%%d/%%Y
39 general_fmt_date: %%m/%%d/%%Y
40 general_fmt_datetime: %%m/%%d/%%Y %%I:%%M %%p
40 general_fmt_datetime: %%m/%%d/%%Y %%I:%%M %%p
41 general_fmt_datetime_short: %%b %%d, %%I:%%M %%p
41 general_fmt_datetime_short: %%b %%d, %%I:%%M %%p
42 general_fmt_time: %%I:%%M %%p
42 general_fmt_time: %%I:%%M %%p
43 general_text_No: 'No'
43 general_text_No: 'No'
44 general_text_Yes: 'Yes'
44 general_text_Yes: 'Yes'
45 general_text_no: 'no'
45 general_text_no: 'no'
46 general_text_yes: 'yes'
46 general_text_yes: 'yes'
47 general_lang_en: 'English'
47 general_lang_en: 'English'
48 general_csv_separator: ','
48 general_csv_separator: ','
49 general_csv_encoding: ISO-8859-1
50 general_pdf_encoding: ISO-8859-1
49 general_day_names: Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday
51 general_day_names: Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday
50
52
51 notice_account_updated: Account was successfully updated.
53 notice_account_updated: Account was successfully updated.
52 notice_account_invalid_creditentials: Invalid user or password
54 notice_account_invalid_creditentials: Invalid user or password
53 notice_account_password_updated: Password was successfully updated.
55 notice_account_password_updated: Password was successfully updated.
54 notice_account_wrong_password: Wrong password
56 notice_account_wrong_password: Wrong password
55 notice_account_register_done: Account was successfully created.
57 notice_account_register_done: Account was successfully created.
56 notice_account_unknown_email: Unknown user.
58 notice_account_unknown_email: Unknown user.
57 notice_can_t_change_password: This account uses an external authentication source. Impossible to change the password.
59 notice_can_t_change_password: This account uses an external authentication source. Impossible to change the password.
58 notice_account_lost_email_sent: An email with instructions to choose a new password has been sent to you.
60 notice_account_lost_email_sent: An email with instructions to choose a new password has been sent to you.
59 notice_account_activated: Your account has been activated. You can now log in.
61 notice_account_activated: Your account has been activated. You can now log in.
60 notice_successful_create: Successful creation.
62 notice_successful_create: Successful creation.
61 notice_successful_update: Successful update.
63 notice_successful_update: Successful update.
62 notice_successful_delete: Successful deletion.
64 notice_successful_delete: Successful deletion.
63 notice_successful_connection: Successful connection.
65 notice_successful_connection: Successful connection.
64 notice_file_not_found: The page you were trying to access doesn't exist or has been removed.
66 notice_file_not_found: The page you were trying to access doesn't exist or has been removed.
65 notice_locking_conflict: Data have been updated by another user.
67 notice_locking_conflict: Data have been updated by another user.
66 notice_scm_error: Entry and/or revision doesn't exist in the repository.
68 notice_scm_error: Entry and/or revision doesn't exist in the repository.
67
69
68 mail_subject_lost_password: Your redMine password
70 mail_subject_lost_password: Your redMine password
69 mail_subject_register: redMine account activation
71 mail_subject_register: redMine account activation
70
72
71 gui_validation_error: 1 error
73 gui_validation_error: 1 error
72 gui_validation_error_plural: %d errors
74 gui_validation_error_plural: %d errors
73
75
74 field_name: Name
76 field_name: Name
75 field_description: Description
77 field_description: Description
76 field_summary: Summary
78 field_summary: Summary
77 field_is_required: Required
79 field_is_required: Required
78 field_firstname: Firstname
80 field_firstname: Firstname
79 field_lastname: Lastname
81 field_lastname: Lastname
80 field_mail: Email
82 field_mail: Email
81 field_filename: File
83 field_filename: File
82 field_filesize: Size
84 field_filesize: Size
83 field_downloads: Downloads
85 field_downloads: Downloads
84 field_author: Author
86 field_author: Author
85 field_created_on: Created
87 field_created_on: Created
86 field_updated_on: Updated
88 field_updated_on: Updated
87 field_field_format: Format
89 field_field_format: Format
88 field_is_for_all: For all projects
90 field_is_for_all: For all projects
89 field_possible_values: Possible values
91 field_possible_values: Possible values
90 field_regexp: Regular expression
92 field_regexp: Regular expression
91 field_min_length: Minimum length
93 field_min_length: Minimum length
92 field_max_length: Maximum length
94 field_max_length: Maximum length
93 field_value: Value
95 field_value: Value
94 field_category: Category
96 field_category: Category
95 field_title: Title
97 field_title: Title
96 field_project: Project
98 field_project: Project
97 field_issue: Issue
99 field_issue: Issue
98 field_status: Status
100 field_status: Status
99 field_notes: Notes
101 field_notes: Notes
100 field_is_closed: Issue closed
102 field_is_closed: Issue closed
101 field_is_default: Default status
103 field_is_default: Default status
102 field_html_color: Color
104 field_html_color: Color
103 field_tracker: Tracker
105 field_tracker: Tracker
104 field_subject: Subject
106 field_subject: Subject
105 field_due_date: Due date
107 field_due_date: Due date
106 field_assigned_to: Assigned to
108 field_assigned_to: Assigned to
107 field_priority: Priority
109 field_priority: Priority
108 field_fixed_version: Fixed version
110 field_fixed_version: Fixed version
109 field_user: User
111 field_user: User
110 field_role: Role
112 field_role: Role
111 field_homepage: Homepage
113 field_homepage: Homepage
112 field_is_public: Public
114 field_is_public: Public
113 field_parent: Subproject of
115 field_parent: Subproject of
114 field_is_in_chlog: Issues displayed in changelog
116 field_is_in_chlog: Issues displayed in changelog
115 field_login: Login
117 field_login: Login
116 field_mail_notification: Mail notifications
118 field_mail_notification: Mail notifications
117 field_admin: Administrator
119 field_admin: Administrator
118 field_locked: Locked
120 field_locked: Locked
119 field_last_login_on: Last connection
121 field_last_login_on: Last connection
120 field_language: Language
122 field_language: Language
121 field_effective_date: Date
123 field_effective_date: Date
122 field_password: Password
124 field_password: Password
123 field_new_password: New password
125 field_new_password: New password
124 field_password_confirmation: Confirmation
126 field_password_confirmation: Confirmation
125 field_version: Version
127 field_version: Version
126 field_type: Type
128 field_type: Type
127 field_host: Host
129 field_host: Host
128 field_port: Port
130 field_port: Port
129 field_account: Account
131 field_account: Account
130 field_base_dn: Base DN
132 field_base_dn: Base DN
131 field_attr_login: Login attribute
133 field_attr_login: Login attribute
132 field_attr_firstname: Firstname attribute
134 field_attr_firstname: Firstname attribute
133 field_attr_lastname: Lastname attribute
135 field_attr_lastname: Lastname attribute
134 field_attr_mail: Email attribute
136 field_attr_mail: Email attribute
135 field_onthefly: On-the-fly user creation
137 field_onthefly: On-the-fly user creation
136 field_start_date: Start
138 field_start_date: Start
137 field_done_ratio: %% Done
139 field_done_ratio: %% Done
138 field_auth_source: Authentication mode
140 field_auth_source: Authentication mode
139 field_hide_mail: Hide my email address
141 field_hide_mail: Hide my email address
140 field_comment: Comment
142 field_comment: Comment
141 field_url: URL
143 field_url: URL
142
144
143 setting_app_title: Application title
145 setting_app_title: Application title
144 setting_app_subtitle: Application subtitle
146 setting_app_subtitle: Application subtitle
145 setting_welcome_text: Welcome text
147 setting_welcome_text: Welcome text
146 setting_default_language: Default language
148 setting_default_language: Default language
147 setting_login_required: Authent. required
149 setting_login_required: Authent. required
148 setting_self_registration: Self-registration enabled
150 setting_self_registration: Self-registration enabled
149 setting_attachment_max_size: Attachment max. size
151 setting_attachment_max_size: Attachment max. size
150 setting_issues_export_limit: Issues export limit
152 setting_issues_export_limit: Issues export limit
151 setting_mail_from: Emission mail address
153 setting_mail_from: Emission mail address
152 setting_host_name: Host name
154 setting_host_name: Host name
153 setting_text_formatting: Text formatting
155 setting_text_formatting: Text formatting
154
156
155 label_user: User
157 label_user: User
156 label_user_plural: Users
158 label_user_plural: Users
157 label_user_new: New user
159 label_user_new: New user
158 label_project: Project
160 label_project: Project
159 label_project_new: New project
161 label_project_new: New project
160 label_project_plural: Projects
162 label_project_plural: Projects
161 label_project_latest: Latest projects
163 label_project_latest: Latest projects
162 label_issue: Issue
164 label_issue: Issue
163 label_issue_new: New issue
165 label_issue_new: New issue
164 label_issue_plural: Issues
166 label_issue_plural: Issues
165 label_issue_view_all: View all issues
167 label_issue_view_all: View all issues
166 label_document: Document
168 label_document: Document
167 label_document_new: New document
169 label_document_new: New document
168 label_document_plural: Documents
170 label_document_plural: Documents
169 label_role: Role
171 label_role: Role
170 label_role_plural: Roles
172 label_role_plural: Roles
171 label_role_new: New role
173 label_role_new: New role
172 label_role_and_permissions: Roles and permissions
174 label_role_and_permissions: Roles and permissions
173 label_member: Member
175 label_member: Member
174 label_member_new: New member
176 label_member_new: New member
175 label_member_plural: Members
177 label_member_plural: Members
176 label_tracker: Tracker
178 label_tracker: Tracker
177 label_tracker_plural: Trackers
179 label_tracker_plural: Trackers
178 label_tracker_new: New tracker
180 label_tracker_new: New tracker
179 label_workflow: Workflow
181 label_workflow: Workflow
180 label_issue_status: Issue status
182 label_issue_status: Issue status
181 label_issue_status_plural: Issue statuses
183 label_issue_status_plural: Issue statuses
182 label_issue_status_new: New status
184 label_issue_status_new: New status
183 label_issue_category: Issue category
185 label_issue_category: Issue category
184 label_issue_category_plural: Issue categories
186 label_issue_category_plural: Issue categories
185 label_issue_category_new: New category
187 label_issue_category_new: New category
186 label_custom_field: Custom field
188 label_custom_field: Custom field
187 label_custom_field_plural: Custom fields
189 label_custom_field_plural: Custom fields
188 label_custom_field_new: New custom field
190 label_custom_field_new: New custom field
189 label_enumerations: Enumerations
191 label_enumerations: Enumerations
190 label_enumeration_new: New value
192 label_enumeration_new: New value
191 label_information: Information
193 label_information: Information
192 label_information_plural: Information
194 label_information_plural: Information
193 label_please_login: Please login
195 label_please_login: Please login
194 label_register: Register
196 label_register: Register
195 label_password_lost: Lost password
197 label_password_lost: Lost password
196 label_home: Home
198 label_home: Home
197 label_my_page: My page
199 label_my_page: My page
198 label_my_account: My account
200 label_my_account: My account
199 label_my_projects: My projects
201 label_my_projects: My projects
200 label_administration: Administration
202 label_administration: Administration
201 label_login: Login
203 label_login: Login
202 label_logout: Logout
204 label_logout: Logout
203 label_help: Help
205 label_help: Help
204 label_reported_issues: Reported issues
206 label_reported_issues: Reported issues
205 label_assigned_to_me_issues: Issues assigned to me
207 label_assigned_to_me_issues: Issues assigned to me
206 label_last_login: Last connection
208 label_last_login: Last connection
207 label_last_updates: Last updated
209 label_last_updates: Last updated
208 label_last_updates_plural: %d last updated
210 label_last_updates_plural: %d last updated
209 label_registered_on: Registered on
211 label_registered_on: Registered on
210 label_activity: Activity
212 label_activity: Activity
211 label_new: New
213 label_new: New
212 label_logged_as: Logged as
214 label_logged_as: Logged as
213 label_environment: Environment
215 label_environment: Environment
214 label_authentication: Authentication
216 label_authentication: Authentication
215 label_auth_source: Authentication mode
217 label_auth_source: Authentication mode
216 label_auth_source_new: New authentication mode
218 label_auth_source_new: New authentication mode
217 label_auth_source_plural: Authentication modes
219 label_auth_source_plural: Authentication modes
218 label_subproject: Subproject
220 label_subproject: Subproject
219 label_subproject_plural: Subprojects
221 label_subproject_plural: Subprojects
220 label_min_max_length: Min - Max length
222 label_min_max_length: Min - Max length
221 label_list: List
223 label_list: List
222 label_date: Date
224 label_date: Date
223 label_integer: Integer
225 label_integer: Integer
224 label_boolean: Boolean
226 label_boolean: Boolean
225 label_string: Text
227 label_string: Text
226 label_text: Long text
228 label_text: Long text
227 label_attribute: Attribute
229 label_attribute: Attribute
228 label_attribute_plural: Attributes
230 label_attribute_plural: Attributes
229 label_download: %d Download
231 label_download: %d Download
230 label_download_plural: %d Downloads
232 label_download_plural: %d Downloads
231 label_no_data: No data to display
233 label_no_data: No data to display
232 label_change_status: Change status
234 label_change_status: Change status
233 label_history: History
235 label_history: History
234 label_attachment: File
236 label_attachment: File
235 label_attachment_new: New file
237 label_attachment_new: New file
236 label_attachment_delete: Delete file
238 label_attachment_delete: Delete file
237 label_attachment_plural: Files
239 label_attachment_plural: Files
238 label_report: Report
240 label_report: Report
239 label_report_plural: Reports
241 label_report_plural: Reports
240 label_news: News
242 label_news: News
241 label_news_new: Add news
243 label_news_new: Add news
242 label_news_plural: News
244 label_news_plural: News
243 label_news_latest: Latest news
245 label_news_latest: Latest news
244 label_news_view_all: View all news
246 label_news_view_all: View all news
245 label_change_log: Change log
247 label_change_log: Change log
246 label_settings: Settings
248 label_settings: Settings
247 label_overview: Overview
249 label_overview: Overview
248 label_version: Version
250 label_version: Version
249 label_version_new: New version
251 label_version_new: New version
250 label_version_plural: Versions
252 label_version_plural: Versions
251 label_confirmation: Confirmation
253 label_confirmation: Confirmation
252 label_export_to: Export to
254 label_export_to: Export to
253 label_read: Read...
255 label_read: Read...
254 label_public_projects: Public projects
256 label_public_projects: Public projects
255 label_open_issues: open
257 label_open_issues: open
256 label_open_issues_plural: open
258 label_open_issues_plural: open
257 label_closed_issues: closed
259 label_closed_issues: closed
258 label_closed_issues_plural: closed
260 label_closed_issues_plural: closed
259 label_total: Total
261 label_total: Total
260 label_permissions: Permissions
262 label_permissions: Permissions
261 label_current_status: Current status
263 label_current_status: Current status
262 label_new_statuses_allowed: New statuses allowed
264 label_new_statuses_allowed: New statuses allowed
263 label_all: all
265 label_all: all
264 label_none: none
266 label_none: none
265 label_next: Next
267 label_next: Next
266 label_previous: Previous
268 label_previous: Previous
267 label_used_by: Used by
269 label_used_by: Used by
268 label_details: Details...
270 label_details: Details...
269 label_add_note: Add a note
271 label_add_note: Add a note
270 label_per_page: Per page
272 label_per_page: Per page
271 label_calendar: Calendar
273 label_calendar: Calendar
272 label_months_from: months from
274 label_months_from: months from
273 label_gantt: Gantt
275 label_gantt: Gantt
274 label_internal: Internal
276 label_internal: Internal
275 label_last_changes: last %d changes
277 label_last_changes: last %d changes
276 label_change_view_all: View all changes
278 label_change_view_all: View all changes
277 label_personalize_page: Personalize this page
279 label_personalize_page: Personalize this page
278 label_comment: Comment
280 label_comment: Comment
279 label_comment_plural: Comments
281 label_comment_plural: Comments
280 label_comment_add: Add a comment
282 label_comment_add: Add a comment
281 label_comment_added: Comment added
283 label_comment_added: Comment added
282 label_comment_delete: Delete comments
284 label_comment_delete: Delete comments
283 label_query: Custom query
285 label_query: Custom query
284 label_query_plural: Custom queries
286 label_query_plural: Custom queries
285 label_query_new: New query
287 label_query_new: New query
286 label_filter_add: Add filter
288 label_filter_add: Add filter
287 label_filter_plural: Filters
289 label_filter_plural: Filters
288 label_equals: is
290 label_equals: is
289 label_not_equals: is not
291 label_not_equals: is not
290 label_in_less_than: in less than
292 label_in_less_than: in less than
291 label_in_more_than: in more than
293 label_in_more_than: in more than
292 label_in: in
294 label_in: in
293 label_today: today
295 label_today: today
294 label_less_than_ago: less than days ago
296 label_less_than_ago: less than days ago
295 label_more_than_ago: more than days ago
297 label_more_than_ago: more than days ago
296 label_ago: days ago
298 label_ago: days ago
297 label_contains: contains
299 label_contains: contains
298 label_not_contains: doesn't contain
300 label_not_contains: doesn't contain
299 label_day_plural: days
301 label_day_plural: days
300 label_repository: SVN Repository
302 label_repository: SVN Repository
301 label_browse: Browse
303 label_browse: Browse
302 label_modification: %d change
304 label_modification: %d change
303 label_modification_plural: %d changes
305 label_modification_plural: %d changes
304 label_revision: Revision
306 label_revision: Revision
305 label_revision_plural: Revisions
307 label_revision_plural: Revisions
306 label_added: added
308 label_added: added
307 label_modified: modified
309 label_modified: modified
308 label_deleted: deleted
310 label_deleted: deleted
309 label_latest_revision: Latest revision
311 label_latest_revision: Latest revision
310 label_view_revisions: View revisions
312 label_view_revisions: View revisions
311 label_max_size: Maximum size
313 label_max_size: Maximum size
312 label_on: 'on'
314 label_on: 'on'
313 label_sort_highest: Move to top
315 label_sort_highest: Move to top
314 label_sort_higher: Move up
316 label_sort_higher: Move up
315 label_sort_lower: Move down
317 label_sort_lower: Move down
316 label_sort_lowest: Move to bottom
318 label_sort_lowest: Move to bottom
317 label_roadmap: Roadmap
319 label_roadmap: Roadmap
318 label_search: Search
320 label_search: Search
319 label_result: %d result
321 label_result: %d result
320 label_result_plural: %d results
322 label_result_plural: %d results
321
323
322 button_login: Login
324 button_login: Login
323 button_submit: Submit
325 button_submit: Submit
324 button_save: Save
326 button_save: Save
325 button_check_all: Check all
327 button_check_all: Check all
326 button_uncheck_all: Uncheck all
328 button_uncheck_all: Uncheck all
327 button_delete: Delete
329 button_delete: Delete
328 button_create: Create
330 button_create: Create
329 button_test: Test
331 button_test: Test
330 button_edit: Edit
332 button_edit: Edit
331 button_add: Add
333 button_add: Add
332 button_change: Change
334 button_change: Change
333 button_apply: Apply
335 button_apply: Apply
334 button_clear: Clear
336 button_clear: Clear
335 button_lock: Lock
337 button_lock: Lock
336 button_unlock: Unlock
338 button_unlock: Unlock
337 button_download: Download
339 button_download: Download
338 button_list: List
340 button_list: List
339 button_view: View
341 button_view: View
340 button_move: Move
342 button_move: Move
341 button_back: Back
343 button_back: Back
342 button_cancel: Cancel
344 button_cancel: Cancel
343 button_activate: Activate
345 button_activate: Activate
344 button_sort: Sort
346 button_sort: Sort
345
347
346 text_select_mail_notifications: Select actions for which mail notifications should be sent.
348 text_select_mail_notifications: Select actions for which mail notifications should be sent.
347 text_regexp_info: eg. ^[A-Z0-9]+$
349 text_regexp_info: eg. ^[A-Z0-9]+$
348 text_min_max_length_info: 0 means no restriction
350 text_min_max_length_info: 0 means no restriction
349 text_project_destroy_confirmation: Are you sure you want to delete this project and all related data ?
351 text_project_destroy_confirmation: Are you sure you want to delete this project and all related data ?
350 text_workflow_edit: Select a role and a tracker to edit the workflow
352 text_workflow_edit: Select a role and a tracker to edit the workflow
351 text_are_you_sure: Are you sure ?
353 text_are_you_sure: Are you sure ?
352 text_journal_changed: changed from %s to %s
354 text_journal_changed: changed from %s to %s
353 text_journal_set_to: set to %s
355 text_journal_set_to: set to %s
354 text_journal_deleted: deleted
356 text_journal_deleted: deleted
355 text_tip_task_begin_day: task beginning this day
357 text_tip_task_begin_day: task beginning this day
356 text_tip_task_end_day: task ending this day
358 text_tip_task_end_day: task ending this day
357 text_tip_task_begin_end_day: task beginning and ending this day
359 text_tip_task_begin_end_day: task beginning and ending this day
358
360
359 default_role_manager: Manager
361 default_role_manager: Manager
360 default_role_developper: Developer
362 default_role_developper: Developer
361 default_role_reporter: Reporter
363 default_role_reporter: Reporter
362 default_tracker_bug: Bug
364 default_tracker_bug: Bug
363 default_tracker_feature: Feature
365 default_tracker_feature: Feature
364 default_tracker_support: Support
366 default_tracker_support: Support
365 default_issue_status_new: New
367 default_issue_status_new: New
366 default_issue_status_assigned: Assigned
368 default_issue_status_assigned: Assigned
367 default_issue_status_resolved: Resolved
369 default_issue_status_resolved: Resolved
368 default_issue_status_feedback: Feedback
370 default_issue_status_feedback: Feedback
369 default_issue_status_closed: Closed
371 default_issue_status_closed: Closed
370 default_issue_status_rejected: Rejected
372 default_issue_status_rejected: Rejected
371 default_doc_category_user: User documentation
373 default_doc_category_user: User documentation
372 default_doc_category_tech: Technical documentation
374 default_doc_category_tech: Technical documentation
373 default_priority_low: Low
375 default_priority_low: Low
374 default_priority_normal: Normal
376 default_priority_normal: Normal
375 default_priority_high: High
377 default_priority_high: High
376 default_priority_urgent: Urgent
378 default_priority_urgent: Urgent
377 default_priority_immediate: Immediate
379 default_priority_immediate: Immediate
378
380
379 enumeration_issue_priorities: Issue priorities
381 enumeration_issue_priorities: Issue priorities
380 enumeration_doc_categories: Document categories
382 enumeration_doc_categories: Document categories
@@ -1,380 +1,382
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: Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Septiembre,Octubre,Noviembre,Diciembre
4 actionview_datehelper_select_month_names: Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Septiembre,Octubre,Noviembre,Diciembre
5 actionview_datehelper_select_month_names_abbr: Ene,Feb,Mar,Abr,Mayo,Jun,Jul,Ago,Sep,Oct,Nov,Dic
5 actionview_datehelper_select_month_names_abbr: Ene,Feb,Mar,Abr,Mayo,Jun,Jul,Ago,Sep,Oct,Nov,Dic
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 day
8 actionview_datehelper_time_in_words_day: 1 day
9 actionview_datehelper_time_in_words_day_plural: %d days
9 actionview_datehelper_time_in_words_day_plural: %d days
10 actionview_datehelper_time_in_words_hour_about: about an hour
10 actionview_datehelper_time_in_words_hour_about: about an hour
11 actionview_datehelper_time_in_words_hour_about_plural: about %d hours
11 actionview_datehelper_time_in_words_hour_about_plural: about %d hours
12 actionview_datehelper_time_in_words_hour_about_single: about an hour
12 actionview_datehelper_time_in_words_hour_about_single: about an hour
13 actionview_datehelper_time_in_words_minute: 1 minute
13 actionview_datehelper_time_in_words_minute: 1 minute
14 actionview_datehelper_time_in_words_minute_half: half a minute
14 actionview_datehelper_time_in_words_minute_half: half a minute
15 actionview_datehelper_time_in_words_minute_less_than: less than a minute
15 actionview_datehelper_time_in_words_minute_less_than: less than a minute
16 actionview_datehelper_time_in_words_minute_plural: %d minutes
16 actionview_datehelper_time_in_words_minute_plural: %d minutes
17 actionview_datehelper_time_in_words_minute_single: 1 minute
17 actionview_datehelper_time_in_words_minute_single: 1 minute
18 actionview_datehelper_time_in_words_second_less_than: less than a second
18 actionview_datehelper_time_in_words_second_less_than: less than a second
19 actionview_datehelper_time_in_words_second_less_than_plural: less than %d seconds
19 actionview_datehelper_time_in_words_second_less_than_plural: less than %d seconds
20 actionview_instancetag_blank_option: Please select
20 actionview_instancetag_blank_option: Please select
21
21
22 activerecord_error_inclusion: is not included in the list
22 activerecord_error_inclusion: is not included in the list
23 activerecord_error_exclusion: is reserved
23 activerecord_error_exclusion: is reserved
24 activerecord_error_invalid: is invalid
24 activerecord_error_invalid: is invalid
25 activerecord_error_confirmation: doesn't match confirmation
25 activerecord_error_confirmation: doesn't match confirmation
26 activerecord_error_accepted: must be accepted
26 activerecord_error_accepted: must be accepted
27 activerecord_error_empty: can't be empty
27 activerecord_error_empty: can't be empty
28 activerecord_error_blank: can't be blank
28 activerecord_error_blank: can't be blank
29 activerecord_error_too_long: is too long
29 activerecord_error_too_long: is too long
30 activerecord_error_too_short: is too short
30 activerecord_error_too_short: is too short
31 activerecord_error_wrong_length: is the wrong length
31 activerecord_error_wrong_length: is the wrong length
32 activerecord_error_taken: has already been taken
32 activerecord_error_taken: has already been taken
33 activerecord_error_not_a_number: is not a number
33 activerecord_error_not_a_number: is not a number
34 activerecord_error_not_a_date: no es una fecha válida
34 activerecord_error_not_a_date: no es una fecha válida
35 activerecord_error_greater_than_start_date: debe ser la fecha mayor que del comienzo
35 activerecord_error_greater_than_start_date: debe ser la fecha mayor que del comienzo
36
36
37 general_fmt_age: %d año
37 general_fmt_age: %d año
38 general_fmt_age_plural: %d años
38 general_fmt_age_plural: %d años
39 general_fmt_date: %%d/%%m/%%Y
39 general_fmt_date: %%d/%%m/%%Y
40 general_fmt_datetime: %%d/%%m/%%Y %%H:%%M
40 general_fmt_datetime: %%d/%%m/%%Y %%H:%%M
41 general_fmt_datetime_short: %%d/%%m %%H:%%M
41 general_fmt_datetime_short: %%d/%%m %%H:%%M
42 general_fmt_time: %%H:%%M
42 general_fmt_time: %%H:%%M
43 general_text_No: 'No'
43 general_text_No: 'No'
44 general_text_Yes: 'Sí'
44 general_text_Yes: 'Sí'
45 general_text_no: 'no'
45 general_text_no: 'no'
46 general_text_yes: 'sí'
46 general_text_yes: 'sí'
47 general_lang_es: 'Español'
47 general_lang_es: 'Español'
48 general_csv_separator: ';'
48 general_csv_separator: ';'
49 general_csv_encoding: ISO-8859-1
50 general_pdf_encoding: ISO-8859-1
49 general_day_names: Lunes,Martes,Miércoles,Jueves,Viernes,Sábado,Domingo
51 general_day_names: Lunes,Martes,Miércoles,Jueves,Viernes,Sábado,Domingo
50
52
51 notice_account_updated: Account was successfully updated.
53 notice_account_updated: Account was successfully updated.
52 notice_account_invalid_creditentials: Invalid user or password
54 notice_account_invalid_creditentials: Invalid user or password
53 notice_account_password_updated: Password was successfully updated.
55 notice_account_password_updated: Password was successfully updated.
54 notice_account_wrong_password: Wrong password
56 notice_account_wrong_password: Wrong password
55 notice_account_register_done: Account was successfully created.
57 notice_account_register_done: Account was successfully created.
56 notice_account_unknown_email: Unknown user.
58 notice_account_unknown_email: Unknown user.
57 notice_can_t_change_password: This account uses an external authentication source. Impossible to change the password.
59 notice_can_t_change_password: This account uses an external authentication source. Impossible to change the password.
58 notice_account_lost_email_sent: An email with instructions to choose a new password has been sent to you.
60 notice_account_lost_email_sent: An email with instructions to choose a new password has been sent to you.
59 notice_account_activated: Your account has been activated. You can now log in.
61 notice_account_activated: Your account has been activated. You can now log in.
60 notice_successful_create: Successful creation.
62 notice_successful_create: Successful creation.
61 notice_successful_update: Successful update.
63 notice_successful_update: Successful update.
62 notice_successful_delete: Successful deletion.
64 notice_successful_delete: Successful deletion.
63 notice_successful_connection: Successful connection.
65 notice_successful_connection: Successful connection.
64 notice_file_not_found: La página que intentabas tener acceso no existe ni se ha quitado.
66 notice_file_not_found: La página que intentabas tener acceso no existe ni se ha quitado.
65 notice_locking_conflict: Data have been updated by another user.
67 notice_locking_conflict: Data have been updated by another user.
66 notice_scm_error: La entrada y/o la revisión no existe en el depósito.
68 notice_scm_error: La entrada y/o la revisión no existe en el depósito.
67
69
68 mail_subject_lost_password: Tu contraseña del redMine
70 mail_subject_lost_password: Tu contraseña del redMine
69 mail_subject_register: Activación de la cuenta del redMine
71 mail_subject_register: Activación de la cuenta del redMine
70
72
71 gui_validation_error: 1 error
73 gui_validation_error: 1 error
72 gui_validation_error_plural: %d errores
74 gui_validation_error_plural: %d errores
73
75
74 field_name: Nombre
76 field_name: Nombre
75 field_description: Descripción
77 field_description: Descripción
76 field_summary: Resumen
78 field_summary: Resumen
77 field_is_required: Obligatorio
79 field_is_required: Obligatorio
78 field_firstname: Nombre
80 field_firstname: Nombre
79 field_lastname: Apellido
81 field_lastname: Apellido
80 field_mail: Email
82 field_mail: Email
81 field_filename: Fichero
83 field_filename: Fichero
82 field_filesize: Tamaño
84 field_filesize: Tamaño
83 field_downloads: Telecargas
85 field_downloads: Telecargas
84 field_author: Autor
86 field_author: Autor
85 field_created_on: Creado
87 field_created_on: Creado
86 field_updated_on: Actualizado
88 field_updated_on: Actualizado
87 field_field_format: Formato
89 field_field_format: Formato
88 field_is_for_all: Para todos los proyectos
90 field_is_for_all: Para todos los proyectos
89 field_possible_values: Valores posibles
91 field_possible_values: Valores posibles
90 field_regexp: Expresión regular
92 field_regexp: Expresión regular
91 field_min_length: Longitud mínima
93 field_min_length: Longitud mínima
92 field_max_length: Longitud máxima
94 field_max_length: Longitud máxima
93 field_value: Valor
95 field_value: Valor
94 field_category: Categoría
96 field_category: Categoría
95 field_title: Título
97 field_title: Título
96 field_project: Proyecto
98 field_project: Proyecto
97 field_issue: Petición
99 field_issue: Petición
98 field_status: Estatuto
100 field_status: Estatuto
99 field_notes: Notas
101 field_notes: Notas
100 field_is_closed: Petición resuelta
102 field_is_closed: Petición resuelta
101 field_is_default: Estatuto por defecto
103 field_is_default: Estatuto por defecto
102 field_html_color: Color
104 field_html_color: Color
103 field_tracker: Tracker
105 field_tracker: Tracker
104 field_subject: Tema
106 field_subject: Tema
105 field_due_date: Fecha debida
107 field_due_date: Fecha debida
106 field_assigned_to: Asignado a
108 field_assigned_to: Asignado a
107 field_priority: Prioridad
109 field_priority: Prioridad
108 field_fixed_version: Versión corregida
110 field_fixed_version: Versión corregida
109 field_user: Usuario
111 field_user: Usuario
110 field_role: Papel
112 field_role: Papel
111 field_homepage: Sitio web
113 field_homepage: Sitio web
112 field_is_public: Público
114 field_is_public: Público
113 field_parent: Proyecto secundario de
115 field_parent: Proyecto secundario de
114 field_is_in_chlog: Consultar las peticiones en el histórico
116 field_is_in_chlog: Consultar las peticiones en el histórico
115 field_login: Identificador
117 field_login: Identificador
116 field_mail_notification: Notificación por mail
118 field_mail_notification: Notificación por mail
117 field_admin: Administrador
119 field_admin: Administrador
118 field_locked: Cerrado
120 field_locked: Cerrado
119 field_last_login_on: Última conexión
121 field_last_login_on: Última conexión
120 field_language: Lengua
122 field_language: Lengua
121 field_effective_date: Fecha
123 field_effective_date: Fecha
122 field_password: Contraseña
124 field_password: Contraseña
123 field_new_password: Nueva contraseña
125 field_new_password: Nueva contraseña
124 field_password_confirmation: Confirmación
126 field_password_confirmation: Confirmación
125 field_version: Versión
127 field_version: Versión
126 field_type: Tipo
128 field_type: Tipo
127 field_host: Anfitrión
129 field_host: Anfitrión
128 field_port: Puerto
130 field_port: Puerto
129 field_account: Cuenta
131 field_account: Cuenta
130 field_base_dn: Base DN
132 field_base_dn: Base DN
131 field_attr_login: Cualidad del identificador
133 field_attr_login: Cualidad del identificador
132 field_attr_firstname: Cualidad del nombre
134 field_attr_firstname: Cualidad del nombre
133 field_attr_lastname: Cualidad del apellido
135 field_attr_lastname: Cualidad del apellido
134 field_attr_mail: Cualidad del Email
136 field_attr_mail: Cualidad del Email
135 field_onthefly: Creación del usuario On-the-fly
137 field_onthefly: Creación del usuario On-the-fly
136 field_start_date: Comienzo
138 field_start_date: Comienzo
137 field_done_ratio: %% Realizado
139 field_done_ratio: %% Realizado
138 field_auth_source: Modo de la autentificación
140 field_auth_source: Modo de la autentificación
139 field_hide_mail: Ocultar mi email address
141 field_hide_mail: Ocultar mi email address
140 field_comment: Comentario
142 field_comment: Comentario
141 field_url: URL
143 field_url: URL
142
144
143 setting_app_title: Título del aplicación
145 setting_app_title: Título del aplicación
144 setting_app_subtitle: Subtítulo del aplicación
146 setting_app_subtitle: Subtítulo del aplicación
145 setting_welcome_text: Texto acogida
147 setting_welcome_text: Texto acogida
146 setting_default_language: Lengua del defecto
148 setting_default_language: Lengua del defecto
147 setting_login_required: Autentif. requerida
149 setting_login_required: Autentif. requerida
148 setting_self_registration: Registro permitido
150 setting_self_registration: Registro permitido
149 setting_attachment_max_size: Tamaño máximo del fichero
151 setting_attachment_max_size: Tamaño máximo del fichero
150 setting_issues_export_limit: Issues export limit
152 setting_issues_export_limit: Issues export limit
151 setting_mail_from: Email de la emisión
153 setting_mail_from: Email de la emisión
152 setting_host_name: Nombre de anfitrión
154 setting_host_name: Nombre de anfitrión
153 setting_text_formatting: Formato de texto
155 setting_text_formatting: Formato de texto
154
156
155 label_user: Usuario
157 label_user: Usuario
156 label_user_plural: Usuarios
158 label_user_plural: Usuarios
157 label_user_new: Nuevo usuario
159 label_user_new: Nuevo usuario
158 label_project: Proyecto
160 label_project: Proyecto
159 label_project_new: Nuevo proyecto
161 label_project_new: Nuevo proyecto
160 label_project_plural: Proyectos
162 label_project_plural: Proyectos
161 label_project_latest: Los proyectos más últimos
163 label_project_latest: Los proyectos más últimos
162 label_issue: Petición
164 label_issue: Petición
163 label_issue_new: Nueva petición
165 label_issue_new: Nueva petición
164 label_issue_plural: Peticiones
166 label_issue_plural: Peticiones
165 label_issue_view_all: Ver todas las peticiones
167 label_issue_view_all: Ver todas las peticiones
166 label_document: Documento
168 label_document: Documento
167 label_document_new: Nuevo documento
169 label_document_new: Nuevo documento
168 label_document_plural: Documentos
170 label_document_plural: Documentos
169 label_role: Papel
171 label_role: Papel
170 label_role_plural: Papeles
172 label_role_plural: Papeles
171 label_role_new: Nuevo papel
173 label_role_new: Nuevo papel
172 label_role_and_permissions: Papeles y permisos
174 label_role_and_permissions: Papeles y permisos
173 label_member: Miembro
175 label_member: Miembro
174 label_member_new: Nuevo miembro
176 label_member_new: Nuevo miembro
175 label_member_plural: Miembros
177 label_member_plural: Miembros
176 label_tracker: Tracker
178 label_tracker: Tracker
177 label_tracker_plural: Trackers
179 label_tracker_plural: Trackers
178 label_tracker_new: Nuevo tracker
180 label_tracker_new: Nuevo tracker
179 label_workflow: Workflow
181 label_workflow: Workflow
180 label_issue_status: Estatuto de petición
182 label_issue_status: Estatuto de petición
181 label_issue_status_plural: Estatutos de las peticiones
183 label_issue_status_plural: Estatutos de las peticiones
182 label_issue_status_new: Nuevo estatuto
184 label_issue_status_new: Nuevo estatuto
183 label_issue_category: Categoría de las peticiones
185 label_issue_category: Categoría de las peticiones
184 label_issue_category_plural: Categorías de las peticiones
186 label_issue_category_plural: Categorías de las peticiones
185 label_issue_category_new: Nueva categoría
187 label_issue_category_new: Nueva categoría
186 label_custom_field: Campo personalizado
188 label_custom_field: Campo personalizado
187 label_custom_field_plural: Campos personalizados
189 label_custom_field_plural: Campos personalizados
188 label_custom_field_new: Nuevo campo personalizado
190 label_custom_field_new: Nuevo campo personalizado
189 label_enumerations: Listas de valores
191 label_enumerations: Listas de valores
190 label_enumeration_new: Nuevo valor
192 label_enumeration_new: Nuevo valor
191 label_information: Informacion
193 label_information: Informacion
192 label_information_plural: Informaciones
194 label_information_plural: Informaciones
193 label_please_login: Conexión
195 label_please_login: Conexión
194 label_register: Registrar
196 label_register: Registrar
195 label_password_lost: ¿Olvidaste la contraseña?
197 label_password_lost: ¿Olvidaste la contraseña?
196 label_home: Acogida
198 label_home: Acogida
197 label_my_page: Mi página
199 label_my_page: Mi página
198 label_my_account: Mi cuenta
200 label_my_account: Mi cuenta
199 label_my_projects: Mis proyectos
201 label_my_projects: Mis proyectos
200 label_administration: Administración
202 label_administration: Administración
201 label_login: Conexión
203 label_login: Conexión
202 label_logout: Desconexión
204 label_logout: Desconexión
203 label_help: Ayuda
205 label_help: Ayuda
204 label_reported_issues: Peticiones registradas
206 label_reported_issues: Peticiones registradas
205 label_assigned_to_me_issues: Peticiones que me están asignadas
207 label_assigned_to_me_issues: Peticiones que me están asignadas
206 label_last_login: Última conexión
208 label_last_login: Última conexión
207 label_last_updates: Actualizado
209 label_last_updates: Actualizado
208 label_last_updates_plural: %d Actualizados
210 label_last_updates_plural: %d Actualizados
209 label_registered_on: Inscrito el
211 label_registered_on: Inscrito el
210 label_activity: Actividad
212 label_activity: Actividad
211 label_new: Nuevo
213 label_new: Nuevo
212 label_logged_as: Conectado como
214 label_logged_as: Conectado como
213 label_environment: Environment
215 label_environment: Environment
214 label_authentication: Autentificación
216 label_authentication: Autentificación
215 label_auth_source: Modo de la autentificación
217 label_auth_source: Modo de la autentificación
216 label_auth_source_new: Nuevo modo de la autentificación
218 label_auth_source_new: Nuevo modo de la autentificación
217 label_auth_source_plural: Modos de la autentificación
219 label_auth_source_plural: Modos de la autentificación
218 label_subproject: Proyecto secundario
220 label_subproject: Proyecto secundario
219 label_subproject_plural: Proyectos secundarios
221 label_subproject_plural: Proyectos secundarios
220 label_min_max_length: Longitud mín - máx
222 label_min_max_length: Longitud mín - máx
221 label_list: Lista
223 label_list: Lista
222 label_date: Fecha
224 label_date: Fecha
223 label_integer: Número
225 label_integer: Número
224 label_boolean: Boleano
226 label_boolean: Boleano
225 label_string: Texto
227 label_string: Texto
226 label_text: Texto largo
228 label_text: Texto largo
227 label_attribute: Cualidad
229 label_attribute: Cualidad
228 label_attribute_plural: Cualidades
230 label_attribute_plural: Cualidades
229 label_download: %d Telecarga
231 label_download: %d Telecarga
230 label_download_plural: %d Telecargas
232 label_download_plural: %d Telecargas
231 label_no_data: Ningunos datos a exhibir
233 label_no_data: Ningunos datos a exhibir
232 label_change_status: Cambiar el estatuto
234 label_change_status: Cambiar el estatuto
233 label_history: Histórico
235 label_history: Histórico
234 label_attachment: Fichero
236 label_attachment: Fichero
235 label_attachment_new: Nuevo fichero
237 label_attachment_new: Nuevo fichero
236 label_attachment_delete: Suprimir el fichero
238 label_attachment_delete: Suprimir el fichero
237 label_attachment_plural: Ficheros
239 label_attachment_plural: Ficheros
238 label_report: Informe
240 label_report: Informe
239 label_report_plural: Informes
241 label_report_plural: Informes
240 label_news: Noticia
242 label_news: Noticia
241 label_news_new: Nueva noticia
243 label_news_new: Nueva noticia
242 label_news_plural: Noticias
244 label_news_plural: Noticias
243 label_news_latest: Últimas noticias
245 label_news_latest: Últimas noticias
244 label_news_view_all: Ver todas las noticias
246 label_news_view_all: Ver todas las noticias
245 label_change_log: Cambios
247 label_change_log: Cambios
246 label_settings: Configuración
248 label_settings: Configuración
247 label_overview: Vistazo
249 label_overview: Vistazo
248 label_version: Versión
250 label_version: Versión
249 label_version_new: Nueva versión
251 label_version_new: Nueva versión
250 label_version_plural: Versiónes
252 label_version_plural: Versiónes
251 label_confirmation: Confirmación
253 label_confirmation: Confirmación
252 label_export_to: Exportar a
254 label_export_to: Exportar a
253 label_read: Leer...
255 label_read: Leer...
254 label_public_projects: Proyectos publicos
256 label_public_projects: Proyectos publicos
255 label_open_issues: abierta
257 label_open_issues: abierta
256 label_open_issues_plural: abiertas
258 label_open_issues_plural: abiertas
257 label_closed_issues: cerrada
259 label_closed_issues: cerrada
258 label_closed_issues_plural: cerradas
260 label_closed_issues_plural: cerradas
259 label_total: Total
261 label_total: Total
260 label_permissions: Permisos
262 label_permissions: Permisos
261 label_current_status: Estado actual
263 label_current_status: Estado actual
262 label_new_statuses_allowed: Nuevos estatutos autorizados
264 label_new_statuses_allowed: Nuevos estatutos autorizados
263 label_all: todos
265 label_all: todos
264 label_none: ninguno
266 label_none: ninguno
265 label_next: Próximo
267 label_next: Próximo
266 label_previous: Precedente
268 label_previous: Precedente
267 label_used_by: Utilizado por
269 label_used_by: Utilizado por
268 label_details: Detalles...
270 label_details: Detalles...
269 label_add_note: Agregar una nota
271 label_add_note: Agregar una nota
270 label_per_page: Por la página
272 label_per_page: Por la página
271 label_calendar: Calendario
273 label_calendar: Calendario
272 label_months_from: meses de
274 label_months_from: meses de
273 label_gantt: Gantt
275 label_gantt: Gantt
274 label_internal: Interno
276 label_internal: Interno
275 label_last_changes: %d cambios del último
277 label_last_changes: %d cambios del último
276 label_change_view_all: Ver todos los cambios
278 label_change_view_all: Ver todos los cambios
277 label_personalize_page: Personalizar esta página
279 label_personalize_page: Personalizar esta página
278 label_comment: Comentario
280 label_comment: Comentario
279 label_comment_plural: Comentarios
281 label_comment_plural: Comentarios
280 label_comment_add: Agregar un comentario
282 label_comment_add: Agregar un comentario
281 label_comment_added: Comentario agregó
283 label_comment_added: Comentario agregó
282 label_comment_delete: Suprimir comentarios
284 label_comment_delete: Suprimir comentarios
283 label_query: Pregunta personalizada
285 label_query: Pregunta personalizada
284 label_query_plural: Preguntas personalizadas
286 label_query_plural: Preguntas personalizadas
285 label_query_new: Nueva preguntas
287 label_query_new: Nueva preguntas
286 label_filter_add: Agregar el filtro
288 label_filter_add: Agregar el filtro
287 label_filter_plural: Filtros
289 label_filter_plural: Filtros
288 label_equals: igual
290 label_equals: igual
289 label_not_equals: no igual
291 label_not_equals: no igual
290 label_in_less_than: en menos que
292 label_in_less_than: en menos que
291 label_in_more_than: en más que
293 label_in_more_than: en más que
292 label_in: en
294 label_in: en
293 label_today: hoy
295 label_today: hoy
294 label_less_than_ago: hace menos de
296 label_less_than_ago: hace menos de
295 label_more_than_ago: hace más de
297 label_more_than_ago: hace más de
296 label_ago: hace
298 label_ago: hace
297 label_contains: contiene
299 label_contains: contiene
298 label_not_contains: no contiene
300 label_not_contains: no contiene
299 label_day_plural: días
301 label_day_plural: días
300 label_repository: Depósito SVN
302 label_repository: Depósito SVN
301 label_browse: Hojear
303 label_browse: Hojear
302 label_modification: %d modificación
304 label_modification: %d modificación
303 label_modification_plural: %d modificaciones
305 label_modification_plural: %d modificaciones
304 label_revision: Revisión
306 label_revision: Revisión
305 label_revision_plural: Revisiones
307 label_revision_plural: Revisiones
306 label_added: agregado
308 label_added: agregado
307 label_modified: modificado
309 label_modified: modificado
308 label_deleted: suprimido
310 label_deleted: suprimido
309 label_latest_revision: La revisión más última
311 label_latest_revision: La revisión más última
310 label_view_revisions: Ver las revisiones
312 label_view_revisions: Ver las revisiones
311 label_max_size: Tamaño máximo
313 label_max_size: Tamaño máximo
312 label_on: en
314 label_on: en
313 label_sort_highest: Primero
315 label_sort_highest: Primero
314 label_sort_higher: Subir
316 label_sort_higher: Subir
315 label_sort_lower: Bajar
317 label_sort_lower: Bajar
316 label_sort_lowest: Último
318 label_sort_lowest: Último
317 label_roadmap: Roadmap
319 label_roadmap: Roadmap
318 label_search: Búsqueda
320 label_search: Búsqueda
319 label_result: %d resultado
321 label_result: %d resultado
320 label_result_plural: %d resultados
322 label_result_plural: %d resultados
321
323
322 button_login: Conexión
324 button_login: Conexión
323 button_submit: Someter
325 button_submit: Someter
324 button_save: Validar
326 button_save: Validar
325 button_check_all: Seleccionar todo
327 button_check_all: Seleccionar todo
326 button_uncheck_all: No seleccionar nada
328 button_uncheck_all: No seleccionar nada
327 button_delete: Suprimir
329 button_delete: Suprimir
328 button_create: Crear
330 button_create: Crear
329 button_test: Testar
331 button_test: Testar
330 button_edit: Modificar
332 button_edit: Modificar
331 button_add: Añadir
333 button_add: Añadir
332 button_change: Cambiar
334 button_change: Cambiar
333 button_apply: Aplicar
335 button_apply: Aplicar
334 button_clear: Anular
336 button_clear: Anular
335 button_lock: Bloquear
337 button_lock: Bloquear
336 button_unlock: Desbloquear
338 button_unlock: Desbloquear
337 button_download: Telecargar
339 button_download: Telecargar
338 button_list: Listar
340 button_list: Listar
339 button_view: Ver
341 button_view: Ver
340 button_move: Mover
342 button_move: Mover
341 button_back: Atrás
343 button_back: Atrás
342 button_cancel: Cancelar
344 button_cancel: Cancelar
343 button_activate: Activar
345 button_activate: Activar
344 button_sort: Clasificar
346 button_sort: Clasificar
345
347
346 text_select_mail_notifications: Seleccionar las actividades que necesitan la activación de la notificación por mail.
348 text_select_mail_notifications: Seleccionar las actividades que necesitan la activación de la notificación por mail.
347 text_regexp_info: eg. ^[A-Z0-9]+$
349 text_regexp_info: eg. ^[A-Z0-9]+$
348 text_min_max_length_info: 0 para ninguna restricción
350 text_min_max_length_info: 0 para ninguna restricción
349 text_project_destroy_confirmation: ¿ Estás seguro de querer eliminar el proyecto ?
351 text_project_destroy_confirmation: ¿ Estás seguro de querer eliminar el proyecto ?
350 text_workflow_edit: Seleccionar un workflow para actualizar
352 text_workflow_edit: Seleccionar un workflow para actualizar
351 text_are_you_sure: ¿ Estás seguro ?
353 text_are_you_sure: ¿ Estás seguro ?
352 text_journal_changed: cambiado de %s a %s
354 text_journal_changed: cambiado de %s a %s
353 text_journal_set_to: fijado a %s
355 text_journal_set_to: fijado a %s
354 text_journal_deleted: suprimido
356 text_journal_deleted: suprimido
355 text_tip_task_begin_day: tarea que comienza este día
357 text_tip_task_begin_day: tarea que comienza este día
356 text_tip_task_end_day: tarea que termina este día
358 text_tip_task_end_day: tarea que termina este día
357 text_tip_task_begin_end_day: tarea que comienza y termina este día
359 text_tip_task_begin_end_day: tarea que comienza y termina este día
358
360
359 default_role_manager: Manager
361 default_role_manager: Manager
360 default_role_developper: Desarrollador
362 default_role_developper: Desarrollador
361 default_role_reporter: Informador
363 default_role_reporter: Informador
362 default_tracker_bug: Anomalía
364 default_tracker_bug: Anomalía
363 default_tracker_feature: Evolución
365 default_tracker_feature: Evolución
364 default_tracker_support: Asistencia
366 default_tracker_support: Asistencia
365 default_issue_status_new: Nuevo
367 default_issue_status_new: Nuevo
366 default_issue_status_assigned: Asignada
368 default_issue_status_assigned: Asignada
367 default_issue_status_resolved: Resuelta
369 default_issue_status_resolved: Resuelta
368 default_issue_status_feedback: Comentario
370 default_issue_status_feedback: Comentario
369 default_issue_status_closed: Cerrada
371 default_issue_status_closed: Cerrada
370 default_issue_status_rejected: Rechazada
372 default_issue_status_rejected: Rechazada
371 default_doc_category_user: Documentación del usuario
373 default_doc_category_user: Documentación del usuario
372 default_doc_category_tech: Documentación tecnica
374 default_doc_category_tech: Documentación tecnica
373 default_priority_low: Bajo
375 default_priority_low: Bajo
374 default_priority_normal: Normal
376 default_priority_normal: Normal
375 default_priority_high: Alto
377 default_priority_high: Alto
376 default_priority_urgent: Urgente
378 default_priority_urgent: Urgente
377 default_priority_immediate: Ahora
379 default_priority_immediate: Ahora
378
380
379 enumeration_issue_priorities: Prioridad de las peticiones
381 enumeration_issue_priorities: Prioridad de las peticiones
380 enumeration_doc_categories: Categorías del documento
382 enumeration_doc_categories: Categorías del documento
@@ -1,380 +1,382
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: Janvier,Février,Mars,Avril,Mai,Juin,Juillet,Août,Septembre,Octobre,Novembre,Décembre
4 actionview_datehelper_select_month_names: Janvier,Février,Mars,Avril,Mai,Juin,Juillet,Août,Septembre,Octobre,Novembre,Décembre
5 actionview_datehelper_select_month_names_abbr: Jan,Fév,Mars,Avril,Mai,Juin,Juil,Août,Sept,Oct,Nov,Déc
5 actionview_datehelper_select_month_names_abbr: Jan,Fév,Mars,Avril,Mai,Juin,Juil,Août,Sept,Oct,Nov,Déc
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 jour
8 actionview_datehelper_time_in_words_day: 1 jour
9 actionview_datehelper_time_in_words_day_plural: %d jours
9 actionview_datehelper_time_in_words_day_plural: %d jours
10 actionview_datehelper_time_in_words_hour_about: about an hour
10 actionview_datehelper_time_in_words_hour_about: about an hour
11 actionview_datehelper_time_in_words_hour_about_plural: about %d hours
11 actionview_datehelper_time_in_words_hour_about_plural: about %d hours
12 actionview_datehelper_time_in_words_hour_about_single: about an hour
12 actionview_datehelper_time_in_words_hour_about_single: about an hour
13 actionview_datehelper_time_in_words_minute: 1 minute
13 actionview_datehelper_time_in_words_minute: 1 minute
14 actionview_datehelper_time_in_words_minute_half: 30 secondes
14 actionview_datehelper_time_in_words_minute_half: 30 secondes
15 actionview_datehelper_time_in_words_minute_less_than: moins d'une minute
15 actionview_datehelper_time_in_words_minute_less_than: moins d'une minute
16 actionview_datehelper_time_in_words_minute_plural: %d minutes
16 actionview_datehelper_time_in_words_minute_plural: %d minutes
17 actionview_datehelper_time_in_words_minute_single: 1 minute
17 actionview_datehelper_time_in_words_minute_single: 1 minute
18 actionview_datehelper_time_in_words_second_less_than: moins d'une seconde
18 actionview_datehelper_time_in_words_second_less_than: moins d'une seconde
19 actionview_datehelper_time_in_words_second_less_than_plural: moins de %d secondes
19 actionview_datehelper_time_in_words_second_less_than_plural: moins de %d secondes
20 actionview_instancetag_blank_option: Choisir
20 actionview_instancetag_blank_option: Choisir
21
21
22 activerecord_error_inclusion: n'est pas inclus dans la liste
22 activerecord_error_inclusion: n'est pas inclus dans la liste
23 activerecord_error_exclusion: est reservé
23 activerecord_error_exclusion: est reservé
24 activerecord_error_invalid: est invalide
24 activerecord_error_invalid: est invalide
25 activerecord_error_confirmation: ne correspond pas à la confirmation
25 activerecord_error_confirmation: ne correspond pas à la confirmation
26 activerecord_error_accepted: doit être accepté
26 activerecord_error_accepted: doit être accepté
27 activerecord_error_empty: doit être renseigné
27 activerecord_error_empty: doit être renseigné
28 activerecord_error_blank: doit être renseigné
28 activerecord_error_blank: doit être renseigné
29 activerecord_error_too_long: est trop long
29 activerecord_error_too_long: est trop long
30 activerecord_error_too_short: est trop court
30 activerecord_error_too_short: est trop court
31 activerecord_error_wrong_length: n'est pas de la bonne longueur
31 activerecord_error_wrong_length: n'est pas de la bonne longueur
32 activerecord_error_taken: est déjà utilisé
32 activerecord_error_taken: est déjà utilisé
33 activerecord_error_not_a_number: n'est pas un nombre
33 activerecord_error_not_a_number: n'est pas un nombre
34 activerecord_error_not_a_date: n'est pas une date valide
34 activerecord_error_not_a_date: n'est pas une date valide
35 activerecord_error_greater_than_start_date: doit être postérieur à la date de début
35 activerecord_error_greater_than_start_date: doit être postérieur à la date de début
36
36
37 general_fmt_age: %d an
37 general_fmt_age: %d an
38 general_fmt_age_plural: %d ans
38 general_fmt_age_plural: %d ans
39 general_fmt_date: %%d/%%m/%%Y
39 general_fmt_date: %%d/%%m/%%Y
40 general_fmt_datetime: %%d/%%m/%%Y %%H:%%M
40 general_fmt_datetime: %%d/%%m/%%Y %%H:%%M
41 general_fmt_datetime_short: %%d/%%m %%H:%%M
41 general_fmt_datetime_short: %%d/%%m %%H:%%M
42 general_fmt_time: %%H:%%M
42 general_fmt_time: %%H:%%M
43 general_text_No: 'Non'
43 general_text_No: 'Non'
44 general_text_Yes: 'Oui'
44 general_text_Yes: 'Oui'
45 general_text_no: 'non'
45 general_text_no: 'non'
46 general_text_yes: 'oui'
46 general_text_yes: 'oui'
47 general_lang_fr: 'Français'
47 general_lang_fr: 'Français'
48 general_csv_separator: ';'
48 general_csv_separator: ';'
49 general_csv_encoding: ISO-8859-1
50 general_pdf_encoding: ISO-8859-1
49 general_day_names: Lundi,Mardi,Mercredi,Jeudi,Vendredi,Samedi,Dimanche
51 general_day_names: Lundi,Mardi,Mercredi,Jeudi,Vendredi,Samedi,Dimanche
50
52
51 notice_account_updated: Le compte a été mis à jour avec succès.
53 notice_account_updated: Le compte a été mis à jour avec succès.
52 notice_account_invalid_creditentials: Identifiant ou mot de passe invalide.
54 notice_account_invalid_creditentials: Identifiant ou mot de passe invalide.
53 notice_account_password_updated: Mot de passe mis à jour avec succès.
55 notice_account_password_updated: Mot de passe mis à jour avec succès.
54 notice_account_wrong_password: Mot de passe incorrect
56 notice_account_wrong_password: Mot de passe incorrect
55 notice_account_register_done: Un message contenant les instructions pour activer votre compte vous a été envoyé.
57 notice_account_register_done: Un message contenant les instructions pour activer votre compte vous a été envoyé.
56 notice_account_unknown_email: Aucun compte ne correspond à cette adresse.
58 notice_account_unknown_email: Aucun compte ne correspond à cette adresse.
57 notice_can_t_change_password: Ce compte utilise une authentification externe. Impossible de changer le mot de passe.
59 notice_can_t_change_password: Ce compte utilise une authentification externe. Impossible de changer le mot de passe.
58 notice_account_lost_email_sent: Un message contenant les instructions pour choisir un nouveau mot de passe vous a été envoyé.
60 notice_account_lost_email_sent: Un message contenant les instructions pour choisir un nouveau mot de passe vous a été envoyé.
59 notice_account_activated: Votre compte a été activé. Vous pouvez à présent vous connecter.
61 notice_account_activated: Votre compte a été activé. Vous pouvez à présent vous connecter.
60 notice_successful_create: Création effectuée avec succès.
62 notice_successful_create: Création effectuée avec succès.
61 notice_successful_update: Mise à jour effectuée avec succès.
63 notice_successful_update: Mise à jour effectuée avec succès.
62 notice_successful_delete: Suppression effectuée avec succès.
64 notice_successful_delete: Suppression effectuée avec succès.
63 notice_successful_connection: Connection réussie.
65 notice_successful_connection: Connection réussie.
64 notice_file_not_found: La page à laquelle vous souhaitez accéder n'existe pas ou a été supprimée.
66 notice_file_not_found: La page à laquelle vous souhaitez accéder n'existe pas ou a été supprimée.
65 notice_locking_conflict: Les données ont été mises à jour par un autre utilisateur. Mise à jour impossible.
67 notice_locking_conflict: Les données ont été mises à jour par un autre utilisateur. Mise à jour impossible.
66 notice_scm_error: L'entrée et/ou la révision demandée n'existe pas dans le dépôt.
68 notice_scm_error: L'entrée et/ou la révision demandée n'existe pas dans le dépôt.
67
69
68 mail_subject_lost_password: Votre mot de passe redMine
70 mail_subject_lost_password: Votre mot de passe redMine
69 mail_subject_register: Activation de votre compte redMine
71 mail_subject_register: Activation de votre compte redMine
70
72
71 gui_validation_error: 1 erreur
73 gui_validation_error: 1 erreur
72 gui_validation_error_plural: %d erreurs
74 gui_validation_error_plural: %d erreurs
73
75
74 field_name: Nom
76 field_name: Nom
75 field_description: Description
77 field_description: Description
76 field_summary: Résumé
78 field_summary: Résumé
77 field_is_required: Obligatoire
79 field_is_required: Obligatoire
78 field_firstname: Prénom
80 field_firstname: Prénom
79 field_lastname: Nom
81 field_lastname: Nom
80 field_mail: Email
82 field_mail: Email
81 field_filename: Fichier
83 field_filename: Fichier
82 field_filesize: Taille
84 field_filesize: Taille
83 field_downloads: Téléchargements
85 field_downloads: Téléchargements
84 field_author: Auteur
86 field_author: Auteur
85 field_created_on: Créé
87 field_created_on: Créé
86 field_updated_on: Mis à jour
88 field_updated_on: Mis à jour
87 field_field_format: Format
89 field_field_format: Format
88 field_is_for_all: Pour tous les projets
90 field_is_for_all: Pour tous les projets
89 field_possible_values: Valeurs possibles
91 field_possible_values: Valeurs possibles
90 field_regexp: Expression régulière
92 field_regexp: Expression régulière
91 field_min_length: Longueur minimum
93 field_min_length: Longueur minimum
92 field_max_length: Longueur maximum
94 field_max_length: Longueur maximum
93 field_value: Valeur
95 field_value: Valeur
94 field_category: Catégorie
96 field_category: Catégorie
95 field_title: Titre
97 field_title: Titre
96 field_project: Projet
98 field_project: Projet
97 field_issue: Demande
99 field_issue: Demande
98 field_status: Statut
100 field_status: Statut
99 field_notes: Notes
101 field_notes: Notes
100 field_is_closed: Demande fermée
102 field_is_closed: Demande fermée
101 field_is_default: Statut par défaut
103 field_is_default: Statut par défaut
102 field_html_color: Couleur
104 field_html_color: Couleur
103 field_tracker: Tracker
105 field_tracker: Tracker
104 field_subject: Sujet
106 field_subject: Sujet
105 field_due_date: Date d'échéance
107 field_due_date: Date d'échéance
106 field_assigned_to: Assigné à
108 field_assigned_to: Assigné à
107 field_priority: Priorité
109 field_priority: Priorité
108 field_fixed_version: Version corrigée
110 field_fixed_version: Version corrigée
109 field_user: Utilisateur
111 field_user: Utilisateur
110 field_role: Rôle
112 field_role: Rôle
111 field_homepage: Site web
113 field_homepage: Site web
112 field_is_public: Public
114 field_is_public: Public
113 field_parent: Sous-projet de
115 field_parent: Sous-projet de
114 field_is_in_chlog: Demandes affichées dans l'historique
116 field_is_in_chlog: Demandes affichées dans l'historique
115 field_login: Identifiant
117 field_login: Identifiant
116 field_mail_notification: Notifications par mail
118 field_mail_notification: Notifications par mail
117 field_admin: Administrateur
119 field_admin: Administrateur
118 field_locked: Verrouillé
120 field_locked: Verrouillé
119 field_last_login_on: Dernière connexion
121 field_last_login_on: Dernière connexion
120 field_language: Langue
122 field_language: Langue
121 field_effective_date: Date
123 field_effective_date: Date
122 field_password: Mot de passe
124 field_password: Mot de passe
123 field_new_password: Nouveau mot de passe
125 field_new_password: Nouveau mot de passe
124 field_password_confirmation: Confirmation
126 field_password_confirmation: Confirmation
125 field_version: Version
127 field_version: Version
126 field_type: Type
128 field_type: Type
127 field_host: Hôte
129 field_host: Hôte
128 field_port: Port
130 field_port: Port
129 field_account: Compte
131 field_account: Compte
130 field_base_dn: Base DN
132 field_base_dn: Base DN
131 field_attr_login: Attribut Identifiant
133 field_attr_login: Attribut Identifiant
132 field_attr_firstname: Attribut Prénom
134 field_attr_firstname: Attribut Prénom
133 field_attr_lastname: Attribut Nom
135 field_attr_lastname: Attribut Nom
134 field_attr_mail: Attribut Email
136 field_attr_mail: Attribut Email
135 field_onthefly: Création des utilisateurs à la volée
137 field_onthefly: Création des utilisateurs à la volée
136 field_start_date: Début
138 field_start_date: Début
137 field_done_ratio: %% Réalisé
139 field_done_ratio: %% Réalisé
138 field_auth_source: Mode d'authentification
140 field_auth_source: Mode d'authentification
139 field_hide_mail: Cacher mon adresse mail
141 field_hide_mail: Cacher mon adresse mail
140 field_comment: Commentaire
142 field_comment: Commentaire
141 field_url: URL
143 field_url: URL
142
144
143 setting_app_title: Titre de l'application
145 setting_app_title: Titre de l'application
144 setting_app_subtitle: Sous-titre de l'application
146 setting_app_subtitle: Sous-titre de l'application
145 setting_welcome_text: Texte d'accueil
147 setting_welcome_text: Texte d'accueil
146 setting_default_language: Langue par défaut
148 setting_default_language: Langue par défaut
147 setting_login_required: Authentif. obligatoire
149 setting_login_required: Authentif. obligatoire
148 setting_self_registration: Enregistrement autorisé
150 setting_self_registration: Enregistrement autorisé
149 setting_attachment_max_size: Taille max des fichiers
151 setting_attachment_max_size: Taille max des fichiers
150 setting_issues_export_limit: Limite export demandes
152 setting_issues_export_limit: Limite export demandes
151 setting_mail_from: Adresse d'émission
153 setting_mail_from: Adresse d'émission
152 setting_host_name: Nom d'hôte
154 setting_host_name: Nom d'hôte
153 setting_text_formatting: Formatage du texte
155 setting_text_formatting: Formatage du texte
154
156
155 label_user: Utilisateur
157 label_user: Utilisateur
156 label_user_plural: Utilisateurs
158 label_user_plural: Utilisateurs
157 label_user_new: Nouvel utilisateur
159 label_user_new: Nouvel utilisateur
158 label_project: Projet
160 label_project: Projet
159 label_project_new: Nouveau projet
161 label_project_new: Nouveau projet
160 label_project_plural: Projets
162 label_project_plural: Projets
161 label_project_latest: Derniers projets
163 label_project_latest: Derniers projets
162 label_issue: Demande
164 label_issue: Demande
163 label_issue_new: Nouvelle demande
165 label_issue_new: Nouvelle demande
164 label_issue_plural: Demandes
166 label_issue_plural: Demandes
165 label_issue_view_all: Voir toutes les demandes
167 label_issue_view_all: Voir toutes les demandes
166 label_document: Document
168 label_document: Document
167 label_document_new: Nouveau document
169 label_document_new: Nouveau document
168 label_document_plural: Documents
170 label_document_plural: Documents
169 label_role: Rôle
171 label_role: Rôle
170 label_role_plural: Rôles
172 label_role_plural: Rôles
171 label_role_new: Nouveau rôle
173 label_role_new: Nouveau rôle
172 label_role_and_permissions: Rôles et permissions
174 label_role_and_permissions: Rôles et permissions
173 label_member: Membre
175 label_member: Membre
174 label_member_new: Nouveau membre
176 label_member_new: Nouveau membre
175 label_member_plural: Membres
177 label_member_plural: Membres
176 label_tracker: Tracker
178 label_tracker: Tracker
177 label_tracker_plural: Trackers
179 label_tracker_plural: Trackers
178 label_tracker_new: Nouveau tracker
180 label_tracker_new: Nouveau tracker
179 label_workflow: Workflow
181 label_workflow: Workflow
180 label_issue_status: Statut de demandes
182 label_issue_status: Statut de demandes
181 label_issue_status_plural: Statuts de demandes
183 label_issue_status_plural: Statuts de demandes
182 label_issue_status_new: Nouveau statut
184 label_issue_status_new: Nouveau statut
183 label_issue_category: Catégorie de demandes
185 label_issue_category: Catégorie de demandes
184 label_issue_category_plural: Catégories de demandes
186 label_issue_category_plural: Catégories de demandes
185 label_issue_category_new: Nouvelle catégorie
187 label_issue_category_new: Nouvelle catégorie
186 label_custom_field: Champ personnalisé
188 label_custom_field: Champ personnalisé
187 label_custom_field_plural: Champs personnalisés
189 label_custom_field_plural: Champs personnalisés
188 label_custom_field_new: Nouveau champ personnalisé
190 label_custom_field_new: Nouveau champ personnalisé
189 label_enumerations: Listes de valeurs
191 label_enumerations: Listes de valeurs
190 label_enumeration_new: Nouvelle valeur
192 label_enumeration_new: Nouvelle valeur
191 label_information: Information
193 label_information: Information
192 label_information_plural: Informations
194 label_information_plural: Informations
193 label_please_login: Identification
195 label_please_login: Identification
194 label_register: S'enregistrer
196 label_register: S'enregistrer
195 label_password_lost: Mot de passe perdu
197 label_password_lost: Mot de passe perdu
196 label_home: Accueil
198 label_home: Accueil
197 label_my_page: Ma page
199 label_my_page: Ma page
198 label_my_account: Mon compte
200 label_my_account: Mon compte
199 label_my_projects: Mes projets
201 label_my_projects: Mes projets
200 label_administration: Administration
202 label_administration: Administration
201 label_login: Connexion
203 label_login: Connexion
202 label_logout: Déconnexion
204 label_logout: Déconnexion
203 label_help: Aide
205 label_help: Aide
204 label_reported_issues: Demandes soumises
206 label_reported_issues: Demandes soumises
205 label_assigned_to_me_issues: Demandes qui me sont assignées
207 label_assigned_to_me_issues: Demandes qui me sont assignées
206 label_last_login: Dernière connexion
208 label_last_login: Dernière connexion
207 label_last_updates: Dernière mise à jour
209 label_last_updates: Dernière mise à jour
208 label_last_updates_plural: %d dernières mises à jour
210 label_last_updates_plural: %d dernières mises à jour
209 label_registered_on: Inscrit le
211 label_registered_on: Inscrit le
210 label_activity: Activité
212 label_activity: Activité
211 label_new: Nouveau
213 label_new: Nouveau
212 label_logged_as: Connecté en tant que
214 label_logged_as: Connecté en tant que
213 label_environment: Environnement
215 label_environment: Environnement
214 label_authentication: Authentification
216 label_authentication: Authentification
215 label_auth_source: Mode d'authentification
217 label_auth_source: Mode d'authentification
216 label_auth_source_new: Nouveau mode d'authentification
218 label_auth_source_new: Nouveau mode d'authentification
217 label_auth_source_plural: Modes d'authentification
219 label_auth_source_plural: Modes d'authentification
218 label_subproject: Sous-projet
220 label_subproject: Sous-projet
219 label_subproject_plural: Sous-projets
221 label_subproject_plural: Sous-projets
220 label_min_max_length: Longueurs mini - maxi
222 label_min_max_length: Longueurs mini - maxi
221 label_list: Liste
223 label_list: Liste
222 label_date: Date
224 label_date: Date
223 label_integer: Entier
225 label_integer: Entier
224 label_boolean: Booléen
226 label_boolean: Booléen
225 label_string: Texte
227 label_string: Texte
226 label_text: Texte long
228 label_text: Texte long
227 label_attribute: Attribut
229 label_attribute: Attribut
228 label_attribute_plural: Attributs
230 label_attribute_plural: Attributs
229 label_download: %d Téléchargement
231 label_download: %d Téléchargement
230 label_download_plural: %d Téléchargements
232 label_download_plural: %d Téléchargements
231 label_no_data: Aucune donnée à afficher
233 label_no_data: Aucune donnée à afficher
232 label_change_status: Changer le statut
234 label_change_status: Changer le statut
233 label_history: Historique
235 label_history: Historique
234 label_attachment: Fichier
236 label_attachment: Fichier
235 label_attachment_new: Nouveau fichier
237 label_attachment_new: Nouveau fichier
236 label_attachment_delete: Supprimer le fichier
238 label_attachment_delete: Supprimer le fichier
237 label_attachment_plural: Fichiers
239 label_attachment_plural: Fichiers
238 label_report: Rapport
240 label_report: Rapport
239 label_report_plural: Rapports
241 label_report_plural: Rapports
240 label_news: Annonce
242 label_news: Annonce
241 label_news_new: Nouvelle annonce
243 label_news_new: Nouvelle annonce
242 label_news_plural: Annonces
244 label_news_plural: Annonces
243 label_news_latest: Dernières annonces
245 label_news_latest: Dernières annonces
244 label_news_view_all: Voir toutes les annonces
246 label_news_view_all: Voir toutes les annonces
245 label_change_log: Historique
247 label_change_log: Historique
246 label_settings: Configuration
248 label_settings: Configuration
247 label_overview: Aperçu
249 label_overview: Aperçu
248 label_version: Version
250 label_version: Version
249 label_version_new: Nouvelle version
251 label_version_new: Nouvelle version
250 label_version_plural: Versions
252 label_version_plural: Versions
251 label_confirmation: Confirmation
253 label_confirmation: Confirmation
252 label_export_to: Exporter en
254 label_export_to: Exporter en
253 label_read: Lire...
255 label_read: Lire...
254 label_public_projects: Projets publics
256 label_public_projects: Projets publics
255 label_open_issues: ouvert
257 label_open_issues: ouvert
256 label_open_issues_plural: ouverts
258 label_open_issues_plural: ouverts
257 label_closed_issues: fermé
259 label_closed_issues: fermé
258 label_closed_issues_plural: fermés
260 label_closed_issues_plural: fermés
259 label_total: Total
261 label_total: Total
260 label_permissions: Permissions
262 label_permissions: Permissions
261 label_current_status: Statut actuel
263 label_current_status: Statut actuel
262 label_new_statuses_allowed: Nouveaux statuts autorisés
264 label_new_statuses_allowed: Nouveaux statuts autorisés
263 label_all: tous
265 label_all: tous
264 label_none: aucun
266 label_none: aucun
265 label_next: Suivant
267 label_next: Suivant
266 label_previous: Précédent
268 label_previous: Précédent
267 label_used_by: Utilisé par
269 label_used_by: Utilisé par
268 label_details: Détails...
270 label_details: Détails...
269 label_add_note: Ajouter une note
271 label_add_note: Ajouter une note
270 label_per_page: Par page
272 label_per_page: Par page
271 label_calendar: Calendrier
273 label_calendar: Calendrier
272 label_months_from: mois depuis
274 label_months_from: mois depuis
273 label_gantt: Gantt
275 label_gantt: Gantt
274 label_internal: Interne
276 label_internal: Interne
275 label_last_changes: %d derniers changements
277 label_last_changes: %d derniers changements
276 label_change_view_all: Voir tous les changements
278 label_change_view_all: Voir tous les changements
277 label_personalize_page: Personnaliser cette page
279 label_personalize_page: Personnaliser cette page
278 label_comment: Commentaire
280 label_comment: Commentaire
279 label_comment_plural: Commentaires
281 label_comment_plural: Commentaires
280 label_comment_add: Ajouter un commentaire
282 label_comment_add: Ajouter un commentaire
281 label_comment_added: Commentaire ajouté
283 label_comment_added: Commentaire ajouté
282 label_comment_delete: Supprimer les commentaires
284 label_comment_delete: Supprimer les commentaires
283 label_query: Rapport personnalisé
285 label_query: Rapport personnalisé
284 label_query_plural: Rapports personnalisés
286 label_query_plural: Rapports personnalisés
285 label_query_new: Nouveau rapport
287 label_query_new: Nouveau rapport
286 label_filter_add: Ajouter le filtre
288 label_filter_add: Ajouter le filtre
287 label_filter_plural: Filtres
289 label_filter_plural: Filtres
288 label_equals: égal
290 label_equals: égal
289 label_not_equals: différent
291 label_not_equals: différent
290 label_in_less_than: dans moins de
292 label_in_less_than: dans moins de
291 label_in_more_than: dans plus de
293 label_in_more_than: dans plus de
292 label_in: dans
294 label_in: dans
293 label_today: aujourd'hui
295 label_today: aujourd'hui
294 label_less_than_ago: il y a moins de
296 label_less_than_ago: il y a moins de
295 label_more_than_ago: il y a plus de
297 label_more_than_ago: il y a plus de
296 label_ago: il y a
298 label_ago: il y a
297 label_contains: contient
299 label_contains: contient
298 label_not_contains: ne contient pas
300 label_not_contains: ne contient pas
299 label_day_plural: jours
301 label_day_plural: jours
300 label_repository: Dépôt SVN
302 label_repository: Dépôt SVN
301 label_browse: Parcourir
303 label_browse: Parcourir
302 label_modification: %d modification
304 label_modification: %d modification
303 label_modification_plural: %d modifications
305 label_modification_plural: %d modifications
304 label_revision: Révision
306 label_revision: Révision
305 label_revision_plural: Révisions
307 label_revision_plural: Révisions
306 label_added: ajouté
308 label_added: ajouté
307 label_modified: modifié
309 label_modified: modifié
308 label_deleted: supprimé
310 label_deleted: supprimé
309 label_latest_revision: Dernière révision
311 label_latest_revision: Dernière révision
310 label_view_revisions: Voir les révisions
312 label_view_revisions: Voir les révisions
311 label_max_size: Taille maximale
313 label_max_size: Taille maximale
312 label_on: sur
314 label_on: sur
313 label_sort_highest: Remonter en premier
315 label_sort_highest: Remonter en premier
314 label_sort_higher: Remonter
316 label_sort_higher: Remonter
315 label_sort_lower: Descendre
317 label_sort_lower: Descendre
316 label_sort_lowest: Descendre en dernier
318 label_sort_lowest: Descendre en dernier
317 label_roadmap: Roadmap
319 label_roadmap: Roadmap
318 label_search: Recherche
320 label_search: Recherche
319 label_result: %d résultat
321 label_result: %d résultat
320 label_result_plural: %d résultats
322 label_result_plural: %d résultats
321
323
322 button_login: Connexion
324 button_login: Connexion
323 button_submit: Soumettre
325 button_submit: Soumettre
324 button_save: Sauvegarder
326 button_save: Sauvegarder
325 button_check_all: Tout cocher
327 button_check_all: Tout cocher
326 button_uncheck_all: Tout décocher
328 button_uncheck_all: Tout décocher
327 button_delete: Supprimer
329 button_delete: Supprimer
328 button_create: Créer
330 button_create: Créer
329 button_test: Tester
331 button_test: Tester
330 button_edit: Modifier
332 button_edit: Modifier
331 button_add: Ajouter
333 button_add: Ajouter
332 button_change: Changer
334 button_change: Changer
333 button_apply: Appliquer
335 button_apply: Appliquer
334 button_clear: Effacer
336 button_clear: Effacer
335 button_lock: Verrouiller
337 button_lock: Verrouiller
336 button_unlock: Déverrouiller
338 button_unlock: Déverrouiller
337 button_download: Télécharger
339 button_download: Télécharger
338 button_list: Lister
340 button_list: Lister
339 button_view: Voir
341 button_view: Voir
340 button_move: Déplacer
342 button_move: Déplacer
341 button_back: Retour
343 button_back: Retour
342 button_cancel: Annuler
344 button_cancel: Annuler
343 button_activate: Activer
345 button_activate: Activer
344 button_sort: Trier
346 button_sort: Trier
345
347
346 text_select_mail_notifications: Sélectionner les actions pour lesquelles la notification par mail doit être activée.
348 text_select_mail_notifications: Sélectionner les actions pour lesquelles la notification par mail doit être activée.
347 text_regexp_info: ex. ^[A-Z0-9]+$
349 text_regexp_info: ex. ^[A-Z0-9]+$
348 text_min_max_length_info: 0 pour aucune restriction
350 text_min_max_length_info: 0 pour aucune restriction
349 text_project_destroy_confirmation: Etes-vous sûr de vouloir supprimer ce projet et tout ce qui lui est rattaché ?
351 text_project_destroy_confirmation: Etes-vous sûr de vouloir supprimer ce projet et tout ce qui lui est rattaché ?
350 text_workflow_edit: Sélectionner un tracker et un rôle pour éditer le workflow
352 text_workflow_edit: Sélectionner un tracker et un rôle pour éditer le workflow
351 text_are_you_sure: Etes-vous sûr ?
353 text_are_you_sure: Etes-vous sûr ?
352 text_journal_changed: changé de %s à %s
354 text_journal_changed: changé de %s à %s
353 text_journal_set_to: mis à %s
355 text_journal_set_to: mis à %s
354 text_journal_deleted: supprimé
356 text_journal_deleted: supprimé
355 text_tip_task_begin_day: tâche commençant ce jour
357 text_tip_task_begin_day: tâche commençant ce jour
356 text_tip_task_end_day: tâche finissant ce jour
358 text_tip_task_end_day: tâche finissant ce jour
357 text_tip_task_begin_end_day: tâche commençant et finissant ce jour
359 text_tip_task_begin_end_day: tâche commençant et finissant ce jour
358
360
359 default_role_manager: Manager
361 default_role_manager: Manager
360 default_role_developper: Développeur
362 default_role_developper: Développeur
361 default_role_reporter: Rapporteur
363 default_role_reporter: Rapporteur
362 default_tracker_bug: Anomalie
364 default_tracker_bug: Anomalie
363 default_tracker_feature: Evolution
365 default_tracker_feature: Evolution
364 default_tracker_support: Assistance
366 default_tracker_support: Assistance
365 default_issue_status_new: Nouveau
367 default_issue_status_new: Nouveau
366 default_issue_status_assigned: Assigné
368 default_issue_status_assigned: Assigné
367 default_issue_status_resolved: Résolu
369 default_issue_status_resolved: Résolu
368 default_issue_status_feedback: Commentaire
370 default_issue_status_feedback: Commentaire
369 default_issue_status_closed: Fermé
371 default_issue_status_closed: Fermé
370 default_issue_status_rejected: Rejeté
372 default_issue_status_rejected: Rejeté
371 default_doc_category_user: Documentation utilisateur
373 default_doc_category_user: Documentation utilisateur
372 default_doc_category_tech: Documentation technique
374 default_doc_category_tech: Documentation technique
373 default_priority_low: Bas
375 default_priority_low: Bas
374 default_priority_normal: Normal
376 default_priority_normal: Normal
375 default_priority_high: Haut
377 default_priority_high: Haut
376 default_priority_urgent: Urgent
378 default_priority_urgent: Urgent
377 default_priority_immediate: Immédiat
379 default_priority_immediate: Immédiat
378
380
379 enumeration_issue_priorities: Priorités des demandes
381 enumeration_issue_priorities: Priorités des demandes
380 enumeration_doc_categories: Catégories des documents
382 enumeration_doc_categories: Catégories des documents
@@ -1,381 +1,383
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: 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月
4 actionview_datehelper_select_month_names: 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月
5 actionview_datehelper_select_month_names_abbr: 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月
5 actionview_datehelper_select_month_names_abbr: 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月
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_select_year_suffix:
8 actionview_datehelper_select_year_suffix:
9 actionview_datehelper_time_in_words_day: 1日
9 actionview_datehelper_time_in_words_day: 1日
10 actionview_datehelper_time_in_words_day_plural: %d日間
10 actionview_datehelper_time_in_words_day_plural: %d日間
11 actionview_datehelper_time_in_words_hour_about: 約1時間
11 actionview_datehelper_time_in_words_hour_about: 約1時間
12 actionview_datehelper_time_in_words_hour_about_plural: 約%d時間
12 actionview_datehelper_time_in_words_hour_about_plural: 約%d時間
13 actionview_datehelper_time_in_words_hour_about_single: 約1時間
13 actionview_datehelper_time_in_words_hour_about_single: 約1時間
14 actionview_datehelper_time_in_words_minute: 1分
14 actionview_datehelper_time_in_words_minute: 1分
15 actionview_datehelper_time_in_words_minute_half: 約30秒
15 actionview_datehelper_time_in_words_minute_half: 約30秒
16 actionview_datehelper_time_in_words_minute_less_than: 1分以内
16 actionview_datehelper_time_in_words_minute_less_than: 1分以内
17 actionview_datehelper_time_in_words_minute_plural: %d分
17 actionview_datehelper_time_in_words_minute_plural: %d分
18 actionview_datehelper_time_in_words_minute_single: 1分
18 actionview_datehelper_time_in_words_minute_single: 1分
19 actionview_datehelper_time_in_words_second_less_than: 1秒以内
19 actionview_datehelper_time_in_words_second_less_than: 1秒以内
20 actionview_datehelper_time_in_words_second_less_than_plural: %d秒以内
20 actionview_datehelper_time_in_words_second_less_than_plural: %d秒以内
21 actionview_instancetag_blank_option: 選んでください
21 actionview_instancetag_blank_option: 選んでください
22
22
23 activerecord_error_inclusion: がリストに含まれていません
23 activerecord_error_inclusion: がリストに含まれていません
24 activerecord_error_exclusion: が予約されています
24 activerecord_error_exclusion: が予約されています
25 activerecord_error_invalid: が無効です
25 activerecord_error_invalid: が無効です
26 activerecord_error_confirmation: 確認のパスワードと合っていません
26 activerecord_error_confirmation: 確認のパスワードと合っていません
27 activerecord_error_accepted: must be accepted
27 activerecord_error_accepted: must be accepted
28 activerecord_error_empty: が空です
28 activerecord_error_empty: が空です
29 activerecord_error_blank: が空白です
29 activerecord_error_blank: が空白です
30 activerecord_error_too_long: が長すぎます
30 activerecord_error_too_long: が長すぎます
31 activerecord_error_too_short: が短かすぎます
31 activerecord_error_too_short: が短かすぎます
32 activerecord_error_wrong_length: の長さが間違っています
32 activerecord_error_wrong_length: の長さが間違っています
33 activerecord_error_taken: has already been taken
33 activerecord_error_taken: has already been taken
34 activerecord_error_not_a_number: が数字ではありません
34 activerecord_error_not_a_number: が数字ではありません
35 activerecord_error_not_a_date: の日付が間違っています
35 activerecord_error_not_a_date: の日付が間違っています
36 activerecord_error_greater_than_start_date: を開始日より後にしてください
36 activerecord_error_greater_than_start_date: を開始日より後にしてください
37
37
38 general_fmt_age: %d歳
38 general_fmt_age: %d歳
39 general_fmt_age_plural: %d歳
39 general_fmt_age_plural: %d歳
40 general_fmt_date: %%Y年%%m月%%d日
40 general_fmt_date: %%Y年%%m月%%d日
41 general_fmt_datetime: %%Y年%%月%%d日 %%H:%%M %%p
41 general_fmt_datetime: %%Y年%%m月%%d日 %%H:%%M %%p
42 general_fmt_datetime_short: %%b %%d, %%H:%%M %%p
42 general_fmt_datetime_short: %%b %%d, %%H:%%M %%p
43 general_fmt_time: %%H:%%M %%p
43 general_fmt_time: %%H:%%M %%p
44 general_text_No: 'いいえ'
44 general_text_No: 'いいえ'
45 general_text_Yes: 'はい'
45 general_text_Yes: 'はい'
46 general_text_no: 'いいえ'
46 general_text_no: 'いいえ'
47 general_text_yes: 'はい'
47 general_text_yes: 'はい'
48 general_lang_ja: 'Japanese (日本語)'
48 general_lang_ja: 'Japanese (日本語)'
49 general_csv_separator: ','
49 general_csv_separator: ','
50 general_csv_encoding: SJIS
51 general_pdf_encoding: SJIS
50 general_day_names: 日曜日, 月曜日, 火曜日, 水曜日, 木曜日, 金曜日, 土曜日
52 general_day_names: 日曜日, 月曜日, 火曜日, 水曜日, 木曜日, 金曜日, 土曜日
51
53
52 notice_account_updated: アカウントが更新されました。
54 notice_account_updated: アカウントが更新されました。
53 notice_account_invalid_creditentials: ユーザ名もしくはパスワードが無効
55 notice_account_invalid_creditentials: ユーザ名もしくはパスワードが無効
54 notice_account_password_updated: パスワードが更新されました。
56 notice_account_password_updated: パスワードが更新されました。
55 notice_account_wrong_password: パスワードが違います
57 notice_account_wrong_password: パスワードが違います
56 notice_account_register_done: アカウントが作成されました。
58 notice_account_register_done: アカウントが作成されました。
57 notice_account_unknown_email: ユーザが存在しません。
59 notice_account_unknown_email: ユーザが存在しません。
58 notice_can_t_change_password: このアカウントでは外部認証を使っています。パスワードは変更できません。
60 notice_can_t_change_password: このアカウントでは外部認証を使っています。パスワードは変更できません。
59 notice_account_lost_email_sent: 新しいパスワードのメールを送信しました。
61 notice_account_lost_email_sent: 新しいパスワードのメールを送信しました。
60 notice_account_activated: アカウントが有効になりました。ログインできます。
62 notice_account_activated: アカウントが有効になりました。ログインできます。
61 notice_successful_create: 作成しました。
63 notice_successful_create: 作成しました。
62 notice_successful_update: 更新しました。
64 notice_successful_update: 更新しました。
63 notice_successful_delete: 削除しました。
65 notice_successful_delete: 削除しました。
64 notice_successful_connection: 接続しました。
66 notice_successful_connection: 接続しました。
65 notice_file_not_found: アクセスしようとしたページは存在しないか削除されています。
67 notice_file_not_found: アクセスしようとしたページは存在しないか削除されています。
66 notice_locking_conflict: 別のユーザがデータを更新しています。
68 notice_locking_conflict: 別のユーザがデータを更新しています。
67 notice_scm_error: リポジトリに、エントリ/リビジョンが存在しません。
69 notice_scm_error: リポジトリに、エントリ/リビジョンが存在しません。
68
70
69 mail_subject_lost_password: redMine パスワード
71 mail_subject_lost_password: redMine パスワード
70 mail_subject_register: redMine アカウントが有効になりました
72 mail_subject_register: redMine アカウントが有効になりました
71
73
72 gui_validation_error: 1 件のエラー
74 gui_validation_error: 1 件のエラー
73 gui_validation_error_plural: %d 件のエラー
75 gui_validation_error_plural: %d 件のエラー
74
76
75 field_name: 名前
77 field_name: 名前
76 field_description: 説明
78 field_description: 説明
77 field_summary: サマリ
79 field_summary: サマリ
78 field_is_required: 必須
80 field_is_required: 必須
79 field_firstname: 名前
81 field_firstname: 名前
80 field_lastname: 苗字
82 field_lastname: 苗字
81 field_mail: Email
83 field_mail: メールアドレス
82 field_filename: ファイル
84 field_filename: ファイル
83 field_filesize: サイズ
85 field_filesize: サイズ
84 field_downloads: ダウンロード
86 field_downloads: ダウンロード
85 field_author: 起票者
87 field_author: 起票者
86 field_created_on: 作成日
88 field_created_on: 作成日
87 field_updated_on: 更新日
89 field_updated_on: 更新日
88 field_field_format: 書式
90 field_field_format: 書式
89 field_is_for_all: 全プロジェクト向け
91 field_is_for_all: 全プロジェクト向け
90 field_possible_values: 選択肢
92 field_possible_values: 選択肢
91 field_regexp: 正規表現
93 field_regexp: 正規表現
92 field_min_length: 最小値
94 field_min_length: 最小値
93 field_max_length: 最大値
95 field_max_length: 最大値
94 field_value:
96 field_value:
95 field_category: カテゴリ
97 field_category: カテゴリ
96 field_title: タイトル
98 field_title: タイトル
97 field_project: プロジェクト
99 field_project: プロジェクト
98 field_issue: 問題
100 field_issue: 問題
99 field_status: ステータス
101 field_status: ステータス
100 field_notes: 注記
102 field_notes: 注記
101 field_is_closed: 終了した問題
103 field_is_closed: 終了した問題
102 field_is_default: デフォルトのステータス
104 field_is_default: デフォルトのステータス
103 field_html_color:
105 field_html_color:
104 field_tracker: トラッカー
106 field_tracker: トラッカー
105 field_subject: 題名
107 field_subject: 題名
106 field_due_date: 期限日
108 field_due_date: 期限日
107 field_assigned_to: 担当者
109 field_assigned_to: 担当者
108 field_priority: 優先度
110 field_priority: 優先度
109 field_fixed_version: 修正されたバージョン
111 field_fixed_version: 修正されたバージョン
110 field_user: ユーザ
112 field_user: ユーザ
111 field_role: 役割
113 field_role: 役割
112 field_homepage: ホームページ
114 field_homepage: ホームページ
113 field_is_public: 公開
115 field_is_public: 公開
114 field_parent: 親プロジェクト名
116 field_parent: 親プロジェクト名
115 field_is_in_chlog: 変更記録に表示されている問題
117 field_is_in_chlog: 変更記録に表示されている問題
116 field_login: ログイン
118 field_login: ログイン
117 field_mail_notification: メール通知
119 field_mail_notification: メール通知
118 field_admin: 管理者
120 field_admin: 管理者
119 field_locked: Locked
121 field_locked: ロック済
120 field_last_login_on: 最終接続日
122 field_last_login_on: 最終接続日
121 field_language: 言語
123 field_language: 言語
122 field_effective_date: Date
124 field_effective_date: 日付
123 field_password: パスワード
125 field_password: パスワード
124 field_new_password: 新しいパスワード
126 field_new_password: 新しいパスワード
125 field_password_confirmation: パスワードの確認
127 field_password_confirmation: パスワードの確認
126 field_version: バージョン
128 field_version: バージョン
127 field_type: Type
129 field_type: タイプ
128 field_host: ホスト
130 field_host: ホスト
129 field_port: ポート
131 field_port: ポート
130 field_account: アカウント
132 field_account: アカウント
131 field_base_dn: Base DN
133 field_base_dn: Base DN
132 field_attr_login: ログイン名属性
134 field_attr_login: ログイン名属性
133 field_attr_firstname: 名前属性
135 field_attr_firstname: 名前属性
134 field_attr_lastname: 苗字属性
136 field_attr_lastname: 苗字属性
135 field_attr_mail: メール属性
137 field_attr_mail: メール属性
136 field_onthefly: On-the-fly user creation
138 field_onthefly: あわせてユーザを作成
137 field_start_date: 開始日
139 field_start_date: 開始日
138 field_done_ratio: 進捗 %%
140 field_done_ratio: 進捗 %%
139 field_auth_source: 認証モード
141 field_auth_source: 認証モード
140 field_hide_mail: Emailアドレスを隠す
142 field_hide_mail: Emailアドレスを隠す
141 field_comment: コメント
143 field_comment: コメント
142 field_url: URL
144 field_url: URL
143
145
144 setting_app_title: アプリケーションのタイトル
146 setting_app_title: アプリケーションのタイトル
145 setting_app_subtitle: アプリケーションのサブタイトル
147 setting_app_subtitle: アプリケーションのサブタイトル
146 setting_welcome_text: ウェルカムメッセージ
148 setting_welcome_text: ウェルカムメッセージ
147 setting_default_language: 既定の言語
149 setting_default_language: 既定の言語
148 setting_login_required: 認証が必要
150 setting_login_required: 認証が必要
149 setting_self_registration: ユーザは自分で登録できる
151 setting_self_registration: ユーザは自分で登録できる
150 setting_attachment_max_size: 添付の最大サイズ
152 setting_attachment_max_size: 添付の最大サイズ
151 setting_issues_export_limit: 出力する問題数の上限
153 setting_issues_export_limit: 出力する問題数の上限
152 setting_mail_from: Emission メールアドレス
154 setting_mail_from: Emission メールアドレス
153 setting_host_name: ホスト名
155 setting_host_name: ホスト名
154 setting_text_formatting: テキストの書式
156 setting_text_formatting: テキストの書式
155
157
156 label_user: ユーザ
158 label_user: ユーザ
157 label_user_plural: ユーザ
159 label_user_plural: ユーザ
158 label_user_new: 新しいユーザ
160 label_user_new: 新しいユーザ
159 label_project: プロジェクト
161 label_project: プロジェクト
160 label_project_new: 新しいプロジェクト
162 label_project_new: 新しいプロジェクト
161 label_project_plural: プロジェクト
163 label_project_plural: プロジェクト
162 label_project_latest: 最近のプロジェクト
164 label_project_latest: 最近のプロジェクト
163 label_issue: 問題
165 label_issue: 問題
164 label_issue_new: 新しい問題
166 label_issue_new: 新しい問題
165 label_issue_plural: 問題
167 label_issue_plural: 問題
166 label_issue_view_all: 問題を全て見る
168 label_issue_view_all: 問題を全て見る
167 label_document: 文書
169 label_document: 文書
168 label_document_new: 新しい文書
170 label_document_new: 新しい文書
169 label_document_plural: 文書
171 label_document_plural: 文書
170 label_role: ロール
172 label_role: ロール
171 label_role_plural: ロール
173 label_role_plural: ロール
172 label_role_new: 新しいロール
174 label_role_new: 新しいロール
173 label_role_and_permissions: ロールと権限
175 label_role_and_permissions: ロールと権限
174 label_member: メンバー
176 label_member: メンバー
175 label_member_new: 新しいメンバー
177 label_member_new: 新しいメンバー
176 label_member_plural: メンバー
178 label_member_plural: メンバー
177 label_tracker: トラッカー
179 label_tracker: トラッカー
178 label_tracker_plural: トラッカー
180 label_tracker_plural: トラッカー
179 label_tracker_new: 新しいトラッカーを作成
181 label_tracker_new: 新しいトラッカーを作成
180 label_workflow: ワークフロー
182 label_workflow: ワークフロー
181 label_issue_status: 問題の状態
183 label_issue_status: 問題の状態
182 label_issue_status_plural: 問題の状態
184 label_issue_status_plural: 問題の状態
183 label_issue_status_new: 新しい状態
185 label_issue_status_new: 新しい状態
184 label_issue_category: 問題のカテゴリ
186 label_issue_category: 問題のカテゴリ
185 label_issue_category_plural: 問題のカテゴリ
187 label_issue_category_plural: 問題のカテゴリ
186 label_issue_category_new: 新しいカテゴリ
188 label_issue_category_new: 新しいカテゴリ
187 label_custom_field: カスタムフィールド
189 label_custom_field: カスタムフィールド
188 label_custom_field_plural: カスタムフィールド
190 label_custom_field_plural: カスタムフィールド
189 label_custom_field_new: 新しいカスタムフィールドを作成
191 label_custom_field_new: 新しいカスタムフィールドを作成
190 label_enumerations: 列挙項目
192 label_enumerations: 列挙項目
191 label_enumeration_new: 新しい値
193 label_enumeration_new: 新しい値
192 label_information: 情報
194 label_information: 情報
193 label_information_plural: 情報
195 label_information_plural: 情報
194 label_please_login: ログインしてください
196 label_please_login: ログインしてください
195 label_register: 登録する
197 label_register: 登録する
196 label_password_lost: パスワードの再発行
198 label_password_lost: パスワードの再発行
197 label_home: ホーム
199 label_home: ホーム
198 label_my_page: マイページ
200 label_my_page: マイページ
199 label_my_account: マイアカウント
201 label_my_account: マイアカウント
200 label_my_projects: マイプロジェクト
202 label_my_projects: マイプロジェクト
201 label_administration: 管理
203 label_administration: 管理
202 label_login: ログイン
204 label_login: ログイン
203 label_logout: ログアウト
205 label_logout: ログアウト
204 label_help: ヘルプ
206 label_help: ヘルプ
205 label_reported_issues: 報告されている問題
207 label_reported_issues: 報告されている問題
206 label_assigned_to_me_issues: 担当している問題
208 label_assigned_to_me_issues: 担当している問題
207 label_last_login: 最近の接続
209 label_last_login: 最近の接続
208 label_last_updates: 最近の更新 1 件
210 label_last_updates: 最近の更新 1 件
209 label_last_updates_plural: 最近の更新 %d 件
211 label_last_updates_plural: 最近の更新 %d 件
210 label_registered_on: 登録日
212 label_registered_on: 登録日
211 label_activity: 活動
213 label_activity: 活動
212 label_new: 新しく作成
214 label_new: 新しく作成
213 label_logged_as: ログイン中:
215 label_logged_as: ログイン中:
214 label_environment: 環境
216 label_environment: 環境
215 label_authentication: 認証
217 label_authentication: 認証
216 label_auth_source: 認証モード
218 label_auth_source: 認証モード
217 label_auth_source_new: 新しい認証モード
219 label_auth_source_new: 新しい認証モード
218 label_auth_source_plural: 認証モード
220 label_auth_source_plural: 認証モード
219 label_subproject: サブプロジェクト
221 label_subproject: サブプロジェクト
220 label_subproject_plural: サブプロジェクト
222 label_subproject_plural: サブプロジェクト
221 label_min_max_length: 最小値 - 最大値の長さ
223 label_min_max_length: 最小値 - 最大値の長さ
222 label_list: リストから選択
224 label_list: リストから選択
223 label_date: 日付
225 label_date: 日付
224 label_integer: 整数
226 label_integer: 整数
225 label_boolean: 真偽値
227 label_boolean: 真偽値
226 label_string: テキスト
228 label_string: テキスト
227 label_text: 長いテキスト
229 label_text: 長いテキスト
228 label_attribute: 属性
230 label_attribute: 属性
229 label_attribute_plural: 属性
231 label_attribute_plural: 属性
230 label_download: %d ダウンロード
232 label_download: %d ダウンロード
231 label_download_plural: %d ダウンロード
233 label_download_plural: %d ダウンロード
232 label_no_data: 表示するデータがありません
234 label_no_data: 表示するデータがありません
233 label_change_status: 変更の状況
235 label_change_status: 変更の状況
234 label_history: 履歴
236 label_history: 履歴
235 label_attachment: ファイル
237 label_attachment: ファイル
236 label_attachment_new: 新しいファイル
238 label_attachment_new: 新しいファイル
237 label_attachment_delete: ファイルを削除
239 label_attachment_delete: ファイルを削除
238 label_attachment_plural: ファイル
240 label_attachment_plural: ファイル
239 label_report: レポート
241 label_report: レポート
240 label_report_plural: レポート
242 label_report_plural: レポート
241 label_news: ニュース
243 label_news: ニュース
242 label_news_new: ニュースを追加
244 label_news_new: ニュースを追加
243 label_news_plural: ニュース
245 label_news_plural: ニュース
244 label_news_latest: 最新ニュース
246 label_news_latest: 最新ニュース
245 label_news_view_all: 全てのニュースを見る
247 label_news_view_all: 全てのニュースを見る
246 label_change_log: 変更記録
248 label_change_log: 変更記録
247 label_settings: 設定
249 label_settings: 設定
248 label_overview: 概要
250 label_overview: 概要
249 label_version: バージョン
251 label_version: バージョン
250 label_version_new: 新しいバージョン
252 label_version_new: 新しいバージョン
251 label_version_plural: バージョン
253 label_version_plural: バージョン
252 label_confirmation: 確認
254 label_confirmation: 確認
253 label_export_to: 他の形式に出力
255 label_export_to: 他の形式に出力
254 label_read: 読む...
256 label_read: 読む...
255 label_public_projects: 公開プロジェクト
257 label_public_projects: 公開プロジェクト
256 label_open_issues: 未着手
258 label_open_issues: 未着手
257 label_open_issues_plural: 未着手
259 label_open_issues_plural: 未着手
258 label_closed_issues: 終了
260 label_closed_issues: 終了
259 label_closed_issues_plural: 終了
261 label_closed_issues_plural: 終了
260 label_total: 合計
262 label_total: 合計
261 label_permissions: 権限
263 label_permissions: 権限
262 label_current_status: 現在の状態
264 label_current_status: 現在の状態
263 label_new_statuses_allowed: 状態の移行先
265 label_new_statuses_allowed: 状態の移行先
264 label_all: 全て
266 label_all: 全て
265 label_none: なし
267 label_none: なし
266 label_next:
268 label_next:
267 label_previous:
269 label_previous:
268 label_used_by: 使用中
270 label_used_by: 使用中
269 label_details: 詳細...
271 label_details: 詳細...
270 label_add_note: 注記を追加
272 label_add_note: 注記を追加
271 label_per_page: ページ毎
273 label_per_page: ページ毎
272 label_calendar: カレンダー
274 label_calendar: カレンダー
273 label_months_from: ヶ月 from
275 label_months_from: ヶ月 from
274 label_gantt: ガントチャート
276 label_gantt: ガントチャート
275 label_internal: Internal
277 label_internal: Internal
276 label_last_changes: 最新の変更 %d 件
278 label_last_changes: 最新の変更 %d 件
277 label_change_view_all: 全ての変更を見る
279 label_change_view_all: 全ての変更を見る
278 label_personalize_page: このページをパーソナライズする
280 label_personalize_page: このページをパーソナライズする
279 label_comment: コメント
281 label_comment: コメント
280 label_comment_plural: コメント
282 label_comment_plural: コメント
281 label_comment_add: コメント追加
283 label_comment_add: コメント追加
282 label_comment_added: 追加されたコメント
284 label_comment_added: 追加されたコメント
283 label_comment_delete: コメント削除
285 label_comment_delete: コメント削除
284 label_query: カスタムクエリ
286 label_query: カスタムクエリ
285 label_query_plural: カスタムクエリ
287 label_query_plural: カスタムクエリ
286 label_query_new: 新しいクエリ
288 label_query_new: 新しいクエリ
287 label_filter_add: フィルタ追加
289 label_filter_add: フィルタ追加
288 label_filter_plural: フィルタ
290 label_filter_plural: フィルタ
289 label_equals: 等しい
291 label_equals: 等しい
290 label_not_equals: 等しくない
292 label_not_equals: 等しくない
291 label_in_less_than: 残日数がこれより多い
293 label_in_less_than: 残日数がこれより多い
292 label_in_more_than: 残日数がこれより少ない
294 label_in_more_than: 残日数がこれより少ない
293 label_in: 残日数
295 label_in: 残日数
294 label_today: 今日
296 label_today: 今日
295 label_less_than_ago: 経過日数がこれより少ない
297 label_less_than_ago: 経過日数がこれより少ない
296 label_more_than_ago: 経過日数がこれより多い
298 label_more_than_ago: 経過日数がこれより多い
297 label_ago: 日前
299 label_ago: 日前
298 label_contains: 含む
300 label_contains: 含む
299 label_not_contains: 含まない
301 label_not_contains: 含まない
300 label_day_plural:
302 label_day_plural:
301 label_repository: SVNリポジトリ
303 label_repository: SVNリポジトリ
302 label_browse: ブラウズ
304 label_browse: ブラウズ
303 label_modification: %d点の変更
305 label_modification: %d 点の変更
304 label_modification_plural: %d点の変更
306 label_modification_plural: %d 点の変更
305 label_revision: リビジョン
307 label_revision: リビジョン
306 label_revision_plural: リビジョン
308 label_revision_plural: リビジョン
307 label_added: 追加された
309 label_added: 追加された
308 label_modified: 変更された
310 label_modified: 変更された
309 label_deleted: 削除された
311 label_deleted: 削除された
310 label_latest_revision: 最新リビジョン
312 label_latest_revision: 最新リビジョン
311 label_view_revisions: リビジョンを見る
313 label_view_revisions: リビジョンを見る
312 label_max_size: 最大サイズ
314 label_max_size: 最大サイズ
313 label_on:
315 label_on:
314 label_sort_highest: 一番上へ
316 label_sort_highest: 一番上へ
315 label_sort_higher: 上へ
317 label_sort_higher: 上へ
316 label_sort_lower: 下へ
318 label_sort_lower: 下へ
317 label_sort_lowest: 一番下へ
319 label_sort_lowest: 一番下へ
318 label_roadmap: ロードマップ
320 label_roadmap: ロードマップ
319 label_search: Search
321 label_search: 検索
320 label_result: %d result
322 label_result: %d 件の結果
321 label_result_plural: %d results
323 label_result_plural: %d 件の結果
322
324
323 button_login: ログイン
325 button_login: ログイン
324 button_submit: 変更
326 button_submit: 変更
325 button_save: 保存
327 button_save: 保存
326 button_check_all: チェックを全部つける
328 button_check_all: チェックを全部つける
327 button_uncheck_all: チェックを全部外す
329 button_uncheck_all: チェックを全部外す
328 button_delete: 削除
330 button_delete: 削除
329 button_create: 作成
331 button_create: 作成
330 button_test: テスト
332 button_test: テスト
331 button_edit: 編集
333 button_edit: 編集
332 button_add: 追加
334 button_add: 追加
333 button_change: 変更
335 button_change: 変更
334 button_apply: 適用
336 button_apply: 適用
335 button_clear: クリア
337 button_clear: クリア
336 button_lock: ロック
338 button_lock: ロック
337 button_unlock: アンロック
339 button_unlock: アンロック
338 button_download: ダウンロード
340 button_download: ダウンロード
339 button_list: 一覧
341 button_list: 一覧
340 button_view: 見る
342 button_view: 見る
341 button_move: 移動
343 button_move: 移動
342 button_back: 戻る
344 button_back: 戻る
343 button_cancel: キャンセル
345 button_cancel: キャンセル
344 button_activate: 有効にする
346 button_activate: 有効にする
345 button_sort: ソート
347 button_sort: ソート
346
348
347 text_select_mail_notifications: どのメール通知を送信するかアクションを選択してください。
349 text_select_mail_notifications: どのメール通知を送信するかアクションを選択してください。
348 text_regexp_info: 例) ^[A-Z0-9]+$
350 text_regexp_info: 例) ^[A-Z0-9]+$
349 text_min_max_length_info: 0だと無制限になります
351 text_min_max_length_info: 0だと無制限になります
350 text_project_destroy_confirmation: 本当にこのプロジェクトと関連データを削除したいのですか?
352 text_project_destroy_confirmation: 本当にこのプロジェクトと関連データを削除したいのですか?
351 text_workflow_edit: ワークフローを編集するロールとtrackerを選んでください
353 text_workflow_edit: ワークフローを編集するロールとトラッカーを選んでください
352 text_are_you_sure: 本当に?
354 text_are_you_sure: 本当に?
353 text_journal_changed: %s から %s への変更
355 text_journal_changed: %s から %s への変更
354 text_journal_set_to: %s にセット
356 text_journal_set_to: %s にセット
355 text_journal_deleted: 削除
357 text_journal_deleted: 削除
356 text_tip_task_begin_day: この日に開始するタスク
358 text_tip_task_begin_day: この日に開始するタスク
357 text_tip_task_end_day: この日に終了するタスク
359 text_tip_task_end_day: この日に終了するタスク
358 text_tip_task_begin_end_day: この日のうちに開始して終了するタスク
360 text_tip_task_begin_end_day: この日のうちに開始して終了するタスク
359
361
360 default_role_manager: 管理者
362 default_role_manager: 管理者
361 default_role_developper: 開発者
363 default_role_developper: 開発者
362 default_role_reporter: 報告者
364 default_role_reporter: 報告者
363 default_tracker_bug: バグ
365 default_tracker_bug: バグ
364 default_tracker_feature: 機能
366 default_tracker_feature: 機能
365 default_tracker_support: サポート
367 default_tracker_support: サポート
366 default_issue_status_new: 新規
368 default_issue_status_new: 新規
367 default_issue_status_assigned: 分担
369 default_issue_status_assigned: 分担
368 default_issue_status_resolved: 解決
370 default_issue_status_resolved: 解決
369 default_issue_status_feedback: フィードバック
371 default_issue_status_feedback: フィードバック
370 default_issue_status_closed: 終了
372 default_issue_status_closed: 終了
371 default_issue_status_rejected: 却下
373 default_issue_status_rejected: 却下
372 default_doc_category_user: ユーザ文書
374 default_doc_category_user: ユーザ文書
373 default_doc_category_tech: 技術文書
375 default_doc_category_tech: 技術文書
374 default_priority_low: 低め
376 default_priority_low: 低め
375 default_priority_normal: 通常
377 default_priority_normal: 通常
376 default_priority_high: 高め
378 default_priority_high: 高め
377 default_priority_urgent: 急いで
379 default_priority_urgent: 急いで
378 default_priority_immediate: 今すぐ
380 default_priority_immediate: 今すぐ
379
381
380 enumeration_issue_priorities: 問題の優先度
382 enumeration_issue_priorities: 問題の優先度
381 enumeration_doc_categories: 文書カテゴリ
383 enumeration_doc_categories: 文書カテゴリ
@@ -1,468 +1,468
1 # Copyright (c) 2006 4ssoM LLC <www.4ssoM.com>
1 # Copyright (c) 2006 4ssoM LLC <www.4ssoM.com>
2 # 1.12 contributed by Ed Moss.
2 # 1.12 contributed by Ed Moss.
3 #
3 #
4 # The MIT License
4 # The MIT License
5 #
5 #
6 # Permission is hereby granted, free of charge, to any person obtaining a copy
6 # Permission is hereby granted, free of charge, to any person obtaining a copy
7 # of this software and associated documentation files (the "Software"), to deal
7 # of this software and associated documentation files (the "Software"), to deal
8 # in the Software without restriction, including without limitation the rights
8 # in the Software without restriction, including without limitation the rights
9 # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 # copies of the Software, and to permit persons to whom the Software is
10 # copies of the Software, and to permit persons to whom the Software is
11 # furnished to do so, subject to the following conditions:
11 # furnished to do so, subject to the following conditions:
12 #
12 #
13 # The above copyright notice and this permission notice shall be included in
13 # The above copyright notice and this permission notice shall be included in
14 # all copies or substantial portions of the Software.
14 # all copies or substantial portions of the Software.
15 #
15 #
16 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 # THE SOFTWARE.
22 # THE SOFTWARE.
23 #
23 #
24 # This is direct port of japanese.php
24 # This is direct port of japanese.php
25 #
25 #
26 # Japanese PDF support.
26 # Japanese PDF support.
27 #
27 #
28 # Usage is as follows:
28 # Usage is as follows:
29 #
29 #
30 # require 'fpdf'
30 # require 'fpdf'
31 # require 'chinese'
31 # require 'chinese'
32 # pdf = FPDF.new
32 # pdf = FPDF.new
33 # pdf.extend(PDF_Japanese)
33 # pdf.extend(PDF_Japanese)
34 #
34 #
35 # This allows it to be combined with other extensions, such as the bookmark
35 # This allows it to be combined with other extensions, such as the bookmark
36 # module.
36 # module.
37
37
38 module PDF_Japanese
38 module PDF_Japanese
39
39
40 SJIS_widths={' ' => 278, '!' => 299, '"' => 353, '#' => 614, '$' => 614, '%' => 721, '&' => 735, '\'' => 216,
40 SJIS_widths={' ' => 278, '!' => 299, '"' => 353, '#' => 614, '$' => 614, '%' => 721, '&' => 735, '\'' => 216,
41 '(' => 323, ')' => 323, '*' => 449, '+' => 529, ',' => 219, '-' => 306, '.' => 219, '/' => 453, '0' => 614, '1' => 614,
41 '(' => 323, ')' => 323, '*' => 449, '+' => 529, ',' => 219, '-' => 306, '.' => 219, '/' => 453, '0' => 614, '1' => 614,
42 '2' => 614, '3' => 614, '4' => 614, '5' => 614, '6' => 614, '7' => 614, '8' => 614, '9' => 614, ':' => 219, ';' => 219,
42 '2' => 614, '3' => 614, '4' => 614, '5' => 614, '6' => 614, '7' => 614, '8' => 614, '9' => 614, ':' => 219, ';' => 219,
43 '<' => 529, '=' => 529, '>' => 529, '?' => 486, '@' => 744, 'A' => 646, 'B' => 604, 'C' => 617, 'D' => 681, 'E' => 567,
43 '<' => 529, '=' => 529, '>' => 529, '?' => 486, '@' => 744, 'A' => 646, 'B' => 604, 'C' => 617, 'D' => 681, 'E' => 567,
44 'F' => 537, 'G' => 647, 'H' => 738, 'I' => 320, 'J' => 433, 'K' => 637, 'L' => 566, 'M' => 904, 'N' => 710, 'O' => 716,
44 'F' => 537, 'G' => 647, 'H' => 738, 'I' => 320, 'J' => 433, 'K' => 637, 'L' => 566, 'M' => 904, 'N' => 710, 'O' => 716,
45 'P' => 605, 'Q' => 716, 'R' => 623, 'S' => 517, 'T' => 601, 'U' => 690, 'V' => 668, 'W' => 990, 'X' => 681, 'Y' => 634,
45 'P' => 605, 'Q' => 716, 'R' => 623, 'S' => 517, 'T' => 601, 'U' => 690, 'V' => 668, 'W' => 990, 'X' => 681, 'Y' => 634,
46 'Z' => 578, '[' => 316, '\\' => 614, ']' => 316, '^' => 529, '_' => 500, '`' => 387, 'a' => 509, 'b' => 566, 'c' => 478,
46 'Z' => 578, '[' => 316, '\\' => 614, ']' => 316, '^' => 529, '_' => 500, '`' => 387, 'a' => 509, 'b' => 566, 'c' => 478,
47 'd' => 565, 'e' => 503, 'f' => 337, 'g' => 549, 'h' => 580, 'i' => 275, 'j' => 266, 'k' => 544, 'l' => 276, 'm' => 854,
47 'd' => 565, 'e' => 503, 'f' => 337, 'g' => 549, 'h' => 580, 'i' => 275, 'j' => 266, 'k' => 544, 'l' => 276, 'm' => 854,
48 'n' => 579, 'o' => 550, 'p' => 578, 'q' => 566, 'r' => 410, 's' => 444, 't' => 340, 'u' => 575, 'v' => 512, 'w' => 760,
48 'n' => 579, 'o' => 550, 'p' => 578, 'q' => 566, 'r' => 410, 's' => 444, 't' => 340, 'u' => 575, 'v' => 512, 'w' => 760,
49 'x' => 503, 'y' => 529, 'z' => 453, '{' => 326, '|' => 380, '}' => 326, '~' => 387}
49 'x' => 503, 'y' => 529, 'z' => 453, '{' => 326, '|' => 380, '}' => 326, '~' => 387}
50
50
51 def AddCIDFont(family,style,name,cw,cMap,registry)
51 def AddCIDFont(family,style,name,cw,cMap,registry)
52 fontkey=family.downcase+style.upcase
52 fontkey=family.downcase+style.upcase
53 unless @fonts[fontkey].nil?
53 unless @fonts[fontkey].nil?
54 Error("CID font already added: family style")
54 Error("CID font already added: family style")
55 end
55 end
56 i=@fonts.length+1
56 i=@fonts.length+1
57 @fonts[fontkey]={'i'=>i,'type'=>'Type0','name'=>name,'up'=>-120,'ut'=>40,'cw'=>cw,
57 @fonts[fontkey]={'i'=>i,'type'=>'Type0','name'=>name,'up'=>-120,'ut'=>40,'cw'=>cw,
58 'CMap'=>cMap,'registry'=>registry}
58 'CMap'=>cMap,'registry'=>registry}
59 end
59 end
60
60
61 def AddCIDFonts(family,name,cw,cMap,registry)
61 def AddCIDFonts(family,name,cw,cMap,registry)
62 AddCIDFont(family,'',name,cw,cMap,registry)
62 AddCIDFont(family,'',name,cw,cMap,registry)
63 AddCIDFont(family,'B',name+',Bold',cw,cMap,registry)
63 AddCIDFont(family,'B',name+',Bold',cw,cMap,registry)
64 AddCIDFont(family,'I',name+',Italic',cw,cMap,registry)
64 AddCIDFont(family,'I',name+',Italic',cw,cMap,registry)
65 AddCIDFont(family,'BI',name+',BoldItalic',cw,cMap,registry)
65 AddCIDFont(family,'BI',name+',BoldItalic',cw,cMap,registry)
66 end
66 end
67
67
68 def AddSJISFont(family='SJIS')
68 def AddSJISFont(family='SJIS')
69 #Add SJIS font with proportional Latin
69 #Add SJIS font with proportional Latin
70 name='KozMinPro-Regular-Acro'
70 name='KozMinPro-Regular-Acro'
71 cw=SJIS_widths
71 cw=SJIS_widths
72 cMap='90msp-RKSJ-H'
72 cMap='90msp-RKSJ-H'
73 registry={'ordering'=>'Japan1','supplement'=>2}
73 registry={'ordering'=>'Japan1','supplement'=>2}
74 AddCIDFonts(family,name,cw,cMap,registry)
74 AddCIDFonts(family,name,cw,cMap,registry)
75 end
75 end
76
76
77 def AddSJIShwFont(family='SJIS-hw')
77 def AddSJIShwFont(family='SJIS-hw')
78 #Add SJIS font with half-width Latin
78 #Add SJIS font with half-width Latin
79 name='KozMinPro-Regular-Acro'
79 name='KozMinPro-Regular-Acro'
80 32.upto(126) do |i|
80 32.upto(126) do |i|
81 cw[i.chr]=500
81 cw[i.chr]=500
82 end
82 end
83 cMap='90ms-RKSJ-H'
83 cMap='90ms-RKSJ-H'
84 registry={'ordering'=>'Japan1','supplement'=>2}
84 registry={'ordering'=>'Japan1','supplement'=>2}
85 AddCIDFonts(family,name,cw,cMap,registry)
85 AddCIDFonts(family,name,cw,cMap,registry)
86 end
86 end
87
87
88 def GetStringWidth(s)
88 def GetStringWidth(s)
89 if(@CurrentFont['type']=='Type0')
89 if(@CurrentFont['type']=='Type0')
90 return GetSJISStringWidth(s)
90 return GetSJISStringWidth(s)
91 else
91 else
92 return super(s)
92 return super(s)
93 end
93 end
94 end
94 end
95
95
96 def GetSJISStringWidth(s)
96 def GetSJISStringWidth(s)
97 #SJIS version of GetStringWidth()
97 #SJIS version of GetStringWidth()
98 l=0
98 l=0
99 cw=@CurrentFont['cw']
99 cw=@CurrentFont['cw']
100 nb=s.length
100 nb=s.length
101 i=0
101 i=0
102 while(i<nb)
102 while(i<nb)
103 o=s[i]
103 o=s[i]
104 if(o<128)
104 if(o<128)
105 #ASCII
105 #ASCII
106 l+=cw[o.chr]
106 l+=cw[o.chr]
107 i+=1
107 i+=1
108 elsif(o>=161 and o<=223)
108 elsif(o>=161 and o<=223)
109 #Half-width katakana
109 #Half-width katakana
110 l+=500
110 l+=500
111 i+=1
111 i+=1
112 else
112 else
113 #Full-width character
113 #Full-width character
114 l+=1000
114 l+=1000
115 i+=2
115 i+=2
116 end
116 end
117 end
117 end
118 return l*@FontSize/1000
118 return l*@FontSize/1000
119 end
119 end
120
120
121 def MultiCell(w,h,txt,border=0,align='L',fill=0)
121 def MultiCell(w,h,txt,border=0,align='L',fill=0)
122 if(@CurrentFont['type']=='Type0')
122 if(@CurrentFont['type']=='Type0')
123 SJISMultiCell(w,h,txt,border,align,fill)
123 SJISMultiCell(w,h,txt,border,align,fill)
124 else
124 else
125 super(w,h,txt,border,align,fill)
125 super(w,h,txt,border,align,fill)
126 end
126 end
127 end
127 end
128
128
129 def SJISMultiCell(w,h,txt,border=0,align='L',fill=0)
129 def SJISMultiCell(w,h,txt,border=0,align='L',fill=0)
130 #Output text with automatic or explicit line breaks
130 #Output text with automatic or explicit line breaks
131 cw=@CurrentFont['cw']
131 cw=@CurrentFont['cw']
132 if(w==0)
132 if(w==0)
133 w=@w-@rMargin-@x
133 w=@w-@rMargin-@x
134 end
134 end
135 wmax=(w-2*@cMargin)*1000/@FontSize
135 wmax=(w-2*@cMargin)*1000/@FontSize
136 s=txt.gsub("\r",'')
136 s=txt.gsub("\r",'')
137 nb=s.length
137 nb=s.length
138 if(nb>0 and s[nb-1]=="\n")
138 if(nb>0 and s[nb-1]=="\n")
139 nb-=1
139 nb-=1
140 end
140 end
141 b=0
141 b=0
142 if(border)
142 if(border)
143 if(border==1)
143 if(border==1)
144 border='LTRB'
144 border='LTRB'
145 b='LRT'
145 b='LRT'
146 b2='LR'
146 b2='LR'
147 else
147 else
148 b2=''
148 b2=''
149 if(border.index('L').nil?)
149 if(border.to_s.index('L'))
150 b2+='L'
150 b2+='L'
151 end
151 end
152 if(border.index('R').nil?)
152 if(border.to_s.index('R'))
153 b2+='R'
153 b2+='R'
154 end
154 end
155 b=border.index('T').nil? ? b2+'T' : b2
155 b=border.to_s.index('T') ? b2+'T' : b2
156 end
156 end
157 end
157 end
158 sep=-1
158 sep=-1
159 i=0
159 i=0
160 j=0
160 j=0
161 l=0
161 l=0
162 nl=1
162 nl=1
163 while(i<nb)
163 while(i<nb)
164 #Get next character
164 #Get next character
165 c=s[i]
165 c=s[i]
166 o=ord(c)
166 o=c #o=ord(c)
167 if(o==10)
167 if(o==10)
168 #Explicit line break
168 #Explicit line break
169 Cell(w,h,s[j,i-j],b,2,align,fill)
169 Cell(w,h,s[j,i-j],b,2,align,fill)
170 i+=1
170 i+=1
171 sep=-1
171 sep=-1
172 j=i
172 j=i
173 l=0
173 l=0
174 nl+=1
174 nl+=1
175 if(border and nl==2)
175 if(border and nl==2)
176 b=b2
176 b=b2
177 end
177 end
178 next
178 next
179 end
179 end
180 if(o<128)
180 if(o<128)
181 #ASCII
181 #ASCII
182 l+=cw[c.chr]
182 l+=cw[c.chr]
183 n=1
183 n=1
184 if(o==32)
184 if(o==32)
185 sep=i
185 sep=i
186 end
186 end
187 elsif(o>=161 and o<=223)
187 elsif(o>=161 and o<=223)
188 #Half-width katakana
188 #Half-width katakana
189 l+=500
189 l+=500
190 n=1
190 n=1
191 sep=i
191 sep=i
192 else
192 else
193 #Full-width character
193 #Full-width character
194 l+=1000
194 l+=1000
195 n=2
195 n=2
196 sep=i
196 sep=i
197 end
197 end
198 if(l>wmax)
198 if(l>wmax)
199 #Automatic line break
199 #Automatic line break
200 if(sep==-1 or i==j)
200 if(sep==-1 or i==j)
201 if(i==j)
201 if(i==j)
202 i+=n
202 i+=n
203 end
203 end
204 Cell(w,h,s[j,i-j],b,2,align,fill)
204 Cell(w,h,s[j,i-j],b,2,align,fill)
205 else
205 else
206 Cell(w,h,s[j,sep-j],b,2,align,fill)
206 Cell(w,h,s[j,sep-j],b,2,align,fill)
207 i=(s[sep]==' ') ? sep+1 : sep
207 i=(s[sep]==' ') ? sep+1 : sep
208 end
208 end
209 sep=-1
209 sep=-1
210 j=i
210 j=i
211 l=0
211 l=0
212 nl+=1
212 nl+=1
213 if(border and nl==2)
213 if(border and nl==2)
214 b=b2
214 b=b2
215 end
215 end
216 else
216 else
217 i+=n
217 i+=n
218 if(o>=128)
218 if(o>=128)
219 sep=i
219 sep=i
220 end
220 end
221 end
221 end
222 end
222 end
223 #Last chunk
223 #Last chunk
224 if(border and not border.index('B').nil?)
224 if(border and not border.to_s.index('B').nil?)
225 b+='B'
225 b+='B'
226 end
226 end
227 Cell(w,h,s[j,i-j],b,2,align,fill)
227 Cell(w,h,s[j,i-j],b,2,align,fill)
228 @x=@lMargin
228 @x=@lMargin
229 end
229 end
230
230
231 def Write(h,txt,link='')
231 def Write(h,txt,link='')
232 if(@CurrentFont['type']=='Type0')
232 if(@CurrentFont['type']=='Type0')
233 SJISWrite(h,txt,link)
233 SJISWrite(h,txt,link)
234 else
234 else
235 super(h,txt,link)
235 super(h,txt,link)
236 end
236 end
237 end
237 end
238
238
239 def SJISWrite(h,txt,link)
239 def SJISWrite(h,txt,link)
240 #SJIS version of Write()
240 #SJIS version of Write()
241 cw=@CurrentFont['cw']
241 cw=@CurrentFont['cw']
242 w=@w-@rMargin-@x
242 w=@w-@rMargin-@x
243 wmax=(w-2*@cMargin)*1000/@FontSize
243 wmax=(w-2*@cMargin)*1000/@FontSize
244 s=txt.gsub("\r",'')
244 s=txt.gsub("\r",'')
245 nb=s.length
245 nb=s.length
246 sep=-1
246 sep=-1
247 i=0
247 i=0
248 j=0
248 j=0
249 l=0
249 l=0
250 nl=1
250 nl=1
251 while(i<nb)
251 while(i<nb)
252 #Get next character
252 #Get next character
253 c=s[i]
253 c=s[i]
254 o=c
254 o=c
255 if(o==10)
255 if(o==10)
256 #Explicit line break
256 #Explicit line break
257 Cell(w,h,s[j,i-j],0,2,'',0,link)
257 Cell(w,h,s[j,i-j],0,2,'',0,link)
258 i+=1
258 i+=1
259 sep=-1
259 sep=-1
260 j=i
260 j=i
261 l=0
261 l=0
262 if(nl==1)
262 if(nl==1)
263 #Go to left margin
263 #Go to left margin
264 @x=@lMargin
264 @x=@lMargin
265 w=@w-@rMargin-@x
265 w=@w-@rMargin-@x
266 wmax=(w-2*@cMargin)*1000/@FontSize
266 wmax=(w-2*@cMargin)*1000/@FontSize
267 end
267 end
268 nl+=1
268 nl+=1
269 next
269 next
270 end
270 end
271 if(o<128)
271 if(o<128)
272 #ASCII
272 #ASCII
273 l+=cw[c.chr]
273 l+=cw[c.chr]
274 n=1
274 n=1
275 if(o==32)
275 if(o==32)
276 sep=i
276 sep=i
277 end
277 end
278 elsif(o>=161 and o<=223)
278 elsif(o>=161 and o<=223)
279 #Half-width katakana
279 #Half-width katakana
280 l+=500
280 l+=500
281 n=1
281 n=1
282 sep=i
282 sep=i
283 else
283 else
284 #Full-width character
284 #Full-width character
285 l+=1000
285 l+=1000
286 n=2
286 n=2
287 sep=i
287 sep=i
288 end
288 end
289 if(l>wmax)
289 if(l>wmax)
290 #Automatic line break
290 #Automatic line break
291 if(sep==-1 or i==j)
291 if(sep==-1 or i==j)
292 if(@x>@lMargin)
292 if(@x>@lMargin)
293 #Move to next line
293 #Move to next line
294 @x=@lMargin
294 @x=@lMargin
295 @y+=h
295 @y+=h
296 w=@w-@rMargin-@x
296 w=@w-@rMargin-@x
297 wmax=(w-2*@cMargin)*1000/@FontSize
297 wmax=(w-2*@cMargin)*1000/@FontSize
298 i+=n
298 i+=n
299 nl+=1
299 nl+=1
300 next
300 next
301 end
301 end
302 if(i==j)
302 if(i==j)
303 i+=n
303 i+=n
304 end
304 end
305 Cell(w,h,s[j,i-j],0,2,'',0,link)
305 Cell(w,h,s[j,i-j],0,2,'',0,link)
306 else
306 else
307 Cell(w,h,s[j,sep-j],0,2,'',0,link)
307 Cell(w,h,s[j,sep-j],0,2,'',0,link)
308 i=(s[sep]==' ') ? sep+1 : sep
308 i=(s[sep]==' ') ? sep+1 : sep
309 end
309 end
310 sep=-1
310 sep=-1
311 j=i
311 j=i
312 l=0
312 l=0
313 if(nl==1)
313 if(nl==1)
314 @x=@lMargin
314 @x=@lMargin
315 w=@w-@rMargin-@x
315 w=@w-@rMargin-@x
316 wmax=(w-2*@cMargin)*1000/@FontSize
316 wmax=(w-2*@cMargin)*1000/@FontSize
317 end
317 end
318 nl+=1
318 nl+=1
319 else
319 else
320 i+=n
320 i+=n
321 if(o>=128)
321 if(o>=128)
322 sep=i
322 sep=i
323 end
323 end
324 end
324 end
325 end
325 end
326 #Last chunk
326 #Last chunk
327 if(i!=j)
327 if(i!=j)
328 Cell(l/1000*@FontSize,h,s[j,i-j],0,0,'',0,link)
328 Cell(l/1000*@FontSize,h,s[j,i-j],0,0,'',0,link)
329 end
329 end
330 end
330 end
331
331
332 private
332 private
333
333
334 def putfonts()
334 def putfonts()
335 nf=@n
335 nf=@n
336 @diffs.each do |diff|
336 @diffs.each do |diff|
337 #Encodings
337 #Encodings
338 newobj()
338 newobj()
339 out('<</Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences ['+diff+']>>')
339 out('<</Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences ['+diff+']>>')
340 out('endobj')
340 out('endobj')
341 end
341 end
342 # mqr=get_magic_quotes_runtime()
342 # mqr=get_magic_quotes_runtime()
343 # set_magic_quotes_runtime(0)
343 # set_magic_quotes_runtime(0)
344 @FontFiles.each_pair do |file, info|
344 @FontFiles.each_pair do |file, info|
345 #Font file embedding
345 #Font file embedding
346 newobj()
346 newobj()
347 @FontFiles[file]['n']=@n
347 @FontFiles[file]['n']=@n
348 if(defined('FPDF_FONTPATH'))
348 if(defined('FPDF_FONTPATH'))
349 file=FPDF_FONTPATH+file
349 file=FPDF_FONTPATH+file
350 end
350 end
351 size=filesize(file)
351 size=filesize(file)
352 if(!size)
352 if(!size)
353 Error('Font file not found')
353 Error('Font file not found')
354 end
354 end
355 out('<</Length '+size)
355 out('<</Length '+size)
356 if(file[-2]=='.z')
356 if(file[-2]=='.z')
357 out('/Filter /FlateDecode')
357 out('/Filter /FlateDecode')
358 end
358 end
359 out('/Length1 '+info['length1'])
359 out('/Length1 '+info['length1'])
360 unless info['length2'].nil?
360 unless info['length2'].nil?
361 out('/Length2 '+info['length2']+' /Length3 0')
361 out('/Length2 '+info['length2']+' /Length3 0')
362 end
362 end
363 out('>>')
363 out('>>')
364 f=fopen(file,'rb')
364 f=fopen(file,'rb')
365 putstream(fread(f,size))
365 putstream(fread(f,size))
366 fclose(f)
366 fclose(f)
367 out('endobj')
367 out('endobj')
368 end
368 end
369 # set_magic_quotes_runtime(mqr)
369 # set_magic_quotes_runtime(mqr)
370 @fonts.each_pair do |k, font|
370 @fonts.each_pair do |k, font|
371 #Font objects
371 #Font objects
372 newobj()
372 newobj()
373 @fonts[k]['n']=@n
373 @fonts[k]['n']=@n
374 out('<</Type /Font')
374 out('<</Type /Font')
375 if(font['type']=='Type0')
375 if(font['type']=='Type0')
376 putType0(font)
376 putType0(font)
377 else
377 else
378 name=font['name']
378 name=font['name']
379 out('/BaseFont /'+name)
379 out('/BaseFont /'+name)
380 if(font['type']=='core')
380 if(font['type']=='core')
381 #Standard font
381 #Standard font
382 out('/Subtype /Type1')
382 out('/Subtype /Type1')
383 if(name!='Symbol' and name!='ZapfDingbats')
383 if(name!='Symbol' and name!='ZapfDingbats')
384 out('/Encoding /WinAnsiEncoding')
384 out('/Encoding /WinAnsiEncoding')
385 end
385 end
386 else
386 else
387 #Additional font
387 #Additional font
388 out('/Subtype /'+font['type'])
388 out('/Subtype /'+font['type'])
389 out('/FirstChar 32')
389 out('/FirstChar 32')
390 out('/LastChar 255')
390 out('/LastChar 255')
391 out('/Widths '+(@n+1)+' 0 R')
391 out('/Widths '+(@n+1)+' 0 R')
392 out('/FontDescriptor '+(@n+2)+' 0 R')
392 out('/FontDescriptor '+(@n+2)+' 0 R')
393 if(font['enc'])
393 if(font['enc'])
394 if !font['diff'].nil?
394 if !font['diff'].nil?
395 out('/Encoding '+(nf+font['diff'])+' 0 R')
395 out('/Encoding '+(nf+font['diff'])+' 0 R')
396 else
396 else
397 out('/Encoding /WinAnsiEncoding')
397 out('/Encoding /WinAnsiEncoding')
398 end
398 end
399 end
399 end
400 end
400 end
401 out('>>')
401 out('>>')
402 out('endobj')
402 out('endobj')
403 if(font['type']!='core')
403 if(font['type']!='core')
404 #Widths
404 #Widths
405 newobj()
405 newobj()
406 cw=font['cw']
406 cw=font['cw']
407 s='['
407 s='['
408 32.upto(255) do |i|
408 32.upto(255) do |i|
409 s+=cw[i.chr]+' '
409 s+=cw[i.chr]+' '
410 end
410 end
411 out(s+']')
411 out(s+']')
412 out('endobj')
412 out('endobj')
413 #Descriptor
413 #Descriptor
414 newobj()
414 newobj()
415 s='<</Type /FontDescriptor /FontName /'+name
415 s='<</Type /FontDescriptor /FontName /'+name
416 font['desc'].each_pair do |k, v|
416 font['desc'].each_pair do |k, v|
417 s+=' /'+k+' '+v
417 s+=' /'+k+' '+v
418 end
418 end
419 file=font['file']
419 file=font['file']
420 if(file)
420 if(file)
421 s+=' /FontFile'+(font['type']=='Type1' ? '' : '2')+' '+@FontFiles[file]['n']+' 0 R'
421 s+=' /FontFile'+(font['type']=='Type1' ? '' : '2')+' '+@FontFiles[file]['n']+' 0 R'
422 end
422 end
423 out(s+'>>')
423 out(s+'>>')
424 out('endobj')
424 out('endobj')
425 end
425 end
426 end
426 end
427 end
427 end
428 end
428 end
429
429
430 def putType0(font)
430 def putType0(font)
431 #Type0
431 #Type0
432 out('/Subtype /Type0')
432 out('/Subtype /Type0')
433 out('/BaseFont /'+font['name']+'-'+font['CMap'])
433 out('/BaseFont /'+font['name']+'-'+font['CMap'])
434 out('/Encoding /'+font['CMap'])
434 out('/Encoding /'+font['CMap'])
435 out('/DescendantFonts ['+(@n+1).to_s+' 0 R]')
435 out('/DescendantFonts ['+(@n+1).to_s+' 0 R]')
436 out('>>')
436 out('>>')
437 out('endobj')
437 out('endobj')
438 #CIDFont
438 #CIDFont
439 newobj()
439 newobj()
440 out('<</Type /Font')
440 out('<</Type /Font')
441 out('/Subtype /CIDFontType0')
441 out('/Subtype /CIDFontType0')
442 out('/BaseFont /'+font['name'])
442 out('/BaseFont /'+font['name'])
443 out('/CIDSystemInfo <</Registry (Adobe) /Ordering ('+font['registry']['ordering']+') /Supplement '+font['registry']['supplement'].to_s+'>>')
443 out('/CIDSystemInfo <</Registry (Adobe) /Ordering ('+font['registry']['ordering']+') /Supplement '+font['registry']['supplement'].to_s+'>>')
444 out('/FontDescriptor '+(@n+1).to_s+' 0 R')
444 out('/FontDescriptor '+(@n+1).to_s+' 0 R')
445 w='/W [1 ['
445 w='/W [1 ['
446 font['cw'].keys.sort.each {|key|
446 font['cw'].keys.sort.each {|key|
447 w+=font['cw'][key].to_s + " "
447 w+=font['cw'][key].to_s + " "
448 # ActionController::Base::logger.debug key.to_s
448 # ActionController::Base::logger.debug key.to_s
449 # ActionController::Base::logger.debug font['cw'][key].to_s
449 # ActionController::Base::logger.debug font['cw'][key].to_s
450 }
450 }
451 out(w+'] 231 325 500 631 [500] 326 389 500]')
451 out(w+'] 231 325 500 631 [500] 326 389 500]')
452 out('>>')
452 out('>>')
453 out('endobj')
453 out('endobj')
454 #Font descriptor
454 #Font descriptor
455 newobj()
455 newobj()
456 out('<</Type /FontDescriptor')
456 out('<</Type /FontDescriptor')
457 out('/FontName /'+font['name'])
457 out('/FontName /'+font['name'])
458 out('/Flags 6')
458 out('/Flags 6')
459 out('/FontBBox [0 -200 1000 900]')
459 out('/FontBBox [0 -200 1000 900]')
460 out('/ItalicAngle 0')
460 out('/ItalicAngle 0')
461 out('/Ascent 800')
461 out('/Ascent 800')
462 out('/Descent -200')
462 out('/Descent -200')
463 out('/CapHeight 800')
463 out('/CapHeight 800')
464 out('/StemV 60')
464 out('/StemV 60')
465 out('>>')
465 out('>>')
466 out('endobj')
466 out('endobj')
467 end
467 end
468 end
468 end
General Comments 0
You need to be logged in to leave comments. Login now