1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-04-27 19:05:16 +00:00

Update locale

This commit is contained in:
zhengxie 2016-03-21 10:59:24 +08:00
parent 0d57b3f060
commit af6d22503c
9 changed files with 3213 additions and 3693 deletions

View File

@ -5,17 +5,17 @@ from fabric.api import local, task
from fabric.colors import red, green
@task
def make(default=True):
def make(default=True, lang='en'):
"""Update source language.
"""
local('django-admin.py makemessages -l en -e py,html -i "thirdpart*" -i "docs*"')
local('django-admin.py makemessages -l %s -e py,html -i "thirdpart*" -i "docs*"' % lang)
# some version of makemessages will produce "%%" in the string, replace that
# to "%".
_inplace_change('locale/en/LC_MESSAGES/django.po', '%%s', '%s')
_inplace_change('locale/en/LC_MESSAGES/django.po', '%%(', '%(')
_inplace_change('locale/%s/LC_MESSAGES/django.po' % lang, '%%s', '%s')
_inplace_change('locale/%s/LC_MESSAGES/django.po' % lang, '%%(', '%(')
local('django-admin.py makemessages -l en -d djangojs -i "thirdpart" -i "node_modules" -i "media" -i "static/scripts/dist" -i "static/scripts/lib" -i "tests" -i "tools" -i "tagging" -i "static/scripts/i18n" --verbosity 2')
local('django-admin.py makemessages -l %s -d djangojs -i "thirdpart" -i "node_modules" -i "media" -i "static/scripts/dist" -i "static/scripts/lib" -i "tests" -i "tools" -i "tagging" -i "static/scripts/i18n" --verbosity 2' % lang)
@task
def push():

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-01-21 11:36+0800\n"
"POT-Creation-Date: 2016-03-21 11:17+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -17,67 +17,48 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: static/scripts/common.js:161 static/scripts/common.js.c:251
#: static/scripts/app/views/details.js:94 static/scripts/app/views/dir.js:852
#: static/scripts/app/views/dir.js.c:909
#: static/scripts/app/views/dirent.js:281
#: static/scripts/app/views/dirent.js:432
#: static/scripts/app/views/dirent.js:458
#: static/scripts/app/views/folder-perm-item.js:82
#: static/scripts/app/views/folder-perm-item.js:124
#: static/scripts/app/views/folder-perm.js:156
#: static/scripts/app/views/folder-perm.js:208
#: static/scripts/app/views/folder-share-item.js:79
#: static/scripts/app/views/folder-share-item.js:115
#: static/scripts/app/views/group-repo.js:64
#: static/scripts/app/views/myhome-sub-repos.js:123
#: static/scripts/app/views/myhome-sub-repos.js:165
#: static/scripts/app/views/repo.js:83 static/scripts/app/views/share.js:352
#: static/scripts/app/views/share.js:620 static/scripts/app/views/share.js:679
#: static/scripts/app/views/sub-lib.js:81
msgid "Failed. Please check the network."
#: static/scripts/app/models/dirent.js:113
#: static/scripts/app/views/device.js:51 static/scripts/app/views/dir.js:476
#: static/scripts/app/views/dir.js:543
#: static/scripts/app/views/fileupload.js:344
#: static/scripts/app/views/fileupload.js:358
#: static/scripts/app/views/fileupload.js:370
#: static/scripts/app/views/fileupload.js:382
msgid "Just now"
msgstr ""
#: static/scripts/common.js:519
msgid "Search users or enter emails"
msgstr ""
#: static/scripts/common.js:529
msgid "Please enter 1 or more character"
msgstr ""
#: static/scripts/common.js:530
msgid "No matches"
msgstr ""
#: static/scripts/common.js:531
msgid "Searching..."
msgstr ""
#: static/scripts/common.js:532
msgid "Loading failed"
msgstr ""
#: static/scripts/app/models/repo.js:30
#: static/scripts/app/models/repo.js:32
msgid "Name is required"
msgstr ""
#: static/scripts/app/models/repo.js:33 static/scripts/app/views/share.js:203
#: static/scripts/app/models/repo.js:35 static/scripts/app/views/share.js:197
msgid "Please enter password"
msgstr ""
#: static/scripts/app/models/repo.js:34 static/scripts/app/views/share.js:211
#: static/scripts/app/models/repo.js:36 static/scripts/app/views/share.js:205
msgid "Please enter the password again"
msgstr ""
#: static/scripts/app/models/repo.js:36 static/scripts/app/views/share.js:207
#: static/scripts/app/models/repo.js:38 static/scripts/app/views/share.js:201
msgid "Password is too short"
msgstr ""
#: static/scripts/app/models/repo.js:38 static/scripts/app/views/share.js:215
#: static/scripts/app/models/repo.js:40 static/scripts/app/views/share.js:209
msgid "Passwords don't match"
msgstr ""
#: static/scripts/app/models/repo.js:53
msgid "Encrypted"
msgstr ""
#: static/scripts/app/models/repo.js:55
msgid "Read-Write"
msgstr ""
#: static/scripts/app/models/repo.js:57
msgid "Read-Only"
msgstr ""
#: static/scripts/app/views/details.js:47
msgid "New files"
msgstr ""
@ -102,215 +83,344 @@ msgstr ""
msgid "Deleted directories"
msgstr ""
#: static/scripts/app/views/dir.js:46
#: static/scripts/app/views/details.js:94
#: static/scripts/app/views/dialogs/dirent-mvcp.js:130
#: static/scripts/app/views/dialogs/dirent-mvcp.js:156
#: static/scripts/app/views/dialogs/dirent-rename.js:66
#: static/scripts/app/views/dialogs/repo-change-password.js:95
#: static/scripts/app/views/dialogs/repo-history-settings.js:81
#: static/scripts/app/views/dialogs/repo-history-settings.js:140
#: static/scripts/app/views/dir.js:1048 static/scripts/app/views/dir.js:1105
#: static/scripts/app/views/dirent.js:259
#: static/scripts/app/views/folder-perm-item.js:82
#: static/scripts/app/views/folder-perm-item.js:124
#: static/scripts/app/views/folder-perm.js:155
#: static/scripts/app/views/folder-perm.js:207
#: static/scripts/app/views/folder-share-item.js:79
#: static/scripts/app/views/folder-share-item.js:115
#: static/scripts/app/views/group-manage-member.js:79
#: static/scripts/app/views/group-manage-member.js:105
#: static/scripts/app/views/group-manage-members.js:180
#: static/scripts/app/views/group-repo.js:72
#: static/scripts/app/views/group-settings.js:158
#: static/scripts/app/views/group-settings.js:214
#: static/scripts/app/views/group-settings.js:254
#: static/scripts/app/views/group-settings.js:311
#: static/scripts/app/views/group-settings.js:351
#: static/scripts/app/views/group-settings.js:386
#: static/scripts/app/views/repo.js:109 static/scripts/app/views/repo.js:205
#: static/scripts/app/views/repo.js:280 static/scripts/app/views/share.js:346
#: static/scripts/app/views/share.js:624 static/scripts/app/views/share.js:702
#: static/scripts/common.js:302 static/scripts/common.js:391
msgid "Failed. Please check the network."
msgstr ""
#: static/scripts/app/views/device.js:96
msgid "Successfully unlink %(name)s."
msgstr ""
#: static/scripts/app/views/dialogs/dirent-mvcp.js:50
msgid "Move {placeholder} to:"
msgstr ""
#: static/scripts/app/views/dialogs/dirent-mvcp.js:50
msgid "Copy {placeholder} to:"
msgstr ""
#: static/scripts/app/views/dialogs/dirent-mvcp.js:89
msgid "Moving %(name)s"
msgstr ""
#: static/scripts/app/views/dialogs/dirent-mvcp.js:89
msgid "Copying %(name)s"
msgstr ""
#: static/scripts/app/views/dialogs/dirent-mvcp.js:105
msgid "Saving..."
msgstr ""
#: static/scripts/app/views/dialogs/dirent-mvcp.js:119
msgid "Failed."
msgstr ""
#: static/scripts/app/views/dialogs/dirent-mvcp.js:119
#: static/scripts/app/views/dialogs/dirent-mvcp.js:147
#: static/scripts/app/views/dir.js:1096
msgid "Canceled."
msgstr ""
#: static/scripts/app/views/dialogs/dirent-mvcp.js:179
#: static/scripts/app/views/dir.js:894
msgid "Invalid destination path"
msgstr ""
#: static/scripts/app/views/dialogs/dirent-mvcp.js:199
msgid "Successfully moved %(name)s"
msgstr ""
#: static/scripts/app/views/dialogs/dirent-mvcp.js:202
msgid "Successfully copied %(name)s"
msgstr ""
#: static/scripts/app/views/dialogs/dirent-rename.js:27
msgid "Rename Folder"
msgstr ""
#: static/scripts/app/views/dialogs/dirent-rename.js:27
msgid "Rename File"
msgstr ""
#: static/scripts/app/views/dialogs/repo-change-password.js:26
msgid "Change Password of Library {placeholder}"
msgstr ""
#: static/scripts/app/views/dialogs/repo-change-password.js:50
msgid "Please enter the old password"
msgstr ""
#: static/scripts/app/views/dialogs/repo-change-password.js:54
msgid "Please enter a new password"
msgstr ""
#: static/scripts/app/views/dialogs/repo-change-password.js:58
msgid "New password is too short"
msgstr ""
#: static/scripts/app/views/dialogs/repo-change-password.js:62
msgid "Please enter the new password again"
msgstr ""
#: static/scripts/app/views/dialogs/repo-change-password.js:66
msgid "New passwords don't match"
msgstr ""
#: static/scripts/app/views/dialogs/repo-change-password.js:88
msgid "Successfully changed library password."
msgstr ""
#: static/scripts/app/views/dialogs/repo-folder-perm-admin.js:73
msgid "{placeholder} Folder Permission"
msgstr ""
#: static/scripts/app/views/dialogs/repo-folder-perm-admin.js:92
#: static/scripts/app/views/group-settings.js:179
#: static/scripts/app/views/repo.js:244
msgid "Search user or enter email and press Enter"
msgstr ""
#: static/scripts/app/views/dialogs/repo-folder-perm-admin.js:94
#: static/scripts/app/views/dialogs/repo-folder-perm-admin.js:105
msgid "You can only select 1 item"
msgstr ""
#: static/scripts/app/views/dialogs/repo-folder-perm-admin.js:103
msgid "Select a group"
msgstr ""
#: static/scripts/app/views/dialogs/repo-folder-perm-admin.js:121
#: static/scripts/app/views/dialogs/repo-share-link-admin.js:76
#: static/scripts/app/views/group-manage-members.js:112
#: static/scripts/app/views/group-members.js:77
#: static/scripts/app/views/group.js:133 static/scripts/app/views/groups.js:71
#: static/scripts/app/views/myhome-repos.js:111
#: static/scripts/app/views/myhome-shared-repos.js:72
#: static/scripts/app/views/organization.js:115
msgid "Permission error"
msgstr ""
#: static/scripts/app/views/dialogs/repo-folder-perm-admin.js:126
#: static/scripts/app/views/dialogs/repo-folder-perm-admin.js:245
#: static/scripts/app/views/dialogs/repo-folder-perm-admin.js:292
#: static/scripts/app/views/dialogs/repo-share-link-admin.js:81
#: static/scripts/app/views/dir.js:361
#: static/scripts/app/views/group-manage-members.js:117
#: static/scripts/app/views/group-manage-members.js:146
#: static/scripts/app/views/group-members.js:82
#: static/scripts/app/views/group.js:103 static/scripts/app/views/group.js:138
#: static/scripts/app/views/groups.js:76
#: static/scripts/app/views/groups.js:120
#: static/scripts/app/views/myhome-repos.js:116
#: static/scripts/app/views/myhome-shared-repos.js:77
#: static/scripts/app/views/organization.js:120
#: static/scripts/app/views/repo-folder-perm.js:92
#: static/scripts/app/views/repo-folder-perm.js:132
#: static/scripts/app/views/repo-shared-link.js:84
msgid "Please check the network."
msgstr ""
#: static/scripts/app/views/dialogs/repo-folder-perm-admin.js:186
msgid "Please click and choose a directory."
msgstr ""
#: static/scripts/app/views/dialogs/repo-history-settings.js:35
msgid "{placeholder} History Setting"
msgstr ""
#: static/scripts/app/views/dialogs/repo-history-settings.js:133
msgid "Successfully set library history."
msgstr ""
#: static/scripts/app/views/dialogs/repo-share-link-admin.js:50
msgid "{placeholder} Share Links"
msgstr ""
#: static/scripts/app/views/dir.js:71
#: static/scripts/app/views/starred-file.js:29
msgid "Close (Esc)"
msgstr ""
#: static/scripts/app/views/dir.js:47
#: static/scripts/app/views/dir.js:72
#: static/scripts/app/views/starred-file.js:30
msgid "Loading..."
msgstr ""
#: static/scripts/app/views/dir.js:50
#: static/scripts/app/views/dir.js:75
#: static/scripts/app/views/starred-file.js:33
msgid "Previous (Left arrow key)"
msgstr ""
#: static/scripts/app/views/dir.js:51
#: static/scripts/app/views/dir.js:76
#: static/scripts/app/views/starred-file.js:34
msgid "Next (Right arrow key)"
msgstr ""
#: static/scripts/app/views/dir.js:52
#: static/scripts/app/views/dir.js:77
#: static/scripts/app/views/starred-file.js:35
msgid "%curr% of %total%"
msgstr ""
#: static/scripts/app/views/dir.js:58
#: static/scripts/app/views/starred-file.js:41
msgid "Open in New Tab"
msgstr ""
#: static/scripts/app/views/dir.js:61
#: static/scripts/app/views/dir.js:80
#: static/scripts/app/views/starred-file.js:44
msgid "<a href=\"%url%\" target=\"_blank\">The image</a> could not be loaded."
msgstr ""
#: static/scripts/app/views/dir.js:148
#: static/scripts/app/views/group-side-nav.js:39
#: static/scripts/app/views/group.js:112 static/scripts/app/views/groups.js:77
#: static/scripts/app/views/groups.js:122
#: static/scripts/app/views/myhome-repos.js:93
#: static/scripts/app/views/myhome-shared-repos.js:79
#: static/scripts/app/views/myhome-sub-repos.js:78
#: static/scripts/app/views/organization.js:124
msgid "Please check the network."
#: static/scripts/app/views/dir.js:90 static/scripts/app/views/dir.js:102
#: static/scripts/app/views/starred-file.js:41
msgid "Open in New Tab"
msgstr ""
#: static/scripts/app/views/dir.js:174
#: static/scripts/app/views/dir.js:296
msgid "Password is required."
msgstr ""
#: static/scripts/app/views/dir.js:345 static/scripts/app/views/dir.js.c:402
#: static/scripts/app/views/dir.js:461 static/scripts/app/views/dir.js:518
msgid "It is required."
msgstr ""
#: static/scripts/app/views/dir.js:360 static/scripts/app/views/dir.js.c:427
#: static/scripts/app/views/dirent.js:266
#: static/scripts/app/views/fileupload.js:344
#: static/scripts/app/views/fileupload.js:358
#: static/scripts/app/views/fileupload.js:370
#: static/scripts/app/views/fileupload.js:382
#: static/scripts/app/views/myhome-sub-repos.js:152
msgid "Just now"
msgstr ""
#: static/scripts/app/views/dir.js:408
#: static/scripts/app/views/dir.js:524
msgid "Only an extension there, please input a name."
msgstr ""
#: static/scripts/app/views/dir.js:566 static/scripts/app/views/dir.js.c:703
#: static/scripts/app/views/dir.js:760 static/scripts/app/views/dir.js:899
msgid "Processing..."
msgstr ""
#: static/scripts/app/views/dir.js:602
#: static/scripts/app/views/dir.js:796
msgid "Successfully deleted %(name)s."
msgstr ""
#: static/scripts/app/views/dir.js:604
#: static/scripts/app/views/dir.js:798
msgid "Successfully deleted %(name)s and 1 other item."
msgstr ""
#: static/scripts/app/views/dir.js:606
#: static/scripts/app/views/dir.js:800
msgid "Successfully deleted %(name)s and %(amount)s other items."
msgstr ""
#: static/scripts/app/views/dir.js:613
#: static/scripts/app/views/dir.js:807
msgid "Failed to delete %(name)s."
msgstr ""
#: static/scripts/app/views/dir.js:615
#: static/scripts/app/views/dir.js:809
msgid "Failed to delete %(name)s and 1 other item."
msgstr ""
#: static/scripts/app/views/dir.js:617
#: static/scripts/app/views/dir.js:811
msgid "Failed to delete %(name)s and %(amount)s other items."
msgstr ""
#: static/scripts/app/views/dir.js:630
#: static/scripts/app/views/dir.js:824
msgid "Delete Items"
msgstr ""
#: static/scripts/app/views/dir.js:631
#: static/scripts/app/views/dir.js:825
msgid "Are you sure you want to delete these selected items?"
msgstr ""
#: static/scripts/app/views/dir.js:645
#: static/scripts/app/views/dir.js:839
msgid "Move selected item(s) to:"
msgstr ""
#: static/scripts/app/views/dir.js:645
#: static/scripts/app/views/dir.js:839
msgid "Copy selected item(s) to:"
msgstr ""
#: static/scripts/app/views/dir.js:698 static/scripts/app/views/dirent.js:357
msgid "Invalid destination path"
msgstr ""
#: static/scripts/app/views/dir.js:746
#: static/scripts/app/views/dir.js:942
msgid "Successfully moved %(name)s."
msgstr ""
#: static/scripts/app/views/dir.js:748
#: static/scripts/app/views/dir.js:944
msgid "Successfully moved %(name)s and 1 other item."
msgstr ""
#: static/scripts/app/views/dir.js:750
#: static/scripts/app/views/dir.js:946
msgid "Successfully moved %(name)s and %(amount)s other items."
msgstr ""
#: static/scripts/app/views/dir.js:754
#: static/scripts/app/views/dir.js:950
msgid "Successfully copied %(name)s."
msgstr ""
#: static/scripts/app/views/dir.js:756
#: static/scripts/app/views/dir.js:952
msgid "Successfully copied %(name)s and 1 other item."
msgstr ""
#: static/scripts/app/views/dir.js:758
#: static/scripts/app/views/dir.js:954
msgid "Successfully copied %(name)s and %(amount)s other items."
msgstr ""
#: static/scripts/app/views/dir.js:770
#: static/scripts/app/views/dir.js:966
msgid "Internal error. Failed to move %(name)s and %(amount)s other item(s)."
msgstr ""
#: static/scripts/app/views/dir.js:772
#: static/scripts/app/views/dir.js:968
msgid "Internal error. Failed to move %(name)s."
msgstr ""
#: static/scripts/app/views/dir.js:776
#: static/scripts/app/views/dir.js:972
msgid "Internal error. Failed to copy %(name)s and %(amount)s other item(s)."
msgstr ""
#: static/scripts/app/views/dir.js:778
#: static/scripts/app/views/dir.js:974
msgid "Internal error. Failed to copy %(name)s."
msgstr ""
#: static/scripts/app/views/dir.js:818
#: static/scripts/app/views/dir.js:1014
msgid "Moving file %(index)s of %(total)s"
msgstr ""
#: static/scripts/app/views/dir.js:818
#: static/scripts/app/views/dir.js:1014
msgid "Copying file %(index)s of %(total)s"
msgstr ""
#: static/scripts/app/views/dir.js:840
#: static/scripts/app/views/dir.js:1036
msgid "Failed to move %(name)s"
msgstr ""
#: static/scripts/app/views/dir.js:840
#: static/scripts/app/views/dir.js:1036
msgid "Failed to copy %(name)s"
msgstr ""
#: static/scripts/app/views/dir.js:900 static/scripts/app/views/dirent.js:421
#: static/scripts/app/views/dirent.js:449
msgid "Canceled."
msgstr ""
#: static/scripts/app/views/dirent.js:49
#: static/scripts/app/views/dirent-grid.js:60
#: static/scripts/app/views/dirent.js:53
msgid "locked by {placeholder}"
msgstr ""
#: static/scripts/app/views/dirent.js:200
#: static/scripts/app/views/dirent-grid.js:154
#: static/scripts/app/views/dirent.js:198
msgid "Successfully deleted %(name)s"
msgstr ""
#: static/scripts/app/views/dirent.js:310
msgid "Move {placeholder} to:"
msgstr ""
#: static/scripts/app/views/dirent.js:310
msgid "Copy {placeholder} to:"
msgstr ""
#: static/scripts/app/views/dirent.js:391
msgid "Moving %(name)s"
msgstr ""
#: static/scripts/app/views/dirent.js:391
msgid "Copying %(name)s"
msgstr ""
#: static/scripts/app/views/dirent.js:407
msgid "Saving..."
msgstr ""
#: static/scripts/app/views/dirent.js:421
msgid "Failed."
msgstr ""
#: static/scripts/app/views/fileupload.js:10
msgid "File is too big"
msgstr ""
@ -336,11 +446,13 @@ msgid "Empty file upload result"
msgstr ""
#: static/scripts/app/views/fileupload.js:17
#: static/scripts/app/views/group.js:109 static/scripts/app/views/groups.js:74
#: static/scripts/app/views/myhome-repos.js:90
#: static/scripts/app/views/myhome-shared-repos.js:76
#: static/scripts/app/views/myhome-sub-repos.js:75
#: static/scripts/app/views/organization.js:121
#: static/scripts/app/views/group-manage-members.js:114
#: static/scripts/app/views/group-manage-members.js:178
#: static/scripts/app/views/group-members.js:79
#: static/scripts/app/views/group.js:135 static/scripts/app/views/groups.js:73
#: static/scripts/app/views/myhome-repos.js:113
#: static/scripts/app/views/myhome-shared-repos.js:74
#: static/scripts/app/views/organization.js:117
msgid "Error"
msgstr ""
@ -396,12 +508,12 @@ msgstr ""
msgid "File is locked"
msgstr ""
#: static/scripts/app/views/folder-perm.js:49
#: static/scripts/app/views/folder-perm.js:48
msgid "Set {placeholder}'s permission"
msgstr ""
#: static/scripts/app/views/folder-perm.js:101
#: static/scripts/app/views/share.js:525
#: static/scripts/app/views/folder-perm.js:100
#: static/scripts/app/views/share.js:519
msgid "Select groups"
msgstr ""
@ -413,75 +525,96 @@ msgstr ""
msgid "Delete failed"
msgstr ""
#: static/scripts/app/views/group-repo.js:56
#: static/scripts/app/views/organization-repo.js:52
#: static/scripts/app/views/group-manage-members.js:71
msgid "{placeholder} Members"
msgstr ""
#: static/scripts/app/views/group-repo.js:64
#: static/scripts/app/views/organization-repo.js:59
msgid "Successfully unshared {placeholder}"
msgstr ""
#: static/scripts/app/views/group.js:107 static/scripts/app/views/groups.js:72
#: static/scripts/app/views/myhome-repos.js:88
#: static/scripts/app/views/myhome-shared-repos.js:74
#: static/scripts/app/views/myhome-sub-repos.js:73
#: static/scripts/app/views/organization.js:119
msgid "Permission error"
#: static/scripts/app/views/group-settings.js:180
#: static/scripts/app/views/repo.js:245
msgid "You cannot select any more choices"
msgstr ""
#: static/scripts/app/views/myhome-sub-repos.js:115
msgid "You don't have any library at present."
#: static/scripts/app/views/group-settings.js:272
msgid "Please choose a CSV file"
msgstr ""
#: static/scripts/app/views/myhome-sub-repos.js:134
msgid "Please choose a directory"
#: static/scripts/app/views/group-settings.js:303
msgid "Successfully imported."
msgstr ""
#: static/scripts/app/views/repo.js:48 static/scripts/app/views/sub-lib.js:46
#: static/scripts/app/views/group-settings.js:331
msgid "Dismiss Group"
msgstr ""
#: static/scripts/app/views/group-settings.js:332
msgid "Really want to dismiss this group?"
msgstr ""
#: static/scripts/app/views/group-settings.js:365
msgid "Quit Group"
msgstr ""
#: static/scripts/app/views/group-settings.js:366
msgid "Are you sure you want to quit this group?"
msgstr ""
#: static/scripts/app/views/repo.js:74
msgid "Really want to delete {lib_name}?"
msgstr ""
#: static/scripts/app/views/repo.js:73 static/scripts/app/views/sub-lib.js:71
#: static/scripts/app/views/repo.js:99
msgid "Delete succeeded."
msgstr ""
#: static/scripts/app/views/share.js:63
#: static/scripts/app/views/repo.js:234
msgid "Transfer Library {library_name} To"
msgstr ""
#: static/scripts/app/views/repo.js:273
msgid "Successfully transferred the library."
msgstr ""
#: static/scripts/app/views/share.js:57
msgid "Share {placeholder}"
msgstr ""
#: static/scripts/app/views/share.js:132
#: static/scripts/app/views/share.js:126
msgid "Expired"
msgstr ""
#: static/scripts/app/views/share.js:160 static/scripts/app/views/share.js:176
#: static/scripts/app/views/share.js:154 static/scripts/app/views/share.js:170
msgid "Hide"
msgstr ""
#: static/scripts/app/views/share.js:173
#: static/scripts/app/views/share.js:167
msgid "Show"
msgstr ""
#: static/scripts/app/views/share.js:228
#: static/scripts/app/views/share.js:222
msgid "Please enter days."
msgstr ""
#: static/scripts/app/views/share.js:232
#: static/scripts/app/views/share.js:226
msgid "Please enter valid days"
msgstr ""
#: static/scripts/app/views/share.js:319
#: static/scripts/app/views/share.js:313
msgid "Please input at least an email."
msgstr ""
#: static/scripts/app/views/share.js:336
#: static/scripts/app/views/share.js:330
msgid "Successfully sent to {placeholder}"
msgstr ""
#: static/scripts/app/views/share.js:340
#: static/scripts/app/views/share.js:334
msgid "Failed to send to {placeholder}"
msgstr ""
#: static/scripts/app/views/share.js:609
msgid "Failed to share to {placeholder}"
msgstr ""
#: static/scripts/app/views/shared-repo.js:26
msgid "Success"
msgstr ""
@ -489,3 +622,23 @@ msgstr ""
#: static/scripts/app/views/starred-file-item.js:45
msgid "Successfully unstared {placeholder}"
msgstr ""
#: static/scripts/common.js:671
msgid "Search users or enter emails and press Enter"
msgstr ""
#: static/scripts/common.js:679
msgid "Please enter 1 or more character"
msgstr ""
#: static/scripts/common.js:680
msgid "No matches"
msgstr ""
#: static/scripts/common.js:681
msgid "Searching..."
msgstr ""
#: static/scripts/common.js:682
msgid "Loading failed"
msgstr ""

