##// END OF EJS Templates
Traditional Chinese "label_total_time" translation changed by ChunChang Lo (#13528)...
Toshi MARUYAMA -
r11438:75050f767a6d
parent child
Show More
@@ -1,1170 +1,1170
1 1 # Chinese (Taiwan) translations for Ruby on Rails
2 2 # by tsechingho (http://github.com/tsechingho)
3 3 # See http://github.com/svenfuchs/rails-i18n/ for details.
4 4
5 5 "zh-TW":
6 6 direction: ltr
7 7 date:
8 8 formats:
9 9 # Use the strftime parameters for formats.
10 10 # When no format has been given, it uses default.
11 11 # You can provide other formats here if you like!
12 12 default: "%Y-%m-%d"
13 13 short: "%b%d日"
14 14 long: "%Y年%b%d日"
15 15
16 16 day_names: [星期日, 星期一, 星期二, 星期三, 星期四, 星期五, 星期六]
17 17 abbr_day_names: [, , , , , , ]
18 18
19 19 # Don't forget the nil at the beginning; there's no such thing as a 0th month
20 20 month_names: [~, 一月, 二月, 三月, 四月, 五月, 六月, 七月, 八月, 九月, 十月, 十一月, 十二月]
21 21 abbr_month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月]
22 22 # 使用於 date_select 與 datime_select.
23 23 order:
24 24 - :year
25 25 - :month
26 26 - :day
27 27
28 28 time:
29 29 formats:
30 30 default: "%Y年%b%d日 %A %H:%M:%S %Z"
31 31 time: "%H:%M"
32 32 short: "%b%d日 %H:%M"
33 33 long: "%Y年%b%d日 %H:%M"
34 34 am: "AM"
35 35 pm: "PM"
36 36
37 37 # 使用於 array.to_sentence.
38 38 support:
39 39 array:
40 40 words_connector: ", "
41 41 two_words_connector: " "
42 42 last_word_connector: ", "
43 43 sentence_connector: "且"
44 44 skip_last_comma: false
45 45
46 46 number:
47 47 # 使用於 number_with_delimiter()
48 48 # 同時也是 'currency', 'percentage', 'precision', 與 'human' 的預設值
49 49 format:
50 50 # 設定小數點分隔字元,以使用更高的準確度 (例如: 1.0 / 2.0 == 0.5)
51 51 separator: "."
52 52 # 千分位符號 (例如:一百萬是 1,000,000) (均以三個位數來分組)
53 53 delimiter: ","
54 54 # 小數點分隔字元後之精確位數 (數字 1 搭配 2 位精確位數為: 1.00)
55 55 precision: 3
56 56
57 57 # 使用於 number_to_currency()
58 58 currency:
59 59 format:
60 60 # 貨幣符號的位置? %u 是貨幣符號, %n 是數值 (預設值: $5.00)
61 61 format: "%u%n"
62 62 unit: "NT$"
63 63 # 下列三個選項設定, 若有設定值將會取代 number.format 成為預設值
64 64 separator: "."
65 65 delimiter: ","
66 66 precision: 2
67 67
68 68 # 使用於 number_to_percentage()
69 69 percentage:
70 70 format:
71 71 # 下列三個選項設定, 若有設定值將會取代 number.format 成為預設值
72 72 # separator:
73 73 delimiter: ""
74 74 # precision:
75 75
76 76 # 使用於 number_to_precision()
77 77 precision:
78 78 format:
79 79 # 下列三個選項設定, 若有設定值將會取代 number.format 成為預設值
80 80 # separator:
81 81 delimiter: ""
82 82 # precision:
83 83
84 84 # 使用於 number_to_human_size()
85 85 human:
86 86 format:
87 87 # 下列三個選項設定, 若有設定值將會取代 number.format 成為預設值
88 88 # separator:
89 89 delimiter: ""
90 90 precision: 3
91 91 # 儲存單位輸出格式.
92 92 # %u 是儲存單位, %n 是數值 (預設值: 2 MB)
93 93 storage_units:
94 94 format: "%n %u"
95 95 units:
96 96 byte:
97 97 one: "位元組 (B)"
98 98 other: "位元組 (B)"
99 99 kb: "KB"
100 100 mb: "MB"
101 101 gb: "GB"
102 102 tb: "TB"
103 103
104 104 # 使用於 distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words()
105 105 datetime:
106 106 distance_in_words:
107 107 half_a_minute: "半分鐘"
108 108 less_than_x_seconds:
109 109 one: "小於 1 秒"
110 110 other: "小於 %{count} 秒"
111 111 x_seconds:
112 112 one: "1 秒"
113 113 other: "%{count} 秒"
114 114 less_than_x_minutes:
115 115 one: "小於 1 分鐘"
116 116 other: "小於 %{count} 分鐘"
117 117 x_minutes:
118 118 one: "1 分鐘"
119 119 other: "%{count} 分鐘"
120 120 about_x_hours:
121 121 one: "約 1 小時"
122 122 other: "約 %{count} 小時"
123 123 x_hours:
124 124 one: "1 hour"
125 125 other: "%{count} hours"
126 126 x_days:
127 127 one: "1 天"
128 128 other: "%{count} 天"
129 129 about_x_months:
130 130 one: "約 1 個月"
131 131 other: "約 %{count} 個月"
132 132 x_months:
133 133 one: "1 個月"
134 134 other: "%{count} 個月"
135 135 about_x_years:
136 136 one: "約 1 年"
137 137 other: "約 %{count} 年"
138 138 over_x_years:
139 139 one: "超過 1 年"
140 140 other: "超過 %{count} 年"
141 141 almost_x_years:
142 142 one: "將近 1 年"
143 143 other: "將近 %{count} 年"
144 144 prompts:
145 145 year: "年"
146 146 month: "月"
147 147 day: "日"
148 148 hour: "時"
149 149 minute: "分"
150 150 second: "秒"
151 151
152 152 activerecord:
153 153 errors:
154 154 template:
155 155 header:
156 156 one: "有 1 個錯誤發生使得「%{model}」無法被儲存。"
157 157 other: "有 %{count} 個錯誤發生使得「%{model}」無法被儲存。"
158 158 # The variable :count is also available
159 159 body: "下面所列欄位有問題:"
160 160 # The values :model, :attribute and :value are always available for interpolation
161 161 # The value :count is available when applicable. Can be used for pluralization.
162 162 messages:
163 163 inclusion: "沒有包含在列表中"
164 164 exclusion: "是被保留的"
165 165 invalid: "是無效的"
166 166 confirmation: "不符合確認值"
167 167 accepted: "必须是可被接受的"
168 168 empty: "不能留空"
169 169 blank: "不能是空白字元"
170 170 too_long: "過長(最長是 %{count} 個字)"
171 171 too_short: "過短(最短是 %{count} 個字)"
172 172 wrong_length: "字數錯誤(必須是 %{count} 個字)"
173 173 taken: "已經被使用"
174 174 not_a_number: "不是數字"
175 175 greater_than: "必須大於 %{count}"
176 176 greater_than_or_equal_to: "必須大於或等於 %{count}"
177 177 equal_to: "必須等於 %{count}"
178 178 less_than: "必須小於 %{count}"
179 179 less_than_or_equal_to: "必須小於或等於 %{count}"
180 180 odd: "必須是奇數"
181 181 even: "必須是偶數"
182 182 # Append your own errors here or at the model/attributes scope.
183 183 greater_than_start_date: "必須在開始日期之後"
184 184 not_same_project: "不屬於同一個專案"
185 185 circular_dependency: "這個關聯會導致環狀相依"
186 186 cant_link_an_issue_with_a_descendant: "問題無法被連結至自己的子任務"
187 187
188 188 # You can define own errors for models or model attributes.
189 189 # The values :model, :attribute and :value are always available for interpolation.
190 190 #
191 191 # For example,
192 192 # models:
193 193 # user:
194 194 # blank: "This is a custom blank message for %{model}: %{attribute}"
195 195 # attributes:
196 196 # login:
197 197 # blank: "This is a custom blank message for User login"
198 198 # Will define custom blank validation message for User model and
199 199 # custom blank validation message for login attribute of User model.
200 200 #models:
201 201
202 202 # Translate model names. Used in Model.human_name().
203 203 #models:
204 204 # For example,
205 205 # user: "Dude"
206 206 # will translate User model name to "Dude"
207 207
208 208 # Translate model attribute names. Used in Model.human_attribute_name(attribute).
209 209 #attributes:
210 210 # For example,
211 211 # user:
212 212 # login: "Handle"
213 213 # will translate User attribute "login" as "Handle"
214 214
215 215 actionview_instancetag_blank_option: 請選擇
216 216
217 217 general_text_No: '否'
218 218 general_text_Yes: '是'
219 219 general_text_no: '否'
220 220 general_text_yes: '是'
221 221 general_lang_name: 'Traditional Chinese (繁體中文)'
222 222 general_csv_separator: ','
223 223 general_csv_decimal_separator: '.'
224 224 general_csv_encoding: Big5
225 225 general_pdf_encoding: Big5
226 226 general_first_day_of_week: '7'
227 227
228 228 notice_account_updated: 帳戶更新資訊已儲存
229 229 notice_account_invalid_creditentials: 帳戶或密碼不正確
230 230 notice_account_password_updated: 帳戶新密碼已儲存
231 231 notice_account_wrong_password: 密碼不正確
232 232 notice_account_register_done: 帳號已建立成功。欲啟用您的帳號,請點擊系統確認信函中的啟用連結。
233 233 notice_account_unknown_email: 未知的使用者
234 234 notice_can_t_change_password: 這個帳號使用外部認證方式,無法變更其密碼。
235 235 notice_account_lost_email_sent: 包含選擇新密碼指示的電子郵件,已經寄出給您。
236 236 notice_account_activated: 您的帳號已經啟用,可用它登入系統。
237 237 notice_successful_create: 建立成功
238 238 notice_successful_update: 更新成功
239 239 notice_successful_delete: 刪除成功
240 240 notice_successful_connection: 連線成功
241 241 notice_file_not_found: 您想要存取的頁面已經不存在或被搬移至其他位置。
242 242 notice_locking_conflict: 資料已被其他使用者更新。
243 243 notice_not_authorized: 你未被授權存取此頁面。
244 244 notice_not_authorized_archived_project: 您欲存取的專案已經被封存。
245 245 notice_email_sent: "郵件已經成功寄送至以下收件者: %{value}"
246 246 notice_email_error: "寄送郵件的過程中發生錯誤 (%{value})"
247 247 notice_feeds_access_key_reseted: 您的 Atom 存取金鑰已被重新設定。
248 248 notice_api_access_key_reseted: 您的 API 存取金鑰已被重新設定。
249 249 notice_failed_to_save_issues: "無法儲存 %{count} 問題到下列所選取的 %{total} 個項目中: %{ids}。"
250 250 notice_failed_to_save_time_entries: "無法儲存 %{count} 個工時到下列所選取的 %{total} 個項目中: %{ids}。"
251 251 notice_failed_to_save_members: "成員儲存失敗: %{errors}."
252 252 notice_no_issue_selected: "未選擇任何問題!請勾選您想要編輯的問題。"
253 253 notice_account_pending: "您的帳號已經建立,正在等待管理員的審核。"
254 254 notice_default_data_loaded: 預設組態已載入成功。
255 255 notice_unable_delete_version: 無法刪除版本。
256 256 notice_unable_delete_time_entry: 無法刪除工時記錄項目。
257 257 notice_issue_done_ratios_updated: 問題完成百分比已更新。
258 258 notice_gantt_chart_truncated: "由於項目數量超過可顯示數量的最大值 (%{max}),故此甘特圖尾部已被截斷"
259 259 notice_issue_successful_create: "問題 %{id} 已建立。"
260 260 notice_issue_update_conflict: "當您正在編輯這個問題的時候,它已經被其他人搶先一步更新過。"
261 261 notice_account_deleted: "您的帳戶已被永久刪除。"
262 262 notice_user_successful_create: "已建立用戶 %{id}。"
263 263
264 264 error_can_t_load_default_data: "無法載入預設組態: %{value}"
265 265 error_scm_not_found: "在儲存機制中找不到這個項目或修訂版。"
266 266 error_scm_command_failed: "嘗試存取儲存機制時發生錯誤: %{value}"
267 267 error_scm_annotate: "項目不存在或項目無法被加上附註。"
268 268 error_scm_annotate_big_text_file: 此項目無法被標註,因為它已經超過最大的文字檔大小。
269 269 error_issue_not_found_in_project: '該問題不存在或不屬於此專案'
270 270 error_no_tracker_in_project: '此專案尚未指定追蹤標籤。請檢查專案的設定資訊。'
271 271 error_no_default_issue_status: '尚未定義問題狀態的預設值。請您前往「網站管理」->「問題狀態清單」頁面,檢查相關組態設定。'
272 272 error_can_not_delete_custom_field: 無法刪除自訂欄位
273 273 error_can_not_delete_tracker: "此追蹤標籤已包含問題,無法被刪除。"
274 274 error_can_not_remove_role: "此角色已被使用,無法將其刪除。"
275 275 error_can_not_reopen_issue_on_closed_version: '指派給「已結束」版本的問題,無法再將其狀態變更為「進行中」'
276 276 error_can_not_archive_project: 此專案無法被封存
277 277 error_issue_done_ratios_not_updated: "問題完成百分比未更新。"
278 278 error_workflow_copy_source: '請選擇一個來源問題追蹤標籤或角色'
279 279 error_workflow_copy_target: '請選擇一個(或多個)目的問題追蹤標籤或角色'
280 280 error_unable_delete_issue_status: '無法刪除問題狀態'
281 281 error_unable_to_connect: "無法連線至(%{value})"
282 282 error_attachment_too_big: "這個檔案無法被上傳,因為它已經超過最大的檔案大小 (%{max_size})"
283 283 error_session_expired: "您的工作階段已經過期。請重新登入。"
284 284 warning_attachments_not_saved: "%{count} 個附加檔案無法被儲存。"
285 285
286 286 mail_subject_lost_password: 您的 Redmine 網站密碼
287 287 mail_body_lost_password: '欲變更您的 Redmine 網站密碼, 請點選以下鏈結:'
288 288 mail_subject_register: 啟用您的 Redmine 帳號
289 289 mail_body_register: '欲啟用您的 Redmine 帳號, 請點選以下鏈結:'
290 290 mail_body_account_information_external: "您可以使用 %{value} 帳號登入 Redmine 網站。"
291 291 mail_body_account_information: 您的 Redmine 帳號資訊
292 292 mail_subject_account_activation_request: Redmine 帳號啟用需求通知
293 293 mail_body_account_activation_request: "有位新用戶 (%{value}) 已經完成註冊,正等候您的審核:"
294 294 mail_subject_reminder: "您有 %{count} 個問題即將到期 (%{days})"
295 295 mail_body_reminder: "%{count} 個指派給您的問題,將於 %{days} 天之內到期:"
296 296 mail_subject_wiki_content_added: "'%{id}' wiki 頁面已被新增"
297 297 mail_body_wiki_content_added: "此 '%{id}' wiki 頁面已被 %{author} 新增。"
298 298 mail_subject_wiki_content_updated: "'%{id}' wiki 頁面已被更新"
299 299 mail_body_wiki_content_updated: "此 '%{id}' wiki 頁面已被 %{author} 更新。"
300 300
301 301
302 302 field_name: 名稱
303 303 field_description: 概述
304 304 field_summary: 摘要
305 305 field_is_required: 必填
306 306 field_firstname: 名字
307 307 field_lastname: 姓氏
308 308 field_mail: 電子郵件
309 309 field_filename: 檔案名稱
310 310 field_filesize: 大小
311 311 field_downloads: 下載次數
312 312 field_author: 作者
313 313 field_created_on: 建立日期
314 314 field_updated_on: 更新日期
315 315 field_closed_on: 結束日期
316 316 field_field_format: 格式
317 317 field_is_for_all: 給全部的專案
318 318 field_possible_values: 可能值
319 319 field_regexp: 正規表示式
320 320 field_min_length: 最小長度
321 321 field_max_length: 最大長度
322 322 field_value:
323 323 field_category: 分類
324 324 field_title: 標題
325 325 field_project: 專案
326 326 field_issue: 問題
327 327 field_status: 狀態
328 328 field_notes: 筆記
329 329 field_is_closed: 問題已結束
330 330 field_is_default: 預設值
331 331 field_tracker: 追蹤標籤
332 332 field_subject: 主旨
333 333 field_due_date: 完成日期
334 334 field_assigned_to: 分派給
335 335 field_priority: 優先權
336 336 field_fixed_version: 版本
337 337 field_user: 用戶
338 338 field_principal: 原則
339 339 field_role: 角色
340 340 field_homepage: 網站首頁
341 341 field_is_public: 公開
342 342 field_parent: 父專案
343 343 field_is_in_roadmap: 問題顯示於版本藍圖中
344 344 field_login: 帳戶名稱
345 345 field_mail_notification: 電子郵件提醒選項
346 346 field_admin: 管理者
347 347 field_last_login_on: 最近連線日期
348 348 field_language: 語系
349 349 field_effective_date: 日期
350 350 field_password: 目前密碼
351 351 field_new_password: 新密碼
352 352 field_password_confirmation: 確認新密碼
353 353 field_version: 版本
354 354 field_type: Type
355 355 field_host: Host
356 356 field_port: 連接埠
357 357 field_account: 帳戶
358 358 field_base_dn: Base DN
359 359 field_attr_login: 登入屬性
360 360 field_attr_firstname: 名字屬性
361 361 field_attr_lastname: 姓氏屬性
362 362 field_attr_mail: 電子郵件信箱屬性
363 363 field_onthefly: 即時建立使用者
364 364 field_start_date: 開始日期
365 365 field_done_ratio: 完成百分比
366 366 field_auth_source: 認證模式
367 367 field_hide_mail: 隱藏我的電子郵件
368 368 field_comments: 回應
369 369 field_url: 網址
370 370 field_start_page: 首頁
371 371 field_subproject: 子專案
372 372 field_hours: 小時
373 373 field_activity: 活動
374 374 field_spent_on: 日期
375 375 field_identifier: 代碼
376 376 field_is_filter: 用來作為過濾器
377 377 field_issue_to: 相關問題
378 378 field_delay: 逾期
379 379 field_assignable: 問題可被分派至此角色
380 380 field_redirect_existing_links: 重新導向現有連結
381 381 field_estimated_hours: 預估工時
382 382 field_column_names: 欄位
383 383 field_time_entries: 耗用工時
384 384 field_time_zone: 時區
385 385 field_searchable: 可用做搜尋條件
386 386 field_default_value: 預設值
387 387 field_comments_sorting: 回應排序
388 388 field_parent_title: 父頁面
389 389 field_editable: 可編輯
390 390 field_watcher: 觀察者
391 391 field_identity_url: OpenID 網址
392 392 field_content: 內容
393 393 field_group_by: 結果分組方式
394 394 field_sharing: 共用
395 395 field_parent_issue: 父問題
396 396 field_member_of_group: "被指派者的群組"
397 397 field_assigned_to_role: "被指派者的角色"
398 398 field_text: 內容文字
399 399 field_visible: 可被看見
400 400 field_warn_on_leaving_unsaved: "提醒我將要離開的頁面中尚有未儲存的資料"
401 401 field_issues_visibility: 問題可見度
402 402 field_is_private: 私人
403 403 field_commit_logs_encoding: 認可訊息編碼
404 404 field_scm_path_encoding: 路徑編碼
405 405 field_path_to_repository: 儲存機制路徑
406 406 field_root_directory: 根資料夾
407 407 field_cvsroot: CVSROOT
408 408 field_cvs_module: 模組
409 409 field_repository_is_default: 主要儲存機制
410 410 field_multiple: 多重值
411 411 field_auth_source_ldap_filter: LDAP 篩選器
412 412 field_core_fields: 標準欄位
413 413 field_timeout: "逾時 (單位: 秒)"
414 414 field_board_parent: 父論壇
415 415 field_private_notes: 私人筆記
416 416 field_inherit_members: 繼承父專案成員
417 417 field_generate_password: 產生密碼
418 418
419 419 setting_app_title: 標題
420 420 setting_app_subtitle: 副標題
421 421 setting_welcome_text: 歡迎詞
422 422 setting_default_language: 預設語系
423 423 setting_login_required: 需要驗證
424 424 setting_self_registration: 註冊選項
425 425 setting_attachment_max_size: 附件大小限制
426 426 setting_issues_export_limit: 問題匯出限制
427 427 setting_mail_from: 寄件者電子郵件
428 428 setting_bcc_recipients: 使用密件副本 (BCC)
429 429 setting_plain_text_mail: 純文字郵件 (不含 HTML)
430 430 setting_host_name: 主機名稱
431 431 setting_text_formatting: 文字格式
432 432 setting_wiki_compression: 壓縮 Wiki 歷史文章
433 433 setting_feeds_limit: Atom 新聞限制
434 434 setting_autofetch_changesets: 自動擷取認可
435 435 setting_default_projects_public: 新建立之專案預設為「公開」
436 436 setting_sys_api_enabled: 啟用管理儲存機制的網頁服務 (Web Service)
437 437 setting_commit_ref_keywords: 認可用於參照之關鍵字
438 438 setting_commit_fix_keywords: 認可用於修正之關鍵字
439 439 setting_autologin: 自動登入
440 440 setting_date_format: 日期格式
441 441 setting_time_format: 時間格式
442 442 setting_cross_project_issue_relations: 允許關聯至其它專案的問題
443 443 setting_cross_project_subtasks: 允許跨專案的子任務
444 444 setting_issue_list_default_columns: 預設顯示於問題清單的欄位
445 445 setting_repositories_encodings: 附加檔案與儲存機制的編碼
446 446 setting_emails_header: 電子郵件前頭說明
447 447 setting_emails_footer: 電子郵件附帶說明
448 448 setting_protocol: 協定
449 449 setting_per_page_options: 每頁顯示個數選項
450 450 setting_user_format: 使用者顯示格式
451 451 setting_activity_days_default: 專案活動顯示天數
452 452 setting_display_subprojects_issues: 預設於父專案中顯示子專案的問題
453 453 setting_enabled_scm: 啟用的 SCM
454 454 setting_mail_handler_body_delimiters: "截去郵件中包含下列值之後的內容"
455 455 setting_mail_handler_api_enabled: 啟用處理傳入電子郵件的服務
456 456 setting_mail_handler_api_key: API 金鑰
457 457 setting_sequential_project_identifiers: 循序產生專案識別碼
458 458 setting_gravatar_enabled: 啟用 Gravatar 全球認證大頭像
459 459 setting_gravatar_default: 預設全球認證大頭像圖片
460 460 setting_diff_max_lines_displayed: 差異顯示行數之最大值
461 461 setting_file_max_size_displayed: 檔案內容顯示大小之最大值
462 462 setting_repository_log_display_limit: 修訂版顯示數目之最大值
463 463 setting_openid: 允許使用 OpenID 登入與註冊
464 464 setting_password_min_length: 密碼最小長度
465 465 setting_new_project_user_role_id: 管理者以外之用戶建立新專案時,將被指派的角色
466 466 setting_default_projects_modules: 新專案預設啟用的模組
467 467 setting_issue_done_ratio: 計算問題完成百分比之方式
468 468 setting_issue_done_ratio_issue_field: 依據問題完成百分比欄位
469 469 setting_issue_done_ratio_issue_status: 依據問題狀態
470 470 setting_start_of_week: 週的第一天
471 471 setting_rest_api_enabled: 啟用 REST 網路服務技術(Web Service)
472 472 setting_cache_formatted_text: 快取已格式化文字
473 473 setting_default_notification_option: 預設通知選項
474 474 setting_commit_logtime_enabled: 啟用認可中的時間記錄
475 475 setting_commit_logtime_activity_id: 時間記錄對應的活動
476 476 setting_gantt_items_limit: 甘特圖中項目顯示數量的最大值
477 477 setting_issue_group_assignment: 允許問題被指派至群組
478 478 setting_default_issue_start_date_to_creation_date: 設定新問題的起始日期為今天的日期
479 479 setting_commit_cross_project_ref: 允許關聯並修正其他專案的問題
480 480 setting_unsubscribe: 允許用戶取消註冊(刪除帳戶)
481 481 setting_session_lifetime: 工作階段存留時間最大值
482 482 setting_session_timeout: 工作階段無活動逾時時間
483 483 setting_thumbnails_enabled: 顯示附加檔案的縮圖
484 484 setting_thumbnails_size: "縮圖大小 (單位: 像素 pixels)"
485 485 setting_non_working_week_days: 非工作日
486 486 setting_jsonp_enabled: 啟用 JSONP 支援
487 487 setting_default_projects_tracker_ids: 新專案預設使用的追蹤標籤
488 488
489 489 permission_add_project: 建立專案
490 490 permission_add_subprojects: 建立子專案
491 491 permission_edit_project: 編輯專案
492 492 permission_close_project: 關閉 / 重新開啟專案
493 493 permission_select_project_modules: 選擇專案模組
494 494 permission_manage_members: 管理成員
495 495 permission_manage_project_activities: 管理專案活動
496 496 permission_manage_versions: 管理版本
497 497 permission_manage_categories: 管理問題分類
498 498 permission_view_issues: 檢視問題
499 499 permission_add_issues: 新增問題
500 500 permission_edit_issues: 編輯問題
501 501 permission_manage_issue_relations: 管理問題關聯
502 502 permission_set_issues_private: 設定問題為公開或私人
503 503 permission_set_own_issues_private: 設定自己的問題為公開或私人
504 504 permission_add_issue_notes: 新增筆記
505 505 permission_edit_issue_notes: 編輯筆記
506 506 permission_edit_own_issue_notes: 編輯自己的筆記
507 507 permission_view_private_notes: 檢視私人筆記
508 508 permission_set_notes_private: 設定筆記為私人筆記
509 509 permission_move_issues: 搬移問題
510 510 permission_delete_issues: 刪除問題
511 511 permission_manage_public_queries: 管理公開查詢
512 512 permission_save_queries: 儲存查詢
513 513 permission_view_gantt: 檢視甘特圖
514 514 permission_view_calendar: 檢視日曆
515 515 permission_view_issue_watchers: 檢視監看者清單
516 516 permission_add_issue_watchers: 新增監看者
517 517 permission_delete_issue_watchers: 刪除監看者
518 518 permission_log_time: 紀錄耗用工時
519 519 permission_view_time_entries: 檢視耗用工時
520 520 permission_edit_time_entries: 編輯工時紀錄
521 521 permission_edit_own_time_entries: 編輯自己的工時記錄
522 522 permission_manage_news: 管理新聞
523 523 permission_comment_news: 回應新聞
524 524 permission_view_documents: 檢視文件
525 525 permission_add_documents: 新增文件
526 526 permission_edit_documents: 編輯文件
527 527 permission_delete_documents: 刪除文件
528 528 permission_manage_files: 管理檔案
529 529 permission_view_files: 檢視檔案
530 530 permission_manage_wiki: 管理 wiki
531 531 permission_rename_wiki_pages: 重新命名 wiki 頁面
532 532 permission_delete_wiki_pages: 刪除 wiki 頁面
533 533 permission_view_wiki_pages: 檢視 wiki
534 534 permission_view_wiki_edits: 檢視 wiki 歷史
535 535 permission_edit_wiki_pages: 編輯 wiki 頁面
536 536 permission_delete_wiki_pages_attachments: 刪除附件
537 537 permission_protect_wiki_pages: 專案 wiki 頁面
538 538 permission_manage_repository: 管理儲存機制
539 539 permission_browse_repository: 瀏覽儲存機制
540 540 permission_view_changesets: 檢視變更集
541 541 permission_commit_access: 存取認可
542 542 permission_manage_boards: 管理討論版
543 543 permission_view_messages: 檢視訊息
544 544 permission_add_messages: 新增訊息
545 545 permission_edit_messages: 編輯訊息
546 546 permission_edit_own_messages: 編輯自己的訊息
547 547 permission_delete_messages: 刪除訊息
548 548 permission_delete_own_messages: 刪除自己的訊息
549 549 permission_export_wiki_pages: 匯出 wiki 頁面
550 550 permission_manage_subtasks: 管理子任務
551 551 permission_manage_related_issues: 管理相關問題
552 552
553 553 project_module_issue_tracking: 問題追蹤
554 554 project_module_time_tracking: 工時追蹤
555 555 project_module_news: 新聞
556 556 project_module_documents: 文件
557 557 project_module_files: 檔案
558 558 project_module_wiki: Wiki
559 559 project_module_repository: 版本控管
560 560 project_module_boards: 討論區
561 561 project_module_calendar: 日曆
562 562 project_module_gantt: 甘特圖
563 563
564 564 label_user: 用戶
565 565 label_user_plural: 用戶清單
566 566 label_user_new: 建立新用戶
567 567 label_user_anonymous: 匿名用戶
568 568 label_project: 專案
569 569 label_project_new: 建立新專案
570 570 label_project_plural: 專案清單
571 571 label_x_projects:
572 572 zero: 無專案
573 573 one: 1 個專案
574 574 other: "%{count} 個專案"
575 575 label_project_all: 全部的專案
576 576 label_project_latest: 最近的專案
577 577 label_issue: 問題
578 578 label_issue_new: 建立新問題
579 579 label_issue_plural: 問題清單
580 580 label_issue_view_all: 檢視所有問題
581 581 label_issues_by: "問題按 %{value} 分組顯示"
582 582 label_issue_added: 問題已新增
583 583 label_issue_updated: 問題已更新
584 584 label_issue_note_added: 筆記已新增
585 585 label_issue_status_updated: 狀態已更新
586 586 label_issue_priority_updated: 優先權已更新
587 587 label_document: 文件
588 588 label_document_new: 建立新文件
589 589 label_document_plural: 文件
590 590 label_document_added: 文件已新增
591 591 label_role: 角色
592 592 label_role_plural: 角色
593 593 label_role_new: 建立新角色
594 594 label_role_and_permissions: 角色與權限
595 595 label_role_anonymous: 匿名者
596 596 label_role_non_member: 非會員
597 597 label_member: 成員
598 598 label_member_new: 建立新成員
599 599 label_member_plural: 成員
600 600 label_tracker: 追蹤標籤
601 601 label_tracker_plural: 追蹤標籤清單
602 602 label_tracker_new: 建立新的追蹤標籤
603 603 label_workflow: 流程
604 604 label_issue_status: 問題狀態
605 605 label_issue_status_plural: 問題狀態清單
606 606 label_issue_status_new: 建立新狀態
607 607 label_issue_category: 問題分類
608 608 label_issue_category_plural: 問題分類清單
609 609 label_issue_category_new: 建立新分類
610 610 label_custom_field: 自訂欄位
611 611 label_custom_field_plural: 自訂欄位清單
612 612 label_custom_field_new: 建立新自訂欄位
613 613 label_enumerations: 列舉值清單
614 614 label_enumeration_new: 建立新列舉值
615 615 label_information: 資訊
616 616 label_information_plural: 資訊
617 617 label_please_login: 請先登入
618 618 label_register: 註冊
619 619 label_login_with_open_id_option: 或使用 OpenID 登入
620 620 label_password_lost: 遺失密碼
621 621 label_home: 網站首頁
622 622 label_my_page: 帳戶首頁
623 623 label_my_account: 我的帳戶
624 624 label_my_projects: 我的專案
625 625 label_my_page_block: 帳戶首頁區塊
626 626 label_administration: 網站管理
627 627 label_login: 登入
628 628 label_logout: 登出
629 629 label_help: 說明
630 630 label_reported_issues: 我通報的問題
631 631 label_assigned_to_me_issues: 分派給我的問題
632 632 label_last_login: 最近一次連線
633 633 label_registered_on: 註冊於
634 634 label_activity: 活動
635 635 label_overall_activity: 整體活動
636 636 label_user_activity: "%{value} 的活動"
637 637 label_new: 建立新的...
638 638 label_logged_as: 目前登入
639 639 label_environment: 環境
640 640 label_authentication: 認證
641 641 label_auth_source: 認證模式
642 642 label_auth_source_new: 建立新認證模式
643 643 label_auth_source_plural: 認證模式清單
644 644 label_subproject_plural: 子專案
645 645 label_subproject_new: 建立子專案
646 646 label_and_its_subprojects: "%{value} 與其子專案"
647 647 label_min_max_length: 最小 - 最大 長度
648 648 label_list: 清單
649 649 label_date: 日期
650 650 label_integer: 整數
651 651 label_float: 浮點數
652 652 label_boolean: 布林
653 653 label_string: 文字
654 654 label_text: 長文字
655 655 label_attribute: 屬性
656 656 label_attribute_plural: 屬性
657 657 label_no_data: 沒有任何資料可供顯示
658 658 label_change_status: 變更狀態
659 659 label_history: 歷史
660 660 label_attachment: 檔案
661 661 label_attachment_new: 建立新檔案
662 662 label_attachment_delete: 刪除檔案
663 663 label_attachment_plural: 檔案
664 664 label_file_added: 檔案已新增
665 665 label_report: 報告
666 666 label_report_plural: 報告
667 667 label_news: 新聞
668 668 label_news_new: 建立新聞
669 669 label_news_plural: 新聞
670 670 label_news_latest: 最近新聞
671 671 label_news_view_all: 檢視全部的新聞
672 672 label_news_added: 新聞已新增
673 673 label_news_comment_added: 回應已加入新聞
674 674 label_settings: 設定
675 675 label_overview: 概觀
676 676 label_version: 版本
677 677 label_version_new: 建立新版本
678 678 label_version_plural: 版本
679 679 label_close_versions: 結束已完成的版本
680 680 label_confirmation: 確認
681 681 label_export_to: 匯出至
682 682 label_read: 讀取...
683 683 label_public_projects: 公開專案
684 684 label_open_issues: 進行中
685 685 label_open_issues_plural: 進行中
686 686 label_closed_issues: 已結束
687 687 label_closed_issues_plural: 已結束
688 688 label_x_open_issues_abbr_on_total:
689 689 zero: 0 進行中 / 共 %{total}
690 690 one: 1 進行中 / 共 %{total}
691 691 other: "%{count} 進行中 / %{total}"
692 692 label_x_open_issues_abbr:
693 693 zero: 0 進行中
694 694 one: 1 進行中
695 695 other: "%{count} 進行中"
696 696 label_x_closed_issues_abbr:
697 697 zero: 0 已結束
698 698 one: 1 已結束
699 699 other: "%{count} 已結束"
700 700 label_x_issues:
701 701 zero: 0 個問題
702 702 one: 1 個問題
703 703 other: "%{count} 個問題"
704 704 label_total: 總計
705 label_total_time: 工時總計
705 706 label_permissions: 權限
706 707 label_current_status: 目前狀態
707 708 label_new_statuses_allowed: 可變更至以下狀態
708 709 label_all: 全部
709 710 label_any: 任意一個
710 711 label_none: 空值
711 712 label_nobody: 無名
712 713 label_next: 下一頁
713 714 label_previous: 上一頁
714 715 label_used_by: Used by
715 716 label_details: 明細
716 717 label_add_note: 加入一個新筆記
717 718 label_per_page: 每頁
718 719 label_calendar: 日曆
719 720 label_months_from: 個月, 開始月份
720 721 label_gantt: 甘特圖
721 722 label_internal: 內部
722 723 label_last_changes: "最近 %{count} 個變更"
723 724 label_change_view_all: 檢視全部的變更
724 725 label_personalize_page: 自訂版面
725 726 label_comment: 回應
726 727 label_comment_plural: 回應
727 728 label_x_comments:
728 729 zero: 無回應
729 730 one: 1 個回應
730 731 other: "%{count} 個回應"
731 732 label_comment_add: 加入新回應
732 733 label_comment_added: 新回應已加入
733 734 label_comment_delete: 刪除回應
734 735 label_query: 自訂查詢
735 736 label_query_plural: 自訂查詢
736 737 label_query_new: 建立新查詢
737 738 label_my_queries: 我的自訂查詢
738 739 label_filter_add: 加入新篩選條件
739 740 label_filter_plural: 篩選條件
740 741 label_equals: 等於
741 742 label_not_equals: 不等於
742 743 label_in_less_than: 在小於
743 744 label_in_more_than: 在大於
744 745 label_in_the_next_days: 在未來幾天之內
745 746 label_in_the_past_days: 在過去幾天之內
746 747 label_greater_or_equal: "大於等於 (>=)"
747 748 label_less_or_equal: "小於等於 (<=)"
748 749 label_between: 區間
749 750 label_in:
750 751 label_today: 今天
751 752 label_all_time: 全部
752 753 label_yesterday: 昨天
753 754 label_this_week: 本週
754 755 label_last_week: 上週
755 756 label_last_n_weeks: "過去 %{count} 週"
756 757 label_last_n_days: "過去 %{count} 天"
757 758 label_this_month: 這個月
758 759 label_last_month: 上個月
759 760 label_this_year: 今年
760 761 label_date_range: 日期區間
761 762 label_less_than_ago: 小於幾天之前
762 763 label_more_than_ago: 大於幾天之前
763 764 label_ago: 天以前
764 765 label_contains: 包含
765 766 label_not_contains: 不包含
766 767 label_any_issues_in_project: 在專案中的任意問題
767 768 label_any_issues_not_in_project: 不在專案中的任意問題
768 769 label_no_issues_in_project: 沒有問題在專案中
769 770 label_day_plural:
770 771 label_repository: 儲存機制
771 772 label_repository_new: 建立新儲存機制
772 773 label_repository_plural: 儲存機制清單
773 774 label_browse: 瀏覽
774 775 label_branch: 分支
775 776 label_tag: 標籤
776 777 label_revision: 修訂版
777 778 label_revision_plural: 修訂版清單
778 779 label_revision_id: "修訂版 %{value}"
779 780 label_associated_revisions: 關聯的修訂版
780 781 label_added: 已新增
781 782 label_modified: 已修改
782 783 label_copied: 已複製
783 784 label_renamed: 已重新命名
784 785 label_deleted: 已刪除
785 786 label_latest_revision: 最新的修訂版
786 787 label_latest_revision_plural: 最新的修訂版清單
787 788 label_view_revisions: 檢視修訂版清單
788 789 label_view_all_revisions: 檢視所有的的修訂版清單
789 790 label_max_size: 最大長度
790 791 label_sort_highest: 移動至開頭
791 792 label_sort_higher: 往上移動
792 793 label_sort_lower: 往下移動
793 794 label_sort_lowest: 移動至結尾
794 795 label_roadmap: 版本藍圖
795 796 label_roadmap_due_in: "剩餘 %{value}"
796 797 label_roadmap_overdue: "逾期 %{value}"
797 798 label_roadmap_no_issues: 此版本尚未包含任何問題
798 799 label_search: 搜尋
799 800 label_result_plural: 結果
800 801 label_all_words: 包含全部的字詞
801 802 label_wiki: Wiki
802 803 label_wiki_edit: Wiki 編輯
803 804 label_wiki_edit_plural: Wiki 編輯
804 805 label_wiki_page: Wiki 網頁
805 806 label_wiki_page_plural: Wiki 網頁
806 807 label_index_by_title: 依標題索引
807 808 label_index_by_date: 依日期索引
808 809 label_current_version: 現行版本
809 810 label_preview: 預覽
810 811 label_feed_plural: Feeds
811 812 label_changes_details: 所有變更的明細
812 813 label_issue_tracking: 問題追蹤
813 814 label_spent_time: 耗用工時
814 815 label_overall_spent_time: 整體耗用工時
815 816 label_f_hour: "%{value} 小時"
816 817 label_f_hour_plural: "%{value} 小時"
817 818 label_time_tracking: 工時追蹤
818 819 label_change_plural: 變更
819 820 label_statistics: 統計資訊
820 821 label_commits_per_month: 依月份統計認可
821 822 label_commits_per_author: 依作者統計認可
822 823 label_view_diff: 檢視差異
823 824 label_diff: 差異
824 825 label_diff_inline: 直列
825 826 label_diff_side_by_side: 並排
826 827 label_options: 選項清單
827 828 label_copy_workflow_from: 從以下追蹤標籤複製工作流程
828 829 label_permissions_report: 權限報表
829 830 label_watched_issues: 監看中的問題清單
830 831 label_related_issues: 相關的問題清單
831 832 label_applied_status: 已套用狀態
832 833 label_loading: 載入中...
833 834 label_relation_new: 建立新關聯
834 835 label_relation_delete: 刪除關聯
835 836 label_relates_to: 關聯至
836 837 label_duplicates: 已重複
837 838 label_duplicated_by: 與後面所列問題重複
838 839 label_blocks: 阻擋
839 840 label_blocked_by: 被阻擋
840 841 label_precedes: 優先於
841 842 label_follows: 跟隨於
842 843 label_copied_to: 複製到
843 844 label_copied_from: 複製於
844 845 label_end_to_start: 結束─開始
845 846 label_end_to_end: 結束─結束
846 847 label_start_to_start: 開始─開始
847 848 label_start_to_end: 開始─結束
848 849 label_stay_logged_in: 維持已登入狀態
849 850 label_disabled: 關閉
850 851 label_show_completed_versions: 顯示已完成的版本
851 852 label_me: 我自己
852 853 label_board: 論壇
853 854 label_board_new: 建立新論壇
854 855 label_board_plural: 論壇
855 856 label_board_locked: 鎖定
856 857 label_board_sticky: 置頂
857 858 label_topic_plural: 討論主題
858 859 label_message_plural: 訊息
859 860 label_message_last: 上一封訊息
860 861 label_message_new: 建立新訊息
861 862 label_message_posted: 訊息已新增
862 863 label_reply_plural: 回應
863 864 label_send_information: 寄送帳戶資訊電子郵件給用戶
864 865 label_year:
865 866 label_month:
866 867 label_week:
867 868 label_date_from: 開始
868 869 label_date_to: 結束
869 870 label_language_based: 依用戶之語系決定
870 871 label_sort_by: "按 %{value} 排序"
871 872 label_send_test_email: 寄送測試郵件
872 873 label_feeds_access_key: Atom 存取金鑰
873 874 label_missing_feeds_access_key: 找不到 Atom 存取金鑰
874 875 label_feeds_access_key_created_on: "Atom 存取鍵建立於 %{value} 之前"
875 876 label_module_plural: 模組
876 877 label_added_time_by: "是由 %{author} %{age} 前加入"
877 878 label_updated_time_by: "是由 %{author} %{age} 前更新"
878 879 label_updated_time: "於 %{value} 前更新"
879 880 label_jump_to_a_project: 選擇欲前往的專案...
880 881 label_file_plural: 檔案清單
881 882 label_changeset_plural: 變更集清單
882 883 label_default_columns: 預設欄位清單
883 884 label_no_change_option: (維持不變)
884 885 label_bulk_edit_selected_issues: 大量編輯選取的問題
885 886 label_bulk_edit_selected_time_entries: 大量編輯選取的工時項目
886 887 label_theme: 畫面主題
887 888 label_default: 預設
888 889 label_search_titles_only: 僅搜尋標題
889 890 label_user_mail_option_all: "提醒與我的專案有關的全部事件"
890 891 label_user_mail_option_selected: "只提醒我所選擇專案中的事件..."
891 892 label_user_mail_option_none: "取消提醒"
892 893 label_user_mail_option_only_my_events: "只提醒我觀察中或參與中的事物"
893 894 label_user_mail_option_only_assigned: "只提醒我被指派的事物"
894 895 label_user_mail_option_only_owner: "只提醒我作為擁有者的事物"
895 896 label_user_mail_no_self_notified: "不提醒我自己所做的變更"
896 897 label_registration_activation_by_email: 透過電子郵件啟用帳戶
897 898 label_registration_manual_activation: 手動啟用帳戶
898 899 label_registration_automatic_activation: 自動啟用帳戶
899 900 label_display_per_page: "每頁顯示: %{value} 個"
900 901 label_age: 年齡
901 902 label_change_properties: 變更屬性
902 903 label_general: 一般
903 904 label_more: 更多 »
904 905 label_scm: 版本控管
905 906 label_plugins: 附加元件
906 907 label_ldap_authentication: LDAP 認證
907 908 label_downloads_abbr: 下載
908 909 label_optional_description: 額外的說明
909 910 label_add_another_file: 增加其他檔案
910 911 label_preferences: 偏好選項
911 912 label_chronological_order: 以時間由遠至近排序
912 913 label_reverse_chronological_order: 以時間由近至遠排序
913 914 label_planning: 計劃表
914 915 label_incoming_emails: 傳入的電子郵件
915 916 label_generate_key: 產生金鑰
916 917 label_issue_watchers: 監看者
917 918 label_example: 範例
918 919 label_display: 顯示
919 920 label_sort: 排序
920 921 label_ascending: 遞增排序
921 922 label_descending: 遞減排序
922 923 label_date_from_to: 起 %{start} 迄 %{end}
923 924 label_wiki_content_added: Wiki 頁面已新增
924 925 label_wiki_content_updated: Wiki 頁面已更新
925 926 label_group: 群組
926 927 label_group_plural: 群組清單
927 928 label_group_new: 建立新群組
928 929 label_time_entry_plural: 耗用工時
929 930 label_version_sharing_none: 不共用
930 931 label_version_sharing_descendants: 與子專案共用
931 932 label_version_sharing_hierarchy: 與專案階層架構共用
932 933 label_version_sharing_tree: 與專案樹共用
933 934 label_version_sharing_system: 與全部的專案共用
934 935 label_update_issue_done_ratios: 更新問題完成百分比
935 936 label_copy_source: 來源
936 937 label_copy_target: 目的地
937 938 label_copy_same_as_target: 與目的地相同
938 939 label_display_used_statuses_only: 僅顯示此追蹤標籤所使用之狀態
939 940 label_api_access_key: API 存取金鑰
940 941 label_missing_api_access_key: 找不到 API 存取金鑰
941 942 label_api_access_key_created_on: "API 存取金鑰建立於 %{value} 之前"
942 943 label_profile: 配置概況
943 944 label_subtask_plural: 子任務
944 945 label_project_copy_notifications: 在複製專案的過程中,傳送通知郵件
945 946 label_principal_search: "搜尋用戶或群組:"
946 947 label_user_search: "搜尋用戶:"
947 948 label_additional_workflow_transitions_for_author: 用戶為作者時額外允許的流程轉換
948 949 label_additional_workflow_transitions_for_assignee: 用戶為被指定者時額外允許的流程轉換
949 950 label_issues_visibility_all: 所有問題
950 951 label_issues_visibility_public: 所有非私人問題
951 952 label_issues_visibility_own: 使用者所建立的或被指派的問題
952 953 label_git_report_last_commit: 報告最後認可的文件和目錄
953 954 label_parent_revision: 父項
954 955 label_child_revision: 子項
955 956 label_export_options: "%{export_format} 匯出選項"
956 957 label_copy_attachments: 複製附件
957 958 label_copy_subtasks: 複製子任務
958 959 label_item_position: "%{position} / %{count}"
959 960 label_completed_versions: 已完成版本
960 961 label_search_for_watchers: 搜尋可供加入的監看者
961 962 label_session_expiration: 工作階段逾期
962 963 label_show_closed_projects: 檢視已關閉的專案
963 964 label_status_transitions: 狀態轉換
964 965 label_fields_permissions: 欄位權限
965 966 label_readonly: 唯讀
966 967 label_required: 必填
967 968 label_attribute_of_project: "專案是 %{name}"
968 969 label_attribute_of_issue: "問題是 %{name}"
969 970 label_attribute_of_author: "作者是 %{name}"
970 971 label_attribute_of_assigned_to: "被指派者是 %{name}"
971 972 label_attribute_of_user: "用戶是 %{name}"
972 973 label_attribute_of_fixed_version: "版本是 %{name}"
973 974 label_cross_project_descendants: 與子專案共用
974 975 label_cross_project_tree: 與專案樹共用
975 976 label_cross_project_hierarchy: 與專案階層架構共用
976 977 label_cross_project_system: 與全部的專案共用
977 978 label_gantt_progress_line: 進度線
978 979
979 980 button_login: 登入
980 981 button_submit: 送出
981 982 button_save: 儲存
982 983 button_check_all: 全選
983 984 button_uncheck_all: 全不選
984 985 button_collapse_all: 全部摺疊
985 986 button_expand_all: 全部展開
986 987 button_delete: 刪除
987 988 button_create: 建立
988 989 button_create_and_continue: 繼續建立
989 990 button_test: 測試
990 991 button_edit: 編輯
991 992 button_edit_associated_wikipage: "編輯相關 Wiki 頁面: %{page_title}"
992 993 button_add: 新增
993 994 button_change: 修改
994 995 button_apply: 套用
995 996 button_clear: 清除
996 997 button_lock: 鎖定
997 998 button_unlock: 解除鎖定
998 999 button_download: 下載
999 1000 button_list: 清單
1000 1001 button_view: 檢視
1001 1002 button_move: 移動
1002 1003 button_move_and_follow: 移動後跟隨
1003 1004 button_back: 返回
1004 1005 button_cancel: 取消
1005 1006 button_activate: 啟用
1006 1007 button_sort: 排序
1007 1008 button_log_time: 記錄時間
1008 1009 button_rollback: 還原至此版本
1009 1010 button_watch: 觀察
1010 1011 button_unwatch: 取消觀察
1011 1012 button_reply: 回應
1012 1013 button_archive: 封存
1013 1014 button_unarchive: 取消封存
1014 1015 button_reset: 回復
1015 1016 button_rename: 重新命名
1016 1017 button_change_password: 變更密碼
1017 1018 button_copy: 複製
1018 1019 button_copy_and_follow: 複製後跟隨
1019 1020 button_annotate: 註解
1020 1021 button_update: 更新
1021 1022 button_configure: 設定
1022 1023 button_quote: 引用
1023 1024 button_duplicate: 重製
1024 1025 button_show: 顯示
1025 1026 button_hide: 隱藏
1026 1027 button_edit_section: 編輯此區塊
1027 1028 button_export: 匯出
1028 1029 button_delete_my_account: 刪除我的帳戶
1029 1030 button_close: 關閉
1030 1031 button_reopen: 重新開啟
1031 1032
1032 1033 status_active: 活動中
1033 1034 status_registered: 註冊完成
1034 1035 status_locked: 鎖定中
1035 1036
1036 1037 project_status_active: 使用中
1037 1038 project_status_closed: 已關閉
1038 1039 project_status_archived: 已封存
1039 1040
1040 1041 version_status_open: 進行中
1041 1042 version_status_locked: 已鎖定
1042 1043 version_status_closed: 已結束
1043 1044
1044 1045 field_active: 活動中
1045 1046
1046 1047 text_select_mail_notifications: 選擇欲寄送提醒通知郵件之動作
1047 1048 text_regexp_info: eg. ^[A-Z0-9]+$
1048 1049 text_min_max_length_info: 0 代表「不限制」
1049 1050 text_project_destroy_confirmation: 您確定要刪除這個專案和其他相關資料?
1050 1051 text_subprojects_destroy_warning: "下列子專案: %{value} 將一併被刪除。"
1051 1052 text_workflow_edit: 選擇角色與追蹤標籤以設定其工作流程
1052 1053 text_are_you_sure: 確定執行?
1053 1054 text_journal_changed: "%{label} %{old} 變更為 %{new}"
1054 1055 text_journal_changed_no_detail: "%{label} 已更新"
1055 1056 text_journal_set_to: "%{label} 設定為 %{value}"
1056 1057 text_journal_deleted: "%{label} 已刪除 (%{old})"
1057 1058 text_journal_added: "%{label} %{value} 已新增"
1058 1059 text_tip_issue_begin_day: 今天起始的問題
1059 1060 text_tip_issue_end_day: 今天截止的的問題
1060 1061 text_tip_issue_begin_end_day: 今天起始與截止的問題
1061 1062 text_project_identifier_info: '僅允許使用小寫英文字母 (a-z), 阿拉伯數字, 虛線與底線。<br />一旦儲存之後, 代碼便無法再次被更改。'
1062 1063 text_caracters_maximum: "最多 %{count} 個字元."
1063 1064 text_caracters_minimum: "長度必須大於 %{count} 個字元."
1064 1065 text_length_between: "長度必須介於 %{min} %{max} 個字元之間."
1065 1066 text_tracker_no_workflow: 此追蹤標籤尚未定義工作流程
1066 1067 text_unallowed_characters: 不允許的字元
1067 1068 text_comma_separated: 可輸入多個值(須以逗號分隔)。
1068 1069 text_line_separated: 可輸入多個值(須以換行符號分隔,即每列只能輸入一個值)。
1069 1070 text_issues_ref_in_commit_messages: 認可訊息中參照(或修正)問題之關鍵字
1070 1071 text_issue_added: "問題 %{id} 已被 %{author} 通報。"
1071 1072 text_issue_updated: "問題 %{id} 已被 %{author} 更新。"
1072 1073 text_wiki_destroy_confirmation: 您確定要刪除這個 wiki 和其中的所有內容?
1073 1074 text_issue_category_destroy_question: "有 (%{count}) 個問題被指派到此分類. 請選擇您想要的動作?"
1074 1075 text_issue_category_destroy_assignments: 移除這些問題的分類
1075 1076 text_issue_category_reassign_to: 重新指派這些問題至其它分類
1076 1077 text_user_mail_option: "對於那些未被選擇的專案,將只會接收到您正在觀察中,或是參與中的問題通知。(「參與中的問題」包含您建立的或是指派給您的問題)"
1077 1078 text_no_configuration_data: "角色、追蹤標籤、問題狀態與流程尚未被設定完成。\n強烈建議您先載入預設的組態。將預設組態載入之後,您可再變更其中之值。"
1078 1079 text_load_default_configuration: 載入預設組態
1079 1080 text_status_changed_by_changeset: "已套用至變更集 %{value}."
1080 1081 text_time_logged_by_changeset: "紀錄於變更集 %{value}."
1081 1082 text_issues_destroy_confirmation: '確定刪除已選擇的問題?'
1082 1083 text_issues_destroy_descendants_confirmation: "這麼做將會一併刪除 %{count} 子任務。"
1083 1084 text_time_entries_destroy_confirmation: 您確定要刪除所選擇的工時紀錄?
1084 1085 text_select_project_modules: '選擇此專案可使用之模組:'
1085 1086 text_default_administrator_account_changed: 已變更預設管理員帳號內容
1086 1087 text_file_repository_writable: 可寫入附加檔案目錄
1087 1088 text_plugin_assets_writable: 可寫入附加元件目錄
1088 1089 text_rmagick_available: 可使用 RMagick (選配)
1089 1090 text_destroy_time_entries_question: 您即將刪除的問題已報工 %{hours} 小時. 您的選擇是?
1090 1091 text_destroy_time_entries: 刪除已報工的時數
1091 1092 text_assign_time_entries_to_project: 指定已報工的時數至專案中
1092 1093 text_reassign_time_entries: '重新指定已報工的時數至此問題:'
1093 1094 text_user_wrote: "%{value} 先前提到:"
1094 1095 text_enumeration_destroy_question: "目前有 %{count} 個物件使用此列舉值。"
1095 1096 text_enumeration_category_reassign_to: '重新設定其列舉值為:'
1096 1097 text_email_delivery_not_configured: "您尚未設定電子郵件傳送方式,因此提醒選項已被停用。\n請在 config/configuration.yml 中設定 SMTP 之後,重新啟動 Redmine,以啟用電子郵件提醒選項。"
1097 1098 text_repository_usernames_mapping: "選擇或更新 Redmine 使用者與儲存機制紀錄使用者之對應關係。\n儲存機制中之使用者帳號或電子郵件信箱,與 Redmine 設定相同者,將自動產生對應關係。"
1098 1099 text_diff_truncated: '... 這份差異已被截短以符合顯示行數之最大值'
1099 1100 text_custom_field_possible_values_info: '一列輸入一個值'
1100 1101 text_wiki_page_destroy_question: "此頁面包含 %{descendants} 個子頁面及延伸頁面。 請選擇您想要的動作?"
1101 1102 text_wiki_page_nullify_children: "保留所有子頁面當作根頁面"
1102 1103 text_wiki_page_destroy_children: "刪除所有子頁面及其延伸頁面"
1103 1104 text_wiki_page_reassign_children: "重新指定所有的子頁面之父頁面至此頁面"
1104 1105 text_own_membership_delete_confirmation: "您在專案中,所擁有的部分或全部權限即將被移除,在這之後可能無法再次編輯此專案。\n您確定要繼續執行這個動作?"
1105 1106 text_zoom_in: 放大
1106 1107 text_zoom_out: 縮小
1107 1108 text_warn_on_leaving_unsaved: "若您離開這個頁面,此頁面所包含的未儲存資料將會遺失。"
1108 1109 text_scm_path_encoding_note: "預設: UTF-8"
1109 1110 text_git_repository_note: 儲存機制是本機的空(bare)目錄 (即: /gitrepo, c:\gitrepo)
1110 1111 text_mercurial_repository_note: 本機儲存機制 (即: /hgrepo, c:\hgrepo)
1111 1112 text_scm_command: 命令
1112 1113 text_scm_command_version: 版本
1113 1114 text_scm_config: 您可以在 config/configuration.yml 中設定 SCM 命令。請在編輯該檔案之後重新啟動 Redmine 應用程式。
1114 1115 text_scm_command_not_available: SCM 命令無法使用。請檢查管理面板中的設定。
1115 1116 text_issue_conflict_resolution_overwrite: "直接套用我的變更 (先前的筆記將會被保留,但是某些變更可能會被複寫)"
1116 1117 text_issue_conflict_resolution_add_notes: "新增我的筆記並捨棄我其他的變更"
1117 1118 text_issue_conflict_resolution_cancel: "捨棄我全部的變更並重新顯示 %{link}"
1118 1119 text_account_destroy_confirmation: |-
1119 1120 您確定要繼續這個動作嗎?
1120 1121 您的帳戶將會被永久刪除,且無法被重新啟用。
1121 1122 text_session_expiration_settings: "警告:變更這些設定將會導致包含您在內的所有工作階段過期。"
1122 1123 text_project_closed: 此專案已被關閉,僅供唯讀使用。
1123 1124 text_turning_multiple_off: "若您停用多重值設定,重複的值將會被移除,以使每個項目僅保留一個值。"
1124 1125
1125 1126 default_role_manager: 管理人員
1126 1127 default_role_developer: 開發人員
1127 1128 default_role_reporter: 報告人員
1128 1129 default_tracker_bug: 臭蟲
1129 1130 default_tracker_feature: 功能
1130 1131 default_tracker_support: 支援
1131 1132 default_issue_status_new: 新建立
1132 1133 default_issue_status_in_progress: 實作中
1133 1134 default_issue_status_resolved: 已解決
1134 1135 default_issue_status_feedback: 已回應
1135 1136 default_issue_status_closed: 已結束
1136 1137 default_issue_status_rejected: 已拒絕
1137 1138 default_doc_category_user: 使用手冊
1138 1139 default_doc_category_tech: 技術文件
1139 1140 default_priority_low:
1140 1141 default_priority_normal: 正常
1141 1142 default_priority_high:
1142 1143 default_priority_urgent:
1143 1144 default_priority_immediate:
1144 1145 default_activity_design: 設計
1145 1146 default_activity_development: 開發
1146 1147
1147 1148 enumeration_issue_priorities: 問題優先權
1148 1149 enumeration_doc_categories: 文件分類
1149 1150 enumeration_activities: 活動 (時間追蹤)
1150 1151 enumeration_system_activity: 系統活動
1151 1152 description_filter: 篩選條件
1152 1153 description_search: 搜尋欄位
1153 1154 description_choose_project: 專案清單
1154 1155 description_project_scope: 搜尋範圍
1155 1156 description_notes: 筆記
1156 1157 description_message_content: 訊息內容
1157 1158 description_query_sort_criteria_attribute: 排序屬性
1158 1159 description_query_sort_criteria_direction: 排列順序
1159 1160 description_user_mail_notification: 郵件通知設定
1160 1161 description_available_columns: 可用欄位
1161 1162 description_selected_columns: 已選取的欄位
1162 1163 description_all_columns: 所有欄位
1163 1164 description_issue_category_reassign: 選擇問題分類
1164 1165 description_wiki_subpages_reassign: 選擇新的父頁面
1165 1166 description_date_range_list: 從清單中選取範圍
1166 1167 description_date_range_interval: 選擇起始與結束日期以設定範圍區間
1167 1168 description_date_from: 輸入起始日期
1168 1169 description_date_to: 輸入結束日期
1169 1170 text_repository_identifier_info: '僅允許使用小寫英文字母 (a-z), 阿拉伯數字, 虛線與底線。<br />一旦儲存之後, 代碼便無法再次被更改。'
1170 label_total_time: 總計
@@ -1,372 +1,372
1 1 # -*- coding: utf-8 -*-
2 2 # Redmine - project management software
3 3 # Copyright (C) 2006-2013 Jean-Philippe Lang
4 4 #
5 5 # This program is free software; you can redistribute it and/or
6 6 # modify it under the terms of the GNU General Public License
7 7 # as published by the Free Software Foundation; either version 2
8 8 # of the License, or (at your option) any later version.
9 9 #
10 10 # This program is distributed in the hope that it will be useful,
11 11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 13 # GNU General Public License for more details.
14 14 #
15 15 # You should have received a copy of the GNU General Public License
16 16 # along with this program; if not, write to the Free Software
17 17 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 18
19 19 require File.expand_path('../../test_helper', __FILE__)
20 20
21 21 class TimeEntryReportsControllerTest < ActionController::TestCase
22 22 tests TimelogController
23 23
24 24 fixtures :projects, :enabled_modules, :roles, :members, :member_roles,
25 25 :issues, :time_entries, :users, :trackers, :enumerations,
26 26 :issue_statuses, :custom_fields, :custom_values
27 27
28 28 include Redmine::I18n
29 29
30 30 def setup
31 31 Setting.default_language = "en"
32 32 end
33 33
34 34 def test_report_at_project_level
35 35 get :report, :project_id => 'ecookbook'
36 36 assert_response :success
37 37 assert_template 'report'
38 38 assert_tag :form,
39 39 :attributes => {:action => "/projects/ecookbook/time_entries/report", :id => 'query_form'}
40 40 end
41 41
42 42 def test_report_all_projects
43 43 get :report
44 44 assert_response :success
45 45 assert_template 'report'
46 46 assert_tag :form,
47 47 :attributes => {:action => "/time_entries/report", :id => 'query_form'}
48 48 end
49 49
50 50 def test_report_all_projects_denied
51 51 r = Role.anonymous
52 52 r.permissions.delete(:view_time_entries)
53 53 r.permissions_will_change!
54 54 r.save
55 55 get :report
56 56 assert_redirected_to '/login?back_url=http%3A%2F%2Ftest.host%2Ftime_entries%2Freport'
57 57 end
58 58
59 59 def test_report_all_projects_one_criteria
60 60 get :report, :columns => 'week', :from => "2007-04-01", :to => "2007-04-30", :criteria => ['project']
61 61 assert_response :success
62 62 assert_template 'report'
63 63 assert_not_nil assigns(:report)
64 64 assert_equal "8.65", "%.2f" % assigns(:report).total_hours
65 65 end
66 66
67 67 def test_report_all_time
68 68 get :report, :project_id => 1, :criteria => ['project', 'issue']
69 69 assert_response :success
70 70 assert_template 'report'
71 71 assert_not_nil assigns(:report)
72 72 assert_equal "162.90", "%.2f" % assigns(:report).total_hours
73 73 end
74 74
75 75 def test_report_all_time_by_day
76 76 get :report, :project_id => 1, :criteria => ['project', 'issue'], :columns => 'day'
77 77 assert_response :success
78 78 assert_template 'report'
79 79 assert_not_nil assigns(:report)
80 80 assert_equal "162.90", "%.2f" % assigns(:report).total_hours
81 81 assert_tag :tag => 'th', :content => '2007-03-12'
82 82 end
83 83
84 84 def test_report_one_criteria
85 85 get :report, :project_id => 1, :columns => 'week', :from => "2007-04-01", :to => "2007-04-30", :criteria => ['project']
86 86 assert_response :success
87 87 assert_template 'report'
88 88 assert_not_nil assigns(:report)
89 89 assert_equal "8.65", "%.2f" % assigns(:report).total_hours
90 90 end
91 91
92 92 def test_report_two_criteria
93 93 get :report, :project_id => 1, :columns => 'month', :from => "2007-01-01", :to => "2007-12-31", :criteria => ["user", "activity"]
94 94 assert_response :success
95 95 assert_template 'report'
96 96 assert_not_nil assigns(:report)
97 97 assert_equal "162.90", "%.2f" % assigns(:report).total_hours
98 98 end
99 99
100 100 def test_report_custom_field_criteria_with_multiple_values
101 101 field = TimeEntryCustomField.create!(:name => 'multi', :field_format => 'list', :possible_values => ['value1', 'value2'])
102 102 entry = TimeEntry.create!(:project => Project.find(1), :hours => 1, :activity_id => 10, :user => User.find(2), :spent_on => Date.today)
103 103 CustomValue.create!(:customized => entry, :custom_field => field, :value => 'value1')
104 104 CustomValue.create!(:customized => entry, :custom_field => field, :value => 'value2')
105 105
106 106 get :report, :project_id => 1, :columns => 'day', :criteria => ["cf_#{field.id}"]
107 107 assert_response :success
108 108 end
109 109
110 110 def test_report_one_day
111 111 get :report, :project_id => 1, :columns => 'day', :from => "2007-03-23", :to => "2007-03-23", :criteria => ["user", "activity"]
112 112 assert_response :success
113 113 assert_template 'report'
114 114 assert_not_nil assigns(:report)
115 115 assert_equal "4.25", "%.2f" % assigns(:report).total_hours
116 116 end
117 117
118 118 def test_report_at_issue_level
119 119 get :report, :project_id => 1, :issue_id => 1, :columns => 'month', :from => "2007-01-01", :to => "2007-12-31", :criteria => ["user", "activity"]
120 120 assert_response :success
121 121 assert_template 'report'
122 122 assert_not_nil assigns(:report)
123 123 assert_equal "154.25", "%.2f" % assigns(:report).total_hours
124 124 assert_tag :form,
125 125 :attributes => {:action => "/projects/ecookbook/issues/1/time_entries/report", :id => 'query_form'}
126 126 end
127 127
128 128 def test_report_by_week_should_use_commercial_year
129 129 TimeEntry.delete_all
130 130 TimeEntry.generate!(:hours => '2', :spent_on => '2009-12-25') # 2009-52
131 131 TimeEntry.generate!(:hours => '4', :spent_on => '2009-12-31') # 2009-53
132 132 TimeEntry.generate!(:hours => '8', :spent_on => '2010-01-01') # 2009-53
133 133 TimeEntry.generate!(:hours => '16', :spent_on => '2010-01-05') # 2010-1
134 134
135 135 get :report, :columns => 'week', :from => "2009-12-25", :to => "2010-01-05", :criteria => ["project"]
136 136 assert_response :success
137 137
138 138 assert_select '#time-report thead tr' do
139 139 assert_select 'th:nth-child(1)', :text => 'Project'
140 140 assert_select 'th:nth-child(2)', :text => '2009-52'
141 141 assert_select 'th:nth-child(3)', :text => '2009-53'
142 142 assert_select 'th:nth-child(4)', :text => '2010-1'
143 143 assert_select 'th:nth-child(5)', :text => 'Total time'
144 144 end
145 145 assert_select '#time-report tbody tr' do
146 146 assert_select 'td:nth-child(1)', :text => 'eCookbook'
147 147 assert_select 'td:nth-child(2)', :text => '2.00'
148 148 assert_select 'td:nth-child(3)', :text => '12.00'
149 149 assert_select 'td:nth-child(4)', :text => '16.00'
150 150 assert_select 'td:nth-child(5)', :text => '30.00' # Total
151 151 end
152 152 end
153 153
154 154 def test_report_should_propose_association_custom_fields
155 155 get :report
156 156 assert_response :success
157 157 assert_template 'report'
158 158
159 159 assert_select 'select[name=?]', 'criteria[]' do
160 160 assert_select 'option[value=cf_1]', {:text => 'Database'}, 'Issue custom field not found'
161 161 assert_select 'option[value=cf_3]', {:text => 'Development status'}, 'Project custom field not found'
162 162 assert_select 'option[value=cf_7]', {:text => 'Billable'}, 'TimeEntryActivity custom field not found'
163 163 end
164 164 end
165 165
166 166 def test_report_with_association_custom_fields
167 167 get :report, :criteria => ['cf_1', 'cf_3', 'cf_7']
168 168 assert_response :success
169 169 assert_template 'report'
170 170 assert_not_nil assigns(:report)
171 171 assert_equal 3, assigns(:report).criteria.size
172 172 assert_equal "162.90", "%.2f" % assigns(:report).total_hours
173 173
174 174 # Custom fields columns
175 175 assert_select 'th', :text => 'Database'
176 176 assert_select 'th', :text => 'Development status'
177 177 assert_select 'th', :text => 'Billable'
178 178
179 179 # Custom field row
180 180 assert_select 'tr' do
181 181 assert_select 'td', :text => 'MySQL'
182 182 assert_select 'td.hours', :text => '1.00'
183 183 end
184 184 end
185 185
186 186 def test_report_one_criteria_no_result
187 187 get :report, :project_id => 1, :columns => 'week', :from => "1998-04-01", :to => "1998-04-30", :criteria => ['project']
188 188 assert_response :success
189 189 assert_template 'report'
190 190 assert_not_nil assigns(:report)
191 191 assert_equal "0.00", "%.2f" % assigns(:report).total_hours
192 192 end
193 193
194 194 def test_report_status_criterion
195 195 get :report, :project_id => 1, :criteria => ['status']
196 196 assert_response :success
197 197 assert_template 'report'
198 198 assert_tag :tag => 'th', :content => 'Status'
199 199 assert_tag :tag => 'td', :content => 'New'
200 200 end
201 201
202 202 def test_report_all_projects_csv_export
203 203 get :report, :columns => 'month', :from => "2007-01-01", :to => "2007-06-30",
204 204 :criteria => ["project", "user", "activity"], :format => "csv"
205 205 assert_response :success
206 206 assert_equal 'text/csv; header=present', @response.content_type
207 207 lines = @response.body.chomp.split("\n")
208 208 # Headers
209 209 assert_equal 'Project,User,Activity,2007-3,2007-4,Total time', lines.first
210 210 # Total row
211 211 assert_equal 'Total time,"","",154.25,8.65,162.90', lines.last
212 212 end
213 213
214 214 def test_report_csv_export
215 215 get :report, :project_id => 1, :columns => 'month',
216 216 :from => "2007-01-01", :to => "2007-06-30",
217 217 :criteria => ["project", "user", "activity"], :format => "csv"
218 218 assert_response :success
219 219 assert_equal 'text/csv; header=present', @response.content_type
220 220 lines = @response.body.chomp.split("\n")
221 221 # Headers
222 222 assert_equal 'Project,User,Activity,2007-3,2007-4,Total time', lines.first
223 223 # Total row
224 224 assert_equal 'Total time,"","",154.25,8.65,162.90', lines.last
225 225 end
226 226
227 227 def test_csv_big_5
228 228 Setting.default_language = "zh-TW"
229 229 str_utf8 = "\xe4\xb8\x80\xe6\x9c\x88"
230 230 str_big5 = "\xa4@\xa4\xeb"
231 231 if str_utf8.respond_to?(:force_encoding)
232 232 str_utf8.force_encoding('UTF-8')
233 233 str_big5.force_encoding('Big5')
234 234 end
235 235 user = User.find_by_id(3)
236 236 user.firstname = str_utf8
237 237 user.lastname = "test-lastname"
238 238 assert user.save
239 239 comments = "test_csv_big_5"
240 240 te1 = TimeEntry.create(:spent_on => '2011-11-11',
241 241 :hours => 7.3,
242 242 :project => Project.find(1),
243 243 :user => user,
244 244 :activity => TimeEntryActivity.find_by_name('Design'),
245 245 :comments => comments)
246 246
247 247 te2 = TimeEntry.find_by_comments(comments)
248 248 assert_not_nil te2
249 249 assert_equal 7.3, te2.hours
250 250 assert_equal 3, te2.user_id
251 251
252 252 get :report, :project_id => 1, :columns => 'day',
253 253 :from => "2011-11-11", :to => "2011-11-11",
254 254 :criteria => ["user"], :format => "csv"
255 255 assert_response :success
256 256 assert_equal 'text/csv; header=present', @response.content_type
257 257 lines = @response.body.chomp.split("\n")
258 258 # Headers
259 s1 = "\xa5\xce\xa4\xe1,2011-11-11,\xc1`\xadp"
260 s2 = "\xc1`\xadp"
259 s1 = "\xa5\xce\xa4\xe1,2011-11-11,\xa4u\xae\xc9\xc1`\xadp"
260 s2 = "\xa4u\xae\xc9\xc1`\xadp"
261 261 if s1.respond_to?(:force_encoding)
262 262 s1.force_encoding('Big5')
263 263 s2.force_encoding('Big5')
264 264 end
265 265 assert_equal s1, lines.first
266 266 # Total row
267 267 assert_equal "#{str_big5} #{user.lastname},7.30,7.30", lines[1]
268 268 assert_equal "#{s2},7.30,7.30", lines[2]
269 269
270 270 str_tw = "Traditional Chinese (\xe7\xb9\x81\xe9\xab\x94\xe4\xb8\xad\xe6\x96\x87)"
271 271 if str_tw.respond_to?(:force_encoding)
272 272 str_tw.force_encoding('UTF-8')
273 273 end
274 274 assert_equal str_tw, l(:general_lang_name)
275 275 assert_equal 'Big5', l(:general_csv_encoding)
276 276 assert_equal ',', l(:general_csv_separator)
277 277 assert_equal '.', l(:general_csv_decimal_separator)
278 278 end
279 279
280 280 def test_csv_cannot_convert_should_be_replaced_big_5
281 281 Setting.default_language = "zh-TW"
282 282 str_utf8 = "\xe4\xbb\xa5\xe5\x86\x85"
283 283 if str_utf8.respond_to?(:force_encoding)
284 284 str_utf8.force_encoding('UTF-8')
285 285 end
286 286 user = User.find_by_id(3)
287 287 user.firstname = str_utf8
288 288 user.lastname = "test-lastname"
289 289 assert user.save
290 290 comments = "test_replaced"
291 291 te1 = TimeEntry.create(:spent_on => '2011-11-11',
292 292 :hours => 7.3,
293 293 :project => Project.find(1),
294 294 :user => user,
295 295 :activity => TimeEntryActivity.find_by_name('Design'),
296 296 :comments => comments)
297 297
298 298 te2 = TimeEntry.find_by_comments(comments)
299 299 assert_not_nil te2
300 300 assert_equal 7.3, te2.hours
301 301 assert_equal 3, te2.user_id
302 302
303 303 get :report, :project_id => 1, :columns => 'day',
304 304 :from => "2011-11-11", :to => "2011-11-11",
305 305 :criteria => ["user"], :format => "csv"
306 306 assert_response :success
307 307 assert_equal 'text/csv; header=present', @response.content_type
308 308 lines = @response.body.chomp.split("\n")
309 309 # Headers
310 s1 = "\xa5\xce\xa4\xe1,2011-11-11,\xc1`\xadp"
310 s1 = "\xa5\xce\xa4\xe1,2011-11-11,\xa4u\xae\xc9\xc1`\xadp"
311 311 if s1.respond_to?(:force_encoding)
312 312 s1.force_encoding('Big5')
313 313 end
314 314 assert_equal s1, lines.first
315 315 # Total row
316 316 s2 = ""
317 317 if s2.respond_to?(:force_encoding)
318 318 s2 = "\xa5H?"
319 319 s2.force_encoding('Big5')
320 320 elsif RUBY_PLATFORM == 'java'
321 321 s2 = "??"
322 322 else
323 323 s2 = "\xa5H???"
324 324 end
325 325 assert_equal "#{s2} #{user.lastname},7.30,7.30", lines[1]
326 326 end
327 327
328 328 def test_csv_fr
329 329 with_settings :default_language => "fr" do
330 330 str1 = "test_csv_fr"
331 331 user = User.find_by_id(3)
332 332 te1 = TimeEntry.create(:spent_on => '2011-11-11',
333 333 :hours => 7.3,
334 334 :project => Project.find(1),
335 335 :user => user,
336 336 :activity => TimeEntryActivity.find_by_name('Design'),
337 337 :comments => str1)
338 338
339 339 te2 = TimeEntry.find_by_comments(str1)
340 340 assert_not_nil te2
341 341 assert_equal 7.3, te2.hours
342 342 assert_equal 3, te2.user_id
343 343
344 344 get :report, :project_id => 1, :columns => 'day',
345 345 :from => "2011-11-11", :to => "2011-11-11",
346 346 :criteria => ["user"], :format => "csv"
347 347 assert_response :success
348 348 assert_equal 'text/csv; header=present', @response.content_type
349 349 lines = @response.body.chomp.split("\n")
350 350 # Headers
351 351 s1 = "Utilisateur;2011-11-11;Temps total"
352 352 s2 = "Temps total"
353 353 if s1.respond_to?(:force_encoding)
354 354 s1.force_encoding('ISO-8859-1')
355 355 s2.force_encoding('ISO-8859-1')
356 356 end
357 357 assert_equal s1, lines.first
358 358 # Total row
359 359 assert_equal "#{user.firstname} #{user.lastname};7,30;7,30", lines[1]
360 360 assert_equal "#{s2};7,30;7,30", lines[2]
361 361
362 362 str_fr = "Fran\xc3\xa7ais"
363 363 if str_fr.respond_to?(:force_encoding)
364 364 str_fr.force_encoding('UTF-8')
365 365 end
366 366 assert_equal str_fr, l(:general_lang_name)
367 367 assert_equal 'ISO-8859-1', l(:general_csv_encoding)
368 368 assert_equal ';', l(:general_csv_separator)
369 369 assert_equal ',', l(:general_csv_decimal_separator)
370 370 end
371 371 end
372 372 end
General Comments 0
You need to be logged in to leave comments. Login now