##// END OF EJS Templates
Added Traditional Chinese translation (by Shortie Lo)....
Jean-Philippe Lang -
r946:36c0ab196ca7
parent child
Show More
This diff has been collapsed as it changes many lines, (551 lines changed) Show them Hide them
@@ -0,0 +1,551
1 _gloc_rule_default: '|n| n==1 ? "" : "_plural" '
2
3 actionview_datehelper_select_day_prefix:
4 actionview_datehelper_select_month_names: 一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月
5 actionview_datehelper_select_month_names_abbr: 一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月
6 actionview_datehelper_select_month_prefix:
7 actionview_datehelper_select_year_prefix:
8 actionview_datehelper_time_in_words_day: 1 日
9 actionview_datehelper_time_in_words_day_plural: %d 日
10 actionview_datehelper_time_in_words_hour_about: 約 1 小時
11 actionview_datehelper_time_in_words_hour_about_plural: 約 %d 小時
12 actionview_datehelper_time_in_words_hour_about_single: 約 1 小時
13 actionview_datehelper_time_in_words_minute: 1 分鐘
14 actionview_datehelper_time_in_words_minute_half: 半分鐘
15 actionview_datehelper_time_in_words_minute_less_than: 小於 1 分鐘
16 actionview_datehelper_time_in_words_minute_plural: %d 分鐘
17 actionview_datehelper_time_in_words_minute_single: 1 分鐘
18 actionview_datehelper_time_in_words_second_less_than: 小於 1 秒
19 actionview_datehelper_time_in_words_second_less_than_plural: 小於 %d 秒
20 actionview_instancetag_blank_option: 請選擇
21
22 activerecord_error_inclusion: is not included in the list
23 activerecord_error_exclusion: is reserved
24 activerecord_error_invalid: is invalid
25 activerecord_error_confirmation: doesn't match confirmation
26 activerecord_error_accepted: must be accepted
27 activerecord_error_empty: 不可為空值
28 activerecord_error_blank: 不可為空白
29 activerecord_error_too_long: 長度過長
30 activerecord_error_too_short: 長度太短
31 activerecord_error_wrong_length: is the wrong length
32 activerecord_error_taken: has already been taken
33 activerecord_error_not_a_number: is not a number
34 activerecord_error_not_a_date: is not a valid date
35 activerecord_error_greater_than_start_date: must be greater than start date
36 activerecord_error_not_same_project: doesn't belong to the same project
37 activerecord_error_circular_dependency: This relation would create a circular dependency
38
39 general_fmt_age: %d 年
40 general_fmt_age_plural: %d yrs
41 general_fmt_date: %%m/%%d/%%Y
42 general_fmt_datetime: %%m/%%d/%%Y %%I:%%M %%p
43 general_fmt_datetime_short: %%b %%d, %%I:%%M %%p
44 general_fmt_time: %%I:%%M %%p
45 general_text_No: 'No'
46 general_text_Yes: 'Yes'
47 general_text_no: 'no'
48 general_text_yes: 'yes'
49 general_lang_name: 'Traditional Chinese (繁體中文)'
50 general_csv_separator: ','
51 general_csv_encoding: ISO-8859-1
52 general_pdf_encoding: big5
53 general_day_names: 星期一,星期二,星期三,星期四,星期五,星期六,星期日
54 general_first_day_of_week: '7'
55
56 notice_account_updated: 帳戶更新資訊已儲存
57 notice_account_invalid_creditentials: 帳戶或密碼不正確
58 notice_account_password_updated: 帳戶新密碼已儲存
59 notice_account_wrong_password: 密碼不正確
60 notice_account_register_done: Account was successfully created. To activate your account, click on the link that was emailed to you.
61 notice_account_unknown_email: Unknown user.
62 notice_can_t_change_password: This account uses an external authentication source. Impossible to change the password.
63 notice_account_lost_email_sent: An email with instructions to choose a new password has been sent to you.
64 notice_account_activated: Your account has been activated. You can now log in.
65 notice_successful_create: Successful creation.
66 notice_successful_update: Successful update.
67 notice_successful_delete: Successful deletion.
68 notice_successful_connection: Successful connection.
69 notice_file_not_found: The page you were trying to access doesn't exist or has been removed.
70 notice_locking_conflict: Data have been updated by another user.
71 notice_scm_error: Entry and/or revision doesn't exist in the repository.
72 notice_not_authorized: You are not authorized to access this page.
73 notice_email_sent: An email was sent to %s
74 notice_email_error: An error occurred while sending mail (%s)
75 notice_feeds_access_key_reseted: Your RSS access key was reseted.
76 notice_failed_to_save_issues: "Failed to save %d issue(s) on %d selected: %s."
77 notice_no_issue_selected: "No issue is selected! Please, check the issues you want to edit."
78 notice_account_pending: "Your account was created and is now pending administrator approval."
79
80 mail_subject_lost_password: Your Redmine password
81 mail_body_lost_password: 'To change your Redmine password, click on the following link:'
82 mail_subject_register: Redmine account activation
83 mail_body_register: 'To activate your Redmine account, click on the following link:'
84 mail_body_account_information_external: You can use your "%s" account to log into Redmine.
85 mail_body_account_information: Your Redmine account information
86 mail_subject_account_activation_request: Redmine account activation request
87 mail_body_account_activation_request: 'A new user (%s) has registered. His account his pending your approval:'
88
89 gui_validation_error: 1 個錯誤
90 gui_validation_error_plural: %d 個錯誤
91
92 field_name: 名稱
93 field_description: 概述
94 field_summary: 摘要
95 field_is_required: 必填
96 field_firstname: 名字
97 field_lastname: 姓氏
98 field_mail: 電子郵件
99 field_filename: 檔案名稱
100 field_filesize: 大小
101 field_downloads: 下載次數
102 field_author: 作者
103 field_created_on: 建立日期
104 field_updated_on: 更新
105 field_field_format: 格式
106 field_is_for_all: 給所有專案
107 field_possible_values: Possible values
108 field_regexp: 正規表示式
109 field_min_length: 最小長度
110 field_max_length: 最大長度
111 field_value:
112 field_category: 分類
113 field_title: 標題
114 field_project: 專案
115 field_issue: 項目
116 field_status: 狀態
117 field_notes: 筆記
118 field_is_closed: 項目結束
119 field_is_default: 預設值
120 field_tracker: 追蹤標籤
121 field_subject: 主旨
122 field_due_date: 完成日期
123 field_assigned_to: 分派給
124 field_priority: 重要性
125 field_fixed_version: Fixed version
126 field_user: 用戶
127 field_role: 角色
128 field_homepage: 網站首頁
129 field_is_public: 公開
130 field_parent: 父專案
131 field_is_in_chlog: Issues displayed in changelog
132 field_is_in_roadmap: Issues displayed in roadmap
133 field_login: 帳戶名稱
134 field_mail_notification: 電子郵件提醒選項
135 field_admin: 管理者
136 field_last_login_on: 最近連線日期
137 field_language: 語系
138 field_effective_date: 日期
139 field_password: 目前密碼
140 field_new_password: 新密碼
141 field_password_confirmation: 確認新密碼
142 field_version: 版本
143 field_type: Type
144 field_host: Host
145 field_port: 連接埠
146 field_account: 帳戶
147 field_base_dn: Base DN
148 field_attr_login: 登入屬性
149 field_attr_firstname: 名字屬性
150 field_attr_lastname: Lastname attribute
151 field_attr_mail: Email attribute
152 field_onthefly: On-the-fly user creation
153 field_start_date: 開始日期
154 field_done_ratio: %% 已完成
155 field_auth_source: 認證模式
156 field_hide_mail: 隱藏我的電子郵件
157 field_comments: 註解
158 field_url: URL
159 field_start_page: Start page
160 field_subproject: 子專案
161 field_hours: 小時
162 field_activity: Activity
163 field_spent_on: 日期
164 field_identifier: 代碼
165 field_is_filter: Used as a filter
166 field_issue_to_id: Related issue
167 field_delay: 逾期
168 field_assignable: Issues can be assigned to this role
169 field_redirect_existing_links: Redirect existing links
170 field_estimated_hours: 預估工時
171 field_column_names: Columns
172 field_time_zone: 時區
173
174 setting_app_title: 標題
175 setting_app_subtitle: 副標題
176 setting_welcome_text: 歡迎詞
177 setting_default_language: 預設語系
178 setting_login_required: 需要驗證
179 setting_self_registration: 註冊選項
180 setting_attachment_max_size: 附件大小限制
181 setting_issues_export_limit: 項目匯出限制
182 setting_mail_from: 寄件者電子郵件
183 setting_bcc_recipients: 使用密件副本 (BCC)
184 setting_host_name: 主機名稱
185 setting_text_formatting: 文字格式
186 setting_wiki_compression: 壓縮 Wiki 歷史文章
187 setting_feeds_limit: Feed content limit
188 setting_autofetch_changesets: Autofetch commits
189 setting_sys_api_enabled: Enable WS for repository management
190 setting_commit_ref_keywords: Referencing keywords
191 setting_commit_fix_keywords: Fixing keywords
192 setting_autologin: 自動登入
193 setting_date_format: 日期格式
194 setting_time_format: 時間格式
195 setting_cross_project_issue_relations: Allow cross-project issue relations
196 setting_issue_list_default_columns: 預設顯示於項目清單的欄位
197 setting_repositories_encodings: Repositories encodings
198 setting_emails_footer: 電子郵件附帶說明
199 setting_protocol: 協定
200
201 label_user: 用戶
202 label_user_plural: 用戶清單
203 label_user_new: 建立新的帳戶
204 label_project: 專案
205 label_project_new: 建立新的專案
206 label_project_plural: 專案清單
207 label_project_all: 全部的專案
208 label_project_latest: 最近的專案
209 label_issue: 項目
210 label_issue_new: 建立新的項目
211 label_issue_plural: 項目清單
212 label_issue_view_all: 檢視所有項目
213 label_issues_by: Issues by %s
214 label_document: 文件
215 label_document_new: 建立新的文件
216 label_document_plural: 文件
217 label_role: 角色
218 label_role_plural: 角色
219 label_role_new: 建立新角色
220 label_role_and_permissions: 角色與權限
221 label_member: 成員
222 label_member_new: 建立新的成員
223 label_member_plural: 成員
224 label_tracker: 追蹤標籤
225 label_tracker_plural: 追蹤標籤清單
226 label_tracker_new: 建立新的追蹤標籤
227 label_workflow: 流程
228 label_issue_status: 項目狀態
229 label_issue_status_plural: 項目狀態清單
230 label_issue_status_new: 建立新的狀態
231 label_issue_category: 項目分類
232 label_issue_category_plural: 項目分類清單
233 label_issue_category_new: 建立新的分類
234 label_custom_field: 自訂欄位
235 label_custom_field_plural: 自訂欄位清單
236 label_custom_field_new: 建立新的自訂欄位
237 label_enumerations: 列舉值清單
238 label_enumeration_new: 建立新的列舉值
239 label_information: 資訊
240 label_information_plural: 資訊
241 label_please_login: 請先登入
242 label_register: 註冊
243 label_password_lost: 遺失密碼
244 label_home: 網站首頁
245 label_my_page: 帳戶首頁
246 label_my_account: 我的帳戶
247 label_my_projects: 我的專案
248 label_administration: 網站管理
249 label_login: 登入
250 label_logout: 登出
251 label_help: 說明
252 label_reported_issues: 我通報的項目
253 label_assigned_to_me_issues: 分派給我的項目
254 label_last_login: 最近一次連線
255 label_last_updates: 最近更新
256 label_last_updates_plural: %d 個最近更新
257 label_registered_on: 註冊於
258 label_activity: 活動
259 label_new: 建立新的...
260 label_logged_as: 目前登入
261 label_environment: 環境
262 label_authentication: 認證
263 label_auth_source: 認證模式
264 label_auth_source_new: 建立新認證模式
265 label_auth_source_plural: 認證模式清單
266 label_subproject_plural: 子專案
267 label_min_max_length: 最小 - 最大 長度
268 label_list: 清單
269 label_date: 日期
270 label_integer: 整數
271 label_float: 福點數
272 label_boolean: 布林
273 label_string: 文字
274 label_text: 長文字
275 label_attribute: 屬性
276 label_attribute_plural: 屬性
277 label_download: %d 個下載
278 label_download_plural: %d 個下載
279 label_no_data: 沒有任何資料可供顯示
280 label_change_status: 變更狀態
281 label_history: 歷史
282 label_attachment: 檔案
283 label_attachment_new: 建立新的檔案
284 label_attachment_delete: 刪除檔案
285 label_attachment_plural: 檔案
286 label_report: 報告
287 label_report_plural: 報告
288 label_news: 新聞
289 label_news_new: 建立新的新聞
290 label_news_plural: 新聞
291 label_news_latest: 最近新聞
292 label_news_view_all: 檢視所有新聞
293 label_change_log: 變更記錄
294 label_settings: 設定
295 label_overview: 概觀
296 label_version: 版本
297 label_version_new: 建立新的版本
298 label_version_plural: 版本
299 label_confirmation: 確認
300 label_export_to: 匯出至
301 label_read: Read...
302 label_public_projects: 公開專案
303 label_open_issues: 進行中
304 label_open_issues_plural: 進行中
305 label_closed_issues: 已結束
306 label_closed_issues_plural: 已結束
307 label_total: Total
308 label_permissions: 權限
309 label_current_status: Current status
310 label_new_statuses_allowed: New statuses allowed
311 label_all: 全部
312 label_none: 空值
313 label_nobody: nobody
314 label_next: Next
315 label_previous: Previous
316 label_used_by: Used by
317 label_details: Details
318 label_add_note: 加入一個新筆記
319 label_per_page: 每頁
320 label_calendar: 日曆
321 label_months_from: months from
322 label_gantt: 甘特圖
323 label_internal: Internal
324 label_last_changes: 最近 %d 個變更
325 label_change_view_all: 檢視所有變更
326 label_personalize_page: 自訂版面
327 label_comment: 註解
328 label_comment_plural: 註解
329 label_comment_add: 加入新註解
330 label_comment_added: 新註解已加入
331 label_comment_delete: 刪除註解
332 label_query: 自訂查詢
333 label_query_plural: 自訂查詢
334 label_query_new: 建立新的查詢
335 label_filter_add: 加入新篩選條件
336 label_filter_plural: 篩選條件
337 label_equals: 等於
338 label_not_equals: 不等於
339 label_in_less_than: 在小於
340 label_in_more_than: 在大於
341 label_in:
342 label_today: 今天
343 label_this_week: 本週
344 label_less_than_ago: 小於幾天之前
345 label_more_than_ago: 大於幾天之前
346 label_ago: 天以前
347 label_contains: 包含
348 label_not_contains: 不包含
349 label_day_plural:
350 label_repository: 版本控管
351 label_browse: 瀏覽
352 label_modification: %d 變更
353 label_modification_plural: %d 變更
354 label_revision: 版次
355 label_revision_plural: 版次清單
356 label_added: 已新增
357 label_modified: 已修改
358 label_deleted: 已刪除
359 label_latest_revision: 最新版次
360 label_latest_revision_plural: 最近版次清單
361 label_view_revisions: 檢視版次清單
362 label_max_size: 最大長度
363 label_on: 'on'
364 label_sort_highest: 移動至開頭
365 label_sort_higher: 往上移動
366 label_sort_lower: 往下移動
367 label_sort_lowest: 移動至結尾
368 label_roadmap: 版本藍圖
369 label_roadmap_due_in: 倒數天數:
370 label_roadmap_overdue: %s 逾期
371 label_roadmap_no_issues: No issues for this version
372 label_search: 搜尋
373 label_result_plural: 結果
374 label_all_words: All words
375 label_wiki: Wiki
376 label_wiki_edit: Wiki 編輯
377 label_wiki_edit_plural: Wiki 編輯
378 label_wiki_page: Wiki 網頁
379 label_wiki_page_plural: Wiki 網頁
380 label_index_by_title: 依標題索引
381 label_index_by_date: 依日期索引
382 label_current_version: 現行版本
383 label_preview: 預覽
384 label_feed_plural: Feeds
385 label_changes_details: Details of all changes
386 label_issue_tracking: 項目追蹤
387 label_spent_time: 耗用時間
388 label_f_hour: %.2f hour
389 label_f_hour_plural: %.2f hours
390 label_time_tracking: Time tracking
391 label_change_plural: Changes
392 label_statistics: Statistics
393 label_commits_per_month: Commits per month
394 label_commits_per_author: Commits per author
395 label_view_diff: View differences
396 label_diff_inline: inline
397 label_diff_side_by_side: side by side
398 label_options: 選項清單
399 label_copy_workflow_from: Copy workflow from
400 label_permissions_report: 權限報表
401 label_watched_issues: 觀察中的項目清單
402 label_related_issues: 相關的項目清單
403 label_applied_status: 已套用狀態
404 label_loading: 載入中...
405 label_relation_new: 建立新關聯
406 label_relation_delete: 刪除關聯
407 label_relates_to: 關聯至
408 label_duplicates: duplicates
409 label_blocks: blocks
410 label_blocked_by: blocked by
411 label_precedes: precedes
412 label_follows: follows
413 label_end_to_start: end to start
414 label_end_to_end: end to end
415 label_start_to_start: start to start
416 label_start_to_end: start to end
417 label_stay_logged_in: Stay logged in
418 label_disabled: 關閉
419 label_show_completed_versions: 顯示已完成的版本
420 label_me: 我自己
421 label_board: 論壇
422 label_board_new: 建立新論壇
423 label_board_plural: 論壇
424 label_topic_plural: 討論主題
425 label_message_plural: 訊息
426 label_message_last: 上一封訊息
427 label_message_new: 建立新的訊息
428 label_reply_plural: 回應
429 label_send_information: 寄送帳戶資訊電子郵件給用戶
430 label_year:
431 label_month:
432 label_week:
433 label_date_from: 開始
434 label_date_to: 結束
435 label_language_based: 依用戶之語系決定
436 label_sort_by: 按 %s 排序
437 label_send_test_email: 寄送測試郵件
438 label_feeds_access_key_created_on: RSS 存取鍵建立於 %s 之前
439 label_module_plural: 模組
440 label_added_time_by: Added by %s %s ago
441 label_updated_time: Updated %s ago
442 label_jump_to_a_project: 選擇欲前往的專案...
443 label_file_plural: 檔案清單
444 label_changeset_plural: Changesets
445 label_default_columns: 預設欄位清單
446 label_no_change_option: (No change)
447 label_bulk_edit_selected_issues: Bulk edit selected issues
448 label_theme: 畫面主題
449 label_default: Default
450 label_search_titles_only: Search titles only
451 label_user_mail_option_all: "提醒與我的專案有關的所有事件"
452 label_user_mail_option_selected: "只停醒我所選擇專案中的事件..."
453 label_user_mail_option_none: "只提醒我觀察中或參與中的事件"
454 label_user_mail_no_self_notified: "不提醒我自己所做的變更"
455 label_registration_activation_by_email: 透過電子郵件啟用帳戶
456 label_registration_manual_activation: 手動啟用帳戶
457 label_registration_automatic_activation: 自動啟用帳戶
458
459 button_login: 登入
460 button_submit: 送出
461 button_save: 儲存
462 button_check_all: 全選
463 button_uncheck_all: 全不選
464 button_delete: 刪除
465 button_create: 建立
466 button_test: 測試
467 button_edit: 編輯
468 button_add: 新增
469 button_change: 修改
470 button_apply: 套用
471 button_clear: 清除
472 button_lock: 鎖定
473 button_unlock: 解除鎖定
474 button_download: 下載
475 button_list: List
476 button_view: 檢視
477 button_move: 移動
478 button_back: Back
479 button_cancel: 取消
480 button_activate: 啟用
481 button_sort: 排序
482 button_log_time: 記錄時間
483 button_rollback: 還原至此版本
484 button_watch: 觀察
485 button_unwatch: 取消觀察
486 button_reply: 回應
487 button_archive: 歸檔
488 button_unarchive: 取消歸檔
489 button_reset: 回復
490 button_rename: 重新命名
491 button_change_password: 變更密碼
492 button_copy: 複製
493 button_annotate: 加注
494
495 status_active: 活動中
496 status_registered: 註冊完成
497 status_locked: 鎖定中
498
499 text_select_mail_notifications: 選擇欲寄送提醒通知郵件之動作
500 text_regexp_info: eg. ^[A-Z0-9]+$
501 text_min_max_length_info: 0 means no restriction
502 text_project_destroy_confirmation: Are you sure you want to delete this project and all related data ?
503 text_workflow_edit: Select a role and a tracker to edit the workflow
504 text_are_you_sure: Are you sure ?
505 text_journal_changed: changed from %s to %s
506 text_journal_set_to: set to %s
507 text_journal_deleted: deleted
508 text_tip_task_begin_day: task beginning this day
509 text_tip_task_end_day: task ending this day
510 text_tip_task_begin_end_day: task beginning and ending this day
511 text_project_identifier_info: '只允許小寫英文字母(a-z)、阿拉伯數字與連字符號(-)。<br />儲存後,代碼不可再被更改。'
512 text_caracters_maximum: %d characters maximum.
513 text_caracters_minimum: Must be at least %d characters long.
514 text_length_between: Length between %d and %d characters.
515 text_tracker_no_workflow: No workflow defined for this tracker
516 text_unallowed_characters: Unallowed characters
517 text_comma_separated: Multiple values allowed (comma separated).
518 text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages
519 text_issue_added: 已通報 %s 個項目
520 text_issue_updated: 已更新 %s 個項目
521 text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all its content ?
522 text_issue_category_destroy_question: Some issues (%d) are assigned to this category. What do you want to do ?
523 text_issue_category_destroy_assignments: Remove category assignments
524 text_issue_category_reassign_to: Reassign issues to this category
525 text_user_mail_option: "For unselected projects, you will only receive notifications about things you watch or you're involved in (eg. issues you're the author or assignee)."
526
527 default_role_manager: 管理人員
528 default_role_developper: 開發人員
529 default_role_reporter: 報告人員
530 default_tracker_bug: 臭蟲
531 default_tracker_feature: 功能
532 default_tracker_support: 支援
533 default_issue_status_new: 新建立
534 default_issue_status_assigned: 已指派
535 default_issue_status_resolved: 已解決
536 default_issue_status_feedback: 回應
537 default_issue_status_closed: 已結束
538 default_issue_status_rejected: 已拒絕
539 default_doc_category_user: 使用手冊
540 default_doc_category_tech: 技術文件
541 default_priority_low:
542 default_priority_normal: 正常
543 default_priority_high:
544 default_priority_urgent:
545 default_priority_immediate: 特急
546 default_activity_design: 設計
547 default_activity_development: 開發
548
549 enumeration_issue_priorities: 項目重要性
550 enumeration_doc_categories: 文件分類
551 enumeration_activities: 活動 (time tracking)
@@ -0,0 +1,127
1 // ** I18N
2
3 // Calendar EN language
4 // Author: Mihai Bazon, <mihai_bazon@yahoo.com>
5 // Encoding: any
6 // Distributed under the same terms as the calendar itself.
7
8 // For translators: please use UTF-8 if possible. We strongly believe that
9 // Unicode is the answer to a real internationalized world. Also please
10 // include your contact information in the header, as can be seen above.
11
12 // full day names
13 Calendar._DN = new Array
14 ("星期日",
15 "星期一",
16 "星期二",
17 "星期三",
18 "星期四",
19 "星期五",
20 "星期六",
21 "星期日");
22
23 // Please note that the following array of short day names (and the same goes
24 // for short month names, _SMN) isn't absolutely necessary. We give it here
25 // for exemplification on how one can customize the short day names, but if
26 // they are simply the first N letters of the full name you can simply say:
27 //
28 // Calendar._SDN_len = N; // short day name length
29 // Calendar._SMN_len = N; // short month name length
30 //
31 // If N = 3 then this is not needed either since we assume a value of 3 if not
32 // present, to be compatible with translation files that were written before
33 // this feature.
34
35 // short day names
36 Calendar._SDN = new Array
37 ("日",
38 "一",
39 "二",
40 "三",
41 "四",
42 "五",
43 "六",
44 "日");
45
46 // First day of the week. "0" means display Sunday first, "1" means display
47 // Monday first, etc.
48 Calendar._FD = 0;
49
50 // full month names
51 Calendar._MN = new Array
52 ("一月",
53 "二月",
54 "三月",
55 "四月",
56 "五月",
57 "六月",
58 "七月",
59 "八月",
60 "九月",
61 "十月",
62 "十一月",
63 "十二月");
64
65 // short month names
66 Calendar._SMN = new Array
67 ("一月",
68 "二月",
69 "三月",
70 "四月",
71 "五月",
72 "六月",
73 "七月",
74 "八月",
75 "九月",
76 "十月",
77 "十一月",
78 "十二月");
79
80 // tooltips
81 Calendar._TT = {};
82 Calendar._TT["INFO"] = "關於 calendar";
83
84 Calendar._TT["ABOUT"] =
85 "DHTML 日期/時間 選擇器\n" +
86 "(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
87 "最For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
88 "Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
89 "\n\n" +
90 "Date selection:\n" +
91 "- Use the \xab, \xbb buttons to select year\n" +
92 "- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" +
93 "- Hold mouse button on any of the above buttons for faster selection.";
94 Calendar._TT["ABOUT_TIME"] = "\n\n" +
95 "時間選擇方式:\n" +
96 "- 「單擊」時分秒為遞增\n" +
97 "- 或 「Shift-單擊」為遞減\n" +
98 "- 或 「單擊且拖拉」為快速選擇";
99
100 Calendar._TT["PREV_YEAR"] = "前一年 (按住不放可顯示選單)";
101 Calendar._TT["PREV_MONTH"] = "前一個月 (按住不放可顯示選單)";
102 Calendar._TT["GO_TODAY"] = "選擇今天";
103 Calendar._TT["NEXT_MONTH"] = "後一個月 (按住不放可顯示選單)";
104 Calendar._TT["NEXT_YEAR"] = "下一年 (按住不放可顯式選單)";
105 Calendar._TT["SEL_DATE"] = "請點選日期";
106 Calendar._TT["DRAG_TO_MOVE"] = "按住不放可拖拉視窗";
107 Calendar._TT["PART_TODAY"] = " (今天)";
108
109 // the following is to inform that "%s" is to be the first day of week
110 // %s will be replaced with the day name.
111 Calendar._TT["DAY_FIRST"] = "以 %s 做為一週的首日";
112
113 // This may be locale-dependent. It specifies the week-end days, as an array
114 // of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
115 // means Monday, etc.
116 Calendar._TT["WEEKEND"] = "0,6";
117
118 Calendar._TT["CLOSE"] = "關閉視窗";
119 Calendar._TT["TODAY"] = "今天";
120 Calendar._TT["TIME_PART"] = "(Shift-)加「單擊」或「拖拉」可變更值";
121
122 // date formats
123 Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
124 Calendar._TT["TT_DATE_FORMAT"] = "星期 %a, %b %e 日";
125
126 Calendar._TT["WK"] = "週";
127 Calendar._TT["TIME"] = "時間:";
@@ -1,407 +1,407
1 # redMine - project management software
1 # redMine - project management software
2 # Copyright (C) 2006-2007 Jean-Philippe Lang
2 # Copyright (C) 2006-2007 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 module ApplicationHelper
18 module ApplicationHelper
19 include Redmine::WikiFormatting::Macros::Definitions
19 include Redmine::WikiFormatting::Macros::Definitions
20
20
21 def current_role
21 def current_role
22 @current_role ||= User.current.role_for_project(@project)
22 @current_role ||= User.current.role_for_project(@project)
23 end
23 end
24
24
25 # Return true if user is authorized for controller/action, otherwise false
25 # Return true if user is authorized for controller/action, otherwise false
26 def authorize_for(controller, action)
26 def authorize_for(controller, action)
27 User.current.allowed_to?({:controller => controller, :action => action}, @project)
27 User.current.allowed_to?({:controller => controller, :action => action}, @project)
28 end
28 end
29
29
30 # Display a link if user is authorized
30 # Display a link if user is authorized
31 def link_to_if_authorized(name, options = {}, html_options = nil, *parameters_for_method_reference)
31 def link_to_if_authorized(name, options = {}, html_options = nil, *parameters_for_method_reference)
32 link_to(name, options, html_options, *parameters_for_method_reference) if authorize_for(options[:controller] || params[:controller], options[:action])
32 link_to(name, options, html_options, *parameters_for_method_reference) if authorize_for(options[:controller] || params[:controller], options[:action])
33 end
33 end
34
34
35 # Display a link to user's account page
35 # Display a link to user's account page
36 def link_to_user(user)
36 def link_to_user(user)
37 user ? link_to(user, :controller => 'account', :action => 'show', :id => user) : 'Anonymous'
37 user ? link_to(user, :controller => 'account', :action => 'show', :id => user) : 'Anonymous'
38 end
38 end
39
39
40 def link_to_issue(issue)
40 def link_to_issue(issue)
41 link_to "#{issue.tracker.name} ##{issue.id}", :controller => "issues", :action => "show", :id => issue
41 link_to "#{issue.tracker.name} ##{issue.id}", :controller => "issues", :action => "show", :id => issue
42 end
42 end
43
43
44 def toggle_link(name, id, options={})
44 def toggle_link(name, id, options={})
45 onclick = "Element.toggle('#{id}'); "
45 onclick = "Element.toggle('#{id}'); "
46 onclick << (options[:focus] ? "Form.Element.focus('#{options[:focus]}'); " : "this.blur(); ")
46 onclick << (options[:focus] ? "Form.Element.focus('#{options[:focus]}'); " : "this.blur(); ")
47 onclick << "return false;"
47 onclick << "return false;"
48 link_to(name, "#", :onclick => onclick)
48 link_to(name, "#", :onclick => onclick)
49 end
49 end
50
50
51 def show_and_goto_link(name, id, options={})
51 def show_and_goto_link(name, id, options={})
52 onclick = "Element.show('#{id}'); "
52 onclick = "Element.show('#{id}'); "
53 onclick << (options[:focus] ? "Form.Element.focus('#{options[:focus]}'); " : "this.blur(); ")
53 onclick << (options[:focus] ? "Form.Element.focus('#{options[:focus]}'); " : "this.blur(); ")
54 onclick << "location.href='##{id}-anchor'; "
54 onclick << "location.href='##{id}-anchor'; "
55 onclick << "return false;"
55 onclick << "return false;"
56 link_to(name, "#", options.merge(:onclick => onclick))
56 link_to(name, "#", options.merge(:onclick => onclick))
57 end
57 end
58
58
59 def image_to_function(name, function, html_options = {})
59 def image_to_function(name, function, html_options = {})
60 html_options.symbolize_keys!
60 html_options.symbolize_keys!
61 tag(:input, html_options.merge({
61 tag(:input, html_options.merge({
62 :type => "image", :src => image_path(name),
62 :type => "image", :src => image_path(name),
63 :onclick => (html_options[:onclick] ? "#{html_options[:onclick]}; " : "") + "#{function};"
63 :onclick => (html_options[:onclick] ? "#{html_options[:onclick]}; " : "") + "#{function};"
64 }))
64 }))
65 end
65 end
66
66
67 def prompt_to_remote(name, text, param, url, html_options = {})
67 def prompt_to_remote(name, text, param, url, html_options = {})
68 html_options[:onclick] = "promptToRemote('#{text}', '#{param}', '#{url_for(url)}'); return false;"
68 html_options[:onclick] = "promptToRemote('#{text}', '#{param}', '#{url_for(url)}'); return false;"
69 link_to name, {}, html_options
69 link_to name, {}, html_options
70 end
70 end
71
71
72 def format_date(date)
72 def format_date(date)
73 return nil unless date
73 return nil unless date
74 # "Setting.date_format.size < 2" is a temporary fix (content of date_format setting changed)
74 # "Setting.date_format.size < 2" is a temporary fix (content of date_format setting changed)
75 @date_format ||= (Setting.date_format.blank? || Setting.date_format.size < 2 ? l(:general_fmt_date) : Setting.date_format)
75 @date_format ||= (Setting.date_format.blank? || Setting.date_format.size < 2 ? l(:general_fmt_date) : Setting.date_format)
76 date.strftime(@date_format)
76 date.strftime(@date_format)
77 end
77 end
78
78
79 def format_time(time, include_date = true)
79 def format_time(time, include_date = true)
80 return nil unless time
80 return nil unless time
81 time = time.to_time if time.is_a?(String)
81 time = time.to_time if time.is_a?(String)
82 zone = User.current.time_zone
82 zone = User.current.time_zone
83 if time.utc?
83 if time.utc?
84 local = zone ? zone.adjust(time) : time.getlocal
84 local = zone ? zone.adjust(time) : time.getlocal
85 else
85 else
86 local = zone ? zone.adjust(time.getutc) : time
86 local = zone ? zone.adjust(time.getutc) : time
87 end
87 end
88 @date_format ||= (Setting.date_format.blank? || Setting.date_format.size < 2 ? l(:general_fmt_date) : Setting.date_format)
88 @date_format ||= (Setting.date_format.blank? || Setting.date_format.size < 2 ? l(:general_fmt_date) : Setting.date_format)
89 @time_format ||= (Setting.time_format.blank? ? l(:general_fmt_time) : Setting.time_format)
89 @time_format ||= (Setting.time_format.blank? ? l(:general_fmt_time) : Setting.time_format)
90 include_date ? local.strftime("#{@date_format} #{@time_format}") : local.strftime(@time_format)
90 include_date ? local.strftime("#{@date_format} #{@time_format}") : local.strftime(@time_format)
91 end
91 end
92
92
93 def authoring(created, author)
93 def authoring(created, author)
94 time_tag = content_tag('acronym', distance_of_time_in_words(Time.now, created), :title => format_time(created))
94 time_tag = content_tag('acronym', distance_of_time_in_words(Time.now, created), :title => format_time(created))
95 l(:label_added_time_by, author || 'Anonymous', time_tag)
95 l(:label_added_time_by, author || 'Anonymous', time_tag)
96 end
96 end
97
97
98 def day_name(day)
98 def day_name(day)
99 l(:general_day_names).split(',')[day-1]
99 l(:general_day_names).split(',')[day-1]
100 end
100 end
101
101
102 def month_name(month)
102 def month_name(month)
103 l(:actionview_datehelper_select_month_names).split(',')[month-1]
103 l(:actionview_datehelper_select_month_names).split(',')[month-1]
104 end
104 end
105
105
106 def pagination_links_full(paginator, options={}, html_options={})
106 def pagination_links_full(paginator, options={}, html_options={})
107 page_param = options.delete(:page_param) || :page
107 page_param = options.delete(:page_param) || :page
108
108
109 html = ''
109 html = ''
110 html << link_to_remote(('&#171; ' + l(:label_previous)),
110 html << link_to_remote(('&#171; ' + l(:label_previous)),
111 {:update => "content", :url => options.merge(page_param => paginator.current.previous)},
111 {:update => "content", :url => options.merge(page_param => paginator.current.previous)},
112 {:href => url_for(:params => options.merge(page_param => paginator.current.previous))}) + ' ' if paginator.current.previous
112 {:href => url_for(:params => options.merge(page_param => paginator.current.previous))}) + ' ' if paginator.current.previous
113
113
114 html << (pagination_links_each(paginator, options) do |n|
114 html << (pagination_links_each(paginator, options) do |n|
115 link_to_remote(n.to_s,
115 link_to_remote(n.to_s,
116 {:url => {:params => options.merge(page_param => n)}, :update => 'content'},
116 {:url => {:params => options.merge(page_param => n)}, :update => 'content'},
117 {:href => url_for(:params => options.merge(page_param => n))})
117 {:href => url_for(:params => options.merge(page_param => n))})
118 end || '')
118 end || '')
119
119
120 html << ' ' + link_to_remote((l(:label_next) + ' &#187;'),
120 html << ' ' + link_to_remote((l(:label_next) + ' &#187;'),
121 {:update => "content", :url => options.merge(page_param => paginator.current.next)},
121 {:update => "content", :url => options.merge(page_param => paginator.current.next)},
122 {:href => url_for(:params => options.merge(page_param => paginator.current.next))}) if paginator.current.next
122 {:href => url_for(:params => options.merge(page_param => paginator.current.next))}) if paginator.current.next
123 html
123 html
124 end
124 end
125
125
126 def set_html_title(text)
126 def set_html_title(text)
127 @html_header_title = text
127 @html_header_title = text
128 end
128 end
129
129
130 def html_title
130 def html_title
131 title = []
131 title = []
132 title << @project.name if @project
132 title << @project.name if @project
133 title << @html_header_title
133 title << @html_header_title
134 title << Setting.app_title
134 title << Setting.app_title
135 title.compact.join(' - ')
135 title.compact.join(' - ')
136 end
136 end
137
137
138 ACCESSKEYS = {:edit => 'e',
138 ACCESSKEYS = {:edit => 'e',
139 :preview => 'r',
139 :preview => 'r',
140 :quick_search => 'f',
140 :quick_search => 'f',
141 :search => '4',
141 :search => '4',
142 }.freeze unless const_defined?(:ACCESSKEYS)
142 }.freeze unless const_defined?(:ACCESSKEYS)
143
143
144 def accesskey(s)
144 def accesskey(s)
145 ACCESSKEYS[s]
145 ACCESSKEYS[s]
146 end
146 end
147
147
148 # Formats text according to system settings.
148 # Formats text according to system settings.
149 # 2 ways to call this method:
149 # 2 ways to call this method:
150 # * with a String: textilizable(text, options)
150 # * with a String: textilizable(text, options)
151 # * with an object and one of its attribute: textilizable(issue, :description, options)
151 # * with an object and one of its attribute: textilizable(issue, :description, options)
152 def textilizable(*args)
152 def textilizable(*args)
153 options = args.last.is_a?(Hash) ? args.pop : {}
153 options = args.last.is_a?(Hash) ? args.pop : {}
154 case args.size
154 case args.size
155 when 1
155 when 1
156 obj = nil
156 obj = nil
157 text = args.shift || ''
157 text = args.shift || ''
158 when 2
158 when 2
159 obj = args.shift
159 obj = args.shift
160 text = obj.send(args.shift)
160 text = obj.send(args.shift)
161 else
161 else
162 raise ArgumentError, 'invalid arguments to textilizable'
162 raise ArgumentError, 'invalid arguments to textilizable'
163 end
163 end
164
164
165 # when using an image link, try to use an attachment, if possible
165 # when using an image link, try to use an attachment, if possible
166 attachments = options[:attachments]
166 attachments = options[:attachments]
167 if attachments
167 if attachments
168 text = text.gsub(/!([<>=]*)(\S+\.(gif|jpg|jpeg|png))!/) do |m|
168 text = text.gsub(/!([<>=]*)(\S+\.(gif|jpg|jpeg|png))!/) do |m|
169 align = $1
169 align = $1
170 filename = $2
170 filename = $2
171 rf = Regexp.new(filename, Regexp::IGNORECASE)
171 rf = Regexp.new(filename, Regexp::IGNORECASE)
172 # search for the picture in attachments
172 # search for the picture in attachments
173 if found = attachments.detect { |att| att.filename =~ rf }
173 if found = attachments.detect { |att| att.filename =~ rf }
174 image_url = url_for :controller => 'attachments', :action => 'download', :id => found.id
174 image_url = url_for :controller => 'attachments', :action => 'download', :id => found.id
175 "!#{align}#{image_url}!"
175 "!#{align}#{image_url}!"
176 else
176 else
177 "!#{align}#{filename}!"
177 "!#{align}#{filename}!"
178 end
178 end
179 end
179 end
180 end
180 end
181
181
182 text = (Setting.text_formatting == 'textile') ?
182 text = (Setting.text_formatting == 'textile') ?
183 Redmine::WikiFormatting.to_html(text) { |macro, args| exec_macro(macro, obj, args) } :
183 Redmine::WikiFormatting.to_html(text) { |macro, args| exec_macro(macro, obj, args) } :
184 simple_format(auto_link(h(text)))
184 simple_format(auto_link(h(text)))
185
185
186 # different methods for formatting wiki links
186 # different methods for formatting wiki links
187 case options[:wiki_links]
187 case options[:wiki_links]
188 when :local
188 when :local
189 # used for local links to html files
189 # used for local links to html files
190 format_wiki_link = Proc.new {|project, title| "#{title}.html" }
190 format_wiki_link = Proc.new {|project, title| "#{title}.html" }
191 when :anchor
191 when :anchor
192 # used for single-file wiki export
192 # used for single-file wiki export
193 format_wiki_link = Proc.new {|project, title| "##{title}" }
193 format_wiki_link = Proc.new {|project, title| "##{title}" }
194 else
194 else
195 format_wiki_link = Proc.new {|project, title| url_for :controller => 'wiki', :action => 'index', :id => project, :page => title }
195 format_wiki_link = Proc.new {|project, title| url_for :controller => 'wiki', :action => 'index', :id => project, :page => title }
196 end
196 end
197
197
198 project = options[:project] || @project
198 project = options[:project] || @project
199
199
200 # turn wiki links into html links
200 # turn wiki links into html links
201 # example:
201 # example:
202 # [[mypage]]
202 # [[mypage]]
203 # [[mypage|mytext]]
203 # [[mypage|mytext]]
204 # wiki links can refer other project wikis, using project name or identifier:
204 # wiki links can refer other project wikis, using project name or identifier:
205 # [[project:]] -> wiki starting page
205 # [[project:]] -> wiki starting page
206 # [[project:|mytext]]
206 # [[project:|mytext]]
207 # [[project:mypage]]
207 # [[project:mypage]]
208 # [[project:mypage|mytext]]
208 # [[project:mypage|mytext]]
209 text = text.gsub(/\[\[([^\]\|]+)(\|([^\]\|]+))?\]\]/) do |m|
209 text = text.gsub(/\[\[([^\]\|]+)(\|([^\]\|]+))?\]\]/) do |m|
210 link_project = project
210 link_project = project
211 page = $1
211 page = $1
212 title = $3
212 title = $3
213 if page =~ /^([^\:]+)\:(.*)$/
213 if page =~ /^([^\:]+)\:(.*)$/
214 link_project = Project.find_by_name($1) || Project.find_by_identifier($1)
214 link_project = Project.find_by_name($1) || Project.find_by_identifier($1)
215 page = title || $2
215 page = title || $2
216 title = $1 if page.blank?
216 title = $1 if page.blank?
217 end
217 end
218
218
219 if link_project && link_project.wiki
219 if link_project && link_project.wiki
220 # check if page exists
220 # check if page exists
221 wiki_page = link_project.wiki.find_page(page)
221 wiki_page = link_project.wiki.find_page(page)
222 link_to((title || page), format_wiki_link.call(link_project, Wiki.titleize(page)),
222 link_to((title || page), format_wiki_link.call(link_project, Wiki.titleize(page)),
223 :class => ('wiki-page' + (wiki_page ? '' : ' new')))
223 :class => ('wiki-page' + (wiki_page ? '' : ' new')))
224 else
224 else
225 # project or wiki doesn't exist
225 # project or wiki doesn't exist
226 title || page
226 title || page
227 end
227 end
228 end
228 end
229
229
230 # turn issue and revision ids into links
230 # turn issue and revision ids into links
231 # example:
231 # example:
232 # #52 -> <a href="/issues/show/52">#52</a>
232 # #52 -> <a href="/issues/show/52">#52</a>
233 # r52 -> <a href="/repositories/revision/6?rev=52">r52</a> (project.id is 6)
233 # r52 -> <a href="/repositories/revision/6?rev=52">r52</a> (project.id is 6)
234 text = text.gsub(%r{([\s\(,-^])(#|r)(\d+)(?=[[:punct:]]|\s|<|$)}) do |m|
234 text = text.gsub(%r{([\s\(,-^])(#|r)(\d+)(?=[[:punct:]]|\s|<|$)}) do |m|
235 leading, otype, oid = $1, $2, $3
235 leading, otype, oid = $1, $2, $3
236 link = nil
236 link = nil
237 if otype == 'r'
237 if otype == 'r'
238 if project && (changeset = project.changesets.find_by_revision(oid))
238 if project && (changeset = project.changesets.find_by_revision(oid))
239 link = link_to("r#{oid}", {:controller => 'repositories', :action => 'revision', :id => project.id, :rev => oid}, :class => 'changeset',
239 link = link_to("r#{oid}", {:controller => 'repositories', :action => 'revision', :id => project.id, :rev => oid}, :class => 'changeset',
240 :title => truncate(changeset.comments, 100))
240 :title => truncate(changeset.comments, 100))
241 end
241 end
242 else
242 else
243 if issue = Issue.find_by_id(oid.to_i, :include => [:project, :status], :conditions => Project.visible_by(User.current))
243 if issue = Issue.find_by_id(oid.to_i, :include => [:project, :status], :conditions => Project.visible_by(User.current))
244 link = link_to("##{oid}", {:controller => 'issues', :action => 'show', :id => oid}, :class => 'issue',
244 link = link_to("##{oid}", {:controller => 'issues', :action => 'show', :id => oid}, :class => 'issue',
245 :title => "#{truncate(issue.subject, 100)} (#{issue.status.name})")
245 :title => "#{truncate(issue.subject, 100)} (#{issue.status.name})")
246 link = content_tag('del', link) if issue.closed?
246 link = content_tag('del', link) if issue.closed?
247 end
247 end
248 end
248 end
249 leading + (link || "#{otype}#{oid}")
249 leading + (link || "#{otype}#{oid}")
250 end
250 end
251
251
252 text
252 text
253 end
253 end
254
254
255 # Same as Rails' simple_format helper without using paragraphs
255 # Same as Rails' simple_format helper without using paragraphs
256 def simple_format_without_paragraph(text)
256 def simple_format_without_paragraph(text)
257 text.to_s.
257 text.to_s.
258 gsub(/\r\n?/, "\n"). # \r\n and \r -> \n
258 gsub(/\r\n?/, "\n"). # \r\n and \r -> \n
259 gsub(/\n\n+/, "<br /><br />"). # 2+ newline -> 2 br
259 gsub(/\n\n+/, "<br /><br />"). # 2+ newline -> 2 br
260 gsub(/([^\n]\n)(?=[^\n])/, '\1<br />') # 1 newline -> br
260 gsub(/([^\n]\n)(?=[^\n])/, '\1<br />') # 1 newline -> br
261 end
261 end
262
262
263 def error_messages_for(object_name, options = {})
263 def error_messages_for(object_name, options = {})
264 options = options.symbolize_keys
264 options = options.symbolize_keys
265 object = instance_variable_get("@#{object_name}")
265 object = instance_variable_get("@#{object_name}")
266 if object && !object.errors.empty?
266 if object && !object.errors.empty?
267 # build full_messages here with controller current language
267 # build full_messages here with controller current language
268 full_messages = []
268 full_messages = []
269 object.errors.each do |attr, msg|
269 object.errors.each do |attr, msg|
270 next if msg.nil?
270 next if msg.nil?
271 msg = msg.first if msg.is_a? Array
271 msg = msg.first if msg.is_a? Array
272 if attr == "base"
272 if attr == "base"
273 full_messages << l(msg)
273 full_messages << l(msg)
274 else
274 else
275 full_messages << "&#171; " + (l_has_string?("field_" + attr) ? l("field_" + attr) : object.class.human_attribute_name(attr)) + " &#187; " + l(msg) unless attr == "custom_values"
275 full_messages << "&#171; " + (l_has_string?("field_" + attr) ? l("field_" + attr) : object.class.human_attribute_name(attr)) + " &#187; " + l(msg) unless attr == "custom_values"
276 end
276 end
277 end
277 end
278 # retrieve custom values error messages
278 # retrieve custom values error messages
279 if object.errors[:custom_values]
279 if object.errors[:custom_values]
280 object.custom_values.each do |v|
280 object.custom_values.each do |v|
281 v.errors.each do |attr, msg|
281 v.errors.each do |attr, msg|
282 next if msg.nil?
282 next if msg.nil?
283 msg = msg.first if msg.is_a? Array
283 msg = msg.first if msg.is_a? Array
284 full_messages << "&#171; " + v.custom_field.name + " &#187; " + l(msg)
284 full_messages << "&#171; " + v.custom_field.name + " &#187; " + l(msg)
285 end
285 end
286 end
286 end
287 end
287 end
288 content_tag("div",
288 content_tag("div",
289 content_tag(
289 content_tag(
290 options[:header_tag] || "span", lwr(:gui_validation_error, full_messages.length) + ":"
290 options[:header_tag] || "span", lwr(:gui_validation_error, full_messages.length) + ":"
291 ) +
291 ) +
292 content_tag("ul", full_messages.collect { |msg| content_tag("li", msg) }),
292 content_tag("ul", full_messages.collect { |msg| content_tag("li", msg) }),
293 "id" => options[:id] || "errorExplanation", "class" => options[:class] || "errorExplanation"
293 "id" => options[:id] || "errorExplanation", "class" => options[:class] || "errorExplanation"
294 )
294 )
295 else
295 else
296 ""
296 ""
297 end
297 end
298 end
298 end
299
299
300 def lang_options_for_select(blank=true)
300 def lang_options_for_select(blank=true)
301 (blank ? [["(auto)", ""]] : []) +
301 (blank ? [["(auto)", ""]] : []) +
302 GLoc.valid_languages.collect{|lang| [ ll(lang.to_s, :general_lang_name), lang.to_s]}.sort{|x,y| x.first <=> y.first }
302 GLoc.valid_languages.collect{|lang| [ ll(lang.to_s, :general_lang_name), lang.to_s]}.sort{|x,y| x.last <=> y.last }
303 end
303 end
304
304
305 def label_tag_for(name, option_tags = nil, options = {})
305 def label_tag_for(name, option_tags = nil, options = {})
306 label_text = l(("field_"+field.to_s.gsub(/\_id$/, "")).to_sym) + (options.delete(:required) ? @template.content_tag("span", " *", :class => "required"): "")
306 label_text = l(("field_"+field.to_s.gsub(/\_id$/, "")).to_sym) + (options.delete(:required) ? @template.content_tag("span", " *", :class => "required"): "")
307 content_tag("label", label_text)
307 content_tag("label", label_text)
308 end
308 end
309
309
310 def labelled_tabular_form_for(name, object, options, &proc)
310 def labelled_tabular_form_for(name, object, options, &proc)
311 options[:html] ||= {}
311 options[:html] ||= {}
312 options[:html].store :class, "tabular"
312 options[:html].store :class, "tabular"
313 form_for(name, object, options.merge({ :builder => TabularFormBuilder, :lang => current_language}), &proc)
313 form_for(name, object, options.merge({ :builder => TabularFormBuilder, :lang => current_language}), &proc)
314 end
314 end
315
315
316 def check_all_links(form_name)
316 def check_all_links(form_name)
317 link_to_function(l(:button_check_all), "checkAll('#{form_name}', true)") +
317 link_to_function(l(:button_check_all), "checkAll('#{form_name}', true)") +
318 " | " +
318 " | " +
319 link_to_function(l(:button_uncheck_all), "checkAll('#{form_name}', false)")
319 link_to_function(l(:button_uncheck_all), "checkAll('#{form_name}', false)")
320 end
320 end
321
321
322 def progress_bar(pcts, options={})
322 def progress_bar(pcts, options={})
323 pcts = [pcts, pcts] unless pcts.is_a?(Array)
323 pcts = [pcts, pcts] unless pcts.is_a?(Array)
324 pcts[1] = pcts[1] - pcts[0]
324 pcts[1] = pcts[1] - pcts[0]
325 pcts << (100 - pcts[1] - pcts[0])
325 pcts << (100 - pcts[1] - pcts[0])
326 width = options[:width] || '100px;'
326 width = options[:width] || '100px;'
327 legend = options[:legend] || ''
327 legend = options[:legend] || ''
328 content_tag('table',
328 content_tag('table',
329 content_tag('tr',
329 content_tag('tr',
330 (pcts[0] > 0 ? content_tag('td', '', :width => "#{pcts[0].floor}%;", :class => 'closed') : '') +
330 (pcts[0] > 0 ? content_tag('td', '', :width => "#{pcts[0].floor}%;", :class => 'closed') : '') +
331 (pcts[1] > 0 ? content_tag('td', '', :width => "#{pcts[1].floor}%;", :class => 'done') : '') +
331 (pcts[1] > 0 ? content_tag('td', '', :width => "#{pcts[1].floor}%;", :class => 'done') : '') +
332 (pcts[2] > 0 ? content_tag('td', '', :width => "#{pcts[2].floor}%;", :class => 'todo') : '')
332 (pcts[2] > 0 ? content_tag('td', '', :width => "#{pcts[2].floor}%;", :class => 'todo') : '')
333 ), :class => 'progress', :style => "width: #{width};") +
333 ), :class => 'progress', :style => "width: #{width};") +
334 content_tag('p', legend, :class => 'pourcent')
334 content_tag('p', legend, :class => 'pourcent')
335 end
335 end
336
336
337 def context_menu_link(name, url, options={})
337 def context_menu_link(name, url, options={})
338 options[:class] ||= ''
338 options[:class] ||= ''
339 if options.delete(:selected)
339 if options.delete(:selected)
340 options[:class] << ' icon-checked disabled'
340 options[:class] << ' icon-checked disabled'
341 options[:disabled] = true
341 options[:disabled] = true
342 end
342 end
343 if options.delete(:disabled)
343 if options.delete(:disabled)
344 options.delete(:method)
344 options.delete(:method)
345 options.delete(:confirm)
345 options.delete(:confirm)
346 options.delete(:onclick)
346 options.delete(:onclick)
347 options[:class] << ' disabled'
347 options[:class] << ' disabled'
348 url = '#'
348 url = '#'
349 end
349 end
350 link_to name, url, options
350 link_to name, url, options
351 end
351 end
352
352
353 def calendar_for(field_id)
353 def calendar_for(field_id)
354 image_tag("calendar.png", {:id => "#{field_id}_trigger",:class => "calendar-trigger"}) +
354 image_tag("calendar.png", {:id => "#{field_id}_trigger",:class => "calendar-trigger"}) +
355 javascript_tag("Calendar.setup({inputField : '#{field_id}', ifFormat : '%Y-%m-%d', button : '#{field_id}_trigger' });")
355 javascript_tag("Calendar.setup({inputField : '#{field_id}', ifFormat : '%Y-%m-%d', button : '#{field_id}_trigger' });")
356 end
356 end
357
357
358 def wikitoolbar_for(field_id)
358 def wikitoolbar_for(field_id)
359 return '' unless Setting.text_formatting == 'textile'
359 return '' unless Setting.text_formatting == 'textile'
360 javascript_include_tag('jstoolbar') + javascript_tag("var toolbar = new jsToolBar($('#{field_id}')); toolbar.draw();")
360 javascript_include_tag('jstoolbar') + javascript_tag("var toolbar = new jsToolBar($('#{field_id}')); toolbar.draw();")
361 end
361 end
362
362
363 def content_for(name, content = nil, &block)
363 def content_for(name, content = nil, &block)
364 @has_content ||= {}
364 @has_content ||= {}
365 @has_content[name] = true
365 @has_content[name] = true
366 super(name, content, &block)
366 super(name, content, &block)
367 end
367 end
368
368
369 def has_content?(name)
369 def has_content?(name)
370 (@has_content && @has_content[name]) || false
370 (@has_content && @has_content[name]) || false
371 end
371 end
372 end
372 end
373
373
374 class TabularFormBuilder < ActionView::Helpers::FormBuilder
374 class TabularFormBuilder < ActionView::Helpers::FormBuilder
375 include GLoc
375 include GLoc
376
376
377 def initialize(object_name, object, template, options, proc)
377 def initialize(object_name, object, template, options, proc)
378 set_language_if_valid options.delete(:lang)
378 set_language_if_valid options.delete(:lang)
379 @object_name, @object, @template, @options, @proc = object_name, object, template, options, proc
379 @object_name, @object, @template, @options, @proc = object_name, object, template, options, proc
380 end
380 end
381
381
382 (field_helpers - %w(radio_button hidden_field) + %w(date_select)).each do |selector|
382 (field_helpers - %w(radio_button hidden_field) + %w(date_select)).each do |selector|
383 src = <<-END_SRC
383 src = <<-END_SRC
384 def #{selector}(field, options = {})
384 def #{selector}(field, options = {})
385 return super if options.delete :no_label
385 return super if options.delete :no_label
386 label_text = l(options[:label]) if options[:label]
386 label_text = l(options[:label]) if options[:label]
387 label_text ||= l(("field_"+field.to_s.gsub(/\_id$/, "")).to_sym)
387 label_text ||= l(("field_"+field.to_s.gsub(/\_id$/, "")).to_sym)
388 label_text << @template.content_tag("span", " *", :class => "required") if options.delete(:required)
388 label_text << @template.content_tag("span", " *", :class => "required") if options.delete(:required)
389 label = @template.content_tag("label", label_text,
389 label = @template.content_tag("label", label_text,
390 :class => (@object && @object.errors[field] ? "error" : nil),
390 :class => (@object && @object.errors[field] ? "error" : nil),
391 :for => (@object_name.to_s + "_" + field.to_s))
391 :for => (@object_name.to_s + "_" + field.to_s))
392 label + super
392 label + super
393 end
393 end
394 END_SRC
394 END_SRC
395 class_eval src, __FILE__, __LINE__
395 class_eval src, __FILE__, __LINE__
396 end
396 end
397
397
398 def select(field, choices, options = {}, html_options = {})
398 def select(field, choices, options = {}, html_options = {})
399 label_text = l(("field_"+field.to_s.gsub(/\_id$/, "")).to_sym) + (options.delete(:required) ? @template.content_tag("span", " *", :class => "required"): "")
399 label_text = l(("field_"+field.to_s.gsub(/\_id$/, "")).to_sym) + (options.delete(:required) ? @template.content_tag("span", " *", :class => "required"): "")
400 label = @template.content_tag("label", label_text,
400 label = @template.content_tag("label", label_text,
401 :class => (@object && @object.errors[field] ? "error" : nil),
401 :class => (@object && @object.errors[field] ? "error" : nil),
402 :for => (@object_name.to_s + "_" + field.to_s))
402 :for => (@object_name.to_s + "_" + field.to_s))
403 label + super
403 label + super
404 end
404 end
405
405
406 end
406 end
407
407
@@ -1,554 +1,554
1 # translated by andy wu
1 # translated by andy wu
2 # email:andywu.zh@gmail.com
2 # email:andywu.zh@gmail.com
3
3
4 _gloc_rule_default: '|n| n==1 ? "" : "_plural" '
4 _gloc_rule_default: '|n| n==1 ? "" : "_plural" '
5
5
6 actionview_datehelper_select_day_prefix:
6 actionview_datehelper_select_day_prefix:
7 actionview_datehelper_select_month_names: 一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月
7 actionview_datehelper_select_month_names: 一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月
8 actionview_datehelper_select_month_names_abbr: 一,二,三,四,五,六,七,八,九,十,十一,十二
8 actionview_datehelper_select_month_names_abbr: 一,二,三,四,五,六,七,八,九,十,十一,十二
9 actionview_datehelper_select_month_prefix:
9 actionview_datehelper_select_month_prefix:
10 actionview_datehelper_select_year_prefix:
10 actionview_datehelper_select_year_prefix:
11 actionview_datehelper_time_in_words_day: 1 天
11 actionview_datehelper_time_in_words_day: 1 天
12 actionview_datehelper_time_in_words_day_plural: %d 天
12 actionview_datehelper_time_in_words_day_plural: %d 天
13 actionview_datehelper_time_in_words_hour_about: 约1小时
13 actionview_datehelper_time_in_words_hour_about: 约1小时
14 actionview_datehelper_time_in_words_hour_about_plural: 约 %d 小时
14 actionview_datehelper_time_in_words_hour_about_plural: 约 %d 小时
15 actionview_datehelper_time_in_words_hour_about_single: 约1小时
15 actionview_datehelper_time_in_words_hour_about_single: 约1小时
16 actionview_datehelper_time_in_words_minute: 1分钟
16 actionview_datehelper_time_in_words_minute: 1分钟
17 actionview_datehelper_time_in_words_minute_half: 半分钟
17 actionview_datehelper_time_in_words_minute_half: 半分钟
18 actionview_datehelper_time_in_words_minute_less_than: 1分钟以内
18 actionview_datehelper_time_in_words_minute_less_than: 1分钟以内
19 actionview_datehelper_time_in_words_minute_plural: %d 分钟
19 actionview_datehelper_time_in_words_minute_plural: %d 分钟
20 actionview_datehelper_time_in_words_minute_single: 1分钟
20 actionview_datehelper_time_in_words_minute_single: 1分钟
21 actionview_datehelper_time_in_words_second_less_than: 1秒以内
21 actionview_datehelper_time_in_words_second_less_than: 1秒以内
22 actionview_datehelper_time_in_words_second_less_than_plural: %d 秒以内
22 actionview_datehelper_time_in_words_second_less_than_plural: %d 秒以内
23 actionview_instancetag_blank_option: 请选择
23 actionview_instancetag_blank_option: 请选择
24
24
25 activerecord_error_inclusion: 未包含在列表中
25 activerecord_error_inclusion: 未包含在列表中
26 activerecord_error_exclusion: 保留的
26 activerecord_error_exclusion: 保留的
27 activerecord_error_invalid: 无效的
27 activerecord_error_invalid: 无效的
28 activerecord_error_confirmation: 和确认输入不匹配
28 activerecord_error_confirmation: 和确认输入不匹配
29 activerecord_error_accepted: 必需被接受
29 activerecord_error_accepted: 必需被接受
30 activerecord_error_empty: 不能为空
30 activerecord_error_empty: 不能为空
31 activerecord_error_blank: 不能是空格
31 activerecord_error_blank: 不能是空格
32 activerecord_error_too_long: 太长
32 activerecord_error_too_long: 太长
33 activerecord_error_too_short: 太短
33 activerecord_error_too_short: 太短
34 activerecord_error_wrong_length: 长度有问题
34 activerecord_error_wrong_length: 长度有问题
35 activerecord_error_taken: has already been taken
35 activerecord_error_taken: has already been taken
36 activerecord_error_not_a_number: 不是数字
36 activerecord_error_not_a_number: 不是数字
37 activerecord_error_not_a_date: 不是有效的日期
37 activerecord_error_not_a_date: 不是有效的日期
38 activerecord_error_greater_than_start_date: 必需大于开始日期
38 activerecord_error_greater_than_start_date: 必需大于开始日期
39 activerecord_error_not_same_project: doesn't belong to the same project
39 activerecord_error_not_same_project: doesn't belong to the same project
40 activerecord_error_circular_dependency: This relation would create a circular dependency
40 activerecord_error_circular_dependency: This relation would create a circular dependency
41
41
42 general_fmt_age: %d yr
42 general_fmt_age: %d yr
43 general_fmt_age_plural: %d yrs
43 general_fmt_age_plural: %d yrs
44 general_fmt_date: %%m/%%d/%%Y
44 general_fmt_date: %%m/%%d/%%Y
45 general_fmt_datetime: %%m/%%d/%%Y %%I:%%M %%p
45 general_fmt_datetime: %%m/%%d/%%Y %%I:%%M %%p
46 general_fmt_datetime_short: %%b %%d, %%I:%%M %%p
46 general_fmt_datetime_short: %%b %%d, %%I:%%M %%p
47 general_fmt_time: %%I:%%M %%p
47 general_fmt_time: %%I:%%M %%p
48 general_text_No: '否'
48 general_text_No: '否'
49 general_text_Yes: '是'
49 general_text_Yes: '是'
50 general_text_no: '否'
50 general_text_no: '否'
51 general_text_yes: '是'
51 general_text_yes: '是'
52 general_lang_name: 'Chinese (简体中文)'
52 general_lang_name: 'Simplified Chinese (简体中文)'
53 general_csv_separator: ','
53 general_csv_separator: ','
54 general_csv_encoding: gb2312
54 general_csv_encoding: gb2312
55 general_pdf_encoding: Big5
55 general_pdf_encoding: Big5
56 general_day_names: 一,二,三,四,五,六,日
56 general_day_names: 一,二,三,四,五,六,日
57 general_first_day_of_week: '7'
57 general_first_day_of_week: '7'
58
58
59 notice_account_updated: 帐户更新成功。
59 notice_account_updated: 帐户更新成功。
60 notice_account_invalid_creditentials: 用户名或密码不正确
60 notice_account_invalid_creditentials: 用户名或密码不正确
61 notice_account_password_updated: 成功更新口令
61 notice_account_password_updated: 成功更新口令
62 notice_account_wrong_password: 错误的口令
62 notice_account_wrong_password: 错误的口令
63 notice_account_register_done: 帐户已创建成功
63 notice_account_register_done: 帐户已创建成功
64 notice_account_unknown_email: 未知用户
64 notice_account_unknown_email: 未知用户
65 notice_can_t_change_password: 该帐户使用了外部认证。无法更改口令。
65 notice_can_t_change_password: 该帐户使用了外部认证。无法更改口令。
66 notice_account_lost_email_sent: 邮件已被发送,邮件中有关于选择新口令的指导
66 notice_account_lost_email_sent: 邮件已被发送,邮件中有关于选择新口令的指导
67 notice_account_activated: 您的帐号已被激活。您现在可以登录了。
67 notice_account_activated: 您的帐号已被激活。您现在可以登录了。
68 notice_successful_create: 创建成功
68 notice_successful_create: 创建成功
69 notice_successful_update: 更新成功
69 notice_successful_update: 更新成功
70 notice_successful_delete: 删除成功
70 notice_successful_delete: 删除成功
71 notice_successful_connection: 连接成功
71 notice_successful_connection: 连接成功
72 notice_file_not_found: 您访问的页面不存在或已被删除。
72 notice_file_not_found: 您访问的页面不存在或已被删除。
73 notice_locking_conflict: 数据已被另一个用户更新
73 notice_locking_conflict: 数据已被另一个用户更新
74 notice_scm_error: 在版本库中不存在该条目或修订
74 notice_scm_error: 在版本库中不存在该条目或修订
75 notice_not_authorized: You are not authorized to access this page.
75 notice_not_authorized: You are not authorized to access this page.
76 notice_email_sent: An email was sent to %s
76 notice_email_sent: An email was sent to %s
77 notice_email_error: An error occurred while sending mail (%s)
77 notice_email_error: An error occurred while sending mail (%s)
78 notice_feeds_access_key_reseted: Your RSS access key was reseted.
78 notice_feeds_access_key_reseted: Your RSS access key was reseted.
79
79
80 mail_subject_lost_password: 您的redMine口令
80 mail_subject_lost_password: 您的redMine口令
81 mail_body_lost_password: 'To change your Redmine password, click on the following link:'
81 mail_body_lost_password: 'To change your Redmine password, click on the following link:'
82 mail_subject_register: redMine帐户激活
82 mail_subject_register: redMine帐户激活
83 mail_body_register: 'To activate your Redmine account, click on the following link:'
83 mail_body_register: 'To activate your Redmine account, click on the following link:'
84
84
85 gui_validation_error: 1 个错误
85 gui_validation_error: 1 个错误
86 gui_validation_error_plural: %d 个错误
86 gui_validation_error_plural: %d 个错误
87
87
88 field_name: 名称
88 field_name: 名称
89 field_description: 描述
89 field_description: 描述
90 field_summary: 摘要
90 field_summary: 摘要
91 field_is_required: 必填
91 field_is_required: 必填
92 field_firstname: 名字
92 field_firstname: 名字
93 field_lastname:
93 field_lastname:
94 field_mail: 邮件地址
94 field_mail: 邮件地址
95 field_filename: 文件
95 field_filename: 文件
96 field_filesize: 大小
96 field_filesize: 大小
97 field_downloads: 下载次数
97 field_downloads: 下载次数
98 field_author: 作者
98 field_author: 作者
99 field_created_on: 创建于
99 field_created_on: 创建于
100 field_updated_on: 更新于
100 field_updated_on: 更新于
101 field_field_format: 格式
101 field_field_format: 格式
102 field_is_for_all: 应用于所有项目
102 field_is_for_all: 应用于所有项目
103 field_possible_values: 可能的值
103 field_possible_values: 可能的值
104 field_regexp: 正则表达式
104 field_regexp: 正则表达式
105 field_min_length: 最小长度
105 field_min_length: 最小长度
106 field_max_length: 最大长度
106 field_max_length: 最大长度
107 field_value:
107 field_value:
108 field_category: 分类
108 field_category: 分类
109 field_title: 标题
109 field_title: 标题
110 field_project: 项目
110 field_project: 项目
111 field_issue: 任务
111 field_issue: 任务
112 field_status: 状态
112 field_status: 状态
113 field_notes: 说明
113 field_notes: 说明
114 field_is_closed: 已关闭的任务
114 field_is_closed: 已关闭的任务
115 field_is_default: 默认状态
115 field_is_default: 默认状态
116 field_tracker: 跟踪
116 field_tracker: 跟踪
117 field_subject: 主题
117 field_subject: 主题
118 field_due_date: 到期日
118 field_due_date: 到期日
119 field_assigned_to: 指派
119 field_assigned_to: 指派
120 field_priority: 优先级
120 field_priority: 优先级
121 field_fixed_version: 修订版本
121 field_fixed_version: 修订版本
122 field_user: 用户
122 field_user: 用户
123 field_role: 角色
123 field_role: 角色
124 field_homepage: 主页
124 field_homepage: 主页
125 field_is_public: 公开
125 field_is_public: 公开
126 field_parent: 上级项目
126 field_parent: 上级项目
127 field_is_in_chlog: 在更新日志中显示任务
127 field_is_in_chlog: 在更新日志中显示任务
128 field_is_in_roadmap: 在路线图中显示任务
128 field_is_in_roadmap: 在路线图中显示任务
129 field_login: 登录名
129 field_login: 登录名
130 field_mail_notification: 邮件通知
130 field_mail_notification: 邮件通知
131 field_admin: 管理员
131 field_admin: 管理员
132 field_last_login_on: 最后登录
132 field_last_login_on: 最后登录
133 field_language: 语言
133 field_language: 语言
134 field_effective_date: 日期
134 field_effective_date: 日期
135 field_password: 口令
135 field_password: 口令
136 field_new_password: 新口令
136 field_new_password: 新口令
137 field_password_confirmation: 确认
137 field_password_confirmation: 确认
138 field_version: 版本
138 field_version: 版本
139 field_type: 类别
139 field_type: 类别
140 field_host: 主机
140 field_host: 主机
141 field_port: 端口
141 field_port: 端口
142 field_account: 帐号
142 field_account: 帐号
143 field_base_dn: Base DN
143 field_base_dn: Base DN
144 field_attr_login: 登录名属性
144 field_attr_login: 登录名属性
145 field_attr_firstname: 名字属性
145 field_attr_firstname: 名字属性
146 field_attr_lastname: 姓属性
146 field_attr_lastname: 姓属性
147 field_attr_mail: 邮件属性
147 field_attr_mail: 邮件属性
148 field_onthefly: On-the-fly user creation
148 field_onthefly: On-the-fly user creation
149 field_start_date: 开始
149 field_start_date: 开始
150 field_done_ratio: %% 完成
150 field_done_ratio: %% 完成
151 field_auth_source: 认证模式
151 field_auth_source: 认证模式
152 field_hide_mail: 隐藏我的邮件
152 field_hide_mail: 隐藏我的邮件
153 field_comments: 注释
153 field_comments: 注释
154 field_url: URL
154 field_url: URL
155 field_start_page: 起始页
155 field_start_page: 起始页
156 field_subproject: 子项目
156 field_subproject: 子项目
157 field_hours: Hours
157 field_hours: Hours
158 field_activity: 活动
158 field_activity: 活动
159 field_spent_on: 日期
159 field_spent_on: 日期
160 field_identifier: Identifier
160 field_identifier: Identifier
161 field_is_filter: Used as a filter
161 field_is_filter: Used as a filter
162 field_issue_to_id: Related issue
162 field_issue_to_id: Related issue
163 field_delay: Delay
163 field_delay: Delay
164 field_assignable: Issues can be assigned to this role
164 field_assignable: Issues can be assigned to this role
165 field_redirect_existing_links: Redirect existing links
165 field_redirect_existing_links: Redirect existing links
166 field_estimated_hours: Estimated time
166 field_estimated_hours: Estimated time
167
167
168 setting_app_title: 应用程序标题
168 setting_app_title: 应用程序标题
169 setting_app_subtitle: 应用程序子标题
169 setting_app_subtitle: 应用程序子标题
170 setting_welcome_text: 欢迎文字
170 setting_welcome_text: 欢迎文字
171 setting_default_language: 默认语言
171 setting_default_language: 默认语言
172 setting_login_required: 要求认证
172 setting_login_required: 要求认证
173 setting_self_registration: 允许自注册
173 setting_self_registration: 允许自注册
174 setting_attachment_max_size: 附件最大尺寸
174 setting_attachment_max_size: 附件最大尺寸
175 setting_issues_export_limit: Issues export limit
175 setting_issues_export_limit: Issues export limit
176 setting_mail_from: Emission mail address
176 setting_mail_from: Emission mail address
177 setting_host_name: 主机名称
177 setting_host_name: 主机名称
178 setting_text_formatting: 文本格式
178 setting_text_formatting: 文本格式
179 setting_wiki_compression: Wiki history compression
179 setting_wiki_compression: Wiki history compression
180 setting_feeds_limit: Feed content limit
180 setting_feeds_limit: Feed content limit
181 setting_autofetch_changesets: Autofetch commits
181 setting_autofetch_changesets: Autofetch commits
182 setting_sys_api_enabled: Enable WS for repository management
182 setting_sys_api_enabled: Enable WS for repository management
183 setting_commit_ref_keywords: Referencing keywords
183 setting_commit_ref_keywords: Referencing keywords
184 setting_commit_fix_keywords: Fixing keywords
184 setting_commit_fix_keywords: Fixing keywords
185 setting_autologin: Autologin
185 setting_autologin: Autologin
186 setting_date_format: Date format
186 setting_date_format: Date format
187 setting_cross_project_issue_relations: Allow cross-project issue relations
187 setting_cross_project_issue_relations: Allow cross-project issue relations
188
188
189 label_user: 用户
189 label_user: 用户
190 label_user_plural: 用户列表
190 label_user_plural: 用户列表
191 label_user_new: 新建用户
191 label_user_new: 新建用户
192 label_project: 项目
192 label_project: 项目
193 label_project_new: 新建项目
193 label_project_new: 新建项目
194 label_project_plural: 项目列表
194 label_project_plural: 项目列表
195 label_project_all: All Projects
195 label_project_all: All Projects
196 label_project_latest: 最近的项目列表
196 label_project_latest: 最近的项目列表
197 label_issue: 任务
197 label_issue: 任务
198 label_issue_new: 新建任务
198 label_issue_new: 新建任务
199 label_issue_plural: 任务列表
199 label_issue_plural: 任务列表
200 label_issue_view_all: 查看所有任务
200 label_issue_view_all: 查看所有任务
201 label_document: 文档
201 label_document: 文档
202 label_document_new: 新建文档
202 label_document_new: 新建文档
203 label_document_plural: 文档列表
203 label_document_plural: 文档列表
204 label_role: 角色
204 label_role: 角色
205 label_role_plural: 角色列表
205 label_role_plural: 角色列表
206 label_role_new: 新建角色
206 label_role_new: 新建角色
207 label_role_and_permissions: 角色和权限
207 label_role_and_permissions: 角色和权限
208 label_member: 成员
208 label_member: 成员
209 label_member_new: 新建成员
209 label_member_new: 新建成员
210 label_member_plural: 成员列表
210 label_member_plural: 成员列表
211 label_tracker: 跟踪标签
211 label_tracker: 跟踪标签
212 label_tracker_plural: 跟踪标签列表
212 label_tracker_plural: 跟踪标签列表
213 label_tracker_new: 新建跟踪标签
213 label_tracker_new: 新建跟踪标签
214 label_workflow: 工作流
214 label_workflow: 工作流
215 label_issue_status: 任务状态列表
215 label_issue_status: 任务状态列表
216 label_issue_status_plural: 任务状态列表
216 label_issue_status_plural: 任务状态列表
217 label_issue_status_new: 新建任务状态列表
217 label_issue_status_new: 新建任务状态列表
218 label_issue_category: 任务类别
218 label_issue_category: 任务类别
219 label_issue_category_plural: 任务类别列表
219 label_issue_category_plural: 任务类别列表
220 label_issue_category_new: 新建任务类别
220 label_issue_category_new: 新建任务类别
221 label_custom_field: 自定义字段
221 label_custom_field: 自定义字段
222 label_custom_field_plural: 自定义字段列表
222 label_custom_field_plural: 自定义字段列表
223 label_custom_field_new: 新建自定义字段
223 label_custom_field_new: 新建自定义字段
224 label_enumerations: 枚举列表
224 label_enumerations: 枚举列表
225 label_enumeration_new: 新建枚举值
225 label_enumeration_new: 新建枚举值
226 label_information: 信息
226 label_information: 信息
227 label_information_plural: 信息
227 label_information_plural: 信息
228 label_please_login: 请登录
228 label_please_login: 请登录
229 label_register: 注册
229 label_register: 注册
230 label_password_lost: 忘记口令
230 label_password_lost: 忘记口令
231 label_home: 主页
231 label_home: 主页
232 label_my_page: 我的工作台
232 label_my_page: 我的工作台
233 label_my_account: 我的帐号
233 label_my_account: 我的帐号
234 label_my_projects: 我的项目列表
234 label_my_projects: 我的项目列表
235 label_administration: 管理
235 label_administration: 管理
236 label_login: 登录
236 label_login: 登录
237 label_logout: 退出
237 label_logout: 退出
238 label_help: 帮助
238 label_help: 帮助
239 label_reported_issues: 已报告的问题
239 label_reported_issues: 已报告的问题
240 label_assigned_to_me_issues: 分配给我的任务
240 label_assigned_to_me_issues: 分配给我的任务
241 label_last_login: 最后登录
241 label_last_login: 最后登录
242 label_last_updates: 最后更新
242 label_last_updates: 最后更新
243 label_last_updates_plural: %d 最后更新
243 label_last_updates_plural: %d 最后更新
244 label_registered_on: 注册于
244 label_registered_on: 注册于
245 label_activity: 活动
245 label_activity: 活动
246 label_new: 新建
246 label_new: 新建
247 label_logged_as: 登录为
247 label_logged_as: 登录为
248 label_environment: 环境
248 label_environment: 环境
249 label_authentication: 认证
249 label_authentication: 认证
250 label_auth_source: 认证模式
250 label_auth_source: 认证模式
251 label_auth_source_new: 新建认证模式
251 label_auth_source_new: 新建认证模式
252 label_auth_source_plural: 认证模式列表
252 label_auth_source_plural: 认证模式列表
253 label_subproject_plural: 子项目列表
253 label_subproject_plural: 子项目列表
254 label_min_max_length: 最小 - 最大 长度
254 label_min_max_length: 最小 - 最大 长度
255 label_list: list
255 label_list: list
256 label_date: Date
256 label_date: Date
257 label_integer: Integer
257 label_integer: Integer
258 label_boolean: Boolean
258 label_boolean: Boolean
259 label_string: Text
259 label_string: Text
260 label_text: Long text
260 label_text: Long text
261 label_attribute: 属性
261 label_attribute: 属性
262 label_attribute_plural: 属性
262 label_attribute_plural: 属性
263 label_download: %d 个下载次数
263 label_download: %d 个下载次数
264 label_download_plural: %d 个下载次数
264 label_download_plural: %d 个下载次数
265 label_no_data: 没有数据用于显示
265 label_no_data: 没有数据用于显示
266 label_change_status: 改变状态
266 label_change_status: 改变状态
267 label_history: 历史记录
267 label_history: 历史记录
268 label_attachment: 文件
268 label_attachment: 文件
269 label_attachment_new: 新建文件
269 label_attachment_new: 新建文件
270 label_attachment_delete: 删除文件
270 label_attachment_delete: 删除文件
271 label_attachment_plural: 文件列表
271 label_attachment_plural: 文件列表
272 label_report: 报表
272 label_report: 报表
273 label_report_plural: 报表列表
273 label_report_plural: 报表列表
274 label_news: 新闻
274 label_news: 新闻
275 label_news_new: 增加新闻
275 label_news_new: 增加新闻
276 label_news_plural: 新闻列表
276 label_news_plural: 新闻列表
277 label_news_latest: 最近的新闻
277 label_news_latest: 最近的新闻
278 label_news_view_all: 查看所有新闻
278 label_news_view_all: 查看所有新闻
279 label_change_log: 更新日志
279 label_change_log: 更新日志
280 label_settings: 配置
280 label_settings: 配置
281 label_overview: 概述
281 label_overview: 概述
282 label_version: 版本
282 label_version: 版本
283 label_version_new: 新建版本
283 label_version_new: 新建版本
284 label_version_plural: 版本列表
284 label_version_plural: 版本列表
285 label_confirmation: 确认
285 label_confirmation: 确认
286 label_export_to: 导出
286 label_export_to: 导出
287 label_read: 读取...
287 label_read: 读取...
288 label_public_projects: 公开的项目列表
288 label_public_projects: 公开的项目列表
289 label_open_issues: 打开
289 label_open_issues: 打开
290 label_open_issues_plural: 打开
290 label_open_issues_plural: 打开
291 label_closed_issues: 已关闭
291 label_closed_issues: 已关闭
292 label_closed_issues_plural: 已关闭
292 label_closed_issues_plural: 已关闭
293 label_total: 合计
293 label_total: 合计
294 label_permissions: 权限列表
294 label_permissions: 权限列表
295 label_current_status: 当前状态
295 label_current_status: 当前状态
296 label_new_statuses_allowed: New statuses allowed
296 label_new_statuses_allowed: New statuses allowed
297 label_all: 全部
297 label_all: 全部
298 label_none:
298 label_none:
299 label_next: 下一个
299 label_next: 下一个
300 label_previous: 上一个
300 label_previous: 上一个
301 label_used_by: 使用中
301 label_used_by: 使用中
302 label_details: 详情
302 label_details: 详情
303 label_add_note: 添加说明
303 label_add_note: 添加说明
304 label_per_page: 每面
304 label_per_page: 每面
305 label_calendar: 日历
305 label_calendar: 日历
306 label_months_from: months from
306 label_months_from: months from
307 label_gantt: 甘特图(Gantt)
307 label_gantt: 甘特图(Gantt)
308 label_internal: 内部
308 label_internal: 内部
309 label_last_changes: 最近的 %d 次更改
309 label_last_changes: 最近的 %d 次更改
310 label_change_view_all: 查看所有更改
310 label_change_view_all: 查看所有更改
311 label_personalize_page: 个性化定制本页
311 label_personalize_page: 个性化定制本页
312 label_comment: 注释
312 label_comment: 注释
313 label_comment_plural: 注释列表
313 label_comment_plural: 注释列表
314 label_comment_add: 添加注释
314 label_comment_add: 添加注释
315 label_comment_added: 已加入注释
315 label_comment_added: 已加入注释
316 label_comment_delete: 删除注释
316 label_comment_delete: 删除注释
317 label_query: 自定义查询
317 label_query: 自定义查询
318 label_query_plural: 自定义查询列表
318 label_query_plural: 自定义查询列表
319 label_query_new: 新建查询
319 label_query_new: 新建查询
320 label_filter_add: 增加过滤器
320 label_filter_add: 增加过滤器
321 label_filter_plural: 过滤器列表
321 label_filter_plural: 过滤器列表
322 label_equals: 等于
322 label_equals: 等于
323 label_not_equals: 不等于
323 label_not_equals: 不等于
324 label_in_less_than: 剩余天数小于
324 label_in_less_than: 剩余天数小于
325 label_in_more_than: 剩余天数大于
325 label_in_more_than: 剩余天数大于
326 label_in: 剩余天数
326 label_in: 剩余天数
327 label_today: 今天
327 label_today: 今天
328 label_this_week: this week
328 label_this_week: this week
329 label_less_than_ago: 之前天数少于
329 label_less_than_ago: 之前天数少于
330 label_more_than_ago: 之前天数大于
330 label_more_than_ago: 之前天数大于
331 label_ago: 之前天数
331 label_ago: 之前天数
332 label_contains: 包含
332 label_contains: 包含
333 label_not_contains: 不包含
333 label_not_contains: 不包含
334 label_day_plural: 天数
334 label_day_plural: 天数
335 label_repository: 版本库
335 label_repository: 版本库
336 label_browse: 浏览
336 label_browse: 浏览
337 label_modification: %d 个更新
337 label_modification: %d 个更新
338 label_modification_plural: %d 个更新
338 label_modification_plural: %d 个更新
339 label_revision: 修订
339 label_revision: 修订
340 label_revision_plural: 修订
340 label_revision_plural: 修订
341 label_added: 已增加
341 label_added: 已增加
342 label_modified: 已修改
342 label_modified: 已修改
343 label_deleted: 已删除
343 label_deleted: 已删除
344 label_latest_revision: 最近的版本
344 label_latest_revision: 最近的版本
345 label_latest_revision_plural: 最近的版本列表
345 label_latest_revision_plural: 最近的版本列表
346 label_view_revisions: 查看修订列表
346 label_view_revisions: 查看修订列表
347 label_max_size: 最大尺寸
347 label_max_size: 最大尺寸
348 label_on: 'on'
348 label_on: 'on'
349 label_sort_highest: 置顶
349 label_sort_highest: 置顶
350 label_sort_higher: 上移
350 label_sort_higher: 上移
351 label_sort_lower: 下移
351 label_sort_lower: 下移
352 label_sort_lowest: 置底
352 label_sort_lowest: 置底
353 label_roadmap: 路线图
353 label_roadmap: 路线图
354 label_roadmap_due_in: Due in
354 label_roadmap_due_in: Due in
355 label_roadmap_overdue: %s late
355 label_roadmap_overdue: %s late
356 label_roadmap_no_issues: 该版本没有任务
356 label_roadmap_no_issues: 该版本没有任务
357 label_search: 查找
357 label_search: 查找
358 label_result_plural: 个结果
358 label_result_plural: 个结果
359 label_all_words: 所有单词
359 label_all_words: 所有单词
360 label_wiki: Wiki
360 label_wiki: Wiki
361 label_wiki_edit: Wiki edit
361 label_wiki_edit: Wiki edit
362 label_wiki_edit_plural: Wiki edits
362 label_wiki_edit_plural: Wiki edits
363 label_wiki_page_plural: Wiki pages
363 label_wiki_page_plural: Wiki pages
364 label_index_by_title: 索引
364 label_index_by_title: 索引
365 label_index_by_date: Index by date
365 label_index_by_date: Index by date
366 label_current_version: 当前版本
366 label_current_version: 当前版本
367 label_preview: 预览
367 label_preview: 预览
368 label_feed_plural: Feeds
368 label_feed_plural: Feeds
369 label_changes_details: 所有更改的详情
369 label_changes_details: 所有更改的详情
370 label_issue_tracking: 任务跟踪
370 label_issue_tracking: 任务跟踪
371 label_spent_time: 耗时
371 label_spent_time: 耗时
372 label_f_hour: %.2f 小时
372 label_f_hour: %.2f 小时
373 label_f_hour_plural: %.2f 小时
373 label_f_hour_plural: %.2f 小时
374 label_time_tracking: 时间跟踪
374 label_time_tracking: 时间跟踪
375 label_change_plural: 更改列表
375 label_change_plural: 更改列表
376 label_statistics: 统计
376 label_statistics: 统计
377 label_commits_per_month: Commits per month
377 label_commits_per_month: Commits per month
378 label_commits_per_author: Commits per author
378 label_commits_per_author: Commits per author
379 label_view_diff: View differences
379 label_view_diff: View differences
380 label_diff_inline: inline
380 label_diff_inline: inline
381 label_diff_side_by_side: side by side
381 label_diff_side_by_side: side by side
382 label_options: Options
382 label_options: Options
383 label_copy_workflow_from: Copy workflow from
383 label_copy_workflow_from: Copy workflow from
384 label_permissions_report: Permissions report
384 label_permissions_report: Permissions report
385 label_watched_issues: Watched issues
385 label_watched_issues: Watched issues
386 label_related_issues: Related issues
386 label_related_issues: Related issues
387 label_applied_status: Applied status
387 label_applied_status: Applied status
388 label_loading: Loading...
388 label_loading: Loading...
389 label_relation_new: New relation
389 label_relation_new: New relation
390 label_relation_delete: Delete relation
390 label_relation_delete: Delete relation
391 label_relates_to: related to
391 label_relates_to: related to
392 label_duplicates: duplicates
392 label_duplicates: duplicates
393 label_blocks: blocks
393 label_blocks: blocks
394 label_blocked_by: blocked by
394 label_blocked_by: blocked by
395 label_precedes: precedes
395 label_precedes: precedes
396 label_follows: follows
396 label_follows: follows
397 label_end_to_start: end to start
397 label_end_to_start: end to start
398 label_end_to_end: end to end
398 label_end_to_end: end to end
399 label_start_to_start: start to start
399 label_start_to_start: start to start
400 label_start_to_end: start to end
400 label_start_to_end: start to end
401 label_stay_logged_in: Stay logged in
401 label_stay_logged_in: Stay logged in
402 label_disabled: disabled
402 label_disabled: disabled
403 label_show_completed_versions: Show completed versions
403 label_show_completed_versions: Show completed versions
404 label_me: me
404 label_me: me
405 label_board: Forum
405 label_board: Forum
406 label_board_new: New forum
406 label_board_new: New forum
407 label_board_plural: Forums
407 label_board_plural: Forums
408 label_topic_plural: Topics
408 label_topic_plural: Topics
409 label_message_plural: Messages
409 label_message_plural: Messages
410 label_message_last: Last message
410 label_message_last: Last message
411 label_message_new: New message
411 label_message_new: New message
412 label_reply_plural: Replies
412 label_reply_plural: Replies
413 label_send_information: Send account information to the user
413 label_send_information: Send account information to the user
414 label_year: Year
414 label_year: Year
415 label_month: Month
415 label_month: Month
416 label_week: Week
416 label_week: Week
417 label_date_from: From
417 label_date_from: From
418 label_date_to: To
418 label_date_to: To
419 label_language_based: Language based
419 label_language_based: Language based
420 label_sort_by: Sort by %s
420 label_sort_by: Sort by %s
421 label_send_test_email: Send a test email
421 label_send_test_email: Send a test email
422 label_feeds_access_key_created_on: RSS access key created %s ago
422 label_feeds_access_key_created_on: RSS access key created %s ago
423 label_module_plural: Modules
423 label_module_plural: Modules
424 label_added_time_by: Added by %s %s ago
424 label_added_time_by: Added by %s %s ago
425 label_updated_time: Updated %s ago
425 label_updated_time: Updated %s ago
426 label_jump_to_a_project: Jump to a project...
426 label_jump_to_a_project: Jump to a project...
427
427
428 button_login: 登录
428 button_login: 登录
429 button_submit: 提交
429 button_submit: 提交
430 button_save: 保存
430 button_save: 保存
431 button_check_all: 全选
431 button_check_all: 全选
432 button_uncheck_all: 清除
432 button_uncheck_all: 清除
433 button_delete: 删除
433 button_delete: 删除
434 button_create: 创建
434 button_create: 创建
435 button_test: 测试
435 button_test: 测试
436 button_edit: 编辑
436 button_edit: 编辑
437 button_add: 新增
437 button_add: 新增
438 button_change: 修改
438 button_change: 修改
439 button_apply: 应用
439 button_apply: 应用
440 button_clear: 清除
440 button_clear: 清除
441 button_lock: 锁定
441 button_lock: 锁定
442 button_unlock: 解锁
442 button_unlock: 解锁
443 button_download: 下载
443 button_download: 下载
444 button_list: 列表
444 button_list: 列表
445 button_view: 查看
445 button_view: 查看
446 button_move: 移动
446 button_move: 移动
447 button_back: 返回
447 button_back: 返回
448 button_cancel: 取消
448 button_cancel: 取消
449 button_activate: 激活
449 button_activate: 激活
450 button_sort: 排序
450 button_sort: 排序
451 button_log_time: 登记工时
451 button_log_time: 登记工时
452 button_rollback: Rollback to this version
452 button_rollback: Rollback to this version
453 button_watch: Watch
453 button_watch: Watch
454 button_unwatch: Unwatch
454 button_unwatch: Unwatch
455 button_reply: Reply
455 button_reply: Reply
456 button_archive: Archive
456 button_archive: Archive
457 button_unarchive: Unarchive
457 button_unarchive: Unarchive
458 button_reset: Reset
458 button_reset: Reset
459 button_rename: Rename
459 button_rename: Rename
460
460
461 status_active: 激活
461 status_active: 激活
462 status_registered: 已注册
462 status_registered: 已注册
463 status_locked: 已锁定
463 status_locked: 已锁定
464
464
465 text_select_mail_notifications: 选择需要发送邮件通知的动作。
465 text_select_mail_notifications: 选择需要发送邮件通知的动作。
466 text_regexp_info: eg. ^[A-Z0-9]+$
466 text_regexp_info: eg. ^[A-Z0-9]+$
467 text_min_max_length_info: 0 表示没有限制
467 text_min_max_length_info: 0 表示没有限制
468 text_project_destroy_confirmation: 您确信要删除这个项目以及所有相关的数据吗?
468 text_project_destroy_confirmation: 您确信要删除这个项目以及所有相关的数据吗?
469 text_workflow_edit: 选择一个角色和跟踪标签来编辑这个工作流
469 text_workflow_edit: 选择一个角色和跟踪标签来编辑这个工作流
470 text_are_you_sure: 您确定?
470 text_are_you_sure: 您确定?
471 text_journal_changed: 从 %s 更改为 %s
471 text_journal_changed: 从 %s 更改为 %s
472 text_journal_set_to: 设置为 %s
472 text_journal_set_to: 设置为 %s
473 text_journal_deleted: 已删除
473 text_journal_deleted: 已删除
474 text_tip_task_begin_day: 开始于此
474 text_tip_task_begin_day: 开始于此
475 text_tip_task_end_day: 在此结束
475 text_tip_task_end_day: 在此结束
476 text_tip_task_begin_end_day: 开始并结束于此
476 text_tip_task_begin_end_day: 开始并结束于此
477 text_project_identifier_info: 'Lower case letters (a-z), numbers and dashes allowed.<br />Once saved, the identifier can not be changed.'
477 text_project_identifier_info: 'Lower case letters (a-z), numbers and dashes allowed.<br />Once saved, the identifier can not be changed.'
478 text_caracters_maximum: %d characters maximum.
478 text_caracters_maximum: %d characters maximum.
479 text_length_between: Length between %d and %d characters.
479 text_length_between: Length between %d and %d characters.
480 text_tracker_no_workflow: No workflow defined for this tracker
480 text_tracker_no_workflow: No workflow defined for this tracker
481 text_unallowed_characters: Unallowed characters
481 text_unallowed_characters: Unallowed characters
482 text_comma_separated: Multiple values allowed (comma separated).
482 text_comma_separated: Multiple values allowed (comma separated).
483 text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages
483 text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages
484 text_issue_added: %s ѱ
484 text_issue_added: %s ѱ
485 text_issue_updated: %s Ѹ
485 text_issue_updated: %s Ѹ
486 text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all its content ?
486 text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all its content ?
487 text_issue_category_destroy_question: Some issues (%d) are assigned to this category. What do you want to do ?
487 text_issue_category_destroy_question: Some issues (%d) are assigned to this category. What do you want to do ?
488 text_issue_category_destroy_assignments: Remove category assignments
488 text_issue_category_destroy_assignments: Remove category assignments
489 text_issue_category_reassign_to: Reassing issues to this category
489 text_issue_category_reassign_to: Reassing issues to this category
490
490
491 default_role_manager: 管理员
491 default_role_manager: 管理员
492 default_role_developper: 开发人员
492 default_role_developper: 开发人员
493 default_role_reporter: 报告人员
493 default_role_reporter: 报告人员
494 default_tracker_bug: 问题
494 default_tracker_bug: 问题
495 default_tracker_feature: 功能
495 default_tracker_feature: 功能
496 default_tracker_support: 支持
496 default_tracker_support: 支持
497 default_issue_status_new: 新建
497 default_issue_status_new: 新建
498 default_issue_status_assigned: 已分配
498 default_issue_status_assigned: 已分配
499 default_issue_status_resolved: 已解决
499 default_issue_status_resolved: 已解决
500 default_issue_status_feedback: 回复
500 default_issue_status_feedback: 回复
501 default_issue_status_closed: 已关闭
501 default_issue_status_closed: 已关闭
502 default_issue_status_rejected: 已打回
502 default_issue_status_rejected: 已打回
503 default_doc_category_user: 用户文档
503 default_doc_category_user: 用户文档
504 default_doc_category_tech: 技术文档
504 default_doc_category_tech: 技术文档
505 default_priority_low:
505 default_priority_low:
506 default_priority_normal: 普通
506 default_priority_normal: 普通
507 default_priority_high:
507 default_priority_high:
508 default_priority_urgent: 紧急
508 default_priority_urgent: 紧急
509 default_priority_immediate: 立刻
509 default_priority_immediate: 立刻
510 default_activity_design: 设计
510 default_activity_design: 设计
511 default_activity_development: 开发
511 default_activity_development: 开发
512
512
513 enumeration_issue_priorities: 任务优先级
513 enumeration_issue_priorities: 任务优先级
514 enumeration_doc_categories: 文档类别
514 enumeration_doc_categories: 文档类别
515 enumeration_activities: Activities (time tracking)
515 enumeration_activities: Activities (time tracking)
516 label_wiki_page: Wiki page
516 label_wiki_page: Wiki page
517 label_file_plural: Files
517 label_file_plural: Files
518 label_changeset_plural: Changesets
518 label_changeset_plural: Changesets
519 field_column_names: Columns
519 field_column_names: Columns
520 label_default_columns: Default columns
520 label_default_columns: Default columns
521 setting_issue_list_default_columns: Default columns displayed on the issue list
521 setting_issue_list_default_columns: Default columns displayed on the issue list
522 setting_repositories_encodings: Repositories encodings
522 setting_repositories_encodings: Repositories encodings
523 notice_no_issue_selected: "No issue is selected! Please, check the issues you want to edit."
523 notice_no_issue_selected: "No issue is selected! Please, check the issues you want to edit."
524 label_bulk_edit_selected_issues: Bulk edit selected issues
524 label_bulk_edit_selected_issues: Bulk edit selected issues
525 label_no_change_option: (No change)
525 label_no_change_option: (No change)
526 notice_failed_to_save_issues: "Failed to save %d issue(s) on %d selected: %s."
526 notice_failed_to_save_issues: "Failed to save %d issue(s) on %d selected: %s."
527 label_theme: Theme
527 label_theme: Theme
528 label_default: Default
528 label_default: Default
529 label_search_titles_only: Search titles only
529 label_search_titles_only: Search titles only
530 label_nobody: nobody
530 label_nobody: nobody
531 button_change_password: Change password
531 button_change_password: Change password
532 text_user_mail_option: "For unselected projects, you will only receive notifications about things you watch or you're involved in (eg. issues you're the author or assignee)."
532 text_user_mail_option: "For unselected projects, you will only receive notifications about things you watch or you're involved in (eg. issues you're the author or assignee)."
533 label_user_mail_option_selected: "For any event on the selected projects only..."
533 label_user_mail_option_selected: "For any event on the selected projects only..."
534 label_user_mail_option_all: "For any event on all my projects"
534 label_user_mail_option_all: "For any event on all my projects"
535 label_user_mail_option_none: "Only for things I watch or I'm involved in"
535 label_user_mail_option_none: "Only for things I watch or I'm involved in"
536 setting_emails_footer: Emails footer
536 setting_emails_footer: Emails footer
537 label_float: Float
537 label_float: Float
538 button_copy: Copy
538 button_copy: Copy
539 mail_body_account_information_external: You can use your "%s" account to log into Redmine.
539 mail_body_account_information_external: You can use your "%s" account to log into Redmine.
540 mail_body_account_information: Your Redmine account information
540 mail_body_account_information: Your Redmine account information
541 setting_protocol: Protocol
541 setting_protocol: Protocol
542 label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself"
542 label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself"
543 setting_time_format: Time format
543 setting_time_format: Time format
544 label_registration_activation_by_email: account activation by email
544 label_registration_activation_by_email: account activation by email
545 mail_subject_account_activation_request: Redmine account activation request
545 mail_subject_account_activation_request: Redmine account activation request
546 mail_body_account_activation_request: 'A new user (%s) has registered. His account his pending your approval:'
546 mail_body_account_activation_request: 'A new user (%s) has registered. His account his pending your approval:'
547 label_registration_automatic_activation: automatic account activation
547 label_registration_automatic_activation: automatic account activation
548 label_registration_manual_activation: manual account activation
548 label_registration_manual_activation: manual account activation
549 notice_account_pending: "Your account was created and is now pending administrator approval."
549 notice_account_pending: "Your account was created and is now pending administrator approval."
550 field_time_zone: Time zone
550 field_time_zone: Time zone
551 text_caracters_minimum: Must be at least %d characters long.
551 text_caracters_minimum: Must be at least %d characters long.
552 setting_bcc_recipients: Blind carbon copy recipients (bcc)
552 setting_bcc_recipients: Blind carbon copy recipients (bcc)
553 button_annotate: Annotate
553 button_annotate: Annotate
554 label_issues_by: Issues by %s
554 label_issues_by: Issues by %s
General Comments 0
You need to be logged in to leave comments. Login now