@@ -0,0 +1,37 | |||
|
1 | # Redmine - project management software | |
|
2 | # Copyright (C) 2006-2008 Jean-Philippe Lang | |
|
3 | # | |
|
4 | # This program is free software; you can redistribute it and/or | |
|
5 | # modify it under the terms of the GNU General Public License | |
|
6 | # as published by the Free Software Foundation; either version 2 | |
|
7 | # of the License, or (at your option) any later version. | |
|
8 | # | |
|
9 | # This program is distributed in the hope that it will be useful, | |
|
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
|
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
|
12 | # GNU General Public License for more details. | |
|
13 | # | |
|
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 | |
|
16 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |
|
17 | ||
|
18 | require File.dirname(__FILE__) + '/../test_helper' | |
|
19 | ||
|
20 | class DocumentTest < Test::Unit::TestCase | |
|
21 | fixtures :projects, :enumerations, :documents | |
|
22 | ||
|
23 | def test_create | |
|
24 | doc = Document.new(:project => Project.find(1), :title => 'New document', :category => Enumeration.find_by_name('User documentation')) | |
|
25 | assert doc.save | |
|
26 | end | |
|
27 | ||
|
28 | def test_create_with_default_category | |
|
29 | # Sets a default category | |
|
30 | e = Enumeration.find_by_name('Technical documentation') | |
|
31 | e.update_attributes(:is_default => true) | |
|
32 | ||
|
33 | doc = Document.new(:project => Project.find(1), :title => 'New document') | |
|
34 | assert_equal e, doc.category | |
|
35 | assert doc.save | |
|
36 | end | |
|
37 | end |
@@ -1,226 +1,230 | |||
|
1 | 1 | # redMine - project management software |
|
2 | 2 | # Copyright (C) 2006-2007 Jean-Philippe Lang |
|
3 | 3 | # |
|
4 | 4 | # This program is free software; you can redistribute it and/or |
|
5 | 5 | # modify it under the terms of the GNU General Public License |
|
6 | 6 | # as published by the Free Software Foundation; either version 2 |
|
7 | 7 | # of the License, or (at your option) any later version. |
|
8 | 8 | # |
|
9 | 9 | # This program is distributed in the hope that it will be useful, |
|
10 | 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 | 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 | 12 | # GNU General Public License for more details. |
|
13 | 13 | # |
|
14 | 14 | # You should have received a copy of the GNU General Public License |
|
15 | 15 | # along with this program; if not, write to the Free Software |
|
16 | 16 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
17 | 17 | |
|
18 | 18 | require 'uri' |
|
19 | 19 | require 'cgi' |
|
20 | 20 | |
|
21 | 21 | class ApplicationController < ActionController::Base |
|
22 | 22 | layout 'base' |
|
23 | 23 | |
|
24 | 24 | before_filter :user_setup, :check_if_login_required, :set_localization |
|
25 | 25 | filter_parameter_logging :password |
|
26 | 26 | |
|
27 | 27 | include Redmine::MenuManager::MenuController |
|
28 | 28 | helper Redmine::MenuManager::MenuHelper |
|
29 | 29 | |
|
30 | 30 | REDMINE_SUPPORTED_SCM.each do |scm| |
|
31 | 31 | require_dependency "repository/#{scm.underscore}" |
|
32 | 32 | end |
|
33 | 33 | |
|
34 | 34 | def current_role |
|
35 | 35 | @current_role ||= User.current.role_for_project(@project) |
|
36 | 36 | end |
|
37 | 37 | |
|
38 | 38 | def user_setup |
|
39 | 39 | # Check the settings cache for each request |
|
40 | 40 | Setting.check_cache |
|
41 | 41 | # Find the current user |
|
42 | 42 | User.current = find_current_user |
|
43 | 43 | end |
|
44 | 44 | |
|
45 | 45 | # Returns the current user or nil if no user is logged in |
|
46 | 46 | def find_current_user |
|
47 | 47 | if session[:user_id] |
|
48 | 48 | # existing session |
|
49 | 49 | (User.active.find(session[:user_id]) rescue nil) |
|
50 | 50 | elsif cookies[:autologin] && Setting.autologin? |
|
51 | 51 | # auto-login feature |
|
52 | 52 | User.find_by_autologin_key(cookies[:autologin]) |
|
53 | 53 | elsif params[:key] && accept_key_auth_actions.include?(params[:action]) |
|
54 | 54 | # RSS key authentication |
|
55 | 55 | User.find_by_rss_key(params[:key]) |
|
56 | 56 | end |
|
57 | 57 | end |
|
58 | 58 | |
|
59 | 59 | # check if login is globally required to access the application |
|
60 | 60 | def check_if_login_required |
|
61 | 61 | # no check needed if user is already logged in |
|
62 | 62 | return true if User.current.logged? |
|
63 | 63 | require_login if Setting.login_required? |
|
64 | 64 | end |
|
65 | 65 | |
|
66 | 66 | def set_localization |
|
67 | 67 | User.current.language = nil unless User.current.logged? |
|
68 | 68 | lang = begin |
|
69 | 69 | if !User.current.language.blank? && GLoc.valid_language?(User.current.language) |
|
70 | 70 | User.current.language |
|
71 | 71 | elsif request.env['HTTP_ACCEPT_LANGUAGE'] |
|
72 | 72 | accept_lang = parse_qvalues(request.env['HTTP_ACCEPT_LANGUAGE']).first.downcase |
|
73 | 73 | if !accept_lang.blank? && (GLoc.valid_language?(accept_lang) || GLoc.valid_language?(accept_lang = accept_lang.split('-').first)) |
|
74 | 74 | User.current.language = accept_lang |
|
75 | 75 | end |
|
76 | 76 | end |
|
77 | 77 | rescue |
|
78 | 78 | nil |
|
79 | 79 | end || Setting.default_language |
|
80 | 80 | set_language_if_valid(lang) |
|
81 | 81 | end |
|
82 | 82 | |
|
83 | 83 | def require_login |
|
84 | 84 | if !User.current.logged? |
|
85 | 85 | redirect_to :controller => "account", :action => "login", :back_url => url_for(params) |
|
86 | 86 | return false |
|
87 | 87 | end |
|
88 | 88 | true |
|
89 | 89 | end |
|
90 | 90 | |
|
91 | 91 | def require_admin |
|
92 | 92 | return unless require_login |
|
93 | 93 | if !User.current.admin? |
|
94 | 94 | render_403 |
|
95 | 95 | return false |
|
96 | 96 | end |
|
97 | 97 | true |
|
98 | 98 | end |
|
99 | 99 | |
|
100 | 100 | def deny_access |
|
101 | 101 | User.current.logged? ? render_403 : require_login |
|
102 | 102 | end |
|
103 | 103 | |
|
104 | 104 | # Authorize the user for the requested action |
|
105 | 105 | def authorize(ctrl = params[:controller], action = params[:action]) |
|
106 | 106 | allowed = User.current.allowed_to?({:controller => ctrl, :action => action}, @project) |
|
107 | 107 | allowed ? true : deny_access |
|
108 | 108 | end |
|
109 | 109 | |
|
110 | 110 | # make sure that the user is a member of the project (or admin) if project is private |
|
111 | 111 | # used as a before_filter for actions that do not require any particular permission on the project |
|
112 | 112 | def check_project_privacy |
|
113 | 113 | if @project && @project.active? |
|
114 | 114 | if @project.is_public? || User.current.member_of?(@project) || User.current.admin? |
|
115 | 115 | true |
|
116 | 116 | else |
|
117 | 117 | User.current.logged? ? render_403 : require_login |
|
118 | 118 | end |
|
119 | 119 | else |
|
120 | 120 | @project = nil |
|
121 | 121 | render_404 |
|
122 | 122 | false |
|
123 | 123 | end |
|
124 | 124 | end |
|
125 | 125 | |
|
126 | 126 | def redirect_back_or_default(default) |
|
127 | 127 | back_url = CGI.unescape(params[:back_url].to_s) |
|
128 | 128 | if !back_url.blank? |
|
129 | uri = URI.parse(back_url) | |
|
130 | # do not redirect user to another host or to the login or register page | |
|
131 | if (uri.relative? || (uri.host == request.host)) && !uri.path.match(%r{/(login|account/register)}) | |
|
132 | redirect_to(back_url) and return | |
|
129 | begin | |
|
130 | uri = URI.parse(back_url) | |
|
131 | # do not redirect user to another host or to the login or register page | |
|
132 | if (uri.relative? || (uri.host == request.host)) && !uri.path.match(%r{/(login|account/register)}) | |
|
133 | redirect_to(back_url) and return | |
|
134 | end | |
|
135 | rescue URI::InvalidURIError | |
|
136 | # redirect to default | |
|
133 | 137 | end |
|
134 | 138 | end |
|
135 | 139 | redirect_to default |
|
136 | 140 | end |
|
137 | 141 | |
|
138 | 142 | def render_403 |
|
139 | 143 | @project = nil |
|
140 | 144 | render :template => "common/403", :layout => !request.xhr?, :status => 403 |
|
141 | 145 | return false |
|
142 | 146 | end |
|
143 | 147 | |
|
144 | 148 | def render_404 |
|
145 | 149 | render :template => "common/404", :layout => !request.xhr?, :status => 404 |
|
146 | 150 | return false |
|
147 | 151 | end |
|
148 | 152 | |
|
149 | 153 | def render_error(msg) |
|
150 | 154 | flash.now[:error] = msg |
|
151 | 155 | render :nothing => true, :layout => !request.xhr?, :status => 500 |
|
152 | 156 | end |
|
153 | 157 | |
|
154 | 158 | def render_feed(items, options={}) |
|
155 | 159 | @items = items || [] |
|
156 | 160 | @items.sort! {|x,y| y.event_datetime <=> x.event_datetime } |
|
157 | 161 | @items = @items.slice(0, Setting.feeds_limit.to_i) |
|
158 | 162 | @title = options[:title] || Setting.app_title |
|
159 | 163 | render :template => "common/feed.atom.rxml", :layout => false, :content_type => 'application/atom+xml' |
|
160 | 164 | end |
|
161 | 165 | |
|
162 | 166 | def self.accept_key_auth(*actions) |
|
163 | 167 | actions = actions.flatten.map(&:to_s) |
|
164 | 168 | write_inheritable_attribute('accept_key_auth_actions', actions) |
|
165 | 169 | end |
|
166 | 170 | |
|
167 | 171 | def accept_key_auth_actions |
|
168 | 172 | self.class.read_inheritable_attribute('accept_key_auth_actions') || [] |
|
169 | 173 | end |
|
170 | 174 | |
|
171 | 175 | # TODO: move to model |
|
172 | 176 | def attach_files(obj, attachments) |
|
173 | 177 | attached = [] |
|
174 | 178 | if attachments && attachments.is_a?(Hash) |
|
175 | 179 | attachments.each_value do |attachment| |
|
176 | 180 | file = attachment['file'] |
|
177 | 181 | next unless file && file.size > 0 |
|
178 | 182 | a = Attachment.create(:container => obj, |
|
179 | 183 | :file => file, |
|
180 | 184 | :description => attachment['description'].to_s.strip, |
|
181 | 185 | :author => User.current) |
|
182 | 186 | attached << a unless a.new_record? |
|
183 | 187 | end |
|
184 | 188 | end |
|
185 | 189 | attached |
|
186 | 190 | end |
|
187 | 191 | |
|
188 | 192 | # Returns the number of objects that should be displayed |
|
189 | 193 | # on the paginated list |
|
190 | 194 | def per_page_option |
|
191 | 195 | per_page = nil |
|
192 | 196 | if params[:per_page] && Setting.per_page_options_array.include?(params[:per_page].to_s.to_i) |
|
193 | 197 | per_page = params[:per_page].to_s.to_i |
|
194 | 198 | session[:per_page] = per_page |
|
195 | 199 | elsif session[:per_page] |
|
196 | 200 | per_page = session[:per_page] |
|
197 | 201 | else |
|
198 | 202 | per_page = Setting.per_page_options_array.first || 25 |
|
199 | 203 | end |
|
200 | 204 | per_page |
|
201 | 205 | end |
|
202 | 206 | |
|
203 | 207 | # qvalues http header parser |
|
204 | 208 | # code taken from webrick |
|
205 | 209 | def parse_qvalues(value) |
|
206 | 210 | tmp = [] |
|
207 | 211 | if value |
|
208 | 212 | parts = value.split(/,\s*/) |
|
209 | 213 | parts.each {|part| |
|
210 | 214 | if m = %r{^([^\s,]+?)(?:;\s*q=(\d+(?:\.\d+)?))?$}.match(part) |
|
211 | 215 | val = m[1] |
|
212 | 216 | q = (m[2] or 1).to_f |
|
213 | 217 | tmp.push([val, q]) |
|
214 | 218 | end |
|
215 | 219 | } |
|
216 | 220 | tmp = tmp.sort_by{|val, q| -q} |
|
217 | 221 | tmp.collect!{|val, q| val} |
|
218 | 222 | end |
|
219 | 223 | return tmp |
|
220 | 224 | end |
|
221 | 225 | |
|
222 | 226 | # Returns a string that can be used as filename value in Content-Disposition header |
|
223 | 227 | def filename_for_content_disposition(name) |
|
224 | 228 | request.env['HTTP_USER_AGENT'] =~ %r{MSIE} ? ERB::Util.url_encode(name) : name |
|
225 | 229 | end |
|
226 | 230 | end |
@@ -1,92 +1,93 | |||
|
1 | 1 | # redMine - project management software |
|
2 | 2 | # Copyright (C) 2006-2007 Jean-Philippe Lang |
|
3 | 3 | # |
|
4 | 4 | # This program is free software; you can redistribute it and/or |
|
5 | 5 | # modify it under the terms of the GNU General Public License |
|
6 | 6 | # as published by the Free Software Foundation; either version 2 |
|
7 | 7 | # of the License, or (at your option) any later version. |
|
8 | 8 | # |
|
9 | 9 | # This program is distributed in the hope that it will be useful, |
|
10 | 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 | 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 | 12 | # GNU General Public License for more details. |
|
13 | 13 | # |
|
14 | 14 | # You should have received a copy of the GNU General Public License |
|
15 | 15 | # along with this program; if not, write to the Free Software |
|
16 | 16 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
17 | 17 | |
|
18 | 18 | class DocumentsController < ApplicationController |
|
19 | 19 | before_filter :find_project, :only => [:index, :new] |
|
20 | 20 | before_filter :find_document, :except => [:index, :new] |
|
21 | 21 | before_filter :authorize |
|
22 | 22 | |
|
23 | 23 | helper :attachments |
|
24 | 24 | |
|
25 | 25 | def index |
|
26 | 26 | @sort_by = %w(category date title author).include?(params[:sort_by]) ? params[:sort_by] : 'category' |
|
27 | 27 | documents = @project.documents.find :all, :include => [:attachments, :category] |
|
28 | 28 | case @sort_by |
|
29 | 29 | when 'date' |
|
30 | 30 | @grouped = documents.group_by {|d| d.created_on.to_date } |
|
31 | 31 | when 'title' |
|
32 | 32 | @grouped = documents.group_by {|d| d.title.first.upcase} |
|
33 | 33 | when 'author' |
|
34 | 34 | @grouped = documents.select{|d| d.attachments.any?}.group_by {|d| d.attachments.last.author} |
|
35 | 35 | else |
|
36 | 36 | @grouped = documents.group_by(&:category) |
|
37 | 37 | end |
|
38 | @document = @project.documents.build | |
|
38 | 39 | render :layout => false if request.xhr? |
|
39 | 40 | end |
|
40 | 41 | |
|
41 | 42 | def show |
|
42 | 43 | @attachments = @document.attachments.find(:all, :order => "created_on DESC") |
|
43 | 44 | end |
|
44 | 45 | |
|
45 | 46 | def new |
|
46 | 47 | @document = @project.documents.build(params[:document]) |
|
47 | 48 | if request.post? and @document.save |
|
48 | 49 | attach_files(@document, params[:attachments]) |
|
49 | 50 | flash[:notice] = l(:notice_successful_create) |
|
50 | 51 | Mailer.deliver_document_added(@document) if Setting.notified_events.include?('document_added') |
|
51 | 52 | redirect_to :action => 'index', :project_id => @project |
|
52 | 53 | end |
|
53 | 54 | end |
|
54 | 55 | |
|
55 | 56 | def edit |
|
56 | 57 | @categories = Enumeration::get_values('DCAT') |
|
57 | 58 | if request.post? and @document.update_attributes(params[:document]) |
|
58 | 59 | flash[:notice] = l(:notice_successful_update) |
|
59 | 60 | redirect_to :action => 'show', :id => @document |
|
60 | 61 | end |
|
61 | 62 | end |
|
62 | 63 | |
|
63 | 64 | def destroy |
|
64 | 65 | @document.destroy |
|
65 | 66 | redirect_to :controller => 'documents', :action => 'index', :project_id => @project |
|
66 | 67 | end |
|
67 | 68 | |
|
68 | 69 | def add_attachment |
|
69 | 70 | attachments = attach_files(@document, params[:attachments]) |
|
70 | 71 | Mailer.deliver_attachments_added(attachments) if !attachments.empty? && Setting.notified_events.include?('document_added') |
|
71 | 72 | redirect_to :action => 'show', :id => @document |
|
72 | 73 | end |
|
73 | 74 | |
|
74 | 75 | def destroy_attachment |
|
75 | 76 | @document.attachments.find(params[:attachment_id]).destroy |
|
76 | 77 | redirect_to :action => 'show', :id => @document |
|
77 | 78 | end |
|
78 | 79 | |
|
79 | 80 | private |
|
80 | 81 | def find_project |
|
81 | 82 | @project = Project.find(params[:project_id]) |
|
82 | 83 | rescue ActiveRecord::RecordNotFound |
|
83 | 84 | render_404 |
|
84 | 85 | end |
|
85 | 86 | |
|
86 | 87 | def find_document |
|
87 | 88 | @document = Document.find(params[:id]) |
|
88 | 89 | @project = @document.project |
|
89 | 90 | rescue ActiveRecord::RecordNotFound |
|
90 | 91 | render_404 |
|
91 | 92 | end |
|
92 | 93 | end |
@@ -1,40 +1,41 | |||
|
1 | 1 | # redMine - project management software |
|
2 | 2 | # Copyright (C) 2006-2008 Jean-Philippe Lang |
|
3 | 3 | # |
|
4 | 4 | # This program is free software; you can redistribute it and/or |
|
5 | 5 | # modify it under the terms of the GNU General Public License |
|
6 | 6 | # as published by the Free Software Foundation; either version 2 |
|
7 | 7 | # of the License, or (at your option) any later version. |
|
8 | 8 | # |
|
9 | 9 | # This program is distributed in the hope that it will be useful, |
|
10 | 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 | 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 | 12 | # GNU General Public License for more details. |
|
13 | 13 | # |
|
14 | 14 | # You should have received a copy of the GNU General Public License |
|
15 | 15 | # along with this program; if not, write to the Free Software |
|
16 | 16 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
17 | 17 | |
|
18 | 18 | class JournalsController < ApplicationController |
|
19 | 19 | before_filter :find_journal |
|
20 | 20 | |
|
21 | 21 | def edit |
|
22 | 22 | if request.post? |
|
23 | 23 | @journal.update_attributes(:notes => params[:notes]) if params[:notes] |
|
24 | 24 | @journal.destroy if @journal.details.empty? && @journal.notes.blank? |
|
25 | call_hook(:controller_journals_edit_post, { :journal => @journal, :params => params}) | |
|
25 | 26 | respond_to do |format| |
|
26 | 27 | format.html { redirect_to :controller => 'issues', :action => 'show', :id => @journal.journalized_id } |
|
27 | 28 | format.js { render :action => 'update' } |
|
28 | 29 | end |
|
29 | 30 | end |
|
30 | 31 | end |
|
31 | 32 | |
|
32 | 33 | private |
|
33 | 34 | def find_journal |
|
34 | 35 | @journal = Journal.find(params[:id]) |
|
35 | 36 | render_403 and return false unless @journal.editable_by?(User.current) |
|
36 | 37 | @project = @journal.journalized.project |
|
37 | 38 | rescue ActiveRecord::RecordNotFound |
|
38 | 39 | render_404 |
|
39 | 40 | end |
|
40 | 41 | end |
@@ -1,617 +1,618 | |||
|
1 | 1 | # redMine - project management software |
|
2 | 2 | # Copyright (C) 2006-2007 Jean-Philippe Lang |
|
3 | 3 | # |
|
4 | 4 | # This program is free software; you can redistribute it and/or |
|
5 | 5 | # modify it under the terms of the GNU General Public License |
|
6 | 6 | # as published by the Free Software Foundation; either version 2 |
|
7 | 7 | # of the License, or (at your option) any later version. |
|
8 | 8 | # |
|
9 | 9 | # This program is distributed in the hope that it will be useful, |
|
10 | 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 | 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 | 12 | # GNU General Public License for more details. |
|
13 | 13 | # |
|
14 | 14 | # You should have received a copy of the GNU General Public License |
|
15 | 15 | # along with this program; if not, write to the Free Software |
|
16 | 16 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
17 | 17 | |
|
18 | 18 | require 'coderay' |
|
19 | 19 | require 'coderay/helpers/file_type' |
|
20 | 20 | require 'forwardable' |
|
21 | require 'cgi' | |
|
21 | 22 | |
|
22 | 23 | module ApplicationHelper |
|
23 | 24 | include Redmine::WikiFormatting::Macros::Definitions |
|
24 | 25 | include GravatarHelper::PublicMethods |
|
25 | 26 | |
|
26 | 27 | extend Forwardable |
|
27 | 28 | def_delegators :wiki_helper, :wikitoolbar_for, :heads_for_wiki_formatter |
|
28 | 29 | |
|
29 | 30 | def current_role |
|
30 | 31 | @current_role ||= User.current.role_for_project(@project) |
|
31 | 32 | end |
|
32 | 33 | |
|
33 | 34 | # Return true if user is authorized for controller/action, otherwise false |
|
34 | 35 | def authorize_for(controller, action) |
|
35 | 36 | User.current.allowed_to?({:controller => controller, :action => action}, @project) |
|
36 | 37 | end |
|
37 | 38 | |
|
38 | 39 | # Display a link if user is authorized |
|
39 | 40 | def link_to_if_authorized(name, options = {}, html_options = nil, *parameters_for_method_reference) |
|
40 | 41 | link_to(name, options, html_options, *parameters_for_method_reference) if authorize_for(options[:controller] || params[:controller], options[:action]) |
|
41 | 42 | end |
|
42 | 43 | |
|
43 | 44 | # Display a link to remote if user is authorized |
|
44 | 45 | def link_to_remote_if_authorized(name, options = {}, html_options = nil) |
|
45 | 46 | url = options[:url] || {} |
|
46 | 47 | link_to_remote(name, options, html_options) if authorize_for(url[:controller] || params[:controller], url[:action]) |
|
47 | 48 | end |
|
48 | 49 | |
|
49 | 50 | # Display a link to user's account page |
|
50 | 51 | def link_to_user(user) |
|
51 | 52 | (user && !user.anonymous?) ? link_to(user, :controller => 'account', :action => 'show', :id => user) : 'Anonymous' |
|
52 | 53 | end |
|
53 | 54 | |
|
54 | 55 | def link_to_issue(issue, options={}) |
|
55 | 56 | options[:class] ||= '' |
|
56 | 57 | options[:class] << ' issue' |
|
57 | 58 | options[:class] << ' closed' if issue.closed? |
|
58 | 59 | link_to "#{issue.tracker.name} ##{issue.id}", {:controller => "issues", :action => "show", :id => issue}, options |
|
59 | 60 | end |
|
60 | 61 | |
|
61 | 62 | # Generates a link to an attachment. |
|
62 | 63 | # Options: |
|
63 | 64 | # * :text - Link text (default to attachment filename) |
|
64 | 65 | # * :download - Force download (default: false) |
|
65 | 66 | def link_to_attachment(attachment, options={}) |
|
66 | 67 | text = options.delete(:text) || attachment.filename |
|
67 | 68 | action = options.delete(:download) ? 'download' : 'show' |
|
68 | 69 | |
|
69 | 70 | link_to(h(text), {:controller => 'attachments', :action => action, :id => attachment, :filename => attachment.filename }, options) |
|
70 | 71 | end |
|
71 | 72 | |
|
72 | 73 | def toggle_link(name, id, options={}) |
|
73 | 74 | onclick = "Element.toggle('#{id}'); " |
|
74 | 75 | onclick << (options[:focus] ? "Form.Element.focus('#{options[:focus]}'); " : "this.blur(); ") |
|
75 | 76 | onclick << "return false;" |
|
76 | 77 | link_to(name, "#", :onclick => onclick) |
|
77 | 78 | end |
|
78 | 79 | |
|
79 | 80 | def image_to_function(name, function, html_options = {}) |
|
80 | 81 | html_options.symbolize_keys! |
|
81 | 82 | tag(:input, html_options.merge({ |
|
82 | 83 | :type => "image", :src => image_path(name), |
|
83 | 84 | :onclick => (html_options[:onclick] ? "#{html_options[:onclick]}; " : "") + "#{function};" |
|
84 | 85 | })) |
|
85 | 86 | end |
|
86 | 87 | |
|
87 | 88 | def prompt_to_remote(name, text, param, url, html_options = {}) |
|
88 | 89 | html_options[:onclick] = "promptToRemote('#{text}', '#{param}', '#{url_for(url)}'); return false;" |
|
89 | 90 | link_to name, {}, html_options |
|
90 | 91 | end |
|
91 | 92 | |
|
92 | 93 | def format_date(date) |
|
93 | 94 | return nil unless date |
|
94 | 95 | # "Setting.date_format.size < 2" is a temporary fix (content of date_format setting changed) |
|
95 | 96 | @date_format ||= (Setting.date_format.blank? || Setting.date_format.size < 2 ? l(:general_fmt_date) : Setting.date_format) |
|
96 | 97 | date.strftime(@date_format) |
|
97 | 98 | end |
|
98 | 99 | |
|
99 | 100 | def format_time(time, include_date = true) |
|
100 | 101 | return nil unless time |
|
101 | 102 | time = time.to_time if time.is_a?(String) |
|
102 | 103 | zone = User.current.time_zone |
|
103 | 104 | local = zone ? time.in_time_zone(zone) : (time.utc? ? time.localtime : time) |
|
104 | 105 | @date_format ||= (Setting.date_format.blank? || Setting.date_format.size < 2 ? l(:general_fmt_date) : Setting.date_format) |
|
105 | 106 | @time_format ||= (Setting.time_format.blank? ? l(:general_fmt_time) : Setting.time_format) |
|
106 | 107 | include_date ? local.strftime("#{@date_format} #{@time_format}") : local.strftime(@time_format) |
|
107 | 108 | end |
|
108 | 109 | |
|
109 | 110 | def format_activity_title(text) |
|
110 | 111 | h(truncate_single_line(text, 100)) |
|
111 | 112 | end |
|
112 | 113 | |
|
113 | 114 | def format_activity_day(date) |
|
114 | 115 | date == Date.today ? l(:label_today).titleize : format_date(date) |
|
115 | 116 | end |
|
116 | 117 | |
|
117 | 118 | def format_activity_description(text) |
|
118 | 119 | h(truncate(text.to_s, 250).gsub(%r{<(pre|code)>.*$}m, '...')) |
|
119 | 120 | end |
|
120 | 121 | |
|
121 | 122 | def distance_of_date_in_words(from_date, to_date = 0) |
|
122 | 123 | from_date = from_date.to_date if from_date.respond_to?(:to_date) |
|
123 | 124 | to_date = to_date.to_date if to_date.respond_to?(:to_date) |
|
124 | 125 | distance_in_days = (to_date - from_date).abs |
|
125 | 126 | lwr(:actionview_datehelper_time_in_words_day, distance_in_days) |
|
126 | 127 | end |
|
127 | 128 | |
|
128 | 129 | def due_date_distance_in_words(date) |
|
129 | 130 | if date |
|
130 | 131 | l((date < Date.today ? :label_roadmap_overdue : :label_roadmap_due_in), distance_of_date_in_words(Date.today, date)) |
|
131 | 132 | end |
|
132 | 133 | end |
|
133 | 134 | |
|
134 | 135 | def render_page_hierarchy(pages, node=nil) |
|
135 | 136 | content = '' |
|
136 | 137 | if pages[node] |
|
137 | 138 | content << "<ul class=\"pages-hierarchy\">\n" |
|
138 | 139 | pages[node].each do |page| |
|
139 | 140 | content << "<li>" |
|
140 | 141 | content << link_to(h(page.pretty_title), {:controller => 'wiki', :action => 'index', :id => page.project, :page => page.title}, |
|
141 | 142 | :title => (page.respond_to?(:updated_on) ? l(:label_updated_time, distance_of_time_in_words(Time.now, page.updated_on)) : nil)) |
|
142 | 143 | content << "\n" + render_page_hierarchy(pages, page.id) if pages[page.id] |
|
143 | 144 | content << "</li>\n" |
|
144 | 145 | end |
|
145 | 146 | content << "</ul>\n" |
|
146 | 147 | end |
|
147 | 148 | content |
|
148 | 149 | end |
|
149 | 150 | |
|
150 | 151 | # Truncates and returns the string as a single line |
|
151 | 152 | def truncate_single_line(string, *args) |
|
152 | 153 | truncate(string, *args).gsub(%r{[\r\n]+}m, ' ') |
|
153 | 154 | end |
|
154 | 155 | |
|
155 | 156 | def html_hours(text) |
|
156 | 157 | text.gsub(%r{(\d+)\.(\d+)}, '<span class="hours hours-int">\1</span><span class="hours hours-dec">.\2</span>') |
|
157 | 158 | end |
|
158 | 159 | |
|
159 | 160 | def authoring(created, author, options={}) |
|
160 | 161 | time_tag = @project.nil? ? content_tag('acronym', distance_of_time_in_words(Time.now, created), :title => format_time(created)) : |
|
161 | 162 | link_to(distance_of_time_in_words(Time.now, created), |
|
162 | 163 | {:controller => 'projects', :action => 'activity', :id => @project, :from => created.to_date}, |
|
163 | 164 | :title => format_time(created)) |
|
164 | 165 | author_tag = (author.is_a?(User) && !author.anonymous?) ? link_to(h(author), :controller => 'account', :action => 'show', :id => author) : h(author || 'Anonymous') |
|
165 | 166 | l(options[:label] || :label_added_time_by, author_tag, time_tag) |
|
166 | 167 | end |
|
167 | 168 | |
|
168 | 169 | def l_or_humanize(s, options={}) |
|
169 | 170 | k = "#{options[:prefix]}#{s}".to_sym |
|
170 | 171 | l_has_string?(k) ? l(k) : s.to_s.humanize |
|
171 | 172 | end |
|
172 | 173 | |
|
173 | 174 | def day_name(day) |
|
174 | 175 | l(:general_day_names).split(',')[day-1] |
|
175 | 176 | end |
|
176 | 177 | |
|
177 | 178 | def month_name(month) |
|
178 | 179 | l(:actionview_datehelper_select_month_names).split(',')[month-1] |
|
179 | 180 | end |
|
180 | 181 | |
|
181 | 182 | def syntax_highlight(name, content) |
|
182 | 183 | type = CodeRay::FileType[name] |
|
183 | 184 | type ? CodeRay.scan(content, type).html : h(content) |
|
184 | 185 | end |
|
185 | 186 | |
|
186 | 187 | def to_path_param(path) |
|
187 | 188 | path.to_s.split(%r{[/\\]}).select {|p| !p.blank?} |
|
188 | 189 | end |
|
189 | 190 | |
|
190 | 191 | def pagination_links_full(paginator, count=nil, options={}) |
|
191 | 192 | page_param = options.delete(:page_param) || :page |
|
192 | 193 | url_param = params.dup |
|
193 | 194 | # don't reuse params if filters are present |
|
194 | 195 | url_param.clear if url_param.has_key?(:set_filter) |
|
195 | 196 | |
|
196 | 197 | html = '' |
|
197 | 198 | html << link_to_remote(('« ' + l(:label_previous)), |
|
198 | 199 | {:update => 'content', |
|
199 | 200 | :url => url_param.merge(page_param => paginator.current.previous), |
|
200 | 201 | :complete => 'window.scrollTo(0,0)'}, |
|
201 | 202 | {:href => url_for(:params => url_param.merge(page_param => paginator.current.previous))}) + ' ' if paginator.current.previous |
|
202 | 203 | |
|
203 | 204 | html << (pagination_links_each(paginator, options) do |n| |
|
204 | 205 | link_to_remote(n.to_s, |
|
205 | 206 | {:url => {:params => url_param.merge(page_param => n)}, |
|
206 | 207 | :update => 'content', |
|
207 | 208 | :complete => 'window.scrollTo(0,0)'}, |
|
208 | 209 | {:href => url_for(:params => url_param.merge(page_param => n))}) |
|
209 | 210 | end || '') |
|
210 | 211 | |
|
211 | 212 | html << ' ' + link_to_remote((l(:label_next) + ' »'), |
|
212 | 213 | {:update => 'content', |
|
213 | 214 | :url => url_param.merge(page_param => paginator.current.next), |
|
214 | 215 | :complete => 'window.scrollTo(0,0)'}, |
|
215 | 216 | {:href => url_for(:params => url_param.merge(page_param => paginator.current.next))}) if paginator.current.next |
|
216 | 217 | |
|
217 | 218 | unless count.nil? |
|
218 | 219 | html << [" (#{paginator.current.first_item}-#{paginator.current.last_item}/#{count})", per_page_links(paginator.items_per_page)].compact.join(' | ') |
|
219 | 220 | end |
|
220 | 221 | |
|
221 | 222 | html |
|
222 | 223 | end |
|
223 | 224 | |
|
224 | 225 | def per_page_links(selected=nil) |
|
225 | 226 | url_param = params.dup |
|
226 | 227 | url_param.clear if url_param.has_key?(:set_filter) |
|
227 | 228 | |
|
228 | 229 | links = Setting.per_page_options_array.collect do |n| |
|
229 | 230 | n == selected ? n : link_to_remote(n, {:update => "content", :url => params.dup.merge(:per_page => n)}, |
|
230 | 231 | {:href => url_for(url_param.merge(:per_page => n))}) |
|
231 | 232 | end |
|
232 | 233 | links.size > 1 ? l(:label_display_per_page, links.join(', ')) : nil |
|
233 | 234 | end |
|
234 | 235 | |
|
235 | 236 | def breadcrumb(*args) |
|
236 | 237 | elements = args.flatten |
|
237 | 238 | elements.any? ? content_tag('p', args.join(' » ') + ' » ', :class => 'breadcrumb') : nil |
|
238 | 239 | end |
|
239 | 240 | |
|
240 | 241 | def html_title(*args) |
|
241 | 242 | if args.empty? |
|
242 | 243 | title = [] |
|
243 | 244 | title << @project.name if @project |
|
244 | 245 | title += @html_title if @html_title |
|
245 | 246 | title << Setting.app_title |
|
246 | 247 | title.compact.join(' - ') |
|
247 | 248 | else |
|
248 | 249 | @html_title ||= [] |
|
249 | 250 | @html_title += args |
|
250 | 251 | end |
|
251 | 252 | end |
|
252 | 253 | |
|
253 | 254 | def accesskey(s) |
|
254 | 255 | Redmine::AccessKeys.key_for s |
|
255 | 256 | end |
|
256 | 257 | |
|
257 | 258 | # Formats text according to system settings. |
|
258 | 259 | # 2 ways to call this method: |
|
259 | 260 | # * with a String: textilizable(text, options) |
|
260 | 261 | # * with an object and one of its attribute: textilizable(issue, :description, options) |
|
261 | 262 | def textilizable(*args) |
|
262 | 263 | options = args.last.is_a?(Hash) ? args.pop : {} |
|
263 | 264 | case args.size |
|
264 | 265 | when 1 |
|
265 | 266 | obj = options[:object] |
|
266 | 267 | text = args.shift |
|
267 | 268 | when 2 |
|
268 | 269 | obj = args.shift |
|
269 | 270 | text = obj.send(args.shift).to_s |
|
270 | 271 | else |
|
271 | 272 | raise ArgumentError, 'invalid arguments to textilizable' |
|
272 | 273 | end |
|
273 | 274 | return '' if text.blank? |
|
274 | 275 | |
|
275 | 276 | only_path = options.delete(:only_path) == false ? false : true |
|
276 | 277 | |
|
277 | 278 | # when using an image link, try to use an attachment, if possible |
|
278 | 279 | attachments = options[:attachments] || (obj && obj.respond_to?(:attachments) ? obj.attachments : nil) |
|
279 | 280 | |
|
280 | 281 | if attachments |
|
281 | 282 | attachments = attachments.sort_by(&:created_on).reverse |
|
282 | 283 | text = text.gsub(/!((\<|\=|\>)?(\([^\)]+\))?(\[[^\]]+\])?(\{[^\}]+\})?)(\S+\.(bmp|gif|jpg|jpeg|png))!/i) do |m| |
|
283 | 284 | style = $1 |
|
284 | 285 | filename = $6 |
|
285 | 286 | rf = Regexp.new(Regexp.escape(filename), Regexp::IGNORECASE) |
|
286 | 287 | # search for the picture in attachments |
|
287 | 288 | if found = attachments.detect { |att| att.filename =~ rf } |
|
288 | 289 | image_url = url_for :only_path => only_path, :controller => 'attachments', :action => 'download', :id => found |
|
289 | 290 | desc = found.description.to_s.gsub(/^([^\(\)]*).*$/, "\\1") |
|
290 | 291 | alt = desc.blank? ? nil : "(#{desc})" |
|
291 | 292 | "!#{style}#{image_url}#{alt}!" |
|
292 | 293 | else |
|
293 | 294 | "!#{style}#{filename}!" |
|
294 | 295 | end |
|
295 | 296 | end |
|
296 | 297 | end |
|
297 | 298 | |
|
298 | 299 | text = Redmine::WikiFormatting.to_html(Setting.text_formatting, text) { |macro, args| exec_macro(macro, obj, args) } |
|
299 | 300 | |
|
300 | 301 | # different methods for formatting wiki links |
|
301 | 302 | case options[:wiki_links] |
|
302 | 303 | when :local |
|
303 | 304 | # used for local links to html files |
|
304 | 305 | format_wiki_link = Proc.new {|project, title, anchor| "#{title}.html" } |
|
305 | 306 | when :anchor |
|
306 | 307 | # used for single-file wiki export |
|
307 | 308 | format_wiki_link = Proc.new {|project, title, anchor| "##{title}" } |
|
308 | 309 | else |
|
309 | 310 | format_wiki_link = Proc.new {|project, title, anchor| url_for(:only_path => only_path, :controller => 'wiki', :action => 'index', :id => project, :page => title, :anchor => anchor) } |
|
310 | 311 | end |
|
311 | 312 | |
|
312 | 313 | project = options[:project] || @project || (obj && obj.respond_to?(:project) ? obj.project : nil) |
|
313 | 314 | |
|
314 | 315 | # Wiki links |
|
315 | 316 | # |
|
316 | 317 | # Examples: |
|
317 | 318 | # [[mypage]] |
|
318 | 319 | # [[mypage|mytext]] |
|
319 | 320 | # wiki links can refer other project wikis, using project name or identifier: |
|
320 | 321 | # [[project:]] -> wiki starting page |
|
321 | 322 | # [[project:|mytext]] |
|
322 | 323 | # [[project:mypage]] |
|
323 | 324 | # [[project:mypage|mytext]] |
|
324 | 325 | text = text.gsub(/(!)?(\[\[([^\]\n\|]+)(\|([^\]\n\|]+))?\]\])/) do |m| |
|
325 | 326 | link_project = project |
|
326 | 327 | esc, all, page, title = $1, $2, $3, $5 |
|
327 | 328 | if esc.nil? |
|
328 | 329 | if page =~ /^([^\:]+)\:(.*)$/ |
|
329 | 330 | link_project = Project.find_by_name($1) || Project.find_by_identifier($1) |
|
330 | 331 | page = $2 |
|
331 | 332 | title ||= $1 if page.blank? |
|
332 | 333 | end |
|
333 | 334 | |
|
334 | 335 | if link_project && link_project.wiki |
|
335 | 336 | # extract anchor |
|
336 | 337 | anchor = nil |
|
337 | 338 | if page =~ /^(.+?)\#(.+)$/ |
|
338 | 339 | page, anchor = $1, $2 |
|
339 | 340 | end |
|
340 | 341 | # check if page exists |
|
341 | 342 | wiki_page = link_project.wiki.find_page(page) |
|
342 | 343 | link_to((title || page), format_wiki_link.call(link_project, Wiki.titleize(page), anchor), |
|
343 | 344 | :class => ('wiki-page' + (wiki_page ? '' : ' new'))) |
|
344 | 345 | else |
|
345 | 346 | # project or wiki doesn't exist |
|
346 | 347 | title || page |
|
347 | 348 | end |
|
348 | 349 | else |
|
349 | 350 | all |
|
350 | 351 | end |
|
351 | 352 | end |
|
352 | 353 | |
|
353 | 354 | # Redmine links |
|
354 | 355 | # |
|
355 | 356 | # Examples: |
|
356 | 357 | # Issues: |
|
357 | 358 | # #52 -> Link to issue #52 |
|
358 | 359 | # Changesets: |
|
359 | 360 | # r52 -> Link to revision 52 |
|
360 | 361 | # commit:a85130f -> Link to scmid starting with a85130f |
|
361 | 362 | # Documents: |
|
362 | 363 | # document#17 -> Link to document with id 17 |
|
363 | 364 | # document:Greetings -> Link to the document with title "Greetings" |
|
364 | 365 | # document:"Some document" -> Link to the document with title "Some document" |
|
365 | 366 | # Versions: |
|
366 | 367 | # version#3 -> Link to version with id 3 |
|
367 | 368 | # version:1.0.0 -> Link to version named "1.0.0" |
|
368 | 369 | # version:"1.0 beta 2" -> Link to version named "1.0 beta 2" |
|
369 | 370 | # Attachments: |
|
370 | 371 | # attachment:file.zip -> Link to the attachment of the current object named file.zip |
|
371 | 372 | # Source files: |
|
372 | 373 | # source:some/file -> Link to the file located at /some/file in the project's repository |
|
373 | 374 | # source:some/file@52 -> Link to the file's revision 52 |
|
374 | 375 | # source:some/file#L120 -> Link to line 120 of the file |
|
375 | 376 | # source:some/file@52#L120 -> Link to line 120 of the file's revision 52 |
|
376 | 377 | # export:some/file -> Force the download of the file |
|
377 | 378 | # Forum messages: |
|
378 | 379 | # message#1218 -> Link to message with id 1218 |
|
379 | 380 | text = text.gsub(%r{([\s\(,\-\>]|^)(!)?(attachment|document|version|commit|source|export|message)?((#|r)(\d+)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]]\W)|\s|<|$)}) do |m| |
|
380 | 381 | leading, esc, prefix, sep, oid = $1, $2, $3, $5 || $7, $6 || $8 |
|
381 | 382 | link = nil |
|
382 | 383 | if esc.nil? |
|
383 | 384 | if prefix.nil? && sep == 'r' |
|
384 | 385 | if project && (changeset = project.changesets.find_by_revision(oid)) |
|
385 | 386 | link = link_to("r#{oid}", {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => oid}, |
|
386 | 387 | :class => 'changeset', |
|
387 | 388 | :title => truncate_single_line(changeset.comments, 100)) |
|
388 | 389 | end |
|
389 | 390 | elsif sep == '#' |
|
390 | 391 | oid = oid.to_i |
|
391 | 392 | case prefix |
|
392 | 393 | when nil |
|
393 | 394 | if issue = Issue.find_by_id(oid, :include => [:project, :status], :conditions => Project.visible_by(User.current)) |
|
394 | 395 | link = link_to("##{oid}", {:only_path => only_path, :controller => 'issues', :action => 'show', :id => oid}, |
|
395 | 396 | :class => (issue.closed? ? 'issue closed' : 'issue'), |
|
396 | 397 | :title => "#{truncate(issue.subject, 100)} (#{issue.status.name})") |
|
397 | 398 | link = content_tag('del', link) if issue.closed? |
|
398 | 399 | end |
|
399 | 400 | when 'document' |
|
400 | 401 | if document = Document.find_by_id(oid, :include => [:project], :conditions => Project.visible_by(User.current)) |
|
401 | 402 | link = link_to h(document.title), {:only_path => only_path, :controller => 'documents', :action => 'show', :id => document}, |
|
402 | 403 | :class => 'document' |
|
403 | 404 | end |
|
404 | 405 | when 'version' |
|
405 | 406 | if version = Version.find_by_id(oid, :include => [:project], :conditions => Project.visible_by(User.current)) |
|
406 | 407 | link = link_to h(version.name), {:only_path => only_path, :controller => 'versions', :action => 'show', :id => version}, |
|
407 | 408 | :class => 'version' |
|
408 | 409 | end |
|
409 | 410 | when 'message' |
|
410 | 411 | if message = Message.find_by_id(oid, :include => [:parent, {:board => :project}], :conditions => Project.visible_by(User.current)) |
|
411 | 412 | link = link_to h(truncate(message.subject, 60)), {:only_path => only_path, |
|
412 | 413 | :controller => 'messages', |
|
413 | 414 | :action => 'show', |
|
414 | 415 | :board_id => message.board, |
|
415 | 416 | :id => message.root, |
|
416 | 417 | :anchor => (message.parent ? "message-#{message.id}" : nil)}, |
|
417 | 418 | :class => 'message' |
|
418 | 419 | end |
|
419 | 420 | end |
|
420 | 421 | elsif sep == ':' |
|
421 | 422 | # removes the double quotes if any |
|
422 | 423 | name = oid.gsub(%r{^"(.*)"$}, "\\1") |
|
423 | 424 | case prefix |
|
424 | 425 | when 'document' |
|
425 | 426 | if project && document = project.documents.find_by_title(name) |
|
426 | 427 | link = link_to h(document.title), {:only_path => only_path, :controller => 'documents', :action => 'show', :id => document}, |
|
427 | 428 | :class => 'document' |
|
428 | 429 | end |
|
429 | 430 | when 'version' |
|
430 | 431 | if project && version = project.versions.find_by_name(name) |
|
431 | 432 | link = link_to h(version.name), {:only_path => only_path, :controller => 'versions', :action => 'show', :id => version}, |
|
432 | 433 | :class => 'version' |
|
433 | 434 | end |
|
434 | 435 | when 'commit' |
|
435 | 436 | if project && (changeset = project.changesets.find(:first, :conditions => ["scmid LIKE ?", "#{name}%"])) |
|
436 | 437 | link = link_to h("#{name}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.revision}, |
|
437 | 438 | :class => 'changeset', |
|
438 | 439 | :title => truncate_single_line(changeset.comments, 100) |
|
439 | 440 | end |
|
440 | 441 | when 'source', 'export' |
|
441 | 442 | if project && project.repository |
|
442 | 443 | name =~ %r{^[/\\]*(.*?)(@([0-9a-f]+))?(#(L\d+))?$} |
|
443 | 444 | path, rev, anchor = $1, $3, $5 |
|
444 | 445 | link = link_to h("#{prefix}:#{name}"), {:controller => 'repositories', :action => 'entry', :id => project, |
|
445 | 446 | :path => to_path_param(path), |
|
446 | 447 | :rev => rev, |
|
447 | 448 | :anchor => anchor, |
|
448 | 449 | :format => (prefix == 'export' ? 'raw' : nil)}, |
|
449 | 450 | :class => (prefix == 'export' ? 'source download' : 'source') |
|
450 | 451 | end |
|
451 | 452 | when 'attachment' |
|
452 | 453 | if attachments && attachment = attachments.detect {|a| a.filename == name } |
|
453 | 454 | link = link_to h(attachment.filename), {:only_path => only_path, :controller => 'attachments', :action => 'download', :id => attachment}, |
|
454 | 455 | :class => 'attachment' |
|
455 | 456 | end |
|
456 | 457 | end |
|
457 | 458 | end |
|
458 | 459 | end |
|
459 | 460 | leading + (link || "#{prefix}#{sep}#{oid}") |
|
460 | 461 | end |
|
461 | 462 | |
|
462 | 463 | text |
|
463 | 464 | end |
|
464 | 465 | |
|
465 | 466 | # Same as Rails' simple_format helper without using paragraphs |
|
466 | 467 | def simple_format_without_paragraph(text) |
|
467 | 468 | text.to_s. |
|
468 | 469 | gsub(/\r\n?/, "\n"). # \r\n and \r -> \n |
|
469 | 470 | gsub(/\n\n+/, "<br /><br />"). # 2+ newline -> 2 br |
|
470 | 471 | gsub(/([^\n]\n)(?=[^\n])/, '\1<br />') # 1 newline -> br |
|
471 | 472 | end |
|
472 | 473 | |
|
473 | 474 | def error_messages_for(object_name, options = {}) |
|
474 | 475 | options = options.symbolize_keys |
|
475 | 476 | object = instance_variable_get("@#{object_name}") |
|
476 | 477 | if object && !object.errors.empty? |
|
477 | 478 | # build full_messages here with controller current language |
|
478 | 479 | full_messages = [] |
|
479 | 480 | object.errors.each do |attr, msg| |
|
480 | 481 | next if msg.nil? |
|
481 | 482 | msg = msg.first if msg.is_a? Array |
|
482 | 483 | if attr == "base" |
|
483 | 484 | full_messages << l(msg) |
|
484 | 485 | else |
|
485 | 486 | full_messages << "« " + (l_has_string?("field_" + attr) ? l("field_" + attr) : object.class.human_attribute_name(attr)) + " » " + l(msg) unless attr == "custom_values" |
|
486 | 487 | end |
|
487 | 488 | end |
|
488 | 489 | # retrieve custom values error messages |
|
489 | 490 | if object.errors[:custom_values] |
|
490 | 491 | object.custom_values.each do |v| |
|
491 | 492 | v.errors.each do |attr, msg| |
|
492 | 493 | next if msg.nil? |
|
493 | 494 | msg = msg.first if msg.is_a? Array |
|
494 | 495 | full_messages << "« " + v.custom_field.name + " » " + l(msg) |
|
495 | 496 | end |
|
496 | 497 | end |
|
497 | 498 | end |
|
498 | 499 | content_tag("div", |
|
499 | 500 | content_tag( |
|
500 | 501 | options[:header_tag] || "span", lwr(:gui_validation_error, full_messages.length) + ":" |
|
501 | 502 | ) + |
|
502 | 503 | content_tag("ul", full_messages.collect { |msg| content_tag("li", msg) }), |
|
503 | 504 | "id" => options[:id] || "errorExplanation", "class" => options[:class] || "errorExplanation" |
|
504 | 505 | ) |
|
505 | 506 | else |
|
506 | 507 | "" |
|
507 | 508 | end |
|
508 | 509 | end |
|
509 | 510 | |
|
510 | 511 | def lang_options_for_select(blank=true) |
|
511 | 512 | (blank ? [["(auto)", ""]] : []) + |
|
512 | 513 | GLoc.valid_languages.collect{|lang| [ ll(lang.to_s, :general_lang_name), lang.to_s]}.sort{|x,y| x.last <=> y.last } |
|
513 | 514 | end |
|
514 | 515 | |
|
515 | 516 | def label_tag_for(name, option_tags = nil, options = {}) |
|
516 | 517 | label_text = l(("field_"+field.to_s.gsub(/\_id$/, "")).to_sym) + (options.delete(:required) ? @template.content_tag("span", " *", :class => "required"): "") |
|
517 | 518 | content_tag("label", label_text) |
|
518 | 519 | end |
|
519 | 520 | |
|
520 | 521 | def labelled_tabular_form_for(name, object, options, &proc) |
|
521 | 522 | options[:html] ||= {} |
|
522 | 523 | options[:html][:class] = 'tabular' unless options[:html].has_key?(:class) |
|
523 | 524 | form_for(name, object, options.merge({ :builder => TabularFormBuilder, :lang => current_language}), &proc) |
|
524 | 525 | end |
|
525 | 526 | |
|
526 | 527 | def back_url_hidden_field_tag |
|
527 | 528 | back_url = params[:back_url] || request.env['HTTP_REFERER'] |
|
528 | hidden_field_tag('back_url', back_url) unless back_url.blank? | |
|
529 | hidden_field_tag('back_url', CGI.escape(back_url)) unless back_url.blank? | |
|
529 | 530 | end |
|
530 | 531 | |
|
531 | 532 | def check_all_links(form_name) |
|
532 | 533 | link_to_function(l(:button_check_all), "checkAll('#{form_name}', true)") + |
|
533 | 534 | " | " + |
|
534 | 535 | link_to_function(l(:button_uncheck_all), "checkAll('#{form_name}', false)") |
|
535 | 536 | end |
|
536 | 537 | |
|
537 | 538 | def progress_bar(pcts, options={}) |
|
538 | 539 | pcts = [pcts, pcts] unless pcts.is_a?(Array) |
|
539 | 540 | pcts[1] = pcts[1] - pcts[0] |
|
540 | 541 | pcts << (100 - pcts[1] - pcts[0]) |
|
541 | 542 | width = options[:width] || '100px;' |
|
542 | 543 | legend = options[:legend] || '' |
|
543 | 544 | content_tag('table', |
|
544 | 545 | content_tag('tr', |
|
545 | 546 | (pcts[0] > 0 ? content_tag('td', '', :style => "width: #{pcts[0].floor}%;", :class => 'closed') : '') + |
|
546 | 547 | (pcts[1] > 0 ? content_tag('td', '', :style => "width: #{pcts[1].floor}%;", :class => 'done') : '') + |
|
547 | 548 | (pcts[2] > 0 ? content_tag('td', '', :style => "width: #{pcts[2].floor}%;", :class => 'todo') : '') |
|
548 | 549 | ), :class => 'progress', :style => "width: #{width};") + |
|
549 | 550 | content_tag('p', legend, :class => 'pourcent') |
|
550 | 551 | end |
|
551 | 552 | |
|
552 | 553 | def context_menu_link(name, url, options={}) |
|
553 | 554 | options[:class] ||= '' |
|
554 | 555 | if options.delete(:selected) |
|
555 | 556 | options[:class] << ' icon-checked disabled' |
|
556 | 557 | options[:disabled] = true |
|
557 | 558 | end |
|
558 | 559 | if options.delete(:disabled) |
|
559 | 560 | options.delete(:method) |
|
560 | 561 | options.delete(:confirm) |
|
561 | 562 | options.delete(:onclick) |
|
562 | 563 | options[:class] << ' disabled' |
|
563 | 564 | url = '#' |
|
564 | 565 | end |
|
565 | 566 | link_to name, url, options |
|
566 | 567 | end |
|
567 | 568 | |
|
568 | 569 | def calendar_for(field_id) |
|
569 | 570 | include_calendar_headers_tags |
|
570 | 571 | image_tag("calendar.png", {:id => "#{field_id}_trigger",:class => "calendar-trigger"}) + |
|
571 | 572 | javascript_tag("Calendar.setup({inputField : '#{field_id}', ifFormat : '%Y-%m-%d', button : '#{field_id}_trigger' });") |
|
572 | 573 | end |
|
573 | 574 | |
|
574 | 575 | def include_calendar_headers_tags |
|
575 | 576 | unless @calendar_headers_tags_included |
|
576 | 577 | @calendar_headers_tags_included = true |
|
577 | 578 | content_for :header_tags do |
|
578 | 579 | javascript_include_tag('calendar/calendar') + |
|
579 | 580 | javascript_include_tag("calendar/lang/calendar-#{current_language}.js") + |
|
580 | 581 | javascript_include_tag('calendar/calendar-setup') + |
|
581 | 582 | stylesheet_link_tag('calendar') |
|
582 | 583 | end |
|
583 | 584 | end |
|
584 | 585 | end |
|
585 | 586 | |
|
586 | 587 | def content_for(name, content = nil, &block) |
|
587 | 588 | @has_content ||= {} |
|
588 | 589 | @has_content[name] = true |
|
589 | 590 | super(name, content, &block) |
|
590 | 591 | end |
|
591 | 592 | |
|
592 | 593 | def has_content?(name) |
|
593 | 594 | (@has_content && @has_content[name]) || false |
|
594 | 595 | end |
|
595 | 596 | |
|
596 | 597 | # Returns the avatar image tag for the given +user+ if avatars are enabled |
|
597 | 598 | # +user+ can be a User or a string that will be scanned for an email address (eg. 'joe <joe@foo.bar>') |
|
598 | 599 | def avatar(user, options = { }) |
|
599 | 600 | if Setting.gravatar_enabled? |
|
600 | 601 | email = nil |
|
601 | 602 | if user.respond_to?(:mail) |
|
602 | 603 | email = user.mail |
|
603 | 604 | elsif user.to_s =~ %r{<(.+?)>} |
|
604 | 605 | email = $1 |
|
605 | 606 | end |
|
606 | 607 | return gravatar(email.to_s.downcase, options) unless email.blank? rescue nil |
|
607 | 608 | end |
|
608 | 609 | end |
|
609 | 610 | |
|
610 | 611 | private |
|
611 | 612 | |
|
612 | 613 | def wiki_helper |
|
613 | 614 | helper = Redmine::WikiFormatting.helper_for(Setting.text_formatting) |
|
614 | 615 | extend helper |
|
615 | 616 | return self |
|
616 | 617 | end |
|
617 | 618 | end |
@@ -1,31 +1,37 | |||
|
1 | 1 | # redMine - project management software |
|
2 | 2 | # Copyright (C) 2006 Jean-Philippe Lang |
|
3 | 3 | # |
|
4 | 4 | # This program is free software; you can redistribute it and/or |
|
5 | 5 | # modify it under the terms of the GNU General Public License |
|
6 | 6 | # as published by the Free Software Foundation; either version 2 |
|
7 | 7 | # of the License, or (at your option) any later version. |
|
8 | 8 | # |
|
9 | 9 | # This program is distributed in the hope that it will be useful, |
|
10 | 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 | 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 | 12 | # GNU General Public License for more details. |
|
13 | 13 | # |
|
14 | 14 | # You should have received a copy of the GNU General Public License |
|
15 | 15 | # along with this program; if not, write to the Free Software |
|
16 | 16 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
17 | 17 | |
|
18 | 18 | class Document < ActiveRecord::Base |
|
19 | 19 | belongs_to :project |
|
20 | 20 | belongs_to :category, :class_name => "Enumeration", :foreign_key => "category_id" |
|
21 | 21 | has_many :attachments, :as => :container, :dependent => :destroy |
|
22 | 22 | |
|
23 | 23 | acts_as_searchable :columns => ['title', "#{table_name}.description"], :include => :project |
|
24 | 24 | acts_as_event :title => Proc.new {|o| "#{l(:label_document)}: #{o.title}"}, |
|
25 | 25 | :author => Proc.new {|o| (a = o.attachments.find(:first, :order => "#{Attachment.table_name}.created_on ASC")) ? a.author : nil }, |
|
26 | 26 | :url => Proc.new {|o| {:controller => 'documents', :action => 'show', :id => o.id}} |
|
27 | 27 | acts_as_activity_provider :find_options => {:include => :project} |
|
28 | 28 | |
|
29 | 29 | validates_presence_of :project, :title, :category |
|
30 | 30 | validates_length_of :title, :maximum => 60 |
|
31 | ||
|
32 | def after_initialize | |
|
33 | if new_record? | |
|
34 | self.category ||= Enumeration.default('DCAT') | |
|
35 | end | |
|
36 | end | |
|
31 | 37 | end |
@@ -1,79 +1,81 | |||
|
1 | 1 | # redMine - project management software |
|
2 | 2 | # Copyright (C) 2006 Jean-Philippe Lang |
|
3 | 3 | # |
|
4 | 4 | # This program is free software; you can redistribute it and/or |
|
5 | 5 | # modify it under the terms of the GNU General Public License |
|
6 | 6 | # as published by the Free Software Foundation; either version 2 |
|
7 | 7 | # of the License, or (at your option) any later version. |
|
8 | 8 | # |
|
9 | 9 | # This program is distributed in the hope that it will be useful, |
|
10 | 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 | 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 | 12 | # GNU General Public License for more details. |
|
13 | 13 | # |
|
14 | 14 | # You should have received a copy of the GNU General Public License |
|
15 | 15 | # along with this program; if not, write to the Free Software |
|
16 | 16 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
17 | 17 | |
|
18 | 18 | class Enumeration < ActiveRecord::Base |
|
19 | 19 | acts_as_list :scope => 'opt = \'#{opt}\'' |
|
20 | 20 | |
|
21 | 21 | before_destroy :check_integrity |
|
22 | 22 | |
|
23 | 23 | validates_presence_of :opt, :name |
|
24 | 24 | validates_uniqueness_of :name, :scope => [:opt] |
|
25 | 25 | validates_length_of :name, :maximum => 30 |
|
26 | 26 | |
|
27 | 27 | # Single table inheritance would be an option |
|
28 | 28 | OPTIONS = { |
|
29 | 29 | "IPRI" => {:label => :enumeration_issue_priorities, :model => Issue, :foreign_key => :priority_id}, |
|
30 | 30 | "DCAT" => {:label => :enumeration_doc_categories, :model => Document, :foreign_key => :category_id}, |
|
31 | 31 | "ACTI" => {:label => :enumeration_activities, :model => TimeEntry, :foreign_key => :activity_id} |
|
32 | 32 | }.freeze |
|
33 | 33 | |
|
34 | 34 | def self.get_values(option) |
|
35 | 35 | find(:all, :conditions => {:opt => option}, :order => 'position') |
|
36 | 36 | end |
|
37 | 37 | |
|
38 | 38 | def self.default(option) |
|
39 | 39 | find(:first, :conditions => {:opt => option, :is_default => true}, :order => 'position') |
|
40 | 40 | end |
|
41 | 41 | |
|
42 | 42 | def option_name |
|
43 | 43 | OPTIONS[self.opt][:label] |
|
44 | 44 | end |
|
45 | 45 | |
|
46 | 46 | def before_save |
|
47 | Enumeration.update_all("is_default = #{connection.quoted_false}", {:opt => opt}) if is_default? | |
|
47 | if is_default? && is_default_changed? | |
|
48 | Enumeration.update_all("is_default = #{connection.quoted_false}", {:opt => opt}) | |
|
49 | end | |
|
48 | 50 | end |
|
49 | 51 | |
|
50 | 52 | def objects_count |
|
51 | 53 | OPTIONS[self.opt][:model].count(:conditions => "#{OPTIONS[self.opt][:foreign_key]} = #{id}") |
|
52 | 54 | end |
|
53 | 55 | |
|
54 | 56 | def in_use? |
|
55 | 57 | self.objects_count != 0 |
|
56 | 58 | end |
|
57 | 59 | |
|
58 | 60 | alias :destroy_without_reassign :destroy |
|
59 | 61 | |
|
60 | 62 | # Destroy the enumeration |
|
61 | 63 | # If a enumeration is specified, objects are reassigned |
|
62 | 64 | def destroy(reassign_to = nil) |
|
63 | 65 | if reassign_to && reassign_to.is_a?(Enumeration) |
|
64 | 66 | OPTIONS[self.opt][:model].update_all("#{OPTIONS[self.opt][:foreign_key]} = #{reassign_to.id}", "#{OPTIONS[self.opt][:foreign_key]} = #{id}") |
|
65 | 67 | end |
|
66 | 68 | destroy_without_reassign |
|
67 | 69 | end |
|
68 | 70 | |
|
69 | 71 | def <=>(enumeration) |
|
70 | 72 | position <=> enumeration.position |
|
71 | 73 | end |
|
72 | 74 | |
|
73 | 75 | def to_s; name end |
|
74 | 76 | |
|
75 | 77 | private |
|
76 | 78 | def check_integrity |
|
77 | 79 | raise "Can't delete enumeration" if self.in_use? |
|
78 | 80 | end |
|
79 | 81 | end |
@@ -1,289 +1,294 | |||
|
1 | 1 | # redMine - project management software |
|
2 | 2 | # Copyright (C) 2006-2007 Jean-Philippe Lang |
|
3 | 3 | # |
|
4 | 4 | # This program is free software; you can redistribute it and/or |
|
5 | 5 | # modify it under the terms of the GNU General Public License |
|
6 | 6 | # as published by the Free Software Foundation; either version 2 |
|
7 | 7 | # of the License, or (at your option) any later version. |
|
8 | 8 | # |
|
9 | 9 | # This program is distributed in the hope that it will be useful, |
|
10 | 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 | 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 | 12 | # GNU General Public License for more details. |
|
13 | 13 | # |
|
14 | 14 | # You should have received a copy of the GNU General Public License |
|
15 | 15 | # along with this program; if not, write to the Free Software |
|
16 | 16 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
17 | 17 | |
|
18 | 18 | require "digest/sha1" |
|
19 | 19 | |
|
20 | 20 | class User < ActiveRecord::Base |
|
21 | 21 | |
|
22 | 22 | # Account statuses |
|
23 | 23 | STATUS_ANONYMOUS = 0 |
|
24 | 24 | STATUS_ACTIVE = 1 |
|
25 | 25 | STATUS_REGISTERED = 2 |
|
26 | 26 | STATUS_LOCKED = 3 |
|
27 | 27 | |
|
28 | 28 | USER_FORMATS = { |
|
29 | 29 | :firstname_lastname => '#{firstname} #{lastname}', |
|
30 | 30 | :firstname => '#{firstname}', |
|
31 | 31 | :lastname_firstname => '#{lastname} #{firstname}', |
|
32 | 32 | :lastname_coma_firstname => '#{lastname}, #{firstname}', |
|
33 | 33 | :username => '#{login}' |
|
34 | 34 | } |
|
35 | 35 | |
|
36 | 36 | has_many :memberships, :class_name => 'Member', :include => [ :project, :role ], :conditions => "#{Project.table_name}.status=#{Project::STATUS_ACTIVE}", :order => "#{Project.table_name}.name" |
|
37 | 37 | has_many :members, :dependent => :delete_all |
|
38 | 38 | has_many :projects, :through => :memberships |
|
39 | 39 | has_many :issue_categories, :foreign_key => 'assigned_to_id', :dependent => :nullify |
|
40 | 40 | has_many :changesets, :dependent => :nullify |
|
41 | 41 | has_one :preference, :dependent => :destroy, :class_name => 'UserPreference' |
|
42 | 42 | has_one :rss_token, :dependent => :destroy, :class_name => 'Token', :conditions => "action='feeds'" |
|
43 | 43 | belongs_to :auth_source |
|
44 | 44 | |
|
45 | 45 | # Active non-anonymous users scope |
|
46 | 46 | named_scope :active, :conditions => "#{User.table_name}.status = #{STATUS_ACTIVE}" |
|
47 | 47 | |
|
48 | 48 | acts_as_customizable |
|
49 | 49 | |
|
50 | 50 | attr_accessor :password, :password_confirmation |
|
51 | 51 | attr_accessor :last_before_login_on |
|
52 | 52 | # Prevents unauthorized assignments |
|
53 | 53 | attr_protected :login, :admin, :password, :password_confirmation, :hashed_password |
|
54 | 54 | |
|
55 | 55 | validates_presence_of :login, :firstname, :lastname, :mail, :if => Proc.new { |user| !user.is_a?(AnonymousUser) } |
|
56 | 56 | validates_uniqueness_of :login, :if => Proc.new { |user| !user.login.blank? } |
|
57 | 57 | validates_uniqueness_of :mail, :if => Proc.new { |user| !user.mail.blank? } |
|
58 | 58 | # Login must contain lettres, numbers, underscores only |
|
59 | 59 | validates_format_of :login, :with => /^[a-z0-9_\-@\.]*$/i |
|
60 | 60 | validates_length_of :login, :maximum => 30 |
|
61 | 61 | validates_format_of :firstname, :lastname, :with => /^[\w\s\'\-\.]*$/i |
|
62 | 62 | validates_length_of :firstname, :lastname, :maximum => 30 |
|
63 | 63 | validates_format_of :mail, :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i, :allow_nil => true |
|
64 | 64 | validates_length_of :mail, :maximum => 60, :allow_nil => true |
|
65 | 65 | validates_length_of :password, :minimum => 4, :allow_nil => true |
|
66 | 66 | validates_confirmation_of :password, :allow_nil => true |
|
67 | 67 | |
|
68 | 68 | def before_create |
|
69 | 69 | self.mail_notification = false |
|
70 | 70 | true |
|
71 | 71 | end |
|
72 | 72 | |
|
73 | 73 | def before_save |
|
74 | 74 | # update hashed_password if password was set |
|
75 | 75 | self.hashed_password = User.hash_password(self.password) if self.password |
|
76 | 76 | end |
|
77 | 77 | |
|
78 | 78 | def reload(*args) |
|
79 | 79 | @name = nil |
|
80 | 80 | super |
|
81 | 81 | end |
|
82 | 82 | |
|
83 | 83 | # Returns the user that matches provided login and password, or nil |
|
84 | 84 | def self.try_to_login(login, password) |
|
85 | 85 | # Make sure no one can sign in with an empty password |
|
86 | 86 | return nil if password.to_s.empty? |
|
87 | 87 | user = find(:first, :conditions => ["login=?", login]) |
|
88 | 88 | if user |
|
89 | 89 | # user is already in local database |
|
90 | 90 | return nil if !user.active? |
|
91 | 91 | if user.auth_source |
|
92 | 92 | # user has an external authentication method |
|
93 | 93 | return nil unless user.auth_source.authenticate(login, password) |
|
94 | 94 | else |
|
95 | 95 | # authentication with local password |
|
96 | 96 | return nil unless User.hash_password(password) == user.hashed_password |
|
97 | 97 | end |
|
98 | 98 | else |
|
99 | 99 | # user is not yet registered, try to authenticate with available sources |
|
100 | 100 | attrs = AuthSource.authenticate(login, password) |
|
101 | 101 | if attrs |
|
102 | 102 | user = new(*attrs) |
|
103 | 103 | user.login = login |
|
104 | 104 | user.language = Setting.default_language |
|
105 | 105 | if user.save |
|
106 | 106 | user.reload |
|
107 | 107 | logger.info("User '#{user.login}' created from the LDAP") if logger |
|
108 | 108 | end |
|
109 | 109 | end |
|
110 | 110 | end |
|
111 | 111 | user.update_attribute(:last_login_on, Time.now) if user && !user.new_record? |
|
112 | 112 | user |
|
113 | 113 | rescue => text |
|
114 | 114 | raise text |
|
115 | 115 | end |
|
116 | 116 | |
|
117 | 117 | # Return user's full name for display |
|
118 | 118 | def name(formatter = nil) |
|
119 | 119 | if formatter |
|
120 | 120 | eval('"' + (USER_FORMATS[formatter] || USER_FORMATS[:firstname_lastname]) + '"') |
|
121 | 121 | else |
|
122 | 122 | @name ||= eval('"' + (USER_FORMATS[Setting.user_format] || USER_FORMATS[:firstname_lastname]) + '"') |
|
123 | 123 | end |
|
124 | 124 | end |
|
125 | 125 | |
|
126 | 126 | def active? |
|
127 | 127 | self.status == STATUS_ACTIVE |
|
128 | 128 | end |
|
129 | 129 | |
|
130 | 130 | def registered? |
|
131 | 131 | self.status == STATUS_REGISTERED |
|
132 | 132 | end |
|
133 | 133 | |
|
134 | 134 | def locked? |
|
135 | 135 | self.status == STATUS_LOCKED |
|
136 | 136 | end |
|
137 | 137 | |
|
138 | 138 | def check_password?(clear_password) |
|
139 | 139 | User.hash_password(clear_password) == self.hashed_password |
|
140 | 140 | end |
|
141 | 141 | |
|
142 | 142 | def pref |
|
143 | 143 | self.preference ||= UserPreference.new(:user => self) |
|
144 | 144 | end |
|
145 | 145 | |
|
146 | 146 | def time_zone |
|
147 | 147 | @time_zone ||= (self.pref.time_zone.blank? ? nil : TimeZone[self.pref.time_zone]) |
|
148 | 148 | end |
|
149 | 149 | |
|
150 | 150 | def wants_comments_in_reverse_order? |
|
151 | 151 | self.pref[:comments_sorting] == 'desc' |
|
152 | 152 | end |
|
153 | 153 | |
|
154 | 154 | # Return user's RSS key (a 40 chars long string), used to access feeds |
|
155 | 155 | def rss_key |
|
156 | 156 | token = self.rss_token || Token.create(:user => self, :action => 'feeds') |
|
157 | 157 | token.value |
|
158 | 158 | end |
|
159 | 159 | |
|
160 | 160 | # Return an array of project ids for which the user has explicitly turned mail notifications on |
|
161 | 161 | def notified_projects_ids |
|
162 | 162 | @notified_projects_ids ||= memberships.select {|m| m.mail_notification?}.collect(&:project_id) |
|
163 | 163 | end |
|
164 | 164 | |
|
165 | 165 | def notified_project_ids=(ids) |
|
166 | 166 | Member.update_all("mail_notification = #{connection.quoted_false}", ['user_id = ?', id]) |
|
167 | 167 | Member.update_all("mail_notification = #{connection.quoted_true}", ['user_id = ? AND project_id IN (?)', id, ids]) if ids && !ids.empty? |
|
168 | 168 | @notified_projects_ids = nil |
|
169 | 169 | notified_projects_ids |
|
170 | 170 | end |
|
171 | 171 | |
|
172 | 172 | def self.find_by_rss_key(key) |
|
173 | 173 | token = Token.find_by_value(key) |
|
174 | 174 | token && token.user.active? ? token.user : nil |
|
175 | 175 | end |
|
176 | 176 | |
|
177 | 177 | def self.find_by_autologin_key(key) |
|
178 | 178 | token = Token.find_by_action_and_value('autologin', key) |
|
179 | 179 | token && (token.created_on > Setting.autologin.to_i.day.ago) && token.user.active? ? token.user : nil |
|
180 | 180 | end |
|
181 | ||
|
182 | # Makes find_by_mail case-insensitive | |
|
183 | def self.find_by_mail(mail) | |
|
184 | find(:first, :conditions => ["LOWER(mail) = ?", mail.to_s.downcase]) | |
|
185 | end | |
|
181 | 186 | |
|
182 | 187 | # Sort users by their display names |
|
183 | 188 | def <=>(user) |
|
184 | 189 | self.to_s.downcase <=> user.to_s.downcase |
|
185 | 190 | end |
|
186 | 191 | |
|
187 | 192 | def to_s |
|
188 | 193 | name |
|
189 | 194 | end |
|
190 | 195 | |
|
191 | 196 | def logged? |
|
192 | 197 | true |
|
193 | 198 | end |
|
194 | 199 | |
|
195 | 200 | def anonymous? |
|
196 | 201 | !logged? |
|
197 | 202 | end |
|
198 | 203 | |
|
199 | 204 | # Return user's role for project |
|
200 | 205 | def role_for_project(project) |
|
201 | 206 | # No role on archived projects |
|
202 | 207 | return nil unless project && project.active? |
|
203 | 208 | if logged? |
|
204 | 209 | # Find project membership |
|
205 | 210 | membership = memberships.detect {|m| m.project_id == project.id} |
|
206 | 211 | if membership |
|
207 | 212 | membership.role |
|
208 | 213 | else |
|
209 | 214 | @role_non_member ||= Role.non_member |
|
210 | 215 | end |
|
211 | 216 | else |
|
212 | 217 | @role_anonymous ||= Role.anonymous |
|
213 | 218 | end |
|
214 | 219 | end |
|
215 | 220 | |
|
216 | 221 | # Return true if the user is a member of project |
|
217 | 222 | def member_of?(project) |
|
218 | 223 | role_for_project(project).member? |
|
219 | 224 | end |
|
220 | 225 | |
|
221 | 226 | # Return true if the user is allowed to do the specified action on project |
|
222 | 227 | # action can be: |
|
223 | 228 | # * a parameter-like Hash (eg. :controller => 'projects', :action => 'edit') |
|
224 | 229 | # * a permission Symbol (eg. :edit_project) |
|
225 | 230 | def allowed_to?(action, project, options={}) |
|
226 | 231 | if project |
|
227 | 232 | # No action allowed on archived projects |
|
228 | 233 | return false unless project.active? |
|
229 | 234 | # No action allowed on disabled modules |
|
230 | 235 | return false unless project.allows_to?(action) |
|
231 | 236 | # Admin users are authorized for anything else |
|
232 | 237 | return true if admin? |
|
233 | 238 | |
|
234 | 239 | role = role_for_project(project) |
|
235 | 240 | return false unless role |
|
236 | 241 | role.allowed_to?(action) && (project.is_public? || role.member?) |
|
237 | 242 | |
|
238 | 243 | elsif options[:global] |
|
239 | 244 | # authorize if user has at least one role that has this permission |
|
240 | 245 | roles = memberships.collect {|m| m.role}.uniq |
|
241 | 246 | roles.detect {|r| r.allowed_to?(action)} || (self.logged? ? Role.non_member.allowed_to?(action) : Role.anonymous.allowed_to?(action)) |
|
242 | 247 | else |
|
243 | 248 | false |
|
244 | 249 | end |
|
245 | 250 | end |
|
246 | 251 | |
|
247 | 252 | def self.current=(user) |
|
248 | 253 | @current_user = user |
|
249 | 254 | end |
|
250 | 255 | |
|
251 | 256 | def self.current |
|
252 | 257 | @current_user ||= User.anonymous |
|
253 | 258 | end |
|
254 | 259 | |
|
255 | 260 | def self.anonymous |
|
256 | 261 | anonymous_user = AnonymousUser.find(:first) |
|
257 | 262 | if anonymous_user.nil? |
|
258 | 263 | anonymous_user = AnonymousUser.create(:lastname => 'Anonymous', :firstname => '', :mail => '', :login => '', :status => 0) |
|
259 | 264 | raise 'Unable to create the anonymous user.' if anonymous_user.new_record? |
|
260 | 265 | end |
|
261 | 266 | anonymous_user |
|
262 | 267 | end |
|
263 | 268 | |
|
264 | 269 | private |
|
265 | 270 | # Return password digest |
|
266 | 271 | def self.hash_password(clear_password) |
|
267 | 272 | Digest::SHA1.hexdigest(clear_password || "") |
|
268 | 273 | end |
|
269 | 274 | end |
|
270 | 275 | |
|
271 | 276 | class AnonymousUser < User |
|
272 | 277 | |
|
273 | 278 | def validate_on_create |
|
274 | 279 | # There should be only one AnonymousUser in the database |
|
275 | 280 | errors.add_to_base 'An anonymous user already exists.' if AnonymousUser.find(:first) |
|
276 | 281 | end |
|
277 | 282 | |
|
278 | 283 | def available_custom_fields |
|
279 | 284 | [] |
|
280 | 285 | end |
|
281 | 286 | |
|
282 | 287 | # Overrides a few properties |
|
283 | 288 | def logged?; false end |
|
284 | 289 | def admin; false end |
|
285 | 290 | def name; 'Anonymous' end |
|
286 | 291 | def mail; nil end |
|
287 | 292 | def time_zone; nil end |
|
288 | 293 | def rss_key; nil end |
|
289 | 294 | end |
@@ -1,7 +1,8 | |||
|
1 | 1 | <% form_remote_tag(:url => {}, :html => { :id => "journal-#{@journal.id}-form" }) do %> |
|
2 | 2 | <%= text_area_tag :notes, @journal.notes, :class => 'wiki-edit', |
|
3 | 3 | :rows => (@journal.notes.blank? ? 10 : [[10, @journal.notes.length / 50].max, 100].min) %> |
|
4 | <%= call_hook(:view_journals_notes_form_after_notes, { :journal => @journal}) %> | |
|
4 | 5 | <p><%= submit_tag l(:button_save) %> |
|
5 | 6 | <%= link_to l(:button_cancel), '#', :onclick => "Element.remove('journal-#{@journal.id}-form'); " + |
|
6 | 7 | "Element.show('journal-#{@journal.id}-notes'); return false;" %></p> |
|
7 | 8 | <% end %> |
@@ -1,8 +1,10 | |||
|
1 | 1 | if @journal.frozen? |
|
2 | 2 | # journal was destroyed |
|
3 | 3 | page.remove "change-#{@journal.id}" |
|
4 | 4 | else |
|
5 | 5 | page.replace "journal-#{@journal.id}-notes", render_notes(@journal) |
|
6 | 6 | page.show "journal-#{@journal.id}-notes" |
|
7 | 7 | page.remove "journal-#{@journal.id}-form" |
|
8 | 8 | end |
|
9 | ||
|
10 | call_hook(:view_journals_update_rjs_bottom, { :page => page, :journal => @journal }) |
@@ -1,700 +1,700 | |||
|
1 | 1 | _gloc_rule_default: '|n| n==1 ? "" : "_plural" ' |
|
2 | 2 | |
|
3 | 3 | actionview_datehelper_select_day_prefix: |
|
4 | 4 | actionview_datehelper_select_month_names: Januar,Februar,März,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember |
|
5 | 5 | actionview_datehelper_select_month_names_abbr: Jan,Feb,Mär,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez |
|
6 | 6 | actionview_datehelper_select_month_prefix: |
|
7 | 7 | actionview_datehelper_select_year_prefix: |
|
8 | 8 | actionview_datehelper_time_in_words_day: 1 Tag |
|
9 | 9 | actionview_datehelper_time_in_words_day_plural: %d Tagen |
|
10 | 10 | actionview_datehelper_time_in_words_hour_about: ungefähr einer Stunde |
|
11 | 11 | actionview_datehelper_time_in_words_hour_about_plural: ungefähr %d Stunden |
|
12 | 12 | actionview_datehelper_time_in_words_hour_about_single: ungefähr einer Stunde |
|
13 | 13 | actionview_datehelper_time_in_words_minute: 1 Minute |
|
14 | 14 | actionview_datehelper_time_in_words_minute_half: einer halben Minute |
|
15 | 15 | actionview_datehelper_time_in_words_minute_less_than: weniger als einer Minute |
|
16 | 16 | actionview_datehelper_time_in_words_minute_plural: %d Minuten |
|
17 | 17 | actionview_datehelper_time_in_words_minute_single: 1 Minute |
|
18 | 18 | actionview_datehelper_time_in_words_second_less_than: weniger als einer Sekunde |
|
19 | 19 | actionview_datehelper_time_in_words_second_less_than_plural: weniger als %d Sekunden |
|
20 | 20 | actionview_instancetag_blank_option: Bitte auswählen |
|
21 | 21 | |
|
22 | 22 | activerecord_error_inclusion: ist nicht in der Liste enthalten |
|
23 | 23 | activerecord_error_exclusion: ist reserviert |
|
24 | 24 | activerecord_error_invalid: ist unzulässig |
|
25 | 25 | activerecord_error_confirmation: passt nicht zur Bestätigung |
|
26 | 26 | activerecord_error_accepted: muss angenommen werden |
|
27 | 27 | activerecord_error_empty: darf nicht leer sein |
|
28 | 28 | activerecord_error_blank: darf nicht leer sein |
|
29 | 29 | activerecord_error_too_long: ist zu lang |
|
30 | 30 | activerecord_error_too_short: ist zu kurz |
|
31 | 31 | activerecord_error_wrong_length: hat die falsche Länge |
|
32 | 32 | activerecord_error_taken: ist bereits vergeben |
|
33 | 33 | activerecord_error_not_a_number: ist keine Zahl |
|
34 | 34 | activerecord_error_not_a_date: ist kein gültiges Datum |
|
35 | 35 | activerecord_error_greater_than_start_date: muss größer als Anfangsdatum sein |
|
36 | 36 | activerecord_error_not_same_project: gehört nicht zum selben Projekt |
|
37 | 37 | activerecord_error_circular_dependency: Diese Beziehung würde eine zyklische Abhängigkeit erzeugen |
|
38 | 38 | |
|
39 | 39 | general_fmt_age: %d Jahr |
|
40 | 40 | general_fmt_age_plural: %d Jahre |
|
41 | 41 | general_fmt_date: %%d.%%m.%%y |
|
42 | 42 | general_fmt_datetime: %%d.%%m.%%y, %%H:%%M |
|
43 | 43 | general_fmt_datetime_short: %%d.%%m, %%H:%%M |
|
44 | 44 | general_fmt_time: %%H:%%M |
|
45 | 45 | general_text_No: 'Nein' |
|
46 | 46 | general_text_Yes: 'Ja' |
|
47 | 47 | general_text_no: 'nein' |
|
48 | 48 | general_text_yes: 'ja' |
|
49 | 49 | general_lang_name: 'Deutsch' |
|
50 | 50 | general_csv_separator: ';' |
|
51 | 51 | general_csv_decimal_separator: ',' |
|
52 | 52 | general_csv_encoding: ISO-8859-1 |
|
53 | 53 | general_pdf_encoding: ISO-8859-1 |
|
54 | 54 | general_day_names: Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag,Sonntag |
|
55 | 55 | general_first_day_of_week: '1' |
|
56 | 56 | |
|
57 | 57 | notice_account_updated: Konto wurde erfolgreich aktualisiert. |
|
58 | 58 | notice_account_invalid_creditentials: Benutzer oder Kennwort unzulässig |
|
59 | 59 | notice_account_password_updated: Kennwort wurde erfolgreich aktualisiert. |
|
60 | 60 | notice_account_wrong_password: Falsches Kennwort |
|
61 | 61 | notice_account_register_done: Konto wurde erfolgreich angelegt. |
|
62 | 62 | notice_account_unknown_email: Unbekannter Benutzer. |
|
63 | 63 | notice_can_t_change_password: Dieses Konto verwendet eine externe Authentifizierungs-Quelle. Unmöglich, das Kennwort zu ändern. |
|
64 | 64 | notice_account_lost_email_sent: Eine E-Mail mit Anweisungen, ein neues Kennwort zu wählen, wurde Ihnen geschickt. |
|
65 | 65 | notice_account_activated: Ihr Konto ist aktiviert. Sie können sich jetzt anmelden. |
|
66 | 66 | notice_successful_create: Erfolgreich angelegt |
|
67 | 67 | notice_successful_update: Erfolgreich aktualisiert. |
|
68 | 68 | notice_successful_delete: Erfolgreich gelöscht. |
|
69 | 69 | notice_successful_connection: Verbindung erfolgreich. |
|
70 | 70 | notice_file_not_found: Anhang existiert nicht oder ist gelöscht worden. |
|
71 | 71 | notice_locking_conflict: Datum wurde von einem anderen Benutzer geändert. |
|
72 | 72 | notice_not_authorized: Sie sind nicht berechtigt, auf diese Seite zuzugreifen. |
|
73 | 73 | notice_email_sent: Eine E-Mail wurde an %s gesendet. |
|
74 | 74 | notice_email_error: Beim Senden einer E-Mail ist ein Fehler aufgetreten (%s). |
|
75 | 75 | notice_feeds_access_key_reseted: Ihr Atom-Zugriffsschlüssel wurde zurückgesetzt. |
|
76 | 76 | notice_failed_to_save_issues: "%d von %d ausgewählten Tickets konnte(n) nicht gespeichert werden: %s." |
|
77 | 77 | notice_no_issue_selected: "Kein Ticket ausgewählt! Bitte wählen Sie die Tickets, die Sie bearbeiten möchten." |
|
78 | 78 | notice_account_pending: "Ihr Konto wurde erstellt und wartet jetzt auf die Genehmigung des Administrators." |
|
79 | 79 | notice_default_data_loaded: Die Standard-Konfiguration wurde erfolgreich geladen. |
|
80 | 80 | notice_unable_delete_version: Die Version konnte nicht gelöscht werden |
|
81 | 81 | |
|
82 | 82 | error_can_t_load_default_data: "Die Standard-Konfiguration konnte nicht geladen werden: %s" |
|
83 | 83 | error_scm_not_found: Eintrag und/oder Revision existiert nicht im Projektarchiv. |
|
84 | 84 | error_scm_command_failed: "Beim Zugriff auf das Projektarchiv ist ein Fehler aufgetreten: %s" |
|
85 | 85 | error_scm_annotate: "Der Eintrag existiert nicht oder kann nicht annotiert werden." |
|
86 | 86 | error_issue_not_found_in_project: 'Das Ticket wurde nicht gefunden oder gehört nicht zu diesem Projekt.' |
|
87 | 87 | |
|
88 | 88 | mail_subject_lost_password: Ihr %s Kennwort |
|
89 | 89 | mail_body_lost_password: 'Benutzen Sie den folgenden Link, um Ihr Kennwort zu ändern:' |
|
90 | 90 | mail_subject_register: %s Kontoaktivierung |
|
91 | 91 | mail_body_register: 'Um Ihr Konto zu aktivieren, benutzen Sie folgenden Link:' |
|
92 | 92 | mail_body_account_information_external: Sie können sich mit Ihrem Konto "%s" an anmelden. |
|
93 | 93 | mail_body_account_information: Ihre Konto-Informationen |
|
94 | 94 | mail_subject_account_activation_request: Antrag auf %s Kontoaktivierung |
|
95 | 95 | mail_body_account_activation_request: 'Ein neuer Benutzer (%s) hat sich registriert. Sein Konto wartet auf Ihre Genehmigung:' |
|
96 | 96 | mail_subject_reminder: "%d Tickets müssen in den nächsten Tagen abgegeben werden" |
|
97 | 97 | mail_body_reminder: "%d Tickets, die Ihnen zugewiesen sind, müssen in den nächsten %d Tagen abgegeben werden:" |
|
98 | 98 | |
|
99 | 99 | gui_validation_error: 1 Fehler |
|
100 | 100 | gui_validation_error_plural: %d Fehler |
|
101 | 101 | |
|
102 | 102 | field_name: Name |
|
103 | 103 | field_description: Beschreibung |
|
104 | 104 | field_summary: Zusammenfassung |
|
105 | 105 | field_is_required: Erforderlich |
|
106 | 106 | field_firstname: Vorname |
|
107 | 107 | field_lastname: Nachname |
|
108 | 108 | field_mail: E-Mail |
|
109 | 109 | field_filename: Datei |
|
110 | 110 | field_filesize: Größe |
|
111 | 111 | field_downloads: Downloads |
|
112 | 112 | field_author: Autor |
|
113 | 113 | field_created_on: Angelegt |
|
114 | 114 | field_updated_on: Aktualisiert |
|
115 | 115 | field_field_format: Format |
|
116 | 116 | field_is_for_all: Für alle Projekte |
|
117 | 117 | field_possible_values: Mögliche Werte |
|
118 | 118 | field_regexp: Regulärer Ausdruck |
|
119 | 119 | field_min_length: Minimale Länge |
|
120 | 120 | field_max_length: Maximale Länge |
|
121 | 121 | field_value: Wert |
|
122 | 122 | field_category: Kategorie |
|
123 | 123 | field_title: Titel |
|
124 | 124 | field_project: Projekt |
|
125 | 125 | field_issue: Ticket |
|
126 | 126 | field_status: Status |
|
127 | 127 | field_notes: Kommentare |
|
128 | 128 | field_is_closed: Ticket geschlossen |
|
129 | 129 | field_is_default: Standardeinstellung |
|
130 | 130 | field_tracker: Tracker |
|
131 | 131 | field_subject: Thema |
|
132 | 132 | field_due_date: Abgabedatum |
|
133 | 133 | field_assigned_to: Zugewiesen an |
|
134 | 134 | field_priority: Priorität |
|
135 | 135 | field_fixed_version: Zielversion |
|
136 | 136 | field_user: Benutzer |
|
137 | 137 | field_role: Rolle |
|
138 | 138 | field_homepage: Projekt-Homepage |
|
139 | 139 | field_is_public: Öffentlich |
|
140 | 140 | field_parent: Unterprojekt von |
|
141 | 141 | field_is_in_chlog: Im Change-Log anzeigen |
|
142 | 142 | field_is_in_roadmap: In der Roadmap anzeigen |
|
143 | 143 | field_login: Mitgliedsname |
|
144 | 144 | field_mail_notification: Mailbenachrichtigung |
|
145 | 145 | field_admin: Administrator |
|
146 | 146 | field_last_login_on: Letzte Anmeldung |
|
147 | 147 | field_language: Sprache |
|
148 | 148 | field_effective_date: Datum |
|
149 | 149 | field_password: Kennwort |
|
150 | 150 | field_new_password: Neues Kennwort |
|
151 | 151 | field_password_confirmation: Bestätigung |
|
152 | 152 | field_version: Version |
|
153 | 153 | field_type: Typ |
|
154 | 154 | field_host: Host |
|
155 | 155 | field_port: Port |
|
156 | 156 | field_account: Konto |
|
157 | 157 | field_base_dn: Base DN |
|
158 | 158 | field_attr_login: Mitgliedsname-Attribut |
|
159 | 159 | field_attr_firstname: Vorname-Attribut |
|
160 | 160 | field_attr_lastname: Name-Attribut |
|
161 | 161 | field_attr_mail: E-Mail-Attribut |
|
162 | 162 | field_onthefly: On-the-fly-Benutzererstellung |
|
163 | 163 | field_start_date: Beginn |
|
164 | 164 | field_done_ratio: %% erledigt |
|
165 | 165 | field_auth_source: Authentifizierungs-Modus |
|
166 | 166 | field_hide_mail: E-Mail-Adresse nicht anzeigen |
|
167 | 167 | field_comments: Kommentar |
|
168 | 168 | field_url: URL |
|
169 | 169 | field_start_page: Hauptseite |
|
170 | 170 | field_subproject: Subprojekt von |
|
171 | 171 | field_hours: Stunden |
|
172 | 172 | field_activity: Aktivität |
|
173 | 173 | field_spent_on: Datum |
|
174 | 174 | field_identifier: Kennung |
|
175 | 175 | field_is_filter: Als Filter benutzen |
|
176 | 176 | field_issue_to_id: Zugehöriges Ticket |
|
177 | 177 | field_delay: Pufferzeit |
|
178 | 178 | field_assignable: Tickets können dieser Rolle zugewiesen werden |
|
179 | 179 | field_redirect_existing_links: Existierende Links umleiten |
|
180 | 180 | field_estimated_hours: Geschätzter Aufwand |
|
181 | 181 | field_column_names: Spalten |
|
182 | 182 | field_time_zone: Zeitzone |
|
183 | 183 | field_searchable: Durchsuchbar |
|
184 | 184 | field_default_value: Standardwert |
|
185 | 185 | field_comments_sorting: Kommentare anzeigen |
|
186 | 186 | field_parent_title: Übergeordnete Seite |
|
187 | 187 | |
|
188 | 188 | setting_app_title: Applikations-Titel |
|
189 | 189 | setting_app_subtitle: Applikations-Untertitel |
|
190 | 190 | setting_welcome_text: Willkommenstext |
|
191 | 191 | setting_default_language: Default-Sprache |
|
192 | 192 | setting_login_required: Authentisierung erforderlich |
|
193 | 193 | setting_self_registration: Anmeldung ermöglicht |
|
194 | 194 | setting_attachment_max_size: Max. Dateigröße |
|
195 | 195 | setting_issues_export_limit: Max. Anzahl Tickets bei CSV/PDF-Export |
|
196 | 196 | setting_mail_from: E-Mail-Absender |
|
197 | 197 | setting_bcc_recipients: E-Mails als Blindkopie (BCC) senden |
|
198 | 198 | setting_plain_text_mail: Nur reinen Text (kein HTML) senden |
|
199 | 199 | setting_host_name: Hostname |
|
200 | 200 | setting_text_formatting: Textformatierung |
|
201 | 201 | setting_wiki_compression: Wiki-Historie komprimieren |
|
202 | 202 | setting_feeds_limit: Max. Anzahl Einträge pro Atom-Feed |
|
203 | 203 | setting_default_projects_public: Neue Projekte sind standardmäßig öffentlich |
|
204 | 204 | setting_autofetch_changesets: Changesets automatisch abrufen |
|
205 | 205 | setting_sys_api_enabled: Webservice zur Verwaltung der Projektarchive benutzen |
|
206 | 206 | setting_commit_ref_keywords: Schlüsselwörter (Beziehungen) |
|
207 | 207 | setting_commit_fix_keywords: Schlüsselwörter (Status) |
|
208 | 208 | setting_autologin: Automatische Anmeldung |
|
209 | 209 | setting_date_format: Datumsformat |
|
210 | 210 | setting_time_format: Zeitformat |
|
211 | 211 | setting_cross_project_issue_relations: Ticket-Beziehungen zwischen Projekten erlauben |
|
212 | 212 | setting_issue_list_default_columns: Default-Spalten in der Ticket-Auflistung |
|
213 | 213 | setting_repositories_encodings: Kodierungen der Projektarchive |
|
214 | 214 | setting_commit_logs_encoding: Kodierung der Commit-Log-Meldungen |
|
215 | 215 | setting_emails_footer: E-Mail-Fußzeile |
|
216 | 216 | setting_protocol: Protokoll |
|
217 | 217 | setting_per_page_options: Objekte pro Seite |
|
218 | 218 | setting_user_format: Benutzer-Anzeigeformat |
|
219 | 219 | setting_activity_days_default: Anzahl Tage pro Seite der Projekt-Aktivität |
|
220 | 220 | setting_display_subprojects_issues: Tickets von Unterprojekten im Hauptprojekt anzeigen |
|
221 | 221 | setting_enabled_scm: Aktivierte Versionskontrollsysteme |
|
222 | 222 | setting_mail_handler_api_enabled: Abruf eingehender E-Mails aktivieren |
|
223 | 223 | setting_mail_handler_api_key: API-Schlüssel |
|
224 | 224 | setting_sequential_project_identifiers: Fortlaufende Projektkennungen generieren |
|
225 | 225 | setting_gravatar_enabled: Gravatar Benutzerbilder benutzen |
|
226 | 226 | |
|
227 | 227 | permission_edit_project: Projekt bearbeiten |
|
228 | 228 | permission_select_project_modules: Projektmodule auswählen |
|
229 | 229 | permission_manage_members: Mitglieder verwalten |
|
230 | 230 | permission_manage_versions: Versionen verwalten |
|
231 | 231 | permission_manage_categories: Ticket-Kategorien verwalten |
|
232 | 232 | permission_add_issues: Tickets hinzufügen |
|
233 | 233 | permission_edit_issues: Tickets bearbeiten |
|
234 | 234 | permission_manage_issue_relations: Ticket-Beziehungen verwalten |
|
235 | 235 | permission_add_issue_notes: Kommentare hinzufügen |
|
236 | 236 | permission_edit_issue_notes: Kommentare bearbeiten |
|
237 | 237 | permission_edit_own_issue_notes: Eigene Kommentare bearbeiten |
|
238 | 238 | permission_move_issues: Tickets verschieben |
|
239 | 239 | permission_delete_issues: Tickets löschen |
|
240 | 240 | permission_manage_public_queries: Öffentliche Filter verwalten |
|
241 | 241 | permission_save_queries: Filter speichern |
|
242 | 242 | permission_view_gantt: Gantt-Diagramm ansehen |
|
243 | 243 | permission_view_calendar: Kalender ansehen |
|
244 | 244 | permission_view_issue_watchers: Liste der Beobachter ansehen |
|
245 | 245 | permission_add_issue_watchers: Beobachter hinzufügen |
|
246 | 246 | permission_log_time: Aufwände buchen |
|
247 | 247 | permission_view_time_entries: Gebuchte Aufwände ansehen |
|
248 | 248 | permission_edit_time_entries: Gebuchte Aufwände bearbeiten |
|
249 | 249 | permission_edit_own_time_entries: Selbst gebuchte Aufwände bearbeiten |
|
250 | 250 | permission_manage_news: News verwalten |
|
251 | 251 | permission_comment_news: News kommentieren |
|
252 | 252 | permission_manage_documents: Dokumente verwalten |
|
253 | 253 | permission_view_documents: Dokumente ansehen |
|
254 | 254 | permission_manage_files: Dateien verwalten |
|
255 | 255 | permission_view_files: Dateien ansehen |
|
256 | 256 | permission_manage_wiki: Wiki verwalten |
|
257 | 257 | permission_rename_wiki_pages: Wiki-Seiten umbenennen |
|
258 | 258 | permission_delete_wiki_pages: Wiki-Seiten löschen |
|
259 | 259 | permission_view_wiki_pages: Wiki ansehen |
|
260 | 260 | permission_view_wiki_edits: Wiki-Versionsgeschichte ansehen |
|
261 | 261 | permission_edit_wiki_pages: Wiki-Seiten bearbeiten |
|
262 | 262 | permission_delete_wiki_pages_attachments: Anhänge löschen |
|
263 | 263 | permission_protect_wiki_pages: Wiki-Seiten schützen |
|
264 | 264 | permission_manage_repository: Projektarchiv verwalten |
|
265 | 265 | permission_browse_repository: Projektarchiv ansehen |
|
266 | 266 | permission_view_changesets: Changesets ansehen |
|
267 | 267 | permission_commit_access: Commit-Zugriff (über WebDAV) |
|
268 | 268 | permission_manage_boards: Foren verwalten |
|
269 | 269 | permission_view_messages: Forums-Beiträge ansehen |
|
270 | 270 | permission_add_messages: Forums-Beiträge hinzufügen |
|
271 | 271 | permission_edit_messages: Forums-Beiträge bearbeiten |
|
272 | 272 | permission_edit_own_messages: Eigene Forums-Beiträge bearbeiten |
|
273 | 273 | permission_delete_messages: Forums-Beiträge löschen |
|
274 | 274 | permission_delete_own_messages: Eigene Forums-Beiträge löschen |
|
275 | 275 | |
|
276 | 276 | project_module_issue_tracking: Ticket-Verfolgung |
|
277 | 277 | project_module_time_tracking: Zeiterfassung |
|
278 | 278 | project_module_news: News |
|
279 | 279 | project_module_documents: Dokumente |
|
280 | 280 | project_module_files: Dateien |
|
281 | 281 | project_module_wiki: Wiki |
|
282 | 282 | project_module_repository: Projektarchiv |
|
283 | 283 | project_module_boards: Foren |
|
284 | 284 | |
|
285 | 285 | label_user: Benutzer |
|
286 | 286 | label_user_plural: Benutzer |
|
287 | 287 | label_user_new: Neuer Benutzer |
|
288 | 288 | label_project: Projekt |
|
289 | 289 | label_project_new: Neues Projekt |
|
290 | 290 | label_project_plural: Projekte |
|
291 | 291 | label_project_all: Alle Projekte |
|
292 | 292 | label_project_latest: Neueste Projekte |
|
293 | 293 | label_issue: Ticket |
|
294 | 294 | label_issue_new: Neues Ticket |
|
295 | 295 | label_issue_plural: Tickets |
|
296 | 296 | label_issue_view_all: Alle Tickets anzeigen |
|
297 | 297 | label_issues_by: Tickets von %s |
|
298 | 298 | label_issue_added: Ticket hinzugefügt |
|
299 | 299 | label_issue_updated: Ticket aktualisiert |
|
300 | 300 | label_document: Dokument |
|
301 | 301 | label_document_new: Neues Dokument |
|
302 | 302 | label_document_plural: Dokumente |
|
303 | 303 | label_document_added: Dokument hinzugefügt |
|
304 | 304 | label_role: Rolle |
|
305 | 305 | label_role_plural: Rollen |
|
306 | 306 | label_role_new: Neue Rolle |
|
307 | 307 | label_role_and_permissions: Rollen und Rechte |
|
308 | 308 | label_member: Mitglied |
|
309 | 309 | label_member_new: Neues Mitglied |
|
310 | 310 | label_member_plural: Mitglieder |
|
311 | 311 | label_tracker: Tracker |
|
312 | 312 | label_tracker_plural: Tracker |
|
313 | 313 | label_tracker_new: Neuer Tracker |
|
314 | 314 | label_workflow: Workflow |
|
315 | 315 | label_issue_status: Ticket-Status |
|
316 | 316 | label_issue_status_plural: Ticket-Status |
|
317 | 317 | label_issue_status_new: Neuer Status |
|
318 | 318 | label_issue_category: Ticket-Kategorie |
|
319 | 319 | label_issue_category_plural: Ticket-Kategorien |
|
320 | 320 | label_issue_category_new: Neue Kategorie |
|
321 | 321 | label_custom_field: Benutzerdefiniertes Feld |
|
322 | 322 | label_custom_field_plural: Benutzerdefinierte Felder |
|
323 | 323 | label_custom_field_new: Neues Feld |
|
324 | 324 | label_enumerations: Aufzählungen |
|
325 | 325 | label_enumeration_new: Neuer Wert |
|
326 | 326 | label_information: Information |
|
327 | 327 | label_information_plural: Informationen |
|
328 | 328 | label_please_login: Anmelden |
|
329 | 329 | label_register: Registrieren |
|
330 | 330 | label_password_lost: Kennwort vergessen |
|
331 | 331 | label_home: Hauptseite |
|
332 | 332 | label_my_page: Meine Seite |
|
333 | 333 | label_my_account: Mein Konto |
|
334 | 334 | label_my_projects: Meine Projekte |
|
335 | 335 | label_administration: Administration |
|
336 | 336 | label_login: Anmelden |
|
337 | 337 | label_logout: Abmelden |
|
338 | 338 | label_help: Hilfe |
|
339 | 339 | label_reported_issues: Gemeldete Tickets |
|
340 | 340 | label_assigned_to_me_issues: Mir zugewiesen |
|
341 | 341 | label_last_login: Letzte Anmeldung |
|
342 | 342 | label_last_updates: zuletzt aktualisiert |
|
343 | 343 | label_last_updates_plural: %d zuletzt aktualisierten |
|
344 | 344 | label_registered_on: Angemeldet am |
|
345 | 345 | label_activity: Aktivität |
|
346 | 346 | label_overall_activity: Aktivität aller Projekte anzeigen |
|
347 | label_user_activity: "Aktivität von %s" | |
|
347 | 348 | label_new: Neu |
|
348 | 349 | label_logged_as: Angemeldet als |
|
349 | 350 | label_environment: Environment |
|
350 | 351 | label_authentication: Authentifizierung |
|
351 | 352 | label_auth_source: Authentifizierungs-Modus |
|
352 | 353 | label_auth_source_new: Neuer Authentifizierungs-Modus |
|
353 | 354 | label_auth_source_plural: Authentifizierungs-Arten |
|
354 | 355 | label_subproject_plural: Unterprojekte |
|
355 | 356 | label_and_its_subprojects: %s und dessen Unterprojekte |
|
356 | 357 | label_min_max_length: Länge (Min. - Max.) |
|
357 | 358 | label_list: Liste |
|
358 | 359 | label_date: Datum |
|
359 | 360 | label_integer: Zahl |
|
360 | 361 | label_float: Fließkommazahl |
|
361 | 362 | label_boolean: Boolean |
|
362 | 363 | label_string: Text |
|
363 | 364 | label_text: Langer Text |
|
364 | 365 | label_attribute: Attribut |
|
365 | 366 | label_attribute_plural: Attribute |
|
366 | 367 | label_download: %d Download |
|
367 | 368 | label_download_plural: %d Downloads |
|
368 | 369 | label_no_data: Nichts anzuzeigen |
|
369 | 370 | label_change_status: Statuswechsel |
|
370 | 371 | label_history: Historie |
|
371 | 372 | label_attachment: Datei |
|
372 | 373 | label_attachment_new: Neue Datei |
|
373 | 374 | label_attachment_delete: Anhang löschen |
|
374 | 375 | label_attachment_plural: Dateien |
|
375 | 376 | label_file_added: Datei hinzugefügt |
|
376 | 377 | label_report: Bericht |
|
377 | 378 | label_report_plural: Berichte |
|
378 | 379 | label_news: News |
|
379 | 380 | label_news_new: News hinzufügen |
|
380 | 381 | label_news_plural: News |
|
381 | 382 | label_news_latest: Letzte News |
|
382 | 383 | label_news_view_all: Alle News anzeigen |
|
383 | 384 | label_news_added: News hinzugefügt |
|
384 | 385 | label_change_log: Change-Log |
|
385 | 386 | label_settings: Konfiguration |
|
386 | 387 | label_overview: Übersicht |
|
387 | 388 | label_version: Version |
|
388 | 389 | label_version_new: Neue Version |
|
389 | 390 | label_version_plural: Versionen |
|
390 | 391 | label_confirmation: Bestätigung |
|
391 | 392 | label_export_to: "Auch abrufbar als:" |
|
392 | 393 | label_read: Lesen... |
|
393 | 394 | label_public_projects: Öffentliche Projekte |
|
394 | 395 | label_open_issues: offen |
|
395 | 396 | label_open_issues_plural: offen |
|
396 | 397 | label_closed_issues: geschlossen |
|
397 | 398 | label_closed_issues_plural: geschlossen |
|
398 | 399 | label_total: Gesamtzahl |
|
399 | 400 | label_permissions: Berechtigungen |
|
400 | 401 | label_current_status: Gegenwärtiger Status |
|
401 | 402 | label_new_statuses_allowed: Neue Berechtigungen |
|
402 | 403 | label_all: alle |
|
403 | 404 | label_none: kein |
|
404 | 405 | label_nobody: Niemand |
|
405 | 406 | label_next: Weiter |
|
406 | 407 | label_previous: Zurück |
|
407 | 408 | label_used_by: Benutzt von |
|
408 | 409 | label_details: Details |
|
409 | 410 | label_add_note: Kommentar hinzufügen |
|
410 | 411 | label_per_page: Pro Seite |
|
411 | 412 | label_calendar: Kalender |
|
412 | 413 | label_months_from: Monate ab |
|
413 | 414 | label_gantt: Gantt-Diagramm |
|
414 | 415 | label_internal: Intern |
|
415 | 416 | label_last_changes: %d letzte Änderungen |
|
416 | 417 | label_change_view_all: Alle Änderungen anzeigen |
|
417 | 418 | label_personalize_page: Diese Seite anpassen |
|
418 | 419 | label_comment: Kommentar |
|
419 | 420 | label_comment_plural: Kommentare |
|
420 | 421 | label_comment_add: Kommentar hinzufügen |
|
421 | 422 | label_comment_added: Kommentar hinzugefügt |
|
422 | 423 | label_comment_delete: Kommentar löschen |
|
423 | 424 | label_query: Benutzerdefinierte Abfrage |
|
424 | 425 | label_query_plural: Benutzerdefinierte Berichte |
|
425 | 426 | label_query_new: Neuer Bericht |
|
426 | 427 | label_filter_add: Filter hinzufügen |
|
427 | 428 | label_filter_plural: Filter |
|
428 | 429 | label_equals: ist |
|
429 | 430 | label_not_equals: ist nicht |
|
430 | 431 | label_in_less_than: in weniger als |
|
431 | 432 | label_in_more_than: in mehr als |
|
432 | 433 | label_in: an |
|
433 | 434 | label_today: heute |
|
434 | 435 | label_all_time: gesamter Zeitraum |
|
435 | 436 | label_yesterday: gestern |
|
436 | 437 | label_this_week: aktuelle Woche |
|
437 | 438 | label_last_week: vorige Woche |
|
438 | 439 | label_last_n_days: die letzten %d Tage |
|
439 | 440 | label_this_month: aktueller Monat |
|
440 | 441 | label_last_month: voriger Monat |
|
441 | 442 | label_this_year: aktuelles Jahr |
|
442 | 443 | label_date_range: Zeitraum |
|
443 | 444 | label_less_than_ago: vor weniger als |
|
444 | 445 | label_more_than_ago: vor mehr als |
|
445 | 446 | label_ago: vor |
|
446 | 447 | label_contains: enthält |
|
447 | 448 | label_not_contains: enthält nicht |
|
448 | 449 | label_day_plural: Tage |
|
449 | 450 | label_repository: Projektarchiv |
|
450 | 451 | label_repository_plural: Projektarchive |
|
451 | 452 | label_browse: Codebrowser |
|
452 | 453 | label_modification: %d Änderung |
|
453 | 454 | label_modification_plural: %d Änderungen |
|
454 | 455 | label_revision: Revision |
|
455 | 456 | label_revision_plural: Revisionen |
|
456 | 457 | label_associated_revisions: Zugehörige Revisionen |
|
457 | 458 | label_added: hinzugefügt |
|
458 | 459 | label_modified: geändert |
|
459 | 460 | label_copied: kopiert |
|
460 | 461 | label_renamed: umbenannt |
|
461 | 462 | label_deleted: gelöscht |
|
462 | 463 | label_latest_revision: Aktuellste Revision |
|
463 | 464 | label_latest_revision_plural: Aktuellste Revisionen |
|
464 | 465 | label_view_revisions: Revisionen anzeigen |
|
465 | 466 | label_max_size: Maximale Größe |
|
466 | 467 | label_on: von |
|
467 | 468 | label_sort_highest: An den Anfang |
|
468 | 469 | label_sort_higher: Eins höher |
|
469 | 470 | label_sort_lower: Eins tiefer |
|
470 | 471 | label_sort_lowest: Ans Ende |
|
471 | 472 | label_roadmap: Roadmap |
|
472 | 473 | label_roadmap_due_in: Fällig in %s |
|
473 | 474 | label_roadmap_overdue: %s verspätet |
|
474 | 475 | label_roadmap_no_issues: Keine Tickets für diese Version |
|
475 | 476 | label_search: Suche |
|
476 | 477 | label_result_plural: Resultate |
|
477 | 478 | label_all_words: Alle Wörter |
|
478 | 479 | label_wiki: Wiki |
|
479 | 480 | label_wiki_edit: Wiki-Bearbeitung |
|
480 | 481 | label_wiki_edit_plural: Wiki-Bearbeitungen |
|
481 | 482 | label_wiki_page: Wiki-Seite |
|
482 | 483 | label_wiki_page_plural: Wiki-Seiten |
|
483 | 484 | label_index_by_title: Seiten nach Titel sortiert |
|
484 | 485 | label_index_by_date: Seiten nach Datum sortiert |
|
485 | 486 | label_current_version: Gegenwärtige Version |
|
486 | 487 | label_preview: Vorschau |
|
487 | 488 | label_feed_plural: Feeds |
|
488 | 489 | label_changes_details: Details aller Änderungen |
|
489 | 490 | label_issue_tracking: Tickets |
|
490 | 491 | label_spent_time: Aufgewendete Zeit |
|
491 | 492 | label_f_hour: %.2f Stunde |
|
492 | 493 | label_f_hour_plural: %.2f Stunden |
|
493 | 494 | label_time_tracking: Zeiterfassung |
|
494 | 495 | label_change_plural: Änderungen |
|
495 | 496 | label_statistics: Statistiken |
|
496 | 497 | label_commits_per_month: Übertragungen pro Monat |
|
497 | 498 | label_commits_per_author: Übertragungen pro Autor |
|
498 | 499 | label_view_diff: Unterschiede anzeigen |
|
499 | 500 | label_diff_inline: inline |
|
500 | 501 | label_diff_side_by_side: nebeneinander |
|
501 | 502 | label_options: Optionen |
|
502 | 503 | label_copy_workflow_from: Workflow kopieren von |
|
503 | 504 | label_permissions_report: Berechtigungsübersicht |
|
504 | 505 | label_watched_issues: Beobachtete Tickets |
|
505 | 506 | label_related_issues: Zugehörige Tickets |
|
506 | 507 | label_applied_status: Zugewiesener Status |
|
507 | 508 | label_loading: Lade... |
|
508 | 509 | label_relation_new: Neue Beziehung |
|
509 | 510 | label_relation_delete: Beziehung löschen |
|
510 | 511 | label_relates_to: Beziehung mit |
|
511 | 512 | label_duplicates: Duplikat von |
|
512 | 513 | label_duplicated_by: Dupliziert durch |
|
513 | 514 | label_blocks: Blockiert |
|
514 | 515 | label_blocked_by: Blockiert durch |
|
515 | 516 | label_precedes: Vorgänger von |
|
516 | 517 | label_follows: folgt |
|
517 | 518 | label_end_to_start: Ende - Anfang |
|
518 | 519 | label_end_to_end: Ende - Ende |
|
519 | 520 | label_start_to_start: Anfang - Anfang |
|
520 | 521 | label_start_to_end: Anfang - Ende |
|
521 | 522 | label_stay_logged_in: Angemeldet bleiben |
|
522 | 523 | label_disabled: gesperrt |
|
523 | 524 | label_show_completed_versions: Abgeschlossene Versionen anzeigen |
|
524 | 525 | label_me: ich |
|
525 | 526 | label_board: Forum |
|
526 | 527 | label_board_new: Neues Forum |
|
527 | 528 | label_board_plural: Foren |
|
528 | 529 | label_topic_plural: Themen |
|
529 | 530 | label_message_plural: Beiträge |
|
530 | 531 | label_message_last: Letzter Beitrag |
|
531 | 532 | label_message_new: Neues Thema |
|
532 | 533 | label_message_posted: Beitrag hinzugefügt |
|
533 | 534 | label_reply_plural: Antworten |
|
534 | 535 | label_send_information: Sende Kontoinformationen zum Benutzer |
|
535 | 536 | label_year: Jahr |
|
536 | 537 | label_month: Monat |
|
537 | 538 | label_week: Woche |
|
538 | 539 | label_date_from: Von |
|
539 | 540 | label_date_to: Bis |
|
540 | 541 | label_language_based: Sprachabhängig |
|
541 | 542 | label_sort_by: Sortiert nach %s |
|
542 | 543 | label_send_test_email: Test-E-Mail senden |
|
543 | 544 | label_feeds_access_key_created_on: Atom-Zugriffsschlüssel vor %s erstellt |
|
544 | 545 | label_module_plural: Module |
|
545 | 546 | label_added_time_by: Von %s vor %s hinzugefügt |
|
547 | label_updated_time_by: Von %s vor %s aktualisiert | |
|
546 | 548 | label_updated_time: Vor %s aktualisiert |
|
547 | 549 | label_jump_to_a_project: Zu einem Projekt springen... |
|
548 | 550 | label_file_plural: Dateien |
|
549 | 551 | label_changeset_plural: Changesets |
|
550 | 552 | label_default_columns: Default-Spalten |
|
551 | 553 | label_no_change_option: (Keine Änderung) |
|
552 | 554 | label_bulk_edit_selected_issues: Alle ausgewählten Tickets bearbeiten |
|
553 | 555 | label_theme: Stil |
|
554 | 556 | label_default: Default |
|
555 | 557 | label_search_titles_only: Nur Titel durchsuchen |
|
556 | 558 | label_user_mail_option_all: "Für alle Ereignisse in all meinen Projekten" |
|
557 | 559 | label_user_mail_option_selected: "Für alle Ereignisse in den ausgewählten Projekten..." |
|
558 | 560 | label_user_mail_option_none: "Nur für Dinge, die ich beobachte oder an denen ich beteiligt bin" |
|
559 | 561 | label_user_mail_no_self_notified: "Ich möchte nicht über Änderungen benachrichtigt werden, die ich selbst durchführe." |
|
560 | 562 | label_registration_activation_by_email: Kontoaktivierung durch E-Mail |
|
561 | 563 | label_registration_manual_activation: Manuelle Kontoaktivierung |
|
562 | 564 | label_registration_automatic_activation: Automatische Kontoaktivierung |
|
563 | 565 | label_display_per_page: 'Pro Seite: %s' |
|
564 | 566 | label_age: Geändert vor |
|
565 | 567 | label_change_properties: Eigenschaften ändern |
|
566 | 568 | label_general: Allgemein |
|
567 | 569 | label_more: Mehr |
|
568 | 570 | label_scm: Versionskontrollsystem |
|
569 | 571 | label_plugins: Plugins |
|
570 | 572 | label_ldap_authentication: LDAP-Authentifizierung |
|
571 | 573 | label_downloads_abbr: D/L |
|
572 | 574 | label_optional_description: Beschreibung (optional) |
|
573 | 575 | label_add_another_file: Eine weitere Datei hinzufügen |
|
574 | 576 | label_preferences: Präferenzen |
|
575 | 577 | label_chronological_order: in zeitlicher Reihenfolge |
|
576 | 578 | label_reverse_chronological_order: in umgekehrter zeitlicher Reihenfolge |
|
577 | 579 | label_planning: Terminplanung |
|
578 | 580 | label_incoming_emails: Eingehende E-Mails |
|
579 | 581 | label_generate_key: Generieren |
|
580 | 582 | label_issue_watchers: Beobachter |
|
581 | 583 | label_example: Beispiel |
|
582 | 584 | |
|
583 | 585 | button_login: Anmelden |
|
584 | 586 | button_submit: OK |
|
585 | 587 | button_save: Speichern |
|
586 | 588 | button_check_all: Alles auswählen |
|
587 | 589 | button_uncheck_all: Alles abwählen |
|
588 | 590 | button_delete: Löschen |
|
589 | 591 | button_create: Anlegen |
|
590 | 592 | button_test: Testen |
|
591 | 593 | button_edit: Bearbeiten |
|
592 | 594 | button_add: Hinzufügen |
|
593 | 595 | button_change: Wechseln |
|
594 | 596 | button_apply: Anwenden |
|
595 | 597 | button_clear: Zurücksetzen |
|
596 | 598 | button_lock: Sperren |
|
597 | 599 | button_unlock: Entsperren |
|
598 | 600 | button_download: Download |
|
599 | 601 | button_list: Liste |
|
600 | 602 | button_view: Anzeigen |
|
601 | 603 | button_move: Verschieben |
|
602 | 604 | button_back: Zurück |
|
603 | 605 | button_cancel: Abbrechen |
|
604 | 606 | button_activate: Aktivieren |
|
605 | 607 | button_sort: Sortieren |
|
606 | 608 | button_log_time: Aufwand buchen |
|
607 | 609 | button_rollback: Auf diese Version zurücksetzen |
|
608 | 610 | button_watch: Beobachten |
|
609 | 611 | button_unwatch: Nicht beobachten |
|
610 | 612 | button_reply: Antworten |
|
611 | 613 | button_archive: Archivieren |
|
612 | 614 | button_unarchive: Entarchivieren |
|
613 | 615 | button_reset: Zurücksetzen |
|
614 | 616 | button_rename: Umbenennen |
|
615 | 617 | button_change_password: Kennwort ändern |
|
616 | 618 | button_copy: Kopieren |
|
617 | 619 | button_annotate: Annotieren |
|
618 | 620 | button_update: Aktualisieren |
|
619 | 621 | button_configure: Konfigurieren |
|
620 | 622 | button_quote: Zitieren |
|
621 | 623 | |
|
622 | 624 | status_active: aktiv |
|
623 | 625 | status_registered: angemeldet |
|
624 | 626 | status_locked: gesperrt |
|
625 | 627 | |
|
626 | 628 | text_select_mail_notifications: Bitte wählen Sie die Aktionen aus, für die eine Mailbenachrichtigung gesendet werden soll |
|
627 | 629 | text_regexp_info: z. B. ^[A-Z0-9]+$ |
|
628 | 630 | text_min_max_length_info: 0 heißt keine Beschränkung |
|
629 | 631 | text_project_destroy_confirmation: Sind Sie sicher, dass sie das Projekt löschen wollen? |
|
630 | 632 | text_subprojects_destroy_warning: 'Dessen Unterprojekte (%s) werden ebenfalls gelöscht.' |
|
631 | 633 | text_workflow_edit: Workflow zum Bearbeiten auswählen |
|
632 | 634 | text_are_you_sure: Sind Sie sicher? |
|
633 | 635 | text_journal_changed: geändert von %s zu %s |
|
634 | 636 | text_journal_set_to: gestellt zu %s |
|
635 | 637 | text_journal_deleted: gelöscht |
|
636 | 638 | text_tip_task_begin_day: Aufgabe, die an diesem Tag beginnt |
|
637 | 639 | text_tip_task_end_day: Aufgabe, die an diesem Tag endet |
|
638 | 640 | text_tip_task_begin_end_day: Aufgabe, die an diesem Tag beginnt und endet |
|
639 | 641 | text_project_identifier_info: 'Kleinbuchstaben (a-z), Ziffern und Bindestriche erlaubt.<br />Einmal gespeichert, kann die Kennung nicht mehr geändert werden.' |
|
640 | 642 | text_caracters_maximum: Max. %d Zeichen. |
|
641 | 643 | text_caracters_minimum: Muss mindestens %d Zeichen lang sein. |
|
642 | 644 | text_length_between: Länge zwischen %d und %d Zeichen. |
|
643 | 645 | text_tracker_no_workflow: Kein Workflow für diesen Tracker definiert. |
|
644 | 646 | text_unallowed_characters: Nicht erlaubte Zeichen |
|
645 | 647 | text_comma_separated: Mehrere Werte erlaubt (durch Komma getrennt). |
|
646 | 648 | text_issues_ref_in_commit_messages: Ticket-Beziehungen und -Status in Commit-Log-Meldungen |
|
647 | 649 | text_issue_added: Ticket %s wurde erstellt by %s. |
|
648 | 650 | text_issue_updated: Ticket %s wurde aktualisiert by %s. |
|
649 | 651 | text_wiki_destroy_confirmation: Sind Sie sicher, dass Sie dieses Wiki mit sämtlichem Inhalt löschen möchten? |
|
650 | 652 | text_issue_category_destroy_question: Einige Tickets (%d) sind dieser Kategorie zugeodnet. Was möchten Sie tun? |
|
651 | 653 | text_issue_category_destroy_assignments: Kategorie-Zuordnung entfernen |
|
652 | 654 | text_issue_category_reassign_to: Tickets dieser Kategorie zuordnen |
|
653 | 655 | text_user_mail_option: "Für nicht ausgewählte Projekte werden Sie nur Benachrichtigungen für Dinge erhalten, die Sie beobachten oder an denen Sie beteiligt sind (z. B. Tickets, deren Autor Sie sind oder die Ihnen zugewiesen sind)." |
|
654 | 656 | text_no_configuration_data: "Rollen, Tracker, Ticket-Status und Workflows wurden noch nicht konfiguriert.\nEs ist sehr zu empfehlen, die Standard-Konfiguration zu laden. Sobald sie geladen ist, können Sie sie abändern." |
|
655 | 657 | text_load_default_configuration: Standard-Konfiguration laden |
|
656 | 658 | text_status_changed_by_changeset: Status geändert durch Changeset %s. |
|
657 | 659 | text_issues_destroy_confirmation: 'Sind Sie sicher, dass Sie die ausgewählten Tickets löschen möchten?' |
|
658 | 660 | text_select_project_modules: 'Bitte wählen Sie die Module aus, die in diesem Projekt aktiviert sein sollen:' |
|
659 | 661 | text_default_administrator_account_changed: Administrator-Kennwort geändert |
|
660 | 662 | text_file_repository_writable: Verzeichnis für Dateien beschreibbar |
|
661 | 663 | text_rmagick_available: RMagick verfügbar (optional) |
|
662 | 664 | text_destroy_time_entries_question: Es wurden bereits %.02f Stunden auf dieses Ticket gebucht. Was soll mit den Aufwänden geschehen? |
|
663 | 665 | text_destroy_time_entries: Gebuchte Aufwände löschen |
|
664 | 666 | text_assign_time_entries_to_project: Gebuchte Aufwände dem Projekt zuweisen |
|
665 | 667 | text_reassign_time_entries: 'Gebuchte Aufwände diesem Ticket zuweisen:' |
|
666 | 668 | text_user_wrote: '%s schrieb:' |
|
667 | 669 | text_enumeration_destroy_question: '%d Objekte sind diesem Wert zugeordnet.' |
|
668 | 670 | text_enumeration_category_reassign_to: 'Die Objekte stattdessen diesem Wert zuordnen:' |
|
669 | 671 | text_email_delivery_not_configured: "Der SMTP-Server ist nicht konfiguriert und Mailbenachrichtigungen sind ausgeschaltet.\nNehmen Sie die Einstellungen für Ihren SMTP-Server in config/email.yml vor und starten Sie die Applikation neu." |
|
670 | 672 | text_repository_usernames_mapping: "Bitte legen Sie die Zuordnung der Redmine-Benutzer zu den Benutzernamen der Commit-Log-Meldungen des Projektarchivs fest.\nBenutzer mit identischen Redmine- und Projektarchiv-Benutzernamen oder -E-Mail-Adressen werden automatisch zugeordnet." |
|
671 | 673 | |
|
672 | 674 | default_role_manager: Manager |
|
673 | 675 | default_role_developper: Entwickler |
|
674 | 676 | default_role_reporter: Reporter |
|
675 | 677 | default_tracker_bug: Fehler |
|
676 | 678 | default_tracker_feature: Feature |
|
677 | 679 | default_tracker_support: Unterstützung |
|
678 | 680 | default_issue_status_new: Neu |
|
679 | 681 | default_issue_status_assigned: Zugewiesen |
|
680 | 682 | default_issue_status_resolved: Gelöst |
|
681 | 683 | default_issue_status_feedback: Feedback |
|
682 | 684 | default_issue_status_closed: Erledigt |
|
683 | 685 | default_issue_status_rejected: Abgewiesen |
|
684 | 686 | default_doc_category_user: Benutzerdokumentation |
|
685 | 687 | default_doc_category_tech: Technische Dokumentation |
|
686 | 688 | default_priority_low: Niedrig |
|
687 | 689 | default_priority_normal: Normal |
|
688 | 690 | default_priority_high: Hoch |
|
689 | 691 | default_priority_urgent: Dringend |
|
690 | 692 | default_priority_immediate: Sofort |
|
691 | 693 | default_activity_design: Design |
|
692 | 694 | default_activity_development: Entwicklung |
|
693 | 695 | |
|
694 | 696 | enumeration_issue_priorities: Ticket-Prioritäten |
|
695 | 697 | enumeration_doc_categories: Dokumentenkategorien |
|
696 | 698 | enumeration_activities: Aktivitäten (Zeiterfassung) |
|
697 | label_user_activity: "%s's activity" | |
|
698 | label_updated_time_by: Updated by %s %s ago | |
|
699 | 699 | text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' |
|
700 | 700 | setting_diff_max_lines_displayed: Max number of diff lines displayed |
@@ -1,683 +1,683 | |||
|
1 | 1 | _gloc_rule_default: '|n| n==1 ? "" : "_plural" ' |
|
2 | 2 | actionview_datehelper_select_day_prefix: |
|
3 | 3 | actionview_datehelper_select_month_names: Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Septiembre,Octubre,Noviembre,Diciembre |
|
4 | 4 | actionview_datehelper_select_month_names_abbr: Ene,Feb,Mar,Abr,Mayo,Jun,Jul,Ago,Sep,Oct,Nov,Dic |
|
5 | 5 | actionview_datehelper_select_month_prefix: |
|
6 | 6 | actionview_datehelper_select_year_prefix: |
|
7 | 7 | actionview_datehelper_time_in_words_day: 1 día |
|
8 | 8 | actionview_datehelper_time_in_words_day_plural: %d días |
|
9 | 9 | actionview_datehelper_time_in_words_hour_about: una hora aproximadamente |
|
10 | 10 | actionview_datehelper_time_in_words_hour_about_plural: aproximadamente %d horas |
|
11 | 11 | actionview_datehelper_time_in_words_hour_about_single: una hora aproximadamente |
|
12 | 12 | actionview_datehelper_time_in_words_minute: 1 minuto |
|
13 | 13 | actionview_datehelper_time_in_words_minute_half: medio minuto |
|
14 | 14 | actionview_datehelper_time_in_words_minute_less_than: menos de un minuto |
|
15 | 15 | actionview_datehelper_time_in_words_minute_plural: %d minutos |
|
16 | 16 | actionview_datehelper_time_in_words_minute_single: 1 minuto |
|
17 | 17 | actionview_datehelper_time_in_words_second_less_than: menos de un segundo |
|
18 | 18 | actionview_datehelper_time_in_words_second_less_than_plural: menos de %d segundos |
|
19 | 19 | actionview_instancetag_blank_option: Por favor seleccione |
|
20 | 20 | activerecord_error_accepted: debe ser aceptado |
|
21 | 21 | activerecord_error_blank: no puede estar en blanco |
|
22 |
activerecord_error_circular_dependency: Esta relación podría crear una dependencia |
|
|
22 | activerecord_error_circular_dependency: Esta relación podría crear una dependencia circular | |
|
23 | 23 | activerecord_error_confirmation: la confirmación no coincide |
|
24 | 24 | activerecord_error_empty: no puede estar vacío |
|
25 | 25 | activerecord_error_exclusion: está reservado |
|
26 |
activerecord_error_greater_than_start_date: debe ser la fecha |
|
|
26 | activerecord_error_greater_than_start_date: debe ser posterior a la fecha de comienzo | |
|
27 | 27 | activerecord_error_inclusion: no está incluído en la lista |
|
28 | 28 | activerecord_error_invalid: no es válido |
|
29 | 29 | activerecord_error_not_a_date: no es una fecha válida |
|
30 | 30 | activerecord_error_not_a_number: no es un número |
|
31 | 31 | activerecord_error_not_same_project: no pertenece al mismo proyecto |
|
32 | 32 | activerecord_error_taken: ya está siendo usado |
|
33 | 33 | activerecord_error_too_long: es demasiado largo |
|
34 | 34 | activerecord_error_too_short: es demasiado corto |
|
35 | 35 | activerecord_error_wrong_length: la longitud es incorrecta |
|
36 | 36 | button_activate: Activar |
|
37 | 37 | button_add: Añadir |
|
38 | 38 | button_annotate: Anotar |
|
39 | 39 | button_apply: Aceptar |
|
40 | 40 | button_archive: Archivar |
|
41 | 41 | button_back: Atrás |
|
42 | 42 | button_cancel: Cancelar |
|
43 | 43 | button_change: Cambiar |
|
44 | 44 | button_change_password: Cambiar contraseña |
|
45 | 45 | button_check_all: Seleccionar todo |
|
46 | 46 | button_clear: Anular |
|
47 | 47 | button_configure: Configurar |
|
48 | 48 | button_copy: Copiar |
|
49 | 49 | button_create: Crear |
|
50 | 50 | button_delete: Borrar |
|
51 | 51 | button_download: Descargar |
|
52 | 52 | button_edit: Modificar |
|
53 | 53 | button_list: Listar |
|
54 | 54 | button_lock: Bloquear |
|
55 | 55 | button_log_time: Tiempo dedicado |
|
56 | 56 | button_login: Conexión |
|
57 | 57 | button_move: Mover |
|
58 | 58 | button_quote: Citar |
|
59 | 59 | button_rename: Renombrar |
|
60 | 60 | button_reply: Responder |
|
61 | 61 | button_reset: Reestablecer |
|
62 | 62 | button_rollback: Volver a esta versión |
|
63 | 63 | button_save: Guardar |
|
64 | 64 | button_sort: Ordenar |
|
65 | 65 | button_submit: Aceptar |
|
66 | 66 | button_test: Probar |
|
67 | 67 | button_unarchive: Desarchivar |
|
68 | 68 | button_uncheck_all: No seleccionar nada |
|
69 | 69 | button_unlock: Desbloquear |
|
70 | 70 | button_unwatch: No monitorizar |
|
71 | 71 | button_update: Actualizar |
|
72 | 72 | button_view: Ver |
|
73 | 73 | button_watch: Monitorizar |
|
74 | 74 | default_activity_design: Diseño |
|
75 | 75 | default_activity_development: Desarrollo |
|
76 | 76 | default_doc_category_tech: Documentación técnica |
|
77 | 77 | default_doc_category_user: Documentación de usuario |
|
78 | 78 | default_issue_status_assigned: Asignada |
|
79 | 79 | default_issue_status_closed: Cerrada |
|
80 | 80 | default_issue_status_feedback: Comentarios |
|
81 | 81 | default_issue_status_new: Nueva |
|
82 | 82 | default_issue_status_rejected: Rechazada |
|
83 | 83 | default_issue_status_resolved: Resuelta |
|
84 | 84 | default_priority_high: Alta |
|
85 | 85 | default_priority_immediate: Inmediata |
|
86 | 86 | default_priority_low: Baja |
|
87 | 87 | default_priority_normal: Normal |
|
88 | 88 | default_priority_urgent: Urgente |
|
89 | 89 | default_role_developper: Desarrollador |
|
90 | 90 | default_role_manager: Jefe de proyecto |
|
91 | 91 | default_role_reporter: Informador |
|
92 | 92 | default_tracker_bug: Errores |
|
93 | 93 | default_tracker_feature: Tareas |
|
94 | 94 | default_tracker_support: Soporte |
|
95 | 95 | enumeration_activities: Actividades (tiempo dedicado) |
|
96 | 96 | enumeration_doc_categories: Categorías del documento |
|
97 | 97 | enumeration_issue_priorities: Prioridad de las peticiones |
|
98 | 98 | error_can_t_load_default_data: "No se ha podido cargar la configuración por defecto: %s" |
|
99 | 99 | error_issue_not_found_in_project: 'La petición no se encuentra o no está asociada a este proyecto' |
|
100 | 100 | error_scm_annotate: "No existe la entrada o no ha podido ser anotada" |
|
101 | 101 | error_scm_command_failed: "Se produjo un error al acceder al repositorio: %s" |
|
102 | 102 | error_scm_not_found: "La entrada y/o la revisión no existe en el repositorio." |
|
103 | 103 | field_account: Cuenta |
|
104 | 104 | field_activity: Actividad |
|
105 | 105 | field_admin: Administrador |
|
106 | 106 | field_assignable: Se pueden asignar peticiones a este perfil |
|
107 | 107 | field_assigned_to: Asignado a |
|
108 | 108 | field_attr_firstname: Cualidad del nombre |
|
109 | 109 | field_attr_lastname: Cualidad del apellido |
|
110 | 110 | field_attr_login: Cualidad del identificador |
|
111 | 111 | field_attr_mail: Cualidad del Email |
|
112 | 112 | field_auth_source: Modo de identificación |
|
113 | 113 | field_author: Autor |
|
114 | 114 | field_base_dn: DN base |
|
115 | 115 | field_category: Categoría |
|
116 | 116 | field_column_names: Columnas |
|
117 | 117 | field_comments: Comentario |
|
118 | 118 | field_comments_sorting: Mostrar comentarios |
|
119 | 119 | field_created_on: Creado |
|
120 | 120 | field_default_value: Estado por defecto |
|
121 | 121 | field_delay: Retraso |
|
122 | 122 | field_description: Descripción |
|
123 | 123 | field_done_ratio: %% Realizado |
|
124 | 124 | field_downloads: Descargas |
|
125 | 125 | field_due_date: Fecha fin |
|
126 | 126 | field_effective_date: Fecha |
|
127 | 127 | field_estimated_hours: Tiempo estimado |
|
128 | 128 | field_field_format: Formato |
|
129 | 129 | field_filename: Fichero |
|
130 | 130 | field_filesize: Tamaño |
|
131 | 131 | field_firstname: Nombre |
|
132 | 132 | field_fixed_version: Versión prevista |
|
133 | 133 | field_hide_mail: Ocultar mi dirección de correo |
|
134 | 134 | field_homepage: Sitio web |
|
135 | 135 | field_host: Anfitrión |
|
136 | 136 | field_hours: Horas |
|
137 | 137 | field_identifier: Identificador |
|
138 | 138 | field_is_closed: Petición resuelta |
|
139 | 139 | field_is_default: Estado por defecto |
|
140 | 140 | field_is_filter: Usado como filtro |
|
141 | 141 | field_is_for_all: Para todos los proyectos |
|
142 | 142 | field_is_in_chlog: Consultar las peticiones en el histórico |
|
143 |
field_is_in_roadmap: Consultar las peticiones en |
|
|
143 | field_is_in_roadmap: Consultar las peticiones en la planificación | |
|
144 | 144 | field_is_public: Público |
|
145 | 145 | field_is_required: Obligatorio |
|
146 | 146 | field_issue: Petición |
|
147 |
field_issue_to_id: Petición |
|
|
147 | field_issue_to_id: Petición relacionada | |
|
148 | 148 | field_language: Idioma |
|
149 | 149 | field_last_login_on: Última conexión |
|
150 | 150 | field_lastname: Apellido |
|
151 | 151 | field_login: Identificador |
|
152 | 152 | field_mail: Correo electrónico |
|
153 | 153 | field_mail_notification: Notificaciones por correo |
|
154 | 154 | field_max_length: Longitud máxima |
|
155 | 155 | field_min_length: Longitud mínima |
|
156 | 156 | field_name: Nombre |
|
157 | 157 | field_new_password: Nueva contraseña |
|
158 | 158 | field_notes: Notas |
|
159 | 159 | field_onthefly: Creación del usuario "al vuelo" |
|
160 | 160 | field_parent: Proyecto padre |
|
161 | 161 | field_parent_title: Página padre |
|
162 | 162 | field_password: Contraseña |
|
163 | 163 | field_password_confirmation: Confirmación |
|
164 | 164 | field_port: Puerto |
|
165 | 165 | field_possible_values: Valores posibles |
|
166 | 166 | field_priority: Prioridad |
|
167 | 167 | field_project: Proyecto |
|
168 | 168 | field_redirect_existing_links: Redireccionar enlaces existentes |
|
169 | 169 | field_regexp: Expresión regular |
|
170 | 170 | field_role: Perfil |
|
171 | 171 | field_searchable: Incluir en las búsquedas |
|
172 | 172 | field_spent_on: Fecha |
|
173 | 173 | field_start_date: Fecha de inicio |
|
174 | 174 | field_start_page: Página principal |
|
175 | 175 | field_status: Estado |
|
176 | 176 | field_subject: Tema |
|
177 | 177 | field_subproject: Proyecto secundario |
|
178 | 178 | field_summary: Resumen |
|
179 | 179 | field_time_zone: Zona horaria |
|
180 | 180 | field_title: Título |
|
181 |
field_tracker: T |
|
|
181 | field_tracker: Tipo | |
|
182 | 182 | field_type: Tipo |
|
183 | 183 | field_updated_on: Actualizado |
|
184 | 184 | field_url: URL |
|
185 | 185 | field_user: Usuario |
|
186 | 186 | field_value: Valor |
|
187 | 187 | field_version: Versión |
|
188 | 188 | general_csv_decimal_separator: ',' |
|
189 | 189 | general_csv_encoding: ISO-8859-15 |
|
190 | 190 | general_csv_separator: ';' |
|
191 | 191 | general_day_names: Lunes,Martes,Miércoles,Jueves,Viernes,Sábado,Domingo |
|
192 | 192 | general_first_day_of_week: '1' |
|
193 | 193 | general_fmt_age: %d año |
|
194 | 194 | general_fmt_age_plural: %d años |
|
195 | 195 | general_fmt_date: %%d/%%m/%%Y |
|
196 | 196 | general_fmt_datetime: %%d/%%m/%%Y %%H:%%M |
|
197 | 197 | general_fmt_datetime_short: %%d/%%m %%H:%%M |
|
198 | 198 | general_fmt_time: %%H:%%M |
|
199 | 199 | general_lang_name: 'Español' |
|
200 | 200 | general_pdf_encoding: ISO-8859-15 |
|
201 | 201 | general_text_No: 'No' |
|
202 | 202 | general_text_Yes: 'Sí' |
|
203 | 203 | general_text_no: 'no' |
|
204 | 204 | general_text_yes: 'sí' |
|
205 | 205 | gui_validation_error: 1 error |
|
206 | 206 | gui_validation_error_plural: %d errores |
|
207 | 207 | label_activity: Actividad |
|
208 | 208 | label_add_another_file: Añadir otro fichero |
|
209 | 209 | label_add_note: Añadir una nota |
|
210 | 210 | label_added: añadido |
|
211 | 211 | label_added_time_by: Añadido por %s hace %s |
|
212 | 212 | label_administration: Administración |
|
213 | 213 | label_age: Edad |
|
214 | 214 | label_ago: hace |
|
215 | 215 | label_all: todos |
|
216 | 216 | label_all_time: todo el tiempo |
|
217 | 217 | label_all_words: Todas las palabras |
|
218 |
label_and_its_subprojects: %s y |
|
|
218 | label_and_its_subprojects: %s y proyectos secundarios | |
|
219 | 219 | label_applied_status: Aplicar estado |
|
220 | 220 | label_assigned_to_me_issues: Peticiones que me están asignadas |
|
221 | 221 | label_associated_revisions: Revisiones asociadas |
|
222 | 222 | label_attachment: Fichero |
|
223 | 223 | label_attachment_delete: Borrar el fichero |
|
224 | 224 | label_attachment_new: Nuevo fichero |
|
225 | 225 | label_attachment_plural: Ficheros |
|
226 | 226 | label_attribute: Cualidad |
|
227 | 227 | label_attribute_plural: Cualidades |
|
228 | 228 | label_auth_source: Modo de autenticación |
|
229 | 229 | label_auth_source_new: Nuevo modo de autenticación |
|
230 | 230 | label_auth_source_plural: Modos de autenticación |
|
231 | 231 | label_authentication: Autenticación |
|
232 | 232 | label_blocked_by: bloqueado por |
|
233 | 233 | label_blocks: bloquea a |
|
234 | 234 | label_board: Foro |
|
235 | 235 | label_board_new: Nuevo foro |
|
236 | 236 | label_board_plural: Foros |
|
237 | label_boolean: Boleano | |
|
237 | label_boolean: Booleano | |
|
238 | 238 | label_browse: Hojear |
|
239 | 239 | label_bulk_edit_selected_issues: Editar las peticiones seleccionadas |
|
240 | 240 | label_calendar: Calendario |
|
241 | 241 | label_change_log: Cambios |
|
242 | 242 | label_change_plural: Cambios |
|
243 | 243 | label_change_properties: Cambiar propiedades |
|
244 | 244 | label_change_status: Cambiar el estado |
|
245 | 245 | label_change_view_all: Ver todos los cambios |
|
246 | 246 | label_changes_details: Detalles de todos los cambios |
|
247 | 247 | label_changeset_plural: Cambios |
|
248 | 248 | label_chronological_order: En orden cronológico |
|
249 | 249 | label_closed_issues: cerrada |
|
250 | 250 | label_closed_issues_plural: cerradas |
|
251 | 251 | label_comment: Comentario |
|
252 | 252 | label_comment_add: Añadir un comentario |
|
253 | 253 | label_comment_added: Comentario añadido |
|
254 | 254 | label_comment_delete: Borrar comentarios |
|
255 | 255 | label_comment_plural: Comentarios |
|
256 | 256 | label_commits_per_author: Commits por autor |
|
257 | 257 | label_commits_per_month: Commits por mes |
|
258 | 258 | label_confirmation: Confirmación |
|
259 | 259 | label_contains: contiene |
|
260 | 260 | label_copied: copiado |
|
261 | 261 | label_copy_workflow_from: Copiar flujo de trabajo desde |
|
262 | 262 | label_current_status: Estado actual |
|
263 | 263 | label_current_version: Versión actual |
|
264 | 264 | label_custom_field: Campo personalizado |
|
265 | 265 | label_custom_field_new: Nuevo campo personalizado |
|
266 | 266 | label_custom_field_plural: Campos personalizados |
|
267 | 267 | label_date: Fecha |
|
268 | 268 | label_date_from: Desde |
|
269 | 269 | label_date_range: Rango de fechas |
|
270 | 270 | label_date_to: Hasta |
|
271 | 271 | label_day_plural: días |
|
272 | 272 | label_default: Por defecto |
|
273 | 273 | label_default_columns: Columnas por defecto |
|
274 | 274 | label_deleted: suprimido |
|
275 | 275 | label_details: Detalles |
|
276 | 276 | label_diff_inline: en línea |
|
277 | 277 | label_diff_side_by_side: cara a cara |
|
278 | 278 | label_disabled: deshabilitado |
|
279 | 279 | label_display_per_page: 'Por página: %s' |
|
280 | 280 | label_document: Documento |
|
281 | 281 | label_document_added: Documento añadido |
|
282 | 282 | label_document_new: Nuevo documento |
|
283 | 283 | label_document_plural: Documentos |
|
284 | 284 | label_download: %d Descarga |
|
285 | 285 | label_download_plural: %d Descargas |
|
286 | 286 | label_downloads_abbr: D/L |
|
287 | 287 | label_duplicated_by: duplicada por |
|
288 | 288 | label_duplicates: duplicada de |
|
289 | 289 | label_end_to_end: fin a fin |
|
290 | 290 | label_end_to_start: fin a principio |
|
291 | 291 | label_enumeration_new: Nuevo valor |
|
292 | 292 | label_enumerations: Listas de valores |
|
293 | 293 | label_environment: Entorno |
|
294 | 294 | label_equals: igual |
|
295 | 295 | label_example: Ejemplo |
|
296 | label_export_to: Exportar a | |
|
296 | label_export_to: 'Exportar a:' | |
|
297 | 297 | label_f_hour: %.2f hora |
|
298 | 298 | label_f_hour_plural: %.2f horas |
|
299 | 299 | label_feed_plural: Feeds |
|
300 | 300 | label_feeds_access_key_created_on: Clave de acceso por RSS creada hace %s |
|
301 | 301 | label_file_added: Fichero añadido |
|
302 | 302 | label_file_plural: Archivos |
|
303 | 303 | label_filter_add: Añadir el filtro |
|
304 | 304 | label_filter_plural: Filtros |
|
305 | 305 | label_float: Flotante |
|
306 | 306 | label_follows: posterior a |
|
307 | 307 | label_gantt: Gantt |
|
308 | 308 | label_general: General |
|
309 | 309 | label_generate_key: Generar clave |
|
310 | 310 | label_help: Ayuda |
|
311 | 311 | label_history: Histórico |
|
312 | 312 | label_home: Inicio |
|
313 | 313 | label_in: en |
|
314 | 314 | label_in_less_than: en menos que |
|
315 | 315 | label_in_more_than: en más que |
|
316 | 316 | label_incoming_emails: Correos entrantes |
|
317 | 317 | label_index_by_date: Índice por fecha |
|
318 | 318 | label_index_by_title: Índice por título |
|
319 | 319 | label_information: Información |
|
320 | 320 | label_information_plural: Información |
|
321 | 321 | label_integer: Número |
|
322 | 322 | label_internal: Interno |
|
323 | 323 | label_issue: Petición |
|
324 | 324 | label_issue_added: Petición añadida |
|
325 | 325 | label_issue_category: Categoría de las peticiones |
|
326 | 326 | label_issue_category_new: Nueva categoría |
|
327 | 327 | label_issue_category_plural: Categorías de las peticiones |
|
328 | 328 | label_issue_new: Nueva petición |
|
329 | 329 | label_issue_plural: Peticiones |
|
330 | label_issue_status: Estado de petición | |
|
330 | label_issue_status: Estado de la petición | |
|
331 | 331 | label_issue_status_new: Nuevo estado |
|
332 | 332 | label_issue_status_plural: Estados de las peticiones |
|
333 | 333 | label_issue_tracking: Peticiones |
|
334 | 334 | label_issue_updated: Petición actualizada |
|
335 | 335 | label_issue_view_all: Ver todas las peticiones |
|
336 | 336 | label_issue_watchers: Seguidores |
|
337 | 337 | label_issues_by: Peticiones por %s |
|
338 | 338 | label_jump_to_a_project: Ir al proyecto... |
|
339 | 339 | label_language_based: Basado en el idioma |
|
340 |
label_last_changes: %d cambios |
|
|
340 | label_last_changes: últimos %d cambios | |
|
341 | 341 | label_last_login: Última conexión |
|
342 | 342 | label_last_month: último mes |
|
343 | 343 | label_last_n_days: últimos %d días |
|
344 | 344 | label_last_updates: Actualizado |
|
345 | 345 | label_last_updates_plural: %d Actualizados |
|
346 | 346 | label_last_week: última semana |
|
347 | 347 | label_latest_revision: Última revisión |
|
348 | 348 | label_latest_revision_plural: Últimas revisiones |
|
349 | 349 | label_ldap_authentication: Autenticación LDAP |
|
350 | 350 | label_less_than_ago: hace menos de |
|
351 | 351 | label_list: Lista |
|
352 | 352 | label_loading: Cargando... |
|
353 | 353 | label_logged_as: Conectado como |
|
354 | 354 | label_login: Conexión |
|
355 | 355 | label_logout: Desconexión |
|
356 | 356 | label_max_size: Tamaño máximo |
|
357 | 357 | label_me: yo mismo |
|
358 | 358 | label_member: Miembro |
|
359 | 359 | label_member_new: Nuevo miembro |
|
360 | 360 | label_member_plural: Miembros |
|
361 | 361 | label_message_last: Último mensaje |
|
362 | 362 | label_message_new: Nuevo mensaje |
|
363 | 363 | label_message_plural: Mensajes |
|
364 | 364 | label_message_posted: Mensaje añadido |
|
365 | 365 | label_min_max_length: Longitud mín - máx |
|
366 | 366 | label_modification: %d modificación |
|
367 | 367 | label_modification_plural: %d modificaciones |
|
368 | 368 | label_modified: modificado |
|
369 | 369 | label_module_plural: Módulos |
|
370 | 370 | label_month: Mes |
|
371 | 371 | label_months_from: meses de |
|
372 | 372 | label_more: Más |
|
373 | 373 | label_more_than_ago: hace más de |
|
374 | 374 | label_my_account: Mi cuenta |
|
375 | 375 | label_my_page: Mi página |
|
376 | 376 | label_my_projects: Mis proyectos |
|
377 | 377 | label_new: Nuevo |
|
378 | 378 | label_new_statuses_allowed: Nuevos estados autorizados |
|
379 | 379 | label_news: Noticia |
|
380 | 380 | label_news_added: Noticia añadida |
|
381 | 381 | label_news_latest: Últimas noticias |
|
382 | 382 | label_news_new: Nueva noticia |
|
383 | 383 | label_news_plural: Noticias |
|
384 | 384 | label_news_view_all: Ver todas las noticias |
|
385 | 385 | label_next: Siguiente |
|
386 | 386 | label_no_change_option: (Sin cambios) |
|
387 |
label_no_data: Ning |
|
|
387 | label_no_data: Ningún dato a mostrar | |
|
388 | 388 | label_nobody: nadie |
|
389 | 389 | label_none: ninguno |
|
390 | 390 | label_not_contains: no contiene |
|
391 | 391 | label_not_equals: no igual |
|
392 | 392 | label_on: de |
|
393 | 393 | label_open_issues: abierta |
|
394 | 394 | label_open_issues_plural: abiertas |
|
395 | 395 | label_optional_description: Descripción opcional |
|
396 | 396 | label_options: Opciones |
|
397 | 397 | label_overall_activity: Actividad global |
|
398 | 398 | label_overview: Vistazo |
|
399 | 399 | label_password_lost: ¿Olvidaste la contraseña? |
|
400 |
label_per_page: Por |
|
|
400 | label_per_page: Por página | |
|
401 | 401 | label_permissions: Permisos |
|
402 | 402 | label_permissions_report: Informe de permisos |
|
403 | 403 | label_personalize_page: Personalizar esta página |
|
404 | 404 | label_planning: Planificación |
|
405 | 405 | label_please_login: Conexión |
|
406 | 406 | label_plugins: Extensiones |
|
407 | 407 | label_precedes: anterior a |
|
408 | 408 | label_preferences: Preferencias |
|
409 | 409 | label_preview: Previsualizar |
|
410 | 410 | label_previous: Anterior |
|
411 | 411 | label_project: Proyecto |
|
412 | 412 | label_project_all: Todos los proyectos |
|
413 | 413 | label_project_latest: Últimos proyectos |
|
414 | 414 | label_project_new: Nuevo proyecto |
|
415 | 415 | label_project_plural: Proyectos |
|
416 | 416 | label_public_projects: Proyectos públicos |
|
417 | 417 | label_query: Consulta personalizada |
|
418 | 418 | label_query_new: Nueva consulta |
|
419 | 419 | label_query_plural: Consultas personalizadas |
|
420 | 420 | label_read: Leer... |
|
421 | 421 | label_register: Registrar |
|
422 | 422 | label_registered_on: Inscrito el |
|
423 | 423 | label_registration_activation_by_email: activación de cuenta por correo |
|
424 | 424 | label_registration_automatic_activation: activación automática de cuenta |
|
425 | 425 | label_registration_manual_activation: activación manual de cuenta |
|
426 | 426 | label_related_issues: Peticiones relacionadas |
|
427 | 427 | label_relates_to: relacionada con |
|
428 | 428 | label_relation_delete: Eliminar relación |
|
429 | 429 | label_relation_new: Nueva relación |
|
430 | 430 | label_renamed: renombrado |
|
431 | 431 | label_reply_plural: Respuestas |
|
432 | 432 | label_report: Informe |
|
433 | 433 | label_report_plural: Informes |
|
434 | 434 | label_reported_issues: Peticiones registradas por mí |
|
435 | 435 | label_repository: Repositorio |
|
436 | 436 | label_repository_plural: Repositorios |
|
437 | 437 | label_result_plural: Resultados |
|
438 | 438 | label_reverse_chronological_order: En orden cronológico inverso |
|
439 | 439 | label_revision: Revisión |
|
440 | 440 | label_revision_plural: Revisiones |
|
441 |
label_roadmap: |
|
|
441 | label_roadmap: Planificación | |
|
442 | 442 | label_roadmap_due_in: Finaliza en %s |
|
443 | 443 | label_roadmap_no_issues: No hay peticiones para esta versión |
|
444 | 444 | label_roadmap_overdue: %s tarde |
|
445 | 445 | label_role: Perfil |
|
446 | 446 | label_role_and_permissions: Perfiles y permisos |
|
447 | 447 | label_role_new: Nuevo perfil |
|
448 | 448 | label_role_plural: Perfiles |
|
449 | 449 | label_scm: SCM |
|
450 | 450 | label_search: Búsqueda |
|
451 | 451 | label_search_titles_only: Buscar sólo en títulos |
|
452 | 452 | label_send_information: Enviar información de la cuenta al usuario |
|
453 | 453 | label_send_test_email: Enviar un correo de prueba |
|
454 | 454 | label_settings: Configuración |
|
455 |
label_show_completed_versions: Muestra las versiones |
|
|
455 | label_show_completed_versions: Muestra las versiones terminadas | |
|
456 | 456 | label_sort_by: Ordenar por %s |
|
457 | 457 | label_sort_higher: Subir |
|
458 | 458 | label_sort_highest: Primero |
|
459 | 459 | label_sort_lower: Bajar |
|
460 | 460 | label_sort_lowest: Último |
|
461 | 461 | label_spent_time: Tiempo dedicado |
|
462 | 462 | label_start_to_end: principio a fin |
|
463 | 463 | label_start_to_start: principio a principio |
|
464 | 464 | label_statistics: Estadísticas |
|
465 | 465 | label_stay_logged_in: Recordar conexión |
|
466 | 466 | label_string: Texto |
|
467 | 467 | label_subproject_plural: Proyectos secundarios |
|
468 | 468 | label_text: Texto largo |
|
469 | 469 | label_theme: Tema |
|
470 | 470 | label_this_month: este mes |
|
471 | 471 | label_this_week: esta semana |
|
472 | 472 | label_this_year: este año |
|
473 | 473 | label_time_tracking: Control de tiempo |
|
474 | 474 | label_today: hoy |
|
475 | 475 | label_topic_plural: Temas |
|
476 | 476 | label_total: Total |
|
477 |
label_tracker: T |
|
|
478 |
label_tracker_new: Nuevo t |
|
|
479 |
label_tracker_plural: T |
|
|
477 | label_tracker: Tipo | |
|
478 | label_tracker_new: Nuevo tipo | |
|
479 | label_tracker_plural: Tipos de peticiones | |
|
480 | 480 | label_updated_time: Actualizado hace %s |
|
481 | label_updated_time_by: Actualizado por %s hace %s | |
|
481 | 482 | label_used_by: Utilizado por |
|
482 | 483 | label_user: Usuario |
|
484 | label_user_activity: "Actividad de %s" | |
|
483 | 485 | label_user_mail_no_self_notified: "No quiero ser avisado de cambios hechos por mí" |
|
484 | 486 | label_user_mail_option_all: "Para cualquier evento en todos mis proyectos" |
|
485 | 487 | label_user_mail_option_none: "Sólo para elementos monitorizados o relacionados conmigo" |
|
486 |
label_user_mail_option_selected: "Para cualquier evento de |
|
|
488 | label_user_mail_option_selected: "Para cualquier evento de los proyectos seleccionados..." | |
|
487 | 489 | label_user_new: Nuevo usuario |
|
488 | 490 | label_user_plural: Usuarios |
|
489 | 491 | label_version: Versión |
|
490 | 492 | label_version_new: Nueva versión |
|
491 | 493 | label_version_plural: Versiones |
|
492 | 494 | label_view_diff: Ver diferencias |
|
493 | 495 | label_view_revisions: Ver las revisiones |
|
494 | 496 | label_watched_issues: Peticiones monitorizadas |
|
495 | 497 | label_week: Semana |
|
496 | 498 | label_wiki: Wiki |
|
497 | 499 | label_wiki_edit: Wiki edicción |
|
498 | 500 | label_wiki_edit_plural: Wiki edicciones |
|
499 | 501 | label_wiki_page: Wiki página |
|
500 | 502 | label_wiki_page_plural: Wiki páginas |
|
501 | 503 | label_workflow: Flujo de trabajo |
|
502 | 504 | label_year: Año |
|
503 | 505 | label_yesterday: ayer |
|
504 |
mail_body_account_activation_request: |
|
|
506 | mail_body_account_activation_request: 'Se ha inscrito un nuevo usuario (%s). La cuenta está pendiende de aprobación:' | |
|
505 | 507 | mail_body_account_information: Información sobre su cuenta |
|
506 | 508 | mail_body_account_information_external: Puede usar su cuenta "%s" para conectarse. |
|
507 |
mail_body_lost_password: 'Para cambiar su contraseña, haga clic |
|
|
508 |
mail_body_register: 'Para activar su cuenta, haga clic |
|
|
509 | mail_body_lost_password: 'Para cambiar su contraseña, haga clic en el siguiente enlace:' | |
|
510 | mail_body_register: 'Para activar su cuenta, haga clic en el siguiente enlace:' | |
|
509 | 511 | mail_body_reminder: "%d peticion(es) asignadas a tí finalizan en los próximos %d días:" |
|
510 | 512 | mail_subject_account_activation_request: Petición de activación de cuenta %s |
|
511 | 513 | mail_subject_lost_password: Tu contraseña del %s |
|
512 | 514 | mail_subject_register: Activación de la cuenta del %s |
|
513 | 515 | mail_subject_reminder: "%d peticion(es) finalizan en los próximos días" |
|
514 |
notice_account_activated: Su cuenta ha sido activada. |
|
|
516 | notice_account_activated: Su cuenta ha sido activada. Ya puede conectarse. | |
|
515 | 517 | notice_account_invalid_creditentials: Usuario o contraseña inválido. |
|
516 | 518 | notice_account_lost_email_sent: Se le ha enviado un correo con instrucciones para elegir una nueva contraseña. |
|
517 | 519 | notice_account_password_updated: Contraseña modificada correctamente. |
|
518 | notice_account_pending: "Su cuenta ha sido creada y está pendiende de la aprobación por parte de administrador" | |
|
519 | notice_account_register_done: Cuenta creada correctamente. | |
|
520 | notice_account_pending: "Su cuenta ha sido creada y está pendiende de la aprobación por parte del administrador." | |
|
521 | notice_account_register_done: Cuenta creada correctamente. Para activarla, haga clic sobre el enlace que le ha sido enviado por correo. | |
|
520 | 522 | notice_account_unknown_email: Usuario desconocido. |
|
521 | 523 | notice_account_updated: Cuenta actualizada correctamente. |
|
522 | 524 | notice_account_wrong_password: Contraseña incorrecta. |
|
523 | 525 | notice_can_t_change_password: Esta cuenta utiliza una fuente de autenticación externa. No es posible cambiar la contraseña. |
|
524 | 526 | notice_default_data_loaded: Configuración por defecto cargada correctamente. |
|
525 | 527 | notice_email_error: Ha ocurrido un error mientras enviando el correo (%s) |
|
526 | 528 | notice_email_sent: Se ha enviado un correo a %s |
|
527 |
notice_failed_to_save_issues: "Imposible |
|
|
528 | notice_feeds_access_key_reseted: Su clave de acceso para RSS ha sido reiniciada | |
|
529 |
notice_file_not_found: La página a la que intenta |
|
|
529 | notice_failed_to_save_issues: "Imposible grabar %s peticion(es) en %d seleccionado: %s." | |
|
530 | notice_feeds_access_key_reseted: Su clave de acceso para RSS ha sido reiniciada. | |
|
531 | notice_file_not_found: La página a la que intenta acceder no existe. | |
|
530 | 532 | notice_locking_conflict: Los datos han sido modificados por otro usuario. |
|
531 | 533 | notice_no_issue_selected: "Ninguna petición seleccionada. Por favor, compruebe la petición que quiere modificar" |
|
532 | 534 | notice_not_authorized: No tiene autorización para acceder a esta página. |
|
533 | 535 | notice_successful_connection: Conexión correcta. |
|
534 | 536 | notice_successful_create: Creación correcta. |
|
535 | 537 | notice_successful_delete: Borrado correcto. |
|
536 | 538 | notice_successful_update: Modificación correcta. |
|
537 | 539 | notice_unable_delete_version: No se puede borrar la versión |
|
538 | 540 | permission_add_issue_notes: Añadir notas |
|
539 | 541 | permission_add_issue_watchers: Añadir seguidores |
|
540 | 542 | permission_add_issues: Añadir peticiones |
|
541 | 543 | permission_add_messages: Enviar mensajes |
|
542 | 544 | permission_browse_repository: Hojear repositiorio |
|
543 | 545 | permission_comment_news: Comentar noticias |
|
544 | 546 | permission_commit_access: Acceso de escritura |
|
545 | 547 | permission_delete_issues: Borrar peticiones |
|
546 | 548 | permission_delete_messages: Borrar mensajes |
|
549 | permission_delete_own_messages: Borrar mensajes propios | |
|
547 | 550 | permission_delete_wiki_pages: Borrar páginas wiki |
|
548 | 551 | permission_delete_wiki_pages_attachments: Borrar ficheros |
|
549 | permission_delete_own_messages: Borrar mensajes propios | |
|
550 | 552 | permission_edit_issue_notes: Modificar notas |
|
551 | 553 | permission_edit_issues: Modificar peticiones |
|
552 | 554 | permission_edit_messages: Modificar mensajes |
|
553 | 555 | permission_edit_own_issue_notes: Modificar notas propias |
|
554 | 556 | permission_edit_own_messages: Editar mensajes propios |
|
555 | 557 | permission_edit_own_time_entries: Modificar tiempos dedicados propios |
|
556 | 558 | permission_edit_project: Modificar proyecto |
|
557 | 559 | permission_edit_time_entries: Modificar tiempos dedicados |
|
558 | 560 | permission_edit_wiki_pages: Modificar páginas wiki |
|
559 | 561 | permission_log_time: Anotar tiempo dedicado |
|
560 | 562 | permission_manage_boards: Administrar foros |
|
561 | 563 | permission_manage_categories: Administrar categorías de peticiones |
|
562 | 564 | permission_manage_documents: Administrar documentos |
|
563 | 565 | permission_manage_files: Administrar ficheros |
|
564 | 566 | permission_manage_issue_relations: Administrar relación con otras peticiones |
|
565 | 567 | permission_manage_members: Administrar miembros |
|
566 | 568 | permission_manage_news: Administrar noticias |
|
567 | 569 | permission_manage_public_queries: Administrar consultas públicas |
|
568 | 570 | permission_manage_repository: Administrar repositorio |
|
569 | 571 | permission_manage_versions: Administrar versiones |
|
570 | 572 | permission_manage_wiki: Administrar wiki |
|
571 | 573 | permission_move_issues: Mover peticiones |
|
572 | 574 | permission_protect_wiki_pages: Proteger páginas wiki |
|
573 | 575 | permission_rename_wiki_pages: Renombrar páginas wiki |
|
574 | 576 | permission_save_queries: Grabar consultas |
|
575 | 577 | permission_select_project_modules: Seleccionar módulos del proyecto |
|
576 | 578 | permission_view_calendar: Ver calendario |
|
577 | 579 | permission_view_changesets: Ver cambios |
|
578 | 580 | permission_view_documents: Ver documentos |
|
579 | 581 | permission_view_files: Ver ficheros |
|
580 | 582 | permission_view_gantt: Ver diagrama de Gantt |
|
581 | 583 | permission_view_issue_watchers: Ver lista de seguidores |
|
582 | 584 | permission_view_messages: Ver mensajes |
|
583 | 585 | permission_view_time_entries: Ver tiempo dedicado |
|
584 | 586 | permission_view_wiki_edits: Ver histórico del wiki |
|
585 | 587 | permission_view_wiki_pages: Ver wiki |
|
586 | 588 | project_module_boards: Foros |
|
587 | 589 | project_module_documents: Documentos |
|
588 | 590 | project_module_files: Ficheros |
|
589 | 591 | project_module_issue_tracking: Peticiones |
|
590 | 592 | project_module_news: Noticias |
|
591 | 593 | project_module_repository: Repositorio |
|
592 | 594 | project_module_time_tracking: Control de tiempo |
|
593 | 595 | project_module_wiki: Wiki |
|
594 | 596 | setting_activity_days_default: Días a mostrar en la actividad de proyecto |
|
595 | 597 | setting_app_subtitle: Subtítulo de la aplicación |
|
596 | 598 | setting_app_title: Título de la aplicación |
|
597 | 599 | setting_attachment_max_size: Tamaño máximo del fichero |
|
598 | 600 | setting_autofetch_changesets: Autorellenar los commits del repositorio |
|
599 | 601 | setting_autologin: Conexión automática |
|
600 | 602 | setting_bcc_recipients: Ocultar las copias de carbón (bcc) |
|
601 | 603 | setting_commit_fix_keywords: Palabras clave para la corrección |
|
602 | 604 | setting_commit_logs_encoding: Codificación de los mensajes de commit |
|
603 | 605 | setting_commit_ref_keywords: Palabras clave para la referencia |
|
604 | 606 | setting_cross_project_issue_relations: Permitir relacionar peticiones de distintos proyectos |
|
605 |
setting_date_format: Formato de |
|
|
607 | setting_date_format: Formato de fecha | |
|
606 | 608 | setting_default_language: Idioma por defecto |
|
607 | 609 | setting_default_projects_public: Los proyectos nuevos son públicos por defecto |
|
608 | setting_display_subprojects_issues: Mostrar peticiones de un subproyecto en el proyecto padre por defecto | |
|
610 | setting_diff_max_lines_displayed: Número máximo de diferencias mostradas | |
|
611 | setting_display_subprojects_issues: Mostrar por defecto peticiones de proy. secundarios en el principal | |
|
609 | 612 | setting_emails_footer: Pie de mensajes |
|
610 | 613 | setting_enabled_scm: Activar SCM |
|
611 | 614 | setting_feeds_limit: Límite de contenido para sindicación |
|
612 | 615 | setting_gravatar_enabled: Usar iconos de usuario (Gravatar) |
|
613 |
setting_host_name: Nombre |
|
|
616 | setting_host_name: Nombre y ruta del servidor | |
|
614 | 617 | setting_issue_list_default_columns: Columnas por defecto para la lista de peticiones |
|
615 | 618 | setting_issues_export_limit: Límite de exportación de peticiones |
|
616 | 619 | setting_login_required: Se requiere identificación |
|
617 | 620 | setting_mail_from: Correo desde el que enviar mensajes |
|
618 | 621 | setting_mail_handler_api_enabled: Activar SW para mensajes entrantes |
|
619 | 622 | setting_mail_handler_api_key: Clave de la API |
|
620 | 623 | setting_per_page_options: Objetos por página |
|
621 | 624 | setting_plain_text_mail: sólo texto plano (no HTML) |
|
622 | 625 | setting_protocol: Protocolo |
|
623 | 626 | setting_repositories_encodings: Codificaciones del repositorio |
|
624 | 627 | setting_self_registration: Registro permitido |
|
625 | 628 | setting_sequential_project_identifiers: Generar identificadores de proyecto |
|
626 | 629 | setting_sys_api_enabled: Habilitar SW para la gestión del repositorio |
|
627 | 630 | setting_text_formatting: Formato de texto |
|
628 | 631 | setting_time_format: Formato de hora |
|
629 | 632 | setting_user_format: Formato de nombre de usuario |
|
630 | 633 | setting_welcome_text: Texto de bienvenida |
|
631 | 634 | setting_wiki_compression: Compresión del historial del Wiki |
|
632 | 635 | status_active: activo |
|
633 | 636 | status_locked: bloqueado |
|
634 | 637 | status_registered: registrado |
|
635 |
text_are_you_sure: ¿ |
|
|
638 | text_are_you_sure: ¿Está seguro? | |
|
636 | 639 | text_assign_time_entries_to_project: Asignar las horas al proyecto |
|
637 | 640 | text_caracters_maximum: %d caracteres como máximo. |
|
638 | 641 | text_caracters_minimum: %d caracteres como mínimo |
|
639 | 642 | text_comma_separated: Múltiples valores permitidos (separados por coma). |
|
640 | 643 | text_default_administrator_account_changed: Cuenta de administrador por defecto modificada |
|
641 | 644 | text_destroy_time_entries: Borrar las horas |
|
642 | 645 | text_destroy_time_entries_question: Existen %.02f horas asignadas a la petición que quiere borrar. ¿Qué quiere hacer ? |
|
646 | text_diff_truncated: '... Diferencia truncada por exceder el máximo tamaño visualizable.' | |
|
643 | 647 | text_email_delivery_not_configured: "El envío de correos no está configurado, y las notificaciones se han desactivado. \n Configure el servidor de SMTP en config/email.yml y reinicie la aplicación para activar los cambios." |
|
644 | 648 | text_enumeration_category_reassign_to: 'Reasignar al siguiente valor:' |
|
645 | 649 | text_enumeration_destroy_question: '%d objetos con este valor asignado.' |
|
646 | 650 | text_file_repository_writable: Se puede escribir en el repositorio |
|
647 | text_issue_added: Petición añadida por %s. | |
|
651 | text_issue_added: Petición %s añadida por %s. | |
|
648 | 652 | text_issue_category_destroy_assignments: Dejar las peticiones sin categoría |
|
649 | 653 | text_issue_category_destroy_question: Algunas peticiones (%d) están asignadas a esta categoría. ¿Qué desea hacer? |
|
650 | 654 | text_issue_category_reassign_to: Reasignar las peticiones a la categoría |
|
651 | 655 | text_issue_updated: La petición %s ha sido actualizada por %s. |
|
652 | 656 | text_issues_destroy_confirmation: '¿Seguro que quiere borrar las peticiones seleccionadas?' |
|
653 | 657 | text_issues_ref_in_commit_messages: Referencia y petición de corrección en los mensajes |
|
654 | 658 | text_journal_changed: cambiado de %s a %s |
|
655 | 659 | text_journal_deleted: suprimido |
|
656 | 660 | text_journal_set_to: fijado a %s |
|
657 | 661 | text_length_between: Longitud entre %d y %d caracteres. |
|
658 | 662 | text_load_default_configuration: Cargar la configuración por defecto |
|
659 | 663 | text_min_max_length_info: 0 para ninguna restricción |
|
660 |
text_no_configuration_data: "Todavía no se han configurado |
|
|
664 | text_no_configuration_data: "Todavía no se han configurado perfiles, ni tipos, estados y flujo de trabajo asociado a peticiones. Se recomiendo encarecidamente cargar la configuración por defecto. Una vez cargada, podrá modificarla." | |
|
661 | 665 | text_project_destroy_confirmation: ¿Estás seguro de querer eliminar el proyecto? |
|
662 | 666 | text_project_identifier_info: 'Letras minúsculas (a-z), números y signos de puntuación permitidos.<br />Una vez guardado, el identificador no puede modificarse.' |
|
663 | 667 | text_reassign_time_entries: 'Reasignar las horas a esta petición:' |
|
664 | 668 | text_regexp_info: ej. ^[A-Z0-9]+$ |
|
665 | text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." | |
|
669 | text_repository_usernames_mapping: "Establezca la correspondencia entre los usuarios de Redmine y los presentes en el log del repositorio.\nLos usuarios con el mismo nombre o correo en Redmine y en el repositorio serán asociados automáticamente." | |
|
666 | 670 | text_rmagick_available: RMagick disponible (opcional) |
|
667 | 671 | text_select_mail_notifications: Seleccionar los eventos a notificar |
|
668 | 672 | text_select_project_modules: 'Seleccione los módulos a activar para este proyecto:' |
|
669 | 673 | text_status_changed_by_changeset: Aplicado en los cambios %s |
|
670 |
text_subprojects_destroy_warning: 'Los |
|
|
674 | text_subprojects_destroy_warning: 'Los proyectos secundarios: %s también se eliminarán' | |
|
671 | 675 | text_tip_task_begin_day: tarea que comienza este día |
|
672 | 676 | text_tip_task_begin_end_day: tarea que comienza y termina este día |
|
673 | 677 | text_tip_task_end_day: tarea que termina este día |
|
674 |
text_tracker_no_workflow: No hay ningún flujo de trabajo definido para este t |
|
|
678 | text_tracker_no_workflow: No hay ningún flujo de trabajo definido para este tipo de petición | |
|
675 | 679 | text_unallowed_characters: Caracteres no permitidos |
|
676 |
text_user_mail_option: " |
|
|
680 | text_user_mail_option: "De los proyectos no seleccionados, sólo recibirá notificaciones sobre elementos monitorizados o elementos en los que esté involucrado (por ejemplo, peticiones de las que usted sea autor o asignadas a usted)." | |
|
677 | 681 | text_user_wrote: '%s escribió:' |
|
678 | 682 | text_wiki_destroy_confirmation: ¿Seguro que quiere borrar el wiki y todo su contenido? |
|
679 | 683 | text_workflow_edit: Seleccionar un flujo de trabajo para actualizar |
|
680 | label_user_activity: "%s's activity" | |
|
681 | label_updated_time_by: Updated by %s %s ago | |
|
682 | text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' | |
|
683 | setting_diff_max_lines_displayed: Max number of diff lines displayed |
@@ -1,699 +1,699 | |||
|
1 | 1 | _gloc_rule_default: '|n| n==1 ? "" : "_plural" ' |
|
2 | 2 | |
|
3 | 3 | actionview_datehelper_select_day_prefix: |
|
4 | 4 | actionview_datehelper_select_month_names: Január,Február,Március,Április,Május,Június,Július,Augusztus,Szeptember,Október,November,December |
|
5 | 5 | actionview_datehelper_select_month_names_abbr: Jan,Feb,Már,Ápr,Máj,Jún,Júl,Aug,Szept,Okt,Nov,Dec |
|
6 | 6 | actionview_datehelper_select_month_prefix: |
|
7 | 7 | actionview_datehelper_select_year_prefix: |
|
8 | 8 | actionview_datehelper_time_in_words_day: 1 nap |
|
9 | 9 | actionview_datehelper_time_in_words_day_plural: %d nap |
|
10 | 10 | actionview_datehelper_time_in_words_hour_about: kb. 1 óra |
|
11 | 11 | actionview_datehelper_time_in_words_hour_about_plural: kb. %d óra |
|
12 | 12 | actionview_datehelper_time_in_words_hour_about_single: kb. 1 óra |
|
13 | 13 | actionview_datehelper_time_in_words_minute: 1 perc |
|
14 | 14 | actionview_datehelper_time_in_words_minute_half: fél perc |
|
15 | 15 | actionview_datehelper_time_in_words_minute_less_than: kevesebb, mint 1 perc |
|
16 | 16 | actionview_datehelper_time_in_words_minute_plural: %d perc |
|
17 | 17 | actionview_datehelper_time_in_words_minute_single: 1 perc |
|
18 | 18 | actionview_datehelper_time_in_words_second_less_than: kevesebb, mint 1 másodperc |
|
19 | 19 | actionview_datehelper_time_in_words_second_less_than_plural: kevesebb, mint %d másodperc |
|
20 | 20 | actionview_instancetag_blank_option: Kérem válasszon |
|
21 | 21 | |
|
22 | 22 | activerecord_error_inclusion: nem található a listában |
|
23 | 23 | activerecord_error_exclusion: foglalt |
|
24 | 24 | activerecord_error_invalid: érvénytelen |
|
25 | 25 | activerecord_error_confirmation: jóváhagyás szükséges |
|
26 | 26 | activerecord_error_accepted: ell kell fogadni |
|
27 | 27 | activerecord_error_empty: nem lehet üres |
|
28 | 28 | activerecord_error_blank: nem lehet üres |
|
29 | 29 | activerecord_error_too_long: túl hosszú |
|
30 | 30 | activerecord_error_too_short: túl rövid |
|
31 | 31 | activerecord_error_wrong_length: hibás a hossza |
|
32 | 32 | activerecord_error_taken: már foglalt |
|
33 | 33 | activerecord_error_not_a_number: nem egy szám |
|
34 | 34 | activerecord_error_not_a_date: nem érvényes dátum |
|
35 | 35 | activerecord_error_greater_than_start_date: nagyobbnak kell lennie, mint az indítás dátuma |
|
36 | 36 | activerecord_error_not_same_project: nem azonos projekthez tartozik |
|
37 | 37 | activerecord_error_circular_dependency: Ez a kapcsolat egy körkörös függőséget eredményez |
|
38 | 38 | |
|
39 | 39 | general_fmt_age: %d év |
|
40 | 40 | general_fmt_age_plural: %d év |
|
41 | 41 | general_fmt_date: %%Y.%%m.%%d |
|
42 | 42 | general_fmt_datetime: %%Y.%%m.%%d %%H:%%M:%%S |
|
43 | 43 | general_fmt_datetime_short: %%b %%d, %%H:%%M:%%S |
|
44 | 44 | general_fmt_time: %%H:%%M:%%S |
|
45 | 45 | general_text_No: 'Nem' |
|
46 | 46 | general_text_Yes: 'Igen' |
|
47 | 47 | general_text_no: 'nem' |
|
48 | 48 | general_text_yes: 'igen' |
|
49 | 49 | general_lang_name: 'Magyar' |
|
50 | 50 | general_csv_separator: ',' |
|
51 | 51 | general_csv_decimal_separator: '.' |
|
52 | 52 | general_csv_encoding: ISO-8859-2 |
|
53 | 53 | general_pdf_encoding: ISO-8859-2 |
|
54 | 54 | general_day_names: Hétfő,Kedd,Szerda,Csütörtök,Péntek,Szombat,Vasárnap |
|
55 | 55 | general_first_day_of_week: '1' |
|
56 | 56 | |
|
57 | 57 | notice_account_updated: A fiók adatai sikeresen frissítve. |
|
58 | 58 | notice_account_invalid_creditentials: Hibás felhasználói név, vagy jelszó |
|
59 | 59 | notice_account_password_updated: A jelszó módosítása megtörtént. |
|
60 | 60 | notice_account_wrong_password: Hibás jelszó |
|
61 | 61 | notice_account_register_done: A fiók sikeresen létrehozva. Aktiválásához kattints az e-mailben kapott linkre |
|
62 | 62 | notice_account_unknown_email: Ismeretlen felhasználó. |
|
63 | 63 | notice_can_t_change_password: A fiók külső azonosítási forrást használ. A jelszó megváltoztatása nem lehetséges. |
|
64 | 64 | notice_account_lost_email_sent: Egy e-mail üzenetben postáztunk Önnek egy leírást az új jelszó beállításáról. |
|
65 | 65 | notice_account_activated: Fiókját aktiváltuk. Most már be tud jelentkezni a rendszerbe. |
|
66 | 66 | notice_successful_create: Sikeres létrehozás. |
|
67 | 67 | notice_successful_update: Sikeres módosítás. |
|
68 | 68 | notice_successful_delete: Sikeres törlés. |
|
69 | 69 | notice_successful_connection: Sikeres bejelentkezés. |
|
70 | 70 | notice_file_not_found: Az oldal, amit meg szeretne nézni nem található, vagy átkerült egy másik helyre. |
|
71 | 71 | notice_locking_conflict: Az adatot egy másik felhasználó idő közben módosította. |
|
72 | 72 | notice_not_authorized: Nincs hozzáférési engedélye ehhez az oldalhoz. |
|
73 | 73 | notice_email_sent: Egy e-mail üzenetet küldtünk a következő címre %s |
|
74 | 74 | notice_email_error: Hiba történt a levél küldése közben (%s) |
|
75 | 75 | notice_feeds_access_key_reseted: Az RSS hozzáférési kulcsát újra generáltuk. |
|
76 | 76 | notice_failed_to_save_issues: "Nem sikerült a %d feladat(ok) mentése a %d -ban kiválasztva: %s." |
|
77 | 77 | notice_no_issue_selected: "Nincs feladat kiválasztva! Kérem jelölje meg melyik feladatot szeretné szerkeszteni!" |
|
78 | 78 | notice_account_pending: "A fiókja létrejött, és adminisztrátori jóváhagyásra vár." |
|
79 | 79 | notice_default_data_loaded: Az alapértelmezett konfiguráció betöltése sikeresen megtörtént. |
|
80 | 80 | |
|
81 | 81 | error_can_t_load_default_data: "Az alapértelmezett konfiguráció betöltése nem lehetséges: %s" |
|
82 | 82 | error_scm_not_found: "A bejegyzés, vagy revízió nem található a tárolóban." |
|
83 | 83 | error_scm_command_failed: "A tároló elérése közben hiba lépett fel: %s" |
|
84 | 84 | error_scm_annotate: "A bejegyzés nem létezik, vagy nics jegyzetekkel ellátva." |
|
85 | 85 | error_issue_not_found_in_project: 'A feladat nem található, vagy nem ehhez a projekthez tartozik' |
|
86 | 86 | |
|
87 | 87 | mail_subject_lost_password: Az Ön Redmine jelszava |
|
88 | 88 | mail_body_lost_password: 'A Redmine jelszó megváltoztatásához, kattintson a következő linkre:' |
|
89 | 89 | mail_subject_register: Redmine azonosító aktiválása |
|
90 | 90 | mail_body_register: 'A Redmine azonosítója aktiválásához, kattintson a következő linkre:' |
|
91 | 91 | mail_body_account_information_external: A "%s" azonosító használatával bejelentkezhet a Redmineba. |
|
92 | 92 | mail_body_account_information: Az Ön Redmine azonosítójának információi |
|
93 | 93 | mail_subject_account_activation_request: Redmine azonosító aktiválási kérelem |
|
94 | 94 | mail_body_account_activation_request: 'Egy új felhasználó (%s) regisztrált, azonosítója jóváhasgyásra várakozik:' |
|
95 | 95 | |
|
96 | 96 | gui_validation_error: 1 hiba |
|
97 | 97 | gui_validation_error_plural: %d hiba |
|
98 | 98 | |
|
99 | 99 | field_name: Név |
|
100 | 100 | field_description: Leírás |
|
101 | 101 | field_summary: Összegzés |
|
102 | 102 | field_is_required: Kötelező |
|
103 | 103 | field_firstname: Keresztnév |
|
104 | 104 | field_lastname: Vezetéknév |
|
105 | 105 | field_mail: E-mail |
|
106 | 106 | field_filename: Fájl |
|
107 | 107 | field_filesize: Méret |
|
108 | 108 | field_downloads: Letöltések |
|
109 | 109 | field_author: Szerző |
|
110 | 110 | field_created_on: Létrehozva |
|
111 | 111 | field_updated_on: Módosítva |
|
112 | 112 | field_field_format: Formátum |
|
113 | 113 | field_is_for_all: Minden projekthez |
|
114 | 114 | field_possible_values: Lehetséges értékek |
|
115 | 115 | field_regexp: Reguláris kifejezés |
|
116 | 116 | field_min_length: Minimum hossz |
|
117 | 117 | field_max_length: Maximum hossz |
|
118 | 118 | field_value: Érték |
|
119 | 119 | field_category: Kategória |
|
120 | 120 | field_title: Cím |
|
121 | 121 | field_project: Projekt |
|
122 | 122 | field_issue: Feladat |
|
123 | 123 | field_status: Státusz |
|
124 | 124 | field_notes: Feljegyzések |
|
125 | 125 | field_is_closed: Feladat lezárva |
|
126 | 126 | field_is_default: Alapértelmezett érték |
|
127 | 127 | field_tracker: Típus |
|
128 | 128 | field_subject: Tárgy |
|
129 | 129 | field_due_date: Befejezés dátuma |
|
130 | 130 | field_assigned_to: Felelős |
|
131 | 131 | field_priority: Prioritás |
|
132 | 132 | field_fixed_version: Cél verzió |
|
133 | 133 | field_user: Felhasználó |
|
134 | 134 | field_role: Szerepkör |
|
135 | 135 | field_homepage: Weboldal |
|
136 | 136 | field_is_public: Nyilvános |
|
137 | 137 | field_parent: Szülő projekt |
|
138 | 138 | field_is_in_chlog: Feladatok látszanak a változás naplóban |
|
139 | 139 | field_is_in_roadmap: Feladatok látszanak az életútban |
|
140 | 140 | field_login: Azonosító |
|
141 | 141 | field_mail_notification: E-mail értesítések |
|
142 | 142 | field_admin: Adminisztrátor |
|
143 | 143 | field_last_login_on: Utolsó bejelentkezés |
|
144 | 144 | field_language: Nyelv |
|
145 | 145 | field_effective_date: Dátum |
|
146 | 146 | field_password: Jelszó |
|
147 | 147 | field_new_password: Új jelszó |
|
148 | 148 | field_password_confirmation: Megerősítés |
|
149 | 149 | field_version: Verzió |
|
150 | 150 | field_type: Típus |
|
151 | 151 | field_host: Kiszolgáló |
|
152 | 152 | field_port: Port |
|
153 | 153 | field_account: Felhasználói fiók |
|
154 | 154 | field_base_dn: Base DN |
|
155 | 155 | field_attr_login: Bejelentkezési tulajdonság |
|
156 | 156 | field_attr_firstname: Családnév |
|
157 | 157 | field_attr_lastname: Utónév |
|
158 | 158 | field_attr_mail: E-mail |
|
159 | 159 | field_onthefly: On-the-fly felhasználó létrehozás |
|
160 | 160 | field_start_date: Kezdés dátuma |
|
161 | 161 | field_done_ratio: Elkészült (%%) |
|
162 | 162 | field_auth_source: Azonosítási mód |
|
163 | 163 | field_hide_mail: Rejtse el az e-mail címem |
|
164 | 164 | field_comments: Megjegyzés |
|
165 | 165 | field_url: URL |
|
166 | 166 | field_start_page: Kezdőlap |
|
167 | 167 | field_subproject: Alprojekt |
|
168 | 168 | field_hours: Óra |
|
169 | 169 | field_activity: Aktivitás |
|
170 | 170 | field_spent_on: Dátum |
|
171 | 171 | field_identifier: Azonosító |
|
172 | 172 | field_is_filter: Szűrőként használható |
|
173 | 173 | field_issue_to_id: Kapcsolódó feladat |
|
174 | 174 | field_delay: Késés |
|
175 | 175 | field_assignable: Feladat rendelhető ehhez a szerepkörhöz |
|
176 | 176 | field_redirect_existing_links: Létező linkek átirányítása |
|
177 | 177 | field_estimated_hours: Becsült idő |
|
178 | 178 | field_column_names: Oszlopok |
|
179 | 179 | field_time_zone: Időzóna |
|
180 | 180 | field_searchable: Kereshető |
|
181 | 181 | field_default_value: Alapértelmezett érték |
|
182 | 182 | field_comments_sorting: Feljegyzések megjelenítése |
|
183 | 183 | |
|
184 | 184 | setting_app_title: Alkalmazás címe |
|
185 | 185 | setting_app_subtitle: Alkalmazás alcíme |
|
186 | 186 | setting_welcome_text: Üdvözlő üzenet |
|
187 | 187 | setting_default_language: Alapértelmezett nyelv |
|
188 | 188 | setting_login_required: Azonosítás szükséges |
|
189 | 189 | setting_self_registration: Regisztráció |
|
190 | 190 | setting_attachment_max_size: Melléklet max. mérete |
|
191 | 191 | setting_issues_export_limit: Feladatok exportálásának korlátja |
|
192 | 192 | setting_mail_from: Kibocsátó e-mail címe |
|
193 | 193 | setting_bcc_recipients: Titkos másolat címzet (bcc) |
|
194 | 194 | setting_host_name: Kiszolgáló neve |
|
195 | 195 | setting_text_formatting: Szöveg formázás |
|
196 | 196 | setting_wiki_compression: Wiki történet tömörítés |
|
197 | 197 | setting_feeds_limit: RSS tartalom korlát |
|
198 | 198 | setting_default_projects_public: Az új projektek alapértelmezés szerint nyilvánosak |
|
199 | 199 | setting_autofetch_changesets: Commitok automatikus lehúzása |
|
200 | 200 | setting_sys_api_enabled: WS engedélyezése a tárolók kezeléséhez |
|
201 | 201 | setting_commit_ref_keywords: Hivatkozó kulcsszavak |
|
202 | 202 | setting_commit_fix_keywords: Javítások kulcsszavai |
|
203 | 203 | setting_autologin: Automatikus bejelentkezés |
|
204 | 204 | setting_date_format: Dátum formátum |
|
205 | 205 | setting_time_format: Idő formátum |
|
206 | 206 | setting_cross_project_issue_relations: Kereszt-projekt feladat hivatkozások engedélyezése |
|
207 | 207 | setting_issue_list_default_columns: Az alapértelmezésként megjelenített oszlopok a feladat listában |
|
208 | 208 | setting_repositories_encodings: Tárolók kódolása |
|
209 | 209 | setting_emails_footer: E-mail lábléc |
|
210 | 210 | setting_protocol: Protokol |
|
211 | 211 | setting_per_page_options: Objektum / oldal opciók |
|
212 | 212 | setting_user_format: Felhasználók megjelenítésének formája |
|
213 | 213 | setting_activity_days_default: Napok megjelenítése a project aktivitásnál |
|
214 | 214 | setting_display_subprojects_issues: Alapértelmezettként mutassa az alprojektek feladatait is a projekteken |
|
215 | 215 | |
|
216 | 216 | project_module_issue_tracking: Feladat követés |
|
217 | 217 | project_module_time_tracking: Idő rögzítés |
|
218 | 218 | project_module_news: Hírek |
|
219 | 219 | project_module_documents: Dokumentumok |
|
220 | 220 | project_module_files: Fájlok |
|
221 | 221 | project_module_wiki: Wiki |
|
222 | 222 | project_module_repository: Tároló |
|
223 | 223 | project_module_boards: Fórumok |
|
224 | 224 | |
|
225 | 225 | label_user: Felhasználó |
|
226 | 226 | label_user_plural: Felhasználók |
|
227 | 227 | label_user_new: Új felhasználó |
|
228 | 228 | label_project: Projekt |
|
229 | 229 | label_project_new: Új projekt |
|
230 | 230 | label_project_plural: Projektek |
|
231 | 231 | label_project_all: Az összes projekt |
|
232 | 232 | label_project_latest: Legutóbbi projektek |
|
233 | 233 | label_issue: Feladat |
|
234 | 234 | label_issue_new: Új feladat |
|
235 | 235 | label_issue_plural: Feladatok |
|
236 | 236 | label_issue_view_all: Minden feladat megtekintése |
|
237 | 237 | label_issues_by: %s feladatai |
|
238 | 238 | label_issue_added: Feladat hozzáadva |
|
239 | 239 | label_issue_updated: Feladat frissítve |
|
240 | 240 | label_document: Dokumentum |
|
241 | 241 | label_document_new: Új dokumentum |
|
242 | 242 | label_document_plural: Dokumentumok |
|
243 | 243 | label_document_added: Dokumentum hozzáadva |
|
244 | 244 | label_role: Szerepkör |
|
245 | 245 | label_role_plural: Szerepkörök |
|
246 | 246 | label_role_new: Új szerepkör |
|
247 | 247 | label_role_and_permissions: Szerepkörök, és jogosultságok |
|
248 | 248 | label_member: Résztvevő |
|
249 | 249 | label_member_new: Új résztvevő |
|
250 | 250 | label_member_plural: Résztvevők |
|
251 | 251 | label_tracker: Feladat típus |
|
252 | 252 | label_tracker_plural: Feladat típusok |
|
253 | 253 | label_tracker_new: Új feladat típus |
|
254 | 254 | label_workflow: Workflow |
|
255 | 255 | label_issue_status: Feladat státusz |
|
256 | 256 | label_issue_status_plural: Feladat státuszok |
|
257 | 257 | label_issue_status_new: Új státusz |
|
258 | 258 | label_issue_category: Feladat kategória |
|
259 | 259 | label_issue_category_plural: Feladat kategóriák |
|
260 | 260 | label_issue_category_new: Új kategória |
|
261 | 261 | label_custom_field: Egyéni mező |
|
262 | 262 | label_custom_field_plural: Egyéni mezők |
|
263 | 263 | label_custom_field_new: Új egyéni mező |
|
264 | 264 | label_enumerations: Felsorolások |
|
265 | 265 | label_enumeration_new: Új érték |
|
266 | 266 | label_information: Információ |
|
267 | 267 | label_information_plural: Információk |
|
268 | 268 | label_please_login: Jelentkezzen be |
|
269 | 269 | label_register: Regisztráljon |
|
270 | 270 | label_password_lost: Elfelejtett jelszó |
|
271 | 271 | label_home: Kezdőlap |
|
272 | 272 | label_my_page: Saját kezdőlapom |
|
273 | 273 | label_my_account: Fiókom adatai |
|
274 | 274 | label_my_projects: Saját projektem |
|
275 | 275 | label_administration: Adminisztráció |
|
276 | 276 | label_login: Bejelentkezés |
|
277 | 277 | label_logout: Kijelentkezés |
|
278 | 278 | label_help: Súgó |
|
279 | 279 | label_reported_issues: Bejelentett feladatok |
|
280 | 280 | label_assigned_to_me_issues: A nekem kiosztott feladatok |
|
281 | 281 | label_last_login: Utolsó bejelentkezés |
|
282 | 282 | label_last_updates: Utoljára frissítve |
|
283 | 283 | label_last_updates_plural: Utoljára módosítva %d |
|
284 | 284 | label_registered_on: Regisztrált |
|
285 | 285 | label_activity: Tevékenységek |
|
286 | 286 | label_overall_activity: Teljes aktivitás |
|
287 | 287 | label_new: Új |
|
288 | 288 | label_logged_as: Bejelentkezve, mint |
|
289 | 289 | label_environment: Környezet |
|
290 | 290 | label_authentication: Azonosítás |
|
291 | 291 | label_auth_source: Azonosítás módja |
|
292 | 292 | label_auth_source_new: Új azonosítási mód |
|
293 | 293 | label_auth_source_plural: Azonosítási módok |
|
294 | 294 | label_subproject_plural: Alprojektek |
|
295 | 295 | label_and_its_subprojects: %s és alprojektjei |
|
296 | 296 | label_min_max_length: Min - Max hossz |
|
297 | 297 | label_list: Lista |
|
298 | 298 | label_date: Dátum |
|
299 | 299 | label_integer: Egész |
|
300 | 300 | label_float: Lebegőpontos |
|
301 | 301 | label_boolean: Logikai |
|
302 | 302 | label_string: Szöveg |
|
303 | 303 | label_text: Hosszú szöveg |
|
304 | 304 | label_attribute: Tulajdonság |
|
305 | 305 | label_attribute_plural: Tulajdonságok |
|
306 | 306 | label_download: %d Letöltés |
|
307 | 307 | label_download_plural: %d Letöltések |
|
308 | 308 | label_no_data: Nincs megjeleníthető adat |
|
309 | 309 | label_change_status: Státusz módosítása |
|
310 | 310 | label_history: Történet |
|
311 | 311 | label_attachment: Fájl |
|
312 | 312 | label_attachment_new: Új fájl |
|
313 | 313 | label_attachment_delete: Fájl törlése |
|
314 | 314 | label_attachment_plural: Fájlok |
|
315 | 315 | label_file_added: Fájl hozzáadva |
|
316 | 316 | label_report: Jelentés |
|
317 | 317 | label_report_plural: Jelentések |
|
318 | 318 | label_news: Hírek |
|
319 | 319 | label_news_new: Hír hozzáadása |
|
320 | 320 | label_news_plural: Hírek |
|
321 | 321 | label_news_latest: Legutóbbi hírek |
|
322 | 322 | label_news_view_all: Minden hír megtekintése |
|
323 | 323 | label_news_added: Hír hozzáadva |
|
324 | 324 | label_change_log: Változás napló |
|
325 | 325 | label_settings: Beállítások |
|
326 | 326 | label_overview: Áttekintés |
|
327 | 327 | label_version: Verzió |
|
328 | 328 | label_version_new: Új verzió |
|
329 | 329 | label_version_plural: Verziók |
|
330 | 330 | label_confirmation: Jóváhagyás |
|
331 | 331 | label_export_to: Exportálás |
|
332 | 332 | label_read: Olvas... |
|
333 | 333 | label_public_projects: Nyilvános projektek |
|
334 | 334 | label_open_issues: nyitott |
|
335 | 335 | label_open_issues_plural: nyitott |
|
336 | 336 | label_closed_issues: lezárt |
|
337 | 337 | label_closed_issues_plural: lezárt |
|
338 | 338 | label_total: Összesen |
|
339 | 339 | label_permissions: Jogosultságok |
|
340 | 340 | label_current_status: Jelenlegi státusz |
|
341 | 341 | label_new_statuses_allowed: Státusz változtatások engedélyei |
|
342 | 342 | label_all: mind |
|
343 | 343 | label_none: nincs |
|
344 | 344 | label_nobody: senki |
|
345 | 345 | label_next: Következő |
|
346 | 346 | label_previous: Előző |
|
347 | 347 | label_used_by: Használja |
|
348 | 348 | label_details: Részletek |
|
349 | 349 | label_add_note: Jegyzet hozzáadása |
|
350 | 350 | label_per_page: Oldalanként |
|
351 | 351 | label_calendar: Naptár |
|
352 | 352 | label_months_from: hónap, kezdve |
|
353 | 353 | label_gantt: Gantt |
|
354 | 354 | label_internal: Belső |
|
355 | 355 | label_last_changes: utolsó %d változás |
|
356 | 356 | label_change_view_all: Minden változás megtekintése |
|
357 | 357 | label_personalize_page: Az oldal testreszabása |
|
358 | 358 | label_comment: Megjegyzés |
|
359 | 359 | label_comment_plural: Megjegyzés |
|
360 | 360 | label_comment_add: Megjegyzés hozzáadása |
|
361 | 361 | label_comment_added: Megjegyzés hozzáadva |
|
362 | 362 | label_comment_delete: Megjegyzések törlése |
|
363 | 363 | label_query: Egyéni lekérdezés |
|
364 | 364 | label_query_plural: Egyéni lekérdezések |
|
365 | 365 | label_query_new: Új lekérdezés |
|
366 | 366 | label_filter_add: Szűrő hozzáadása |
|
367 | 367 | label_filter_plural: Szűrők |
|
368 | 368 | label_equals: egyenlő |
|
369 | 369 | label_not_equals: nem egyenlő |
|
370 | 370 | label_in_less_than: kevesebb, mint |
|
371 | 371 | label_in_more_than: több, mint |
|
372 | 372 | label_in: in |
|
373 | 373 | label_today: ma |
|
374 | 374 | label_all_time: mindenkor |
|
375 | 375 | label_yesterday: tegnap |
|
376 | 376 | label_this_week: aktuális hét |
|
377 | 377 | label_last_week: múlt hét |
|
378 | 378 | label_last_n_days: az elmúlt %d nap |
|
379 | 379 | label_this_month: aktuális hónap |
|
380 | 380 | label_last_month: múlt hónap |
|
381 | 381 | label_this_year: aktuális év |
|
382 | 382 | label_date_range: Dátum intervallum |
|
383 | 383 | label_less_than_ago: kevesebb, mint nappal ezelőtt |
|
384 | 384 | label_more_than_ago: több, mint nappal ezelőtt |
|
385 | 385 | label_ago: nappal ezelőtt |
|
386 | 386 | label_contains: tartalmazza |
|
387 | 387 | label_not_contains: nem tartalmazza |
|
388 | 388 | label_day_plural: nap |
|
389 | 389 | label_repository: Tároló |
|
390 | 390 | label_repository_plural: Tárolók |
|
391 | 391 | label_browse: Tallóz |
|
392 | 392 | label_modification: %d változás |
|
393 | 393 | label_modification_plural: %d változások |
|
394 | 394 | label_revision: Revízió |
|
395 | 395 | label_revision_plural: Revíziók |
|
396 | 396 | label_associated_revisions: Kapcsolt revíziók |
|
397 | 397 | label_added: hozzáadva |
|
398 | 398 | label_modified: módosítva |
|
399 | 399 | label_deleted: törölve |
|
400 | 400 | label_latest_revision: Legutolsó revízió |
|
401 | 401 | label_latest_revision_plural: Legutolsó revíziók |
|
402 | 402 | label_view_revisions: Revíziók megtekintése |
|
403 | 403 | label_max_size: Maximális méret |
|
404 | 404 | label_on: 'összesen' |
|
405 | 405 | label_sort_highest: Az elejére |
|
406 | 406 | label_sort_higher: Eggyel feljebb |
|
407 | 407 | label_sort_lower: Eggyel lejjebb |
|
408 | 408 | label_sort_lowest: Az aljára |
|
409 | 409 | label_roadmap: Életút |
|
410 | 410 | label_roadmap_due_in: Elkészültéig várhatóan még %s |
|
411 | 411 | label_roadmap_overdue: %s késésben |
|
412 | 412 | label_roadmap_no_issues: Nincsenek feladatok ehhez a verzióhoz |
|
413 | 413 | label_search: Keresés |
|
414 | 414 | label_result_plural: Találatok |
|
415 | 415 | label_all_words: Minden szó |
|
416 | 416 | label_wiki: Wiki |
|
417 | 417 | label_wiki_edit: Wiki szerkesztés |
|
418 | 418 | label_wiki_edit_plural: Wiki szerkesztések |
|
419 | 419 | label_wiki_page: Wiki oldal |
|
420 | 420 | label_wiki_page_plural: Wiki oldalak |
|
421 | 421 | label_index_by_title: Cím szerint indexelve |
|
422 | 422 | label_index_by_date: Dátum szerint indexelve |
|
423 | 423 | label_current_version: Jelenlegi verzió |
|
424 | 424 | label_preview: Előnézet |
|
425 | 425 | label_feed_plural: Visszajelzések |
|
426 | 426 | label_changes_details: Változások részletei |
|
427 | 427 | label_issue_tracking: Feladat követés |
|
428 | 428 | label_spent_time: Ráfordított idő |
|
429 | 429 | label_f_hour: %.2f óra |
|
430 | 430 | label_f_hour_plural: %.2f óra |
|
431 | 431 | label_time_tracking: Idő követés |
|
432 | 432 | label_change_plural: Változások |
|
433 | 433 | label_statistics: Statisztikák |
|
434 | 434 | label_commits_per_month: Commits havonta |
|
435 | 435 | label_commits_per_author: Commits szerzőnként |
|
436 | 436 | label_view_diff: Különbségek megtekintése |
|
437 | 437 | label_diff_inline: inline |
|
438 | 438 | label_diff_side_by_side: side by side |
|
439 | 439 | label_options: Opciók |
|
440 | 440 | label_copy_workflow_from: Workflow másolása innen |
|
441 | 441 | label_permissions_report: Jogosultsági riport |
|
442 | 442 | label_watched_issues: Megfigyelt feladatok |
|
443 | 443 | label_related_issues: Kapcsolódó feladatok |
|
444 | 444 | label_applied_status: Alkalmazandó státusz |
|
445 | 445 | label_loading: Betöltés... |
|
446 | 446 | label_relation_new: Új kapcsolat |
|
447 | 447 | label_relation_delete: Kapcsolat törlése |
|
448 | 448 | label_relates_to: kapcsolódik |
|
449 | 449 | label_duplicates: duplikálja |
|
450 | 450 | label_blocks: zárolja |
|
451 | 451 | label_blocked_by: zárolta |
|
452 | 452 | label_precedes: megelőzi |
|
453 | 453 | label_follows: követi |
|
454 | 454 | label_end_to_start: végétől indulásig |
|
455 | 455 | label_end_to_end: végétől végéig |
|
456 | 456 | label_start_to_start: indulástól indulásig |
|
457 | 457 | label_start_to_end: indulástól végéig |
|
458 | 458 | label_stay_logged_in: Emlékezzen rám |
|
459 | 459 | label_disabled: kikapcsolva |
|
460 | 460 | label_show_completed_versions: A kész verziók mutatása |
|
461 | 461 | label_me: én |
|
462 | 462 | label_board: Fórum |
|
463 | 463 | label_board_new: Új fórum |
|
464 | 464 | label_board_plural: Fórumok |
|
465 | 465 | label_topic_plural: Témák |
|
466 | 466 | label_message_plural: Üzenetek |
|
467 | 467 | label_message_last: Utolsó üzenet |
|
468 | 468 | label_message_new: Új üzenet |
|
469 | 469 | label_message_posted: Üzenet hozzáadva |
|
470 | 470 | label_reply_plural: Válaszok |
|
471 | 471 | label_send_information: Fiók infomációk küldése a felhasználónak |
|
472 | 472 | label_year: Év |
|
473 | 473 | label_month: Hónap |
|
474 | 474 | label_week: Hét |
|
475 | 475 | label_date_from: 'Kezdet:' |
|
476 | 476 | label_date_to: 'Vége:' |
|
477 | 477 | label_language_based: A felhasználó nyelve alapján |
|
478 | 478 | label_sort_by: %s szerint rendezve |
|
479 | 479 | label_send_test_email: Teszt e-mail küldése |
|
480 | 480 | label_feeds_access_key_created_on: 'RSS hozzáférési kulcs létrehozva ennyivel ezelőtt: %s' |
|
481 | 481 | label_module_plural: Modulok |
|
482 | 482 | label_added_time_by: '%s adta hozzá ennyivel ezelőtt: %s' |
|
483 | 483 | label_updated_time: 'Utolsó módosítás ennyivel ezelőtt: %s' |
|
484 | 484 | label_jump_to_a_project: Ugrás projekthez... |
|
485 | 485 | label_file_plural: Fájlok |
|
486 | 486 | label_changeset_plural: Changesets |
|
487 | 487 | label_default_columns: Alapértelmezett oszlopok |
|
488 | 488 | label_no_change_option: (Nincs változás) |
|
489 | 489 | label_bulk_edit_selected_issues: A kiválasztott feladatok kötegelt szerkesztése |
|
490 | 490 | label_theme: Téma |
|
491 | 491 | label_default: Alapértelmezett |
|
492 | 492 | label_search_titles_only: Keresés csak a címekben |
|
493 | 493 | label_user_mail_option_all: "Minden eseményről minden saját projektemben" |
|
494 | 494 | label_user_mail_option_selected: "Minden eseményről a kiválasztott projektekben..." |
|
495 | 495 | label_user_mail_option_none: "Csak a megfigyelt dolgokról, vagy, amiben részt veszek" |
|
496 | 496 | label_user_mail_no_self_notified: "Nem kérek értesítést az általam végzett módosításokról" |
|
497 | 497 | label_registration_activation_by_email: Fiók aktiválása e-mailben |
|
498 | 498 | label_registration_manual_activation: Manuális fiók aktiválás |
|
499 | 499 | label_registration_automatic_activation: Automatikus fiók aktiválás |
|
500 | 500 | label_display_per_page: 'Oldalanként: %s' |
|
501 | 501 | label_age: Kor |
|
502 | 502 | label_change_properties: Tulajdonságok változtatása |
|
503 | 503 | label_general: Általános |
|
504 | 504 | label_more: továbbiak |
|
505 | 505 | label_scm: SCM |
|
506 | 506 | label_plugins: Pluginek |
|
507 | 507 | label_ldap_authentication: LDAP azonosítás |
|
508 | 508 | label_downloads_abbr: D/L |
|
509 | 509 | label_optional_description: Opcionális leírás |
|
510 | 510 | label_add_another_file: Újabb fájl hozzáadása |
|
511 | 511 | label_preferences: Tulajdonságok |
|
512 | 512 | label_chronological_order: Időrendben |
|
513 | 513 | label_reverse_chronological_order: Fordított időrendben |
|
514 | 514 | label_planning: Tervezés |
|
515 | 515 | |
|
516 | 516 | button_login: Bejelentkezés |
|
517 | 517 | button_submit: Elfogad |
|
518 | 518 | button_save: Mentés |
|
519 | 519 | button_check_all: Mindent kijelöl |
|
520 | 520 | button_uncheck_all: Kijelölés törlése |
|
521 | 521 | button_delete: Töröl |
|
522 | 522 | button_create: Létrehoz |
|
523 | 523 | button_test: Teszt |
|
524 | 524 | button_edit: Szerkeszt |
|
525 | 525 | button_add: Hozzáad |
|
526 | 526 | button_change: Változtat |
|
527 | 527 | button_apply: Alkalmaz |
|
528 | 528 | button_clear: Töröl |
|
529 | 529 | button_lock: Zárol |
|
530 | 530 | button_unlock: Felold |
|
531 | 531 | button_download: Letöltés |
|
532 | 532 | button_list: Lista |
|
533 | 533 | button_view: Megnéz |
|
534 | 534 | button_move: Mozgat |
|
535 | 535 | button_back: Vissza |
|
536 | 536 | button_cancel: Mégse |
|
537 | 537 | button_activate: Aktivál |
|
538 | 538 | button_sort: Rendezés |
|
539 | 539 | button_log_time: Idő rögzítés |
|
540 | 540 | button_rollback: Visszaáll erre a verzióra |
|
541 | 541 | button_watch: Megfigyel |
|
542 | 542 | button_unwatch: Megfigyelés törlése |
|
543 | 543 | button_reply: Válasz |
|
544 | 544 | button_archive: Archivál |
|
545 | 545 | button_unarchive: Dearchivál |
|
546 | 546 | button_reset: Reset |
|
547 | 547 | button_rename: Átnevez |
|
548 | 548 | button_change_password: Jelszó megváltoztatása |
|
549 | 549 | button_copy: Másol |
|
550 | 550 | button_annotate: Jegyzetel |
|
551 | 551 | button_update: Módosít |
|
552 | 552 | button_configure: Konfigurál |
|
553 | 553 | |
|
554 | 554 | status_active: aktív |
|
555 | 555 | status_registered: regisztrált |
|
556 | 556 | status_locked: zárolt |
|
557 | 557 | |
|
558 | 558 | text_select_mail_notifications: Válasszon eseményeket, amelyekről e-mail értesítést kell küldeni. |
|
559 | 559 | text_regexp_info: eg. ^[A-Z0-9]+$ |
|
560 | 560 | text_min_max_length_info: 0 = nincs korlátozás |
|
561 | 561 | text_project_destroy_confirmation: Biztosan törölni szeretné a projektet és vele együtt minden kapcsolódó adatot ? |
|
562 | 562 | text_subprojects_destroy_warning: 'Az alprojekt(ek): %s szintén törlésre kerülnek.' |
|
563 | 563 | text_workflow_edit: Válasszon egy szerepkört, és egy trackert a workflow szerkesztéséhez |
|
564 | 564 | text_are_you_sure: Biztos benne ? |
|
565 | 565 | text_journal_changed: "változás: %s volt, %s lett" |
|
566 | 566 | text_journal_set_to: "beállítva: %s" |
|
567 | 567 | text_journal_deleted: törölve |
|
568 | 568 | text_tip_task_begin_day: a feladat ezen a napon kezdődik |
|
569 | 569 | text_tip_task_end_day: a feladat ezen a napon ér véget |
|
570 | 570 | text_tip_task_begin_end_day: a feladat ezen a napon kezdődik és ér véget |
|
571 | 571 | text_project_identifier_info: 'Kis betűk (a-z), számok és kötőjel megengedett.<br />Mentés után az azonosítót megváltoztatni nem lehet.' |
|
572 | 572 | text_caracters_maximum: maximum %d karakter. |
|
573 | 573 | text_caracters_minimum: Legkevesebb %d karakter hosszúnek kell lennie. |
|
574 | 574 | text_length_between: Legalább %d és legfeljebb %d hosszú karakter. |
|
575 | 575 | text_tracker_no_workflow: Nincs workflow definiálva ehhez a tracker-hez |
|
576 | 576 | text_unallowed_characters: Tiltott karakterek |
|
577 | 577 | text_comma_separated: Több érték megengedett (vesszővel elválasztva) |
|
578 | 578 | text_issues_ref_in_commit_messages: Hivatkozás feladatokra, feladatok javítása a commit üzenetekben |
|
579 | 579 | text_issue_added: %s feladat bejelentve. |
|
580 | 580 | text_issue_updated: %s feladat frissítve. |
|
581 | 581 | text_wiki_destroy_confirmation: Biztosan törölni szeretné ezt a wiki-t minden tartalmával együtt ? |
|
582 | 582 | text_issue_category_destroy_question: Néhány feladat (%d) hozzá van rendelve ehhez a kategóriához. Mit szeretne tenni ? |
|
583 | 583 | text_issue_category_destroy_assignments: Kategória hozzárendelés megszűntetése |
|
584 | 584 | text_issue_category_reassign_to: Feladatok újra hozzárendelése a kategóriához |
|
585 | 585 | text_user_mail_option: "A nem kiválasztott projektekről csak akkor kap értesítést, ha figyelést kér rá, vagy részt vesz benne (pl. Ön a létrehozó, vagy a hozzárendelő)" |
|
586 | 586 | text_no_configuration_data: "Szerepkörök, trackerek, feladat státuszok, és workflow adatok még nincsenek konfigurálva.\nErősen ajánlott, az alapértelmezett konfiguráció betöltése, és utána módosíthatja azt." |
|
587 | 587 | text_load_default_configuration: Alapértelmezett konfiguráció betöltése |
|
588 | 588 | text_status_changed_by_changeset: Applied in changeset %s. |
|
589 | 589 | text_issues_destroy_confirmation: 'Biztos benne, hogy törölni szeretné a kijelölt feladato(ka)t ?' |
|
590 | 590 | text_select_project_modules: 'Válassza ki az engedélyezett modulokat ehhez a projekthez:' |
|
591 | 591 | text_default_administrator_account_changed: Alapértelmezett adminisztrátor fiók megváltoztatva |
|
592 | 592 | text_file_repository_writable: Fájl tároló írható |
|
593 | 593 | text_rmagick_available: RMagick elérhető (opcionális) |
|
594 | 594 | text_destroy_time_entries_question: %.02f órányi munka van rögzítve a feladatokon, amiket törölni szeretne. Mit szeretne tenni ? |
|
595 | 595 | text_destroy_time_entries: A rögzített órák törlése |
|
596 | 596 | text_assign_time_entries_to_project: A rögzített órák hozzárendelése a projekthez |
|
597 | 597 | text_reassign_time_entries: 'A rögzített órák újra hozzárendelése ehhez a feladathoz:' |
|
598 | 598 | |
|
599 | 599 | default_role_manager: Vezető |
|
600 | 600 | default_role_developper: Fejlesztő |
|
601 | 601 | default_role_reporter: Bejelentő |
|
602 | 602 | default_tracker_bug: Hiba |
|
603 | 603 | default_tracker_feature: Fejlesztés |
|
604 | 604 | default_tracker_support: Support |
|
605 | 605 | default_issue_status_new: Új |
|
606 | 606 | default_issue_status_assigned: Kiosztva |
|
607 | 607 | default_issue_status_resolved: Megoldva |
|
608 | 608 | default_issue_status_feedback: Visszajelzés |
|
609 | 609 | default_issue_status_closed: Lezárt |
|
610 | 610 | default_issue_status_rejected: Elutasított |
|
611 | 611 | default_doc_category_user: Felhasználói dokumentáció |
|
612 | 612 | default_doc_category_tech: Technikai dokumentáció |
|
613 | 613 | default_priority_low: Alacsony |
|
614 | 614 | default_priority_normal: Normál |
|
615 | 615 | default_priority_high: Magas |
|
616 | 616 | default_priority_urgent: Sürgős |
|
617 | 617 | default_priority_immediate: Azonnal |
|
618 | 618 | default_activity_design: Tervezés |
|
619 | 619 | default_activity_development: Fejlesztés |
|
620 | 620 | |
|
621 | 621 | enumeration_issue_priorities: Feladat prioritások |
|
622 | 622 | enumeration_doc_categories: Dokumentum kategóriák |
|
623 | 623 | enumeration_activities: Tevékenységek (idő rögzítés) |
|
624 | 624 | mail_body_reminder: "%d neked kiosztott feladat határidős az elkövetkező %d napban:" |
|
625 | 625 | mail_subject_reminder: "%d feladat határidős az elkövetkező napokban" |
|
626 | 626 | text_user_wrote: '%s írta:' |
|
627 | 627 | label_duplicated_by: duplikálta |
|
628 | 628 | setting_enabled_scm: Forráskódkezelő (SCM) engedélyezése |
|
629 | 629 | text_enumeration_category_reassign_to: 'Újra hozzárendelés ehhez:' |
|
630 | 630 | text_enumeration_destroy_question: '%d objektum van hozzárendelve ehhez az értékhez.' |
|
631 | 631 | label_incoming_emails: Beérkezett levelek |
|
632 | 632 | label_generate_key: Kulcs generálása |
|
633 | 633 | setting_mail_handler_api_enabled: Web Service engedélyezése a beérkezett levelekhez |
|
634 | 634 | setting_mail_handler_api_key: API kulcs |
|
635 | 635 | text_email_delivery_not_configured: "Az E-mail küldés nincs konfigurálva, és az értesítések ki vannak kapcsolva.\nÁllítsd be az SMTP szervert a config/email.yml fájlban és indítsd újra az alkalmazást, hogy érvénybe lépjen." |
|
636 | 636 | field_parent_title: Szülő oldal |
|
637 | 637 | label_issue_watchers: Megfigyelők |
|
638 | 638 | setting_commit_logs_encoding: Commit üzenetek kódlapja |
|
639 | 639 | button_quote: Idézet |
|
640 | 640 | setting_sequential_project_identifiers: Szekvenciális projekt azonosítók generálása |
|
641 | 641 | notice_unable_delete_version: A verziót nem lehet törölni |
|
642 | 642 | label_renamed: átnevezve |
|
643 | 643 | label_copied: lemásolva |
|
644 | 644 | setting_plain_text_mail: csak szöveg (nem HTML) |
|
645 | 645 | permission_view_files: Fájlok megtekintése |
|
646 | 646 | permission_edit_issues: Feladatok szerkesztése |
|
647 | 647 | permission_edit_own_time_entries: Saját időnapló szerkesztése |
|
648 | 648 | permission_manage_public_queries: Nyilvános kérések kezelése |
|
649 | 649 | permission_add_issues: Feladat felvétele |
|
650 | 650 | permission_log_time: Idő rögzítése |
|
651 | 651 | permission_view_changesets: Változáskötegek megtekintése |
|
652 | 652 | permission_view_time_entries: Időrögzítések megtekintése |
|
653 | 653 | permission_manage_versions: Verziók kezelése |
|
654 | 654 | permission_manage_wiki: Wiki kezelése |
|
655 | 655 | permission_manage_categories: Feladat kategóriák kezelése |
|
656 | 656 | permission_protect_wiki_pages: Wiki oldalak védelme |
|
657 | 657 | permission_comment_news: Hírek kommentelése |
|
658 | 658 | permission_delete_messages: Üzenetek törlése |
|
659 | 659 | permission_select_project_modules: Projekt modulok kezelése |
|
660 | 660 | permission_manage_documents: Dokumentumok kezelése |
|
661 | 661 | permission_edit_wiki_pages: Wiki oldalak szerkesztése |
|
662 | 662 | permission_add_issue_watchers: Megfigyelők felvétele |
|
663 | 663 | permission_view_gantt: Gannt diagramm megtekintése |
|
664 | 664 | permission_move_issues: Feladatok mozgatása |
|
665 | 665 | permission_manage_issue_relations: Feladat kapcsolatok kezelése |
|
666 | 666 | permission_delete_wiki_pages: Wiki oldalak törlése |
|
667 | 667 | permission_manage_boards: Fórumok kezelése |
|
668 | 668 | permission_delete_wiki_pages_attachments: Csatolmányok törlése |
|
669 | 669 | permission_view_wiki_edits: Wiki történet megtekintése |
|
670 | 670 | permission_add_messages: Üzenet beküldése |
|
671 | 671 | permission_view_messages: Üzenetek megtekintése |
|
672 | 672 | permission_manage_files: Fájlok kezelése |
|
673 | 673 | permission_edit_issue_notes: Jegyzetek szerkesztése |
|
674 | 674 | permission_manage_news: Hírek kezelése |
|
675 | 675 | permission_view_calendar: Naptár megtekintése |
|
676 | 676 | permission_manage_members: Tagok kezelése |
|
677 | 677 | permission_edit_messages: Üzenetek szerkesztése |
|
678 | 678 | permission_delete_issues: Feladatok törlése |
|
679 | 679 | permission_view_issue_watchers: Megfigyelők listázása |
|
680 | 680 | permission_manage_repository: Tárolók kezelése |
|
681 | 681 | permission_commit_access: Commit hozzáférés |
|
682 | 682 | permission_browse_repository: Tároló böngészése |
|
683 | 683 | permission_view_documents: Dokumetumok megtekintése |
|
684 | 684 | permission_edit_project: Projekt szerkesztése |
|
685 | 685 | permission_add_issue_notes: Jegyzet rögzítése |
|
686 | 686 | permission_save_queries: Kérések mentése |
|
687 | 687 | permission_view_wiki_pages: Wiki megtekintése |
|
688 | 688 | permission_rename_wiki_pages: Wiki oldalak átnevezése |
|
689 | 689 | permission_edit_time_entries: Időnaplók szerkesztése |
|
690 | 690 | permission_edit_own_issue_notes: Saját jegyzetek szerkesztése |
|
691 | 691 | setting_gravatar_enabled: Felhasználói fényképek engedélyezése |
|
692 | 692 | label_example: Példa |
|
693 | 693 | text_repository_usernames_mapping: "Állítsd be a felhasználó összerendeléseket a Redmine, és a tároló logban található felhasználók között.\nAz azonos felhasználó nevek összerendelése automatikusan megtörténik." |
|
694 | 694 | permission_edit_own_messages: Saját üzenetek szerkesztése |
|
695 | 695 | permission_delete_own_messages: Saját üzenetek törlése |
|
696 | 696 | label_user_activity: "%s tevékenységei" |
|
697 |
label_updated_time_by: |
|
|
698 | text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' | |
|
699 |
setting_diff_max_lines_displayed: |
|
|
697 | label_updated_time_by: "Módosította %s ennyivel ezelőtt: %s" | |
|
698 | text_diff_truncated: '... A diff fájl vége nem jelenik meg, mert hosszab, mint a megjeleníthető sorok száma.' | |
|
699 | setting_diff_max_lines_displayed: A megjelenítendő sorok száma (maximum) a diff fájloknál |
@@ -1,698 +1,698 | |||
|
1 | 1 | _gloc_rule_default: '|n| n==1 ? "" : "_plural" ' |
|
2 | 2 | |
|
3 | 3 | actionview_datehelper_select_day_prefix: |
|
4 | 4 | actionview_datehelper_select_month_names: 1월,2월,3월,4월,5월,6월,7월,8월,9월,10월,11월,12월 |
|
5 | 5 | actionview_datehelper_select_month_names_abbr: 1월,2월,3월,4월,5월,6월,7월,8월,9월,10월,11월,12월 |
|
6 | 6 | actionview_datehelper_select_month_prefix: |
|
7 | 7 | actionview_datehelper_select_year_prefix: |
|
8 | 8 | actionview_datehelper_time_in_words_day: 하루 |
|
9 | 9 | actionview_datehelper_time_in_words_day_plural: %d 일 |
|
10 | 10 | actionview_datehelper_time_in_words_hour_about: 약 한 시간 |
|
11 | 11 | actionview_datehelper_time_in_words_hour_about_plural: 약 %d 시간 |
|
12 | 12 | actionview_datehelper_time_in_words_hour_about_single: 약 한 시간 |
|
13 | 13 | actionview_datehelper_time_in_words_minute: 1 분 |
|
14 | 14 | actionview_datehelper_time_in_words_minute_half: 30초 |
|
15 | 15 | actionview_datehelper_time_in_words_minute_less_than: 1분 이내 |
|
16 | 16 | actionview_datehelper_time_in_words_minute_plural: %d 분 |
|
17 | 17 | actionview_datehelper_time_in_words_minute_single: 1 분 |
|
18 | 18 | actionview_datehelper_time_in_words_second_less_than: 1초 이내 |
|
19 | 19 | actionview_datehelper_time_in_words_second_less_than_plural: %d 초 이전 |
|
20 | 20 | actionview_instancetag_blank_option: 선택하세요 |
|
21 | 21 | |
|
22 | 22 | activerecord_error_inclusion: 은(는) 목록에 포함되어 있지 않습니다. |
|
23 | 23 | activerecord_error_exclusion: 은(는) 예약되어 있습니다. |
|
24 | 24 | activerecord_error_invalid: 은(는) 유효하지 않습니다. |
|
25 | 25 | activerecord_error_confirmation: 는 제약조건(confirmation)에 맞지 않습니다. |
|
26 | 26 | activerecord_error_accepted: must be accepted |
|
27 | 27 | activerecord_error_empty: 는 길이가 0일 수가 없습니다. |
|
28 | 28 | activerecord_error_blank: 는 빈 값이어서는 안됩니다. |
|
29 | 29 | activerecord_error_too_long: 는 너무 깁니다. |
|
30 | 30 | activerecord_error_too_short: 는 너무 짧습니다. |
|
31 | 31 | activerecord_error_wrong_length: 는 잘못된 길이입니다. |
|
32 | 32 | activerecord_error_taken: 가 이미 값을 가지고 있습니다. |
|
33 | 33 | activerecord_error_not_a_number: 는 숫자가 아닙니다. |
|
34 | 34 | activerecord_error_not_a_date: 는 잘못된 날짜 값입니다. |
|
35 | 35 | activerecord_error_greater_than_start_date: 는 시작날짜보다 커야 합니다. |
|
36 | 36 | activerecord_error_not_same_project: 는 같은 프로젝트에 속해 있지 않습니다. |
|
37 | 37 | activerecord_error_circular_dependency: 이 관계는 순환 의존관계를 만들 수있습니다. |
|
38 | 38 | |
|
39 | 39 | general_fmt_age: %d 년 |
|
40 | 40 | general_fmt_age_plural: %d 년 |
|
41 | 41 | general_fmt_date: %%Y-%%m-%%d |
|
42 | 42 | general_fmt_datetime: %%Y-%%m-%%d %%I:%%M %%p |
|
43 | 43 | general_fmt_datetime_short: %%b %%d, %%I:%%M %%p |
|
44 | 44 | general_fmt_time: %%I:%%M %%p |
|
45 | 45 | general_text_No: '아니오' |
|
46 | 46 | general_text_Yes: '예' |
|
47 | 47 | general_text_no: '아니오' |
|
48 | 48 | general_text_yes: '예' |
|
49 | 49 | general_lang_name: 'Korean (한국어)' |
|
50 | 50 | general_csv_separator: ',' |
|
51 | 51 | general_csv_decimal_separator: '.' |
|
52 | 52 | general_csv_encoding: CP949 |
|
53 | 53 | general_pdf_encoding: CP949 |
|
54 | 54 | general_day_names: 월요일,화요일,수요일,목요일,금요일,토요일,일요일 |
|
55 | 55 | general_first_day_of_week: '7' |
|
56 | 56 | |
|
57 | 57 | notice_account_updated: 계정이 성공적으로 변경 되었습니다. |
|
58 | 58 | notice_account_invalid_creditentials: 잘못된 계정 또는 비밀번호 |
|
59 | 59 | notice_account_password_updated: 비밀번호가 잘 변경되었습니다. |
|
60 | 60 | notice_account_wrong_password: 잘못된 비밀번호 |
|
61 | 61 | notice_account_register_done: 계정이 잘 만들어졌습니다. 계정을 활성화하시려면 받은 메일의 링크를 클릭해주세요. |
|
62 | 62 | notice_account_unknown_email: 알려지지 않은 사용자. |
|
63 | 63 | notice_can_t_change_password: 이 계정은 외부 인증을 이용합니다. 비밀번호를 변경할 수 없습니다. |
|
64 | 64 | notice_account_lost_email_sent: 새로운 비밀번호를 위한 메일이 발송되었습니다. |
|
65 | 65 | notice_account_activated: 계정이 활성화 되었습니다. 이제 로그인 하실수 있습니다. |
|
66 | 66 | notice_successful_create: 생성 성공. |
|
67 | 67 | notice_successful_update: 변경 성공. |
|
68 | 68 | notice_successful_delete: 삭제 성공. |
|
69 | 69 | notice_successful_connection: 연결 성공. |
|
70 | 70 | notice_file_not_found: 요청하신 페이지는 삭제되었거나 옮겨졌습니다. |
|
71 | 71 | notice_locking_conflict: 다른 사용자에 의해서 데이터가 변경되었습니다. |
|
72 | 72 | notice_not_authorized: 이 페이지에 접근할 권한이 없습니다. |
|
73 | 73 | notice_email_sent: %s님에게 메일이 발송되었습니다. |
|
74 | 74 | notice_email_error: 메일을 전송하는 과정에 오류가 발생했습니다. (%s) |
|
75 | 75 | notice_feeds_access_key_reseted: RSS에 접근가능한 열쇠(key)가 생성되었습니다. |
|
76 | 76 | notice_failed_to_save_issues: "저장에 실패하였습니다: 실패 %d(선택 %d): %s." |
|
77 | 77 | notice_no_issue_selected: "일감이 선택되지 않았습니다. 수정하기 원하는 일감을 선택하세요" |
|
78 | 78 | |
|
79 | 79 | error_scm_not_found: 소스 저장소에 해당 내용이 존재하지 않습니다. |
|
80 | 80 | error_scm_command_failed: "저장소에 접근하는 도중에 오류가 발생하였습니다.: %s" |
|
81 | 81 | |
|
82 | 82 | mail_subject_lost_password: 당신의 비밀번호 (%s) |
|
83 | 83 | mail_body_lost_password: '비밀번호를 변경하기 위해서 링크를 이용하세요' |
|
84 | 84 | mail_subject_register: 당신의 계정 활성화 (%s) |
|
85 | 85 | mail_body_register: '계정을 활성화 하기 위해서 링크를 이용하세요 :' |
|
86 | 86 | |
|
87 | 87 | gui_validation_error: 1 에러 |
|
88 | 88 | gui_validation_error_plural: %d 에러 |
|
89 | 89 | |
|
90 | 90 | field_name: 이름 |
|
91 | 91 | field_description: 설명 |
|
92 | 92 | field_summary: 요약 |
|
93 | 93 | field_is_required: 필수 |
|
94 | 94 | field_firstname: 이름 |
|
95 | 95 | field_lastname: 성 |
|
96 | 96 | field_mail: 메일 |
|
97 | 97 | field_filename: 파일 |
|
98 | 98 | field_filesize: 크기 |
|
99 | 99 | field_downloads: 다운로드 |
|
100 | 100 | field_author: 보고자 |
|
101 | 101 | field_created_on: 보고시간 |
|
102 | 102 | field_updated_on: 변경시간 |
|
103 | 103 | field_field_format: 포맷 |
|
104 | 104 | field_is_for_all: 모든 프로젝트 |
|
105 | 105 | field_possible_values: 가능한 값들 |
|
106 | 106 | field_regexp: 정규식 |
|
107 | 107 | field_min_length: 최소 길이 |
|
108 | 108 | field_max_length: 최대 길이 |
|
109 | 109 | field_value: 값 |
|
110 | 110 | field_category: 카테고리 |
|
111 | 111 | field_title: 제목 |
|
112 | 112 | field_project: 프로젝트 |
|
113 | 113 | field_issue: 일감 |
|
114 | 114 | field_status: 상태 |
|
115 | 115 | field_notes: 덧글 |
|
116 | 116 | field_is_closed: 완료된 일감 |
|
117 | 117 | field_is_default: 기본값 |
|
118 | 118 | field_tracker: 구분 |
|
119 | 119 | field_subject: 제목 |
|
120 | 120 | field_due_date: 완료 기한 |
|
121 | 121 | field_assigned_to: 담당자 |
|
122 | 122 | field_priority: 우선순위 |
|
123 |
field_fixed_version: 목표 |
|
|
123 | field_fixed_version: 목표버전 | |
|
124 | 124 | field_user: 사용자 |
|
125 | 125 | field_role: 역할 |
|
126 | 126 | field_homepage: 홈페이지 |
|
127 | 127 | field_is_public: 공개 |
|
128 | 128 | field_parent: 상위 프로젝트 |
|
129 |
field_is_in_chlog: 변경이력(changelog)에서 |
|
|
130 |
field_is_in_roadmap: 로드맵에서 |
|
|
129 | field_is_in_chlog: 변경이력(changelog)에서 표시할 일감들 | |
|
130 | field_is_in_roadmap: 로드맵에서표시할 일감들 | |
|
131 | 131 | field_login: 로그인 |
|
132 | 132 | field_mail_notification: 메일 알림 |
|
133 | 133 | field_admin: 관리자 |
|
134 |
field_last_login_on: |
|
|
134 | field_last_login_on: 마지막 로그인 | |
|
135 | 135 | field_language: 언어 |
|
136 | 136 | field_effective_date: 일자 |
|
137 | 137 | field_password: 비밀번호 |
|
138 | 138 | field_new_password: 새 비밀번호 |
|
139 | 139 | field_password_confirmation: 비밀번호 확인 |
|
140 | 140 | field_version: 버전 |
|
141 | 141 | field_type: 타입 |
|
142 | 142 | field_host: 호스트 |
|
143 | 143 | field_port: 포트 |
|
144 | 144 | field_account: 계정 |
|
145 | 145 | field_base_dn: 기본 DN |
|
146 | 146 | field_attr_login: 로그인 속성 |
|
147 | 147 | field_attr_firstname: 이름 속성 |
|
148 | 148 | field_attr_lastname: 성 속성 |
|
149 | 149 | field_attr_mail: 메일 속성 |
|
150 | 150 | field_onthefly: 빠른 사용자 생성 |
|
151 | 151 | field_start_date: 시작시간 |
|
152 | 152 | field_done_ratio: 완료 %% |
|
153 | 153 | field_auth_source: 인증 방법 |
|
154 | 154 | field_hide_mail: 내 메일 주소 숨기기 |
|
155 | 155 | field_comments: 코멘트 |
|
156 | 156 | field_url: URL |
|
157 | 157 | field_start_page: 시작 페이지 |
|
158 | 158 | field_subproject: 서브 프로젝트 |
|
159 | 159 | field_hours: 시간 |
|
160 | 160 | field_activity: 작업종류 |
|
161 | 161 | field_spent_on: 작업시간 |
|
162 | 162 | field_identifier: 식별자 |
|
163 | 163 | field_is_filter: 필터로 사용됨 |
|
164 | 164 | field_issue_to_id: 연관된 일감 |
|
165 | 165 | field_delay: 지연 |
|
166 | 166 | field_assignable: 이 역할에 할당될수 있는 일감 |
|
167 | 167 | field_redirect_existing_links: 기존의 링크로 돌려보냄(redirect) |
|
168 | 168 | field_estimated_hours: 추정시간 |
|
169 | 169 | field_column_names: 컬럼 |
|
170 | 170 | field_default_value: 기본값 |
|
171 | 171 | |
|
172 | 172 | setting_app_title: 레드마인 제목 |
|
173 | 173 | setting_app_subtitle: 레드마인 부제목 |
|
174 | 174 | setting_welcome_text: 환영 메시지 |
|
175 | 175 | setting_default_language: 기본 언어 |
|
176 | 176 | setting_login_required: 인증이 필요함. |
|
177 | 177 | setting_self_registration: 사용자 직접등록 |
|
178 | 178 | setting_attachment_max_size: 최대 첨부파일 크기 |
|
179 | 179 | setting_issues_export_limit: 일감 내보내기 제한 개수 |
|
180 | 180 | setting_mail_from: 발신 메일 주소 |
|
181 | 181 | setting_host_name: 호스트 이름 |
|
182 | 182 | setting_text_formatting: 본문 형식 |
|
183 | 183 | setting_wiki_compression: 위키 이력 압축 |
|
184 | 184 | setting_feeds_limit: 내용 피드(RSS Feed) 제한 개수 |
|
185 | 185 | setting_autofetch_changesets: 커밋된 변경묶음을 자동으로 가져오기 |
|
186 | 186 | setting_sys_api_enabled: 저장소 관리자에 WS 를 허용 |
|
187 | 187 | setting_commit_ref_keywords: 일감 참조에 사용할 키워드들 |
|
188 | 188 | setting_commit_fix_keywords: 일감 해결에 사용할 키워드들 |
|
189 | 189 | setting_autologin: 자동 로그인 |
|
190 | 190 | setting_date_format: 날짜 형식 |
|
191 |
setting_cross_project_issue_relations: 프로젝트간 일감에 관 |
|
|
191 | setting_cross_project_issue_relations: 프로젝트간 일감에 관계을 맺는 것을 허용 | |
|
192 | 192 | setting_issue_list_default_columns: 일감 목록에 보여줄 기본 컬럼들 |
|
193 | 193 | setting_repositories_encodings: 저장소 인코딩 |
|
194 | 194 | setting_emails_footer: 메일 꼬리 |
|
195 | 195 | |
|
196 | 196 | label_user: 사용자 |
|
197 | 197 | label_user_plural: 사용자관리 |
|
198 | 198 | label_user_new: 새 사용자 |
|
199 | 199 | label_project: 프로젝트 |
|
200 | 200 | label_project_new: 새 프로젝트 |
|
201 | 201 | label_project_plural: 프로젝트 |
|
202 | 202 | label_project_all: 모든 프로젝트 |
|
203 | 203 | label_project_latest: 최근 프로젝트 |
|
204 |
label_issue: 일감 |
|
|
204 | label_issue: 일감 | |
|
205 | 205 | label_issue_new: 새 일감만들기 |
|
206 | 206 | label_issue_plural: 일감 보기 |
|
207 | 207 | label_issue_view_all: 모든 일감 보기 |
|
208 | 208 | label_document: 문서 |
|
209 | 209 | label_document_new: 새 문서 |
|
210 | 210 | label_document_plural: 문서 |
|
211 | 211 | label_role: 역할 |
|
212 | 212 | label_role_plural: 역할 |
|
213 | 213 | label_role_new: 새 역할 |
|
214 | 214 | label_role_and_permissions: 권한관리 |
|
215 | 215 | label_member: 담당자 |
|
216 | 216 | label_member_new: 새 담당자 |
|
217 | 217 | label_member_plural: 담당자 |
|
218 | 218 | label_tracker: 일감 유형 |
|
219 | 219 | label_tracker_plural: 일감 유형 |
|
220 | 220 | label_tracker_new: 새 일감 유형 |
|
221 | 221 | label_workflow: 워크플로 |
|
222 | 222 | label_issue_status: 일감 상태 |
|
223 | 223 | label_issue_status_plural: 일감 상태 |
|
224 | 224 | label_issue_status_new: 새 일감 상태 |
|
225 | 225 | label_issue_category: 카테고리 |
|
226 | 226 | label_issue_category_plural: 카테고리 |
|
227 | 227 | label_issue_category_new: 새 카테고리 |
|
228 | 228 | label_custom_field: 사용자 정의 항목 |
|
229 | 229 | label_custom_field_plural: 사용자 정의 항목 |
|
230 | 230 | label_custom_field_new: 새 사용자 정의 항목 |
|
231 | 231 | label_enumerations: 코드값 설정 |
|
232 | 232 | label_enumeration_new: 새 코드값 |
|
233 | 233 | label_information: 정보 |
|
234 | 234 | label_information_plural: 정보 |
|
235 | 235 | label_please_login: 로그인하세요. |
|
236 | 236 | label_register: 등록 |
|
237 | 237 | label_password_lost: 비밀번호 찾기 |
|
238 | 238 | label_home: 초기화면 |
|
239 | 239 | label_my_page: 내페이지 |
|
240 | 240 | label_my_account: 내계정 |
|
241 | 241 | label_my_projects: 나의 프로젝트 |
|
242 | 242 | label_administration: 관리자 |
|
243 | 243 | label_login: 로그인 |
|
244 | 244 | label_logout: 로그아웃 |
|
245 | 245 | label_help: 도움말 |
|
246 | 246 | label_reported_issues: 보고된 일감 |
|
247 | 247 | label_assigned_to_me_issues: 나에게 할당된 일감 |
|
248 | 248 | label_last_login: 최종 접속 |
|
249 | 249 | label_last_updates: 최종 변경 내역 |
|
250 | 250 | label_last_updates_plural: 최종변경 %d |
|
251 | 251 | label_registered_on: 등록시각 |
|
252 |
label_activity: |
|
|
253 |
label_new: |
|
|
254 |
label_logged_as: |
|
|
252 | label_activity: 작업내역 | |
|
253 | label_new: 새로 만들기 | |
|
254 | label_logged_as: '로그인계정:' | |
|
255 | 255 | label_environment: 환경 |
|
256 | 256 | label_authentication: 인증설정 |
|
257 | 257 | label_auth_source: 인증 모드 |
|
258 | 258 | label_auth_source_new: 신규 인증 모드 |
|
259 | 259 | label_auth_source_plural: 인증 모드 |
|
260 | 260 | label_subproject_plural: 서브 프로젝트 |
|
261 | 261 | label_min_max_length: 최소 - 최대 길이 |
|
262 | 262 | label_list: 리스트 |
|
263 | 263 | label_date: 날짜 |
|
264 | 264 | label_integer: 정수 |
|
265 | 265 | label_float: 부동상수 |
|
266 | 266 | label_boolean: 부울린 |
|
267 | 267 | label_string: 문자열 |
|
268 | 268 | label_text: 텍스트 |
|
269 | 269 | label_attribute: 속성 |
|
270 | 270 | label_attribute_plural: 속성 |
|
271 | 271 | label_download: %d 다운로드 |
|
272 | 272 | label_download_plural: %d 다운로드 |
|
273 | 273 | label_no_data: 데이터가 없습니다. |
|
274 | 274 | label_change_status: 상태 변경 |
|
275 | 275 | label_history: 이력 |
|
276 | 276 | label_attachment: 파일 |
|
277 | 277 | label_attachment_new: 파일추가 |
|
278 | 278 | label_attachment_delete: 파일삭제 |
|
279 | 279 | label_attachment_plural: 관련파일 |
|
280 | 280 | label_report: 보고서 |
|
281 | 281 | label_report_plural: 보고서 |
|
282 | 282 | label_news: 뉴스 |
|
283 |
label_news_new: 뉴스 |
|
|
283 | label_news_new: 새 뉴스 | |
|
284 | 284 | label_news_plural: 뉴스 |
|
285 | 285 | label_news_latest: 최근 뉴스 |
|
286 | 286 | label_news_view_all: 모든 뉴스 |
|
287 | 287 | label_change_log: 변경 로그 |
|
288 | 288 | label_settings: 설정 |
|
289 | 289 | label_overview: 개요 |
|
290 | 290 | label_version: 버전 |
|
291 | 291 | label_version_new: 새 버전 |
|
292 | 292 | label_version_plural: 버전 |
|
293 | 293 | label_confirmation: 확인 |
|
294 | 294 | label_export_to: 내보내기 |
|
295 | 295 | label_read: 읽기... |
|
296 | 296 | label_public_projects: 공개된 프로젝트 |
|
297 | 297 | label_open_issues: 진행중 |
|
298 | 298 | label_open_issues_plural: 진행중 |
|
299 | 299 | label_closed_issues: 완료됨 |
|
300 | 300 | label_closed_issues_plural: 완료됨 |
|
301 |
label_total: |
|
|
301 | label_total: 합계 | |
|
302 | 302 | label_permissions: 허가권한 |
|
303 | 303 | label_current_status: 일감 상태 |
|
304 | 304 | label_new_statuses_allowed: 허용되는 일감 상태 |
|
305 | 305 | label_all: 모두 |
|
306 | 306 | label_none: 없음 |
|
307 | 307 | label_next: 다음 |
|
308 | 308 | label_previous: 이전 |
|
309 | 309 | label_used_by: 사용됨 |
|
310 | 310 | label_details: 상세 |
|
311 | 311 | label_add_note: 일감덧글 추가 |
|
312 | 312 | label_per_page: 페이지별 |
|
313 | 313 | label_calendar: 달력 |
|
314 | 314 | label_months_from: 개월 동안 | 다음부터 |
|
315 | 315 | label_gantt: Gantt 챠트 |
|
316 | 316 | label_internal: 내부 |
|
317 | 317 | label_last_changes: 지난 변경사항 %d 건 |
|
318 | 318 | label_change_view_all: 모든 변경 내역 보기 |
|
319 |
label_personalize_page: 입맛대로 구성하기 |
|
|
319 | label_personalize_page: 입맛대로 구성하기 | |
|
320 | 320 | label_comment: 댓글 |
|
321 | 321 | label_comment_plural: 댓글 |
|
322 | 322 | label_comment_add: 댓글 추가 |
|
323 | 323 | label_comment_added: 댓글이 추가되었습니다. |
|
324 | 324 | label_comment_delete: 댓글 삭제 |
|
325 | 325 | label_query: 사용자 검색조건 |
|
326 | 326 | label_query_plural: 사용자 검색조건 |
|
327 | 327 | label_query_new: 새 사용자 검색조건 |
|
328 | 328 | label_filter_add: 필터 추가 |
|
329 | 329 | label_filter_plural: 필터 |
|
330 | 330 | label_equals: 이다 |
|
331 | 331 | label_not_equals: 아니다 |
|
332 | 332 | label_in_less_than: 이내 |
|
333 | 333 | label_in_more_than: 이후 |
|
334 | 334 | label_in: 이내 |
|
335 | 335 | label_today: 오늘 |
|
336 | 336 | label_this_week: 이번주 |
|
337 | 337 | label_less_than_ago: 이전 |
|
338 | 338 | label_more_than_ago: 이후 |
|
339 | 339 | label_ago: 일 전 |
|
340 | 340 | label_contains: 포함되는 키워드 |
|
341 | 341 | label_not_contains: 포함하지 않는 키워드 |
|
342 | 342 | label_day_plural: 일 |
|
343 | 343 | label_repository: 저장소 |
|
344 | 344 | label_browse: 저장소 살피기 |
|
345 | 345 | label_modification: %d 변경 |
|
346 | 346 | label_modification_plural: %d 변경 |
|
347 | 347 | label_revision: 개정판 |
|
348 | 348 | label_revision_plural: 개정판 |
|
349 | 349 | label_added: 추가됨 |
|
350 | 350 | label_modified: 변경됨 |
|
351 | 351 | label_deleted: 삭제됨 |
|
352 | 352 | label_latest_revision: 최근 개정판 |
|
353 | 353 | label_latest_revision_plural: 최근 개정판 |
|
354 | 354 | label_view_revisions: 개정판 보기 |
|
355 | 355 | label_max_size: 최대 크기 |
|
356 |
label_on: ' |
|
|
356 | label_on: '전체: ' | |
|
357 | 357 | label_sort_highest: 최상단으로 |
|
358 | 358 | label_sort_higher: 위로 |
|
359 | 359 | label_sort_lower: 아래로 |
|
360 | 360 | label_sort_lowest: 최하단으로 |
|
361 | 361 | label_roadmap: 로드맵 |
|
362 | 362 | label_roadmap_due_in: 기한 %s |
|
363 | 363 | label_roadmap_overdue: %s 지연 |
|
364 | label_roadmap_no_issues: 이버전에 해당하는 일감 없음 | |
|
364 | label_roadmap_no_issues: 이 버전에 해당하는 일감 없음 | |
|
365 | 365 | label_search: 검색 |
|
366 | 366 | label_result_plural: 결과 |
|
367 | 367 | label_all_words: 모든 단어 |
|
368 | 368 | label_wiki: 위키 |
|
369 | 369 | label_wiki_edit: 위키 편집 |
|
370 | 370 | label_wiki_edit_plural: 위키 편집 |
|
371 | 371 | label_wiki_page: 위키 |
|
372 | 372 | label_wiki_page_plural: 위키 |
|
373 | 373 | label_index_by_title: 제목별 색인 |
|
374 | 374 | label_index_by_date: 날짜별 색인 |
|
375 | 375 | label_current_version: 현재 버전 |
|
376 | 376 | label_preview: 미리보기 |
|
377 | 377 | label_feed_plural: 피드(Feeds) |
|
378 | 378 | label_changes_details: 모든 상세 변경 내역 |
|
379 | 379 | label_issue_tracking: 일감 추적 |
|
380 | 380 | label_spent_time: 작업 시간 |
|
381 | 381 | label_f_hour: %.2f 시간 |
|
382 | 382 | label_f_hour_plural: %.2f 시간 |
|
383 | 383 | label_time_tracking: 시간추적 |
|
384 | 384 | label_change_plural: 변경사항들 |
|
385 | 385 | label_statistics: 통계 |
|
386 | 386 | label_commits_per_month: 월별 커밋 내역 |
|
387 | 387 | label_commits_per_author: 아이디별 커밋 내역 |
|
388 | 388 | label_view_diff: 차이점 보기 |
|
389 | 389 | label_diff_inline: 한줄로 |
|
390 | 390 | label_diff_side_by_side: 두줄로 |
|
391 | 391 | label_options: 옵션 |
|
392 | 392 | label_copy_workflow_from: 워크플로우를 복사해올 일감유형 |
|
393 | 393 | label_permissions_report: 권한 보고서 |
|
394 | 394 | label_watched_issues: 지켜보고 있는 일감 |
|
395 | 395 | label_related_issues: 연결된 일감 |
|
396 | 396 | label_applied_status: 적용된 상태 |
|
397 | 397 | label_loading: 읽는 중... |
|
398 | 398 | label_relation_new: 새 관계 |
|
399 | 399 | label_relation_delete: 관계 지우기 |
|
400 | 400 | label_relates_to: 다음 일감과 관련되어 있음 |
|
401 | 401 | label_duplicates: 다음 일감과 중복됨. |
|
402 | 402 | label_blocks: 다음 일감이 해결을 막고 있음. |
|
403 | 403 | label_blocked_by: 막고 있는 일감 |
|
404 | 404 | label_precedes: 다음 일감보다 앞서서 처리해야 함. |
|
405 | 405 | label_follows: 먼저 처리해야할 일감 |
|
406 | 406 | label_end_to_start: end to start |
|
407 | 407 | label_end_to_end: end to end |
|
408 | 408 | label_start_to_start: start to start |
|
409 | 409 | label_start_to_end: start to end |
|
410 | 410 | label_stay_logged_in: 로그인 유지 |
|
411 | 411 | label_disabled: 비활성화 |
|
412 | 412 | label_show_completed_versions: 완료된 버전 보기 |
|
413 | 413 | label_me: 나 |
|
414 | 414 | label_board: 게시판 |
|
415 |
label_board_new: |
|
|
415 | label_board_new: 새 게시판 | |
|
416 | 416 | label_board_plural: 게시판 |
|
417 | 417 | label_topic_plural: 주제 |
|
418 | 418 | label_message_plural: 관련글 |
|
419 |
label_message_last: |
|
|
419 | label_message_last: 마지막 글 | |
|
420 | 420 | label_message_new: 새글쓰기 |
|
421 | 421 | label_reply_plural: 답글 |
|
422 | 422 | label_send_information: 사용자에게 계정정보를 보냄 |
|
423 | 423 | label_year: 년 |
|
424 | 424 | label_month: 월 |
|
425 | 425 | label_week: 주 |
|
426 |
label_date_from: |
|
|
427 |
label_date_to: |
|
|
426 | label_date_from: '기간:' | |
|
427 | label_date_to: ' ~ ' | |
|
428 | 428 | label_language_based: 언어설정에 따름 |
|
429 | 429 | label_sort_by: 정렬방법(%s) |
|
430 | 430 | label_send_test_email: 테스트 메일 보내기 |
|
431 | 431 | label_feeds_access_key_created_on: RSS에 접근가능한 열쇠(key)가 %s 이전에 생성 |
|
432 | 432 | label_module_plural: 모듈 |
|
433 | 433 | label_added_time_by: %s이(가) %s 전에 추가함 |
|
434 | 434 | label_updated_time: %s 전에 수정됨 |
|
435 | 435 | label_jump_to_a_project: 다른 프로젝트로 이동하기 |
|
436 | 436 | label_file_plural: 파일 |
|
437 | 437 | label_changeset_plural: 변경묶음 |
|
438 | 438 | label_default_columns: 기본 컬럼 |
|
439 | 439 | label_no_change_option: (수정 안함) |
|
440 | 440 | label_bulk_edit_selected_issues: 선택된 일감들을 한꺼번에 수정하기 |
|
441 | 441 | label_theme: 테마 |
|
442 | 442 | label_default: 기본 |
|
443 | 443 | label_search_titles_only: 제목에서만 찾기 |
|
444 | 444 | label_user_mail_option_all: "내가 속한 프로젝트로들부터 모든 메일 받기" |
|
445 | 445 | label_user_mail_option_selected: "선택한 프로젝트들로부터 모든 메일 받기.." |
|
446 | 446 | label_user_mail_option_none: "내가 속하거나 감시 중인 사항에 대해서만" |
|
447 | 447 | |
|
448 | 448 | button_login: 로그인 |
|
449 | 449 | button_submit: 확인 |
|
450 | 450 | button_save: 저장 |
|
451 | 451 | button_check_all: 모두선택 |
|
452 | 452 | button_uncheck_all: 선택해제 |
|
453 | 453 | button_delete: 삭제 |
|
454 | 454 | button_create: 완료 |
|
455 | 455 | button_test: 테스트 |
|
456 | 456 | button_edit: 편집 |
|
457 | 457 | button_add: 추가 |
|
458 | 458 | button_change: 변경 |
|
459 | 459 | button_apply: 적용 |
|
460 | 460 | button_clear: 초기화 |
|
461 | 461 | button_lock: 잠금 |
|
462 | 462 | button_unlock: 잠금해제 |
|
463 | 463 | button_download: 다운로드 |
|
464 | 464 | button_list: 목록 |
|
465 | 465 | button_view: 보기 |
|
466 | 466 | button_move: 이동 |
|
467 | 467 | button_back: 뒤로 |
|
468 | 468 | button_cancel: 취소 |
|
469 | 469 | button_activate: 활성화 |
|
470 | 470 | button_sort: 정렬 |
|
471 | 471 | button_log_time: 작업시간 기록 |
|
472 | 472 | button_rollback: 이 버전으로 롤백 |
|
473 | 473 | button_watch: 지켜보기 |
|
474 | 474 | button_unwatch: 관심끄기 |
|
475 | 475 | button_reply: 답글 |
|
476 | 476 | button_archive: 잠금보관 |
|
477 | 477 | button_unarchive: 잠금보관해제 |
|
478 | 478 | button_reset: 리셋 |
|
479 | 479 | button_rename: 이름변경 |
|
480 | 480 | |
|
481 | 481 | status_active: 사용중 |
|
482 | 482 | status_registered: 등록대기 |
|
483 | 483 | status_locked: 잠김 |
|
484 | 484 | |
|
485 | 485 | text_select_mail_notifications: 알림메일이 필요한 작업을 선택하세요. |
|
486 | 486 | text_regexp_info: 예) ^[A-Z0-9]+$ |
|
487 | 487 | text_min_max_length_info: 0 는 제한이 없음을 의미함 |
|
488 | 488 | text_project_destroy_confirmation: 이 프로젝트를 삭제하고 모든 데이터를 지우시겠습니까? |
|
489 | 489 | text_workflow_edit: 워크플로를 수정하기 위해서 역할과 일감유형을 선택하세요. |
|
490 | 490 | text_are_you_sure: 계속 진행 하시겠습니까? |
|
491 | 491 | text_journal_changed: %s에서 %s(으)로 변경 |
|
492 | 492 | text_journal_set_to: %s로 설정 |
|
493 | 493 | text_journal_deleted: 삭제됨 |
|
494 | 494 | text_tip_task_begin_day: 오늘 시작하는 업무(task) |
|
495 | 495 | text_tip_task_end_day: 오늘 종료하는 업무(task) |
|
496 | 496 | text_tip_task_begin_end_day: 오늘 시작하고 종료하는 업무(task) |
|
497 | 497 | text_project_identifier_info: '영문 소문자 (a-z), 및 숫자 대쉬(-) 가능.<br />저장된후에는 식별자 변경 불가능.' |
|
498 | 498 | text_caracters_maximum: 최대 %d 글자 가능. |
|
499 | 499 | text_length_between: %d 에서 %d 글자 |
|
500 | 500 | text_tracker_no_workflow: 이 추적타입(tracker)에 워크플로우가 정의되지 않았습니다. |
|
501 | 501 | text_unallowed_characters: 허용되지 않는 문자열 |
|
502 | 502 | text_comma_separated: 복수의 값들이 허용됩니다.(구분자 ,) |
|
503 | 503 | text_issues_ref_in_commit_messages: 커밋메시지에서 일감을 참조하거나 해결하기 |
|
504 | 504 | text_issue_added: 일감[%s]가 보고되었습니다. |
|
505 | 505 | text_issue_updated: 일감[%s]가 수정되었습니다. |
|
506 | 506 | text_wiki_destroy_confirmation: 이 위키와 모든 내용을 지우시겠습니까? |
|
507 | 507 | text_issue_category_destroy_question: 일부 일감들(%d개)이 이 카테고리에 할당되어 있습니다. 어떻게 하시겠습니까? |
|
508 | 508 | text_issue_category_destroy_assignments: 카테고리 할당 지우기 |
|
509 | 509 | text_issue_category_reassign_to: 일감을 이 카테고리에 다시 할당하기 |
|
510 | 510 | text_user_mail_option: "선택하지 않은 프로젝트에서도, 모니터링 중이거나 속해있는 사항(일감을 발행했거나 할당된 경우)이 있으면 알림메일을 받게 됩니다." |
|
511 | 511 | |
|
512 | 512 | default_role_manager: 관리자 |
|
513 | 513 | default_role_developper: 개발자 |
|
514 | 514 | default_role_reporter: 보고자 |
|
515 | 515 | default_tracker_bug: 버그 |
|
516 | 516 | default_tracker_feature: 새기능 |
|
517 | 517 | default_tracker_support: 지원 |
|
518 | 518 | default_issue_status_new: 새로 만들기 |
|
519 | 519 | default_issue_status_assigned: 확인 |
|
520 | 520 | default_issue_status_resolved: 해결 |
|
521 | 521 | default_issue_status_feedback: 피드백 |
|
522 | 522 | default_issue_status_closed: 완료 |
|
523 | 523 | default_issue_status_rejected: 재처리 |
|
524 | 524 | default_doc_category_user: 사용자 문서 |
|
525 | 525 | default_doc_category_tech: 기술 문서 |
|
526 | 526 | default_priority_low: 낮음 |
|
527 | 527 | default_priority_normal: 보통 |
|
528 | 528 | default_priority_high: 높음 |
|
529 | 529 | default_priority_urgent: 긴급 |
|
530 | 530 | default_priority_immediate: 즉시 |
|
531 | 531 | default_activity_design: 설계 |
|
532 | 532 | default_activity_development: 개발 |
|
533 | 533 | |
|
534 | 534 | enumeration_issue_priorities: 일감 우선순위 |
|
535 | 535 | enumeration_doc_categories: 문서 카테고리 |
|
536 |
enumeration_activities: |
|
|
536 | enumeration_activities: 작업분류(시간추적) | |
|
537 | 537 | button_copy: 복사 |
|
538 | 538 | mail_body_account_information_external: 레드마인에 로그인할 때 "%s" 계정을 사용하실 수 있습니다. |
|
539 | 539 | button_change_password: 비밀번호 변경 |
|
540 | 540 | label_nobody: nobody |
|
541 | 541 | setting_protocol: 프로토콜 |
|
542 | 542 | mail_body_account_information: 계정 정보 |
|
543 | 543 | label_user_mail_no_self_notified: "내가 만든 변경사항들에 대해서는 알림메일을 받지 않습니다." |
|
544 | 544 | setting_time_format: 시간 형식 |
|
545 | 545 | label_registration_activation_by_email: 메일로 계정을 활성화하기 |
|
546 | 546 | mail_subject_account_activation_request: 레드마인 계정 활성화 요청 (%s) |
|
547 | 547 | mail_body_account_activation_request: '새 계정(%s)이 등록되었습니다. 관리자님의 승인을 기다리고 있습니다.:' |
|
548 | 548 | label_registration_automatic_activation: 자동 계정 활성화 |
|
549 | 549 | label_registration_manual_activation: 수동 계정 활성화 |
|
550 | 550 | notice_account_pending: "계정이 만들어 졌습니다. 관리자의 승인이 있을 때까지 기다려야 합니다." |
|
551 | 551 | field_time_zone: 타임존 |
|
552 | 552 | text_caracters_minimum: 최소한 %d 글자 이상이어야 합니다. |
|
553 | 553 | setting_bcc_recipients: 참조자들을 bcc로 숨기기 |
|
554 | 554 | button_annotate: 주석달기(annotate) |
|
555 | 555 | label_issues_by: 일감분류 방식 %s |
|
556 | 556 | field_searchable: 검색가능 |
|
557 | 557 | label_display_per_page: '페이지당: %s' |
|
558 |
setting_per_page_options: 페이지당 표시할 객 |
|
|
558 | setting_per_page_options: 페이지당 표시할 객체 수 | |
|
559 | 559 | label_age: 마지막 수정일 |
|
560 | 560 | notice_default_data_loaded: 기본 설정을 성공적으로 로드하였습니다. |
|
561 | 561 | text_load_default_configuration: 기본 설정을 로딩하기 |
|
562 | 562 | text_no_configuration_data: "역할, 일감 타입, 일감 상태들과 워크플로가 아직 설정되지 않았습니다.\n기본 설정을 로딩하는 것을 권장합니다. 로드된 후에 수정할 수 있습니다." |
|
563 | 563 | error_can_t_load_default_data: "기본 설정을 로드할 수 없습니다.: %s" |
|
564 | 564 | button_update: 수정 |
|
565 | 565 | label_change_properties: 속성 변경 |
|
566 | 566 | label_general: 일반 |
|
567 | 567 | label_repository_plural: 저장소들 |
|
568 | 568 | label_associated_revisions: 관련된 개정판들 |
|
569 | 569 | setting_user_format: 사용자 표시 형식 |
|
570 | 570 | text_status_changed_by_changeset: 변경묶음 %s에서 적용됨. |
|
571 | 571 | label_more: 자세히 |
|
572 | 572 | text_issues_destroy_confirmation: '선택한 일감을 정말로 삭제하시겠습니까?' |
|
573 | 573 | label_scm: 형상관리시스템(SCM) |
|
574 | 574 | text_select_project_modules: '이 프로젝트에서 활성화시킬 모듈을 선택하세요:' |
|
575 | 575 | label_issue_added: 일감이 추가됨 |
|
576 | 576 | label_issue_updated: 일감이 고쳐짐 |
|
577 | 577 | label_document_added: 문서가 추가됨 |
|
578 | 578 | label_message_posted: 메시지가 추가됨 |
|
579 | 579 | label_file_added: 파일이 추가됨 |
|
580 | 580 | label_news_added: 뉴스가 추가됨 |
|
581 | 581 | project_module_boards: 게시판 |
|
582 | 582 | project_module_issue_tracking: 일감관리 |
|
583 | 583 | project_module_wiki: 위키 |
|
584 | 584 | project_module_files: 관련파일 |
|
585 | 585 | project_module_documents: 문서 |
|
586 | 586 | project_module_repository: 저장소 |
|
587 | 587 | project_module_news: 뉴스 |
|
588 |
project_module_time_tracking: |
|
|
588 | project_module_time_tracking: 시간추적 | |
|
589 | 589 | text_file_repository_writable: 파일 저장소 쓰기 가능 |
|
590 | 590 | text_default_administrator_account_changed: 기본 관리자 계정이 변경되었습니다. |
|
591 |
text_rmagick_available: RMagick |
|
|
591 | text_rmagick_available: RMagick 사용가능(옵션) | |
|
592 | 592 | button_configure: 설정 |
|
593 | 593 | label_plugins: 플러그인 |
|
594 | 594 | label_ldap_authentication: LDAP 인증 |
|
595 | 595 | label_downloads_abbr: D/L |
|
596 | 596 | label_add_another_file: 다른 파일 추가 |
|
597 | 597 | label_this_month: 이번 달 |
|
598 | text_destroy_time_entries_question: %.02f hours were reported on the issues you are about to delete. What do you want to do ? | |
|
598 | text_destroy_time_entries_question: 삭제하려는 일감에 %.02f 시간이 보고되어 있습니다. 어떻게 하시겠습니까? | |
|
599 | 599 | label_last_n_days: 지난 %d 일 |
|
600 | 600 | label_all_time: 모든 시간 |
|
601 | error_issue_not_found_in_project: 'The issue was not found or does not belong to this project' | |
|
601 | error_issue_not_found_in_project: '일감이 없거나 이 프로젝트의 것이 아닙니다.' | |
|
602 | 602 | label_this_year: 올해 |
|
603 | 603 | text_assign_time_entries_to_project: 보고된 시간을 프로젝트에 할당하기 |
|
604 | 604 | label_date_range: 날짜 범위 |
|
605 | 605 | label_last_week: 지난 주 |
|
606 | 606 | label_yesterday: 어제 |
|
607 | 607 | label_optional_description: 부가적인 설명 |
|
608 | 608 | label_last_month: 지난 달 |
|
609 | 609 | text_destroy_time_entries: 보고된 시간을 삭제하기 |
|
610 | 610 | text_reassign_time_entries: '이 알림에 보고된 시간을 재할당하기:' |
|
611 |
setting_activity_days_default: 프로젝트 |
|
|
611 | setting_activity_days_default: 프로젝트 작업내역에 보여줄 날수 | |
|
612 | 612 | label_chronological_order: 시간 순으로 정렬 |
|
613 | 613 | field_comments_sorting: 히스토리 정렬 설정 |
|
614 | 614 | label_reverse_chronological_order: 시간 역순으로 정렬 |
|
615 |
label_preferences: |
|
|
615 | label_preferences: 설정 | |
|
616 | 616 | setting_display_subprojects_issues: 하위 프로젝트의 일감을 최상위 프로젝트에서 표시 |
|
617 |
label_overall_activity: 전체 |
|
|
617 | label_overall_activity: 전체 작업내역 | |
|
618 | 618 | setting_default_projects_public: 새 프로젝트를 공개로 설정 |
|
619 | error_scm_annotate: "The entry does not exist or can not be annotated." | |
|
619 | error_scm_annotate: "항목이 없거나 주석을 달 수 없습니다." | |
|
620 | 620 | label_planning: 프로젝트계획(Planning) |
|
621 | 621 | text_subprojects_destroy_warning: '서브프로젝트(%s)가 자동으로 지워질 것입니다.' |
|
622 | 622 | label_and_its_subprojects: %s와 서브프로젝트들 |
|
623 | 623 | mail_body_reminder: "님에게 할당된 %d개의 일감들을 다음 %d일 안으로 마쳐야 합니다.:" |
|
624 | 624 | mail_subject_reminder: "내일까지 마쳐야할 일감 %d개" |
|
625 | 625 | text_user_wrote: '%s의 덧글:' |
|
626 | 626 | label_duplicated_by: 중복된 일감 |
|
627 | 627 | setting_enabled_scm: 허용할 SCM |
|
628 | 628 | text_enumeration_category_reassign_to: '새로운 값을 설정:' |
|
629 | 629 | text_enumeration_destroy_question: '%d 개의 일감이 이 값을 사용하고 있습니다.' |
|
630 | 630 | label_incoming_emails: 수신 메일 설정 |
|
631 | 631 | label_generate_key: 키 생성 |
|
632 | 632 | setting_mail_handler_api_enabled: 수신 메일에 WS 를 허용 |
|
633 | 633 | setting_mail_handler_api_key: API 키 |
|
634 | 634 | text_email_delivery_not_configured: "이메일 전달이 설정되지 않았습니다. 그래서 알림이 비활성화되었습니다.\n SMTP서버를 config/email.yml에서 설정하고 어플리케이션을 다시 시작하십시오. 그러면 동작합니다." |
|
635 | 635 | field_parent_title: 상위 제목 |
|
636 | 636 | label_issue_watchers: 일감지킴이 설정 |
|
637 | 637 | setting_commit_logs_encoding: 저장소 커밋 메시지 인코딩 |
|
638 | 638 | button_quote: 댓글달기 |
|
639 | 639 | setting_sequential_project_identifiers: 프로젝트 식별자를 순차적으로 생성 |
|
640 | 640 | notice_unable_delete_version: 삭제 할 수 없는 버전 입니다. |
|
641 | 641 | label_renamed: 이름바뀜 |
|
642 | 642 | label_copied: 복사됨 |
|
643 | 643 | setting_plain_text_mail: 테스트만(HTML없음) |
|
644 | 644 | permission_view_files: 파일보기 |
|
645 | 645 | permission_edit_issues: 일감 편집 |
|
646 | 646 | permission_edit_own_time_entries: 내 시간로그 편집 |
|
647 | 647 | permission_manage_public_queries: 공용 질의 관리 |
|
648 | 648 | permission_add_issues: 일감 추가 |
|
649 | 649 | permission_log_time: 소요시간 기록 |
|
650 | 650 | permission_view_changesets: 변경묶음보기 |
|
651 | 651 | permission_view_time_entries: 소요시간 보기 |
|
652 | 652 | permission_manage_versions: 버전 관리 |
|
653 | 653 | permission_manage_wiki: 위키 관리 |
|
654 | 654 | permission_manage_categories: 일감 카테고리 관리 |
|
655 | 655 | permission_protect_wiki_pages: 프로젝트 위키 페이지 |
|
656 | 656 | permission_comment_news: 뉴스에 코멘트달기 |
|
657 | 657 | permission_delete_messages: 메시지 삭제 |
|
658 | 658 | permission_select_project_modules: 프로젝트 모듈 선택 |
|
659 | 659 | permission_manage_documents: 문서 관리 |
|
660 | 660 | permission_edit_wiki_pages: 위키 페이지 편집 |
|
661 | 661 | permission_add_issue_watchers: 일감지킴이 추가 |
|
662 | 662 | permission_view_gantt: Gantt차트 보기 |
|
663 | 663 | permission_move_issues: 일감 이동 |
|
664 | 664 | permission_manage_issue_relations: 일감 관계 관리 |
|
665 | 665 | permission_delete_wiki_pages: 위치 페이지 삭제 |
|
666 | 666 | permission_manage_boards: 게시판 관리 |
|
667 | 667 | permission_delete_wiki_pages_attachments: 첨부파일 삭제 |
|
668 | 668 | permission_view_wiki_edits: 위키 기록 보기 |
|
669 | 669 | permission_add_messages: 메시지 추가 |
|
670 | 670 | permission_view_messages: 메시지 보기 |
|
671 | 671 | permission_manage_files: 파일관리 |
|
672 | 672 | permission_edit_issue_notes: 덧글 편집 |
|
673 | 673 | permission_manage_news: 뉴스 관리 |
|
674 | 674 | permission_view_calendar: 달력 보기 |
|
675 | 675 | permission_manage_members: 멤버 관리 |
|
676 | 676 | permission_edit_messages: 메시지 편집 |
|
677 | 677 | permission_delete_issues: 일감 삭제 |
|
678 | 678 | permission_view_issue_watchers: 일감지킴이 보기 |
|
679 | 679 | permission_manage_repository: 저장소 관리 |
|
680 | 680 | permission_commit_access: 변경로그 보기 |
|
681 | 681 | permission_browse_repository: 저장소 둘러보기 |
|
682 | 682 | permission_view_documents: 문서 보기 |
|
683 | 683 | permission_edit_project: 프로젝트 편집 |
|
684 | 684 | permission_add_issue_notes: 덧글 추가 |
|
685 | 685 | permission_save_queries: 쿼리 저장 |
|
686 | 686 | permission_view_wiki_pages: 위키 보기 |
|
687 | 687 | permission_rename_wiki_pages: 위키 페이지 이름변경 |
|
688 | 688 | permission_edit_time_entries: 시간기록 편집 |
|
689 | 689 | permission_edit_own_issue_notes: 내 덧글 편집 |
|
690 | 690 | setting_gravatar_enabled: 그라바타 사용자 아이콘 쓰기 |
|
691 | 691 | label_example: 예 |
|
692 | 692 | text_repository_usernames_mapping: "저장소 로그에서 발견된 각 사용자에 레드마인 사용자를 업데이트할때 선택합니다.\n레드마인과 저장소의 이름이나 이메일이 같은 사용자가 자동으로 연결됩니다." |
|
693 | 693 | permission_edit_own_messages: 자기 메시지 편집 |
|
694 | 694 | permission_delete_own_messages: 자기 메시지 삭제 |
|
695 |
label_user_activity: "%s의 |
|
|
696 |
label_updated_time_by: |
|
|
697 | text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' | |
|
698 |
setting_diff_max_lines_displayed: |
|
|
695 | label_user_activity: "%s의 작업내역" | |
|
696 | label_updated_time_by: %s가 %s 전에 변경 | |
|
697 | text_diff_truncated: '... 이 차이점은 표시할 수 있는 최대 줄수를 초과해서 이 차이점은 잘렸습니다.' | |
|
698 | setting_diff_max_lines_displayed: 차이점보기에 표시할 최대 줄수 |
@@ -1,732 +1,732 | |||
|
1 | 1 | _gloc_rule_default: '|n| n10=n%10; n100=n%100; (n10==1 && n100!=11) ? "" : (n10>=2 && n10<=4 && (n100<10 || n100>=20) ? "_plural2" : "_plural5") ' |
|
2 | 2 | |
|
3 | 3 | actionview_datehelper_select_day_prefix: |
|
4 | 4 | actionview_datehelper_select_month_names_abbr: Янв,Фев,Мар,Апр,Май,Июн,Июл,Авг,Сен,Окт,Нояб,Дек |
|
5 | 5 | actionview_datehelper_select_month_names: Январь,Февраль,Март,Апрель,Май,Июнь,Июль,Август,Сентябрь,Октябрь,Ноябрь,Декабрь |
|
6 | 6 | actionview_datehelper_select_month_prefix: |
|
7 | 7 | actionview_datehelper_select_year_prefix: |
|
8 | 8 | actionview_datehelper_time_in_words_day: %d день |
|
9 | 9 | actionview_datehelper_time_in_words_day_plural2: %d дня |
|
10 | 10 | actionview_datehelper_time_in_words_day_plural5: %d дней |
|
11 | 11 | actionview_datehelper_time_in_words_day_plural: %d дней |
|
12 | 12 | actionview_datehelper_time_in_words_hour_about_plural2: около %d часов |
|
13 | 13 | actionview_datehelper_time_in_words_hour_about_plural5: около %d часов |
|
14 | 14 | actionview_datehelper_time_in_words_hour_about_plural: около %d часов |
|
15 | 15 | actionview_datehelper_time_in_words_hour_about_single: около часа |
|
16 | 16 | actionview_datehelper_time_in_words_hour_about: около %d часа |
|
17 | 17 | actionview_datehelper_time_in_words_minute: 1 минута |
|
18 | 18 | actionview_datehelper_time_in_words_minute_half: полминуты |
|
19 | 19 | actionview_datehelper_time_in_words_minute_less_than: менее минуты |
|
20 | 20 | actionview_datehelper_time_in_words_minute_plural2: %d минуты |
|
21 | 21 | actionview_datehelper_time_in_words_minute_plural5: %d минут |
|
22 | 22 | actionview_datehelper_time_in_words_minute_plural: %d минут |
|
23 | 23 | actionview_datehelper_time_in_words_minute_single: 1 минуту |
|
24 | 24 | actionview_datehelper_time_in_words_second_less_than_plural2: менее %d секунд |
|
25 | 25 | actionview_datehelper_time_in_words_second_less_than_plural5: менее %d секунд |
|
26 | 26 | actionview_datehelper_time_in_words_second_less_than_plural: менее %d секунд |
|
27 | 27 | actionview_datehelper_time_in_words_second_less_than: менее секунды |
|
28 | 28 | actionview_instancetag_blank_option: Выберите |
|
29 | 29 | |
|
30 | 30 | activerecord_error_accepted: необходимо принять |
|
31 | 31 | activerecord_error_blank: необходимо заполнить |
|
32 | 32 | activerecord_error_circular_dependency: Такая связь приведет к циклической зависимости |
|
33 | 33 | activerecord_error_confirmation: ошибка в подтверждении |
|
34 | 34 | activerecord_error_empty: необходимо заполнить |
|
35 | 35 | activerecord_error_exclusion: зарезервировано |
|
36 | 36 | activerecord_error_greater_than_start_date: должна быть позднее даты начала |
|
37 | 37 | activerecord_error_inclusion: нет в списке |
|
38 | 38 | activerecord_error_invalid: неверное значение |
|
39 | 39 | activerecord_error_not_a_date: дата недействительна |
|
40 | 40 | activerecord_error_not_a_number: не является числом |
|
41 | 41 | activerecord_error_not_same_project: не относятся к одному проекту |
|
42 | 42 | activerecord_error_taken: уже используется |
|
43 | 43 | activerecord_error_too_long: слишком длинное значение |
|
44 | 44 | activerecord_error_too_short: слишком короткое значение |
|
45 | 45 | activerecord_error_wrong_length: не соответствует длине |
|
46 | 46 | |
|
47 | 47 | button_activate: Активировать |
|
48 | 48 | button_add: Добавить |
|
49 | 49 | button_annotate: Авторство |
|
50 | 50 | button_apply: Применить |
|
51 | 51 | button_archive: Архивировать |
|
52 | 52 | button_back: Назад |
|
53 | 53 | button_cancel: Отмена |
|
54 | 54 | button_change_password: Изменить пароль |
|
55 | 55 | button_change: Изменить |
|
56 | 56 | button_check_all: Отметить все |
|
57 | 57 | button_clear: Очистить |
|
58 | 58 | button_configure: Параметры |
|
59 | 59 | button_copy: Копировать |
|
60 | 60 | button_create: Создать |
|
61 | 61 | button_delete: Удалить |
|
62 | 62 | button_download: Загрузить |
|
63 | 63 | button_edit: Редактировать |
|
64 | 64 | button_list: Список |
|
65 | 65 | button_lock: Заблокировать |
|
66 | 66 | button_login: Вход |
|
67 | 67 | button_log_time: Время в системе |
|
68 | 68 | button_move: Переместить |
|
69 | 69 | button_quote: Цитировать |
|
70 | 70 | button_rename: Переименовать |
|
71 | 71 | button_reply: Ответить |
|
72 | 72 | button_reset: Перезапустить |
|
73 | 73 | button_rollback: Вернуться к данной версии |
|
74 | 74 | button_save: Сохранить |
|
75 | 75 | button_sort: Сортировать |
|
76 | 76 | button_submit: Принять |
|
77 | 77 | button_test: Проверить |
|
78 | 78 | button_unarchive: Разархивировать |
|
79 | 79 | button_uncheck_all: Очистить |
|
80 | 80 | button_unlock: Разблокировать |
|
81 | 81 | button_unwatch: Не следить |
|
82 | 82 | button_update: Обновить |
|
83 | 83 | button_view: Просмотреть |
|
84 | 84 | button_watch: Следить |
|
85 | 85 | |
|
86 | 86 | default_activity_design: Проектирование |
|
87 | 87 | default_activity_development: Разработка |
|
88 | 88 | default_doc_category_tech: Техническая документация |
|
89 | 89 | default_doc_category_user: Документация пользователя |
|
90 | 90 | default_issue_status_assigned: Назначен |
|
91 | 91 | default_issue_status_closed: Закрыт |
|
92 | 92 | default_issue_status_feedback: Обратная связь |
|
93 | 93 | default_issue_status_new: Новый |
|
94 | 94 | default_issue_status_rejected: Отказ |
|
95 | 95 | default_issue_status_resolved: Заблокирован |
|
96 | 96 | default_priority_high: Высокий |
|
97 | 97 | default_priority_immediate: Немедленный |
|
98 | 98 | default_priority_low: Низкий |
|
99 | 99 | default_priority_normal: Нормальный |
|
100 | 100 | default_priority_urgent: Срочный |
|
101 | 101 | default_role_developper: Разработчик |
|
102 | 102 | default_role_manager: Менеджер |
|
103 | 103 | default_role_reporter: Генератор отчетов |
|
104 | 104 | default_tracker_bug: Ошибка |
|
105 | 105 | default_tracker_feature: Улучшение |
|
106 | 106 | default_tracker_support: Поддержка |
|
107 | 107 | |
|
108 | 108 | enumeration_activities: Действия (учет времени) |
|
109 | 109 | enumeration_doc_categories: Категории документов |
|
110 | 110 | enumeration_issue_priorities: Приоритеты задач |
|
111 | 111 | |
|
112 | 112 | error_can_t_load_default_data: "Конфигурация по умолчанию не была загружена: %s" |
|
113 | 113 | error_issue_not_found_in_project: Задача не была найдена или не прикреплена к этому проекту |
|
114 | 114 | error_scm_annotate: "Данные отсутствуют или не могут быть подписаны." |
|
115 | 115 | error_scm_command_failed: "Ошибка доступа к хранилищу: %s" |
|
116 | 116 | error_scm_not_found: Хранилище не содержит записи и/или исправления. |
|
117 | 117 | |
|
118 | 118 | field_account: Учетная запись |
|
119 | 119 | field_activity: Деятельность |
|
120 | 120 | field_admin: Администратор |
|
121 | 121 | field_assignable: Задача может быть назначена этой роли |
|
122 | 122 | field_assigned_to: Назначена |
|
123 | 123 | field_attr_firstname: Имя |
|
124 | 124 | field_attr_lastname: Фамилия |
|
125 | 125 | field_attr_login: Атрибут Регистрация |
|
126 | 126 | field_attr_mail: email |
|
127 | 127 | field_author: Автор |
|
128 | 128 | field_auth_source: Режим аутентификации |
|
129 | 129 | field_base_dn: BaseDN |
|
130 | 130 | field_category: Категория |
|
131 | 131 | field_column_names: Колонки |
|
132 | 132 | field_comments_sorting: Отображение комментариев |
|
133 | 133 | field_comments: Комментарий |
|
134 | 134 | field_created_on: Создан |
|
135 | 135 | field_default_value: Значение по умолчанию |
|
136 | 136 | field_delay: Отложить |
|
137 | 137 | field_description: Описание |
|
138 | 138 | field_done_ratio: Готовность в %% |
|
139 | 139 | field_downloads: Загрузки |
|
140 | 140 | field_due_date: Дата выполнения |
|
141 | 141 | field_effective_date: Дата |
|
142 | 142 | field_estimated_hours: Оцененное время |
|
143 | 143 | field_field_format: Формат |
|
144 | 144 | field_filename: Файл |
|
145 | 145 | field_filesize: Размер |
|
146 | 146 | field_firstname: Имя |
|
147 | 147 | field_fixed_version: Версия |
|
148 | 148 | field_hide_mail: Скрывать мой email |
|
149 | 149 | field_homepage: Стартовая страница |
|
150 | 150 | field_host: Компьютер |
|
151 | 151 | field_hours: час(а,ов) |
|
152 | 152 | field_identifier: Уникальный идентификатор |
|
153 | 153 | field_is_closed: Задача закрыта |
|
154 | 154 | field_is_default: Значение по умолчанию |
|
155 | 155 | field_is_filter: Используется в качестве фильтра |
|
156 | 156 | field_is_for_all: Для всех проектов |
|
157 | 157 | field_is_in_chlog: Задачи, отображаемые в журнале изменений |
|
158 | 158 | field_is_in_roadmap: Задачи, отображаемые в оперативном плане |
|
159 | 159 | field_is_public: Общедоступный |
|
160 | 160 | field_is_required: Обязательное |
|
161 | 161 | field_issue_to_id: Связанные задачи |
|
162 | 162 | field_issue: Задача |
|
163 | 163 | field_language: Язык |
|
164 | 164 | field_last_login_on: Последнее подключение |
|
165 | 165 | field_lastname: Фамилия |
|
166 | 166 | field_login: Пользователь |
|
167 | 167 | field_mail: Email |
|
168 | 168 | field_mail_notification: Уведомления по email |
|
169 | 169 | field_max_length: Максимальная длина |
|
170 | 170 | field_min_length: Минимальная длина |
|
171 | 171 | field_name: Имя |
|
172 | 172 | field_new_password: Новый пароль |
|
173 | 173 | field_notes: Примечания |
|
174 | 174 | field_onthefly: Создание пользователя на лету |
|
175 | 175 | field_parent_title: Родительская страница |
|
176 | 176 | field_parent: Родительский проект |
|
177 | 177 | field_password_confirmation: Подтверждение |
|
178 | 178 | field_password: Пароль |
|
179 | 179 | field_port: Порт |
|
180 | 180 | field_possible_values: Возможные значения |
|
181 | 181 | field_priority: Приоритет |
|
182 | 182 | field_project: Проект |
|
183 | 183 | field_redirect_existing_links: Перенаправить существующие ссылки |
|
184 | 184 | field_regexp: Регулярное выражение |
|
185 | 185 | field_role: Роль |
|
186 | 186 | field_searchable: Доступно для поиска |
|
187 | 187 | field_spent_on: Дата |
|
188 | 188 | field_start_date: Начало |
|
189 | 189 | field_start_page: Стартовая страница |
|
190 | 190 | field_status: Статус |
|
191 | 191 | field_subject: Тема |
|
192 | 192 | field_subproject: Подпроект |
|
193 | 193 | field_summary: Сводка |
|
194 | 194 | field_time_zone: Часовой пояс |
|
195 | 195 | field_title: Название |
|
196 | 196 | field_tracker: Трекер |
|
197 | 197 | field_type: Тип |
|
198 | 198 | field_updated_on: Обновлено |
|
199 | 199 | field_url: URL |
|
200 | 200 | field_user: Пользователь |
|
201 | 201 | field_value: Значение |
|
202 | 202 | field_version: Версия |
|
203 | 203 | |
|
204 | 204 | general_csv_decimal_separator: '.' |
|
205 | 205 | general_csv_encoding: UTF-8 |
|
206 | 206 | general_csv_separator: ',' |
|
207 | 207 | general_day_names: Понедельник,Вторник,Среда,Четверг,Пятница,Суббота,Воскресенье |
|
208 | 208 | general_first_day_of_week: '1' |
|
209 | 209 | general_fmt_age: %d г. |
|
210 | 210 | general_fmt_age_plural2: %d гг. |
|
211 | 211 | general_fmt_age_plural5: %d гг. |
|
212 | 212 | general_fmt_age_plural: %d лет |
|
213 | 213 | general_fmt_date: %%d.%%m.%%Y |
|
214 | 214 | general_fmt_datetime: %%d.%%m.%%Y %%I:%%M %%p |
|
215 | 215 | general_fmt_datetime_short: %%d %%b, %%H:%%M |
|
216 | 216 | general_fmt_time: %%H:%%M |
|
217 | 217 | general_lang_name: 'Russian (Русский)' |
|
218 | 218 | general_pdf_encoding: UTF-8 |
|
219 | 219 | general_text_no: 'Нет' |
|
220 | 220 | general_text_No: 'Нет' |
|
221 | 221 | general_text_yes: 'Да' |
|
222 | 222 | general_text_Yes: 'Да' |
|
223 | 223 | |
|
224 | 224 | gui_validation_error: 1 ошибка |
|
225 | 225 | gui_validation_error_plural2: %d ошибки |
|
226 | 226 | gui_validation_error_plural5: %d ошибок |
|
227 | 227 | gui_validation_error_plural: %d ошибок |
|
228 | 228 | |
|
229 | 229 | label_activity: Активность |
|
230 | 230 | label_add_another_file: Добавить ещё один файл |
|
231 | 231 | label_added_time_by: Добавил(а) %s %s назад |
|
232 | 232 | label_added: добавлено |
|
233 | 233 | label_add_note: Добавить замечание |
|
234 | 234 | label_administration: Администрирование |
|
235 | 235 | label_age: Возраст |
|
236 | 236 | label_ago: дней(я) назад |
|
237 | 237 | label_all_time: всё время |
|
238 | 238 | label_all_words: Все слова |
|
239 | 239 | label_all: все |
|
240 | 240 | label_and_its_subprojects: %s и все подпроекты |
|
241 | 241 | label_applied_status: Применимый статус |
|
242 | 242 | label_assigned_to_me_issues: Мои задачи |
|
243 | 243 | label_associated_revisions: Связанные редакции |
|
244 | 244 | label_attachment_delete: Удалить файл |
|
245 | 245 | label_attachment_new: Новый файл |
|
246 | 246 | label_attachment_plural: Файлы |
|
247 | 247 | label_attachment: Файл |
|
248 | 248 | label_attribute_plural: Атрибуты |
|
249 | 249 | label_attribute: Атрибут |
|
250 | 250 | label_authentication: Аутентификация |
|
251 | 251 | label_auth_source_new: Новый режим аутентификации |
|
252 | 252 | label_auth_source_plural: Режимы аутентификации |
|
253 | 253 | label_auth_source: Режим аутентификации |
|
254 | 254 | label_blocked_by: заблокировано |
|
255 | 255 | label_blocks: блокирует |
|
256 | 256 | label_board_new: Новый форум |
|
257 | 257 | label_board_plural: Форумы |
|
258 | 258 | label_board: Форум |
|
259 | 259 | label_boolean: Логический |
|
260 | 260 | label_browse: Обзор |
|
261 | 261 | label_bulk_edit_selected_issues: Редактировать все выбранные вопросы |
|
262 | 262 | label_calendar_filter: Включая |
|
263 | 263 | label_calendar_no_assigned: не мои |
|
264 | 264 | label_calendar: Календарь |
|
265 | 265 | label_change_log: Журнал изменений |
|
266 | 266 | label_change_plural: Правки |
|
267 | 267 | label_change_properties: Изменить свойства |
|
268 | 268 | label_changes_details: Подробности по всем изменениям |
|
269 | 269 | label_changeset_plural: Хранилище |
|
270 | 270 | label_change_status: Изменить статус |
|
271 | 271 | label_change_view_all: Просмотреть все изменения |
|
272 | 272 | label_chronological_order: В хронологическом порядке |
|
273 | 273 | label_closed_issues_plural2: закрыто |
|
274 | 274 | label_closed_issues_plural5: закрыто |
|
275 | 275 | label_closed_issues_plural: закрыто |
|
276 | 276 | label_closed_issues: закрыт |
|
277 | 277 | label_comment_added: Добавленный комментарий |
|
278 | 278 | label_comment_add: Оставить комментарий |
|
279 | 279 | label_comment_delete: Удалить комментарии |
|
280 | 280 | label_comment_plural2: комментария |
|
281 | 281 | label_comment_plural5: комментариев |
|
282 | 282 | label_comment_plural: Комментарии |
|
283 | 283 | label_comment: комментарий |
|
284 | 284 | label_commits_per_author: Изменений на пользователя |
|
285 | 285 | label_commits_per_month: Изменений в месяц |
|
286 | 286 | label_confirmation: Подтверждение |
|
287 | 287 | label_contains: содержит |
|
288 | 288 | label_copied: скопировано |
|
289 | 289 | label_copy_workflow_from: Скопировать последовательность действий из |
|
290 | 290 | label_current_status: Текущий статус |
|
291 | 291 | label_current_version: Текущая версия |
|
292 | 292 | label_custom_field_new: Новое настраиваемое поле |
|
293 | 293 | label_custom_field_plural: Настраиваемые поля |
|
294 | 294 | label_custom_field: Настраиваемое поле |
|
295 | 295 | label_date_from: С |
|
296 | 296 | label_date_range: временной интервал |
|
297 | 297 | label_date_to: по |
|
298 | 298 | label_date: Дата |
|
299 | 299 | label_day_plural: дней(я) |
|
300 | 300 | label_default_columns: Колонки по умолчанию |
|
301 | 301 | label_default: По умолчанию |
|
302 | 302 | label_deleted: удалено |
|
303 | 303 | label_details: Подробности |
|
304 | 304 | label_diff_inline: вставкой |
|
305 | 305 | label_diff_side_by_side: рядом |
|
306 | 306 | label_disabled: отключено |
|
307 | 307 | label_display_per_page: 'На страницу: %s' |
|
308 | 308 | label_document_added: Документ добавлен |
|
309 | 309 | label_document_new: Новый документ |
|
310 | 310 | label_document_plural: Документы |
|
311 | 311 | label_document: Документ |
|
312 | 312 | label_download: %d загрузка |
|
313 | 313 | label_download_plural2: %d загрузки |
|
314 | 314 | label_download_plural5: %d загрузок |
|
315 | 315 | label_download_plural: %d скачиваний |
|
316 | 316 | label_downloads_abbr: Скачиваний |
|
317 | 317 | label_duplicated_by: дублируется |
|
318 | 318 | label_duplicates: дублирует |
|
319 | 319 | label_end_to_end: с конца к концу |
|
320 | 320 | label_end_to_start: с конца к началу |
|
321 | 321 | label_enumeration_new: Новое значение |
|
322 | 322 | label_enumerations: Справочники |
|
323 | 323 | label_environment: Окружение |
|
324 | 324 | label_equals: соответствует |
|
325 | 325 | label_example: Пример |
|
326 | 326 | label_export_to: Экспортировать в |
|
327 | 327 | label_feed_plural: Вводы |
|
328 | 328 | label_feeds_access_key_created_on: Ключ доступа RSS создан %s назад |
|
329 | 329 | label_f_hour: %.2f час |
|
330 | 330 | label_f_hour_plural2: %.2f часа |
|
331 | 331 | label_f_hour_plural: %.2f часов |
|
332 | 332 | label_f_hour_plural5: %.2f часов |
|
333 | 333 | label_file_added: Файл добавлен |
|
334 | 334 | label_file_plural: Файлы |
|
335 | 335 | label_filter_add: Добавить фильтр |
|
336 | 336 | label_filter_plural: Фильтры |
|
337 | 337 | label_float: С плавающей точкой |
|
338 | 338 | label_follows: следующий |
|
339 | 339 | label_gantt: Диаграмма Ганта |
|
340 | 340 | label_general: Общее |
|
341 | 341 | label_generate_key: Сгенерировать ключ |
|
342 | 342 | label_help: Помощь |
|
343 | 343 | label_history: История |
|
344 | 344 | label_home: Домашняя страница |
|
345 | 345 | label_incoming_emails: Приём сообщений |
|
346 | 346 | label_index_by_date: Индекс по дате |
|
347 | 347 | label_index_by_title: Индекс по названию |
|
348 | 348 | label_information_plural: Информация |
|
349 | 349 | label_information: Информация |
|
350 | 350 | label_in_less_than: менее чем |
|
351 | 351 | label_in_more_than: более чем |
|
352 | 352 | label_integer: Целый |
|
353 | 353 | label_internal: Внутренний |
|
354 | 354 | label_in: в |
|
355 | 355 | label_issue_added: Задача добавлена |
|
356 | 356 | label_issue_category_new: Новая категория |
|
357 | 357 | label_issue_category_plural: Категории задачи |
|
358 | 358 | label_issue_category: Категория задачи |
|
359 | 359 | label_issue_new: Новая задача |
|
360 | 360 | label_issue_plural: Задачи |
|
361 | 361 | label_issues_by: Сортировать по %s |
|
362 | 362 | label_issue_status_new: Новый статус |
|
363 | 363 | label_issue_status_plural: Статусы задачи |
|
364 | 364 | label_issue_status: Статус задачи |
|
365 | 365 | label_issue_tracking: Ситуация по задачам |
|
366 | 366 | label_issue_updated: Задача обновлена |
|
367 | 367 | label_issue_view_all: Просмотреть все задачи |
|
368 | 368 | label_issue_watchers: Наблюдатели |
|
369 | 369 | label_issue: Задача |
|
370 | 370 | label_jump_to_a_project: Перейти к проекту... |
|
371 | 371 | label_language_based: На основе языка |
|
372 | 372 | label_last_changes: менее %d изменений |
|
373 | 373 | label_last_login: Последнее подключение |
|
374 | 374 | label_last_month: последний месяц |
|
375 | 375 | label_last_n_days: последние %d дней |
|
376 | 376 | label_last_updates_plural2: %d последних обновления |
|
377 | 377 | label_last_updates_plural5: %d последних обновлений |
|
378 | 378 | label_last_updates_plural: %d последние обновления |
|
379 | 379 | label_last_updates: Последнее обновление |
|
380 | 380 | label_last_week: последняя неделю |
|
381 | 381 | label_latest_revision_plural: Последние редакции |
|
382 | 382 | label_latest_revision: Последняя редакция |
|
383 | 383 | label_ldap_authentication: Авторизация с помощью LDAP |
|
384 | 384 | label_less_than_ago: менее, чем дней(я) назад |
|
385 | 385 | label_list: Список |
|
386 | 386 | label_loading: Загрузка... |
|
387 | 387 | label_logged_as: Вошел как |
|
388 | 388 | label_login: Войти |
|
389 | 389 | label_logout: Выйти |
|
390 | 390 | label_max_size: Максимальный размер |
|
391 | 391 | label_member_new: Новый участник |
|
392 | 392 | label_member_plural: Участники |
|
393 | 393 | label_member: Участник |
|
394 | 394 | label_message_last: Последнее сообщение |
|
395 | 395 | label_message_new: Новое сообщение |
|
396 | 396 | label_message_plural: Сообщения |
|
397 | 397 | label_message_posted: Сообщение добавлено |
|
398 | 398 | label_me: мне |
|
399 | 399 | label_min_max_length: Минимальная - максимальная длина |
|
400 | 400 | label_modification: %d изменение |
|
401 | 401 | label_modification_plural2: %d изменения |
|
402 | 402 | label_modification_plural5: %d изменений |
|
403 | 403 | label_modification_plural: %d изменений |
|
404 | 404 | label_modified: изменено |
|
405 | 405 | label_module_plural: Модули |
|
406 | 406 | label_months_from: месяцев(ца) с |
|
407 | 407 | label_month: Месяц |
|
408 | 408 | label_more_than_ago: более, чем дней(я) назад |
|
409 | 409 | label_more: Больше |
|
410 | 410 | label_my_account: Моя учетная запись |
|
411 | 411 | label_my_page: Моя страница |
|
412 | 412 | label_my_projects: Мои проекты |
|
413 | 413 | label_news_added: Новость добавлена |
|
414 | 414 | label_news_latest: Последние новости |
|
415 | 415 | label_news_new: Добавить новость |
|
416 | 416 | label_news_plural: Новости |
|
417 | 417 | label_new_statuses_allowed: Разрешены новые статусы |
|
418 | 418 | label_news_view_all: Посмотреть все новости |
|
419 | 419 | label_news: Новости |
|
420 | 420 | label_new: Новый |
|
421 | 421 | label_next: Следующий |
|
422 | 422 | label_nobody: никто |
|
423 | 423 | label_no_change_option: (Нет изменений) |
|
424 | 424 | label_no_data: Нет данных для отображения |
|
425 | 425 | label_none: отсутствует |
|
426 | 426 | label_not_contains: не содержит |
|
427 | 427 | label_not_equals: не соответствует |
|
428 | 428 | label_on: 'из' |
|
429 | 429 | label_open_issues_plural2: открыто |
|
430 | 430 | label_open_issues_plural5: открыто |
|
431 | 431 | label_open_issues_plural: открыто |
|
432 | 432 | label_open_issues: открыт |
|
433 | 433 | label_optional_description: Описание (опционально) |
|
434 | 434 | label_options: Опции |
|
435 | 435 | label_overall_activity: Сводная активность |
|
436 | 436 | label_overview: Просмотр |
|
437 | 437 | label_password_lost: Восстановление пароля |
|
438 | 438 | label_permissions_report: Отчет о правах доступа |
|
439 | 439 | label_permissions: Права доступа |
|
440 | 440 | label_per_page: На страницу |
|
441 | 441 | label_personalize_page: Персонализировать данную страницу |
|
442 | 442 | label_planning: Планирование |
|
443 | 443 | label_please_login: Пожалуйста, войдите. |
|
444 | 444 | label_plugins: Модули |
|
445 | 445 | label_precedes: предшествует |
|
446 | 446 | label_preferences: Предпочтения |
|
447 | 447 | label_preview: Предварительный просмотр |
|
448 | 448 | label_previous: Предыдущий |
|
449 | 449 | label_project_all: Все проекты |
|
450 | 450 | label_project_latest: Последние проекты |
|
451 | 451 | label_project_new: Новый проект |
|
452 | 452 | label_project_plural2: проекта |
|
453 | 453 | label_project_plural5: проектов |
|
454 | 454 | label_project_plural: Проекты |
|
455 | 455 | label_project: проект |
|
456 | 456 | label_public_projects: Общие проекты |
|
457 | 457 | label_query_new: Новый запрос |
|
458 | 458 | label_query_plural: Сохраненные запросы |
|
459 | 459 | label_query: Сохраненный запрос |
|
460 | 460 | label_read: Чтение... |
|
461 | 461 | label_registered_on: Зарегистрирован(а) |
|
462 | 462 | label_register: Регистрация |
|
463 | 463 | label_registration_activation_by_email: активация учетных записей по email |
|
464 | 464 | label_registration_automatic_activation: автоматическая активация учетных записей |
|
465 | 465 | label_registration_manual_activation: активировать учетные записи вручную |
|
466 | 466 | label_related_issues: Связанные задачи |
|
467 | 467 | label_relates_to: связана с |
|
468 | 468 | label_relation_delete: Удалить связь |
|
469 | 469 | label_relation_new: Новое отношение |
|
470 | 470 | label_renamed: переименовано |
|
471 | 471 | label_reply_plural: Ответы |
|
472 | 472 | label_reported_issues: Созданные задачи |
|
473 | 473 | label_report_plural: Отчеты |
|
474 | 474 | label_report: Отчет |
|
475 | 475 | label_repository_plural: Хранилища |
|
476 | 476 | label_repository: Хранилище |
|
477 | 477 | label_result_plural: Результаты |
|
478 | 478 | label_reverse_chronological_order: В обратном порядке |
|
479 | 479 | label_revision_plural: Редакции |
|
480 | 480 | label_revision: Редакция |
|
481 | 481 | label_roadmap_due_in: Вовремя %s |
|
482 | 482 | label_roadmap_no_issues: Нет задач для данной версии |
|
483 | 483 | label_roadmap_overdue: %s опоздание |
|
484 | 484 | label_roadmap: Оперативный план |
|
485 | 485 | label_role_and_permissions: Роли и права доступа |
|
486 | 486 | label_role_new: Новая роль |
|
487 | 487 | label_role_plural: Роли |
|
488 | 488 | label_role: Роль |
|
489 | 489 | label_scm: 'Тип хранилища' |
|
490 | 490 | label_search_titles_only: Искать только в названиях |
|
491 | 491 | label_search: Поиск |
|
492 | 492 | label_send_information: Отправить пользователю информацию по учетной записи |
|
493 | 493 | label_send_test_email: Послать email для проверки |
|
494 | 494 | label_settings: Настройки |
|
495 | 495 | label_show_completed_versions: Показать завершенную версию |
|
496 | 496 | label_sort_by: Сортировать по %s |
|
497 | 497 | label_sort_higher: Вверх |
|
498 | 498 | label_sort_highest: В начало |
|
499 | 499 | label_sort_lower: Вниз |
|
500 | 500 | label_sort_lowest: В конец |
|
501 | 501 | label_spent_time: Затраченное время |
|
502 | 502 | label_start_to_end: с начала к концу |
|
503 | 503 | label_start_to_start: с начала к началу |
|
504 | 504 | label_statistics: Статистика |
|
505 | 505 | label_stay_logged_in: Оставаться в системе |
|
506 | 506 | label_string: Текст |
|
507 | 507 | label_subproject_plural: Подпроекты |
|
508 | 508 | label_text: Длинный текст |
|
509 | 509 | label_theme: Тема |
|
510 | 510 | label_this_month: этот месяц |
|
511 | 511 | label_this_week: на этой неделе |
|
512 | 512 | label_this_year: этот год |
|
513 | 513 | label_timelog_today: Расход времени на сегодня |
|
514 | 514 | label_time_tracking: Учет времени |
|
515 | 515 | label_today: сегодня |
|
516 | 516 | label_topic_plural: Темы |
|
517 | 517 | label_total: Всего |
|
518 | 518 | label_tracker_new: Новый трекер |
|
519 | 519 | label_tracker_plural: Трекеры |
|
520 | 520 | label_tracker: Трекер |
|
521 | label_updated_time: Обновлен %s назад | |
|
521 | label_updated_time: Обновлено %s назад | |
|
522 | label_updated_time_by: Обновлено %s %s назад | |
|
522 | 523 | label_used_by: Используется |
|
523 | 524 | label_user_activity: "Активность пользователя %s" |
|
524 | 525 | label_user_mail_no_self_notified: "Не извещать об изменениях, которые я сделал сам" |
|
525 | 526 | label_user_mail_option_all: "О всех событиях во всех моих проектах" |
|
526 | 527 | label_user_mail_option_none: "Только о тех событиях, которые я отслеживаю или в которых я участвую" |
|
527 | 528 | label_user_mail_option_selected: "О всех событиях только в выбранном проекте..." |
|
528 | 529 | label_user_new: Новый пользователь |
|
529 | 530 | label_user_plural: Пользователи |
|
530 | 531 | label_user: Пользователь |
|
531 | 532 | label_version_new: Новая версия |
|
532 | 533 | label_version_plural: Версии |
|
533 | 534 | label_version: Версия |
|
534 | 535 | label_view_diff: Просмотреть отличия |
|
535 | 536 | label_view_revisions: Просмотреть редакции |
|
536 | 537 | label_watched_issues: Отслеживаемые задачи |
|
537 | 538 | label_week: Неделя |
|
538 | 539 | label_wiki_edit_plural: Редактирования Wiki |
|
539 | 540 | label_wiki_edit: Редактирование Wiki |
|
540 | 541 | label_wiki_page_plural: Страницы Wiki |
|
541 | 542 | label_wiki_page: Страница Wiki |
|
542 | 543 | label_wiki: Wiki |
|
543 | 544 | label_workflow: Последовательность действий |
|
544 | 545 | label_year: Год |
|
545 | 546 | label_yesterday: вчера |
|
546 | 547 | |
|
547 | 548 | mail_body_account_activation_request: 'Зарегистрирован новый пользователь (%s). Учетная запись ожидает Вашего утверждения:' |
|
548 | 549 | mail_body_account_information_external: Вы можете использовать Вашу "%s" учетную запись для входа. |
|
549 | 550 | mail_body_account_information: Информация о Вашей учетной записи |
|
550 | 551 | mail_body_lost_password: 'Для изменения пароля зайдите по следующей ссылке:' |
|
551 | 552 | mail_body_register: 'Для активации учетной записи зайдите по следующей ссылке:' |
|
552 | 553 | mail_body_reminder: "%d назначенных на Вас задач на следующие %d дней:" |
|
553 | 554 | mail_subject_account_activation_request: Запрос на активацию пользователя в системе %s |
|
554 | 555 | mail_subject_lost_password: Ваш %s пароль |
|
555 | 556 | mail_subject_register: Активация учетной записи %s |
|
556 | 557 | mail_subject_reminder: "%d назначенных на Вас задач в ближайшие дни" |
|
557 | 558 | |
|
558 | 559 | notice_account_activated: Ваша учетная запись активирована. Вы можете войти. |
|
559 | 560 | notice_account_invalid_creditentials: Неправильное имя пользователя или пароль |
|
560 | 561 | notice_account_lost_email_sent: Вам отправлено письмо с инструкциями по выбору нового пароля. |
|
561 | 562 | notice_account_password_updated: Пароль успешно обновлен. |
|
562 | 563 | notice_account_pending: "Ваша учетная запись уже создана и ожидает подтверждения администратора." |
|
563 | 564 | notice_account_register_done: Учетная запись успешно создана. Для активации Вашей учетной записи зайдите по ссылке, которая выслана Вам по электронной почте. |
|
564 | 565 | notice_account_unknown_email: Неизвестный пользователь. |
|
565 | 566 | notice_account_updated: Учетная запись успешно обновлена. |
|
566 | 567 | notice_account_wrong_password: Неверный пароль |
|
567 | 568 | notice_can_t_change_password: Для данной учетной записи используется источник внешней аутентификации. Невозможно изменить пароль. |
|
568 | 569 | notice_default_data_loaded: Была загружена конфигурация по умолчанию. |
|
569 | 570 | notice_email_error: Во время отправки письма произошла ошибка (%s) |
|
570 | 571 | notice_email_sent: Отправлено письмо %s |
|
571 | 572 | notice_failed_to_save_issues: "Не удалось сохранить %d пункт(ов) из %d выбранных: %s." |
|
572 | 573 | notice_feeds_access_key_reseted: Ваш ключ доступа RSS был перезапущен. |
|
573 | 574 | notice_file_not_found: Страница, на которую Вы пытаетесь зайти, не существует или удалена. |
|
574 | 575 | notice_locking_conflict: Информация обновлена другим пользователем. |
|
575 | 576 | notice_no_issue_selected: "Не выбрано ни одной задачи! Пожалуйста, отметьте задачи, которые Вы хотите отредактировать." |
|
576 | 577 | notice_not_authorized: У Вас нет прав для посещения данной страницы. |
|
577 | 578 | notice_successful_connection: Подключение успешно установлено. |
|
578 | 579 | notice_successful_create: Создание успешно завершено. |
|
579 | 580 | notice_successful_delete: Удаление успешно завершено. |
|
580 | 581 | notice_successful_update: Обновление успешно завершено. |
|
581 | 582 | notice_unable_delete_version: Невозможно удалить версию. |
|
582 | 583 | |
|
583 | 584 | permission_view_files: Просмотр файлов |
|
584 | 585 | permission_edit_issues: Редактирование задач |
|
585 | 586 | permission_edit_own_time_entries: Редактирование собственного учета времени |
|
586 | 587 | permission_manage_public_queries: Управление общими запросами |
|
587 | 588 | permission_add_issues: Добавление задач |
|
588 | 589 | permission_log_time: Учет затраченного времени |
|
589 | 590 | permission_view_changesets: Просмотр изменений хранилища |
|
590 | 591 | permission_view_time_entries: Просмотр затраченного времени |
|
591 | 592 | permission_manage_versions: Управление версиями |
|
592 | 593 | permission_manage_wiki: Управление wiki |
|
593 | 594 | permission_manage_categories: Управление категориями задач |
|
594 | 595 | permission_protect_wiki_pages: Блокирование страниц wiki |
|
595 | 596 | permission_comment_news: Комментирование новостей |
|
596 | 597 | permission_delete_messages: Удаление сообщений |
|
597 | 598 | permission_select_project_modules: Выбор модулей проекта |
|
598 | 599 | permission_manage_documents: Управление документами |
|
599 | 600 | permission_edit_wiki_pages: Редактирование страниц wiki |
|
600 | 601 | permission_add_issue_watchers: Добавление наблюдателей |
|
601 | 602 | permission_view_gantt: Просмотр диаграммы Ганта |
|
602 | 603 | permission_move_issues: Перенос задач |
|
603 | 604 | permission_manage_issue_relations: Управление связыванием задач |
|
604 | 605 | permission_delete_wiki_pages: Удаление страниц wiki |
|
605 | 606 | permission_manage_boards: Управление форумами |
|
606 | 607 | permission_delete_wiki_pages_attachments: Удаление прикрепленных файлов |
|
607 | 608 | permission_view_wiki_edits: Просмотр истории wiki |
|
608 | 609 | permission_add_messages: Отправка сообщений |
|
609 | 610 | permission_view_messages: Просмотр сообщение |
|
610 | 611 | permission_manage_files: Управление файлами |
|
611 | 612 | permission_edit_issue_notes: Редактирование примечаний |
|
612 | 613 | permission_manage_news: Управление новостями |
|
613 | 614 | permission_view_calendar: Просмотр календаря |
|
614 | 615 | permission_manage_members: Управление участниками |
|
615 | 616 | permission_edit_messages: Редактирование сообщений |
|
616 | 617 | permission_delete_issues: Удаление задач |
|
617 | 618 | permission_view_issue_watchers: Просмотр списка наблюдателей |
|
618 | 619 | permission_manage_repository: Управление хранилищем |
|
619 | 620 | permission_commit_access: Разрешение фиксации |
|
620 | 621 | permission_browse_repository: Просмотр хранилища |
|
621 | 622 | permission_view_documents: Просмотр документов |
|
622 | 623 | permission_edit_project: Редактирование проектов |
|
623 | 624 | permission_add_issue_notes: Добавление примечаний |
|
624 | 625 | permission_save_queries: Сохранение запросов |
|
625 | 626 | permission_view_wiki_pages: Просмотр wiki |
|
626 | 627 | permission_rename_wiki_pages: Переименование страниц wiki |
|
627 | 628 | permission_edit_time_entries: Редактирование учета времени |
|
628 | 629 | permission_edit_own_issue_notes: Редактирование собственных примечаний |
|
629 | 630 | permission_edit_own_messages: Редактирование собственных сообщений |
|
630 | 631 | permission_delete_own_messages: Удаление собственных сообщений |
|
631 | 632 | |
|
632 | 633 | project_module_boards: Форумы |
|
633 | 634 | project_module_documents: Документы |
|
634 | 635 | project_module_files: Файлы |
|
635 | 636 | project_module_issue_tracking: Задачи |
|
636 | 637 | project_module_news: Новостной блок |
|
637 | 638 | project_module_repository: Хранилище |
|
638 | 639 | project_module_time_tracking: Учет времени |
|
639 | 640 | project_module_wiki: Wiki |
|
640 | 641 | |
|
641 | 642 | setting_activity_days_default: Количество дней, отображаемых в Активности |
|
642 | 643 | setting_app_subtitle: Подзаголовок приложения |
|
643 | 644 | setting_app_title: Название приложения |
|
644 | 645 | setting_attachment_max_size: Максимальный размер вложения |
|
645 | 646 | setting_autofetch_changesets: Автоматически следить за изменениями хранилища |
|
646 | 647 | setting_autologin: Автоматический вход |
|
647 | 648 | setting_bcc_recipients: Использовать скрытые списки (bcc) |
|
648 | 649 | setting_commit_fix_keywords: Назначение ключевых слов |
|
649 | 650 | setting_commit_logs_encoding: Кодировка комментариев в хранилище |
|
650 | 651 | setting_commit_ref_keywords: Ключевые слова для поиска |
|
651 | 652 | setting_cross_project_issue_relations: Разрешить пересечение задач по проектам |
|
652 | 653 | setting_date_format: Формат даты |
|
653 | 654 | setting_default_language: Язык по умолчанию |
|
654 | 655 | setting_default_projects_public: Новые проекты являются общедоступными |
|
656 | setting_diff_max_lines_displayed: Максимальное число строк для diff | |
|
655 | 657 | setting_display_subprojects_issues: Отображение подпроектов по умолчанию |
|
656 | 658 | setting_emails_footer: Подстрочные примечания Email |
|
657 | 659 | setting_enabled_scm: Разрешенные SCM |
|
658 | 660 | setting_feeds_limit: Ограничение количества заголовков для RSS потока |
|
659 | 661 | setting_gravatar_enabled: Использовать аватар пользователя из Gravatar |
|
660 | 662 | setting_host_name: Имя компьютера |
|
661 | 663 | setting_issue_list_default_columns: Колонки, отображаемые в списке задач по умолчанию |
|
662 | 664 | setting_issues_export_limit: Ограничение по экспортируемым задачам |
|
663 | 665 | setting_login_required: Необходима аутентификация |
|
664 | 666 | setting_mail_from: email адрес для передачи информации |
|
665 | 667 | setting_mail_handler_api_enabled: Включить веб-сервис для входящих сообщений |
|
666 | 668 | setting_mail_handler_api_key: API ключ |
|
667 | 669 | setting_per_page_options: Количество строк на страницу |
|
668 | 670 | setting_plain_text_mail: Только простой текст (без HTML) |
|
669 | 671 | setting_protocol: Протокол |
|
670 | 672 | setting_repositories_encodings: Кодировки хранилища |
|
671 | 673 | setting_self_registration: Возможна саморегистрация |
|
672 | 674 | setting_sequential_project_identifiers: Генерировать последовательные идентификаторы проектов |
|
673 | 675 | setting_sys_api_enabled: Разрешить WS для управления хранилищем |
|
674 | 676 | setting_text_formatting: Форматирование текста |
|
675 | 677 | setting_time_format: Формат времени |
|
676 | 678 | setting_user_format: Формат отображения имени |
|
677 | 679 | setting_welcome_text: Текст приветствия |
|
678 | 680 | setting_wiki_compression: Сжатие истории Wiki |
|
679 | 681 | |
|
680 | 682 | status_active: активен |
|
681 | 683 | status_locked: закрыт |
|
682 | 684 | status_registered: зарегистрирован |
|
683 | 685 | |
|
684 | 686 | text_are_you_sure: Подтвердите |
|
685 | 687 | text_assign_time_entries_to_project: Прикрепить зарегистрированное время к проекту |
|
686 | 688 | text_caracters_maximum: Максимум %d символов(а). |
|
687 | 689 | text_caracters_minimum: Должно быть не менее %d символов. |
|
688 | 690 | text_comma_separated: Допустимы несколько значений (через запятую). |
|
689 | 691 | text_default_administrator_account_changed: Учетная запись администратора по умолчанию изменена |
|
690 | 692 | text_destroy_time_entries_question: Вы собираетесь удалить %.02f часа(ов) прикрепленных за этой задачей. |
|
691 | 693 | text_destroy_time_entries: Удалить зарегистрированное время |
|
694 | text_diff_truncated: '... Этот diff ограничен, так как превышает максимальный отображаемый размер.' | |
|
692 | 695 | text_email_delivery_not_configured: "Параметры работы с почтовым сервером не настроены и функция уведомления по email не активна.\nНастроить параметры для Вашего SMTP-сервера Вы можете в файле config/email.yml. Для применения изменений перезапустите приложение." |
|
693 | 696 | text_enumeration_category_reassign_to: 'Назначить им следующее значение:' |
|
694 | 697 | text_enumeration_destroy_question: '%d объект(а,ов) связаны с этим значением.' |
|
695 | 698 | text_file_repository_writable: Хранилище с доступом на запись |
|
696 | 699 | text_issue_added: По задаче %s был создан отчет (%s). |
|
697 | 700 | text_issue_category_destroy_assignments: Удалить назначения категории |
|
698 | 701 | text_issue_category_destroy_question: Несколько задач (%d) назначено в данную категорию. Что Вы хотите предпринять? |
|
699 | 702 | text_issue_category_reassign_to: Переназначить задачи для данной категории |
|
700 | 703 | text_issues_destroy_confirmation: 'Вы уверены, что хотите удалить выбранные задачи?' |
|
701 | 704 | text_issues_ref_in_commit_messages: Сопоставление и изменение статуса задач исходя из текста сообщений |
|
702 | 705 | text_issue_updated: Задача %s была обновлена (%s). |
|
703 | 706 | text_journal_changed: параметр изменился с %s на %s |
|
704 | 707 | text_journal_deleted: удалено |
|
705 | 708 | text_journal_set_to: параметр изменился на %s |
|
706 | 709 | text_length_between: Длина между %d и %d символов. |
|
707 | 710 | text_load_default_configuration: Загрузить конфигурацию по умолчанию |
|
708 | 711 | text_min_max_length_info: 0 означает отсутствие запретов |
|
709 | 712 | text_no_configuration_data: "Роли, трекеры, статусы задач и оперативный план не были сконфигурированы.\nНастоятельно рекомендуется загрузить конфигурацию по-умолчанию. Вы сможете её изменить потом." |
|
710 | 713 | text_project_destroy_confirmation: Вы настаиваете на удалении данного проекта и всей относящейся к нему информации? |
|
711 | 714 | text_project_identifier_info: 'Допустимы строчные буквы (a-z), цифры и дефис.<br />Сохраненный идентификатор не может быть изменен.' |
|
712 | 715 | text_reassign_time_entries: 'Перенести зарегистрированное время на следующую задачу:' |
|
713 | 716 | text_regexp_info: напр. ^[A-Z0-9]+$ |
|
714 | 717 | text_repository_usernames_mapping: "Выберите или обновите пользователя Redmine, связанного с найденными именами в журнале хранилица.\nПользователи с одинаковыми именами или email в Redmine и хранилище связываются автоматически." |
|
715 | 718 | text_rmagick_available: Доступно использование RMagick (опционально) |
|
716 | 719 | text_select_mail_notifications: Выберите действия, на которые будет отсылаться уведомление на электронную почту. |
|
717 | 720 | text_select_project_modules: 'Выберите модули, которые будут использованы в проекте:' |
|
718 | 721 | text_status_changed_by_changeset: Реализовано в %s редакции. |
|
719 | 722 | text_subprojects_destroy_warning: 'Подпроекты: %s также будут удалены.' |
|
720 | 723 | text_tip_task_begin_day: дата начала задачи |
|
721 | 724 | text_tip_task_begin_end_day: начало задачи и окончание ее в этот день |
|
722 | 725 | text_tip_task_end_day: дата завершения задачи |
|
723 | 726 | text_tracker_no_workflow: Для этого трекера последовательность действий не определена |
|
724 | 727 | text_unallowed_characters: Запрещенные символы |
|
725 | 728 | text_user_mail_option: "Для невыбранных проектов, Вы будете получать уведомления только о том что просматриваете или в чем участвуете (например, вопросы, автором которых Вы являетесь или которые Вам назначены)." |
|
726 | 729 | text_user_wrote: '%s написал(а):' |
|
727 | 730 | text_wiki_destroy_confirmation: Вы уверены, что хотите удалить данную Wiki и все ее содержимое? |
|
728 | 731 | text_workflow_edit: Выберите роль и трекер для редактирования последовательности состояний |
|
729 | 732 | |
|
730 | label_updated_time_by: Updated by %s %s ago | |
|
731 | text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' | |
|
732 | setting_diff_max_lines_displayed: Max number of diff lines displayed |
@@ -1,700 +1,700 | |||
|
1 | 1 | _gloc_rule_default: '|n| n==1 ? "" : "_plural" ' |
|
2 | 2 | |
|
3 | 3 | actionview_datehelper_select_day_prefix: |
|
4 | 4 | actionview_datehelper_select_month_names: 一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月 |
|
5 | 5 | actionview_datehelper_select_month_names_abbr: 一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月 |
|
6 | 6 | actionview_datehelper_select_month_prefix: |
|
7 | 7 | actionview_datehelper_select_year_prefix: |
|
8 | 8 | actionview_datehelper_time_in_words_day: 1 天 |
|
9 | 9 | actionview_datehelper_time_in_words_day_plural: %d 天 |
|
10 | 10 | actionview_datehelper_time_in_words_hour_about: 約 1 小時 |
|
11 | 11 | actionview_datehelper_time_in_words_hour_about_plural: 約 %d 小時 |
|
12 | 12 | actionview_datehelper_time_in_words_hour_about_single: 約 1 小時 |
|
13 | 13 | actionview_datehelper_time_in_words_minute: 1 分鐘 |
|
14 | 14 | actionview_datehelper_time_in_words_minute_half: 半分鐘 |
|
15 | 15 | actionview_datehelper_time_in_words_minute_less_than: 小於 1 分鐘 |
|
16 | 16 | actionview_datehelper_time_in_words_minute_plural: %d 分鐘 |
|
17 | 17 | actionview_datehelper_time_in_words_minute_single: 1 分鐘 |
|
18 | 18 | actionview_datehelper_time_in_words_second_less_than: 小於 1 秒 |
|
19 | 19 | actionview_datehelper_time_in_words_second_less_than_plural: 小於 %d 秒 |
|
20 | 20 | actionview_instancetag_blank_option: 請選擇 |
|
21 | 21 | |
|
22 | 22 | activerecord_error_inclusion: 必須被包含 |
|
23 | 23 | activerecord_error_exclusion: 必須被排除 |
|
24 | 24 | activerecord_error_invalid: 不正確 |
|
25 | 25 | activerecord_error_confirmation: 與確認欄位不相符 |
|
26 | 26 | activerecord_error_accepted: 必須被接受 |
|
27 | 27 | activerecord_error_empty: 不可為空值 |
|
28 | 28 | activerecord_error_blank: 不可為空白 |
|
29 | 29 | activerecord_error_too_long: 長度過長 |
|
30 | 30 | activerecord_error_too_short: 長度太短 |
|
31 | 31 | activerecord_error_wrong_length: 長度不正確 |
|
32 | 32 | activerecord_error_taken: 已經被使用 |
|
33 | 33 | activerecord_error_not_a_number: 不是一個數字 |
|
34 | 34 | activerecord_error_not_a_date: 日期格式不正確 |
|
35 | 35 | activerecord_error_greater_than_start_date: 必須在起始日期之後 |
|
36 | 36 | activerecord_error_not_same_project: 不屬於同一個專案 |
|
37 | 37 | activerecord_error_circular_dependency: 這個關聯會導致環狀相依 |
|
38 | 38 | |
|
39 | 39 | general_fmt_age: %d 年 |
|
40 | 40 | general_fmt_age_plural: %d 年 |
|
41 | 41 | general_fmt_date: %%m/%%d/%%Y |
|
42 | 42 | general_fmt_datetime: %%m/%%d/%%Y %%I:%%M %%p |
|
43 | 43 | general_fmt_datetime_short: %%b %%d, %%I:%%M %%p |
|
44 | 44 | general_fmt_time: %%I:%%M %%p |
|
45 | 45 | general_text_No: '否' |
|
46 | 46 | general_text_Yes: '是' |
|
47 | 47 | general_text_no: '否' |
|
48 | 48 | general_text_yes: '是' |
|
49 | 49 | general_lang_name: 'Traditional Chinese (繁體中文)' |
|
50 | 50 | general_csv_separator: ',' |
|
51 | 51 | general_csv_decimal_separator: '.' |
|
52 | 52 | general_csv_encoding: Big5 |
|
53 | 53 | general_pdf_encoding: Big5 |
|
54 | 54 | general_day_names: 星期一,星期二,星期三,星期四,星期五,星期六,星期日 |
|
55 | 55 | general_first_day_of_week: '7' |
|
56 | 56 | |
|
57 | 57 | notice_account_updated: 帳戶更新資訊已儲存 |
|
58 | 58 | notice_account_invalid_creditentials: 帳戶或密碼不正確 |
|
59 | 59 | notice_account_password_updated: 帳戶新密碼已儲存 |
|
60 | 60 | notice_account_wrong_password: 密碼不正確 |
|
61 | 61 | notice_account_register_done: 帳號已建立成功。欲啟用您的帳號,請點擊系統確認信函中的啟用連結。 |
|
62 | 62 | notice_account_unknown_email: 未知的使用者 |
|
63 | 63 | notice_can_t_change_password: 這個帳號使用外部認證方式,無法變更其密碼。 |
|
64 | 64 | notice_account_lost_email_sent: 包含選擇新密碼指示的電子郵件,已經寄出給您。 |
|
65 | 65 | notice_account_activated: 您的帳號已經啟用,可用它登入系統。 |
|
66 | 66 | notice_successful_create: 建立成功 |
|
67 | 67 | notice_successful_update: 更新成功 |
|
68 | 68 | notice_successful_delete: 刪除成功 |
|
69 | 69 | notice_successful_connection: 連線成功 |
|
70 | 70 | notice_file_not_found: 您想要存取的頁面已經不存在或被搬移至其他位置。 |
|
71 | 71 | notice_locking_conflict: 資料已被其他使用者更新。 |
|
72 | 72 | notice_not_authorized: 你未被授權存取此頁面。 |
|
73 | 73 | notice_email_sent: 郵件已經成功寄送至以下收件者: %s |
|
74 | 74 | notice_email_error: 寄送郵件的過程中發生錯誤 (%s) |
|
75 | 75 | notice_feeds_access_key_reseted: 您的 RSS 存取鍵已被重新設定。 |
|
76 | 76 | notice_failed_to_save_issues: " %d 個項目儲存失敗 (總共選取 %d 個項目): %s." |
|
77 | 77 | notice_no_issue_selected: "未選擇任何項目!請勾選您想要編輯的項目。" |
|
78 | 78 | notice_account_pending: "您的帳號已經建立,正在等待管理員的審核。" |
|
79 | 79 | notice_default_data_loaded: 預設組態已載入成功。 |
|
80 | 80 | notice_unable_delete_version: 無法刪除版本。 |
|
81 | 81 | |
|
82 | 82 | error_can_t_load_default_data: "無法載入預設組態: %s" |
|
83 | 83 | error_scm_not_found: SCM 儲存庫中找不到這個專案或版本。 |
|
84 | 84 | error_scm_command_failed: "嘗試存取儲存庫時發生錯誤: %s" |
|
85 | 85 | error_scm_annotate: "SCM 儲存庫中無此項目或此項目無法被加註。" |
|
86 | 86 | error_issue_not_found_in_project: '該項目不存在或不屬於此專案' |
|
87 | 87 | |
|
88 | 88 | mail_subject_lost_password: 您的 Redmine 網站密碼 |
|
89 | 89 | mail_body_lost_password: '欲變更您的 Redmine 網站密碼, 請點選以下鏈結:' |
|
90 | 90 | mail_subject_register: 啟用您的 Redmine 帳號 |
|
91 | 91 | mail_body_register: '欲啟用您的 Redmine 帳號, 請點選以下鏈結:' |
|
92 | 92 | mail_body_account_information_external: 您可以使用 "%s" 帳號登入 Redmine 網站。 |
|
93 | 93 | mail_body_account_information: 您的 Redmine 帳號資訊 |
|
94 | 94 | mail_subject_account_activation_request: Redmine 帳號啟用需求通知 |
|
95 | 95 | mail_body_account_activation_request: '有位新用戶 (%s) 已經完成註冊,正等候您的審核:' |
|
96 | 96 | mail_subject_reminder: "您有 %d 個項目即將到期" |
|
97 | 97 | mail_body_reminder: "%d 個指派給您的項目,將於 %d 天之內到期:" |
|
98 | 98 | |
|
99 | 99 | gui_validation_error: 1 個錯誤 |
|
100 | 100 | gui_validation_error_plural: %d 個錯誤 |
|
101 | 101 | |
|
102 | 102 | field_name: 名稱 |
|
103 | 103 | field_description: 概述 |
|
104 | 104 | field_summary: 摘要 |
|
105 | 105 | field_is_required: 必填 |
|
106 | 106 | field_firstname: 名字 |
|
107 | 107 | field_lastname: 姓氏 |
|
108 | 108 | field_mail: 電子郵件 |
|
109 | 109 | field_filename: 檔案名稱 |
|
110 | 110 | field_filesize: 大小 |
|
111 | 111 | field_downloads: 下載次數 |
|
112 | 112 | field_author: 作者 |
|
113 | 113 | field_created_on: 建立日期 |
|
114 | 114 | field_updated_on: 更新 |
|
115 | 115 | field_field_format: 格式 |
|
116 | 116 | field_is_for_all: 給所有專案 |
|
117 | 117 | field_possible_values: 可能值 |
|
118 | 118 | field_regexp: 正規表示式 |
|
119 | 119 | field_min_length: 最小長度 |
|
120 | 120 | field_max_length: 最大長度 |
|
121 | 121 | field_value: 值 |
|
122 | 122 | field_category: 分類 |
|
123 | 123 | field_title: 標題 |
|
124 | 124 | field_project: 專案 |
|
125 | 125 | field_issue: 項目 |
|
126 | 126 | field_status: 狀態 |
|
127 | 127 | field_notes: 筆記 |
|
128 | 128 | field_is_closed: 項目結束 |
|
129 | 129 | field_is_default: 預設值 |
|
130 | 130 | field_tracker: 追蹤標籤 |
|
131 | 131 | field_subject: 主旨 |
|
132 | 132 | field_due_date: 完成日期 |
|
133 | 133 | field_assigned_to: 分派給 |
|
134 | 134 | field_priority: 優先權 |
|
135 | 135 | field_fixed_version: 版本 |
|
136 | 136 | field_user: 用戶 |
|
137 | 137 | field_role: 角色 |
|
138 | 138 | field_homepage: 網站首頁 |
|
139 | 139 | field_is_public: 公開 |
|
140 | 140 | field_parent: 父專案 |
|
141 | 141 | field_is_in_chlog: 項目顯示於變更記錄中 |
|
142 | 142 | field_is_in_roadmap: 項目顯示於版本藍圖中 |
|
143 | 143 | field_login: 帳戶名稱 |
|
144 | 144 | field_mail_notification: 電子郵件提醒選項 |
|
145 | 145 | field_admin: 管理者 |
|
146 | 146 | field_last_login_on: 最近連線日期 |
|
147 | 147 | field_language: 語系 |
|
148 | 148 | field_effective_date: 日期 |
|
149 | 149 | field_password: 目前密碼 |
|
150 | 150 | field_new_password: 新密碼 |
|
151 | 151 | field_password_confirmation: 確認新密碼 |
|
152 | 152 | field_version: 版本 |
|
153 | 153 | field_type: Type |
|
154 | 154 | field_host: Host |
|
155 | 155 | field_port: 連接埠 |
|
156 | 156 | field_account: 帳戶 |
|
157 | 157 | field_base_dn: Base DN |
|
158 | 158 | field_attr_login: 登入屬性 |
|
159 | 159 | field_attr_firstname: 名字屬性 |
|
160 | 160 | field_attr_lastname: 姓氏屬性 |
|
161 | 161 | field_attr_mail: 電子郵件信箱屬性 |
|
162 | 162 | field_onthefly: 即時建立使用者 |
|
163 | 163 | field_start_date: 開始日期 |
|
164 | 164 | field_done_ratio: 完成百分比 |
|
165 | 165 | field_auth_source: 認證模式 |
|
166 | 166 | field_hide_mail: 隱藏我的電子郵件 |
|
167 | 167 | field_comments: 註解 |
|
168 | 168 | field_url: URL |
|
169 | 169 | field_start_page: 首頁 |
|
170 | 170 | field_subproject: 子專案 |
|
171 | 171 | field_hours: 小時 |
|
172 | 172 | field_activity: 活動 |
|
173 | 173 | field_spent_on: 日期 |
|
174 | 174 | field_identifier: 代碼 |
|
175 | 175 | field_is_filter: 用來作為過濾器 |
|
176 | 176 | field_issue_to_id: 相關項目 |
|
177 | 177 | field_delay: 逾期 |
|
178 | 178 | field_assignable: 項目可被分派至此角色 |
|
179 | 179 | field_redirect_existing_links: 重新導向現有連結 |
|
180 | 180 | field_estimated_hours: 預估工時 |
|
181 | 181 | field_column_names: 欄位 |
|
182 | 182 | field_time_zone: 時區 |
|
183 | 183 | field_searchable: 可用做搜尋條件 |
|
184 | 184 | field_default_value: 預設值 |
|
185 | 185 | field_comments_sorting: 註解排序 |
|
186 | 186 | field_parent_title: 父頁面 |
|
187 | 187 | |
|
188 | 188 | setting_app_title: 標題 |
|
189 | 189 | setting_app_subtitle: 副標題 |
|
190 | 190 | setting_welcome_text: 歡迎詞 |
|
191 | 191 | setting_default_language: 預設語系 |
|
192 | 192 | setting_login_required: 需要驗證 |
|
193 | 193 | setting_self_registration: 註冊選項 |
|
194 | 194 | setting_attachment_max_size: 附件大小限制 |
|
195 | 195 | setting_issues_export_limit: 項目匯出限制 |
|
196 | 196 | setting_mail_from: 寄件者電子郵件 |
|
197 | 197 | setting_bcc_recipients: 使用密件副本 (BCC) |
|
198 | 198 | setting_plain_text_mail: 純文字郵件 (不含 HTML) |
|
199 | 199 | setting_host_name: 主機名稱 |
|
200 | 200 | setting_text_formatting: 文字格式 |
|
201 | 201 | setting_wiki_compression: 壓縮 Wiki 歷史文章 |
|
202 | 202 | setting_feeds_limit: RSS 新聞限制 |
|
203 | 203 | setting_autofetch_changesets: 自動取得送交版次 |
|
204 | 204 | setting_default_projects_public: 新建立之專案預設為「公開」 |
|
205 | 205 | setting_sys_api_enabled: 啟用管理版本庫之網頁服務 (Web Service) |
|
206 | 206 | setting_commit_ref_keywords: 送交用於參照項目之關鍵字 |
|
207 | 207 | setting_commit_fix_keywords: 送交用於修正項目之關鍵字 |
|
208 | 208 | setting_autologin: 自動登入 |
|
209 | 209 | setting_date_format: 日期格式 |
|
210 | 210 | setting_time_format: 時間格式 |
|
211 | 211 | setting_cross_project_issue_relations: 允許關聯至其它專案的項目 |
|
212 | 212 | setting_issue_list_default_columns: 預設顯示於項目清單的欄位 |
|
213 | 213 | setting_repositories_encodings: 版本庫編碼 |
|
214 | 214 | setting_commit_logs_encoding: 送交訊息編碼 |
|
215 | 215 | setting_emails_footer: 電子郵件附帶說明 |
|
216 | 216 | setting_protocol: 協定 |
|
217 | 217 | setting_per_page_options: 每頁顯示個數選項 |
|
218 | 218 | setting_user_format: 使用者顯示格式 |
|
219 | 219 | setting_activity_days_default: 專案活動顯示天數 |
|
220 | 220 | setting_display_subprojects_issues: 預設於父專案中顯示子專案的項目 |
|
221 | 221 | setting_enabled_scm: 啟用的 SCM |
|
222 | 222 | setting_mail_handler_api_enabled: 啟用處理傳入電子郵件的服務 |
|
223 | 223 | setting_mail_handler_api_key: API 金鑰 |
|
224 | 224 | setting_sequential_project_identifiers: 循序產生專案識別碼 |
|
225 | 225 | setting_gravatar_enabled: 啟用 Gravatar 全球認證大頭像 |
|
226 | setting_diff_max_lines_displayed: 差異顯示行數之最大值 | |
|
226 | 227 | |
|
227 | 228 | permission_edit_project: 編輯專案 |
|
228 | 229 | permission_select_project_modules: 選擇專案模組 |
|
229 | 230 | permission_manage_members: 管理成員 |
|
230 | 231 | permission_manage_versions: 管理版本 |
|
231 | 232 | permission_manage_categories: 管理項目分類 |
|
232 | 233 | permission_add_issues: 新增項目 |
|
233 | 234 | permission_edit_issues: 編輯項目 |
|
234 | 235 | permission_manage_issue_relations: 管理項目關聯 |
|
235 | 236 | permission_add_issue_notes: 新增筆記 |
|
236 | 237 | permission_edit_issue_notes: 編輯筆記 |
|
237 | 238 | permission_edit_own_issue_notes: 編輯自己的筆記 |
|
238 | 239 | permission_move_issues: 搬移項目 |
|
239 | 240 | permission_delete_issues: 刪除項目 |
|
240 | 241 | permission_manage_public_queries: 管理公開查詢 |
|
241 | 242 | permission_save_queries: 儲存查詢 |
|
242 | 243 | permission_view_gantt: 檢視甘特圖 |
|
243 | 244 | permission_view_calendar: 檢視日曆 |
|
244 | 245 | permission_view_issue_watchers: 檢視觀察者清單 |
|
245 | 246 | permission_add_issue_watchers: 增加觀察者 |
|
246 | 247 | permission_log_time: 紀錄耗用工時 |
|
247 | 248 | permission_view_time_entries: 檢視耗用工時 |
|
248 | 249 | permission_edit_time_entries: 編輯工時紀錄 |
|
249 | 250 | permission_edit_own_time_entries: 編輯自己的工時記錄 |
|
250 | 251 | permission_manage_news: 管理新聞 |
|
251 | 252 | permission_comment_news: 註解新聞 |
|
252 | 253 | permission_manage_documents: 管理文件 |
|
253 | 254 | permission_view_documents: 檢視文件 |
|
254 | 255 | permission_manage_files: 管理檔案 |
|
255 | 256 | permission_view_files: 檢視檔案 |
|
256 | 257 | permission_manage_wiki: 管理 wiki |
|
257 | 258 | permission_rename_wiki_pages: 重新命名 wiki 頁面 |
|
258 | 259 | permission_delete_wiki_pages: 刪除 wiki 頁面 |
|
259 | 260 | permission_view_wiki_pages: 檢視 wiki |
|
260 | 261 | permission_view_wiki_edits: 檢視 wiki 歷史 |
|
261 | 262 | permission_edit_wiki_pages: 編輯 wiki 頁面 |
|
262 | 263 | permission_delete_wiki_pages_attachments: 刪除附件 |
|
263 | 264 | permission_protect_wiki_pages: 專案 wiki 頁面 |
|
264 | 265 | permission_manage_repository: 管理版本庫 |
|
265 | 266 | permission_browse_repository: 瀏覽版本庫 |
|
266 | 267 | permission_view_changesets: 檢視變更集 |
|
267 | 268 | permission_commit_access: 存取送交之變更 |
|
268 | 269 | permission_manage_boards: 管理討論版 |
|
269 | 270 | permission_view_messages: 檢視訊息 |
|
270 | 271 | permission_add_messages: 新增訊息 |
|
271 | 272 | permission_edit_messages: 編輯訊息 |
|
272 | 273 | permission_edit_own_messages: 編輯自己的訊息 |
|
273 | 274 | permission_delete_messages: 刪除訊息 |
|
274 | 275 | permission_delete_own_messages: 刪除自己的訊息 |
|
275 | 276 | |
|
276 | 277 | project_module_issue_tracking: 項目追蹤 |
|
277 | 278 | project_module_time_tracking: 工時追蹤 |
|
278 | 279 | project_module_news: 新聞 |
|
279 | 280 | project_module_documents: 文件 |
|
280 | 281 | project_module_files: 檔案 |
|
281 | 282 | project_module_wiki: Wiki |
|
282 | 283 | project_module_repository: 版本控管 |
|
283 | 284 | project_module_boards: 討論區 |
|
284 | 285 | |
|
285 | 286 | label_user: 用戶 |
|
286 | 287 | label_user_plural: 用戶清單 |
|
287 | 288 | label_user_new: 建立新的帳戶 |
|
288 | 289 | label_project: 專案 |
|
289 | 290 | label_project_new: 建立新的專案 |
|
290 | 291 | label_project_plural: 專案清單 |
|
291 | 292 | label_project_all: 全部的專案 |
|
292 | 293 | label_project_latest: 最近的專案 |
|
293 | 294 | label_issue: 項目 |
|
294 | 295 | label_issue_new: 建立新的項目 |
|
295 | 296 | label_issue_plural: 項目清單 |
|
296 | 297 | label_issue_view_all: 檢視所有項目 |
|
297 | 298 | label_issues_by: 項目按 %s 分組顯示 |
|
298 | 299 | label_issue_added: 項目已新增 |
|
299 | 300 | label_issue_updated: 項目已更新 |
|
300 | 301 | label_document: 文件 |
|
301 | 302 | label_document_new: 建立新的文件 |
|
302 | 303 | label_document_plural: 文件 |
|
303 | 304 | label_document_added: 文件已新增 |
|
304 | 305 | label_role: 角色 |
|
305 | 306 | label_role_plural: 角色 |
|
306 | 307 | label_role_new: 建立新角色 |
|
307 | 308 | label_role_and_permissions: 角色與權限 |
|
308 | 309 | label_member: 成員 |
|
309 | 310 | label_member_new: 建立新的成員 |
|
310 | 311 | label_member_plural: 成員 |
|
311 | 312 | label_tracker: 追蹤標籤 |
|
312 | 313 | label_tracker_plural: 追蹤標籤清單 |
|
313 | 314 | label_tracker_new: 建立新的追蹤標籤 |
|
314 | 315 | label_workflow: 流程 |
|
315 | 316 | label_issue_status: 項目狀態 |
|
316 | 317 | label_issue_status_plural: 項目狀態清單 |
|
317 | 318 | label_issue_status_new: 建立新的狀態 |
|
318 | 319 | label_issue_category: 項目分類 |
|
319 | 320 | label_issue_category_plural: 項目分類清單 |
|
320 | 321 | label_issue_category_new: 建立新的分類 |
|
321 | 322 | label_custom_field: 自訂欄位 |
|
322 | 323 | label_custom_field_plural: 自訂欄位清單 |
|
323 | 324 | label_custom_field_new: 建立新的自訂欄位 |
|
324 | 325 | label_enumerations: 列舉值清單 |
|
325 | 326 | label_enumeration_new: 建立新的列舉值 |
|
326 | 327 | label_information: 資訊 |
|
327 | 328 | label_information_plural: 資訊 |
|
328 | 329 | label_please_login: 請先登入 |
|
329 | 330 | label_register: 註冊 |
|
330 | 331 | label_password_lost: 遺失密碼 |
|
331 | 332 | label_home: 網站首頁 |
|
332 | 333 | label_my_page: 帳戶首頁 |
|
333 | 334 | label_my_account: 我的帳戶 |
|
334 | 335 | label_my_projects: 我的專案 |
|
335 | 336 | label_administration: 網站管理 |
|
336 | 337 | label_login: 登入 |
|
337 | 338 | label_logout: 登出 |
|
338 | 339 | label_help: 說明 |
|
339 | 340 | label_reported_issues: 我通報的項目 |
|
340 | 341 | label_assigned_to_me_issues: 分派給我的項目 |
|
341 | 342 | label_last_login: 最近一次連線 |
|
342 | 343 | label_last_updates: 最近更新 |
|
343 | 344 | label_last_updates_plural: %d 個最近更新 |
|
344 | 345 | label_registered_on: 註冊於 |
|
345 | 346 | label_activity: 活動 |
|
346 | 347 | label_overall_activity: 檢視所有活動 |
|
347 | 348 | label_user_activity: "%s 的活動" |
|
348 | 349 | label_new: 建立新的... |
|
349 | 350 | label_logged_as: 目前登入 |
|
350 | 351 | label_environment: 環境 |
|
351 | 352 | label_authentication: 認證 |
|
352 | 353 | label_auth_source: 認證模式 |
|
353 | 354 | label_auth_source_new: 建立新認證模式 |
|
354 | 355 | label_auth_source_plural: 認證模式清單 |
|
355 | 356 | label_subproject_plural: 子專案 |
|
356 | 357 | label_and_its_subprojects: %s 與其子專案 |
|
357 | 358 | label_min_max_length: 最小 - 最大 長度 |
|
358 | 359 | label_list: 清單 |
|
359 | 360 | label_date: 日期 |
|
360 | 361 | label_integer: 整數 |
|
361 | 362 | label_float: 福點數 |
|
362 | 363 | label_boolean: 布林 |
|
363 | 364 | label_string: 文字 |
|
364 | 365 | label_text: 長文字 |
|
365 | 366 | label_attribute: 屬性 |
|
366 | 367 | label_attribute_plural: 屬性 |
|
367 | 368 | label_download: %d 個下載 |
|
368 | 369 | label_download_plural: %d 個下載 |
|
369 | 370 | label_no_data: 沒有任何資料可供顯示 |
|
370 | 371 | label_change_status: 變更狀態 |
|
371 | 372 | label_history: 歷史 |
|
372 | 373 | label_attachment: 檔案 |
|
373 | 374 | label_attachment_new: 建立新的檔案 |
|
374 | 375 | label_attachment_delete: 刪除檔案 |
|
375 | 376 | label_attachment_plural: 檔案 |
|
376 | 377 | label_file_added: 檔案已新增 |
|
377 | 378 | label_report: 報告 |
|
378 | 379 | label_report_plural: 報告 |
|
379 | 380 | label_news: 新聞 |
|
380 | 381 | label_news_new: 建立新的新聞 |
|
381 | 382 | label_news_plural: 新聞 |
|
382 | 383 | label_news_latest: 最近新聞 |
|
383 | 384 | label_news_view_all: 檢視所有新聞 |
|
384 | 385 | label_news_added: 新聞已新增 |
|
385 | 386 | label_change_log: 變更記錄 |
|
386 | 387 | label_settings: 設定 |
|
387 | 388 | label_overview: 概觀 |
|
388 | 389 | label_version: 版本 |
|
389 | 390 | label_version_new: 建立新的版本 |
|
390 | 391 | label_version_plural: 版本 |
|
391 | 392 | label_confirmation: 確認 |
|
392 | 393 | label_export_to: 匯出至 |
|
393 | 394 | label_read: 讀取... |
|
394 | 395 | label_public_projects: 公開專案 |
|
395 | 396 | label_open_issues: 進行中 |
|
396 | 397 | label_open_issues_plural: 進行中 |
|
397 | 398 | label_closed_issues: 已結束 |
|
398 | 399 | label_closed_issues_plural: 已結束 |
|
399 | 400 | label_total: 總計 |
|
400 | 401 | label_permissions: 權限 |
|
401 | 402 | label_current_status: 目前狀態 |
|
402 | 403 | label_new_statuses_allowed: 可變更至以下狀態 |
|
403 | 404 | label_all: 全部 |
|
404 | 405 | label_none: 空值 |
|
405 | 406 | label_nobody: 無名 |
|
406 | 407 | label_next: 下一頁 |
|
407 | 408 | label_previous: 上一頁 |
|
408 | 409 | label_used_by: Used by |
|
409 | 410 | label_details: 明細 |
|
410 | 411 | label_add_note: 加入一個新筆記 |
|
411 | 412 | label_per_page: 每頁 |
|
412 | 413 | label_calendar: 日曆 |
|
413 | 414 | label_months_from: 個月, 開始月份 |
|
414 | 415 | label_gantt: 甘特圖 |
|
415 | 416 | label_internal: 內部 |
|
416 | 417 | label_last_changes: 最近 %d 個變更 |
|
417 | 418 | label_change_view_all: 檢視所有變更 |
|
418 | 419 | label_personalize_page: 自訂版面 |
|
419 | 420 | label_comment: 註解 |
|
420 | 421 | label_comment_plural: 註解 |
|
421 | 422 | label_comment_add: 加入新註解 |
|
422 | 423 | label_comment_added: 新註解已加入 |
|
423 | 424 | label_comment_delete: 刪除註解 |
|
424 | 425 | label_query: 自訂查詢 |
|
425 | 426 | label_query_plural: 自訂查詢 |
|
426 | 427 | label_query_new: 建立新的查詢 |
|
427 | 428 | label_filter_add: 加入新篩選條件 |
|
428 | 429 | label_filter_plural: 篩選條件 |
|
429 | 430 | label_equals: 等於 |
|
430 | 431 | label_not_equals: 不等於 |
|
431 | 432 | label_in_less_than: 在小於 |
|
432 | 433 | label_in_more_than: 在大於 |
|
433 | 434 | label_in: 在 |
|
434 | 435 | label_today: 今天 |
|
435 | 436 | label_all_time: all time |
|
436 | 437 | label_yesterday: 昨天 |
|
437 | 438 | label_this_week: 本週 |
|
438 | 439 | label_last_week: 上週 |
|
439 | 440 | label_last_n_days: 過去 %d 天 |
|
440 | 441 | label_this_month: 這個月 |
|
441 | 442 | label_last_month: 上個月 |
|
442 | 443 | label_this_year: 今年 |
|
443 | 444 | label_date_range: 日期區間 |
|
444 | 445 | label_less_than_ago: 小於幾天之前 |
|
445 | 446 | label_more_than_ago: 大於幾天之前 |
|
446 | 447 | label_ago: 天以前 |
|
447 | 448 | label_contains: 包含 |
|
448 | 449 | label_not_contains: 不包含 |
|
449 | 450 | label_day_plural: 天 |
|
450 | 451 | label_repository: 版本控管 |
|
451 | 452 | label_repository_plural: 版本控管 |
|
452 | 453 | label_browse: 瀏覽 |
|
453 | 454 | label_modification: %d 變更 |
|
454 | 455 | label_modification_plural: %d 變更 |
|
455 | 456 | label_revision: 版次 |
|
456 | 457 | label_revision_plural: 版次清單 |
|
457 | 458 | label_associated_revisions: 相關版次 |
|
458 | 459 | label_added: 已新增 |
|
459 | 460 | label_modified: 已修改 |
|
460 | 461 | label_copied: 已複製 |
|
461 | 462 | label_renamed: 已重新命名 |
|
462 | 463 | label_deleted: 已刪除 |
|
463 | 464 | label_latest_revision: 最新版次 |
|
464 | 465 | label_latest_revision_plural: 最近版次清單 |
|
465 | 466 | label_view_revisions: 檢視版次清單 |
|
466 | 467 | label_max_size: 最大長度 |
|
467 | 468 | label_on: 總共 |
|
468 | 469 | label_sort_highest: 移動至開頭 |
|
469 | 470 | label_sort_higher: 往上移動 |
|
470 | 471 | label_sort_lower: 往下移動 |
|
471 | 472 | label_sort_lowest: 移動至結尾 |
|
472 | 473 | label_roadmap: 版本藍圖 |
|
473 | 474 | label_roadmap_due_in: 倒數天數: |
|
474 | 475 | label_roadmap_overdue: %s 逾期 |
|
475 | 476 | label_roadmap_no_issues: 此版本尚未包含任何項目 |
|
476 | 477 | label_search: 搜尋 |
|
477 | 478 | label_result_plural: 結果 |
|
478 | 479 | label_all_words: All words |
|
479 | 480 | label_wiki: Wiki |
|
480 | 481 | label_wiki_edit: Wiki 編輯 |
|
481 | 482 | label_wiki_edit_plural: Wiki 編輯 |
|
482 | 483 | label_wiki_page: Wiki 網頁 |
|
483 | 484 | label_wiki_page_plural: Wiki 網頁 |
|
484 | 485 | label_index_by_title: 依標題索引 |
|
485 | 486 | label_index_by_date: 依日期索引 |
|
486 | 487 | label_current_version: 現行版本 |
|
487 | 488 | label_preview: 預覽 |
|
488 | 489 | label_feed_plural: Feeds |
|
489 | 490 | label_changes_details: 所有變更的明細 |
|
490 | 491 | label_issue_tracking: 項目追蹤 |
|
491 | 492 | label_spent_time: 耗用時間 |
|
492 | 493 | label_f_hour: %.2f 小時 |
|
493 | 494 | label_f_hour_plural: %.2f 小時 |
|
494 | 495 | label_time_tracking: 工時追蹤 |
|
495 | 496 | label_change_plural: 變更 |
|
496 | 497 | label_statistics: 統計資訊 |
|
497 | 498 | label_commits_per_month: 依月份統計送交次數 |
|
498 | 499 | label_commits_per_author: 依作者統計送交次數 |
|
499 | 500 | label_view_diff: 檢視差異 |
|
500 | 501 | label_diff_inline: 直列 |
|
501 | 502 | label_diff_side_by_side: 並排 |
|
502 | 503 | label_options: 選項清單 |
|
503 | 504 | label_copy_workflow_from: 從以下追蹤標籤複製工作流程 |
|
504 | 505 | label_permissions_report: 權限報表 |
|
505 | 506 | label_watched_issues: 觀察中的項目清單 |
|
506 | 507 | label_related_issues: 相關的項目清單 |
|
507 | 508 | label_applied_status: 已套用狀態 |
|
508 | 509 | label_loading: 載入中... |
|
509 | 510 | label_relation_new: 建立新關聯 |
|
510 | 511 | label_relation_delete: 刪除關聯 |
|
511 | 512 | label_relates_to: 關聯至 |
|
512 | 513 | label_duplicates: 已重複 |
|
513 | 514 | label_duplicated_by: 與後面所列項目重複 |
|
514 | 515 | label_blocks: 阻擋 |
|
515 | 516 | label_blocked_by: 被阻擋 |
|
516 | 517 | label_precedes: 優先於 |
|
517 | 518 | label_follows: 跟隨於 |
|
518 | 519 | label_end_to_start: 結束─開始 |
|
519 | 520 | label_end_to_end: 結束─結束 |
|
520 | 521 | label_start_to_start: 開始─開始 |
|
521 | 522 | label_start_to_end: 開始─結束 |
|
522 | 523 | label_stay_logged_in: 維持已登入狀態 |
|
523 | 524 | label_disabled: 關閉 |
|
524 | 525 | label_show_completed_versions: 顯示已完成的版本 |
|
525 | 526 | label_me: 我自己 |
|
526 | 527 | label_board: 論壇 |
|
527 | 528 | label_board_new: 建立新論壇 |
|
528 | 529 | label_board_plural: 論壇 |
|
529 | 530 | label_topic_plural: 討論主題 |
|
530 | 531 | label_message_plural: 訊息 |
|
531 | 532 | label_message_last: 上一封訊息 |
|
532 | 533 | label_message_new: 建立新的訊息 |
|
533 | 534 | label_message_posted: 訊息已新增 |
|
534 | 535 | label_reply_plural: 回應 |
|
535 | 536 | label_send_information: 寄送帳戶資訊電子郵件給用戶 |
|
536 | 537 | label_year: 年 |
|
537 | 538 | label_month: 月 |
|
538 | 539 | label_week: 週 |
|
539 | 540 | label_date_from: 開始 |
|
540 | 541 | label_date_to: 結束 |
|
541 | 542 | label_language_based: 依用戶之語系決定 |
|
542 | 543 | label_sort_by: 按 %s 排序 |
|
543 | 544 | label_send_test_email: 寄送測試郵件 |
|
544 | 545 | label_feeds_access_key_created_on: RSS 存取鍵建立於 %s 之前 |
|
545 | 546 | label_module_plural: 模組 |
|
546 | 547 | label_added_time_by: 是由 %s 於 %s 前加入 |
|
547 | 548 | label_updated_time_by: 是由 %s 於 %s 前更新 |
|
548 | 549 | label_updated_time: 於 %s 前更新 |
|
549 | 550 | label_jump_to_a_project: 選擇欲前往的專案... |
|
550 | 551 | label_file_plural: 檔案清單 |
|
551 | 552 | label_changeset_plural: 變更集清單 |
|
552 | 553 | label_default_columns: 預設欄位清單 |
|
553 | 554 | label_no_change_option: (維持不變) |
|
554 | 555 | label_bulk_edit_selected_issues: 編輯選定的項目 |
|
555 | 556 | label_theme: 畫面主題 |
|
556 | 557 | label_default: 預設 |
|
557 | 558 | label_search_titles_only: 僅搜尋標題 |
|
558 | 559 | label_user_mail_option_all: "提醒與我的專案有關的所有事件" |
|
559 | 560 | label_user_mail_option_selected: "只停醒我所選擇專案中的事件..." |
|
560 | 561 | label_user_mail_option_none: "只提醒我觀察中或參與中的事件" |
|
561 | 562 | label_user_mail_no_self_notified: "不提醒我自己所做的變更" |
|
562 | 563 | label_registration_activation_by_email: 透過電子郵件啟用帳戶 |
|
563 | 564 | label_registration_manual_activation: 手動啟用帳戶 |
|
564 | 565 | label_registration_automatic_activation: 自動啟用帳戶 |
|
565 | 566 | label_display_per_page: '每頁顯示: %s 個' |
|
566 | 567 | label_age: 年齡 |
|
567 | 568 | label_change_properties: 變更屬性 |
|
568 | 569 | label_general: 一般 |
|
569 | 570 | label_more: 更多 » |
|
570 | 571 | label_scm: 版本控管 |
|
571 | 572 | label_plugins: 附加元件 |
|
572 | 573 | label_ldap_authentication: LDAP 認證 |
|
573 | 574 | label_downloads_abbr: 下載 |
|
574 | 575 | label_optional_description: 額外的說明 |
|
575 | 576 | label_add_another_file: 增加其他檔案 |
|
576 | 577 | label_preferences: 偏好選項 |
|
577 | 578 | label_chronological_order: 以時間由遠至近排序 |
|
578 | 579 | label_reverse_chronological_order: 以時間由近至遠排序 |
|
579 | 580 | label_planning: 計劃表 |
|
580 | 581 | label_incoming_emails: 傳入的電子郵件 |
|
581 | 582 | label_generate_key: 產生金鑰 |
|
582 | 583 | label_issue_watchers: 觀察者 |
|
583 | 584 | label_example: 範例 |
|
584 | 585 | |
|
585 | 586 | button_login: 登入 |
|
586 | 587 | button_submit: 送出 |
|
587 | 588 | button_save: 儲存 |
|
588 | 589 | button_check_all: 全選 |
|
589 | 590 | button_uncheck_all: 全不選 |
|
590 | 591 | button_delete: 刪除 |
|
591 | 592 | button_create: 建立 |
|
592 | 593 | button_test: 測試 |
|
593 | 594 | button_edit: 編輯 |
|
594 | 595 | button_add: 新增 |
|
595 | 596 | button_change: 修改 |
|
596 | 597 | button_apply: 套用 |
|
597 | 598 | button_clear: 清除 |
|
598 | 599 | button_lock: 鎖定 |
|
599 | 600 | button_unlock: 解除鎖定 |
|
600 | 601 | button_download: 下載 |
|
601 | 602 | button_list: 清單 |
|
602 | 603 | button_view: 檢視 |
|
603 | 604 | button_move: 移動 |
|
604 | 605 | button_back: 返回 |
|
605 | 606 | button_cancel: 取消 |
|
606 | 607 | button_activate: 啟用 |
|
607 | 608 | button_sort: 排序 |
|
608 | 609 | button_log_time: 記錄時間 |
|
609 | 610 | button_rollback: 還原至此版本 |
|
610 | 611 | button_watch: 觀察 |
|
611 | 612 | button_unwatch: 取消觀察 |
|
612 | 613 | button_reply: 回應 |
|
613 | 614 | button_archive: 歸檔 |
|
614 | 615 | button_unarchive: 取消歸檔 |
|
615 | 616 | button_reset: 回復 |
|
616 | 617 | button_rename: 重新命名 |
|
617 | 618 | button_change_password: 變更密碼 |
|
618 | 619 | button_copy: 複製 |
|
619 | 620 | button_annotate: 加注 |
|
620 | 621 | button_update: 更新 |
|
621 | 622 | button_configure: 設定 |
|
622 | 623 | button_quote: 引用 |
|
623 | 624 | |
|
624 | 625 | status_active: 活動中 |
|
625 | 626 | status_registered: 註冊完成 |
|
626 | 627 | status_locked: 鎖定中 |
|
627 | 628 | |
|
628 | 629 | text_select_mail_notifications: 選擇欲寄送提醒通知郵件之動作 |
|
629 | 630 | text_regexp_info: eg. ^[A-Z0-9]+$ |
|
630 | 631 | text_min_max_length_info: 0 代表「不限制」 |
|
631 | 632 | text_project_destroy_confirmation: 您確定要刪除這個專案和其他相關資料? |
|
632 | 633 | text_subprojects_destroy_warning: '下列子專案: %s 將一併被刪除。' |
|
633 | 634 | text_workflow_edit: 選擇角色與追蹤標籤以設定其工作流程 |
|
634 | 635 | text_are_you_sure: 確定執行? |
|
635 | 636 | text_journal_changed: 從 %s 變更為 %s |
|
636 | 637 | text_journal_set_to: 設定為 %s |
|
637 | 638 | text_journal_deleted: 已刪除 |
|
638 | 639 | text_tip_task_begin_day: 今天起始的工作 |
|
639 | 640 | text_tip_task_end_day: 今天截止的的工作 |
|
640 | 641 | text_tip_task_begin_end_day: 今天起始與截止的工作 |
|
641 | 642 | text_project_identifier_info: '只允許小寫英文字母(a-z)、阿拉伯數字與連字符號(-)。<br />儲存後,代碼不可再被更改。' |
|
642 | 643 | text_caracters_maximum: 最多 %d 個字元. |
|
643 | 644 | text_caracters_minimum: 長度必須大於 %d 個字元. |
|
644 | 645 | text_length_between: 長度必須介於 %d 至 %d 個字元之間. |
|
645 | 646 | text_tracker_no_workflow: 此追蹤標籤尚未定義工作流程 |
|
646 | 647 | text_unallowed_characters: 不允許的字元 |
|
647 | 648 | text_comma_separated: 可輸入多個值 (以逗號分隔). |
|
648 | 649 | text_issues_ref_in_commit_messages: 送交訊息中參照(或修正)項目之關鍵字 |
|
649 | 650 | text_issue_added: 項目 %s 已被 %s 通報。 |
|
650 | 651 | text_issue_updated: 項目 %s 已被 %s 更新。 |
|
651 | 652 | text_wiki_destroy_confirmation: 您確定要刪除這個 wiki 和其中的所有內容? |
|
652 | 653 | text_issue_category_destroy_question: 有 (%d) 個項目被指派到此分類. 請選擇您想要的動作? |
|
653 | 654 | text_issue_category_destroy_assignments: 移除這些項目的分類 |
|
654 | 655 | text_issue_category_reassign_to: 重新指派這些項目至其它分類 |
|
655 | 656 | text_user_mail_option: "對於那些未被選擇的專案,將只會接收到您正在觀察中,或是參與中的項目通知。(「參與中的項目」包含您建立的或是指派給您的項目)" |
|
656 | 657 | text_no_configuration_data: "角色、追蹤器、項目狀態與流程尚未被設定完成。\n強烈建議您先載入預設的設定,然後修改成您想要的設定。" |
|
657 | 658 | text_load_default_configuration: 載入預設組態 |
|
658 | 659 | text_status_changed_by_changeset: 已套用至變更集 %s. |
|
659 | 660 | text_issues_destroy_confirmation: '確定刪除已選擇的項目?' |
|
660 | 661 | text_select_project_modules: '選擇此專案可使用之模組:' |
|
661 | 662 | text_default_administrator_account_changed: 已變更預設管理員帳號內容 |
|
662 | 663 | text_file_repository_writable: 可寫入檔案 |
|
663 | 664 | text_rmagick_available: 可使用 RMagick (選配) |
|
664 | 665 | text_destroy_time_entries_question: 您即將刪除的項目已報工 %.02f 小時. 您的選擇是? |
|
665 | 666 | text_destroy_time_entries: 刪除已報工的時數 |
|
666 | 667 | text_assign_time_entries_to_project: 指定已報工的時數至專案中 |
|
667 | 668 | text_reassign_time_entries: '重新指定已報工的時數至此項目:' |
|
668 | 669 | text_user_wrote: '%s 先前提到:' |
|
669 | 670 | text_enumeration_destroy_question: '目前有 %d 個物件使用此列舉值。' |
|
670 | 671 | text_enumeration_category_reassign_to: '重新設定其列舉值為:' |
|
671 | 672 | text_email_delivery_not_configured: "您尚未設定電子郵件傳送方式,因此提醒選項已被停用。\n請在 config/email.yml 中設定 SMTP 之後,重新啟動 Redmine,以啟用電子郵件提醒選項。" |
|
672 | 673 | text_repository_usernames_mapping: "選擇或更新 Redmine 使用者與版本庫使用者之對應關係。\n版本庫中之使用者帳號或電子郵件信箱,與 Redmine 設定相同者,將自動產生對應關係。" |
|
674 | text_diff_truncated: '... 這份差異已被截短以符合顯示行數之最大值' | |
|
673 | 675 | |
|
674 | 676 | default_role_manager: 管理人員 |
|
675 | 677 | default_role_developper: 開發人員 |
|
676 | 678 | default_role_reporter: 報告人員 |
|
677 | 679 | default_tracker_bug: 臭蟲 |
|
678 | 680 | default_tracker_feature: 功能 |
|
679 | 681 | default_tracker_support: 支援 |
|
680 | 682 | default_issue_status_new: 新建立 |
|
681 | 683 | default_issue_status_assigned: 已指派 |
|
682 | 684 | default_issue_status_resolved: 已解決 |
|
683 | 685 | default_issue_status_feedback: 已回應 |
|
684 | 686 | default_issue_status_closed: 已結束 |
|
685 | 687 | default_issue_status_rejected: 已拒絕 |
|
686 | 688 | default_doc_category_user: 使用手冊 |
|
687 | 689 | default_doc_category_tech: 技術文件 |
|
688 | 690 | default_priority_low: 低 |
|
689 | 691 | default_priority_normal: 正常 |
|
690 | 692 | default_priority_high: 高 |
|
691 | 693 | default_priority_urgent: 速 |
|
692 | 694 | default_priority_immediate: 急 |
|
693 | 695 | default_activity_design: 設計 |
|
694 | 696 | default_activity_development: 開發 |
|
695 | 697 | |
|
696 | 698 | enumeration_issue_priorities: 項目優先權 |
|
697 | 699 | enumeration_doc_categories: 文件分類 |
|
698 | 700 | enumeration_activities: 活動 (時間追蹤) |
|
699 | text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' | |
|
700 | setting_diff_max_lines_displayed: Max number of diff lines displayed |
@@ -1,700 +1,700 | |||
|
1 | 1 | _gloc_rule_default: '|n| n==1 ? "" : "_plural" ' |
|
2 | 2 | |
|
3 | 3 | actionview_datehelper_select_day_prefix: |
|
4 | 4 | actionview_datehelper_select_month_names: 一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月 |
|
5 | 5 | actionview_datehelper_select_month_names_abbr: 一,二,三,四,五,六,七,八,九,十,十一,十二 |
|
6 | 6 | actionview_datehelper_select_month_prefix: |
|
7 | 7 | actionview_datehelper_select_year_prefix: |
|
8 | 8 | actionview_datehelper_time_in_words_day: 1 天 |
|
9 | 9 | actionview_datehelper_time_in_words_day_plural: %d 天 |
|
10 | 10 | actionview_datehelper_time_in_words_hour_about: 约 1 小时 |
|
11 | 11 | actionview_datehelper_time_in_words_hour_about_plural: 约 %d 小时 |
|
12 | 12 | actionview_datehelper_time_in_words_hour_about_single: 约 1 小时 |
|
13 | 13 | actionview_datehelper_time_in_words_minute: 1 分钟 |
|
14 | 14 | actionview_datehelper_time_in_words_minute_half: 半分钟 |
|
15 | 15 | actionview_datehelper_time_in_words_minute_less_than: 1 分钟以内 |
|
16 | 16 | actionview_datehelper_time_in_words_minute_plural: %d 分钟 |
|
17 | 17 | actionview_datehelper_time_in_words_minute_single: 1 分钟 |
|
18 | 18 | actionview_datehelper_time_in_words_second_less_than: 1 秒以内 |
|
19 | 19 | actionview_datehelper_time_in_words_second_less_than_plural: %d 秒以内 |
|
20 | 20 | actionview_instancetag_blank_option: 请选择 |
|
21 | 21 | |
|
22 | 22 | activerecord_error_inclusion: 未被包含在列表中 |
|
23 | 23 | activerecord_error_exclusion: 是保留字 |
|
24 | 24 | activerecord_error_invalid: 是无效的 |
|
25 | 25 | activerecord_error_confirmation: 与确认栏不符 |
|
26 | 26 | activerecord_error_accepted: 必须被接受 |
|
27 | 27 | activerecord_error_empty: 不可为空 |
|
28 | 28 | activerecord_error_blank: 不可为空白 |
|
29 | 29 | activerecord_error_too_long: 过长 |
|
30 | 30 | activerecord_error_too_short: 过短 |
|
31 | 31 | activerecord_error_wrong_length: 长度不正确 |
|
32 | 32 | activerecord_error_taken: 已被使用 |
|
33 | 33 | activerecord_error_not_a_number: 不是数字 |
|
34 | 34 | activerecord_error_not_a_date: 不是有效的日期 |
|
35 | 35 | activerecord_error_greater_than_start_date: 必须在起始日期之后 |
|
36 | 36 | activerecord_error_not_same_project: 不属于同一个项目 |
|
37 | 37 | activerecord_error_circular_dependency: 此关联将导致循环依赖 |
|
38 | 38 | |
|
39 | 39 | general_fmt_age: %d 年 |
|
40 | 40 | general_fmt_age_plural: %d 年 |
|
41 | 41 | general_fmt_date: %%m/%%d/%%Y |
|
42 | 42 | general_fmt_datetime: %%m/%%d/%%Y %%I:%%M %%p |
|
43 | 43 | general_fmt_datetime_short: %%b %%d, %%I:%%M %%p |
|
44 | 44 | general_fmt_time: %%I:%%M %%p |
|
45 | 45 | general_text_No: '否' |
|
46 | 46 | general_text_Yes: '是' |
|
47 | 47 | general_text_no: '否' |
|
48 | 48 | general_text_yes: '是' |
|
49 | 49 | general_lang_name: 'Simplified Chinese (简体中文)' |
|
50 | 50 | general_csv_separator: ',' |
|
51 | 51 | general_csv_decimal_separator: '.' |
|
52 | 52 | general_csv_encoding: gb2312 |
|
53 | 53 | general_pdf_encoding: gb2312 |
|
54 | 54 | general_day_names: 星期一,星期二,星期三,星期四,星期五,星期六,星期日 |
|
55 | 55 | general_first_day_of_week: '7' |
|
56 | 56 | |
|
57 | 57 | notice_account_updated: 帐号更新成功 |
|
58 | 58 | notice_account_invalid_creditentials: 无效的用户名或密码 |
|
59 | 59 | notice_account_password_updated: 密码更新成功 |
|
60 | 60 | notice_account_wrong_password: 密码错误 |
|
61 | 61 | notice_account_register_done: 帐号创建成功,请使用注册确认邮件中的链接来激活您的帐号。 |
|
62 | 62 | notice_account_unknown_email: 未知用户 |
|
63 | 63 | notice_can_t_change_password: 该帐号使用了外部认证,因此无法更改密码。 |
|
64 | 64 | notice_account_lost_email_sent: 系统已将引导您设置新密码的邮件发送给您。 |
|
65 | 65 | notice_account_activated: 您的帐号已被激活。您现在可以登录了。 |
|
66 | 66 | notice_successful_create: 创建成功 |
|
67 | 67 | notice_successful_update: 更新成功 |
|
68 | 68 | notice_successful_delete: 删除成功 |
|
69 | 69 | notice_successful_connection: 连接成功 |
|
70 | 70 | notice_file_not_found: 您访问的页面不存在或已被删除。 |
|
71 | 71 | notice_locking_conflict: 数据已被另一位用户更新 |
|
72 | 72 | notice_not_authorized: 对不起,您无权访问此页面。 |
|
73 | 73 | notice_email_sent: 邮件已成功发送到 %s |
|
74 | 74 | notice_email_error: 发送邮件时发生错误 (%s) |
|
75 | 75 | notice_feeds_access_key_reseted: 您的RSS存取键已被重置。 |
|
76 | 76 | notice_failed_to_save_issues: "%d 个问题保存失败(共选择 %d 个问题):%s." |
|
77 | 77 | notice_no_issue_selected: "未选择任何问题!请选择您要编辑的问题。" |
|
78 | 78 | notice_account_pending: "您的帐号已被成功创建,正在等待管理员的审核。" |
|
79 | 79 | notice_default_data_loaded: 成功载入默认设置。 |
|
80 | 80 | notice_unable_delete_version: 无法删除版本 |
|
81 | 81 | |
|
82 | 82 | error_can_t_load_default_data: "无法载入默认设置:%s" |
|
83 | 83 | error_scm_not_found: "版本库中不存在该条目和(或)其修订版本。" |
|
84 | 84 | error_scm_command_failed: "访问版本库时发生错误:%s" |
|
85 | 85 | error_scm_annotate: "该条目不存在或无法追溯。" |
|
86 | 86 | error_issue_not_found_in_project: '问题不存在或不属于此项目' |
|
87 | 87 | |
|
88 | 88 | mail_subject_lost_password: 您的 %s 密码 |
|
89 | 89 | mail_body_lost_password: '请点击以下链接来修改您的密码:' |
|
90 | 90 | mail_subject_register: %s帐号激活 |
|
91 | 91 | mail_body_register: '请点击以下链接来激活您的帐号:' |
|
92 | 92 | mail_body_account_information_external: 您可以使用您的 "%s" 帐号来登录。 |
|
93 | 93 | mail_body_account_information: 您的帐号信息 |
|
94 | 94 | mail_subject_account_activation_request: %s帐号激活请求 |
|
95 | 95 | mail_body_account_activation_request: '新用户(%s)已完成注册,正在等候您的审核:' |
|
96 | 96 | mail_subject_reminder: "%d 个问题需要尽快解决" |
|
97 | 97 | mail_body_reminder: "指派给您的 %d 个问题需要在 %d 天内完成:" |
|
98 | 98 | |
|
99 | 99 | gui_validation_error: 1 个错误 |
|
100 | 100 | gui_validation_error_plural: %d 个错误 |
|
101 | 101 | |
|
102 | 102 | field_name: 名称 |
|
103 | 103 | field_description: 描述 |
|
104 | 104 | field_summary: 摘要 |
|
105 | 105 | field_is_required: 必填 |
|
106 | 106 | field_firstname: 名字 |
|
107 | 107 | field_lastname: 姓氏 |
|
108 | 108 | field_mail: 邮件地址 |
|
109 | 109 | field_filename: 文件 |
|
110 | 110 | field_filesize: 大小 |
|
111 | 111 | field_downloads: 下载次数 |
|
112 | 112 | field_author: 作者 |
|
113 | 113 | field_created_on: 创建于 |
|
114 | 114 | field_updated_on: 更新于 |
|
115 | 115 | field_field_format: 格式 |
|
116 | 116 | field_is_for_all: 用于所有项目 |
|
117 | 117 | field_possible_values: 可能的值 |
|
118 | 118 | field_regexp: 正则表达式 |
|
119 | 119 | field_min_length: 最小长度 |
|
120 | 120 | field_max_length: 最大长度 |
|
121 | 121 | field_value: 值 |
|
122 | 122 | field_category: 类别 |
|
123 | 123 | field_title: 标题 |
|
124 | 124 | field_project: 项目 |
|
125 | 125 | field_issue: 问题 |
|
126 | 126 | field_status: 状态 |
|
127 | 127 | field_notes: 说明 |
|
128 | 128 | field_is_closed: 已关闭的问题 |
|
129 | 129 | field_is_default: 默认值 |
|
130 | 130 | field_tracker: 跟踪 |
|
131 | 131 | field_subject: 主题 |
|
132 | 132 | field_due_date: 完成日期 |
|
133 | 133 | field_assigned_to: 指派给 |
|
134 | 134 | field_priority: 优先级 |
|
135 | 135 | field_fixed_version: 目标版本 |
|
136 | 136 | field_user: 用户 |
|
137 | 137 | field_role: 角色 |
|
138 | 138 | field_homepage: 主页 |
|
139 | 139 | field_is_public: 公开 |
|
140 | 140 | field_parent: 上级项目 |
|
141 | 141 | field_is_in_chlog: 在更新日志中显示问题 |
|
142 | 142 | field_is_in_roadmap: 在路线图中显示问题 |
|
143 | 143 | field_login: 登录名 |
|
144 | 144 | field_mail_notification: 邮件通知 |
|
145 | 145 | field_admin: 管理员 |
|
146 | 146 | field_last_login_on: 最后登录 |
|
147 | 147 | field_language: 语言 |
|
148 | 148 | field_effective_date: 日期 |
|
149 | 149 | field_password: 密码 |
|
150 | 150 | field_new_password: 新密码 |
|
151 | 151 | field_password_confirmation: 确认 |
|
152 | 152 | field_version: 版本 |
|
153 | 153 | field_type: 类型 |
|
154 | 154 | field_host: 主机 |
|
155 | 155 | field_port: 端口 |
|
156 | 156 | field_account: 帐号 |
|
157 | 157 | field_base_dn: Base DN |
|
158 | 158 | field_attr_login: 登录名属性 |
|
159 | 159 | field_attr_firstname: 名字属性 |
|
160 | 160 | field_attr_lastname: 姓氏属性 |
|
161 | 161 | field_attr_mail: 邮件属性 |
|
162 | 162 | field_onthefly: 即时用户生成 |
|
163 | 163 | field_start_date: 开始 |
|
164 | 164 | field_done_ratio: 完成度 |
|
165 | 165 | field_auth_source: 认证模式 |
|
166 | 166 | field_hide_mail: 隐藏我的邮件地址 |
|
167 | 167 | field_comments: 注释 |
|
168 | 168 | field_url: URL |
|
169 | 169 | field_start_page: 起始页 |
|
170 | 170 | field_subproject: 子项目 |
|
171 | 171 | field_hours: 小时 |
|
172 | 172 | field_activity: 活动 |
|
173 | 173 | field_spent_on: 日期 |
|
174 | 174 | field_identifier: 标识 |
|
175 | 175 | field_is_filter: 作为过滤条件 |
|
176 | 176 | field_issue_to_id: 相关问题 |
|
177 | 177 | field_delay: 延期 |
|
178 | 178 | field_assignable: 问题可指派给此角色 |
|
179 | 179 | field_redirect_existing_links: 重定向到现有链接 |
|
180 | 180 | field_estimated_hours: 预期时间 |
|
181 | 181 | field_column_names: 列 |
|
182 | 182 | field_time_zone: 时区 |
|
183 | 183 | field_searchable: 可用作搜索条件 |
|
184 | 184 | field_default_value: 默认值 |
|
185 | 185 | field_comments_sorting: 显示注释 |
|
186 | 186 | field_parent_title: 上级页面 |
|
187 | 187 | |
|
188 | 188 | setting_app_title: 应用程序标题 |
|
189 | 189 | setting_app_subtitle: 应用程序子标题 |
|
190 | 190 | setting_welcome_text: 欢迎文字 |
|
191 | 191 | setting_default_language: 默认语言 |
|
192 | 192 | setting_login_required: 要求认证 |
|
193 | 193 | setting_self_registration: 允许自注册 |
|
194 | 194 | setting_attachment_max_size: 附件大小限制 |
|
195 | 195 | setting_issues_export_limit: 问题输出条目的限制 |
|
196 | 196 | setting_mail_from: 邮件发件人地址 |
|
197 | 197 | setting_bcc_recipients: 使用密件抄送 (bcc) |
|
198 | 198 | setting_plain_text_mail: 纯文本(无HTML) |
|
199 | 199 | setting_host_name: 主机名称 |
|
200 | 200 | setting_text_formatting: 文本格式 |
|
201 | 201 | setting_wiki_compression: 压缩Wiki历史文档 |
|
202 | 202 | setting_feeds_limit: RSS Feed内容条数限制 |
|
203 | 203 | setting_default_projects_public: 新建项目默认为公开项目 |
|
204 | 204 | setting_autofetch_changesets: 自动获取程序变更 |
|
205 | 205 | setting_sys_api_enabled: 启用用于版本库管理的Web Service |
|
206 | 206 | setting_commit_ref_keywords: 用于引用问题的关键字 |
|
207 | 207 | setting_commit_fix_keywords: 用于解决问题的关键字 |
|
208 | 208 | setting_autologin: 自动登录 |
|
209 | 209 | setting_date_format: 日期格式 |
|
210 | 210 | setting_time_format: 时间格式 |
|
211 | 211 | setting_cross_project_issue_relations: 允许不同项目之间的问题关联 |
|
212 | 212 | setting_issue_list_default_columns: 问题列表中显示的默认列 |
|
213 | 213 | setting_repositories_encodings: 版本库编码 |
|
214 | 214 | setting_commit_logs_encoding: 提交注释的编码 |
|
215 | 215 | setting_emails_footer: 邮件签名 |
|
216 | 216 | setting_protocol: 协议 |
|
217 | 217 | setting_per_page_options: 每页显示条目个数的设置 |
|
218 | 218 | setting_user_format: 用户显示格式 |
|
219 | 219 | setting_activity_days_default: 在项目活动中显示的天数 |
|
220 | 220 | setting_display_subprojects_issues: 在项目页面上默认显示子项目的问题 |
|
221 | 221 | setting_enabled_scm: 启用 SCM |
|
222 | 222 | setting_mail_handler_api_enabled: 启用用于接收邮件的服务 |
|
223 | 223 | setting_mail_handler_api_key: API key |
|
224 | 224 | setting_sequential_project_identifiers: 顺序产生项目标识 |
|
225 | 225 | setting_gravatar_enabled: 使用Gravatar用户头像 |
|
226 | setting_diff_max_lines_displayed: 查看差别页面上显示的最大行数 | |
|
226 | 227 | |
|
227 | 228 | permission_edit_project: 编辑项目 |
|
228 | 229 | permission_select_project_modules: 选择项目模块 |
|
229 | 230 | permission_manage_members: 管理成员 |
|
230 | 231 | permission_manage_versions: 管理版本 |
|
231 | 232 | permission_manage_categories: 管理问题类别 |
|
232 | 233 | permission_add_issues: 新建问题 |
|
233 | 234 | permission_edit_issues: 更新问题 |
|
234 | 235 | permission_manage_issue_relations: 管理问题关联 |
|
235 | 236 | permission_add_issue_notes: 添加说明 |
|
236 | 237 | permission_edit_issue_notes: 编辑说明 |
|
237 | 238 | permission_edit_own_issue_notes: 编辑自己的说明 |
|
238 | 239 | permission_move_issues: 移动问题 |
|
239 | 240 | permission_delete_issues: 删除问题 |
|
240 | 241 | permission_manage_public_queries: 管理公开的查询 |
|
241 | 242 | permission_save_queries: 保存查询 |
|
242 | 243 | permission_view_gantt: 查看甘特图 |
|
243 | 244 | permission_view_calendar: 查看日历 |
|
244 | 245 | permission_view_issue_watchers: 查看跟踪者列表 |
|
245 | 246 | permission_add_issue_watchers: 添加跟踪者 |
|
246 | 247 | permission_log_time: 登记工时 |
|
247 | 248 | permission_view_time_entries: 查看耗时 |
|
248 | 249 | permission_edit_time_entries: 编辑耗时 |
|
249 | 250 | permission_edit_own_time_entries: 编辑自己的耗时 |
|
250 | 251 | permission_manage_news: 管理新闻 |
|
251 | 252 | permission_comment_news: 为新闻添加评论 |
|
252 | 253 | permission_manage_documents: 管理文档 |
|
253 | 254 | permission_view_documents: 查看文档 |
|
254 | 255 | permission_manage_files: 管理文件 |
|
255 | 256 | permission_view_files: 查看文件 |
|
256 | 257 | permission_manage_wiki: 管理Wiki |
|
257 | 258 | permission_rename_wiki_pages: 重命名Wiki页面 |
|
258 | 259 | permission_delete_wiki_pages: 删除Wiki页面 |
|
259 | 260 | permission_view_wiki_pages: 查看Wiki |
|
260 | 261 | permission_view_wiki_edits: 查看Wiki历史记录 |
|
261 | 262 | permission_edit_wiki_pages: 编辑Wiki页面 |
|
262 | 263 | permission_delete_wiki_pages_attachments: 删除附件 |
|
263 | 264 | permission_protect_wiki_pages: 保护Wiki页面 |
|
264 | 265 | permission_manage_repository: 管理版本库 |
|
265 | 266 | permission_browse_repository: 浏览版本库 |
|
266 | 267 | permission_view_changesets: 查看变更 |
|
267 | 268 | permission_commit_access: 访问提交信息 |
|
268 | 269 | permission_manage_boards: 管理讨论区 |
|
269 | 270 | permission_view_messages: 查看帖子 |
|
270 | 271 | permission_add_messages: 发表帖子 |
|
271 | 272 | permission_edit_messages: 编辑帖子 |
|
272 | 273 | permission_edit_own_messages: 编辑自己的帖子 |
|
273 | 274 | permission_delete_messages: 删除帖子 |
|
274 | 275 | permission_delete_own_messages: 删除自己的帖子 |
|
275 | 276 | |
|
276 | 277 | project_module_issue_tracking: 问题跟踪 |
|
277 | 278 | project_module_time_tracking: 时间跟踪 |
|
278 | 279 | project_module_news: 新闻 |
|
279 | 280 | project_module_documents: 文档 |
|
280 | 281 | project_module_files: 文件 |
|
281 | 282 | project_module_wiki: Wiki |
|
282 | 283 | project_module_repository: 版本库 |
|
283 | 284 | project_module_boards: 讨论区 |
|
284 | 285 | |
|
285 | 286 | label_user: 用户 |
|
286 | 287 | label_user_plural: 用户 |
|
287 | 288 | label_user_new: 新建用户 |
|
288 | 289 | label_project: 项目 |
|
289 | 290 | label_project_new: 新建项目 |
|
290 | 291 | label_project_plural: 项目 |
|
291 | 292 | label_project_all: 所有的项目 |
|
292 | 293 | label_project_latest: 最近更新的项目 |
|
293 | 294 | label_issue: 问题 |
|
294 | 295 | label_issue_new: 新建问题 |
|
295 | 296 | label_issue_plural: 问题 |
|
296 | 297 | label_issue_view_all: 查看所有问题 |
|
297 | 298 | label_issues_by: 按 %s 分组显示问题 |
|
298 | 299 | label_issue_added: 问题已添加 |
|
299 | 300 | label_issue_updated: 问题已更新 |
|
300 | 301 | label_document: 文档 |
|
301 | 302 | label_document_new: 新建文档 |
|
302 | 303 | label_document_plural: 文档 |
|
303 | 304 | label_document_added: 文档已添加 |
|
304 | 305 | label_role: 角色 |
|
305 | 306 | label_role_plural: 角色 |
|
306 | 307 | label_role_new: 新建角色 |
|
307 | 308 | label_role_and_permissions: 角色和权限 |
|
308 | 309 | label_member: 成员 |
|
309 | 310 | label_member_new: 新建成员 |
|
310 | 311 | label_member_plural: 成员 |
|
311 | 312 | label_tracker: 跟踪标签 |
|
312 | 313 | label_tracker_plural: 跟踪标签 |
|
313 | 314 | label_tracker_new: 新建跟踪标签 |
|
314 | 315 | label_workflow: 工作流程 |
|
315 | 316 | label_issue_status: 问题状态 |
|
316 | 317 | label_issue_status_plural: 问题状态 |
|
317 | 318 | label_issue_status_new: 新建问题状态 |
|
318 | 319 | label_issue_category: 问题类别 |
|
319 | 320 | label_issue_category_plural: 问题类别 |
|
320 | 321 | label_issue_category_new: 新建问题类别 |
|
321 | 322 | label_custom_field: 自定义属性 |
|
322 | 323 | label_custom_field_plural: 自定义属性 |
|
323 | 324 | label_custom_field_new: 新建自定义属性 |
|
324 | 325 | label_enumerations: 枚举值 |
|
325 | 326 | label_enumeration_new: 新建枚举值 |
|
326 | 327 | label_information: 信息 |
|
327 | 328 | label_information_plural: 信息 |
|
328 | 329 | label_please_login: 请登录 |
|
329 | 330 | label_register: 注册 |
|
330 | 331 | label_password_lost: 忘记密码 |
|
331 | 332 | label_home: 主页 |
|
332 | 333 | label_my_page: 我的工作台 |
|
333 | 334 | label_my_account: 我的帐号 |
|
334 | 335 | label_my_projects: 我的项目 |
|
335 | 336 | label_administration: 管理 |
|
336 | 337 | label_login: 登录 |
|
337 | 338 | label_logout: 退出 |
|
338 | 339 | label_help: 帮助 |
|
339 | 340 | label_reported_issues: 已报告的问题 |
|
340 | 341 | label_assigned_to_me_issues: 指派给我的问题 |
|
341 | 342 | label_last_login: 最后登录 |
|
342 | 343 | label_last_updates: 最后更新 |
|
343 | 344 | label_last_updates_plural: %d 最后更新 |
|
344 | 345 | label_registered_on: 注册于 |
|
345 | 346 | label_activity: 活动 |
|
346 | 347 | label_overall_activity: 全部活动 |
|
347 | 348 | label_user_activity: "%s 的活动" |
|
348 | 349 | label_new: 新建 |
|
349 | 350 | label_logged_as: 登录为 |
|
350 | 351 | label_environment: 环境 |
|
351 | 352 | label_authentication: 认证 |
|
352 | 353 | label_auth_source: 认证模式 |
|
353 | 354 | label_auth_source_new: 新建认证模式 |
|
354 | 355 | label_auth_source_plural: 认证模式 |
|
355 | 356 | label_subproject_plural: 子项目 |
|
356 | 357 | label_and_its_subprojects: %s 及其子项目 |
|
357 | 358 | label_min_max_length: 最小 - 最大 长度 |
|
358 | 359 | label_list: 列表 |
|
359 | 360 | label_date: 日期 |
|
360 | 361 | label_integer: 整数 |
|
361 | 362 | label_float: 浮点数 |
|
362 | 363 | label_boolean: 布尔量 |
|
363 | 364 | label_string: 文字 |
|
364 | 365 | label_text: 长段文字 |
|
365 | 366 | label_attribute: 属性 |
|
366 | 367 | label_attribute_plural: 属性 |
|
367 | 368 | label_download: %d 次下载 |
|
368 | 369 | label_download_plural: %d 次下载 |
|
369 | 370 | label_no_data: 没有任何数据可供显示 |
|
370 | 371 | label_change_status: 变更状态 |
|
371 | 372 | label_history: 历史记录 |
|
372 | 373 | label_attachment: 文件 |
|
373 | 374 | label_attachment_new: 新建文件 |
|
374 | 375 | label_attachment_delete: 删除文件 |
|
375 | 376 | label_attachment_plural: 文件 |
|
376 | 377 | label_file_added: 文件已添加 |
|
377 | 378 | label_report: 报表 |
|
378 | 379 | label_report_plural: 报表 |
|
379 | 380 | label_news: 新闻 |
|
380 | 381 | label_news_new: 添加新闻 |
|
381 | 382 | label_news_plural: 新闻 |
|
382 | 383 | label_news_latest: 最近的新闻 |
|
383 | 384 | label_news_view_all: 查看所有新闻 |
|
384 | 385 | label_news_added: 新闻已添加 |
|
385 | 386 | label_change_log: 更新日志 |
|
386 | 387 | label_settings: 配置 |
|
387 | 388 | label_overview: 概述 |
|
388 | 389 | label_version: 版本 |
|
389 | 390 | label_version_new: 新建版本 |
|
390 | 391 | label_version_plural: 版本 |
|
391 | 392 | label_confirmation: 确认 |
|
392 | 393 | label_export_to: 导出 |
|
393 | 394 | label_read: 读取... |
|
394 | 395 | label_public_projects: 公开的项目 |
|
395 | 396 | label_open_issues: 打开 |
|
396 | 397 | label_open_issues_plural: 打开 |
|
397 | 398 | label_closed_issues: 已关闭 |
|
398 | 399 | label_closed_issues_plural: 已关闭 |
|
399 | 400 | label_total: 合计 |
|
400 | 401 | label_permissions: 权限 |
|
401 | 402 | label_current_status: 当前状态 |
|
402 | 403 | label_new_statuses_allowed: 可变更的新状态 |
|
403 | 404 | label_all: 全部 |
|
404 | 405 | label_none: 无 |
|
405 | 406 | label_nobody: 无人 |
|
406 | 407 | label_next: 下一个 |
|
407 | 408 | label_previous: 上一个 |
|
408 | 409 | label_used_by: 使用中 |
|
409 | 410 | label_details: 详情 |
|
410 | 411 | label_add_note: 添加说明 |
|
411 | 412 | label_per_page: 每页 |
|
412 | 413 | label_calendar: 日历 |
|
413 | 414 | label_months_from: 个月以来 |
|
414 | 415 | label_gantt: 甘特图 |
|
415 | 416 | label_internal: 内部 |
|
416 | 417 | label_last_changes: 最近的 %d 次变更 |
|
417 | 418 | label_change_view_all: 查看所有变更 |
|
418 | 419 | label_personalize_page: 个性化定制本页 |
|
419 | 420 | label_comment: 评论 |
|
420 | 421 | label_comment_plural: 评论 |
|
421 | 422 | label_comment_add: 添加评论 |
|
422 | 423 | label_comment_added: 评论已添加 |
|
423 | 424 | label_comment_delete: 删除评论 |
|
424 | 425 | label_query: 自定义查询 |
|
425 | 426 | label_query_plural: 自定义查询 |
|
426 | 427 | label_query_new: 新建查询 |
|
427 | 428 | label_filter_add: 增加过滤器 |
|
428 | 429 | label_filter_plural: 过滤器 |
|
429 | 430 | label_equals: 等于 |
|
430 | 431 | label_not_equals: 不等于 |
|
431 | 432 | label_in_less_than: 剩余天数小于 |
|
432 | 433 | label_in_more_than: 剩余天数大于 |
|
433 | 434 | label_in: 剩余天数 |
|
434 | 435 | label_today: 今天 |
|
435 | 436 | label_all_time: 全部时间 |
|
436 | 437 | label_yesterday: 昨天 |
|
437 | 438 | label_this_week: 本周 |
|
438 | 439 | label_last_week: 下周 |
|
439 | 440 | label_last_n_days: 最后 %d 天 |
|
440 | 441 | label_this_month: 本月 |
|
441 | 442 | label_last_month: 下月 |
|
442 | 443 | label_this_year: 今年 |
|
443 | 444 | label_date_range: 日期范围 |
|
444 | 445 | label_less_than_ago: 之前天数少于 |
|
445 | 446 | label_more_than_ago: 之前天数大于 |
|
446 | 447 | label_ago: 之前天数 |
|
447 | 448 | label_contains: 包含 |
|
448 | 449 | label_not_contains: 不包含 |
|
449 | 450 | label_day_plural: 天 |
|
450 | 451 | label_repository: 版本库 |
|
451 | 452 | label_repository_plural: 版本库 |
|
452 | 453 | label_browse: 浏览 |
|
453 | 454 | label_modification: %d 个更新 |
|
454 | 455 | label_modification_plural: %d 个更新 |
|
455 | 456 | label_revision: 修订 |
|
456 | 457 | label_revision_plural: 修订 |
|
457 | 458 | label_associated_revisions: 相关修订版本 |
|
458 | 459 | label_added: 已添加 |
|
459 | 460 | label_modified: 已修改 |
|
460 | 461 | label_copied: 已复制 |
|
461 | 462 | label_renamed: 已重命名 |
|
462 | 463 | label_deleted: 已删除 |
|
463 | 464 | label_latest_revision: 最近的修订版本 |
|
464 | 465 | label_latest_revision_plural: 最近的修订版本 |
|
465 | 466 | label_view_revisions: 查看修订 |
|
466 | 467 | label_max_size: 最大尺寸 |
|
467 | 468 | label_on: 'on' |
|
468 | 469 | label_sort_highest: 置顶 |
|
469 | 470 | label_sort_higher: 上移 |
|
470 | 471 | label_sort_lower: 下移 |
|
471 | 472 | label_sort_lowest: 置底 |
|
472 | 473 | label_roadmap: 路线图 |
|
473 | 474 | label_roadmap_due_in: 截止日期到 %s |
|
474 | 475 | label_roadmap_overdue: %s 延期 |
|
475 | 476 | label_roadmap_no_issues: 该版本没有问题 |
|
476 | 477 | label_search: 搜索 |
|
477 | 478 | label_result_plural: 结果 |
|
478 | 479 | label_all_words: 所有单词 |
|
479 | 480 | label_wiki: Wiki |
|
480 | 481 | label_wiki_edit: Wiki 编辑 |
|
481 | 482 | label_wiki_edit_plural: Wiki 编辑记录 |
|
482 | 483 | label_wiki_page: Wiki 页面 |
|
483 | 484 | label_wiki_page_plural: Wiki 页面 |
|
484 | 485 | label_index_by_title: 按标题索引 |
|
485 | 486 | label_index_by_date: 按日期索引 |
|
486 | 487 | label_current_version: 当前版本 |
|
487 | 488 | label_preview: 预览 |
|
488 | 489 | label_feed_plural: Feeds |
|
489 | 490 | label_changes_details: 所有变更的详情 |
|
490 | 491 | label_issue_tracking: 问题跟踪 |
|
491 | 492 | label_spent_time: 耗时 |
|
492 | 493 | label_f_hour: %.2f 小时 |
|
493 | 494 | label_f_hour_plural: %.2f 小时 |
|
494 | 495 | label_time_tracking: 时间跟踪 |
|
495 | 496 | label_change_plural: 变更 |
|
496 | 497 | label_statistics: 统计 |
|
497 | 498 | label_commits_per_month: 每月提交次数 |
|
498 | 499 | label_commits_per_author: 每用户提交次数 |
|
499 | 500 | label_view_diff: 查看差别 |
|
500 | 501 | label_diff_inline: 直列 |
|
501 | 502 | label_diff_side_by_side: 并排 |
|
502 | 503 | label_options: 选项 |
|
503 | 504 | label_copy_workflow_from: 从以下项目复制工作流程 |
|
504 | 505 | label_permissions_report: 权限报表 |
|
505 | 506 | label_watched_issues: 跟踪的问题 |
|
506 | 507 | label_related_issues: 相关的问题 |
|
507 | 508 | label_applied_status: 应用后的状态 |
|
508 | 509 | label_loading: 载入中... |
|
509 | 510 | label_relation_new: 新建关联 |
|
510 | 511 | label_relation_delete: 删除关联 |
|
511 | 512 | label_relates_to: 关联到 |
|
512 | 513 | label_duplicates: 重复 |
|
513 | 514 | label_duplicated_by: 与其重复 |
|
514 | 515 | label_blocks: 阻挡 |
|
515 | 516 | label_blocked_by: 被阻挡 |
|
516 | 517 | label_precedes: 优先于 |
|
517 | 518 | label_follows: 跟随于 |
|
518 | 519 | label_end_to_start: 结束-开始 |
|
519 | 520 | label_end_to_end: 结束-结束 |
|
520 | 521 | label_start_to_start: 开始-开始 |
|
521 | 522 | label_start_to_end: 开始-结束 |
|
522 | 523 | label_stay_logged_in: 保持登录状态 |
|
523 | 524 | label_disabled: 禁用 |
|
524 | 525 | label_show_completed_versions: 显示已完成的版本 |
|
525 | 526 | label_me: 我 |
|
526 | 527 | label_board: 讨论区 |
|
527 | 528 | label_board_new: 新建讨论区 |
|
528 | 529 | label_board_plural: 讨论区 |
|
529 | 530 | label_topic_plural: 主题 |
|
530 | 531 | label_message_plural: 帖子 |
|
531 | 532 | label_message_last: 最新的帖子 |
|
532 | 533 | label_message_new: 新贴 |
|
533 | 534 | label_message_posted: 发帖成功 |
|
534 | 535 | label_reply_plural: 回复 |
|
535 | 536 | label_send_information: 给用户发送帐号信息 |
|
536 | 537 | label_year: 年 |
|
537 | 538 | label_month: 月 |
|
538 | 539 | label_week: 周 |
|
539 | 540 | label_date_from: 从 |
|
540 | 541 | label_date_to: 到 |
|
541 | 542 | label_language_based: 根据用户的语言 |
|
542 | 543 | label_sort_by: 根据 %s 排序 |
|
543 | 544 | label_send_test_email: 发送测试邮件 |
|
544 | 545 | label_feeds_access_key_created_on: RSS 存取键是在 %s 之前建立的 |
|
545 | 546 | label_module_plural: 模块 |
|
546 | 547 | label_added_time_by: 由 %s 在 %s 之前添加 |
|
547 | label_updated_time: 更新于 %s 前 | |
|
548 | label_updated_time: 更新于 %s 之前 | |
|
549 | label_updated_time_by: 由 %s 更新于 %s 之前 | |
|
548 | 550 | label_jump_to_a_project: 选择一个项目... |
|
549 | 551 | label_file_plural: 文件 |
|
550 | 552 | label_changeset_plural: 变更 |
|
551 | 553 | label_default_columns: 默认列 |
|
552 | 554 | label_no_change_option: (不变) |
|
553 | 555 | label_bulk_edit_selected_issues: 批量修改选中的问题 |
|
554 | 556 | label_theme: 主题 |
|
555 | 557 | label_default: 默认 |
|
556 | 558 | label_search_titles_only: 仅在标题中搜索 |
|
557 | 559 | label_user_mail_option_all: "收取我的项目的所有通知" |
|
558 | 560 | label_user_mail_option_selected: "收取选中项目的所有通知..." |
|
559 | 561 | label_user_mail_option_none: "只收取我跟踪或参与的项目的通知" |
|
560 | 562 | label_user_mail_no_self_notified: "不要发送对我自己提交的修改的通知" |
|
561 | 563 | label_registration_activation_by_email: 通过邮件认证激活帐号 |
|
562 | 564 | label_registration_manual_activation: 手动激活帐号 |
|
563 | 565 | label_registration_automatic_activation: 自动激活帐号 |
|
564 | 566 | label_display_per_page: '每页显示:%s' |
|
565 | 567 | label_age: 年龄 |
|
566 | 568 | label_change_properties: 修改属性 |
|
567 | 569 | label_general: 一般 |
|
568 | 570 | label_more: 更多 |
|
569 | 571 | label_scm: SCM |
|
570 | 572 | label_plugins: 插件 |
|
571 | 573 | label_ldap_authentication: LDAP 认证 |
|
572 | 574 | label_downloads_abbr: D/L |
|
573 | 575 | label_optional_description: 可选的描述 |
|
574 | 576 | label_add_another_file: 添加其它文件 |
|
575 | 577 | label_preferences: 首选项 |
|
576 | 578 | label_chronological_order: 按时间顺序 |
|
577 | 579 | label_reverse_chronological_order: 按时间顺序(倒序) |
|
578 | 580 | label_planning: 计划 |
|
579 | 581 | label_incoming_emails: 接收邮件 |
|
580 | 582 | label_generate_key: 生成一个key |
|
581 | 583 | label_issue_watchers: 跟踪者 |
|
582 | 584 | label_example: 示例 |
|
583 | 585 | |
|
584 | 586 | button_login: 登录 |
|
585 | 587 | button_submit: 提交 |
|
586 | 588 | button_save: 保存 |
|
587 | 589 | button_check_all: 全选 |
|
588 | 590 | button_uncheck_all: 清除 |
|
589 | 591 | button_delete: 删除 |
|
590 | 592 | button_create: 创建 |
|
591 | 593 | button_test: 测试 |
|
592 | 594 | button_edit: 编辑 |
|
593 | 595 | button_add: 新增 |
|
594 | 596 | button_change: 修改 |
|
595 | 597 | button_apply: 应用 |
|
596 | 598 | button_clear: 清除 |
|
597 | 599 | button_lock: 锁定 |
|
598 | 600 | button_unlock: 解锁 |
|
599 | 601 | button_download: 下载 |
|
600 | 602 | button_list: 列表 |
|
601 | 603 | button_view: 查看 |
|
602 | 604 | button_move: 移动 |
|
603 | 605 | button_back: 返回 |
|
604 | 606 | button_cancel: 取消 |
|
605 | 607 | button_activate: 激活 |
|
606 | 608 | button_sort: 排序 |
|
607 | 609 | button_log_time: 登记工时 |
|
608 | 610 | button_rollback: 恢复到这个版本 |
|
609 | 611 | button_watch: 跟踪 |
|
610 | 612 | button_unwatch: 取消跟踪 |
|
611 | 613 | button_reply: 回复 |
|
612 | 614 | button_archive: 存档 |
|
613 | 615 | button_unarchive: 取消存档 |
|
614 | 616 | button_reset: 重置 |
|
615 | 617 | button_rename: 重命名 |
|
616 | 618 | button_change_password: 修改密码 |
|
617 | 619 | button_copy: 复制 |
|
618 | 620 | button_annotate: 追溯 |
|
619 | 621 | button_update: 更新 |
|
620 | 622 | button_configure: 配置 |
|
621 | 623 | button_quote: 引用 |
|
622 | 624 | |
|
623 | 625 | status_active: 活动的 |
|
624 | 626 | status_registered: 已注册 |
|
625 | 627 | status_locked: 已锁定 |
|
626 | 628 | |
|
627 | 629 | text_select_mail_notifications: 选择需要发送邮件通知的动作 |
|
628 | 630 | text_regexp_info: 例如:^[A-Z0-9]+$ |
|
629 | 631 | text_min_max_length_info: 0 表示没有限制 |
|
630 | 632 | text_project_destroy_confirmation: 您确信要删除这个项目以及所有相关的数据吗? |
|
631 | 633 | text_subprojects_destroy_warning: '以下子项目也将被同时删除:%s' |
|
632 | 634 | text_workflow_edit: 选择角色和跟踪标签来编辑工作流程 |
|
633 | 635 | text_are_you_sure: 您确定? |
|
634 | 636 | text_journal_changed: 从 %s 变更为 %s |
|
635 | 637 | text_journal_set_to: 设置为 %s |
|
636 | 638 | text_journal_deleted: 已删除 |
|
637 | 639 | text_tip_task_begin_day: 今天开始的任务 |
|
638 | 640 | text_tip_task_end_day: 今天结束的任务 |
|
639 | 641 | text_tip_task_begin_end_day: 今天开始并结束的任务 |
|
640 | 642 | text_project_identifier_info: '只允许使用小写字母(a-z),数字和连字符(-)。<br />请注意,标识符保存后将不可修改。' |
|
641 | 643 | text_caracters_maximum: 最多 %d 个字符。 |
|
642 | 644 | text_caracters_minimum: 至少需要 %d 个字符。 |
|
643 | 645 | text_length_between: 长度必须在 %d 到 %d 个字符之间。 |
|
644 | 646 | text_tracker_no_workflow: 此跟踪标签未定义工作流程 |
|
645 | 647 | text_unallowed_characters: 非法字符 |
|
646 | 648 | text_comma_separated: 可以使用多个值(用逗号,分开)。 |
|
647 | 649 | text_issues_ref_in_commit_messages: 在提交信息中引用和解决问题 |
|
648 | 650 | text_issue_added: 问题 %s 已由 %s 提交。 |
|
649 | 651 | text_issue_updated: 问题 %s 已由 %s 更新。 |
|
650 | 652 | text_wiki_destroy_confirmation: 您确定要删除这个 wiki 及其所有内容吗? |
|
651 | 653 | text_issue_category_destroy_question: 有一些问题(%d 个)属于此类别。您想进行哪种操作? |
|
652 | 654 | text_issue_category_destroy_assignments: 删除问题的所属类别(问题变为无类别) |
|
653 | 655 | text_issue_category_reassign_to: 为问题选择其它类别 |
|
654 | 656 | text_user_mail_option: "对于没有选中的项目,您将只会收到您跟踪或参与的项目的通知(比如说,您是问题的报告者, 或被指派解决此问题)。" |
|
655 | 657 | text_no_configuration_data: "角色、跟踪标签、问题状态和工作流程还没有设置。\n强烈建议您先载入默认设置,然后在此基础上进行修改。" |
|
656 | 658 | text_load_default_configuration: 载入默认设置 |
|
657 | 659 | text_status_changed_by_changeset: 已应用到变更列表 %s. |
|
658 | 660 | text_issues_destroy_confirmation: '您确定要删除选中的问题吗?' |
|
659 | 661 | text_select_project_modules: '请选择此项目可以使用的模块:' |
|
660 | 662 | text_default_administrator_account_changed: 默认的管理员帐号已改变 |
|
661 | 663 | text_file_repository_writable: 文件版本库可修改 |
|
662 | 664 | text_rmagick_available: RMagick 可用(可选的) |
|
663 | 665 | text_destroy_time_entries_question: 您要删除的问题已经上报了 %.02f 小时的工作量。您想进行那种操作? |
|
664 | 666 | text_destroy_time_entries: 删除上报的工作量 |
|
665 | 667 | text_assign_time_entries_to_project: 将已上报的工作量提交到项目中 |
|
666 | 668 | text_reassign_time_entries: '将已上报的工作量指定到此问题:' |
|
667 | 669 | text_user_wrote: '%s 写到:' |
|
668 | 670 | text_enumeration_category_reassign_to: '将它们关联到新的枚举值:' |
|
669 | 671 | text_enumeration_destroy_question: '%d 个对象被关联到了这个枚举值。' |
|
670 | 672 | text_email_delivery_not_configured: "邮件参数尚未配置,因此邮件通知功能已被禁用。\n请在config/email.yml中配置您的SMTP服务器信息并重新启动以使其生效。" |
|
671 | 673 | text_repository_usernames_mapping: "选择或更新与版本库中的用户名对应的Redmine用户。\n版本库中与Redmine中的同名用户将被自动对应。" |
|
674 | text_diff_truncated: '... 差别内容超过了可显示的最大行数并已被截断' | |
|
672 | 675 | |
|
673 | 676 | default_role_manager: 管理人员 |
|
674 | 677 | default_role_developper: 开发人员 |
|
675 | 678 | default_role_reporter: 报告人员 |
|
676 | 679 | default_tracker_bug: 错误 |
|
677 | 680 | default_tracker_feature: 功能 |
|
678 | 681 | default_tracker_support: 支持 |
|
679 | 682 | default_issue_status_new: 新建 |
|
680 | 683 | default_issue_status_assigned: 已指派 |
|
681 | 684 | default_issue_status_resolved: 已解决 |
|
682 | 685 | default_issue_status_feedback: 反馈 |
|
683 | 686 | default_issue_status_closed: 已关闭 |
|
684 | 687 | default_issue_status_rejected: 已拒绝 |
|
685 | 688 | default_doc_category_user: 用户文档 |
|
686 | 689 | default_doc_category_tech: 技术文档 |
|
687 | 690 | default_priority_low: 低 |
|
688 | 691 | default_priority_normal: 普通 |
|
689 | 692 | default_priority_high: 高 |
|
690 | 693 | default_priority_urgent: 紧急 |
|
691 | 694 | default_priority_immediate: 立刻 |
|
692 | 695 | default_activity_design: 设计 |
|
693 | 696 | default_activity_development: 开发 |
|
694 | 697 | |
|
695 | 698 | enumeration_issue_priorities: 问题优先级 |
|
696 | 699 | enumeration_doc_categories: 文档类别 |
|
697 | 700 | enumeration_activities: 活动(时间跟踪) |
|
698 | label_updated_time_by: Updated by %s %s ago | |
|
699 | text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' | |
|
700 | setting_diff_max_lines_displayed: Max number of diff lines displayed |
@@ -1,66 +1,75 | |||
|
1 | 1 | # redMine - project management software |
|
2 | 2 | # Copyright (C) 2006-2007 Jean-Philippe Lang |
|
3 | 3 | # |
|
4 | 4 | # This program is free software; you can redistribute it and/or |
|
5 | 5 | # modify it under the terms of the GNU General Public License |
|
6 | 6 | # as published by the Free Software Foundation; either version 2 |
|
7 | 7 | # of the License, or (at your option) any later version. |
|
8 | 8 | # |
|
9 | 9 | # This program is distributed in the hope that it will be useful, |
|
10 | 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 | 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 | 12 | # GNU General Public License for more details. |
|
13 | 13 | # |
|
14 | 14 | # You should have received a copy of the GNU General Public License |
|
15 | 15 | # along with this program; if not, write to the Free Software |
|
16 | 16 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
17 | 17 | |
|
18 | 18 | require File.dirname(__FILE__) + '/../test_helper' |
|
19 | 19 | require 'documents_controller' |
|
20 | 20 | |
|
21 | 21 | # Re-raise errors caught by the controller. |
|
22 | 22 | class DocumentsController; def rescue_action(e) raise e end; end |
|
23 | 23 | |
|
24 | 24 | class DocumentsControllerTest < Test::Unit::TestCase |
|
25 | 25 | fixtures :projects, :users, :roles, :members, :enabled_modules, :documents, :enumerations |
|
26 | 26 | |
|
27 | 27 | def setup |
|
28 | 28 | @controller = DocumentsController.new |
|
29 | 29 | @request = ActionController::TestRequest.new |
|
30 | 30 | @response = ActionController::TestResponse.new |
|
31 | 31 | User.current = nil |
|
32 | 32 | end |
|
33 | 33 | |
|
34 | 34 | def test_index |
|
35 | # Sets a default category | |
|
36 | e = Enumeration.find_by_name('Technical documentation') | |
|
37 | e.update_attributes(:is_default => true) | |
|
38 | ||
|
35 | 39 | get :index, :project_id => 'ecookbook' |
|
36 | 40 | assert_response :success |
|
37 | 41 | assert_template 'index' |
|
38 | 42 | assert_not_nil assigns(:grouped) |
|
43 | ||
|
44 | # Default category selected in the new document form | |
|
45 | assert_tag :select, :attributes => {:name => 'document[category_id]'}, | |
|
46 | :child => {:tag => 'option', :attributes => {:selected => 'selected'}, | |
|
47 | :content => 'Technical documentation'} | |
|
39 | 48 | end |
|
40 | 49 | |
|
41 | 50 | def test_new_with_one_attachment |
|
42 | 51 | @request.session[:user_id] = 2 |
|
43 | 52 | set_tmp_attachments_directory |
|
44 | 53 | |
|
45 | 54 | post :new, :project_id => 'ecookbook', |
|
46 | 55 | :document => { :title => 'DocumentsControllerTest#test_post_new', |
|
47 | 56 | :description => 'This is a new document', |
|
48 | 57 | :category_id => 2}, |
|
49 | 58 | :attachments => {'1' => {'file' => test_uploaded_file('testfile.txt', 'text/plain')}} |
|
50 | 59 | |
|
51 | 60 | assert_redirected_to 'projects/ecookbook/documents' |
|
52 | 61 | |
|
53 | 62 | document = Document.find_by_title('DocumentsControllerTest#test_post_new') |
|
54 | 63 | assert_not_nil document |
|
55 | 64 | assert_equal Enumeration.find(2), document.category |
|
56 | 65 | assert_equal 1, document.attachments.size |
|
57 | 66 | assert_equal 'testfile.txt', document.attachments.first.filename |
|
58 | 67 | end |
|
59 | 68 | |
|
60 | 69 | def test_destroy |
|
61 | 70 | @request.session[:user_id] = 2 |
|
62 | 71 | post :destroy, :id => 1 |
|
63 | 72 | assert_redirected_to 'projects/ecookbook/documents' |
|
64 | 73 | assert_nil Document.find_by_id(1) |
|
65 | 74 | end |
|
66 | 75 | end |
@@ -1,153 +1,153 | |||
|
1 | 1 | # redMine - project management software |
|
2 | 2 | # Copyright (C) 2006-2007 Jean-Philippe Lang |
|
3 | 3 | # |
|
4 | 4 | # This program is free software; you can redistribute it and/or |
|
5 | 5 | # modify it under the terms of the GNU General Public License |
|
6 | 6 | # as published by the Free Software Foundation; either version 2 |
|
7 | 7 | # of the License, or (at your option) any later version. |
|
8 | 8 | # |
|
9 | 9 | # This program is distributed in the hope that it will be useful, |
|
10 | 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 | 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 | 12 | # GNU General Public License for more details. |
|
13 | 13 | # |
|
14 | 14 | # You should have received a copy of the GNU General Public License |
|
15 | 15 | # along with this program; if not, write to the Free Software |
|
16 | 16 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
17 | 17 | |
|
18 | 18 | require "#{File.dirname(__FILE__)}/../test_helper" |
|
19 | 19 | |
|
20 | 20 | begin |
|
21 | 21 | require 'mocha' |
|
22 | 22 | rescue |
|
23 | 23 | # Won't run some tests |
|
24 | 24 | end |
|
25 | 25 | |
|
26 | 26 | class AccountTest < ActionController::IntegrationTest |
|
27 | 27 | fixtures :users |
|
28 | 28 | |
|
29 | 29 | # Replace this with your real tests. |
|
30 | 30 | def test_login |
|
31 | 31 | get "my/page" |
|
32 | 32 | assert_redirected_to "account/login" |
|
33 | 33 | log_user('jsmith', 'jsmith') |
|
34 | 34 | |
|
35 | 35 | get "my/account" |
|
36 | 36 | assert_response :success |
|
37 | 37 | assert_template "my/account" |
|
38 | 38 | end |
|
39 | 39 | |
|
40 | 40 | def test_lost_password |
|
41 | 41 | Token.delete_all |
|
42 | 42 | |
|
43 | 43 | get "account/lost_password" |
|
44 | 44 | assert_response :success |
|
45 | 45 | assert_template "account/lost_password" |
|
46 | 46 | |
|
47 |
post "account/lost_password", :mail => 'j |
|
|
47 | post "account/lost_password", :mail => 'jSmith@somenet.foo' | |
|
48 | 48 | assert_redirected_to "account/login" |
|
49 | 49 | |
|
50 | 50 | token = Token.find(:first) |
|
51 | 51 | assert_equal 'recovery', token.action |
|
52 | 52 | assert_equal 'jsmith@somenet.foo', token.user.mail |
|
53 | 53 | assert !token.expired? |
|
54 | 54 | |
|
55 | 55 | get "account/lost_password", :token => token.value |
|
56 | 56 | assert_response :success |
|
57 | 57 | assert_template "account/password_recovery" |
|
58 | 58 | |
|
59 | 59 | post "account/lost_password", :token => token.value, :new_password => 'newpass', :new_password_confirmation => 'newpass' |
|
60 | 60 | assert_redirected_to "account/login" |
|
61 | 61 | assert_equal 'Password was successfully updated.', flash[:notice] |
|
62 | 62 | |
|
63 | 63 | log_user('jsmith', 'newpass') |
|
64 | 64 | assert_equal 0, Token.count |
|
65 | 65 | end |
|
66 | 66 | |
|
67 | 67 | def test_register_with_automatic_activation |
|
68 | 68 | Setting.self_registration = '3' |
|
69 | 69 | |
|
70 | 70 | get 'account/register' |
|
71 | 71 | assert_response :success |
|
72 | 72 | assert_template 'account/register' |
|
73 | 73 | |
|
74 | 74 | post 'account/register', :user => {:login => "newuser", :language => "en", :firstname => "New", :lastname => "User", :mail => "newuser@foo.bar"}, |
|
75 | 75 | :password => "newpass", :password_confirmation => "newpass" |
|
76 | 76 | assert_redirected_to 'my/account' |
|
77 | 77 | follow_redirect! |
|
78 | 78 | assert_response :success |
|
79 | 79 | assert_template 'my/account' |
|
80 | 80 | |
|
81 | 81 | assert User.find_by_login('newuser').active? |
|
82 | 82 | end |
|
83 | 83 | |
|
84 | 84 | def test_register_with_manual_activation |
|
85 | 85 | Setting.self_registration = '2' |
|
86 | 86 | |
|
87 | 87 | post 'account/register', :user => {:login => "newuser", :language => "en", :firstname => "New", :lastname => "User", :mail => "newuser@foo.bar"}, |
|
88 | 88 | :password => "newpass", :password_confirmation => "newpass" |
|
89 | 89 | assert_redirected_to 'account/login' |
|
90 | 90 | assert !User.find_by_login('newuser').active? |
|
91 | 91 | end |
|
92 | 92 | |
|
93 | 93 | def test_register_with_email_activation |
|
94 | 94 | Setting.self_registration = '1' |
|
95 | 95 | Token.delete_all |
|
96 | 96 | |
|
97 | 97 | post 'account/register', :user => {:login => "newuser", :language => "en", :firstname => "New", :lastname => "User", :mail => "newuser@foo.bar"}, |
|
98 | 98 | :password => "newpass", :password_confirmation => "newpass" |
|
99 | 99 | assert_redirected_to 'account/login' |
|
100 | 100 | assert !User.find_by_login('newuser').active? |
|
101 | 101 | |
|
102 | 102 | token = Token.find(:first) |
|
103 | 103 | assert_equal 'register', token.action |
|
104 | 104 | assert_equal 'newuser@foo.bar', token.user.mail |
|
105 | 105 | assert !token.expired? |
|
106 | 106 | |
|
107 | 107 | get 'account/activate', :token => token.value |
|
108 | 108 | assert_redirected_to 'account/login' |
|
109 | 109 | log_user('newuser', 'newpass') |
|
110 | 110 | end |
|
111 | 111 | |
|
112 | 112 | if Object.const_defined?(:Mocha) |
|
113 | 113 | |
|
114 | 114 | def test_onthefly_registration |
|
115 | 115 | # disable registration |
|
116 | 116 | Setting.self_registration = '0' |
|
117 | 117 | AuthSource.expects(:authenticate).returns([:login => 'foo', :firstname => 'Foo', :lastname => 'Smith', :mail => 'foo@bar.com', :auth_source_id => 66]) |
|
118 | 118 | |
|
119 | 119 | post 'account/login', :username => 'foo', :password => 'bar' |
|
120 | 120 | assert_redirected_to 'my/page' |
|
121 | 121 | |
|
122 | 122 | user = User.find_by_login('foo') |
|
123 | 123 | assert user.is_a?(User) |
|
124 | 124 | assert_equal 66, user.auth_source_id |
|
125 | 125 | assert user.hashed_password.blank? |
|
126 | 126 | end |
|
127 | 127 | |
|
128 | 128 | def test_onthefly_registration_with_invalid_attributes |
|
129 | 129 | # disable registration |
|
130 | 130 | Setting.self_registration = '0' |
|
131 | 131 | AuthSource.expects(:authenticate).returns([:login => 'foo', :lastname => 'Smith', :auth_source_id => 66]) |
|
132 | 132 | |
|
133 | 133 | post 'account/login', :username => 'foo', :password => 'bar' |
|
134 | 134 | assert_response :success |
|
135 | 135 | assert_template 'account/register' |
|
136 | 136 | assert_tag :input, :attributes => { :name => 'user[firstname]', :value => '' } |
|
137 | 137 | assert_tag :input, :attributes => { :name => 'user[lastname]', :value => 'Smith' } |
|
138 | 138 | assert_no_tag :input, :attributes => { :name => 'user[login]' } |
|
139 | 139 | assert_no_tag :input, :attributes => { :name => 'user[password]' } |
|
140 | 140 | |
|
141 | 141 | post 'account/register', :user => {:firstname => 'Foo', :lastname => 'Smith', :mail => 'foo@bar.com'} |
|
142 | 142 | assert_redirected_to 'my/account' |
|
143 | 143 | |
|
144 | 144 | user = User.find_by_login('foo') |
|
145 | 145 | assert user.is_a?(User) |
|
146 | 146 | assert_equal 66, user.auth_source_id |
|
147 | 147 | assert user.hashed_password.blank? |
|
148 | 148 | end |
|
149 | 149 | |
|
150 | 150 | else |
|
151 | 151 | puts 'Mocha is missing. Skipping tests.' |
|
152 | 152 | end |
|
153 | 153 | end |
@@ -1,45 +1,82 | |||
|
1 | 1 | # redMine - project management software |
|
2 | 2 | # Copyright (C) 2006-2008 Jean-Philippe Lang |
|
3 | 3 | # |
|
4 | 4 | # This program is free software; you can redistribute it and/or |
|
5 | 5 | # modify it under the terms of the GNU General Public License |
|
6 | 6 | # as published by the Free Software Foundation; either version 2 |
|
7 | 7 | # of the License, or (at your option) any later version. |
|
8 | 8 | # |
|
9 | 9 | # This program is distributed in the hope that it will be useful, |
|
10 | 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 | 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 | 12 | # GNU General Public License for more details. |
|
13 | 13 | # |
|
14 | 14 | # You should have received a copy of the GNU General Public License |
|
15 | 15 | # along with this program; if not, write to the Free Software |
|
16 | 16 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
17 | 17 | |
|
18 | 18 | require File.dirname(__FILE__) + '/../test_helper' |
|
19 | 19 | |
|
20 | 20 | class EnumerationTest < Test::Unit::TestCase |
|
21 | 21 | fixtures :enumerations, :issues |
|
22 | 22 | |
|
23 | 23 | def setup |
|
24 | 24 | end |
|
25 | 25 | |
|
26 | 26 | def test_objects_count |
|
27 | 27 | # low priority |
|
28 | 28 | assert_equal 5, Enumeration.find(4).objects_count |
|
29 | 29 | # urgent |
|
30 | 30 | assert_equal 0, Enumeration.find(7).objects_count |
|
31 | 31 | end |
|
32 | 32 | |
|
33 | 33 | def test_in_use |
|
34 | 34 | # low priority |
|
35 | 35 | assert Enumeration.find(4).in_use? |
|
36 | 36 | # urgent |
|
37 | 37 | assert !Enumeration.find(7).in_use? |
|
38 | 38 | end |
|
39 | 39 | |
|
40 | def test_default | |
|
41 | e = Enumeration.default('IPRI') | |
|
42 | assert e.is_a?(Enumeration) | |
|
43 | assert e.is_default? | |
|
44 | assert_equal 'Normal', e.name | |
|
45 | end | |
|
46 | ||
|
47 | def test_create | |
|
48 | e = Enumeration.new(:opt => 'IPRI', :name => 'Very urgent', :is_default => false) | |
|
49 | assert e.save | |
|
50 | assert_equal 'Normal', Enumeration.default('IPRI').name | |
|
51 | end | |
|
52 | ||
|
53 | def test_create_as_default | |
|
54 | e = Enumeration.new(:opt => 'IPRI', :name => 'Very urgent', :is_default => true) | |
|
55 | assert e.save | |
|
56 | assert_equal e, Enumeration.default('IPRI') | |
|
57 | end | |
|
58 | ||
|
59 | def test_update_default | |
|
60 | e = Enumeration.default('IPRI') | |
|
61 | e.update_attributes(:name => 'Changed', :is_default => true) | |
|
62 | assert_equal e, Enumeration.default('IPRI') | |
|
63 | end | |
|
64 | ||
|
65 | def test_update_default_to_non_default | |
|
66 | e = Enumeration.default('IPRI') | |
|
67 | e.update_attributes(:name => 'Changed', :is_default => false) | |
|
68 | assert_nil Enumeration.default('IPRI') | |
|
69 | end | |
|
70 | ||
|
71 | def test_change_default | |
|
72 | e = Enumeration.find_by_name('Urgent') | |
|
73 | e.update_attributes(:name => 'Urgent', :is_default => true) | |
|
74 | assert_equal e, Enumeration.default('IPRI') | |
|
75 | end | |
|
76 | ||
|
40 | 77 | def test_destroy_with_reassign |
|
41 | 78 | Enumeration.find(4).destroy(Enumeration.find(6)) |
|
42 | 79 | assert_nil Issue.find(:first, :conditions => {:priority_id => 4}) |
|
43 | 80 | assert_equal 5, Enumeration.find(6).objects_count |
|
44 | 81 | end |
|
45 | 82 | end |
@@ -1,161 +1,167 | |||
|
1 | 1 | # redMine - project management software |
|
2 | 2 | # Copyright (C) 2006 Jean-Philippe Lang |
|
3 | 3 | # |
|
4 | 4 | # This program is free software; you can redistribute it and/or |
|
5 | 5 | # modify it under the terms of the GNU General Public License |
|
6 | 6 | # as published by the Free Software Foundation; either version 2 |
|
7 | 7 | # of the License, or (at your option) any later version. |
|
8 | 8 | # |
|
9 | 9 | # This program is distributed in the hope that it will be useful, |
|
10 | 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 | 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 | 12 | # GNU General Public License for more details. |
|
13 | 13 | # |
|
14 | 14 | # You should have received a copy of the GNU General Public License |
|
15 | 15 | # along with this program; if not, write to the Free Software |
|
16 | 16 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
17 | 17 | |
|
18 | 18 | require File.dirname(__FILE__) + '/../test_helper' |
|
19 | 19 | |
|
20 | 20 | class UserTest < Test::Unit::TestCase |
|
21 | 21 | fixtures :users, :members, :projects |
|
22 | 22 | |
|
23 | 23 | def setup |
|
24 | 24 | @admin = User.find(1) |
|
25 | 25 | @jsmith = User.find(2) |
|
26 | 26 | @dlopper = User.find(3) |
|
27 | 27 | end |
|
28 | 28 | |
|
29 | 29 | def test_truth |
|
30 | 30 | assert_kind_of User, @jsmith |
|
31 | 31 | end |
|
32 | 32 | |
|
33 | 33 | def test_create |
|
34 | 34 | user = User.new(:firstname => "new", :lastname => "user", :mail => "newuser@somenet.foo") |
|
35 | 35 | |
|
36 | 36 | user.login = "jsmith" |
|
37 | 37 | user.password, user.password_confirmation = "password", "password" |
|
38 | 38 | # login uniqueness |
|
39 | 39 | assert !user.save |
|
40 | 40 | assert_equal 1, user.errors.count |
|
41 | 41 | |
|
42 | 42 | user.login = "newuser" |
|
43 | 43 | user.password, user.password_confirmation = "passwd", "password" |
|
44 | 44 | # password confirmation |
|
45 | 45 | assert !user.save |
|
46 | 46 | assert_equal 1, user.errors.count |
|
47 | 47 | |
|
48 | 48 | user.password, user.password_confirmation = "password", "password" |
|
49 | 49 | assert user.save |
|
50 | 50 | end |
|
51 | 51 | |
|
52 | 52 | def test_update |
|
53 | 53 | assert_equal "admin", @admin.login |
|
54 | 54 | @admin.login = "john" |
|
55 | 55 | assert @admin.save, @admin.errors.full_messages.join("; ") |
|
56 | 56 | @admin.reload |
|
57 | 57 | assert_equal "john", @admin.login |
|
58 | 58 | end |
|
59 | 59 | |
|
60 | 60 | def test_destroy |
|
61 | 61 | User.find(2).destroy |
|
62 | 62 | assert_nil User.find_by_id(2) |
|
63 | 63 | assert Member.find_all_by_user_id(2).empty? |
|
64 | 64 | end |
|
65 | 65 | |
|
66 | 66 | def test_validate |
|
67 | 67 | @admin.login = "" |
|
68 | 68 | assert !@admin.save |
|
69 | 69 | assert_equal 1, @admin.errors.count |
|
70 | 70 | end |
|
71 | 71 | |
|
72 | 72 | def test_password |
|
73 | 73 | user = User.try_to_login("admin", "admin") |
|
74 | 74 | assert_kind_of User, user |
|
75 | 75 | assert_equal "admin", user.login |
|
76 | 76 | user.password = "hello" |
|
77 | 77 | assert user.save |
|
78 | 78 | |
|
79 | 79 | user = User.try_to_login("admin", "hello") |
|
80 | 80 | assert_kind_of User, user |
|
81 | 81 | assert_equal "admin", user.login |
|
82 | 82 | assert_equal User.hash_password("hello"), user.hashed_password |
|
83 | 83 | end |
|
84 | 84 | |
|
85 | 85 | def test_name_format |
|
86 | 86 | assert_equal 'Smith, John', @jsmith.name(:lastname_coma_firstname) |
|
87 | 87 | Setting.user_format = :firstname_lastname |
|
88 | 88 | assert_equal 'John Smith', @jsmith.reload.name |
|
89 | 89 | Setting.user_format = :username |
|
90 | 90 | assert_equal 'jsmith', @jsmith.reload.name |
|
91 | 91 | end |
|
92 | 92 | |
|
93 | 93 | def test_lock |
|
94 | 94 | user = User.try_to_login("jsmith", "jsmith") |
|
95 | 95 | assert_equal @jsmith, user |
|
96 | 96 | |
|
97 | 97 | @jsmith.status = User::STATUS_LOCKED |
|
98 | 98 | assert @jsmith.save |
|
99 | 99 | |
|
100 | 100 | user = User.try_to_login("jsmith", "jsmith") |
|
101 | 101 | assert_equal nil, user |
|
102 | 102 | end |
|
103 | 103 | |
|
104 | 104 | def test_create_anonymous |
|
105 | 105 | AnonymousUser.delete_all |
|
106 | 106 | anon = User.anonymous |
|
107 | 107 | assert !anon.new_record? |
|
108 | 108 | assert_kind_of AnonymousUser, anon |
|
109 | 109 | end |
|
110 | 110 | |
|
111 | 111 | def test_rss_key |
|
112 | 112 | assert_nil @jsmith.rss_token |
|
113 | 113 | key = @jsmith.rss_key |
|
114 | 114 | assert_equal 40, key.length |
|
115 | 115 | |
|
116 | 116 | @jsmith.reload |
|
117 | 117 | assert_equal key, @jsmith.rss_key |
|
118 | 118 | end |
|
119 | 119 | |
|
120 | 120 | def test_role_for_project |
|
121 | 121 | # user with a role |
|
122 | 122 | role = @jsmith.role_for_project(Project.find(1)) |
|
123 | 123 | assert_kind_of Role, role |
|
124 | 124 | assert_equal "Manager", role.name |
|
125 | 125 | |
|
126 | 126 | # user with no role |
|
127 | 127 | assert !@dlopper.role_for_project(Project.find(2)).member? |
|
128 | 128 | end |
|
129 | 129 | |
|
130 | 130 | def test_mail_notification_all |
|
131 | 131 | @jsmith.mail_notification = true |
|
132 | 132 | @jsmith.notified_project_ids = [] |
|
133 | 133 | @jsmith.save |
|
134 | 134 | @jsmith.reload |
|
135 | 135 | assert @jsmith.projects.first.recipients.include?(@jsmith.mail) |
|
136 | 136 | end |
|
137 | 137 | |
|
138 | 138 | def test_mail_notification_selected |
|
139 | 139 | @jsmith.mail_notification = false |
|
140 | 140 | @jsmith.notified_project_ids = [1] |
|
141 | 141 | @jsmith.save |
|
142 | 142 | @jsmith.reload |
|
143 | 143 | assert Project.find(1).recipients.include?(@jsmith.mail) |
|
144 | 144 | end |
|
145 | 145 | |
|
146 | 146 | def test_mail_notification_none |
|
147 | 147 | @jsmith.mail_notification = false |
|
148 | 148 | @jsmith.notified_project_ids = [] |
|
149 | 149 | @jsmith.save |
|
150 | 150 | @jsmith.reload |
|
151 | 151 | assert !@jsmith.projects.first.recipients.include?(@jsmith.mail) |
|
152 | 152 | end |
|
153 | 153 | |
|
154 | 154 | def test_comments_sorting_preference |
|
155 | 155 | assert !@jsmith.wants_comments_in_reverse_order? |
|
156 | 156 | @jsmith.pref.comments_sorting = 'asc' |
|
157 | 157 | assert !@jsmith.wants_comments_in_reverse_order? |
|
158 | 158 | @jsmith.pref.comments_sorting = 'desc' |
|
159 | 159 | assert @jsmith.wants_comments_in_reverse_order? |
|
160 | 160 | end |
|
161 | ||
|
162 | def test_find_by_mail_should_be_case_insensitive | |
|
163 | u = User.find_by_mail('JSmith@somenet.foo') | |
|
164 | assert_not_nil u | |
|
165 | assert_equal 'jsmith@somenet.foo', u.mail | |
|
166 | end | |
|
161 | 167 | end |
General Comments 0
You need to be logged in to leave comments.
Login now