Show More
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
This diff has been collapsed as it changes many lines, (2532 lines changed) Show them Hide them | |||||
@@ -0,0 +1,2532 b'' | |||||
|
1 | # Translations template for RhodeCode. | |||
|
2 | # Copyright (C) 2011 ORGANIZATION | |||
|
3 | # This file is distributed under the same license as the RhodeCode project. | |||
|
4 | # FIRST AUTHOR <EMAIL@ADDRESS>, 2011. | |||
|
5 | # | |||
|
6 | msgid "" | |||
|
7 | msgstr "" | |||
|
8 | "Project-Id-Version: RhodeCode 1.2.0\n" | |||
|
9 | "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" | |||
|
10 | "POT-Creation-Date: 2011-09-14 15:50-0300\n" | |||
|
11 | "PO-Revision-Date: 2012-05-09 22:23+0800\n" | |||
|
12 | "Last-Translator: Nansen <nansenat16@gmail.com>\n" | |||
|
13 | "Language-Team: LANGUAGE <LL@li.org>\n" | |||
|
14 | "MIME-Version: 1.0\n" | |||
|
15 | "Content-Type: text/plain; charset=utf-8\n" | |||
|
16 | "Content-Transfer-Encoding: 8bit\n" | |||
|
17 | "Generated-By: Babel 0.9.6\n" | |||
|
18 | "X-Poedit-Language: Chinese\n" | |||
|
19 | "X-Poedit-Country: TAIWAN\n" | |||
|
20 | "X-Poedit-SourceCharset: utf-8\n" | |||
|
21 | ||||
|
22 | #: rhodecode/controllers/changeset.py:108 | |||
|
23 | #: rhodecode/controllers/changeset.py:149 | |||
|
24 | #: rhodecode/controllers/changeset.py:216 | |||
|
25 | #: rhodecode/controllers/changeset.py:229 | |||
|
26 | msgid "binary file" | |||
|
27 | msgstr "二進位檔" | |||
|
28 | ||||
|
29 | #: rhodecode/controllers/changeset.py:123 | |||
|
30 | #: rhodecode/controllers/changeset.py:168 | |||
|
31 | msgid "Changeset is to big and was cut off, see raw changeset instead" | |||
|
32 | msgstr "" | |||
|
33 | ||||
|
34 | #: rhodecode/controllers/changeset.py:159 | |||
|
35 | msgid "Diff is to big and was cut off, see raw diff instead" | |||
|
36 | msgstr "" | |||
|
37 | ||||
|
38 | #: rhodecode/controllers/error.py:69 | |||
|
39 | msgid "Home page" | |||
|
40 | msgstr "首頁" | |||
|
41 | ||||
|
42 | #: rhodecode/controllers/error.py:98 | |||
|
43 | msgid "The request could not be understood by the server due to malformed syntax." | |||
|
44 | msgstr "" | |||
|
45 | ||||
|
46 | #: rhodecode/controllers/error.py:101 | |||
|
47 | msgid "Unauthorized access to resource" | |||
|
48 | msgstr "" | |||
|
49 | ||||
|
50 | #: rhodecode/controllers/error.py:103 | |||
|
51 | msgid "You don't have permission to view this page" | |||
|
52 | msgstr "您沒有權限瀏覽這個頁面" | |||
|
53 | ||||
|
54 | #: rhodecode/controllers/error.py:105 | |||
|
55 | msgid "The resource could not be found" | |||
|
56 | msgstr "找不到這個資源" | |||
|
57 | ||||
|
58 | #: rhodecode/controllers/error.py:107 | |||
|
59 | msgid "The server encountered an unexpected condition which prevented it from fulfilling the request." | |||
|
60 | msgstr "" | |||
|
61 | ||||
|
62 | #: rhodecode/controllers/feed.py:48 | |||
|
63 | #, python-format | |||
|
64 | msgid "Changes on %s repository" | |||
|
65 | msgstr "修改於版本庫 %s" | |||
|
66 | ||||
|
67 | #: rhodecode/controllers/feed.py:49 | |||
|
68 | #, python-format | |||
|
69 | msgid "%s %s feed" | |||
|
70 | msgstr "" | |||
|
71 | ||||
|
72 | #: rhodecode/controllers/files.py:72 | |||
|
73 | msgid "There are no files yet" | |||
|
74 | msgstr "尚未有任何檔案" | |||
|
75 | ||||
|
76 | #: rhodecode/controllers/files.py:262 | |||
|
77 | #, python-format | |||
|
78 | msgid "Edited %s via RhodeCode" | |||
|
79 | msgstr "使用 RhodeCode 編輯 %s" | |||
|
80 | ||||
|
81 | #: rhodecode/controllers/files.py:267 | |||
|
82 | #: rhodecode/templates/files/file_diff.html:40 | |||
|
83 | msgid "No changes" | |||
|
84 | msgstr "沒有修改" | |||
|
85 | ||||
|
86 | #: rhodecode/controllers/files.py:278 | |||
|
87 | #, python-format | |||
|
88 | msgid "Successfully committed to %s" | |||
|
89 | msgstr "成功遞交至 %s" | |||
|
90 | ||||
|
91 | #: rhodecode/controllers/files.py:283 | |||
|
92 | msgid "Error occurred during commit" | |||
|
93 | msgstr "" | |||
|
94 | ||||
|
95 | #: rhodecode/controllers/files.py:308 | |||
|
96 | msgid "downloads disabled" | |||
|
97 | msgstr "下載已關閉" | |||
|
98 | ||||
|
99 | #: rhodecode/controllers/files.py:313 | |||
|
100 | #, python-format | |||
|
101 | msgid "Unknown revision %s" | |||
|
102 | msgstr "未知修訂 %s" | |||
|
103 | ||||
|
104 | #: rhodecode/controllers/files.py:315 | |||
|
105 | msgid "Empty repository" | |||
|
106 | msgstr "空的版本庫" | |||
|
107 | ||||
|
108 | #: rhodecode/controllers/files.py:317 | |||
|
109 | msgid "Unknown archive type" | |||
|
110 | msgstr "未知的存檔類型" | |||
|
111 | ||||
|
112 | #: rhodecode/controllers/files.py:385 | |||
|
113 | #: rhodecode/controllers/files.py:398 | |||
|
114 | msgid "Binary file" | |||
|
115 | msgstr "二進位檔" | |||
|
116 | ||||
|
117 | #: rhodecode/controllers/files.py:417 | |||
|
118 | #: rhodecode/templates/changeset/changeset_range.html:4 | |||
|
119 | #: rhodecode/templates/changeset/changeset_range.html:12 | |||
|
120 | #: rhodecode/templates/changeset/changeset_range.html:29 | |||
|
121 | msgid "Changesets" | |||
|
122 | msgstr "變更" | |||
|
123 | ||||
|
124 | #: rhodecode/controllers/files.py:418 | |||
|
125 | #: rhodecode/controllers/summary.py:175 | |||
|
126 | #: rhodecode/templates/branches/branches.html:5 | |||
|
127 | #: rhodecode/templates/summary/summary.html:690 | |||
|
128 | msgid "Branches" | |||
|
129 | msgstr "分支" | |||
|
130 | ||||
|
131 | #: rhodecode/controllers/files.py:419 | |||
|
132 | #: rhodecode/controllers/summary.py:176 | |||
|
133 | #: rhodecode/templates/summary/summary.html:679 | |||
|
134 | #: rhodecode/templates/tags/tags.html:5 | |||
|
135 | msgid "Tags" | |||
|
136 | msgstr "標籤" | |||
|
137 | ||||
|
138 | #: rhodecode/controllers/journal.py:50 | |||
|
139 | #, python-format | |||
|
140 | msgid "%s public journal %s feed" | |||
|
141 | msgstr "%s 公開日誌 %s feed" | |||
|
142 | ||||
|
143 | #: rhodecode/controllers/journal.py:178 | |||
|
144 | #: rhodecode/controllers/journal.py:212 | |||
|
145 | #: rhodecode/templates/admin/repos/repo_edit.html:171 | |||
|
146 | #: rhodecode/templates/base/base.html:50 | |||
|
147 | msgid "Public journal" | |||
|
148 | msgstr "公開日誌" | |||
|
149 | ||||
|
150 | #: rhodecode/controllers/login.py:111 | |||
|
151 | msgid "You have successfully registered into rhodecode" | |||
|
152 | msgstr "您已經成功註冊rhodecode" | |||
|
153 | ||||
|
154 | #: rhodecode/controllers/login.py:133 | |||
|
155 | msgid "Your password reset link was sent" | |||
|
156 | msgstr "您的密碼重設連結已寄出" | |||
|
157 | ||||
|
158 | #: rhodecode/controllers/login.py:155 | |||
|
159 | msgid "Your password reset was successful, new password has been sent to your email" | |||
|
160 | msgstr "您的密碼重設動作已完成,新的密碼已寄至您的信箱" | |||
|
161 | ||||
|
162 | #: rhodecode/controllers/search.py:109 | |||
|
163 | msgid "Invalid search query. Try quoting it." | |||
|
164 | msgstr "無效的查詢。請使用跳脫字元" | |||
|
165 | ||||
|
166 | #: rhodecode/controllers/search.py:114 | |||
|
167 | msgid "There is no index to search in. Please run whoosh indexer" | |||
|
168 | msgstr "沒有任何索引可以搜尋。請執行 whoosh 建立索引" | |||
|
169 | ||||
|
170 | #: rhodecode/controllers/search.py:118 | |||
|
171 | msgid "An error occurred during this search operation" | |||
|
172 | msgstr "" | |||
|
173 | ||||
|
174 | #: rhodecode/controllers/settings.py:61 | |||
|
175 | #: rhodecode/controllers/settings.py:171 | |||
|
176 | #, python-format | |||
|
177 | msgid "%s repository is not mapped to db perhaps it was created or renamed from the file system please run the application again in order to rescan repositories" | |||
|
178 | msgstr "" | |||
|
179 | ||||
|
180 | #: rhodecode/controllers/settings.py:109 | |||
|
181 | #: rhodecode/controllers/admin/repos.py:239 | |||
|
182 | #, python-format | |||
|
183 | msgid "Repository %s updated successfully" | |||
|
184 | msgstr "版本庫 %s 更新完成" | |||
|
185 | ||||
|
186 | #: rhodecode/controllers/settings.py:126 | |||
|
187 | #: rhodecode/controllers/admin/repos.py:257 | |||
|
188 | #, python-format | |||
|
189 | msgid "error occurred during update of repository %s" | |||
|
190 | msgstr "" | |||
|
191 | ||||
|
192 | #: rhodecode/controllers/settings.py:144 | |||
|
193 | #: rhodecode/controllers/admin/repos.py:275 | |||
|
194 | #, python-format | |||
|
195 | msgid "%s repository is not mapped to db perhaps it was moved or renamed from the filesystem please run the application again in order to rescan repositories" | |||
|
196 | msgstr "" | |||
|
197 | ||||
|
198 | #: rhodecode/controllers/settings.py:156 | |||
|
199 | #: rhodecode/controllers/admin/repos.py:287 | |||
|
200 | #, python-format | |||
|
201 | msgid "deleted repository %s" | |||
|
202 | msgstr "刪除版本庫 %s" | |||
|
203 | ||||
|
204 | #: rhodecode/controllers/settings.py:159 | |||
|
205 | #: rhodecode/controllers/admin/repos.py:297 | |||
|
206 | #: rhodecode/controllers/admin/repos.py:303 | |||
|
207 | #, python-format | |||
|
208 | msgid "An error occurred during deletion of %s" | |||
|
209 | msgstr "" | |||
|
210 | ||||
|
211 | #: rhodecode/controllers/settings.py:193 | |||
|
212 | #, python-format | |||
|
213 | msgid "forked %s repository as %s" | |||
|
214 | msgstr "forked %s 版本庫為 %s" | |||
|
215 | ||||
|
216 | #: rhodecode/controllers/settings.py:211 | |||
|
217 | #, python-format | |||
|
218 | msgid "An error occurred during repository forking %s" | |||
|
219 | msgstr "" | |||
|
220 | ||||
|
221 | #: rhodecode/controllers/summary.py:123 | |||
|
222 | msgid "No data loaded yet" | |||
|
223 | msgstr "" | |||
|
224 | ||||
|
225 | #: rhodecode/controllers/summary.py:126 | |||
|
226 | msgid "Statistics are disabled for this repository" | |||
|
227 | msgstr "這個版本庫的統計功能已停用" | |||
|
228 | ||||
|
229 | #: rhodecode/controllers/admin/ldap_settings.py:49 | |||
|
230 | msgid "BASE" | |||
|
231 | msgstr "" | |||
|
232 | ||||
|
233 | #: rhodecode/controllers/admin/ldap_settings.py:50 | |||
|
234 | msgid "ONELEVEL" | |||
|
235 | msgstr "" | |||
|
236 | ||||
|
237 | #: rhodecode/controllers/admin/ldap_settings.py:51 | |||
|
238 | msgid "SUBTREE" | |||
|
239 | msgstr "" | |||
|
240 | ||||
|
241 | #: rhodecode/controllers/admin/ldap_settings.py:55 | |||
|
242 | msgid "NEVER" | |||
|
243 | msgstr "" | |||
|
244 | ||||
|
245 | #: rhodecode/controllers/admin/ldap_settings.py:56 | |||
|
246 | msgid "ALLOW" | |||
|
247 | msgstr "" | |||
|
248 | ||||
|
249 | #: rhodecode/controllers/admin/ldap_settings.py:57 | |||
|
250 | msgid "TRY" | |||
|
251 | msgstr "" | |||
|
252 | ||||
|
253 | #: rhodecode/controllers/admin/ldap_settings.py:58 | |||
|
254 | msgid "DEMAND" | |||
|
255 | msgstr "" | |||
|
256 | ||||
|
257 | #: rhodecode/controllers/admin/ldap_settings.py:59 | |||
|
258 | msgid "HARD" | |||
|
259 | msgstr "" | |||
|
260 | ||||
|
261 | #: rhodecode/controllers/admin/ldap_settings.py:63 | |||
|
262 | msgid "No encryption" | |||
|
263 | msgstr "無加密" | |||
|
264 | ||||
|
265 | #: rhodecode/controllers/admin/ldap_settings.py:64 | |||
|
266 | msgid "LDAPS connection" | |||
|
267 | msgstr "" | |||
|
268 | ||||
|
269 | #: rhodecode/controllers/admin/ldap_settings.py:65 | |||
|
270 | msgid "START_TLS on LDAP connection" | |||
|
271 | msgstr "" | |||
|
272 | ||||
|
273 | #: rhodecode/controllers/admin/ldap_settings.py:115 | |||
|
274 | msgid "Ldap settings updated successfully" | |||
|
275 | msgstr "LDAP設定更新完成" | |||
|
276 | ||||
|
277 | #: rhodecode/controllers/admin/ldap_settings.py:120 | |||
|
278 | msgid "Unable to activate ldap. The \"python-ldap\" library is missing." | |||
|
279 | msgstr "無法啟用LDAP。找不到python-ldap函式庫" | |||
|
280 | ||||
|
281 | #: rhodecode/controllers/admin/ldap_settings.py:134 | |||
|
282 | msgid "error occurred during update of ldap settings" | |||
|
283 | msgstr "" | |||
|
284 | ||||
|
285 | #: rhodecode/controllers/admin/permissions.py:56 | |||
|
286 | msgid "None" | |||
|
287 | msgstr "無" | |||
|
288 | ||||
|
289 | #: rhodecode/controllers/admin/permissions.py:57 | |||
|
290 | msgid "Read" | |||
|
291 | msgstr "讀" | |||
|
292 | ||||
|
293 | #: rhodecode/controllers/admin/permissions.py:58 | |||
|
294 | msgid "Write" | |||
|
295 | msgstr "寫" | |||
|
296 | ||||
|
297 | #: rhodecode/controllers/admin/permissions.py:59 | |||
|
298 | #: rhodecode/templates/admin/ldap/ldap.html:9 | |||
|
299 | #: rhodecode/templates/admin/permissions/permissions.html:9 | |||
|
300 | #: rhodecode/templates/admin/repos/repo_add.html:9 | |||
|
301 | #: rhodecode/templates/admin/repos/repo_edit.html:9 | |||
|
302 | #: rhodecode/templates/admin/repos/repos.html:10 | |||
|
303 | #: rhodecode/templates/admin/repos_groups/repos_groups_add.html:8 | |||
|
304 | #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:8 | |||
|
305 | #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:10 | |||
|
306 | #: rhodecode/templates/admin/settings/hooks.html:9 | |||
|
307 | #: rhodecode/templates/admin/settings/settings.html:9 | |||
|
308 | #: rhodecode/templates/admin/users/user_add.html:8 | |||
|
309 | #: rhodecode/templates/admin/users/user_edit.html:9 | |||
|
310 | #: rhodecode/templates/admin/users/user_edit.html:110 | |||
|
311 | #: rhodecode/templates/admin/users/users.html:9 | |||
|
312 | #: rhodecode/templates/admin/users_groups/users_group_add.html:8 | |||
|
313 | #: rhodecode/templates/admin/users_groups/users_group_edit.html:9 | |||
|
314 | #: rhodecode/templates/admin/users_groups/users_groups.html:9 | |||
|
315 | #: rhodecode/templates/base/base.html:279 | |||
|
316 | #: rhodecode/templates/base/base.html:366 | |||
|
317 | #: rhodecode/templates/base/base.html:368 | |||
|
318 | #: rhodecode/templates/base/base.html:370 | |||
|
319 | msgid "Admin" | |||
|
320 | msgstr "管理" | |||
|
321 | ||||
|
322 | #: rhodecode/controllers/admin/permissions.py:62 | |||
|
323 | msgid "disabled" | |||
|
324 | msgstr "停用" | |||
|
325 | ||||
|
326 | #: rhodecode/controllers/admin/permissions.py:64 | |||
|
327 | msgid "allowed with manual account activation" | |||
|
328 | msgstr "允許手動啟用帳號" | |||
|
329 | ||||
|
330 | #: rhodecode/controllers/admin/permissions.py:66 | |||
|
331 | msgid "allowed with automatic account activation" | |||
|
332 | msgstr "允許自動啟用帳號" | |||
|
333 | ||||
|
334 | #: rhodecode/controllers/admin/permissions.py:68 | |||
|
335 | msgid "Disabled" | |||
|
336 | msgstr "停用" | |||
|
337 | ||||
|
338 | #: rhodecode/controllers/admin/permissions.py:69 | |||
|
339 | msgid "Enabled" | |||
|
340 | msgstr "啟用" | |||
|
341 | ||||
|
342 | #: rhodecode/controllers/admin/permissions.py:102 | |||
|
343 | msgid "Default permissions updated successfully" | |||
|
344 | msgstr "預設權限更新完成" | |||
|
345 | ||||
|
346 | #: rhodecode/controllers/admin/permissions.py:119 | |||
|
347 | msgid "error occurred during update of permissions" | |||
|
348 | msgstr "" | |||
|
349 | ||||
|
350 | #: rhodecode/controllers/admin/repos.py:96 | |||
|
351 | #, python-format | |||
|
352 | msgid "%s repository is not mapped to db perhaps it was created or renamed from the filesystem please run the application again in order to rescan repositories" | |||
|
353 | msgstr "" | |||
|
354 | ||||
|
355 | #: rhodecode/controllers/admin/repos.py:172 | |||
|
356 | #, python-format | |||
|
357 | msgid "created repository %s from %s" | |||
|
358 | msgstr "建立版本庫 %s 到 %s" | |||
|
359 | ||||
|
360 | #: rhodecode/controllers/admin/repos.py:176 | |||
|
361 | #, python-format | |||
|
362 | msgid "created repository %s" | |||
|
363 | msgstr "建立版本庫 %s" | |||
|
364 | ||||
|
365 | #: rhodecode/controllers/admin/repos.py:205 | |||
|
366 | #, python-format | |||
|
367 | msgid "error occurred during creation of repository %s" | |||
|
368 | msgstr "" | |||
|
369 | ||||
|
370 | #: rhodecode/controllers/admin/repos.py:292 | |||
|
371 | #, python-format | |||
|
372 | msgid "Cannot delete %s it still contains attached forks" | |||
|
373 | msgstr "" | |||
|
374 | ||||
|
375 | #: rhodecode/controllers/admin/repos.py:320 | |||
|
376 | msgid "An error occurred during deletion of repository user" | |||
|
377 | msgstr "" | |||
|
378 | ||||
|
379 | #: rhodecode/controllers/admin/repos.py:335 | |||
|
380 | msgid "An error occurred during deletion of repository users groups" | |||
|
381 | msgstr "" | |||
|
382 | ||||
|
383 | #: rhodecode/controllers/admin/repos.py:352 | |||
|
384 | msgid "An error occurred during deletion of repository stats" | |||
|
385 | msgstr "" | |||
|
386 | ||||
|
387 | #: rhodecode/controllers/admin/repos.py:367 | |||
|
388 | msgid "An error occurred during cache invalidation" | |||
|
389 | msgstr "" | |||
|
390 | ||||
|
391 | #: rhodecode/controllers/admin/repos.py:387 | |||
|
392 | msgid "Updated repository visibility in public journal" | |||
|
393 | msgstr "" | |||
|
394 | ||||
|
395 | #: rhodecode/controllers/admin/repos.py:390 | |||
|
396 | msgid "An error occurred during setting this repository in public journal" | |||
|
397 | msgstr "" | |||
|
398 | ||||
|
399 | #: rhodecode/controllers/admin/repos.py:395 | |||
|
400 | #: rhodecode/model/forms.py:53 | |||
|
401 | msgid "Token mismatch" | |||
|
402 | msgstr "" | |||
|
403 | ||||
|
404 | #: rhodecode/controllers/admin/repos.py:408 | |||
|
405 | msgid "Pulled from remote location" | |||
|
406 | msgstr "" | |||
|
407 | ||||
|
408 | #: rhodecode/controllers/admin/repos.py:410 | |||
|
409 | msgid "An error occurred during pull from remote location" | |||
|
410 | msgstr "" | |||
|
411 | ||||
|
412 | #: rhodecode/controllers/admin/repos_groups.py:83 | |||
|
413 | #, python-format | |||
|
414 | msgid "created repos group %s" | |||
|
415 | msgstr "建立版本庫群組 %s" | |||
|
416 | ||||
|
417 | #: rhodecode/controllers/admin/repos_groups.py:96 | |||
|
418 | #, python-format | |||
|
419 | msgid "error occurred during creation of repos group %s" | |||
|
420 | msgstr "" | |||
|
421 | ||||
|
422 | #: rhodecode/controllers/admin/repos_groups.py:130 | |||
|
423 | #, python-format | |||
|
424 | msgid "updated repos group %s" | |||
|
425 | msgstr "更新版本庫群組 %s" | |||
|
426 | ||||
|
427 | #: rhodecode/controllers/admin/repos_groups.py:143 | |||
|
428 | #, python-format | |||
|
429 | msgid "error occurred during update of repos group %s" | |||
|
430 | msgstr "" | |||
|
431 | ||||
|
432 | #: rhodecode/controllers/admin/repos_groups.py:164 | |||
|
433 | #, python-format | |||
|
434 | msgid "This group contains %s repositores and cannot be deleted" | |||
|
435 | msgstr "" | |||
|
436 | ||||
|
437 | #: rhodecode/controllers/admin/repos_groups.py:171 | |||
|
438 | #, python-format | |||
|
439 | msgid "removed repos group %s" | |||
|
440 | msgstr "移除版本庫群組 %s" | |||
|
441 | ||||
|
442 | #: rhodecode/controllers/admin/repos_groups.py:175 | |||
|
443 | #, python-format | |||
|
444 | msgid "error occurred during deletion of repos group %s" | |||
|
445 | msgstr "" | |||
|
446 | ||||
|
447 | #: rhodecode/controllers/admin/settings.py:109 | |||
|
448 | #, python-format | |||
|
449 | msgid "Repositories successfully rescanned added: %s,removed: %s" | |||
|
450 | msgstr "" | |||
|
451 | ||||
|
452 | #: rhodecode/controllers/admin/settings.py:118 | |||
|
453 | msgid "Whoosh reindex task scheduled" | |||
|
454 | msgstr "Whoosh 重新索引工作排程" | |||
|
455 | ||||
|
456 | #: rhodecode/controllers/admin/settings.py:143 | |||
|
457 | msgid "Updated application settings" | |||
|
458 | msgstr "更新應用設定" | |||
|
459 | ||||
|
460 | #: rhodecode/controllers/admin/settings.py:148 | |||
|
461 | #: rhodecode/controllers/admin/settings.py:215 | |||
|
462 | msgid "error occurred during updating application settings" | |||
|
463 | msgstr "" | |||
|
464 | ||||
|
465 | #: rhodecode/controllers/admin/settings.py:210 | |||
|
466 | msgid "Updated mercurial settings" | |||
|
467 | msgstr "更新 mercurial 設定" | |||
|
468 | ||||
|
469 | #: rhodecode/controllers/admin/settings.py:236 | |||
|
470 | msgid "Added new hook" | |||
|
471 | msgstr "新增hook" | |||
|
472 | ||||
|
473 | #: rhodecode/controllers/admin/settings.py:247 | |||
|
474 | msgid "Updated hooks" | |||
|
475 | msgstr "更新hook" | |||
|
476 | ||||
|
477 | #: rhodecode/controllers/admin/settings.py:251 | |||
|
478 | msgid "error occurred during hook creation" | |||
|
479 | msgstr "" | |||
|
480 | ||||
|
481 | #: rhodecode/controllers/admin/settings.py:310 | |||
|
482 | msgid "You can't edit this user since it's crucial for entire application" | |||
|
483 | msgstr "" | |||
|
484 | ||||
|
485 | #: rhodecode/controllers/admin/settings.py:339 | |||
|
486 | msgid "Your account was updated successfully" | |||
|
487 | msgstr "您的帳號已更新完成" | |||
|
488 | ||||
|
489 | #: rhodecode/controllers/admin/settings.py:359 | |||
|
490 | #: rhodecode/controllers/admin/users.py:130 | |||
|
491 | #, python-format | |||
|
492 | msgid "error occurred during update of user %s" | |||
|
493 | msgstr "" | |||
|
494 | ||||
|
495 | #: rhodecode/controllers/admin/users.py:78 | |||
|
496 | #, python-format | |||
|
497 | msgid "created user %s" | |||
|
498 | msgstr "建立使用者 %s" | |||
|
499 | ||||
|
500 | #: rhodecode/controllers/admin/users.py:90 | |||
|
501 | #, python-format | |||
|
502 | msgid "error occurred during creation of user %s" | |||
|
503 | msgstr "" | |||
|
504 | ||||
|
505 | #: rhodecode/controllers/admin/users.py:116 | |||
|
506 | msgid "User updated successfully" | |||
|
507 | msgstr "使用者更新完成" | |||
|
508 | ||||
|
509 | #: rhodecode/controllers/admin/users.py:146 | |||
|
510 | msgid "successfully deleted user" | |||
|
511 | msgstr "成功刪除使用者" | |||
|
512 | ||||
|
513 | #: rhodecode/controllers/admin/users.py:150 | |||
|
514 | msgid "An error occurred during deletion of user" | |||
|
515 | msgstr "" | |||
|
516 | ||||
|
517 | #: rhodecode/controllers/admin/users.py:166 | |||
|
518 | msgid "You can't edit this user" | |||
|
519 | msgstr "您無法編輯這位使用者" | |||
|
520 | ||||
|
521 | #: rhodecode/controllers/admin/users.py:195 | |||
|
522 | #: rhodecode/controllers/admin/users_groups.py:202 | |||
|
523 | msgid "Granted 'repository create' permission to user" | |||
|
524 | msgstr "" | |||
|
525 | ||||
|
526 | #: rhodecode/controllers/admin/users.py:204 | |||
|
527 | #: rhodecode/controllers/admin/users_groups.py:211 | |||
|
528 | msgid "Revoked 'repository create' permission to user" | |||
|
529 | msgstr "" | |||
|
530 | ||||
|
531 | #: rhodecode/controllers/admin/users_groups.py:74 | |||
|
532 | #, python-format | |||
|
533 | msgid "created users group %s" | |||
|
534 | msgstr "建立使用者群組 %s" | |||
|
535 | ||||
|
536 | #: rhodecode/controllers/admin/users_groups.py:86 | |||
|
537 | #, python-format | |||
|
538 | msgid "error occurred during creation of users group %s" | |||
|
539 | msgstr "" | |||
|
540 | ||||
|
541 | #: rhodecode/controllers/admin/users_groups.py:119 | |||
|
542 | #, python-format | |||
|
543 | msgid "updated users group %s" | |||
|
544 | msgstr "更新使用者群組 %s" | |||
|
545 | ||||
|
546 | #: rhodecode/controllers/admin/users_groups.py:138 | |||
|
547 | #, python-format | |||
|
548 | msgid "error occurred during update of users group %s" | |||
|
549 | msgstr "" | |||
|
550 | ||||
|
551 | #: rhodecode/controllers/admin/users_groups.py:154 | |||
|
552 | msgid "successfully deleted users group" | |||
|
553 | msgstr "成功移除使用者群組" | |||
|
554 | ||||
|
555 | #: rhodecode/controllers/admin/users_groups.py:158 | |||
|
556 | msgid "An error occurred during deletion of users group" | |||
|
557 | msgstr "" | |||
|
558 | ||||
|
559 | #: rhodecode/lib/__init__.py:279 | |||
|
560 | msgid "year" | |||
|
561 | msgstr "年" | |||
|
562 | ||||
|
563 | #: rhodecode/lib/__init__.py:280 | |||
|
564 | msgid "month" | |||
|
565 | msgstr "月" | |||
|
566 | ||||
|
567 | #: rhodecode/lib/__init__.py:281 | |||
|
568 | msgid "day" | |||
|
569 | msgstr "日" | |||
|
570 | ||||
|
571 | #: rhodecode/lib/__init__.py:282 | |||
|
572 | msgid "hour" | |||
|
573 | msgstr "時" | |||
|
574 | ||||
|
575 | #: rhodecode/lib/__init__.py:283 | |||
|
576 | msgid "minute" | |||
|
577 | msgstr "分" | |||
|
578 | ||||
|
579 | #: rhodecode/lib/__init__.py:284 | |||
|
580 | msgid "second" | |||
|
581 | msgstr "秒" | |||
|
582 | ||||
|
583 | #: rhodecode/lib/__init__.py:293 | |||
|
584 | msgid "ago" | |||
|
585 | msgstr "之前" | |||
|
586 | ||||
|
587 | #: rhodecode/lib/__init__.py:296 | |||
|
588 | msgid "just now" | |||
|
589 | msgstr "現在" | |||
|
590 | ||||
|
591 | #: rhodecode/lib/auth.py:377 | |||
|
592 | msgid "You need to be a registered user to perform this action" | |||
|
593 | msgstr "您必須是註冊使用者才能執行這個動作" | |||
|
594 | ||||
|
595 | #: rhodecode/lib/auth.py:421 | |||
|
596 | msgid "You need to be a signed in to view this page" | |||
|
597 | msgstr "您必須登入後才能瀏覽這個頁面" | |||
|
598 | ||||
|
599 | #: rhodecode/lib/helpers.py:307 | |||
|
600 | msgid "True" | |||
|
601 | msgstr "真" | |||
|
602 | ||||
|
603 | #: rhodecode/lib/helpers.py:311 | |||
|
604 | msgid "False" | |||
|
605 | msgstr "假" | |||
|
606 | ||||
|
607 | #: rhodecode/lib/helpers.py:352 | |||
|
608 | #, python-format | |||
|
609 | msgid "Show all combined changesets %s->%s" | |||
|
610 | msgstr "" | |||
|
611 | ||||
|
612 | #: rhodecode/lib/helpers.py:356 | |||
|
613 | msgid "compare view" | |||
|
614 | msgstr "" | |||
|
615 | ||||
|
616 | #: rhodecode/lib/helpers.py:365 | |||
|
617 | msgid "and" | |||
|
618 | msgstr "和" | |||
|
619 | ||||
|
620 | #: rhodecode/lib/helpers.py:365 | |||
|
621 | #, python-format | |||
|
622 | msgid "%s more" | |||
|
623 | msgstr "" | |||
|
624 | ||||
|
625 | #: rhodecode/lib/helpers.py:367 | |||
|
626 | #: rhodecode/templates/changelog/changelog.html:14 | |||
|
627 | #: rhodecode/templates/changelog/changelog.html:39 | |||
|
628 | msgid "revisions" | |||
|
629 | msgstr "修訂" | |||
|
630 | ||||
|
631 | #: rhodecode/lib/helpers.py:385 | |||
|
632 | msgid "fork name " | |||
|
633 | msgstr "fork 名稱" | |||
|
634 | ||||
|
635 | #: rhodecode/lib/helpers.py:388 | |||
|
636 | msgid "[deleted] repository" | |||
|
637 | msgstr "" | |||
|
638 | ||||
|
639 | #: rhodecode/lib/helpers.py:389 | |||
|
640 | #: rhodecode/lib/helpers.py:393 | |||
|
641 | msgid "[created] repository" | |||
|
642 | msgstr "" | |||
|
643 | ||||
|
644 | #: rhodecode/lib/helpers.py:390 | |||
|
645 | #: rhodecode/lib/helpers.py:394 | |||
|
646 | msgid "[forked] repository" | |||
|
647 | msgstr "" | |||
|
648 | ||||
|
649 | #: rhodecode/lib/helpers.py:391 | |||
|
650 | #: rhodecode/lib/helpers.py:395 | |||
|
651 | msgid "[updated] repository" | |||
|
652 | msgstr "" | |||
|
653 | ||||
|
654 | #: rhodecode/lib/helpers.py:392 | |||
|
655 | msgid "[delete] repository" | |||
|
656 | msgstr "" | |||
|
657 | ||||
|
658 | #: rhodecode/lib/helpers.py:396 | |||
|
659 | msgid "[pushed] into" | |||
|
660 | msgstr "" | |||
|
661 | ||||
|
662 | #: rhodecode/lib/helpers.py:397 | |||
|
663 | msgid "[committed via RhodeCode] into" | |||
|
664 | msgstr "" | |||
|
665 | ||||
|
666 | #: rhodecode/lib/helpers.py:398 | |||
|
667 | msgid "[pulled from remote] into" | |||
|
668 | msgstr "" | |||
|
669 | ||||
|
670 | #: rhodecode/lib/helpers.py:399 | |||
|
671 | msgid "[pulled] from" | |||
|
672 | msgstr "" | |||
|
673 | ||||
|
674 | #: rhodecode/lib/helpers.py:400 | |||
|
675 | msgid "[started following] repository" | |||
|
676 | msgstr "" | |||
|
677 | ||||
|
678 | #: rhodecode/lib/helpers.py:401 | |||
|
679 | msgid "[stopped following] repository" | |||
|
680 | msgstr "" | |||
|
681 | ||||
|
682 | #: rhodecode/lib/helpers.py:577 | |||
|
683 | #, python-format | |||
|
684 | msgid " and %s more" | |||
|
685 | msgstr "" | |||
|
686 | ||||
|
687 | #: rhodecode/lib/helpers.py:581 | |||
|
688 | msgid "No Files" | |||
|
689 | msgstr "沒有檔案" | |||
|
690 | ||||
|
691 | #: rhodecode/model/forms.py:66 | |||
|
692 | msgid "Invalid username" | |||
|
693 | msgstr "無效的使用者名稱" | |||
|
694 | ||||
|
695 | #: rhodecode/model/forms.py:75 | |||
|
696 | msgid "This username already exists" | |||
|
697 | msgstr "使用者名稱已存在" | |||
|
698 | ||||
|
699 | #: rhodecode/model/forms.py:79 | |||
|
700 | msgid "Username may only contain alphanumeric characters underscores, periods or dashes and must begin with alphanumeric character" | |||
|
701 | msgstr "使用者名稱只能使用字母數字、底線、小數點或破折號,且必須使用數字或字母開頭" | |||
|
702 | ||||
|
703 | #: rhodecode/model/forms.py:94 | |||
|
704 | msgid "Invalid group name" | |||
|
705 | msgstr "無效的群組名稱" | |||
|
706 | ||||
|
707 | #: rhodecode/model/forms.py:104 | |||
|
708 | msgid "This users group already exists" | |||
|
709 | msgstr "這個使用者群組已存在" | |||
|
710 | ||||
|
711 | #: rhodecode/model/forms.py:110 | |||
|
712 | msgid "Group name may only contain alphanumeric characters underscores, periods or dashes and must begin with alphanumeric character" | |||
|
713 | msgstr "群組名稱只能使用字母數字、底線、小數點或破折號,且必須使用數字或字母開頭" | |||
|
714 | ||||
|
715 | #: rhodecode/model/forms.py:132 | |||
|
716 | msgid "Cannot assign this group as parent" | |||
|
717 | msgstr "" | |||
|
718 | ||||
|
719 | #: rhodecode/model/forms.py:148 | |||
|
720 | msgid "This group already exists" | |||
|
721 | msgstr "這個群組已存在" | |||
|
722 | ||||
|
723 | #: rhodecode/model/forms.py:164 | |||
|
724 | #: rhodecode/model/forms.py:172 | |||
|
725 | #: rhodecode/model/forms.py:180 | |||
|
726 | msgid "Invalid characters in password" | |||
|
727 | msgstr "無效的字元在密碼中" | |||
|
728 | ||||
|
729 | #: rhodecode/model/forms.py:191 | |||
|
730 | msgid "Passwords do not match" | |||
|
731 | msgstr "密碼不相符" | |||
|
732 | ||||
|
733 | #: rhodecode/model/forms.py:196 | |||
|
734 | msgid "invalid password" | |||
|
735 | msgstr "無效的密碼" | |||
|
736 | ||||
|
737 | #: rhodecode/model/forms.py:197 | |||
|
738 | msgid "invalid user name" | |||
|
739 | msgstr "無效的使用者名稱" | |||
|
740 | ||||
|
741 | #: rhodecode/model/forms.py:198 | |||
|
742 | msgid "Your account is disabled" | |||
|
743 | msgstr "您的帳號已被停用" | |||
|
744 | ||||
|
745 | #: rhodecode/model/forms.py:233 | |||
|
746 | msgid "This username is not valid" | |||
|
747 | msgstr "無效的使用者名稱" | |||
|
748 | ||||
|
749 | #: rhodecode/model/forms.py:245 | |||
|
750 | msgid "This repository name is disallowed" | |||
|
751 | msgstr "不允許的版本庫名稱" | |||
|
752 | ||||
|
753 | #: rhodecode/model/forms.py:266 | |||
|
754 | #, python-format | |||
|
755 | msgid "This repository already exists in group \"%s\"" | |||
|
756 | msgstr "這個版本庫已存在於群組 \"%s\"" | |||
|
757 | ||||
|
758 | #: rhodecode/model/forms.py:274 | |||
|
759 | msgid "This repository already exists" | |||
|
760 | msgstr "這個版本庫已經存在" | |||
|
761 | ||||
|
762 | #: rhodecode/model/forms.py:312 | |||
|
763 | #: rhodecode/model/forms.py:319 | |||
|
764 | msgid "invalid clone url" | |||
|
765 | msgstr "無效的複製URL" | |||
|
766 | ||||
|
767 | #: rhodecode/model/forms.py:322 | |||
|
768 | msgid "Invalid clone url, provide a valid clone http\\s url" | |||
|
769 | msgstr "" | |||
|
770 | ||||
|
771 | #: rhodecode/model/forms.py:334 | |||
|
772 | msgid "Fork have to be the same type as original" | |||
|
773 | msgstr "Fork 必須使用相同的版本庫類型" | |||
|
774 | ||||
|
775 | #: rhodecode/model/forms.py:341 | |||
|
776 | msgid "This username or users group name is not valid" | |||
|
777 | msgstr "使用者名稱或群組名稱無效" | |||
|
778 | ||||
|
779 | #: rhodecode/model/forms.py:403 | |||
|
780 | msgid "This is not a valid path" | |||
|
781 | msgstr "不是一個有效的路徑" | |||
|
782 | ||||
|
783 | #: rhodecode/model/forms.py:416 | |||
|
784 | msgid "This e-mail address is already taken" | |||
|
785 | msgstr "這個郵件位址已經使用了" | |||
|
786 | ||||
|
787 | #: rhodecode/model/forms.py:427 | |||
|
788 | msgid "This e-mail address doesn't exist." | |||
|
789 | msgstr "這個郵件位址不存在" | |||
|
790 | ||||
|
791 | #: rhodecode/model/forms.py:447 | |||
|
792 | msgid "The LDAP Login attribute of the CN must be specified - this is the name of the attribute that is equivalent to 'username'" | |||
|
793 | msgstr "" | |||
|
794 | ||||
|
795 | #: rhodecode/model/forms.py:466 | |||
|
796 | msgid "Please enter a login" | |||
|
797 | msgstr "請登入" | |||
|
798 | ||||
|
799 | #: rhodecode/model/forms.py:467 | |||
|
800 | #, python-format | |||
|
801 | msgid "Enter a value %(min)i characters long or more" | |||
|
802 | msgstr "" | |||
|
803 | ||||
|
804 | #: rhodecode/model/forms.py:475 | |||
|
805 | msgid "Please enter a password" | |||
|
806 | msgstr "請輸入密碼" | |||
|
807 | ||||
|
808 | #: rhodecode/model/forms.py:476 | |||
|
809 | #, python-format | |||
|
810 | msgid "Enter %(min)i characters or more" | |||
|
811 | msgstr "" | |||
|
812 | ||||
|
813 | #: rhodecode/model/user.py:145 | |||
|
814 | msgid "[RhodeCode] New User registration" | |||
|
815 | msgstr "[RhodeCode] 新使用者註冊" | |||
|
816 | ||||
|
817 | #: rhodecode/model/user.py:157 | |||
|
818 | #: rhodecode/model/user.py:179 | |||
|
819 | msgid "You can't Edit this user since it's crucial for entire application" | |||
|
820 | msgstr "您無法編輯這個使用者,因為他是系統帳號" | |||
|
821 | ||||
|
822 | #: rhodecode/model/user.py:201 | |||
|
823 | msgid "You can't remove this user since it's crucial for entire application" | |||
|
824 | msgstr "您無法移除這個使用者,因為他是系統帳號" | |||
|
825 | ||||
|
826 | #: rhodecode/model/user.py:204 | |||
|
827 | #, python-format | |||
|
828 | msgid "This user still owns %s repositories and cannot be removed. Switch owners or remove those repositories" | |||
|
829 | msgstr "這個使用者擁有 %s 個版本庫所以無法移除,請先變更版本庫擁有者或者刪除版本庫" | |||
|
830 | ||||
|
831 | #: rhodecode/templates/index.html:4 | |||
|
832 | msgid "Dashboard" | |||
|
833 | msgstr "儀表板" | |||
|
834 | ||||
|
835 | #: rhodecode/templates/index_base.html:22 | |||
|
836 | #: rhodecode/templates/admin/users/user_edit_my_account.html:102 | |||
|
837 | msgid "quick filter..." | |||
|
838 | msgstr "快速過濾..." | |||
|
839 | ||||
|
840 | #: rhodecode/templates/index_base.html:23 | |||
|
841 | #: rhodecode/templates/base/base.html:300 | |||
|
842 | msgid "repositories" | |||
|
843 | msgstr "個版本庫" | |||
|
844 | ||||
|
845 | #: rhodecode/templates/index_base.html:29 | |||
|
846 | #: rhodecode/templates/admin/repos/repos.html:22 | |||
|
847 | msgid "ADD NEW REPOSITORY" | |||
|
848 | msgstr "新增版本庫" | |||
|
849 | ||||
|
850 | #: rhodecode/templates/index_base.html:41 | |||
|
851 | #: rhodecode/templates/admin/repos_groups/repos_groups_add.html:32 | |||
|
852 | #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:32 | |||
|
853 | #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:33 | |||
|
854 | #: rhodecode/templates/admin/users_groups/users_group_add.html:32 | |||
|
855 | #: rhodecode/templates/admin/users_groups/users_group_edit.html:33 | |||
|
856 | msgid "Group name" | |||
|
857 | msgstr "群組名稱" | |||
|
858 | ||||
|
859 | #: rhodecode/templates/index_base.html:42 | |||
|
860 | #: rhodecode/templates/index_base.html:73 | |||
|
861 | #: rhodecode/templates/admin/repos/repo_add_base.html:44 | |||
|
862 | #: rhodecode/templates/admin/repos/repo_edit.html:64 | |||
|
863 | #: rhodecode/templates/admin/repos/repos.html:31 | |||
|
864 | #: rhodecode/templates/admin/repos_groups/repos_groups_add.html:41 | |||
|
865 | #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:41 | |||
|
866 | #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:34 | |||
|
867 | #: rhodecode/templates/settings/repo_fork.html:40 | |||
|
868 | #: rhodecode/templates/settings/repo_settings.html:40 | |||
|
869 | #: rhodecode/templates/summary/summary.html:92 | |||
|
870 | msgid "Description" | |||
|
871 | msgstr "描述" | |||
|
872 | ||||
|
873 | #: rhodecode/templates/index_base.html:53 | |||
|
874 | #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:46 | |||
|
875 | msgid "Repositories group" | |||
|
876 | msgstr "版本庫群組" | |||
|
877 | ||||
|
878 | #: rhodecode/templates/index_base.html:72 | |||
|
879 | #: rhodecode/templates/admin/repos/repo_add_base.html:9 | |||
|
880 | #: rhodecode/templates/admin/repos/repo_edit.html:32 | |||
|
881 | #: rhodecode/templates/admin/repos/repos.html:30 | |||
|
882 | #: rhodecode/templates/admin/users/user_edit_my_account.html:117 | |||
|
883 | #: rhodecode/templates/files/files_browser.html:157 | |||
|
884 | #: rhodecode/templates/settings/repo_settings.html:31 | |||
|
885 | #: rhodecode/templates/summary/summary.html:31 | |||
|
886 | #: rhodecode/templates/summary/summary.html:107 | |||
|
887 | msgid "Name" | |||
|
888 | msgstr "名稱" | |||
|
889 | ||||
|
890 | #: rhodecode/templates/index_base.html:74 | |||
|
891 | #: rhodecode/templates/admin/repos/repos.html:32 | |||
|
892 | #: rhodecode/templates/summary/summary.html:114 | |||
|
893 | msgid "Last change" | |||
|
894 | msgstr "最後修改" | |||
|
895 | ||||
|
896 | #: rhodecode/templates/index_base.html:75 | |||
|
897 | #: rhodecode/templates/admin/repos/repos.html:33 | |||
|
898 | msgid "Tip" | |||
|
899 | msgstr "" | |||
|
900 | ||||
|
901 | #: rhodecode/templates/index_base.html:76 | |||
|
902 | #: rhodecode/templates/admin/repos/repo_edit.html:97 | |||
|
903 | msgid "Owner" | |||
|
904 | msgstr "擁有者" | |||
|
905 | ||||
|
906 | #: rhodecode/templates/index_base.html:77 | |||
|
907 | #: rhodecode/templates/journal/public_journal.html:20 | |||
|
908 | #: rhodecode/templates/summary/summary.html:180 | |||
|
909 | #: rhodecode/templates/summary/summary.html:183 | |||
|
910 | msgid "RSS" | |||
|
911 | msgstr "" | |||
|
912 | ||||
|
913 | #: rhodecode/templates/index_base.html:78 | |||
|
914 | #: rhodecode/templates/journal/public_journal.html:23 | |||
|
915 | #: rhodecode/templates/summary/summary.html:181 | |||
|
916 | #: rhodecode/templates/summary/summary.html:184 | |||
|
917 | msgid "Atom" | |||
|
918 | msgstr "" | |||
|
919 | ||||
|
920 | #: rhodecode/templates/index_base.html:87 | |||
|
921 | #: rhodecode/templates/index_base.html:89 | |||
|
922 | #: rhodecode/templates/index_base.html:91 | |||
|
923 | #: rhodecode/templates/base/base.html:209 | |||
|
924 | #: rhodecode/templates/base/base.html:211 | |||
|
925 | #: rhodecode/templates/base/base.html:213 | |||
|
926 | #: rhodecode/templates/summary/summary.html:4 | |||
|
927 | msgid "Summary" | |||
|
928 | msgstr "概況" | |||
|
929 | ||||
|
930 | #: rhodecode/templates/index_base.html:95 | |||
|
931 | #: rhodecode/templates/index_base.html:97 | |||
|
932 | #: rhodecode/templates/index_base.html:99 | |||
|
933 | #: rhodecode/templates/base/base.html:225 | |||
|
934 | #: rhodecode/templates/base/base.html:227 | |||
|
935 | #: rhodecode/templates/base/base.html:229 | |||
|
936 | #: rhodecode/templates/changelog/changelog.html:6 | |||
|
937 | #: rhodecode/templates/changelog/changelog.html:14 | |||
|
938 | msgid "Changelog" | |||
|
939 | msgstr "修改紀錄" | |||
|
940 | ||||
|
941 | #: rhodecode/templates/index_base.html:103 | |||
|
942 | #: rhodecode/templates/index_base.html:105 | |||
|
943 | #: rhodecode/templates/index_base.html:107 | |||
|
944 | #: rhodecode/templates/base/base.html:268 | |||
|
945 | #: rhodecode/templates/base/base.html:270 | |||
|
946 | #: rhodecode/templates/base/base.html:272 | |||
|
947 | #: rhodecode/templates/files/files.html:4 | |||
|
948 | msgid "Files" | |||
|
949 | msgstr "檔案" | |||
|
950 | ||||
|
951 | #: rhodecode/templates/index_base.html:116 | |||
|
952 | #: rhodecode/templates/admin/repos/repos.html:42 | |||
|
953 | #: rhodecode/templates/admin/users/user_edit_my_account.html:127 | |||
|
954 | #: rhodecode/templates/summary/summary.html:48 | |||
|
955 | msgid "Mercurial repository" | |||
|
956 | msgstr "Mercurial 版本庫" | |||
|
957 | ||||
|
958 | #: rhodecode/templates/index_base.html:118 | |||
|
959 | #: rhodecode/templates/admin/repos/repos.html:44 | |||
|
960 | #: rhodecode/templates/admin/users/user_edit_my_account.html:129 | |||
|
961 | #: rhodecode/templates/summary/summary.html:51 | |||
|
962 | msgid "Git repository" | |||
|
963 | msgstr "Git 版本庫" | |||
|
964 | ||||
|
965 | #: rhodecode/templates/index_base.html:123 | |||
|
966 | #: rhodecode/templates/admin/repos/repo_edit_perms.html:16 | |||
|
967 | #: rhodecode/templates/journal/journal.html:53 | |||
|
968 | #: rhodecode/templates/summary/summary.html:56 | |||
|
969 | msgid "private repository" | |||
|
970 | msgstr "私有版本庫" | |||
|
971 | ||||
|
972 | #: rhodecode/templates/index_base.html:125 | |||
|
973 | #: rhodecode/templates/journal/journal.html:55 | |||
|
974 | #: rhodecode/templates/summary/summary.html:58 | |||
|
975 | msgid "public repository" | |||
|
976 | msgstr "公開版本庫" | |||
|
977 | ||||
|
978 | #: rhodecode/templates/index_base.html:133 | |||
|
979 | #: rhodecode/templates/base/base.html:291 | |||
|
980 | #: rhodecode/templates/settings/repo_fork.html:13 | |||
|
981 | msgid "fork" | |||
|
982 | msgstr "" | |||
|
983 | ||||
|
984 | #: rhodecode/templates/index_base.html:134 | |||
|
985 | #: rhodecode/templates/admin/repos/repos.html:60 | |||
|
986 | #: rhodecode/templates/admin/users/user_edit_my_account.html:143 | |||
|
987 | #: rhodecode/templates/summary/summary.html:69 | |||
|
988 | #: rhodecode/templates/summary/summary.html:71 | |||
|
989 | msgid "Fork of" | |||
|
990 | msgstr "" | |||
|
991 | ||||
|
992 | #: rhodecode/templates/index_base.html:155 | |||
|
993 | #: rhodecode/templates/admin/repos/repos.html:73 | |||
|
994 | msgid "No changesets yet" | |||
|
995 | msgstr "尚未有任何變更" | |||
|
996 | ||||
|
997 | #: rhodecode/templates/index_base.html:161 | |||
|
998 | #: rhodecode/templates/index_base.html:163 | |||
|
999 | #, python-format | |||
|
1000 | msgid "Subscribe to %s rss feed" | |||
|
1001 | msgstr "訂閱 %s rss" | |||
|
1002 | ||||
|
1003 | #: rhodecode/templates/index_base.html:168 | |||
|
1004 | #: rhodecode/templates/index_base.html:170 | |||
|
1005 | #, python-format | |||
|
1006 | msgid "Subscribe to %s atom feed" | |||
|
1007 | msgstr "訂閱 %s atom" | |||
|
1008 | ||||
|
1009 | #: rhodecode/templates/login.html:5 | |||
|
1010 | #: rhodecode/templates/login.html:54 | |||
|
1011 | #: rhodecode/templates/base/base.html:38 | |||
|
1012 | msgid "Sign In" | |||
|
1013 | msgstr "登入" | |||
|
1014 | ||||
|
1015 | #: rhodecode/templates/login.html:21 | |||
|
1016 | msgid "Sign In to" | |||
|
1017 | msgstr "登入" | |||
|
1018 | ||||
|
1019 | #: rhodecode/templates/login.html:31 | |||
|
1020 | #: rhodecode/templates/register.html:20 | |||
|
1021 | #: rhodecode/templates/admin/admin_log.html:5 | |||
|
1022 | #: rhodecode/templates/admin/users/user_add.html:32 | |||
|
1023 | #: rhodecode/templates/admin/users/user_edit.html:47 | |||
|
1024 | #: rhodecode/templates/admin/users/user_edit_my_account.html:45 | |||
|
1025 | #: rhodecode/templates/base/base.html:15 | |||
|
1026 | #: rhodecode/templates/summary/summary.html:106 | |||
|
1027 | msgid "Username" | |||
|
1028 | msgstr "帳號" | |||
|
1029 | ||||
|
1030 | #: rhodecode/templates/login.html:40 | |||
|
1031 | #: rhodecode/templates/register.html:29 | |||
|
1032 | #: rhodecode/templates/admin/ldap/ldap.html:46 | |||
|
1033 | #: rhodecode/templates/admin/users/user_add.html:41 | |||
|
1034 | #: rhodecode/templates/base/base.html:24 | |||
|
1035 | msgid "Password" | |||
|
1036 | msgstr "密碼" | |||
|
1037 | ||||
|
1038 | #: rhodecode/templates/login.html:60 | |||
|
1039 | msgid "Forgot your password ?" | |||
|
1040 | msgstr "忘記您的密碼?" | |||
|
1041 | ||||
|
1042 | #: rhodecode/templates/login.html:63 | |||
|
1043 | #: rhodecode/templates/base/base.html:35 | |||
|
1044 | msgid "Don't have an account ?" | |||
|
1045 | msgstr "沒有帳號?" | |||
|
1046 | ||||
|
1047 | #: rhodecode/templates/password_reset.html:5 | |||
|
1048 | msgid "Reset your password" | |||
|
1049 | msgstr "重設您的密碼" | |||
|
1050 | ||||
|
1051 | #: rhodecode/templates/password_reset.html:11 | |||
|
1052 | msgid "Reset your password to" | |||
|
1053 | msgstr "重設您的密碼" | |||
|
1054 | ||||
|
1055 | #: rhodecode/templates/password_reset.html:21 | |||
|
1056 | msgid "Email address" | |||
|
1057 | msgstr "郵件位址" | |||
|
1058 | ||||
|
1059 | #: rhodecode/templates/password_reset.html:30 | |||
|
1060 | msgid "Reset my password" | |||
|
1061 | msgstr "重設我的密碼" | |||
|
1062 | ||||
|
1063 | #: rhodecode/templates/password_reset.html:31 | |||
|
1064 | msgid "Password reset link will be send to matching email address" | |||
|
1065 | msgstr "密碼重設連結已郵寄至您的信箱" | |||
|
1066 | ||||
|
1067 | #: rhodecode/templates/register.html:5 | |||
|
1068 | #: rhodecode/templates/register.html:74 | |||
|
1069 | msgid "Sign Up" | |||
|
1070 | msgstr "登入" | |||
|
1071 | ||||
|
1072 | #: rhodecode/templates/register.html:11 | |||
|
1073 | msgid "Sign Up to" | |||
|
1074 | msgstr "登入" | |||
|
1075 | ||||
|
1076 | #: rhodecode/templates/register.html:38 | |||
|
1077 | msgid "Re-enter password" | |||
|
1078 | msgstr "確認密碼" | |||
|
1079 | ||||
|
1080 | #: rhodecode/templates/register.html:47 | |||
|
1081 | #: rhodecode/templates/admin/users/user_add.html:50 | |||
|
1082 | #: rhodecode/templates/admin/users/user_edit.html:74 | |||
|
1083 | #: rhodecode/templates/admin/users/user_edit_my_account.html:63 | |||
|
1084 | msgid "First Name" | |||
|
1085 | msgstr "名" | |||
|
1086 | ||||
|
1087 | #: rhodecode/templates/register.html:56 | |||
|
1088 | #: rhodecode/templates/admin/users/user_add.html:59 | |||
|
1089 | #: rhodecode/templates/admin/users/user_edit.html:83 | |||
|
1090 | #: rhodecode/templates/admin/users/user_edit_my_account.html:72 | |||
|
1091 | msgid "Last Name" | |||
|
1092 | msgstr "姓" | |||
|
1093 | ||||
|
1094 | #: rhodecode/templates/register.html:65 | |||
|
1095 | #: rhodecode/templates/admin/users/user_add.html:68 | |||
|
1096 | #: rhodecode/templates/admin/users/user_edit.html:92 | |||
|
1097 | #: rhodecode/templates/admin/users/user_edit_my_account.html:81 | |||
|
1098 | #: rhodecode/templates/summary/summary.html:108 | |||
|
1099 | msgid "Email" | |||
|
1100 | msgstr "電子郵件" | |||
|
1101 | ||||
|
1102 | #: rhodecode/templates/register.html:76 | |||
|
1103 | msgid "Your account will be activated right after registration" | |||
|
1104 | msgstr "您的帳號註冊後將會啟用" | |||
|
1105 | ||||
|
1106 | #: rhodecode/templates/register.html:78 | |||
|
1107 | msgid "Your account must wait for activation by administrator" | |||
|
1108 | msgstr "您的帳號註冊後將等待管理員啟用" | |||
|
1109 | ||||
|
1110 | #: rhodecode/templates/repo_switcher_list.html:14 | |||
|
1111 | msgid "Private repository" | |||
|
1112 | msgstr "私有的版本庫" | |||
|
1113 | ||||
|
1114 | #: rhodecode/templates/repo_switcher_list.html:19 | |||
|
1115 | msgid "Public repository" | |||
|
1116 | msgstr "公開的版本庫" | |||
|
1117 | ||||
|
1118 | #: rhodecode/templates/admin/admin.html:5 | |||
|
1119 | #: rhodecode/templates/admin/admin.html:9 | |||
|
1120 | msgid "Admin journal" | |||
|
1121 | msgstr "管理員日誌" | |||
|
1122 | ||||
|
1123 | #: rhodecode/templates/admin/admin_log.html:6 | |||
|
1124 | msgid "Action" | |||
|
1125 | msgstr "動作" | |||
|
1126 | ||||
|
1127 | #: rhodecode/templates/admin/admin_log.html:7 | |||
|
1128 | msgid "Repository" | |||
|
1129 | msgstr "版本庫" | |||
|
1130 | ||||
|
1131 | #: rhodecode/templates/admin/admin_log.html:8 | |||
|
1132 | msgid "Date" | |||
|
1133 | msgstr "時間" | |||
|
1134 | ||||
|
1135 | #: rhodecode/templates/admin/admin_log.html:9 | |||
|
1136 | msgid "From IP" | |||
|
1137 | msgstr "來源IP" | |||
|
1138 | ||||
|
1139 | #: rhodecode/templates/admin/admin_log.html:52 | |||
|
1140 | msgid "No actions yet" | |||
|
1141 | msgstr "" | |||
|
1142 | ||||
|
1143 | #: rhodecode/templates/admin/ldap/ldap.html:5 | |||
|
1144 | msgid "LDAP administration" | |||
|
1145 | msgstr "LDAP管理者" | |||
|
1146 | ||||
|
1147 | #: rhodecode/templates/admin/ldap/ldap.html:11 | |||
|
1148 | msgid "Ldap" | |||
|
1149 | msgstr "" | |||
|
1150 | ||||
|
1151 | #: rhodecode/templates/admin/ldap/ldap.html:28 | |||
|
1152 | msgid "Connection settings" | |||
|
1153 | msgstr "連接設定" | |||
|
1154 | ||||
|
1155 | #: rhodecode/templates/admin/ldap/ldap.html:30 | |||
|
1156 | msgid "Enable LDAP" | |||
|
1157 | msgstr "啟動LDAP" | |||
|
1158 | ||||
|
1159 | #: rhodecode/templates/admin/ldap/ldap.html:34 | |||
|
1160 | msgid "Host" | |||
|
1161 | msgstr "主機" | |||
|
1162 | ||||
|
1163 | #: rhodecode/templates/admin/ldap/ldap.html:38 | |||
|
1164 | msgid "Port" | |||
|
1165 | msgstr "連接埠" | |||
|
1166 | ||||
|
1167 | #: rhodecode/templates/admin/ldap/ldap.html:42 | |||
|
1168 | msgid "Account" | |||
|
1169 | msgstr "帳號" | |||
|
1170 | ||||
|
1171 | #: rhodecode/templates/admin/ldap/ldap.html:50 | |||
|
1172 | msgid "Connection security" | |||
|
1173 | msgstr "連接安全性" | |||
|
1174 | ||||
|
1175 | #: rhodecode/templates/admin/ldap/ldap.html:54 | |||
|
1176 | msgid "Certificate Checks" | |||
|
1177 | msgstr "憑證確認" | |||
|
1178 | ||||
|
1179 | #: rhodecode/templates/admin/ldap/ldap.html:57 | |||
|
1180 | msgid "Search settings" | |||
|
1181 | msgstr "搜尋選項" | |||
|
1182 | ||||
|
1183 | #: rhodecode/templates/admin/ldap/ldap.html:59 | |||
|
1184 | msgid "Base DN" | |||
|
1185 | msgstr "" | |||
|
1186 | ||||
|
1187 | #: rhodecode/templates/admin/ldap/ldap.html:63 | |||
|
1188 | msgid "LDAP Filter" | |||
|
1189 | msgstr "" | |||
|
1190 | ||||
|
1191 | #: rhodecode/templates/admin/ldap/ldap.html:67 | |||
|
1192 | msgid "LDAP Search Scope" | |||
|
1193 | msgstr "" | |||
|
1194 | ||||
|
1195 | #: rhodecode/templates/admin/ldap/ldap.html:70 | |||
|
1196 | msgid "Attribute mappings" | |||
|
1197 | msgstr "屬性對應" | |||
|
1198 | ||||
|
1199 | #: rhodecode/templates/admin/ldap/ldap.html:72 | |||
|
1200 | msgid "Login Attribute" | |||
|
1201 | msgstr "登入屬性" | |||
|
1202 | ||||
|
1203 | #: rhodecode/templates/admin/ldap/ldap.html:76 | |||
|
1204 | msgid "First Name Attribute" | |||
|
1205 | msgstr "名" | |||
|
1206 | ||||
|
1207 | #: rhodecode/templates/admin/ldap/ldap.html:80 | |||
|
1208 | msgid "Last Name Attribute" | |||
|
1209 | msgstr "姓" | |||
|
1210 | ||||
|
1211 | #: rhodecode/templates/admin/ldap/ldap.html:84 | |||
|
1212 | msgid "E-mail Attribute" | |||
|
1213 | msgstr "電子郵件屬性" | |||
|
1214 | ||||
|
1215 | #: rhodecode/templates/admin/ldap/ldap.html:89 | |||
|
1216 | #: rhodecode/templates/admin/settings/hooks.html:73 | |||
|
1217 | #: rhodecode/templates/admin/users/user_edit.html:117 | |||
|
1218 | #: rhodecode/templates/admin/users/user_edit.html:142 | |||
|
1219 | #: rhodecode/templates/admin/users/user_edit_my_account.html:89 | |||
|
1220 | #: rhodecode/templates/admin/users_groups/users_group_edit.html:263 | |||
|
1221 | msgid "Save" | |||
|
1222 | msgstr "儲存" | |||
|
1223 | ||||
|
1224 | #: rhodecode/templates/admin/permissions/permissions.html:5 | |||
|
1225 | msgid "Permissions administration" | |||
|
1226 | msgstr "權限管理員" | |||
|
1227 | ||||
|
1228 | #: rhodecode/templates/admin/permissions/permissions.html:11 | |||
|
1229 | #: rhodecode/templates/admin/repos/repo_edit.html:109 | |||
|
1230 | #: rhodecode/templates/admin/users/user_edit.html:127 | |||
|
1231 | #: rhodecode/templates/admin/users_groups/users_group_edit.html:248 | |||
|
1232 | #: rhodecode/templates/settings/repo_settings.html:58 | |||
|
1233 | msgid "Permissions" | |||
|
1234 | msgstr "權限" | |||
|
1235 | ||||
|
1236 | #: rhodecode/templates/admin/permissions/permissions.html:24 | |||
|
1237 | msgid "Default permissions" | |||
|
1238 | msgstr "預設權限" | |||
|
1239 | ||||
|
1240 | #: rhodecode/templates/admin/permissions/permissions.html:31 | |||
|
1241 | msgid "Anonymous access" | |||
|
1242 | msgstr "訪客權限" | |||
|
1243 | ||||
|
1244 | #: rhodecode/templates/admin/permissions/permissions.html:41 | |||
|
1245 | msgid "Repository permission" | |||
|
1246 | msgstr "版本庫權限" | |||
|
1247 | ||||
|
1248 | #: rhodecode/templates/admin/permissions/permissions.html:49 | |||
|
1249 | msgid "All default permissions on each repository will be reset to choosen permission, note that all custom default permission on repositories will be lost" | |||
|
1250 | msgstr "" | |||
|
1251 | ||||
|
1252 | #: rhodecode/templates/admin/permissions/permissions.html:50 | |||
|
1253 | msgid "overwrite existing settings" | |||
|
1254 | msgstr "複寫已存在設定" | |||
|
1255 | ||||
|
1256 | #: rhodecode/templates/admin/permissions/permissions.html:55 | |||
|
1257 | msgid "Registration" | |||
|
1258 | msgstr "註冊" | |||
|
1259 | ||||
|
1260 | #: rhodecode/templates/admin/permissions/permissions.html:63 | |||
|
1261 | msgid "Repository creation" | |||
|
1262 | msgstr "版本庫建立" | |||
|
1263 | ||||
|
1264 | #: rhodecode/templates/admin/permissions/permissions.html:71 | |||
|
1265 | msgid "set" | |||
|
1266 | msgstr "設定" | |||
|
1267 | ||||
|
1268 | #: rhodecode/templates/admin/repos/repo_add.html:5 | |||
|
1269 | #: rhodecode/templates/admin/repos/repo_add_create_repository.html:5 | |||
|
1270 | msgid "Add repository" | |||
|
1271 | msgstr "新增版本庫" | |||
|
1272 | ||||
|
1273 | #: rhodecode/templates/admin/repos/repo_add.html:11 | |||
|
1274 | #: rhodecode/templates/admin/repos/repo_edit.html:11 | |||
|
1275 | #: rhodecode/templates/admin/repos/repos.html:10 | |||
|
1276 | #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:10 | |||
|
1277 | msgid "Repositories" | |||
|
1278 | msgstr "版本庫" | |||
|
1279 | ||||
|
1280 | #: rhodecode/templates/admin/repos/repo_add.html:13 | |||
|
1281 | msgid "add new" | |||
|
1282 | msgstr "新增" | |||
|
1283 | ||||
|
1284 | #: rhodecode/templates/admin/repos/repo_add_base.html:20 | |||
|
1285 | #: rhodecode/templates/summary/summary.html:80 | |||
|
1286 | #: rhodecode/templates/summary/summary.html:82 | |||
|
1287 | msgid "Clone from" | |||
|
1288 | msgstr "複製由" | |||
|
1289 | ||||
|
1290 | #: rhodecode/templates/admin/repos/repo_add_base.html:28 | |||
|
1291 | #: rhodecode/templates/admin/repos/repo_edit.html:48 | |||
|
1292 | #: rhodecode/templates/admin/repos_groups/repos_groups.html:4 | |||
|
1293 | msgid "Repository group" | |||
|
1294 | msgstr "版本庫群組" | |||
|
1295 | ||||
|
1296 | #: rhodecode/templates/admin/repos/repo_add_base.html:36 | |||
|
1297 | #: rhodecode/templates/admin/repos/repo_edit.html:56 | |||
|
1298 | msgid "Type" | |||
|
1299 | msgstr "類型" | |||
|
1300 | ||||
|
1301 | #: rhodecode/templates/admin/repos/repo_add_base.html:52 | |||
|
1302 | #: rhodecode/templates/admin/repos/repo_edit.html:73 | |||
|
1303 | #: rhodecode/templates/settings/repo_fork.html:48 | |||
|
1304 | #: rhodecode/templates/settings/repo_settings.html:49 | |||
|
1305 | msgid "Private" | |||
|
1306 | msgstr "私有" | |||
|
1307 | ||||
|
1308 | #: rhodecode/templates/admin/repos/repo_add_base.html:59 | |||
|
1309 | msgid "add" | |||
|
1310 | msgstr "新增" | |||
|
1311 | ||||
|
1312 | #: rhodecode/templates/admin/repos/repo_add_create_repository.html:9 | |||
|
1313 | msgid "add new repository" | |||
|
1314 | msgstr "新增版本庫" | |||
|
1315 | ||||
|
1316 | #: rhodecode/templates/admin/repos/repo_edit.html:5 | |||
|
1317 | msgid "Edit repository" | |||
|
1318 | msgstr "編輯版本庫" | |||
|
1319 | ||||
|
1320 | #: rhodecode/templates/admin/repos/repo_edit.html:13 | |||
|
1321 | #: rhodecode/templates/admin/users/user_edit.html:13 | |||
|
1322 | #: rhodecode/templates/admin/users/user_edit_my_account.html:148 | |||
|
1323 | #: rhodecode/templates/admin/users_groups/users_group_edit.html:13 | |||
|
1324 | #: rhodecode/templates/files/files_annotate.html:49 | |||
|
1325 | #: rhodecode/templates/files/files_source.html:20 | |||
|
1326 | msgid "edit" | |||
|
1327 | msgstr "編輯" | |||
|
1328 | ||||
|
1329 | #: rhodecode/templates/admin/repos/repo_edit.html:40 | |||
|
1330 | msgid "Clone uri" | |||
|
1331 | msgstr "複製URL" | |||
|
1332 | ||||
|
1333 | #: rhodecode/templates/admin/repos/repo_edit.html:81 | |||
|
1334 | msgid "Enable statistics" | |||
|
1335 | msgstr "啟用統計" | |||
|
1336 | ||||
|
1337 | #: rhodecode/templates/admin/repos/repo_edit.html:89 | |||
|
1338 | msgid "Enable downloads" | |||
|
1339 | msgstr "啟用下載" | |||
|
1340 | ||||
|
1341 | #: rhodecode/templates/admin/repos/repo_edit.html:127 | |||
|
1342 | msgid "Administration" | |||
|
1343 | msgstr "管理者" | |||
|
1344 | ||||
|
1345 | #: rhodecode/templates/admin/repos/repo_edit.html:130 | |||
|
1346 | msgid "Statistics" | |||
|
1347 | msgstr "統計" | |||
|
1348 | ||||
|
1349 | #: rhodecode/templates/admin/repos/repo_edit.html:134 | |||
|
1350 | msgid "Reset current statistics" | |||
|
1351 | msgstr "重設目前的統計" | |||
|
1352 | ||||
|
1353 | #: rhodecode/templates/admin/repos/repo_edit.html:134 | |||
|
1354 | msgid "Confirm to remove current statistics" | |||
|
1355 | msgstr "確認移除目前的統計" | |||
|
1356 | ||||
|
1357 | #: rhodecode/templates/admin/repos/repo_edit.html:137 | |||
|
1358 | msgid "Fetched to rev" | |||
|
1359 | msgstr "" | |||
|
1360 | ||||
|
1361 | #: rhodecode/templates/admin/repos/repo_edit.html:138 | |||
|
1362 | msgid "Percentage of stats gathered" | |||
|
1363 | msgstr "" | |||
|
1364 | ||||
|
1365 | #: rhodecode/templates/admin/repos/repo_edit.html:147 | |||
|
1366 | msgid "Remote" | |||
|
1367 | msgstr "遠端" | |||
|
1368 | ||||
|
1369 | #: rhodecode/templates/admin/repos/repo_edit.html:151 | |||
|
1370 | msgid "Pull changes from remote location" | |||
|
1371 | msgstr "" | |||
|
1372 | ||||
|
1373 | #: rhodecode/templates/admin/repos/repo_edit.html:151 | |||
|
1374 | msgid "Confirm to pull changes from remote side" | |||
|
1375 | msgstr "" | |||
|
1376 | ||||
|
1377 | #: rhodecode/templates/admin/repos/repo_edit.html:162 | |||
|
1378 | msgid "Cache" | |||
|
1379 | msgstr "快取" | |||
|
1380 | ||||
|
1381 | #: rhodecode/templates/admin/repos/repo_edit.html:166 | |||
|
1382 | msgid "Invalidate repository cache" | |||
|
1383 | msgstr "" | |||
|
1384 | ||||
|
1385 | #: rhodecode/templates/admin/repos/repo_edit.html:166 | |||
|
1386 | msgid "Confirm to invalidate repository cache" | |||
|
1387 | msgstr "確認廢止版本庫快取" | |||
|
1388 | ||||
|
1389 | #: rhodecode/templates/admin/repos/repo_edit.html:177 | |||
|
1390 | msgid "Remove from public journal" | |||
|
1391 | msgstr "從公開日誌移除" | |||
|
1392 | ||||
|
1393 | #: rhodecode/templates/admin/repos/repo_edit.html:179 | |||
|
1394 | msgid "Add to public journal" | |||
|
1395 | msgstr "新增至公開日誌" | |||
|
1396 | ||||
|
1397 | #: rhodecode/templates/admin/repos/repo_edit.html:185 | |||
|
1398 | msgid "Delete" | |||
|
1399 | msgstr "移除" | |||
|
1400 | ||||
|
1401 | #: rhodecode/templates/admin/repos/repo_edit.html:189 | |||
|
1402 | msgid "Remove this repository" | |||
|
1403 | msgstr "移除版本庫" | |||
|
1404 | ||||
|
1405 | #: rhodecode/templates/admin/repos/repo_edit.html:189 | |||
|
1406 | #: rhodecode/templates/admin/repos/repos.html:79 | |||
|
1407 | msgid "Confirm to delete this repository" | |||
|
1408 | msgstr "確認移除這個版本庫" | |||
|
1409 | ||||
|
1410 | #: rhodecode/templates/admin/repos/repo_edit_perms.html:3 | |||
|
1411 | msgid "none" | |||
|
1412 | msgstr "無" | |||
|
1413 | ||||
|
1414 | #: rhodecode/templates/admin/repos/repo_edit_perms.html:4 | |||
|
1415 | msgid "read" | |||
|
1416 | msgstr "讀" | |||
|
1417 | ||||
|
1418 | #: rhodecode/templates/admin/repos/repo_edit_perms.html:5 | |||
|
1419 | msgid "write" | |||
|
1420 | msgstr "寫" | |||
|
1421 | ||||
|
1422 | #: rhodecode/templates/admin/repos/repo_edit_perms.html:6 | |||
|
1423 | #: rhodecode/templates/admin/users/users.html:38 | |||
|
1424 | #: rhodecode/templates/base/base.html:296 | |||
|
1425 | msgid "admin" | |||
|
1426 | msgstr "管理員" | |||
|
1427 | ||||
|
1428 | #: rhodecode/templates/admin/repos/repo_edit_perms.html:7 | |||
|
1429 | msgid "member" | |||
|
1430 | msgstr "成員" | |||
|
1431 | ||||
|
1432 | #: rhodecode/templates/admin/repos/repo_edit_perms.html:33 | |||
|
1433 | #: rhodecode/templates/admin/repos/repo_edit_perms.html:53 | |||
|
1434 | msgid "revoke" | |||
|
1435 | msgstr "" | |||
|
1436 | ||||
|
1437 | #: rhodecode/templates/admin/repos/repo_edit_perms.html:75 | |||
|
1438 | msgid "Add another member" | |||
|
1439 | msgstr "新增另ㄧ位成員" | |||
|
1440 | ||||
|
1441 | #: rhodecode/templates/admin/repos/repo_edit_perms.html:89 | |||
|
1442 | msgid "Failed to remove user" | |||
|
1443 | msgstr "移除使用者失敗" | |||
|
1444 | ||||
|
1445 | #: rhodecode/templates/admin/repos/repo_edit_perms.html:104 | |||
|
1446 | msgid "Failed to remove users group" | |||
|
1447 | msgstr "移除使用者群組失敗" | |||
|
1448 | ||||
|
1449 | #: rhodecode/templates/admin/repos/repo_edit_perms.html:205 | |||
|
1450 | msgid "Group" | |||
|
1451 | msgstr "群組" | |||
|
1452 | ||||
|
1453 | #: rhodecode/templates/admin/repos/repo_edit_perms.html:206 | |||
|
1454 | #: rhodecode/templates/admin/users_groups/users_groups.html:33 | |||
|
1455 | msgid "members" | |||
|
1456 | msgstr "成員" | |||
|
1457 | ||||
|
1458 | #: rhodecode/templates/admin/repos/repos.html:5 | |||
|
1459 | msgid "Repositories administration" | |||
|
1460 | msgstr "版本庫管理員" | |||
|
1461 | ||||
|
1462 | #: rhodecode/templates/admin/repos/repos.html:34 | |||
|
1463 | #: rhodecode/templates/summary/summary.html:100 | |||
|
1464 | msgid "Contact" | |||
|
1465 | msgstr "聯絡方式" | |||
|
1466 | ||||
|
1467 | #: rhodecode/templates/admin/repos/repos.html:35 | |||
|
1468 | #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:36 | |||
|
1469 | #: rhodecode/templates/admin/users/user_edit_my_account.html:119 | |||
|
1470 | #: rhodecode/templates/admin/users/users.html:40 | |||
|
1471 | #: rhodecode/templates/admin/users_groups/users_groups.html:35 | |||
|
1472 | msgid "action" | |||
|
1473 | msgstr "動作" | |||
|
1474 | ||||
|
1475 | #: rhodecode/templates/admin/repos/repos.html:51 | |||
|
1476 | #: rhodecode/templates/admin/users/user_edit_my_account.html:134 | |||
|
1477 | #: rhodecode/templates/admin/users/user_edit_my_account.html:148 | |||
|
1478 | msgid "private" | |||
|
1479 | msgstr "私有" | |||
|
1480 | ||||
|
1481 | #: rhodecode/templates/admin/repos/repos.html:53 | |||
|
1482 | #: rhodecode/templates/admin/repos/repos.html:59 | |||
|
1483 | #: rhodecode/templates/admin/users/user_edit_my_account.html:136 | |||
|
1484 | #: rhodecode/templates/admin/users/user_edit_my_account.html:142 | |||
|
1485 | #: rhodecode/templates/summary/summary.html:68 | |||
|
1486 | msgid "public" | |||
|
1487 | msgstr "公開" | |||
|
1488 | ||||
|
1489 | #: rhodecode/templates/admin/repos/repos.html:79 | |||
|
1490 | #: rhodecode/templates/admin/users/users.html:55 | |||
|
1491 | msgid "delete" | |||
|
1492 | msgstr "刪除" | |||
|
1493 | ||||
|
1494 | #: rhodecode/templates/admin/repos_groups/repos_groups.html:8 | |||
|
1495 | msgid "Groups" | |||
|
1496 | msgstr "群組" | |||
|
1497 | ||||
|
1498 | #: rhodecode/templates/admin/repos_groups/repos_groups.html:13 | |||
|
1499 | msgid "with" | |||
|
1500 | msgstr "" | |||
|
1501 | ||||
|
1502 | #: rhodecode/templates/admin/repos_groups/repos_groups_add.html:5 | |||
|
1503 | msgid "Add repos group" | |||
|
1504 | msgstr "新增版本庫群組" | |||
|
1505 | ||||
|
1506 | #: rhodecode/templates/admin/repos_groups/repos_groups_add.html:10 | |||
|
1507 | #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:10 | |||
|
1508 | msgid "Repos groups" | |||
|
1509 | msgstr "版本庫群組" | |||
|
1510 | ||||
|
1511 | #: rhodecode/templates/admin/repos_groups/repos_groups_add.html:12 | |||
|
1512 | msgid "add new repos group" | |||
|
1513 | msgstr "新增版本庫群組" | |||
|
1514 | ||||
|
1515 | #: rhodecode/templates/admin/repos_groups/repos_groups_add.html:50 | |||
|
1516 | #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:50 | |||
|
1517 | msgid "Group parent" | |||
|
1518 | msgstr "父群組" | |||
|
1519 | ||||
|
1520 | #: rhodecode/templates/admin/repos_groups/repos_groups_add.html:58 | |||
|
1521 | #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:58 | |||
|
1522 | #: rhodecode/templates/admin/users/user_add.html:85 | |||
|
1523 | #: rhodecode/templates/admin/users_groups/users_group_add.html:49 | |||
|
1524 | #: rhodecode/templates/admin/users_groups/users_group_edit.html:90 | |||
|
1525 | msgid "save" | |||
|
1526 | msgstr "儲存" | |||
|
1527 | ||||
|
1528 | #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:5 | |||
|
1529 | msgid "Edit repos group" | |||
|
1530 | msgstr "編輯版本庫群組" | |||
|
1531 | ||||
|
1532 | #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:12 | |||
|
1533 | msgid "edit repos group" | |||
|
1534 | msgstr "編輯版本庫群組" | |||
|
1535 | ||||
|
1536 | #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:5 | |||
|
1537 | msgid "Repositories groups administration" | |||
|
1538 | msgstr "版本庫群組管理員" | |||
|
1539 | ||||
|
1540 | #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:22 | |||
|
1541 | msgid "ADD NEW GROUP" | |||
|
1542 | msgstr "新增群組" | |||
|
1543 | ||||
|
1544 | #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:35 | |||
|
1545 | msgid "Number of repositories" | |||
|
1546 | msgstr "版本庫數量" | |||
|
1547 | ||||
|
1548 | #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:54 | |||
|
1549 | msgid "Confirm to delete this group" | |||
|
1550 | msgstr "確認刪除這個群組" | |||
|
1551 | ||||
|
1552 | #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:62 | |||
|
1553 | msgid "There are no repositories groups yet" | |||
|
1554 | msgstr "沒有任何版本庫群組" | |||
|
1555 | ||||
|
1556 | #: rhodecode/templates/admin/settings/hooks.html:5 | |||
|
1557 | #: rhodecode/templates/admin/settings/settings.html:5 | |||
|
1558 | msgid "Settings administration" | |||
|
1559 | msgstr "設定管理員" | |||
|
1560 | ||||
|
1561 | #: rhodecode/templates/admin/settings/hooks.html:9 | |||
|
1562 | #: rhodecode/templates/admin/settings/settings.html:9 | |||
|
1563 | #: rhodecode/templates/settings/repo_settings.html:5 | |||
|
1564 | #: rhodecode/templates/settings/repo_settings.html:13 | |||
|
1565 | msgid "Settings" | |||
|
1566 | msgstr "設定" | |||
|
1567 | ||||
|
1568 | #: rhodecode/templates/admin/settings/hooks.html:24 | |||
|
1569 | msgid "Built in hooks - read only" | |||
|
1570 | msgstr "內建hook - 唯讀" | |||
|
1571 | ||||
|
1572 | #: rhodecode/templates/admin/settings/hooks.html:40 | |||
|
1573 | msgid "Custom hooks" | |||
|
1574 | msgstr "自訂hook" | |||
|
1575 | ||||
|
1576 | #: rhodecode/templates/admin/settings/hooks.html:56 | |||
|
1577 | msgid "remove" | |||
|
1578 | msgstr "移除" | |||
|
1579 | ||||
|
1580 | #: rhodecode/templates/admin/settings/hooks.html:88 | |||
|
1581 | msgid "Failed to remove hook" | |||
|
1582 | msgstr "移除hook失敗" | |||
|
1583 | ||||
|
1584 | #: rhodecode/templates/admin/settings/settings.html:24 | |||
|
1585 | msgid "Remap and rescan repositories" | |||
|
1586 | msgstr "重新對映與掃描版本庫" | |||
|
1587 | ||||
|
1588 | #: rhodecode/templates/admin/settings/settings.html:32 | |||
|
1589 | msgid "rescan option" | |||
|
1590 | msgstr "重新掃描選項" | |||
|
1591 | ||||
|
1592 | #: rhodecode/templates/admin/settings/settings.html:38 | |||
|
1593 | msgid "In case a repository was deleted from filesystem and there are leftovers in the database check this option to scan obsolete data in database and remove it." | |||
|
1594 | msgstr "如果版本庫已從檔案系統中刪除,但是資料還留在資料庫,請勾選這個項目清理資料庫中舊的資料" | |||
|
1595 | ||||
|
1596 | #: rhodecode/templates/admin/settings/settings.html:39 | |||
|
1597 | msgid "destroy old data" | |||
|
1598 | msgstr "移除舊資料" | |||
|
1599 | ||||
|
1600 | #: rhodecode/templates/admin/settings/settings.html:45 | |||
|
1601 | msgid "Rescan repositories" | |||
|
1602 | msgstr "重新掃描版本庫" | |||
|
1603 | ||||
|
1604 | #: rhodecode/templates/admin/settings/settings.html:51 | |||
|
1605 | msgid "Whoosh indexing" | |||
|
1606 | msgstr "Whoosh 索引" | |||
|
1607 | ||||
|
1608 | #: rhodecode/templates/admin/settings/settings.html:59 | |||
|
1609 | msgid "index build option" | |||
|
1610 | msgstr "索引選項" | |||
|
1611 | ||||
|
1612 | #: rhodecode/templates/admin/settings/settings.html:64 | |||
|
1613 | msgid "build from scratch" | |||
|
1614 | msgstr "重頭建立索引" | |||
|
1615 | ||||
|
1616 | #: rhodecode/templates/admin/settings/settings.html:70 | |||
|
1617 | msgid "Reindex" | |||
|
1618 | msgstr "重新索引" | |||
|
1619 | ||||
|
1620 | #: rhodecode/templates/admin/settings/settings.html:76 | |||
|
1621 | msgid "Global application settings" | |||
|
1622 | msgstr "全域設定" | |||
|
1623 | ||||
|
1624 | #: rhodecode/templates/admin/settings/settings.html:85 | |||
|
1625 | msgid "Application name" | |||
|
1626 | msgstr "應用名稱" | |||
|
1627 | ||||
|
1628 | #: rhodecode/templates/admin/settings/settings.html:94 | |||
|
1629 | msgid "Realm text" | |||
|
1630 | msgstr "" | |||
|
1631 | ||||
|
1632 | #: rhodecode/templates/admin/settings/settings.html:103 | |||
|
1633 | msgid "GA code" | |||
|
1634 | msgstr "" | |||
|
1635 | ||||
|
1636 | #: rhodecode/templates/admin/settings/settings.html:111 | |||
|
1637 | #: rhodecode/templates/admin/settings/settings.html:177 | |||
|
1638 | msgid "Save settings" | |||
|
1639 | msgstr "儲存設定" | |||
|
1640 | ||||
|
1641 | #: rhodecode/templates/admin/settings/settings.html:112 | |||
|
1642 | #: rhodecode/templates/admin/settings/settings.html:178 | |||
|
1643 | #: rhodecode/templates/admin/users/user_edit.html:118 | |||
|
1644 | #: rhodecode/templates/admin/users/user_edit.html:143 | |||
|
1645 | #: rhodecode/templates/admin/users/user_edit_my_account.html:90 | |||
|
1646 | #: rhodecode/templates/admin/users_groups/users_group_edit.html:264 | |||
|
1647 | #: rhodecode/templates/files/files_edit.html:50 | |||
|
1648 | msgid "Reset" | |||
|
1649 | msgstr "重設" | |||
|
1650 | ||||
|
1651 | #: rhodecode/templates/admin/settings/settings.html:118 | |||
|
1652 | msgid "Mercurial settings" | |||
|
1653 | msgstr "Mercurial 設定" | |||
|
1654 | ||||
|
1655 | #: rhodecode/templates/admin/settings/settings.html:127 | |||
|
1656 | msgid "Web" | |||
|
1657 | msgstr "" | |||
|
1658 | ||||
|
1659 | #: rhodecode/templates/admin/settings/settings.html:132 | |||
|
1660 | msgid "require ssl for pushing" | |||
|
1661 | msgstr "推送時要求使用SSL" | |||
|
1662 | ||||
|
1663 | #: rhodecode/templates/admin/settings/settings.html:139 | |||
|
1664 | msgid "Hooks" | |||
|
1665 | msgstr "" | |||
|
1666 | ||||
|
1667 | #: rhodecode/templates/admin/settings/settings.html:142 | |||
|
1668 | msgid "advanced setup" | |||
|
1669 | msgstr "進階設定" | |||
|
1670 | ||||
|
1671 | #: rhodecode/templates/admin/settings/settings.html:147 | |||
|
1672 | msgid "Update repository after push (hg update)" | |||
|
1673 | msgstr "push後更新版本庫 (hg update)" | |||
|
1674 | ||||
|
1675 | #: rhodecode/templates/admin/settings/settings.html:151 | |||
|
1676 | msgid "Show repository size after push" | |||
|
1677 | msgstr "push 後顯示版本庫大小" | |||
|
1678 | ||||
|
1679 | #: rhodecode/templates/admin/settings/settings.html:155 | |||
|
1680 | msgid "Log user push commands" | |||
|
1681 | msgstr "紀錄使用者推送命令" | |||
|
1682 | ||||
|
1683 | #: rhodecode/templates/admin/settings/settings.html:159 | |||
|
1684 | msgid "Log user pull commands" | |||
|
1685 | msgstr "紀錄使用者抓取命令" | |||
|
1686 | ||||
|
1687 | #: rhodecode/templates/admin/settings/settings.html:166 | |||
|
1688 | msgid "Repositories location" | |||
|
1689 | msgstr "版本庫路徑" | |||
|
1690 | ||||
|
1691 | #: rhodecode/templates/admin/settings/settings.html:171 | |||
|
1692 | msgid "This a crucial application setting. If you are really sure you need to change this, you must restart application in order to make this setting take effect. Click this label to unlock." | |||
|
1693 | msgstr "這是一個關鍵的設定,如果您確定要修改這個設定,請重新啟動應用程式以套用設定" | |||
|
1694 | ||||
|
1695 | #: rhodecode/templates/admin/settings/settings.html:172 | |||
|
1696 | msgid "unlock" | |||
|
1697 | msgstr "解鎖" | |||
|
1698 | ||||
|
1699 | #: rhodecode/templates/admin/users/user_add.html:5 | |||
|
1700 | msgid "Add user" | |||
|
1701 | msgstr "新增使用者" | |||
|
1702 | ||||
|
1703 | #: rhodecode/templates/admin/users/user_add.html:10 | |||
|
1704 | #: rhodecode/templates/admin/users/user_edit.html:11 | |||
|
1705 | #: rhodecode/templates/admin/users/users.html:9 | |||
|
1706 | msgid "Users" | |||
|
1707 | msgstr "使用者" | |||
|
1708 | ||||
|
1709 | #: rhodecode/templates/admin/users/user_add.html:12 | |||
|
1710 | msgid "add new user" | |||
|
1711 | msgstr "新增使用者" | |||
|
1712 | ||||
|
1713 | #: rhodecode/templates/admin/users/user_add.html:77 | |||
|
1714 | #: rhodecode/templates/admin/users/user_edit.html:101 | |||
|
1715 | #: rhodecode/templates/admin/users_groups/users_group_add.html:41 | |||
|
1716 | #: rhodecode/templates/admin/users_groups/users_group_edit.html:42 | |||
|
1717 | msgid "Active" | |||
|
1718 | msgstr "啟用" | |||
|
1719 | ||||
|
1720 | #: rhodecode/templates/admin/users/user_edit.html:5 | |||
|
1721 | msgid "Edit user" | |||
|
1722 | msgstr "編輯使用者" | |||
|
1723 | ||||
|
1724 | #: rhodecode/templates/admin/users/user_edit.html:33 | |||
|
1725 | #: rhodecode/templates/admin/users/user_edit_my_account.html:32 | |||
|
1726 | msgid "Change your avatar at" | |||
|
1727 | msgstr "修改您的頭像於" | |||
|
1728 | ||||
|
1729 | #: rhodecode/templates/admin/users/user_edit.html:34 | |||
|
1730 | #: rhodecode/templates/admin/users/user_edit_my_account.html:33 | |||
|
1731 | msgid "Using" | |||
|
1732 | msgstr "使用中" | |||
|
1733 | ||||
|
1734 | #: rhodecode/templates/admin/users/user_edit.html:40 | |||
|
1735 | #: rhodecode/templates/admin/users/user_edit_my_account.html:39 | |||
|
1736 | msgid "API key" | |||
|
1737 | msgstr "" | |||
|
1738 | ||||
|
1739 | #: rhodecode/templates/admin/users/user_edit.html:56 | |||
|
1740 | msgid "LDAP DN" | |||
|
1741 | msgstr "" | |||
|
1742 | ||||
|
1743 | #: rhodecode/templates/admin/users/user_edit.html:65 | |||
|
1744 | #: rhodecode/templates/admin/users/user_edit_my_account.html:54 | |||
|
1745 | msgid "New password" | |||
|
1746 | msgstr "新密碼" | |||
|
1747 | ||||
|
1748 | #: rhodecode/templates/admin/users/user_edit.html:135 | |||
|
1749 | #: rhodecode/templates/admin/users_groups/users_group_edit.html:256 | |||
|
1750 | msgid "Create repositories" | |||
|
1751 | msgstr "建立版本庫" | |||
|
1752 | ||||
|
1753 | #: rhodecode/templates/admin/users/user_edit_my_account.html:5 | |||
|
1754 | msgid "My account" | |||
|
1755 | msgstr "我的帳號" | |||
|
1756 | ||||
|
1757 | #: rhodecode/templates/admin/users/user_edit_my_account.html:9 | |||
|
1758 | msgid "My Account" | |||
|
1759 | msgstr "我的帳號" | |||
|
1760 | ||||
|
1761 | #: rhodecode/templates/admin/users/user_edit_my_account.html:101 | |||
|
1762 | msgid "My repositories" | |||
|
1763 | msgstr "我的版本庫" | |||
|
1764 | ||||
|
1765 | #: rhodecode/templates/admin/users/user_edit_my_account.html:107 | |||
|
1766 | msgid "ADD REPOSITORY" | |||
|
1767 | msgstr "新增版本庫" | |||
|
1768 | ||||
|
1769 | #: rhodecode/templates/admin/users/user_edit_my_account.html:118 | |||
|
1770 | #: rhodecode/templates/branches/branches_data.html:7 | |||
|
1771 | #: rhodecode/templates/shortlog/shortlog_data.html:8 | |||
|
1772 | #: rhodecode/templates/tags/tags_data.html:7 | |||
|
1773 | msgid "revision" | |||
|
1774 | msgstr "修訂" | |||
|
1775 | ||||
|
1776 | #: rhodecode/templates/admin/users/user_edit_my_account.html:157 | |||
|
1777 | msgid "No repositories yet" | |||
|
1778 | msgstr "沒有任何版本庫" | |||
|
1779 | ||||
|
1780 | #: rhodecode/templates/admin/users/user_edit_my_account.html:159 | |||
|
1781 | msgid "create one now" | |||
|
1782 | msgstr "" | |||
|
1783 | ||||
|
1784 | #: rhodecode/templates/admin/users/users.html:5 | |||
|
1785 | msgid "Users administration" | |||
|
1786 | msgstr "使用者管理員" | |||
|
1787 | ||||
|
1788 | #: rhodecode/templates/admin/users/users.html:23 | |||
|
1789 | msgid "ADD NEW USER" | |||
|
1790 | msgstr "新增使用者" | |||
|
1791 | ||||
|
1792 | #: rhodecode/templates/admin/users/users.html:33 | |||
|
1793 | msgid "username" | |||
|
1794 | msgstr "使用者名稱" | |||
|
1795 | ||||
|
1796 | #: rhodecode/templates/admin/users/users.html:34 | |||
|
1797 | #: rhodecode/templates/branches/branches_data.html:5 | |||
|
1798 | #: rhodecode/templates/tags/tags_data.html:5 | |||
|
1799 | msgid "name" | |||
|
1800 | msgstr "名字" | |||
|
1801 | ||||
|
1802 | #: rhodecode/templates/admin/users/users.html:35 | |||
|
1803 | msgid "lastname" | |||
|
1804 | msgstr "姓" | |||
|
1805 | ||||
|
1806 | #: rhodecode/templates/admin/users/users.html:36 | |||
|
1807 | msgid "last login" | |||
|
1808 | msgstr "最後登入" | |||
|
1809 | ||||
|
1810 | #: rhodecode/templates/admin/users/users.html:37 | |||
|
1811 | #: rhodecode/templates/admin/users_groups/users_groups.html:34 | |||
|
1812 | msgid "active" | |||
|
1813 | msgstr "啟用" | |||
|
1814 | ||||
|
1815 | #: rhodecode/templates/admin/users/users.html:39 | |||
|
1816 | #: rhodecode/templates/base/base.html:305 | |||
|
1817 | msgid "ldap" | |||
|
1818 | msgstr "" | |||
|
1819 | ||||
|
1820 | #: rhodecode/templates/admin/users/users.html:56 | |||
|
1821 | msgid "Confirm to delete this user" | |||
|
1822 | msgstr "確認刪除這個使用者" | |||
|
1823 | ||||
|
1824 | #: rhodecode/templates/admin/users_groups/users_group_add.html:5 | |||
|
1825 | msgid "Add users group" | |||
|
1826 | msgstr "新增使用者群組" | |||
|
1827 | ||||
|
1828 | #: rhodecode/templates/admin/users_groups/users_group_add.html:10 | |||
|
1829 | #: rhodecode/templates/admin/users_groups/users_groups.html:9 | |||
|
1830 | msgid "Users groups" | |||
|
1831 | msgstr "使用者群組" | |||
|
1832 | ||||
|
1833 | #: rhodecode/templates/admin/users_groups/users_group_add.html:12 | |||
|
1834 | msgid "add new users group" | |||
|
1835 | msgstr "新增使用者群組" | |||
|
1836 | ||||
|
1837 | #: rhodecode/templates/admin/users_groups/users_group_edit.html:5 | |||
|
1838 | msgid "Edit users group" | |||
|
1839 | msgstr "編輯使用者群組" | |||
|
1840 | ||||
|
1841 | #: rhodecode/templates/admin/users_groups/users_group_edit.html:11 | |||
|
1842 | msgid "UsersGroups" | |||
|
1843 | msgstr "使用者群組" | |||
|
1844 | ||||
|
1845 | #: rhodecode/templates/admin/users_groups/users_group_edit.html:50 | |||
|
1846 | msgid "Members" | |||
|
1847 | msgstr "成員" | |||
|
1848 | ||||
|
1849 | #: rhodecode/templates/admin/users_groups/users_group_edit.html:58 | |||
|
1850 | msgid "Choosen group members" | |||
|
1851 | msgstr "選擇群組成員" | |||
|
1852 | ||||
|
1853 | #: rhodecode/templates/admin/users_groups/users_group_edit.html:61 | |||
|
1854 | msgid "Remove all elements" | |||
|
1855 | msgstr "移除所有元素" | |||
|
1856 | ||||
|
1857 | #: rhodecode/templates/admin/users_groups/users_group_edit.html:75 | |||
|
1858 | msgid "Available members" | |||
|
1859 | msgstr "啟用的成員" | |||
|
1860 | ||||
|
1861 | #: rhodecode/templates/admin/users_groups/users_group_edit.html:79 | |||
|
1862 | msgid "Add all elements" | |||
|
1863 | msgstr "新增索有元素" | |||
|
1864 | ||||
|
1865 | #: rhodecode/templates/admin/users_groups/users_groups.html:5 | |||
|
1866 | msgid "Users groups administration" | |||
|
1867 | msgstr "使用者群組管理員" | |||
|
1868 | ||||
|
1869 | #: rhodecode/templates/admin/users_groups/users_groups.html:23 | |||
|
1870 | msgid "ADD NEW USER GROUP" | |||
|
1871 | msgstr "建立新的使用者群組" | |||
|
1872 | ||||
|
1873 | #: rhodecode/templates/admin/users_groups/users_groups.html:32 | |||
|
1874 | msgid "group name" | |||
|
1875 | msgstr "群組名稱" | |||
|
1876 | ||||
|
1877 | #: rhodecode/templates/base/base.html:32 | |||
|
1878 | msgid "Forgot password ?" | |||
|
1879 | msgstr "忘記密碼?" | |||
|
1880 | ||||
|
1881 | #: rhodecode/templates/base/base.html:57 | |||
|
1882 | #: rhodecode/templates/base/base.html:338 | |||
|
1883 | #: rhodecode/templates/base/base.html:340 | |||
|
1884 | #: rhodecode/templates/base/base.html:342 | |||
|
1885 | msgid "Home" | |||
|
1886 | msgstr "首頁" | |||
|
1887 | ||||
|
1888 | #: rhodecode/templates/base/base.html:61 | |||
|
1889 | #: rhodecode/templates/base/base.html:347 | |||
|
1890 | #: rhodecode/templates/base/base.html:349 | |||
|
1891 | #: rhodecode/templates/base/base.html:351 | |||
|
1892 | #: rhodecode/templates/journal/journal.html:4 | |||
|
1893 | #: rhodecode/templates/journal/journal.html:17 | |||
|
1894 | #: rhodecode/templates/journal/public_journal.html:4 | |||
|
1895 | msgid "Journal" | |||
|
1896 | msgstr "日誌" | |||
|
1897 | ||||
|
1898 | #: rhodecode/templates/base/base.html:66 | |||
|
1899 | msgid "Login" | |||
|
1900 | msgstr "登入" | |||
|
1901 | ||||
|
1902 | #: rhodecode/templates/base/base.html:68 | |||
|
1903 | msgid "Log Out" | |||
|
1904 | msgstr "登出" | |||
|
1905 | ||||
|
1906 | #: rhodecode/templates/base/base.html:107 | |||
|
1907 | msgid "Submit a bug" | |||
|
1908 | msgstr "回報錯誤" | |||
|
1909 | ||||
|
1910 | #: rhodecode/templates/base/base.html:141 | |||
|
1911 | msgid "Switch repository" | |||
|
1912 | msgstr "切換版本庫" | |||
|
1913 | ||||
|
1914 | #: rhodecode/templates/base/base.html:143 | |||
|
1915 | msgid "Products" | |||
|
1916 | msgstr "" | |||
|
1917 | ||||
|
1918 | #: rhodecode/templates/base/base.html:149 | |||
|
1919 | msgid "loading..." | |||
|
1920 | msgstr "載入中..." | |||
|
1921 | ||||
|
1922 | #: rhodecode/templates/base/base.html:234 | |||
|
1923 | #: rhodecode/templates/base/base.html:236 | |||
|
1924 | #: rhodecode/templates/base/base.html:238 | |||
|
1925 | msgid "Switch to" | |||
|
1926 | msgstr "切換至" | |||
|
1927 | ||||
|
1928 | #: rhodecode/templates/base/base.html:242 | |||
|
1929 | #: rhodecode/templates/branches/branches.html:13 | |||
|
1930 | msgid "branches" | |||
|
1931 | msgstr "分支" | |||
|
1932 | ||||
|
1933 | #: rhodecode/templates/base/base.html:249 | |||
|
1934 | #: rhodecode/templates/branches/branches_data.html:52 | |||
|
1935 | msgid "There are no branches yet" | |||
|
1936 | msgstr "沒有任何分支" | |||
|
1937 | ||||
|
1938 | #: rhodecode/templates/base/base.html:254 | |||
|
1939 | #: rhodecode/templates/shortlog/shortlog_data.html:10 | |||
|
1940 | #: rhodecode/templates/tags/tags.html:14 | |||
|
1941 | msgid "tags" | |||
|
1942 | msgstr "標籤" | |||
|
1943 | ||||
|
1944 | #: rhodecode/templates/base/base.html:261 | |||
|
1945 | #: rhodecode/templates/tags/tags_data.html:32 | |||
|
1946 | msgid "There are no tags yet" | |||
|
1947 | msgstr "沒有任何標籤" | |||
|
1948 | ||||
|
1949 | #: rhodecode/templates/base/base.html:277 | |||
|
1950 | #: rhodecode/templates/base/base.html:281 | |||
|
1951 | #: rhodecode/templates/files/files_annotate.html:40 | |||
|
1952 | #: rhodecode/templates/files/files_source.html:11 | |||
|
1953 | msgid "Options" | |||
|
1954 | msgstr "選項" | |||
|
1955 | ||||
|
1956 | #: rhodecode/templates/base/base.html:286 | |||
|
1957 | #: rhodecode/templates/base/base.html:288 | |||
|
1958 | #: rhodecode/templates/base/base.html:306 | |||
|
1959 | msgid "settings" | |||
|
1960 | msgstr "設定" | |||
|
1961 | ||||
|
1962 | #: rhodecode/templates/base/base.html:292 | |||
|
1963 | msgid "search" | |||
|
1964 | msgstr "搜尋" | |||
|
1965 | ||||
|
1966 | #: rhodecode/templates/base/base.html:299 | |||
|
1967 | msgid "journal" | |||
|
1968 | msgstr "日誌" | |||
|
1969 | ||||
|
1970 | #: rhodecode/templates/base/base.html:301 | |||
|
1971 | msgid "repositories groups" | |||
|
1972 | msgstr "版本庫群組" | |||
|
1973 | ||||
|
1974 | #: rhodecode/templates/base/base.html:302 | |||
|
1975 | msgid "users" | |||
|
1976 | msgstr "使用者" | |||
|
1977 | ||||
|
1978 | #: rhodecode/templates/base/base.html:303 | |||
|
1979 | msgid "users groups" | |||
|
1980 | msgstr "使用者群組" | |||
|
1981 | ||||
|
1982 | #: rhodecode/templates/base/base.html:304 | |||
|
1983 | msgid "permissions" | |||
|
1984 | msgstr "權限" | |||
|
1985 | ||||
|
1986 | #: rhodecode/templates/base/base.html:317 | |||
|
1987 | #: rhodecode/templates/base/base.html:319 | |||
|
1988 | #: rhodecode/templates/followers/followers.html:5 | |||
|
1989 | msgid "Followers" | |||
|
1990 | msgstr "追蹤者" | |||
|
1991 | ||||
|
1992 | #: rhodecode/templates/base/base.html:325 | |||
|
1993 | #: rhodecode/templates/base/base.html:327 | |||
|
1994 | #: rhodecode/templates/forks/forks.html:5 | |||
|
1995 | msgid "Forks" | |||
|
1996 | msgstr "" | |||
|
1997 | ||||
|
1998 | #: rhodecode/templates/base/base.html:356 | |||
|
1999 | #: rhodecode/templates/base/base.html:358 | |||
|
2000 | #: rhodecode/templates/base/base.html:360 | |||
|
2001 | #: rhodecode/templates/search/search.html:4 | |||
|
2002 | #: rhodecode/templates/search/search.html:24 | |||
|
2003 | #: rhodecode/templates/search/search.html:46 | |||
|
2004 | msgid "Search" | |||
|
2005 | msgstr "搜尋" | |||
|
2006 | ||||
|
2007 | #: rhodecode/templates/base/root.html:57 | |||
|
2008 | #: rhodecode/templates/journal/journal.html:48 | |||
|
2009 | #: rhodecode/templates/summary/summary.html:36 | |||
|
2010 | msgid "Stop following this repository" | |||
|
2011 | msgstr "停止追蹤這個版本庫" | |||
|
2012 | ||||
|
2013 | #: rhodecode/templates/base/root.html:66 | |||
|
2014 | #: rhodecode/templates/summary/summary.html:40 | |||
|
2015 | msgid "Start following this repository" | |||
|
2016 | msgstr "開始追蹤這個版本庫" | |||
|
2017 | ||||
|
2018 | #: rhodecode/templates/branches/branches_data.html:4 | |||
|
2019 | #: rhodecode/templates/tags/tags_data.html:4 | |||
|
2020 | msgid "date" | |||
|
2021 | msgstr "日期" | |||
|
2022 | ||||
|
2023 | #: rhodecode/templates/branches/branches_data.html:6 | |||
|
2024 | #: rhodecode/templates/shortlog/shortlog_data.html:7 | |||
|
2025 | #: rhodecode/templates/tags/tags_data.html:6 | |||
|
2026 | msgid "author" | |||
|
2027 | msgstr "作者" | |||
|
2028 | ||||
|
2029 | #: rhodecode/templates/branches/branches_data.html:8 | |||
|
2030 | #: rhodecode/templates/shortlog/shortlog_data.html:11 | |||
|
2031 | #: rhodecode/templates/tags/tags_data.html:8 | |||
|
2032 | msgid "links" | |||
|
2033 | msgstr "連結" | |||
|
2034 | ||||
|
2035 | #: rhodecode/templates/branches/branches_data.html:23 | |||
|
2036 | #: rhodecode/templates/branches/branches_data.html:43 | |||
|
2037 | #: rhodecode/templates/shortlog/shortlog_data.html:39 | |||
|
2038 | #: rhodecode/templates/tags/tags_data.html:24 | |||
|
2039 | msgid "changeset" | |||
|
2040 | msgstr "修改" | |||
|
2041 | ||||
|
2042 | #: rhodecode/templates/branches/branches_data.html:25 | |||
|
2043 | #: rhodecode/templates/branches/branches_data.html:45 | |||
|
2044 | #: rhodecode/templates/files/files.html:12 | |||
|
2045 | #: rhodecode/templates/shortlog/shortlog_data.html:41 | |||
|
2046 | #: rhodecode/templates/summary/summary.html:233 | |||
|
2047 | #: rhodecode/templates/tags/tags_data.html:26 | |||
|
2048 | msgid "files" | |||
|
2049 | msgstr "檔案" | |||
|
2050 | ||||
|
2051 | #: rhodecode/templates/changelog/changelog.html:14 | |||
|
2052 | msgid "showing " | |||
|
2053 | msgstr "" | |||
|
2054 | ||||
|
2055 | #: rhodecode/templates/changelog/changelog.html:14 | |||
|
2056 | msgid "out of" | |||
|
2057 | msgstr "" | |||
|
2058 | ||||
|
2059 | #: rhodecode/templates/changelog/changelog.html:37 | |||
|
2060 | msgid "Show" | |||
|
2061 | msgstr "顯示" | |||
|
2062 | ||||
|
2063 | #: rhodecode/templates/changelog/changelog.html:50 | |||
|
2064 | #: rhodecode/templates/changeset/changeset.html:42 | |||
|
2065 | #: rhodecode/templates/summary/summary.html:609 | |||
|
2066 | msgid "commit" | |||
|
2067 | msgstr "遞交" | |||
|
2068 | ||||
|
2069 | #: rhodecode/templates/changelog/changelog.html:63 | |||
|
2070 | msgid "Affected number of files, click to show more details" | |||
|
2071 | msgstr "" | |||
|
2072 | ||||
|
2073 | #: rhodecode/templates/changelog/changelog.html:67 | |||
|
2074 | #: rhodecode/templates/changeset/changeset.html:66 | |||
|
2075 | msgid "merge" | |||
|
2076 | msgstr "合併" | |||
|
2077 | ||||
|
2078 | #: rhodecode/templates/changelog/changelog.html:72 | |||
|
2079 | #: rhodecode/templates/changeset/changeset.html:72 | |||
|
2080 | msgid "Parent" | |||
|
2081 | msgstr "" | |||
|
2082 | ||||
|
2083 | #: rhodecode/templates/changelog/changelog.html:77 | |||
|
2084 | #: rhodecode/templates/changeset/changeset.html:77 | |||
|
2085 | msgid "No parents" | |||
|
2086 | msgstr "" | |||
|
2087 | ||||
|
2088 | #: rhodecode/templates/changelog/changelog.html:82 | |||
|
2089 | #: rhodecode/templates/changeset/changeset.html:80 | |||
|
2090 | #: rhodecode/templates/files/files.html:29 | |||
|
2091 | #: rhodecode/templates/files/files_annotate.html:25 | |||
|
2092 | #: rhodecode/templates/files/files_edit.html:33 | |||
|
2093 | #: rhodecode/templates/shortlog/shortlog_data.html:9 | |||
|
2094 | msgid "branch" | |||
|
2095 | msgstr "分支" | |||
|
2096 | ||||
|
2097 | #: rhodecode/templates/changelog/changelog.html:86 | |||
|
2098 | #: rhodecode/templates/changeset/changeset.html:83 | |||
|
2099 | msgid "tag" | |||
|
2100 | msgstr "標籤" | |||
|
2101 | ||||
|
2102 | #: rhodecode/templates/changelog/changelog.html:122 | |||
|
2103 | msgid "Show selected changes __S -> __E" | |||
|
2104 | msgstr "" | |||
|
2105 | ||||
|
2106 | #: rhodecode/templates/changelog/changelog.html:172 | |||
|
2107 | #: rhodecode/templates/shortlog/shortlog_data.html:61 | |||
|
2108 | msgid "There are no changes yet" | |||
|
2109 | msgstr "尚未有任何變更" | |||
|
2110 | ||||
|
2111 | #: rhodecode/templates/changelog/changelog_details.html:2 | |||
|
2112 | #: rhodecode/templates/changeset/changeset.html:55 | |||
|
2113 | msgid "removed" | |||
|
2114 | msgstr "移除" | |||
|
2115 | ||||
|
2116 | #: rhodecode/templates/changelog/changelog_details.html:3 | |||
|
2117 | #: rhodecode/templates/changeset/changeset.html:56 | |||
|
2118 | msgid "changed" | |||
|
2119 | msgstr "修改" | |||
|
2120 | ||||
|
2121 | #: rhodecode/templates/changelog/changelog_details.html:4 | |||
|
2122 | #: rhodecode/templates/changeset/changeset.html:57 | |||
|
2123 | msgid "added" | |||
|
2124 | msgstr "新增" | |||
|
2125 | ||||
|
2126 | #: rhodecode/templates/changelog/changelog_details.html:6 | |||
|
2127 | #: rhodecode/templates/changelog/changelog_details.html:7 | |||
|
2128 | #: rhodecode/templates/changelog/changelog_details.html:8 | |||
|
2129 | #: rhodecode/templates/changeset/changeset.html:59 | |||
|
2130 | #: rhodecode/templates/changeset/changeset.html:60 | |||
|
2131 | #: rhodecode/templates/changeset/changeset.html:61 | |||
|
2132 | #, python-format | |||
|
2133 | msgid "affected %s files" | |||
|
2134 | msgstr "" | |||
|
2135 | ||||
|
2136 | #: rhodecode/templates/changeset/changeset.html:6 | |||
|
2137 | #: rhodecode/templates/changeset/changeset.html:14 | |||
|
2138 | #: rhodecode/templates/changeset/changeset.html:31 | |||
|
2139 | msgid "Changeset" | |||
|
2140 | msgstr "" | |||
|
2141 | ||||
|
2142 | #: rhodecode/templates/changeset/changeset.html:32 | |||
|
2143 | #: rhodecode/templates/changeset/changeset.html:121 | |||
|
2144 | #: rhodecode/templates/changeset/changeset_range.html:78 | |||
|
2145 | #: rhodecode/templates/files/file_diff.html:32 | |||
|
2146 | #: rhodecode/templates/files/file_diff.html:42 | |||
|
2147 | msgid "raw diff" | |||
|
2148 | msgstr "原始差異" | |||
|
2149 | ||||
|
2150 | #: rhodecode/templates/changeset/changeset.html:34 | |||
|
2151 | #: rhodecode/templates/changeset/changeset.html:123 | |||
|
2152 | #: rhodecode/templates/changeset/changeset_range.html:80 | |||
|
2153 | #: rhodecode/templates/files/file_diff.html:34 | |||
|
2154 | msgid "download diff" | |||
|
2155 | msgstr "下載差異" | |||
|
2156 | ||||
|
2157 | #: rhodecode/templates/changeset/changeset.html:90 | |||
|
2158 | #, python-format | |||
|
2159 | msgid "%s files affected with %s additions and %s deletions." | |||
|
2160 | msgstr "" | |||
|
2161 | ||||
|
2162 | #: rhodecode/templates/changeset/changeset.html:101 | |||
|
2163 | msgid "Changeset was too big and was cut off..." | |||
|
2164 | msgstr "" | |||
|
2165 | ||||
|
2166 | #: rhodecode/templates/changeset/changeset.html:119 | |||
|
2167 | #: rhodecode/templates/changeset/changeset_range.html:76 | |||
|
2168 | #: rhodecode/templates/files/file_diff.html:30 | |||
|
2169 | msgid "diff" | |||
|
2170 | msgstr "差異" | |||
|
2171 | ||||
|
2172 | #: rhodecode/templates/changeset/changeset.html:132 | |||
|
2173 | #: rhodecode/templates/changeset/changeset_range.html:89 | |||
|
2174 | msgid "No changes in this file" | |||
|
2175 | msgstr "這個檔案沒有任何變更" | |||
|
2176 | ||||
|
2177 | #: rhodecode/templates/changeset/changeset_range.html:30 | |||
|
2178 | msgid "Compare View" | |||
|
2179 | msgstr "比較顯示" | |||
|
2180 | ||||
|
2181 | #: rhodecode/templates/changeset/changeset_range.html:52 | |||
|
2182 | msgid "Files affected" | |||
|
2183 | msgstr "" | |||
|
2184 | ||||
|
2185 | #: rhodecode/templates/errors/error_document.html:44 | |||
|
2186 | #, python-format | |||
|
2187 | msgid "You will be redirected to %s in %s seconds" | |||
|
2188 | msgstr "" | |||
|
2189 | ||||
|
2190 | #: rhodecode/templates/files/file_diff.html:4 | |||
|
2191 | #: rhodecode/templates/files/file_diff.html:12 | |||
|
2192 | msgid "File diff" | |||
|
2193 | msgstr "檔案差異" | |||
|
2194 | ||||
|
2195 | #: rhodecode/templates/files/file_diff.html:42 | |||
|
2196 | msgid "Diff is to big to display" | |||
|
2197 | msgstr "" | |||
|
2198 | ||||
|
2199 | #: rhodecode/templates/files/files.html:37 | |||
|
2200 | #: rhodecode/templates/files/files_annotate.html:31 | |||
|
2201 | #: rhodecode/templates/files/files_edit.html:39 | |||
|
2202 | msgid "Location" | |||
|
2203 | msgstr "位置" | |||
|
2204 | ||||
|
2205 | #: rhodecode/templates/files/files.html:46 | |||
|
2206 | msgid "Go back" | |||
|
2207 | msgstr "" | |||
|
2208 | ||||
|
2209 | #: rhodecode/templates/files/files.html:47 | |||
|
2210 | msgid "No files at given path" | |||
|
2211 | msgstr "" | |||
|
2212 | ||||
|
2213 | #: rhodecode/templates/files/files_annotate.html:4 | |||
|
2214 | msgid "File annotate" | |||
|
2215 | msgstr "檔案註釋" | |||
|
2216 | ||||
|
2217 | #: rhodecode/templates/files/files_annotate.html:12 | |||
|
2218 | msgid "annotate" | |||
|
2219 | msgstr "註釋" | |||
|
2220 | ||||
|
2221 | #: rhodecode/templates/files/files_annotate.html:33 | |||
|
2222 | #: rhodecode/templates/files/files_browser.html:160 | |||
|
2223 | #: rhodecode/templates/files/files_source.html:2 | |||
|
2224 | msgid "Revision" | |||
|
2225 | msgstr "修訂" | |||
|
2226 | ||||
|
2227 | #: rhodecode/templates/files/files_annotate.html:36 | |||
|
2228 | #: rhodecode/templates/files/files_browser.html:158 | |||
|
2229 | #: rhodecode/templates/files/files_source.html:7 | |||
|
2230 | msgid "Size" | |||
|
2231 | msgstr "大小" | |||
|
2232 | ||||
|
2233 | #: rhodecode/templates/files/files_annotate.html:38 | |||
|
2234 | #: rhodecode/templates/files/files_browser.html:159 | |||
|
2235 | #: rhodecode/templates/files/files_source.html:9 | |||
|
2236 | msgid "Mimetype" | |||
|
2237 | msgstr "" | |||
|
2238 | ||||
|
2239 | #: rhodecode/templates/files/files_annotate.html:41 | |||
|
2240 | msgid "show source" | |||
|
2241 | msgstr "顯示原始碼" | |||
|
2242 | ||||
|
2243 | #: rhodecode/templates/files/files_annotate.html:43 | |||
|
2244 | #: rhodecode/templates/files/files_annotate.html:78 | |||
|
2245 | #: rhodecode/templates/files/files_source.html:14 | |||
|
2246 | #: rhodecode/templates/files/files_source.html:51 | |||
|
2247 | msgid "show as raw" | |||
|
2248 | msgstr "顯示原始文件" | |||
|
2249 | ||||
|
2250 | #: rhodecode/templates/files/files_annotate.html:45 | |||
|
2251 | #: rhodecode/templates/files/files_source.html:16 | |||
|
2252 | msgid "download as raw" | |||
|
2253 | msgstr "下載原始文件" | |||
|
2254 | ||||
|
2255 | #: rhodecode/templates/files/files_annotate.html:54 | |||
|
2256 | #: rhodecode/templates/files/files_source.html:25 | |||
|
2257 | msgid "History" | |||
|
2258 | msgstr "歷史" | |||
|
2259 | ||||
|
2260 | #: rhodecode/templates/files/files_annotate.html:73 | |||
|
2261 | #: rhodecode/templates/files/files_source.html:46 | |||
|
2262 | #, python-format | |||
|
2263 | msgid "Binary file (%s)" | |||
|
2264 | msgstr "二進位檔 (%s)" | |||
|
2265 | ||||
|
2266 | #: rhodecode/templates/files/files_annotate.html:78 | |||
|
2267 | #: rhodecode/templates/files/files_source.html:51 | |||
|
2268 | msgid "File is too big to display" | |||
|
2269 | msgstr "顯示的檔案太大" | |||
|
2270 | ||||
|
2271 | #: rhodecode/templates/files/files_browser.html:13 | |||
|
2272 | msgid "view" | |||
|
2273 | msgstr "顯示" | |||
|
2274 | ||||
|
2275 | #: rhodecode/templates/files/files_browser.html:14 | |||
|
2276 | msgid "previous revision" | |||
|
2277 | msgstr "前一個修訂" | |||
|
2278 | ||||
|
2279 | #: rhodecode/templates/files/files_browser.html:16 | |||
|
2280 | msgid "next revision" | |||
|
2281 | msgstr "下一個修訂" | |||
|
2282 | ||||
|
2283 | #: rhodecode/templates/files/files_browser.html:23 | |||
|
2284 | msgid "follow current branch" | |||
|
2285 | msgstr "" | |||
|
2286 | ||||
|
2287 | #: rhodecode/templates/files/files_browser.html:27 | |||
|
2288 | msgid "search file list" | |||
|
2289 | msgstr "搜尋檔案列表" | |||
|
2290 | ||||
|
2291 | #: rhodecode/templates/files/files_browser.html:32 | |||
|
2292 | msgid "Loading file list..." | |||
|
2293 | msgstr "載入檔案列表..." | |||
|
2294 | ||||
|
2295 | #: rhodecode/templates/files/files_browser.html:111 | |||
|
2296 | msgid "search truncated" | |||
|
2297 | msgstr "" | |||
|
2298 | ||||
|
2299 | #: rhodecode/templates/files/files_browser.html:122 | |||
|
2300 | msgid "no matching files" | |||
|
2301 | msgstr "無符合的檔案" | |||
|
2302 | ||||
|
2303 | #: rhodecode/templates/files/files_browser.html:161 | |||
|
2304 | msgid "Last modified" | |||
|
2305 | msgstr "最後修改" | |||
|
2306 | ||||
|
2307 | #: rhodecode/templates/files/files_browser.html:162 | |||
|
2308 | msgid "Last commiter" | |||
|
2309 | msgstr "最後的遞交者" | |||
|
2310 | ||||
|
2311 | #: rhodecode/templates/files/files_edit.html:4 | |||
|
2312 | msgid "Edit file" | |||
|
2313 | msgstr "編輯檔案" | |||
|
2314 | ||||
|
2315 | #: rhodecode/templates/files/files_edit.html:19 | |||
|
2316 | msgid "edit file" | |||
|
2317 | msgstr "編輯檔案" | |||
|
2318 | ||||
|
2319 | #: rhodecode/templates/files/files_edit.html:45 | |||
|
2320 | #: rhodecode/templates/shortlog/shortlog_data.html:5 | |||
|
2321 | msgid "commit message" | |||
|
2322 | msgstr "遞交資訊" | |||
|
2323 | ||||
|
2324 | #: rhodecode/templates/files/files_edit.html:51 | |||
|
2325 | msgid "Commit changes" | |||
|
2326 | msgstr "遞交修改" | |||
|
2327 | ||||
|
2328 | #: rhodecode/templates/files/files_source.html:12 | |||
|
2329 | msgid "show annotation" | |||
|
2330 | msgstr "險是註釋" | |||
|
2331 | ||||
|
2332 | #: rhodecode/templates/files/files_source.html:153 | |||
|
2333 | msgid "Selection link" | |||
|
2334 | msgstr "" | |||
|
2335 | ||||
|
2336 | #: rhodecode/templates/followers/followers.html:13 | |||
|
2337 | msgid "followers" | |||
|
2338 | msgstr "追蹤者" | |||
|
2339 | ||||
|
2340 | #: rhodecode/templates/followers/followers_data.html:12 | |||
|
2341 | msgid "Started following" | |||
|
2342 | msgstr "開始追蹤" | |||
|
2343 | ||||
|
2344 | #: rhodecode/templates/forks/forks.html:13 | |||
|
2345 | msgid "forks" | |||
|
2346 | msgstr "分支" | |||
|
2347 | ||||
|
2348 | #: rhodecode/templates/forks/forks_data.html:17 | |||
|
2349 | msgid "forked" | |||
|
2350 | msgstr "已建立分支" | |||
|
2351 | ||||
|
2352 | #: rhodecode/templates/forks/forks_data.html:34 | |||
|
2353 | msgid "There are no forks yet" | |||
|
2354 | msgstr "尚未有任何 fork" | |||
|
2355 | ||||
|
2356 | #: rhodecode/templates/journal/journal.html:34 | |||
|
2357 | msgid "Following" | |||
|
2358 | msgstr "已追蹤" | |||
|
2359 | ||||
|
2360 | #: rhodecode/templates/journal/journal.html:41 | |||
|
2361 | msgid "following user" | |||
|
2362 | msgstr "追蹤使用者" | |||
|
2363 | ||||
|
2364 | #: rhodecode/templates/journal/journal.html:41 | |||
|
2365 | msgid "user" | |||
|
2366 | msgstr "使用者" | |||
|
2367 | ||||
|
2368 | #: rhodecode/templates/journal/journal.html:65 | |||
|
2369 | msgid "You are not following any users or repositories" | |||
|
2370 | msgstr "您尚未追蹤任何使用者或版本庫" | |||
|
2371 | ||||
|
2372 | #: rhodecode/templates/journal/journal_data.html:46 | |||
|
2373 | msgid "No entries yet" | |||
|
2374 | msgstr "" | |||
|
2375 | ||||
|
2376 | #: rhodecode/templates/journal/public_journal.html:17 | |||
|
2377 | msgid "Public Journal" | |||
|
2378 | msgstr "開放日誌" | |||
|
2379 | ||||
|
2380 | #: rhodecode/templates/search/search.html:7 | |||
|
2381 | #: rhodecode/templates/search/search.html:26 | |||
|
2382 | msgid "in repository: " | |||
|
2383 | msgstr "於版本庫:" | |||
|
2384 | ||||
|
2385 | #: rhodecode/templates/search/search.html:9 | |||
|
2386 | #: rhodecode/templates/search/search.html:28 | |||
|
2387 | msgid "in all repositories" | |||
|
2388 | msgstr "於所有的版本庫" | |||
|
2389 | ||||
|
2390 | #: rhodecode/templates/search/search.html:42 | |||
|
2391 | msgid "Search term" | |||
|
2392 | msgstr "搜尋關鍵字" | |||
|
2393 | ||||
|
2394 | #: rhodecode/templates/search/search.html:54 | |||
|
2395 | msgid "Search in" | |||
|
2396 | msgstr "搜尋範圍" | |||
|
2397 | ||||
|
2398 | #: rhodecode/templates/search/search.html:57 | |||
|
2399 | msgid "File contents" | |||
|
2400 | msgstr "文件內容" | |||
|
2401 | ||||
|
2402 | #: rhodecode/templates/search/search.html:59 | |||
|
2403 | msgid "File names" | |||
|
2404 | msgstr "檔案名稱" | |||
|
2405 | ||||
|
2406 | #: rhodecode/templates/search/search_content.html:20 | |||
|
2407 | #: rhodecode/templates/search/search_path.html:15 | |||
|
2408 | msgid "Permission denied" | |||
|
2409 | msgstr "權限不足" | |||
|
2410 | ||||
|
2411 | #: rhodecode/templates/settings/repo_fork.html:5 | |||
|
2412 | msgid "Fork" | |||
|
2413 | msgstr "分支" | |||
|
2414 | ||||
|
2415 | #: rhodecode/templates/settings/repo_fork.html:31 | |||
|
2416 | msgid "Fork name" | |||
|
2417 | msgstr "分支名稱" | |||
|
2418 | ||||
|
2419 | #: rhodecode/templates/settings/repo_fork.html:55 | |||
|
2420 | msgid "fork this repository" | |||
|
2421 | msgstr "fork 這個版本庫" | |||
|
2422 | ||||
|
2423 | #: rhodecode/templates/shortlog/shortlog.html:5 | |||
|
2424 | #: rhodecode/templates/summary/summary.html:666 | |||
|
2425 | msgid "Shortlog" | |||
|
2426 | msgstr "簡短紀錄" | |||
|
2427 | ||||
|
2428 | #: rhodecode/templates/shortlog/shortlog.html:14 | |||
|
2429 | msgid "shortlog" | |||
|
2430 | msgstr "簡短紀錄" | |||
|
2431 | ||||
|
2432 | #: rhodecode/templates/shortlog/shortlog_data.html:6 | |||
|
2433 | msgid "age" | |||
|
2434 | msgstr "" | |||
|
2435 | ||||
|
2436 | #: rhodecode/templates/summary/summary.html:12 | |||
|
2437 | msgid "summary" | |||
|
2438 | msgstr "概況" | |||
|
2439 | ||||
|
2440 | #: rhodecode/templates/summary/summary.html:79 | |||
|
2441 | msgid "remote clone" | |||
|
2442 | msgstr "遠端複製" | |||
|
2443 | ||||
|
2444 | #: rhodecode/templates/summary/summary.html:121 | |||
|
2445 | msgid "by" | |||
|
2446 | msgstr "" | |||
|
2447 | ||||
|
2448 | #: rhodecode/templates/summary/summary.html:128 | |||
|
2449 | msgid "Clone url" | |||
|
2450 | msgstr "複製連結" | |||
|
2451 | ||||
|
2452 | #: rhodecode/templates/summary/summary.html:137 | |||
|
2453 | msgid "Trending source files" | |||
|
2454 | msgstr "" | |||
|
2455 | ||||
|
2456 | #: rhodecode/templates/summary/summary.html:146 | |||
|
2457 | msgid "Download" | |||
|
2458 | msgstr "下載" | |||
|
2459 | ||||
|
2460 | #: rhodecode/templates/summary/summary.html:150 | |||
|
2461 | msgid "There are no downloads yet" | |||
|
2462 | msgstr "沒有任何下載" | |||
|
2463 | ||||
|
2464 | #: rhodecode/templates/summary/summary.html:152 | |||
|
2465 | msgid "Downloads are disabled for this repository" | |||
|
2466 | msgstr "這個版本庫的下載已停用" | |||
|
2467 | ||||
|
2468 | #: rhodecode/templates/summary/summary.html:154 | |||
|
2469 | #: rhodecode/templates/summary/summary.html:320 | |||
|
2470 | msgid "enable" | |||
|
2471 | msgstr "啟用" | |||
|
2472 | ||||
|
2473 | #: rhodecode/templates/summary/summary.html:162 | |||
|
2474 | #: rhodecode/templates/summary/summary.html:297 | |||
|
2475 | #, python-format | |||
|
2476 | msgid "Download %s as %s" | |||
|
2477 | msgstr "下載 %s 為 %s" | |||
|
2478 | ||||
|
2479 | #: rhodecode/templates/summary/summary.html:168 | |||
|
2480 | msgid "Check this to download archive with subrepos" | |||
|
2481 | msgstr "" | |||
|
2482 | ||||
|
2483 | #: rhodecode/templates/summary/summary.html:168 | |||
|
2484 | msgid "with subrepos" | |||
|
2485 | msgstr "" | |||
|
2486 | ||||
|
2487 | #: rhodecode/templates/summary/summary.html:176 | |||
|
2488 | msgid "Feeds" | |||
|
2489 | msgstr "" | |||
|
2490 | ||||
|
2491 | #: rhodecode/templates/summary/summary.html:257 | |||
|
2492 | #: rhodecode/templates/summary/summary.html:684 | |||
|
2493 | #: rhodecode/templates/summary/summary.html:695 | |||
|
2494 | msgid "show more" | |||
|
2495 | msgstr "顯示更多" | |||
|
2496 | ||||
|
2497 | #: rhodecode/templates/summary/summary.html:312 | |||
|
2498 | msgid "Commit activity by day / author" | |||
|
2499 | msgstr "" | |||
|
2500 | ||||
|
2501 | #: rhodecode/templates/summary/summary.html:324 | |||
|
2502 | msgid "Loaded in" | |||
|
2503 | msgstr "" | |||
|
2504 | ||||
|
2505 | #: rhodecode/templates/summary/summary.html:603 | |||
|
2506 | msgid "commits" | |||
|
2507 | msgstr "遞交" | |||
|
2508 | ||||
|
2509 | #: rhodecode/templates/summary/summary.html:604 | |||
|
2510 | msgid "files added" | |||
|
2511 | msgstr "多個檔案新增" | |||
|
2512 | ||||
|
2513 | #: rhodecode/templates/summary/summary.html:605 | |||
|
2514 | msgid "files changed" | |||
|
2515 | msgstr "多個檔案修改" | |||
|
2516 | ||||
|
2517 | #: rhodecode/templates/summary/summary.html:606 | |||
|
2518 | msgid "files removed" | |||
|
2519 | msgstr "移除多個檔案" | |||
|
2520 | ||||
|
2521 | #: rhodecode/templates/summary/summary.html:610 | |||
|
2522 | msgid "file added" | |||
|
2523 | msgstr "檔案新增" | |||
|
2524 | ||||
|
2525 | #: rhodecode/templates/summary/summary.html:611 | |||
|
2526 | msgid "file changed" | |||
|
2527 | msgstr "檔案修改" | |||
|
2528 | ||||
|
2529 | #: rhodecode/templates/summary/summary.html:612 | |||
|
2530 | msgid "file removed" | |||
|
2531 | msgstr "移除檔案" | |||
|
2532 |
@@ -3,10 +3,10 b' List of contributors to RhodeCode projec' | |||||
3 | Lukasz Balcerzak <lukaszbalcerzak@gmail.com> |
|
3 | Lukasz Balcerzak <lukaszbalcerzak@gmail.com> | |
4 | Jason Harris <jason@jasonfharris.com> |
|
4 | Jason Harris <jason@jasonfharris.com> | |
5 | Thayne Harbaugh <thayne@fusionio.com> |
|
5 | Thayne Harbaugh <thayne@fusionio.com> | |
6 | cejones |
|
6 | cejones <> | |
7 | Thomas Waldmann <tw-public@gmx.de> |
|
7 | Thomas Waldmann <tw-public@gmx.de> | |
8 | Lorenzo M. Catucci <lorenzo@sancho.ccd.uniroma2.it> |
|
8 | Lorenzo M. Catucci <lorenzo@sancho.ccd.uniroma2.it> | |
9 | Dmitri Kuznetsov |
|
9 | Dmitri Kuznetsov <> | |
10 | Jared Bunting <jared.bunting@peachjean.com> |
|
10 | Jared Bunting <jared.bunting@peachjean.com> | |
11 | Steve Romanow <slestak989@gmail.com> |
|
11 | Steve Romanow <slestak989@gmail.com> | |
12 | Augosto Hermann <augusto.herrmann@planejamento.gov.br> |
|
12 | Augosto Hermann <augusto.herrmann@planejamento.gov.br> | |
@@ -17,4 +17,5 b' List of contributors to RhodeCode projec' | |||||
17 | Matt Zuba <matt.zuba@goodwillaz.org> |
|
17 | Matt Zuba <matt.zuba@goodwillaz.org> | |
18 | Aras Pranckevicius <aras@unity3d.com> |
|
18 | Aras Pranckevicius <aras@unity3d.com> | |
19 | Tony Bussieres <t.bussieres@gmail.com> |
|
19 | Tony Bussieres <t.bussieres@gmail.com> | |
20 | Erwin Kroon <e.kroon@smartmetersolutions.nl> No newline at end of file |
|
20 | Erwin Kroon <e.kroon@smartmetersolutions.nl> | |
|
21 | nansenat16 <nansenat16@null.tw> No newline at end of file |
@@ -15,7 +15,7 b' RhodeCode is similar in some respects to' | |||||
15 | however RhodeCode can be run as standalone hosted application on your own server. |
|
15 | however RhodeCode can be run as standalone hosted application on your own server. | |
16 | It is open source and donation ware and focuses more on providing a customized, |
|
16 | It is open source and donation ware and focuses more on providing a customized, | |
17 | self administered interface for Mercurial_ and GIT_ repositories. |
|
17 | self administered interface for Mercurial_ and GIT_ repositories. | |
18 | RhodeCode works on *nix systems and Windows it is powered by a vcs_ library |
|
18 | RhodeCode works on \*nix systems and Windows it is powered by a vcs_ library | |
19 | that Lukasz Balcerzak and Marcin Kuzminski created to handle multiple |
|
19 | that Lukasz Balcerzak and Marcin Kuzminski created to handle multiple | |
20 | different version control systems. |
|
20 | different version control systems. | |
21 |
|
21 |
@@ -4,7 +4,7 b'' | |||||
4 | Changelog |
|
4 | Changelog | |
5 | ========= |
|
5 | ========= | |
6 |
|
6 | |||
7 |
1. |
|
7 | 1.4.0 (**2012-XX-XX**) | |
8 | ---------------------- |
|
8 | ---------------------- | |
9 |
|
9 | |||
10 | :status: in-progress |
|
10 | :status: in-progress | |
@@ -13,6 +13,31 b' 1.3.5 (**2012-XX-XX**)' | |||||
13 | news |
|
13 | news | |
14 | ++++ |
|
14 | ++++ | |
15 |
|
15 | |||
|
16 | fixes | |||
|
17 | +++++ | |||
|
18 | ||||
|
19 | 1.3.6 (**2012-05-16**) | |||
|
20 | ---------------------- | |||
|
21 | ||||
|
22 | news | |||
|
23 | ++++ | |||
|
24 | ||||
|
25 | - chinese traditional translation | |||
|
26 | ||||
|
27 | fixes | |||
|
28 | +++++ | |||
|
29 | ||||
|
30 | - fixed no scm found warning | |||
|
31 | - fixed __future__ import error on rcextensions | |||
|
32 | - made simplejson required lib for speedup on JSON encoding | |||
|
33 | - fixes #449 bad regex could get more than revisions from parsing history | |||
|
34 | ||||
|
35 | 1.3.5 (**2012-05-10**) | |||
|
36 | ---------------------- | |||
|
37 | ||||
|
38 | news | |||
|
39 | ++++ | |||
|
40 | ||||
16 | - use ext_json for json module |
|
41 | - use ext_json for json module | |
17 | - unified annotation view with file source view |
|
42 | - unified annotation view with file source view | |
18 | - notification improvements, better inbox + css |
|
43 | - notification improvements, better inbox + css | |
@@ -26,6 +51,7 b' news' | |||||
26 | - limited push/pull operations are now logged for git in the journal |
|
51 | - limited push/pull operations are now logged for git in the journal | |
27 | - bumped mercurial to 2.2.X series |
|
52 | - bumped mercurial to 2.2.X series | |
28 | - added support for displaying submodules in file-browser |
|
53 | - added support for displaying submodules in file-browser | |
|
54 | - #421 added bookmarks in changelog view | |||
29 |
|
55 | |||
30 | fixes |
|
56 | fixes | |
31 | +++++ |
|
57 | +++++ | |
@@ -37,6 +63,8 b' fixes' | |||||
37 | - fixed remote-pulling for git remotes remopositories |
|
63 | - fixed remote-pulling for git remotes remopositories | |
38 | - fixed #434: Error when accessing files or changesets of a git repository |
|
64 | - fixed #434: Error when accessing files or changesets of a git repository | |
39 | with submodules |
|
65 | with submodules | |
|
66 | - fixed issue with empty APIKEYS for users after registration ref. #438 | |||
|
67 | - fixed issue with getting README files from git repositories | |||
40 |
|
68 | |||
41 | 1.3.4 (**2012-03-28**) |
|
69 | 1.3.4 (**2012-03-28**) | |
42 | ---------------------- |
|
70 | ---------------------- |
@@ -46,6 +46,9 b' except ImportError:' | |||||
46 | PLATFORM_WIN = ('Windows') |
|
46 | PLATFORM_WIN = ('Windows') | |
47 | PLATFORM_OTHERS = ('Linux', 'Darwin', 'FreeBSD', 'OpenBSD', 'SunOS') |
|
47 | PLATFORM_OTHERS = ('Linux', 'Darwin', 'FreeBSD', 'OpenBSD', 'SunOS') | |
48 |
|
48 | |||
|
49 | is_windows = __platform__ in PLATFORM_WIN | |||
|
50 | is_unix = __platform__ in PLATFORM_OTHERS | |||
|
51 | ||||
49 | requirements = [ |
|
52 | requirements = [ | |
50 | "Pylons==1.0.0", |
|
53 | "Pylons==1.0.0", | |
51 | "Beaker==1.6.3", |
|
54 | "Beaker==1.6.3", | |
@@ -62,13 +65,13 b' requirements = [' | |||||
62 | "webob==1.0.8", |
|
65 | "webob==1.0.8", | |
63 | "markdown==2.1.1", |
|
66 | "markdown==2.1.1", | |
64 | "docutils==0.8.1", |
|
67 | "docutils==0.8.1", | |
|
68 | "simplejson==2.5.2", | |||
65 | ] |
|
69 | ] | |
66 |
|
70 | |||
67 | if __py_version__ < (2, 6): |
|
71 | if __py_version__ < (2, 6): | |
68 | requirements.append("simplejson") |
|
|||
69 | requirements.append("pysqlite") |
|
72 | requirements.append("pysqlite") | |
70 |
|
73 | |||
71 | if __platform__ in PLATFORM_WIN: |
|
74 | if is_windows: | |
72 | requirements.append("mercurial>=2.2.1,<2.3") |
|
75 | requirements.append("mercurial>=2.2.1,<2.3") | |
73 | else: |
|
76 | else: | |
74 | requirements.append("py-bcrypt") |
|
77 | requirements.append("py-bcrypt") |
@@ -22,6 +22,8 b'' | |||||
22 | # |
|
22 | # | |
23 | # You should have received a copy of the GNU General Public License |
|
23 | # You should have received a copy of the GNU General Public License | |
24 | # along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
24 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
|
25 | from __future__ import with_statement | |||
|
26 | ||||
25 | import os |
|
27 | import os | |
26 | import sys |
|
28 | import sys | |
27 | import pkg_resources |
|
29 | import pkg_resources |
@@ -26,6 +26,7 b'' | |||||
26 | import os |
|
26 | import os | |
27 | import logging |
|
27 | import logging | |
28 | import traceback |
|
28 | import traceback | |
|
29 | import tempfile | |||
29 |
|
30 | |||
30 | from pylons import request, response, tmpl_context as c, url |
|
31 | from pylons import request, response, tmpl_context as c, url | |
31 | from pylons.i18n.translation import _ |
|
32 | from pylons.i18n.translation import _ | |
@@ -48,6 +49,7 b' from rhodecode.lib.vcs.nodes import File' | |||||
48 |
|
49 | |||
49 | from rhodecode.model.repo import RepoModel |
|
50 | from rhodecode.model.repo import RepoModel | |
50 | from rhodecode.model.scm import ScmModel |
|
51 | from rhodecode.model.scm import ScmModel | |
|
52 | from rhodecode.model.db import Repository | |||
51 |
|
53 | |||
52 | from rhodecode.controllers.changeset import anchor_url, _ignorews_url,\ |
|
54 | from rhodecode.controllers.changeset import anchor_url, _ignorews_url,\ | |
53 | _context_url, get_line_ctx, get_ignore_ws |
|
55 | _context_url, get_line_ctx, get_ignore_ws | |
@@ -168,7 +170,7 b' class FilesController(BaseRepoController' | |||||
168 | file_node = self.__get_filenode_or_redirect(repo_name, cs, f_path) |
|
170 | file_node = self.__get_filenode_or_redirect(repo_name, cs, f_path) | |
169 |
|
171 | |||
170 | response.content_disposition = 'attachment; filename=%s' % \ |
|
172 | response.content_disposition = 'attachment; filename=%s' % \ | |
171 | safe_str(f_path.split(os.sep)[-1]) |
|
173 | safe_str(f_path.split(Repository.url_sep())[-1]) | |
172 |
|
174 | |||
173 | response.content_type = file_node.mimetype |
|
175 | response.content_type = file_node.mimetype | |
174 | return file_node.content |
|
176 | return file_node.content | |
@@ -358,25 +360,23 b' class FilesController(BaseRepoController' | |||||
358 | except (ImproperArchiveTypeError, KeyError): |
|
360 | except (ImproperArchiveTypeError, KeyError): | |
359 | return _('Unknown archive type') |
|
361 | return _('Unknown archive type') | |
360 |
|
362 | |||
|
363 | archive = tempfile.NamedTemporaryFile(mode='w+r+b', delete=False) | |||
|
364 | cs.fill_archive(stream=archive, kind=fileformat, subrepos=subrepos) | |||
|
365 | archive.close() | |||
361 | response.content_type = content_type |
|
366 | response.content_type = content_type | |
362 | response.content_disposition = 'attachment; filename=%s-%s%s' \ |
|
367 | response.content_disposition = 'attachment; filename=%s-%s%s' \ | |
363 | % (repo_name, revision, ext) |
|
368 | % (repo_name, revision[:12], ext) | |
364 |
|
369 | response.content_length = str(os.path.getsize(archive.name)) | ||
365 | import tempfile |
|
|||
366 | archive = tempfile.mkstemp()[1] |
|
|||
367 | t = open(archive, 'wb') |
|
|||
368 | cs.fill_archive(stream=t, kind=fileformat, subrepos=subrepos) |
|
|||
369 |
|
370 | |||
370 |
def get_chunked_archive( |
|
371 | def get_chunked_archive(tmpfile): | |
371 | stream = open(archive, 'rb') |
|
|||
372 | while True: |
|
372 | while True: | |
373 |
data = |
|
373 | data = tmpfile.read(16 * 1024) | |
374 | if not data: |
|
374 | if not data: | |
375 |
|
|
375 | tmpfile.close() | |
|
376 | os.unlink(tmpfile.name) | |||
376 | break |
|
377 | break | |
377 | yield data |
|
378 | yield data | |
378 |
|
379 | return get_chunked_archive(tmpfile=open(archive.name,'rb')) | ||
379 | return get_chunked_archive(archive) |
|
|||
380 |
|
380 | |||
381 | @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
|
381 | @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', | |
382 | 'repository.admin') |
|
382 | 'repository.admin') |
@@ -179,10 +179,12 b' class SummaryController(BaseRepoControll' | |||||
179 | if c.enable_downloads: |
|
179 | if c.enable_downloads: | |
180 | c.download_options = self._get_download_links(c.rhodecode_repo) |
|
180 | c.download_options = self._get_download_links(c.rhodecode_repo) | |
181 |
|
181 | |||
182 |
c.readme_data, c.readme_file = self.__get_readme_data( |
|
182 | c.readme_data, c.readme_file = self.__get_readme_data( | |
|
183 | c.rhodecode_db_repo.repo_name, c.rhodecode_repo | |||
|
184 | ) | |||
183 | return render('summary/summary.html') |
|
185 | return render('summary/summary.html') | |
184 |
|
186 | |||
185 | def __get_readme_data(self, repo): |
|
187 | def __get_readme_data(self, repo_name, repo): | |
186 |
|
188 | |||
187 | @cache_region('long_term') |
|
189 | @cache_region('long_term') | |
188 | def _get_readme_from_cache(key): |
|
190 | def _get_readme_from_cache(key): | |
@@ -190,7 +192,7 b' class SummaryController(BaseRepoControll' | |||||
190 | readme_file = None |
|
192 | readme_file = None | |
191 | log.debug('Fetching readme file') |
|
193 | log.debug('Fetching readme file') | |
192 | try: |
|
194 | try: | |
193 |
cs = repo.get_changeset( |
|
195 | cs = repo.get_changeset() # fetches TIP | |
194 | renderer = MarkupRenderer() |
|
196 | renderer = MarkupRenderer() | |
195 | for f in README_FILES: |
|
197 | for f in README_FILES: | |
196 | try: |
|
198 | try: | |
@@ -202,6 +204,7 b' class SummaryController(BaseRepoControll' | |||||
202 | except NodeDoesNotExistError: |
|
204 | except NodeDoesNotExistError: | |
203 | continue |
|
205 | continue | |
204 | except ChangesetError: |
|
206 | except ChangesetError: | |
|
207 | log.error(traceback.format_exc()) | |||
205 | pass |
|
208 | pass | |
206 | except EmptyRepositoryError: |
|
209 | except EmptyRepositoryError: | |
207 | pass |
|
210 | pass | |
@@ -210,7 +213,7 b' class SummaryController(BaseRepoControll' | |||||
210 |
|
213 | |||
211 | return readme_data, readme_file |
|
214 | return readme_data, readme_file | |
212 |
|
215 | |||
213 |
key = |
|
216 | key = repo_name + '_README' | |
214 | inv = CacheInvalidation.invalidate(key) |
|
217 | inv = CacheInvalidation.invalidate(key) | |
215 | if inv is not None: |
|
218 | if inv is not None: | |
216 | region_invalidate(_get_readme_from_cache, None, key) |
|
219 | region_invalidate(_get_readme_from_cache, None, key) |
@@ -64,7 +64,7 b' class PasswordGenerator(object):' | |||||
64 | passwd_gen = PasswordGenerator() |
|
64 | passwd_gen = PasswordGenerator() | |
65 | #print 8-letter password containing only big and small letters |
|
65 | #print 8-letter password containing only big and small letters | |
66 | of alphabet |
|
66 | of alphabet | |
67 |
p |
|
67 | passwd_gen.gen_password(8, passwd_gen.ALPHABETS_BIG_SMALL) | |
68 | """ |
|
68 | """ | |
69 | ALPHABETS_NUM = r'''1234567890''' |
|
69 | ALPHABETS_NUM = r'''1234567890''' | |
70 | ALPHABETS_SMALL = r'''qwertyuiopasdfghjklzxcvbnm''' |
|
70 | ALPHABETS_SMALL = r'''qwertyuiopasdfghjklzxcvbnm''' |
@@ -81,22 +81,24 b' except ImportError:' | |||||
81 | _sj = None |
|
81 | _sj = None | |
82 |
|
82 | |||
83 |
|
83 | |||
84 | # simplejson not found try out regular json module |
|
84 | try: | |
85 | import json as _json |
|
85 | # simplejson not found try out regular json module | |
86 |
|
86 | import json as _json | ||
87 |
|
87 | |||
88 | # extended JSON encoder for json |
|
88 | # extended JSON encoder for json | |
89 | class ExtendedEncoder(_json.JSONEncoder): |
|
89 | class ExtendedEncoder(_json.JSONEncoder): | |
90 | def default(self, obj): |
|
90 | def default(self, obj): | |
91 | try: |
|
91 | try: | |
92 | return _obj_dump(obj) |
|
92 | return _obj_dump(obj) | |
93 | except NotImplementedError: |
|
93 | except NotImplementedError: | |
94 | pass |
|
94 | pass | |
95 | return _json.JSONEncoder.default(self, obj) |
|
95 | return _json.JSONEncoder.default(self, obj) | |
96 | # monkey-patch JSON encoder to use extended version |
|
96 | # monkey-patch JSON encoder to use extended version | |
97 | _json.dumps = functools.partial(_json.dumps, cls=ExtendedEncoder) |
|
97 | _json.dumps = functools.partial(_json.dumps, cls=ExtendedEncoder) | |
98 | _json.dump = functools.partial(_json.dump, cls=ExtendedEncoder) |
|
98 | _json.dump = functools.partial(_json.dump, cls=ExtendedEncoder) | |
99 | stdlib = _json |
|
99 | stdlib = _json | |
|
100 | except ImportError: | |||
|
101 | _json = None | |||
100 |
|
102 | |||
101 | # set all available json modules |
|
103 | # set all available json modules | |
102 | simplejson = _sj |
|
104 | simplejson = _sj |
@@ -150,7 +150,7 b' def action_logger(user, action, repo, ip' | |||||
150 |
|
150 | |||
151 | user_log = UserLog() |
|
151 | user_log = UserLog() | |
152 | user_log.user_id = user_obj.user_id |
|
152 | user_log.user_id = user_obj.user_id | |
153 | user_log.action = action |
|
153 | user_log.action = safe_unicode(action) | |
154 |
|
154 | |||
155 | user_log.repository_id = repo_obj.repo_id |
|
155 | user_log.repository_id = repo_obj.repo_id | |
156 | user_log.repository_name = repo_name |
|
156 | user_log.repository_name = repo_name |
@@ -215,7 +215,6 b' def safe_str(unicode_, to_encoding=None)' | |||||
215 | try: |
|
215 | try: | |
216 | import chardet |
|
216 | import chardet | |
217 | encoding = chardet.detect(unicode_)['encoding'] |
|
217 | encoding = chardet.detect(unicode_)['encoding'] | |
218 | print encoding |
|
|||
219 | if encoding is None: |
|
218 | if encoding is None: | |
220 | raise UnicodeEncodeError() |
|
219 | raise UnicodeEncodeError() | |
221 |
|
220 |
@@ -240,11 +240,11 b' class GitChangeset(BaseChangeset):' | |||||
240 | which is generally not good. Should be replaced with algorithm |
|
240 | which is generally not good. Should be replaced with algorithm | |
241 | iterating commits. |
|
241 | iterating commits. | |
242 | """ |
|
242 | """ | |
243 |
cmd = 'log --pretty="format: %%H" - |
|
243 | cmd = 'log --pretty="format: %%H" -s -p %s -- "%s"' % ( | |
244 | self.id, path |
|
244 | self.id, path | |
245 | ) |
|
245 | ) | |
246 | so, se = self.repository.run_git_command(cmd) |
|
246 | so, se = self.repository.run_git_command(cmd) | |
247 |
ids = re.findall(r' |
|
247 | ids = re.findall(r'[0-9a-fA-F]{40}', so) | |
248 | return [self.repository.get_changeset(id) for id in ids] |
|
248 | return [self.repository.get_changeset(id) for id in ids] | |
249 |
|
249 | |||
250 | def get_file_annotate(self, path): |
|
250 | def get_file_annotate(self, path): |
@@ -37,6 +37,10 b' class MercurialChangeset(BaseChangeset):' | |||||
37 | return safe_unicode(self._ctx.branch()) |
|
37 | return safe_unicode(self._ctx.branch()) | |
38 |
|
38 | |||
39 | @LazyProperty |
|
39 | @LazyProperty | |
|
40 | def bookmarks(self): | |||
|
41 | return map(safe_unicode, self._ctx.bookmarks()) | |||
|
42 | ||||
|
43 | @LazyProperty | |||
40 | def message(self): |
|
44 | def message(self): | |
41 | return safe_unicode(self._ctx.description()) |
|
45 | return safe_unicode(self._ctx.description()) | |
42 |
|
46 | |||
@@ -259,8 +263,6 b' class MercurialChangeset(BaseChangeset):' | |||||
259 | archival.archive(self.repository._repo, stream, self.raw_id, |
|
263 | archival.archive(self.repository._repo, stream, self.raw_id, | |
260 | kind, prefix=prefix, subrepos=subrepos) |
|
264 | kind, prefix=prefix, subrepos=subrepos) | |
261 |
|
265 | |||
262 | #stream.close() |
|
|||
263 |
|
||||
264 | if stream.closed and hasattr(stream, 'name'): |
|
266 | if stream.closed and hasattr(stream, 'name'): | |
265 | stream = open(stream.name, 'rb') |
|
267 | stream = open(stream.name, 'rb') | |
266 | elif hasattr(stream, 'mode') and 'r' not in stream.mode: |
|
268 | elif hasattr(stream, 'mode') and 'r' not in stream.mode: |
@@ -90,7 +90,6 b' def safe_str(unicode_, to_encoding=None)' | |||||
90 | try: |
|
90 | try: | |
91 | import chardet |
|
91 | import chardet | |
92 | encoding = chardet.detect(unicode_)['encoding'] |
|
92 | encoding = chardet.detect(unicode_)['encoding'] | |
93 | print encoding |
|
|||
94 | if encoding is None: |
|
93 | if encoding is None: | |
95 | raise UnicodeEncodeError() |
|
94 | raise UnicodeEncodeError() | |
96 |
|
95 |
@@ -647,7 +647,7 b' class Repository(Base, BaseModel):' | |||||
647 | # SCM PROPERTIES |
|
647 | # SCM PROPERTIES | |
648 | #========================================================================== |
|
648 | #========================================================================== | |
649 |
|
649 | |||
650 | def get_changeset(self, rev): |
|
650 | def get_changeset(self, rev=None): | |
651 | return get_changeset_safe(self.scm_instance, rev) |
|
651 | return get_changeset_safe(self.scm_instance, rev) | |
652 |
|
652 | |||
653 | @property |
|
653 | @property | |
@@ -1297,7 +1297,8 b' class Notification(Base, BaseModel):' | |||||
1297 | @property |
|
1297 | @property | |
1298 | def recipients(self): |
|
1298 | def recipients(self): | |
1299 | return [x.user for x in UserNotification.query()\ |
|
1299 | return [x.user for x in UserNotification.query()\ | |
1300 |
.filter(UserNotification.notification == self) |
|
1300 | .filter(UserNotification.notification == self)\ | |
|
1301 | .order_by(UserNotification.user).all()] | |||
1301 |
|
1302 | |||
1302 | @classmethod |
|
1303 | @classmethod | |
1303 | def create(cls, created_by, subject, body, recipients, type_=None): |
|
1304 | def create(cls, created_by, subject, body, recipients, type_=None): |
@@ -225,10 +225,8 b' class UserModel(BaseModel):' | |||||
225 | from rhodecode.model.notification import NotificationModel |
|
225 | from rhodecode.model.notification import NotificationModel | |
226 |
|
226 | |||
227 | try: |
|
227 | try: | |
228 | new_user = User() |
|
228 | form_data['admin'] = False | |
229 | for k, v in form_data.items(): |
|
229 | new_user = self.create(form_data) | |
230 | if k != 'admin': |
|
|||
231 | setattr(new_user, k, v) |
|
|||
232 |
|
230 | |||
233 | self.sa.add(new_user) |
|
231 | self.sa.add(new_user) | |
234 | self.sa.flush() |
|
232 | self.sa.flush() | |
@@ -533,7 +531,6 b' class UserModel(BaseModel):' | |||||
533 |
|
531 | |||
534 | for perm in user_repo_group_perms_from_users_groups: |
|
532 | for perm in user_repo_group_perms_from_users_groups: | |
535 | g_k = perm.UsersGroupRepoGroupToPerm.group.group_name |
|
533 | g_k = perm.UsersGroupRepoGroupToPerm.group.group_name | |
536 | print perm, g_k |
|
|||
537 | p = perm.Permission.permission_name |
|
534 | p = perm.Permission.permission_name | |
538 | cur_perm = user.permissions[GK][g_k] |
|
535 | cur_perm = user.permissions[GK][g_k] | |
539 | # overwrite permission only if it's greater than permission |
|
536 | # overwrite permission only if it's greater than permission |
@@ -2545,6 +2545,10 b' h3.files_location {' | |||||
2545 | .right .logtags{ |
|
2545 | .right .logtags{ | |
2546 | padding: 2px 2px 2px 2px; |
|
2546 | padding: 2px 2px 2px 2px; | |
2547 | } |
|
2547 | } | |
|
2548 | .right .logtags .branchtag,.right .logtags .tagtag,.right .logtags .booktag{ | |||
|
2549 | margin: 0px 2px; | |||
|
2550 | } | |||
|
2551 | ||||
2548 | .right .logtags .branchtag,.logtags .branchtag { |
|
2552 | .right .logtags .branchtag,.logtags .branchtag { | |
2549 | padding: 1px 3px 1px 3px; |
|
2553 | padding: 1px 3px 1px 3px; | |
2550 | background-color: #bfbfbf; |
|
2554 | background-color: #bfbfbf; | |
@@ -2583,10 +2587,10 b' h3.files_location {' | |||||
2583 | text-decoration: none; |
|
2587 | text-decoration: none; | |
2584 | color: #ffffff; |
|
2588 | color: #ffffff; | |
2585 | } |
|
2589 | } | |
2586 | .right .logbooks .bookbook,.logbooks .bookbook { |
|
2590 | .right .logbooks .bookbook,.logbooks .bookbook,.right .logtags .bookbook,.logtags .bookbook { | |
2587 |
padding: 1px 3px |
|
2591 | padding: 1px 3px 1px 3px; | |
2588 | background-color: #46A546; |
|
2592 | background-color: #46A546; | |
2589 |
font-size: |
|
2593 | font-size: 10px; | |
2590 | font-weight: bold; |
|
2594 | font-weight: bold; | |
2591 | color: #ffffff; |
|
2595 | color: #ffffff; | |
2592 | text-transform: uppercase; |
|
2596 | text-transform: uppercase; | |
@@ -2595,10 +2599,10 b' h3.files_location {' | |||||
2595 | -moz-border-radius: 3px; |
|
2599 | -moz-border-radius: 3px; | |
2596 | border-radius: 3px; |
|
2600 | border-radius: 3px; | |
2597 | } |
|
2601 | } | |
2598 | .right .logbooks .bookbook,.logbooks .bookbook a{ |
|
2602 | .right .logbooks .bookbook,.logbooks .bookbook a,.right .logtags .bookbook,.logtags .bookbook a{ | |
2599 | color: #ffffff; |
|
2603 | color: #ffffff; | |
2600 | } |
|
2604 | } | |
2601 | .right .logbooks .bookbook,.logbooks .bookbook a:hover{ |
|
2605 | .right .logbooks .bookbook,.logbooks .bookbook a:hover,.right .logtags .bookbook,.logtags .bookbook a:hover{ | |
2602 | text-decoration: none; |
|
2606 | text-decoration: none; | |
2603 | color: #ffffff; |
|
2607 | color: #ffffff; | |
2604 | } |
|
2608 | } |
@@ -100,8 +100,16 b'' | |||||
100 | %endif |
|
100 | %endif | |
101 | %if cs.branch: |
|
101 | %if cs.branch: | |
102 | <span class="branchtag" title="${'%s %s' % (_('branch'),cs.branch)}"> |
|
102 | <span class="branchtag" title="${'%s %s' % (_('branch'),cs.branch)}"> | |
103 |
${h.link_to(h.shorter(cs.branch),h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id))} |
|
103 | ${h.link_to(h.shorter(cs.branch),h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id))} | |
|
104 | </span> | |||
104 | %endif |
|
105 | %endif | |
|
106 | %if h.is_hg(c.rhodecode_repo): | |||
|
107 | %for book in cs.bookmarks: | |||
|
108 | <span class="bookbook" title="${'%s %s' % (_('bookmark'),book)}"> | |||
|
109 | ${h.link_to(h.shorter(book),h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id))} | |||
|
110 | </span> | |||
|
111 | %endfor | |||
|
112 | %endif | |||
105 | %for tag in cs.tags: |
|
113 | %for tag in cs.tags: | |
106 | <span class="tagtag" title="${'%s %s' % (_('tag'),tag)}"> |
|
114 | <span class="tagtag" title="${'%s %s' % (_('tag'),tag)}"> | |
107 | ${h.link_to(h.shorter(tag),h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id))}</span> |
|
115 | ${h.link_to(h.shorter(tag),h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id))}</span> |
@@ -21,13 +21,15 b' from pylons import config, url' | |||||
21 | from routes.util import URLGenerator |
|
21 | from routes.util import URLGenerator | |
22 | from webtest import TestApp |
|
22 | from webtest import TestApp | |
23 |
|
23 | |||
|
24 | from rhodecode import is_windows | |||
24 | from rhodecode.model.meta import Session |
|
25 | from rhodecode.model.meta import Session | |
25 | from rhodecode.model.db import User |
|
26 | from rhodecode.model.db import User | |
26 |
|
27 | |||
27 | import pylons.test |
|
28 | import pylons.test | |
28 |
|
29 | |||
29 | os.environ['TZ'] = 'UTC' |
|
30 | os.environ['TZ'] = 'UTC' | |
30 | time.tzset() |
|
31 | if not is_windows: | |
|
32 | time.tzset() | |||
31 |
|
33 | |||
32 | log = logging.getLogger(__name__) |
|
34 | log = logging.getLogger(__name__) | |
33 |
|
35 | |||
@@ -71,6 +73,7 b" NEW_GIT_REPO = 'vcs_test_git_new'" | |||||
71 | HG_FORK = 'vcs_test_hg_fork' |
|
73 | HG_FORK = 'vcs_test_hg_fork' | |
72 | GIT_FORK = 'vcs_test_git_fork' |
|
74 | GIT_FORK = 'vcs_test_git_fork' | |
73 |
|
75 | |||
|
76 | ||||
74 | class TestController(TestCase): |
|
77 | class TestController(TestCase): | |
75 |
|
78 | |||
76 | def __init__(self, *args, **kwargs): |
|
79 | def __init__(self, *args, **kwargs): |
@@ -190,18 +190,22 b' class TestFilesController(TestController' | |||||
190 | self.log_user() |
|
190 | self.log_user() | |
191 |
|
191 | |||
192 | for arch_ext, info in ARCHIVE_SPECS.items(): |
|
192 | for arch_ext, info in ARCHIVE_SPECS.items(): | |
|
193 | short = '27cd5cce30c9%s' % arch_ext | |||
193 | fname = '27cd5cce30c96924232dffcd24178a07ffeb5dfc%s' % arch_ext |
|
194 | fname = '27cd5cce30c96924232dffcd24178a07ffeb5dfc%s' % arch_ext | |
194 |
filename = '%s-%s' % (HG_REPO, |
|
195 | filename = '%s-%s' % (HG_REPO, short) | |
195 |
|
196 | response = self.app.get(url(controller='files', | ||
196 | response = self.app.get(url(controller='files', action='archivefile', |
|
197 | action='archivefile', | |
197 | repo_name=HG_REPO, |
|
198 | repo_name=HG_REPO, | |
198 | fname=fname)) |
|
199 | fname=fname)) | |
199 |
|
200 | |||
200 |
assert |
|
201 | self.assertEqual(response.status, '200 OK') | |
201 |
assert |
|
202 | self.assertEqual(response.response._headers.items(), | |
202 | ('Cache-Control', 'no-cache'), |
|
203 | [('Pragma', 'no-cache'), | |
203 | ('Content-Type', '%s; charset=utf-8' % info[0]), |
|
204 | ('Cache-Control', 'no-cache'), | |
204 | ('Content-Disposition', 'attachment; filename=%s' % filename), ], 'wrong headers' |
|
205 | ('Content-Type', '%s; charset=utf-8' % info[0]), | |
|
206 | ('Content-Disposition', 'attachment; filename=%s' % filename), | |||
|
207 | ] | |||
|
208 | ) | |||
205 |
|
209 | |||
206 | def test_archival_wrong_ext(self): |
|
210 | def test_archival_wrong_ext(self): | |
207 | self.log_user() |
|
211 | self.log_user() | |
@@ -212,8 +216,7 b' class TestFilesController(TestController' | |||||
212 | response = self.app.get(url(controller='files', action='archivefile', |
|
216 | response = self.app.get(url(controller='files', action='archivefile', | |
213 | repo_name=HG_REPO, |
|
217 | repo_name=HG_REPO, | |
214 | fname=fname)) |
|
218 | fname=fname)) | |
215 |
|
|
219 | response.mustcontain('Unknown archive type') | |
216 |
|
||||
217 |
|
220 | |||
218 | def test_archival_wrong_revision(self): |
|
221 | def test_archival_wrong_revision(self): | |
219 | self.log_user() |
|
222 | self.log_user() | |
@@ -224,7 +227,7 b' class TestFilesController(TestController' | |||||
224 | response = self.app.get(url(controller='files', action='archivefile', |
|
227 | response = self.app.get(url(controller='files', action='archivefile', | |
225 | repo_name=HG_REPO, |
|
228 | repo_name=HG_REPO, | |
226 | fname=fname)) |
|
229 | fname=fname)) | |
227 |
|
|
230 | response.mustcontain('Unknown revision') | |
228 |
|
231 | |||
229 | #========================================================================== |
|
232 | #========================================================================== | |
230 | # RAW FILE |
|
233 | # RAW FILE | |
@@ -236,8 +239,8 b' class TestFilesController(TestController' | |||||
236 | revision='27cd5cce30c96924232dffcd24178a07ffeb5dfc', |
|
239 | revision='27cd5cce30c96924232dffcd24178a07ffeb5dfc', | |
237 | f_path='vcs/nodes.py')) |
|
240 | f_path='vcs/nodes.py')) | |
238 |
|
241 | |||
239 |
assert |
|
242 | self.assertEqual(response.content_disposition, "attachment; filename=nodes.py") | |
240 |
assert |
|
243 | self.assertEqual(response.content_type, "text/x-python") | |
241 |
|
244 | |||
242 | def test_raw_file_wrong_cs(self): |
|
245 | def test_raw_file_wrong_cs(self): | |
243 | self.log_user() |
|
246 | self.log_user() | |
@@ -277,7 +280,7 b' class TestFilesController(TestController' | |||||
277 | revision='27cd5cce30c96924232dffcd24178a07ffeb5dfc', |
|
280 | revision='27cd5cce30c96924232dffcd24178a07ffeb5dfc', | |
278 | f_path='vcs/nodes.py')) |
|
281 | f_path='vcs/nodes.py')) | |
279 |
|
282 | |||
280 |
assert |
|
283 | self.assertEqual(response.content_type, "text/plain") | |
281 |
|
284 | |||
282 | def test_raw_wrong_cs(self): |
|
285 | def test_raw_wrong_cs(self): | |
283 | self.log_user() |
|
286 | self.log_user() |
@@ -54,7 +54,6 b' class TestLoginController(TestController' | |||||
54 | self.assertEqual(response.status, '200 OK') |
|
54 | self.assertEqual(response.status, '200 OK') | |
55 | self.assertTrue('Users administration' in response.body) |
|
55 | self.assertTrue('Users administration' in response.body) | |
56 |
|
56 | |||
57 |
|
||||
58 | def test_login_short_password(self): |
|
57 | def test_login_short_password(self): | |
59 | response = self.app.post(url(controller='login', action='index'), |
|
58 | response = self.app.post(url(controller='login', action='index'), | |
60 | {'username':'test_admin', |
|
59 | {'username':'test_admin', | |
@@ -101,7 +100,7 b' class TestLoginController(TestController' | |||||
101 | 'lastname':'test'}) |
|
100 | 'lastname':'test'}) | |
102 |
|
101 | |||
103 | self.assertEqual(response.status , '200 OK') |
|
102 | self.assertEqual(response.status , '200 OK') | |
104 |
|
|
103 | response.mustcontain('This e-mail address is already taken') | |
105 |
|
104 | |||
106 | def test_register_err_same_email_case_sensitive(self): |
|
105 | def test_register_err_same_email_case_sensitive(self): | |
107 | response = self.app.post(url(controller='login', action='register'), |
|
106 | response = self.app.post(url(controller='login', action='register'), | |
@@ -112,7 +111,7 b' class TestLoginController(TestController' | |||||
112 | 'name':'test', |
|
111 | 'name':'test', | |
113 | 'lastname':'test'}) |
|
112 | 'lastname':'test'}) | |
114 | self.assertEqual(response.status , '200 OK') |
|
113 | self.assertEqual(response.status , '200 OK') | |
115 |
|
|
114 | response.mustcontain('This e-mail address is already taken') | |
116 |
|
115 | |||
117 | def test_register_err_wrong_data(self): |
|
116 | def test_register_err_wrong_data(self): | |
118 | response = self.app.post(url(controller='login', action='register'), |
|
117 | response = self.app.post(url(controller='login', action='register'), | |
@@ -123,9 +122,8 b' class TestLoginController(TestController' | |||||
123 | 'name':'test', |
|
122 | 'name':'test', | |
124 | 'lastname':'test'}) |
|
123 | 'lastname':'test'}) | |
125 | self.assertEqual(response.status , '200 OK') |
|
124 | self.assertEqual(response.status , '200 OK') | |
126 |
|
|
125 | response.mustcontain('An email address must contain a single @') | |
127 |
|
|
126 | response.mustcontain('Enter a value 6 characters long or more') | |
128 |
|
||||
129 |
|
127 | |||
130 | def test_register_err_username(self): |
|
128 | def test_register_err_username(self): | |
131 | response = self.app.post(url(controller='login', action='register'), |
|
129 | response = self.app.post(url(controller='login', action='register'), | |
@@ -137,11 +135,11 b' class TestLoginController(TestController' | |||||
137 | 'lastname':'test'}) |
|
135 | 'lastname':'test'}) | |
138 |
|
136 | |||
139 | self.assertEqual(response.status , '200 OK') |
|
137 | self.assertEqual(response.status , '200 OK') | |
140 |
|
|
138 | response.mustcontain('An email address must contain a single @') | |
141 |
|
|
139 | response.mustcontain('Username may only contain ' | |
142 | 'alphanumeric characters underscores, ' |
|
140 | 'alphanumeric characters underscores, ' | |
143 | 'periods or dashes and must begin with ' |
|
141 | 'periods or dashes and must begin with ' | |
144 |
'alphanumeric character') |
|
142 | 'alphanumeric character') | |
145 |
|
143 | |||
146 | def test_register_err_case_sensitive(self): |
|
144 | def test_register_err_case_sensitive(self): | |
147 | response = self.app.post(url(controller='login', action='register'), |
|
145 | response = self.app.post(url(controller='login', action='register'), | |
@@ -156,8 +154,6 b' class TestLoginController(TestController' | |||||
156 | self.assertTrue('An email address must contain a single @' in response.body) |
|
154 | self.assertTrue('An email address must contain a single @' in response.body) | |
157 | self.assertTrue('This username already exists' in response.body) |
|
155 | self.assertTrue('This username already exists' in response.body) | |
158 |
|
156 | |||
159 |
|
||||
160 |
|
||||
161 | def test_register_special_chars(self): |
|
157 | def test_register_special_chars(self): | |
162 | response = self.app.post(url(controller='login', action='register'), |
|
158 | response = self.app.post(url(controller='login', action='register'), | |
163 | {'username':'xxxaxn', |
|
159 | {'username':'xxxaxn', | |
@@ -170,7 +166,6 b' class TestLoginController(TestController' | |||||
170 | self.assertEqual(response.status , '200 OK') |
|
166 | self.assertEqual(response.status , '200 OK') | |
171 | self.assertTrue('Invalid characters in password' in response.body) |
|
167 | self.assertTrue('Invalid characters in password' in response.body) | |
172 |
|
168 | |||
173 |
|
||||
174 | def test_register_password_mismatch(self): |
|
169 | def test_register_password_mismatch(self): | |
175 | response = self.app.post(url(controller='login', action='register'), |
|
170 | response = self.app.post(url(controller='login', action='register'), | |
176 | {'username':'xs', |
|
171 | {'username':'xs', | |
@@ -180,8 +175,8 b' class TestLoginController(TestController' | |||||
180 | 'name':'test', |
|
175 | 'name':'test', | |
181 | 'lastname':'test'}) |
|
176 | 'lastname':'test'}) | |
182 |
|
177 | |||
183 |
self.assertEqual(response.status |
|
178 | self.assertEqual(response.status, '200 OK') | |
184 |
|
|
179 | response.mustcontain('Passwords do not match') | |
185 |
|
180 | |||
186 | def test_register_ok(self): |
|
181 | def test_register_ok(self): | |
187 | username = 'test_regular4' |
|
182 | username = 'test_regular4' | |
@@ -196,28 +191,32 b' class TestLoginController(TestController' | |||||
196 | 'password_confirmation':password, |
|
191 | 'password_confirmation':password, | |
197 | 'email':email, |
|
192 | 'email':email, | |
198 | 'name':name, |
|
193 | 'name':name, | |
199 |
'lastname':lastname |
|
194 | 'lastname':lastname, | |
200 | self.assertEqual(response.status , '302 Found') |
|
195 | 'admin':True}) # This should be overriden | |
201 | assert 'You have successfully registered into rhodecode' in response.session['flash'][0], 'No flash message about user registration' |
|
196 | self.assertEqual(response.status, '302 Found') | |
|
197 | self.checkSessionFlash(response, 'You have successfully registered into rhodecode') | |||
202 |
|
198 | |||
203 | ret = self.Session.query(User).filter(User.username == 'test_regular4').one() |
|
199 | ret = self.Session.query(User).filter(User.username == 'test_regular4').one() | |
204 | assert ret.username == username , 'field mismatch %s %s' % (ret.username, username) |
|
200 | self.assertEqual(ret.username, username) | |
205 |
assert |
|
201 | self.assertEqual(check_password(password, ret.password), True) | |
206 | assert ret.email == email , 'field mismatch %s %s' % (ret.email, email) |
|
202 | self.assertEqual(ret.email, email) | |
207 | assert ret.name == name , 'field mismatch %s %s' % (ret.name, name) |
|
203 | self.assertEqual(ret.name, name) | |
208 | assert ret.lastname == lastname , 'field mismatch %s %s' % (ret.lastname, lastname) |
|
204 | self.assertEqual(ret.lastname, lastname) | |
209 |
|
205 | self.assertNotEqual(ret.api_key, None) | ||
|
206 | self.assertEqual(ret.admin, False) | |||
210 |
|
207 | |||
211 | def test_forgot_password_wrong_mail(self): |
|
208 | def test_forgot_password_wrong_mail(self): | |
212 | response = self.app.post(url(controller='login', action='password_reset'), |
|
209 | response = self.app.post( | |
213 | {'email':'marcin@wrongmail.org', }) |
|
210 | url(controller='login', action='password_reset'), | |
|
211 | {'email': 'marcin@wrongmail.org',} | |||
|
212 | ) | |||
214 |
|
213 | |||
215 | assert "This e-mail address doesn't exist" in response.body, 'Missing error message about wrong email' |
|
214 | response.mustcontain("This e-mail address doesn't exist") | |
216 |
|
215 | |||
217 | def test_forgot_password(self): |
|
216 | def test_forgot_password(self): | |
218 | response = self.app.get(url(controller='login', |
|
217 | response = self.app.get(url(controller='login', | |
219 | action='password_reset')) |
|
218 | action='password_reset')) | |
220 |
self.assertEqual(response.status |
|
219 | self.assertEqual(response.status, '200 OK') | |
221 |
|
220 | |||
222 | username = 'test_password_reset_1' |
|
221 | username = 'test_password_reset_1' | |
223 | password = 'qweqwe' |
|
222 | password = 'qweqwe' |
@@ -5,7 +5,8 b' from rhodecode.tests import *' | |||||
5 | from rhodecode.model.repos_group import ReposGroupModel |
|
5 | from rhodecode.model.repos_group import ReposGroupModel | |
6 | from rhodecode.model.repo import RepoModel |
|
6 | from rhodecode.model.repo import RepoModel | |
7 | from rhodecode.model.db import RepoGroup, User, Notification, UserNotification, \ |
|
7 | from rhodecode.model.db import RepoGroup, User, Notification, UserNotification, \ | |
8 | UsersGroup, UsersGroupMember, Permission, UsersGroupRepoGroupToPerm |
|
8 | UsersGroup, UsersGroupMember, Permission, UsersGroupRepoGroupToPerm,\ | |
|
9 | Repository | |||
9 | from sqlalchemy.exc import IntegrityError |
|
10 | from sqlalchemy.exc import IntegrityError | |
10 | from rhodecode.model.user import UserModel |
|
11 | from rhodecode.model.user import UserModel | |
11 |
|
12 | |||
@@ -153,24 +154,23 b' class TestReposGroups(unittest.TestCase)' | |||||
153 | self.assertTrue(self.__check_path('g2', 'g1')) |
|
154 | self.assertTrue(self.__check_path('g2', 'g1')) | |
154 |
|
155 | |||
155 | # test repo |
|
156 | # test repo | |
156 |
self.assertEqual(r.repo_name, |
|
157 | self.assertEqual(r.repo_name, RepoGroup.url_sep().join(['g2', 'g1', r.just_name])) | |
157 |
|
||||
158 |
|
158 | |||
159 | def test_move_to_root(self): |
|
159 | def test_move_to_root(self): | |
160 | g1 = _make_group('t11') |
|
160 | g1 = _make_group('t11') | |
161 | Session.commit() |
|
161 | Session.commit() | |
162 | g2 = _make_group('t22',parent_id=g1.group_id) |
|
162 | g2 = _make_group('t22', parent_id=g1.group_id) | |
163 | Session.commit() |
|
163 | Session.commit() | |
164 |
|
164 | |||
165 | self.assertEqual(g2.full_path,'t11/t22') |
|
165 | self.assertEqual(g2.full_path, 't11/t22') | |
166 | self.assertTrue(self.__check_path('t11', 't22')) |
|
166 | self.assertTrue(self.__check_path('t11', 't22')) | |
167 |
|
167 | |||
168 | g2 = self.__update_group(g2.group_id, 'g22', parent_id=None) |
|
168 | g2 = self.__update_group(g2.group_id, 'g22', parent_id=None) | |
169 | Session.commit() |
|
169 | Session.commit() | |
170 |
|
170 | |||
171 | self.assertEqual(g2.group_name,'g22') |
|
171 | self.assertEqual(g2.group_name, 'g22') | |
172 | # we moved out group from t1 to '' so it's full path should be 'g2' |
|
172 | # we moved out group from t1 to '' so it's full path should be 'g2' | |
173 | self.assertEqual(g2.full_path,'g22') |
|
173 | self.assertEqual(g2.full_path, 'g22') | |
174 | self.assertFalse(self.__check_path('t11', 't22')) |
|
174 | self.assertFalse(self.__check_path('t11', 't22')) | |
175 | self.assertTrue(self.__check_path('g22')) |
|
175 | self.assertTrue(self.__check_path('g22')) | |
176 |
|
176 | |||
@@ -620,7 +620,7 b' class TestPermissions(unittest.TestCase)' | |||||
620 | # add repo to group |
|
620 | # add repo to group | |
621 | form_data = { |
|
621 | form_data = { | |
622 | 'repo_name':HG_REPO, |
|
622 | 'repo_name':HG_REPO, | |
623 |
'repo_name_full': |
|
623 | 'repo_name_full':RepoGroup.url_sep().join([self.g1.group_name,HG_REPO]), | |
624 | 'repo_type':'hg', |
|
624 | 'repo_type':'hg', | |
625 | 'clone_uri':'', |
|
625 | 'clone_uri':'', | |
626 | 'repo_group':self.g1.group_id, |
|
626 | 'repo_group':self.g1.group_id, |
General Comments 0
You need to be logged in to leave comments.
Login now