View File

@ -132,7 +132,7 @@ class UploadLinks(APIView):
password = request.data.get('password', None)
if password and len(password) < config.SHARE_LINK_PASSWORD_MIN_LENGTH:
error_msg = _('Password is too short.')
error_msg = _('Password is too short')
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
user_perm = check_folder_permission(request, repo_id, '/')

BIN
seahub/seahub2.db Normal file

Binary file not shown.

View File

@ -57,7 +57,7 @@ $('#add-inst-form').submit(function() {
name = $.trim(form.find('[name="name"]').val());
if (!name) {
apply_form_error(form_id, "{% trans "Name cannot be blank" %}");
apply_form_error(form_id, "{% trans "Name can not be blank" %}");
return false;
}

View File

@ -36,7 +36,7 @@
{{ user.ctime|tsstr_sec }} / {% if user.last_login %}{{user.last_login|translate_seahub_time}} {% else %} -- {% endif %}
</td>
<td>
<a href="#" class="js-toggle-admin op vh" data-url="{% url 'sys_inst_toggle_admin' inst.pk user.email %}" data-target="{{ user.email }}">{% if user.inst_admin %}{% trans "Revoke InstAdmin" %}{% else %}{% trans "Set InstAdmin" %}{% endif %}</a>
<a href="#" class="js-toggle-admin op vh" data-url="{% url 'sys_inst_toggle_admin' inst.pk user.email %}" data-target="{{ user.email }}">{% if user.inst_admin %}{% trans "Revoke Admin" %}{% else %}{% trans "Set Admin" %}{% endif %}</a>
</td>
</tr>
{% endfor %}
@ -52,8 +52,8 @@
<script type="text/javascript">
addConfirmTo($('.js-toggle-admin'), {
'title':"{% trans "Toggle Admin" %}",
'con':"{% trans "Sure ?" %}",
'title': "Toggle Admin",
'con': "Sure ?",
'post': true
});

View File

@ -15,8 +15,8 @@ addConfirmTo($('.revoke-admin-btn'), {
'post': true // post request
});
addConfirmTo($('.unset-trial'), {
'title':"{% trans "Remove Trial" %}",
'con':"{% trans "Are you sure you want to remove trial for %s ?" %}",
'title': "Remove Trial",
'con':"Are you sure you want to remove trial for %s ?",
'post': true // post request
});

View File

@ -0,0 +1,129 @@
"""
This file demonstrates writing tests using the unittest module. These will pass
when you run "manage.py test".
Replace this with more appropriate tests for your application.
"""
import factory
from mock import Mock, patch
from django.http import HttpRequest
from django.test import TestCase
from seahub.base.accounts import User
from seahub.wiki.models import PersonalWiki
from seahub.views.wiki import personal_wiki
def setup():
global repo_id, mock_content, mock_repo, mock_dirent, request
repo_id = '181150f2-3df0-4ab3-9ecd-1e1ec8e14def'
mock_content = 'fake content'
mock_repo = Mock()
mock_repo.id = repo_id
mock_dirent = Mock()
mock_dirent.obj_name = 'home.md'
request = FakeRequestFactory()
def render_to_response_echo(*args, **kwargs):
"""mocked render_to_response that just returns what was passed in,
also puts the template name into the results dict
"""
context = args[1]
context.update(dict(template_name=args[0]))
return context
patch('seahub.views.wiki.render_to_response',
render_to_response_echo).start()
class PersonalWikiTest(TestCase):
@patch('seahub.views.wiki.seafile_api.get_owned_repo_list')
def test_wiki_does_not_exist(self, mock_get_owned_repo_list):
res = personal_wiki(request)
self.assertFalse(res.get('wiki_exists'))
self.assertEqual('wiki/personal_wiki.html', res.get('template_name'))
@patch('seahub.wiki.utils.seaserv.get_repo')
@patch('seahub.wiki.utils.seaserv.get_commits')
@patch('seahub.views.wiki.seaserv.post_empty_file')
def test_wiki_page_missing(self, mock_post_empty_file,
mock_get_commits, mock_get_repo):
"""
"""
# setup personal wiki
PersonalWiki.objects.create(username=request.user.username,
repo_id=repo_id)
mock_get_repo.return_value = mock_repo
mock_get_commits.return_value = [None]
mock_post_empty_file.return_value = True
res = personal_wiki(request)
self.assertEqual('/home/wiki/home/', res['Location'])
@patch('seahub.views.wiki.get_personal_wiki_page')
@patch('seahub.base.models.FileContributors.objects.get_file_contributors')
def test_wiki_found(self, mock_get_file_contributors,
mock_get_personal_wiki_page):
mock_get_personal_wiki_page.return_value = (mock_content,
mock_repo,
mock_dirent)
mock_get_file_contributors.return_value = ([request.user.username],
None, None)
res = personal_wiki(request)
self.assertEqual('fake content', res.get('content'))
self.assertEqual('fake content', res.get('index_content'))
self.assertEqual('home', res.get('page'))
self.assertEqual('wiki/personal_wiki.html', res.get('template_name'))
########## Helpler functions and classes
def FakeRequestFactory(*args, **kwargs):
''' FakeRequestFactory, FakeMessages and FakeRequestContext are good for
mocking out django views; they are MUCH faster than the Django test client.
'''
user = UserFactory()
if kwargs.get('authenticated'):
user.is_authenticated = lambda: True
request = HttpRequest()
request.user = user
request.cloud_mode = False
request._messages = FakeMessages()
request.session = kwargs.get('session', {})
if kwargs.get('POST'):
request.method = 'POST'
request.POST = kwargs.get('POST')
else:
request.method = 'GET'
request.POST = kwargs.get('GET', {})
return request
class UserFactory(factory.Factory):
''' using the excellent factory_boy library '''
class Meta:
model = User
@classmethod
def _setup_next_sequence(cls):
# Instead of defaulting to starting with 0, start with 1.
return 1
email = factory.Sequence(lambda n: 'user%d@example.ecom' % n)
class FakeMessages:
''' mocks the Django message framework, makes it easier to get
the messages out '''
messages = []
def add(self, level, message, extra_tags):
self.messages.append(str(message))
@property
def pop(self):
return self.messages.pop()