mirror of
https://github.com/sismics/docs.git
synced 2024-12-22 11:23:48 +01:00
zh_CN translation + footer fix
This commit is contained in:
parent
cfe5690a73
commit
d2f9fcdda0
@ -345,7 +345,8 @@ angular.module('docs',
|
||||
prefix: 'locale/',
|
||||
suffix: '.json'
|
||||
})
|
||||
.registerAvailableLanguageKeys(['en', 'fr'], {
|
||||
.registerAvailableLanguageKeys(['en', 'fr', 'zh_CN', 'zh_HK', 'zh_TW'], {
|
||||
'zh_*': 'zh_CN',
|
||||
'en_*': 'en',
|
||||
'fr_*': 'fr',
|
||||
'*': 'en'
|
||||
@ -354,7 +355,7 @@ angular.module('docs',
|
||||
.fallbackLanguage('en');
|
||||
|
||||
// Configuring Timago
|
||||
timeAgoSettings.overrideLang = $translateProvider.proposedLanguage;
|
||||
timeAgoSettings.overrideLang = $translateProvider.preferredLanguage();
|
||||
timeAgoSettings.fullDateAfterSeconds = 60 * 60 * 24 * 30; // 30 days
|
||||
|
||||
// Configuring $http to act like jQuery.ajax
|
||||
|
26
docs-web/src/main/webapp/src/app/docs/controller/Footer.js
Normal file
26
docs-web/src/main/webapp/src/app/docs/controller/Footer.js
Normal file
@ -0,0 +1,26 @@
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* Footer controller.
|
||||
*/
|
||||
angular.module('docs').controller('Footer', function($scope, Restangular, $translate, timeAgoSettings) {
|
||||
// Load app data
|
||||
Restangular.one('app').get().then(function(data) {
|
||||
$scope.app = data;
|
||||
});
|
||||
|
||||
$scope.currentLang = $translate.use();
|
||||
|
||||
// Change the current language and save it to local storage
|
||||
$scope.changeLanguage = function(lang) {
|
||||
$translate.use(lang);
|
||||
timeAgoSettings.overrideLang = lang;
|
||||
localStorage.overrideLang = lang;
|
||||
$scope.currentLang = lang;
|
||||
};
|
||||
|
||||
// Set the current language if an override is saved in local storage
|
||||
if (!_.isUndefined(localStorage.overrideLang)) {
|
||||
$scope.changeLanguage(localStorage.overrideLang);
|
||||
}
|
||||
});
|
@ -3,7 +3,7 @@
|
||||
/**
|
||||
* Navigation controller.
|
||||
*/
|
||||
angular.module('docs').controller('Navigation', function($scope, $http, $state, $rootScope, User, Restangular) {
|
||||
angular.module('docs').controller('Navigation', function($scope, $state, $rootScope, User, Restangular) {
|
||||
User.userInfo().then(function(data) {
|
||||
$rootScope.userInfo = data;
|
||||
});
|
||||
|
@ -4,11 +4,6 @@
|
||||
* Document default controller.
|
||||
*/
|
||||
angular.module('docs').controller('DocumentDefault', function($scope, $rootScope, $state, Restangular, $upload, $translate) {
|
||||
// Load app data
|
||||
Restangular.one('app').get().then(function(data) {
|
||||
$scope.app = data;
|
||||
});
|
||||
|
||||
// Load user audit log
|
||||
Restangular.one('auditlog').get().then(function(data) {
|
||||
$scope.logs = data.logs;
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 1.3 KiB |
@ -44,6 +44,9 @@
|
||||
<script src="lib/angular.timeago.js" type="text/javascript"></script>
|
||||
<script src="app/docs/app.js" type="text/javascript"></script>
|
||||
<script src="app/docs/controller/Main.js" type="text/javascript"></script>
|
||||
<script src="app/docs/controller/Login.js" type="text/javascript"></script>
|
||||
<script src="app/docs/controller/Navigation.js" type="text/javascript"></script>
|
||||
<script src="app/docs/controller/Footer.js" type="text/javascript"></script>
|
||||
<script src="app/docs/controller/document/Document.js" type="text/javascript"></script>
|
||||
<script src="app/docs/controller/document/DocumentDefault.js" type="text/javascript"></script>
|
||||
<script src="app/docs/controller/document/DocumentEdit.js" type="text/javascript"></script>
|
||||
@ -55,10 +58,8 @@
|
||||
<script src="app/docs/controller/document/DocumentModalPdf.js" type="text/javascript"></script>
|
||||
<script src="app/docs/controller/document/FileView.js" type="text/javascript"></script>
|
||||
<script src="app/docs/controller/document/FileModalView.js" type="text/javascript"></script>
|
||||
<script src="app/docs/controller/Login.js" type="text/javascript"></script>
|
||||
<script src="app/docs/controller/tag/Tag.js" type="text/javascript"></script>
|
||||
<script src="app/docs/controller/tag/TagEdit.js" type="text/javascript"></script>
|
||||
<script src="app/docs/controller/Navigation.js" type="text/javascript"></script>
|
||||
<script src="app/docs/controller/settings/Settings.js" type="text/javascript"></script>
|
||||
<script src="app/docs/controller/settings/SettingsDefault.js" type="text/javascript"></script>
|
||||
<script src="app/docs/controller/settings/SettingsAccount.js" type="text/javascript"></script>
|
||||
@ -149,9 +150,28 @@
|
||||
<div ui-view="page">
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12 footer text-center">
|
||||
<img src="img/sismics.png" />
|
||||
<div class="row" ng-controller="Footer">
|
||||
<div class="col-md-12 footer text-center text-muted">
|
||||
<ul class="list-inline">
|
||||
<li dropdown class="dropdown">
|
||||
<a href dropdown-toggle>
|
||||
<span ng-switch="currentLang">
|
||||
<span ng-switch-when="en">English</span>
|
||||
<span ng-switch-when="fr">Français</span>
|
||||
<span ng-switch-when="zh_CN">简体中文</span>
|
||||
</span>
|
||||
<span class="caret"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href ng-click="changeLanguage('en')" ng-class="{ 'bg-info': currentLang == 'en' }">English</a></li>
|
||||
<li><a href ng-click="changeLanguage('fr')" ng-class="{ 'bg-info': currentLang == 'fr' }">Français</a></li>
|
||||
<li><a href ng-click="changeLanguage('zh_CN')" ng-class="{ 'bg-info': currentLang == 'zh_CN' }">简体中文</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li translate="document.default.footer_sismics"></li>
|
||||
<li><a href="apidoc/">{{ 'document.default.api_documentation' | translate }}</a></li>
|
||||
<li>v{{ app.current_version }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
@ -196,7 +196,7 @@ angular.module('yaru22.angular-timeago').config(["timeAgoSettings", function(tim
|
||||
'use strict';
|
||||
|
||||
angular.module('yaru22.angular-timeago').config(["timeAgoSettings", function(timeAgoSettings) {
|
||||
timeAgoSettings.strings['fr_FR'] = {
|
||||
timeAgoSettings.strings['fr'] = {
|
||||
prefixAgo: 'il y a',
|
||||
prefixFromNow: 'dans',
|
||||
suffixAgo: null,
|
||||
|
@ -96,7 +96,7 @@
|
||||
"document_added_with_errors": "Document successfully added but some files cannot be uploaded",
|
||||
"quota_reached": "Quota reached",
|
||||
"primary_metadata": "Primary metadata",
|
||||
"title_placeholder": "The nature or genre of the resource",
|
||||
"title_placeholder": "A name given to the resource",
|
||||
"description_placeholder": "An account of the resource",
|
||||
"new_files": "New files",
|
||||
"orphan_files": "+ {{ count }} file{{ count > 1 ? 's' : '' }}",
|
||||
@ -119,9 +119,7 @@
|
||||
"add_new_document": "Add to new document",
|
||||
"latest_activity": "Latest activity",
|
||||
"footer_sismics": "Crafted with <span class=\"glyphicon glyphicon-heart\"></span> by <a href=\"https://www.sismics.com\" target=\"_blank\">Sismics</a>",
|
||||
"api_documentation": "API Documentation",
|
||||
"version": "Version:",
|
||||
"memory": "Memory:"
|
||||
"api_documentation": "API Documentation"
|
||||
},
|
||||
"pdf": {
|
||||
"export_title": "Export to PDF",
|
||||
@ -233,7 +231,7 @@
|
||||
"message_2": "Those applications automatically generate a validation code that changes after a certain period of time.<br/>You will be required to enter this validation code each time you login on <strong>{{ appName }}</strong>.",
|
||||
"secret_key": "Your secret key is: <strong>{{ secret }}</strong>",
|
||||
"secret_key_warning": "Configure your TOTP app on your phone with this secret key now, you will not be able to access it later.",
|
||||
"totp_enabled_message": "Two-factor authentication is enabled on your account.<br/>Each time you login on <strong>{{ appName }}</strong>, you will be asked a validation code from your configured phone app.<br/>If you loose your phone, you will not be able to login into your account but active sessions will allow you to regenerate a secrey key.",
|
||||
"totp_enabled_message": "Two-factor authentication is enabled on your account.<br/>Each time you login on <strong>{{ appName }}</strong>, you will be asked a validation code from your configured phone app.<br/>If you lose your phone, you will not be able to login into your account but active sessions will allow you to regenerate a secrey key.",
|
||||
"disable_totp": {
|
||||
"disable_totp": "Disable two-factor authentication",
|
||||
"message": "Your account will not be protected by the two-factor authentication anymore.",
|
||||
@ -259,6 +257,7 @@
|
||||
}
|
||||
},
|
||||
"account": {
|
||||
"title": "User <small>account</small>",
|
||||
"password": "Password",
|
||||
"password_confirm": "Password (confirm)",
|
||||
"updated": "Account successfully updated"
|
||||
@ -353,6 +352,12 @@
|
||||
"number": "Number required",
|
||||
"no_space": "Spaces are not allowed"
|
||||
},
|
||||
"pagination": {
|
||||
"previous": "Previous",
|
||||
"next": "Next",
|
||||
"first": "First",
|
||||
"last": "Last"
|
||||
},
|
||||
"ok": "OK",
|
||||
"cancel": "Cancel",
|
||||
"share": "Share",
|
||||
|
@ -96,16 +96,16 @@
|
||||
"document_added_with_errors": "Document ajouté avec succès, mais certains fichiers n'ont pu être envoyés",
|
||||
"quota_reached": "Quota atteint",
|
||||
"primary_metadata": "Métadonnées principales",
|
||||
"title_placeholder": "La nature ou le genre de la ressource",
|
||||
"description_placeholder": "Un résumé de la ressource",
|
||||
"title_placeholder": "Titre principal du document",
|
||||
"description_placeholder": "Résumé, table des matières, ou texte libre",
|
||||
"new_files": "Nouveaux fichiers",
|
||||
"orphan_files": "+ {{ count }} fichier{{ count > 1 ? 's' : '' }}",
|
||||
"additional_metadata": "Métadonnées secondaires",
|
||||
"subject_placeholder": "Le sujet de la ressource",
|
||||
"identifier_placeholder": "Une référence unique de la ressource dans un contexte donné",
|
||||
"publisher_placeholder": "Une entité responsable de la mise à disposition de la ressource",
|
||||
"format_placeholder": "Le format physique ou numérique de la ressource",
|
||||
"source_placeholder": "Une ressource liée à cette ressource",
|
||||
"subject_placeholder": "Mots-clefs, phrases de résumé, ou codes de classement",
|
||||
"identifier_placeholder": "Identificateur non ambigu",
|
||||
"publisher_placeholder": "Nom de la personne, de l'organisation ou du service à l'origine de la publication du document",
|
||||
"format_placeholder": "Type MIME, ou format physique du document",
|
||||
"source_placeholder": "Ressource dont dérive le document",
|
||||
"uploading_files": "Envoi des fichiers..."
|
||||
},
|
||||
"default": {
|
||||
@ -119,9 +119,7 @@
|
||||
"add_new_document": "Ajouter à un nouveau document",
|
||||
"latest_activity": "Activité récente",
|
||||
"footer_sismics": "Conçu avec <span class=\"glyphicon glyphicon-heart\"></span> par <a href=\"https://www.sismics.com\" target=\"_blank\">Sismics</a>",
|
||||
"api_documentation": "Documentation API",
|
||||
"version": "Version :",
|
||||
"memory": "Mémoire :"
|
||||
"api_documentation": "Documentation API"
|
||||
},
|
||||
"pdf": {
|
||||
"export_title": "Exporter en PDF",
|
||||
@ -259,6 +257,7 @@
|
||||
}
|
||||
},
|
||||
"account": {
|
||||
"title": "<small>Compte</small> utilisateur",
|
||||
"password": "Mot de passe",
|
||||
"password_confirm": "Mot de passe (confirmation)",
|
||||
"updated": "Compte mis à jour avec succès"
|
||||
@ -353,6 +352,12 @@
|
||||
"number": "Nombre requis",
|
||||
"no_space": "Les espaces ne sont pas autorisés"
|
||||
},
|
||||
"pagination": {
|
||||
"previous": "Précédent",
|
||||
"next": "Suivant",
|
||||
"first": "Première",
|
||||
"last": "Dernière"
|
||||
},
|
||||
"ok": "OK",
|
||||
"cancel": "Annuler",
|
||||
"share": "Partager",
|
||||
|
377
docs-web/src/main/webapp/src/locale/zh_CN.json
Normal file
377
docs-web/src/main/webapp/src/locale/zh_CN.json
Normal file
@ -0,0 +1,377 @@
|
||||
{
|
||||
"login": {
|
||||
"username": "用户名",
|
||||
"password": "密码",
|
||||
"validation_code_required": "请输入验证码",
|
||||
"validation_code_title": "您的帐号已经激活了双身份验证. 请输入您配置手机app的提供的验证码.",
|
||||
"validation_code": "验证码",
|
||||
"remember_me": "记住我",
|
||||
"submit": "登录",
|
||||
"login_as_guest": "以游客身份登录",
|
||||
"login_failed_title": "登录失败",
|
||||
"login_failed_message": "用户名或密码不正确"
|
||||
},
|
||||
"index": {
|
||||
"toggle_navigation": "切换导航",
|
||||
"nav_documents": "文档",
|
||||
"nav_tags": "标签",
|
||||
"nav_users_groups": "用户 & 群组",
|
||||
"error_info": "{{ count }} 新错误",
|
||||
"logged_as": "以 {{ username }}登录",
|
||||
"nav_settings": "设置",
|
||||
"logout": "退出"
|
||||
},
|
||||
"document": {
|
||||
"add_document": "添加一个文档",
|
||||
"tags": "标签",
|
||||
"no_tags": "无标签",
|
||||
"no_documents": "数据库中无该文档",
|
||||
"search": "搜索",
|
||||
"search_empty": "无匹配 <strong>\"{{ search }}\"</strong>",
|
||||
"shared": "分享",
|
||||
"title": "标题",
|
||||
"description": "介绍",
|
||||
"contributors": "贡献者",
|
||||
"language": "语言",
|
||||
"creation_date": "创建时间",
|
||||
"subject": "主题",
|
||||
"identifier": "识别码",
|
||||
"publisher": "发布者",
|
||||
"format": "格式",
|
||||
"source": "来源",
|
||||
"type": "类型",
|
||||
"coverage": "覆盖",
|
||||
"rights": "权利",
|
||||
"relations": "关联",
|
||||
"page_size": "页面大小",
|
||||
"page_size_10": "10 每页",
|
||||
"page_size_20": "20 每页",
|
||||
"page_size_30": "30 每页",
|
||||
"upgrade_quota": "如需要升级您的限额, 请联系管理员",
|
||||
"quota": "{{ current | number: 0 }}MB ({{ current | number: 1 }}%) 已使用 {{ total | number: 0 }}MB",
|
||||
"count": "{{ count }} 文档 找到",
|
||||
"view": {
|
||||
"delete_comment_title": "删除评论",
|
||||
"delete_comment_message": "您是否确认删除此评论?",
|
||||
"delete_document_title": "删除文档",
|
||||
"delete_document_message": "您是否确认删除此文档?",
|
||||
"shared_document_title": "共享文档",
|
||||
"shared_document_message": "您可以直接通过发送该链接来分享该文档. 注意:任何有该链接的人员均可查看该文档.<br/><input class=\"form-control share-link\" type=\"text\" readonly=\"readonly\" value=\"{{ link }}\" onclick=\"this.select(); document.execCommand('copy');\" />",
|
||||
"not_found": "文档未找到",
|
||||
"forbidden": "无权限",
|
||||
"download_files": "下载文档",
|
||||
"export_pdf": "以PDF格式导出",
|
||||
"by_creator": "由",
|
||||
"comments": "评论",
|
||||
"no_comments": "此文档暂无评论",
|
||||
"add_comment": "添加评论",
|
||||
"error_loading_comments": "评论加载失败",
|
||||
"content": {
|
||||
"content": "内容",
|
||||
"delete_file_title": "删除文档",
|
||||
"delete_file_message": "您是否确认删除此文档?",
|
||||
"upload_pending": "等待中...",
|
||||
"upload_progress": "上传中...",
|
||||
"upload_error": "上传失败",
|
||||
"upload_error_quota": "已达到您的限额",
|
||||
"drop_zone": "将文件拖放至此处上传",
|
||||
"add_files": "添加文件"
|
||||
},
|
||||
"permissions": {
|
||||
"permissions": "权限",
|
||||
"message": "权限可以直接应用于此文档, 或从 <a href=\"#/tag\">标签</a>获取.",
|
||||
"title": "该文档权限",
|
||||
"inherited_tags": "由标签获取的权限",
|
||||
"acl_source": "从",
|
||||
"acl_target": "为",
|
||||
"acl_permission": "权限"
|
||||
},
|
||||
"activity": {
|
||||
"activity": "活动",
|
||||
"message": "对该文档的任何更改都将记录于此."
|
||||
}
|
||||
},
|
||||
"edit": {
|
||||
"document_edited_with_errors": "文档编辑成功但部分文件没能上传",
|
||||
"document_added_with_errors": "文档成功添加但部分文件没能上传",
|
||||
"quota_reached": "达到限额",
|
||||
"primary_metadata": "主要元数据",
|
||||
"title_placeholder": "资源的性质或类型",
|
||||
"description_placeholder": "资源的账户",
|
||||
"new_files": "新文件",
|
||||
"orphan_files": "+ {{ count }} 文件",
|
||||
"additional_metadata": "附加元数据",
|
||||
"subject_placeholder": "资源话题",
|
||||
"identifier_placeholder": "在给定的上下文中对资源的明确引用",
|
||||
"publisher_placeholder": "负责提供资源的实体",
|
||||
"format_placeholder": "资源的文件格式, 物理介质或维度",
|
||||
"source_placeholder": "从中导出所描述的资源的相关来源",
|
||||
"uploading_files": "上传文件中..."
|
||||
},
|
||||
"default": {
|
||||
"upload_pending": "等待中...",
|
||||
"upload_progress": "上传中...",
|
||||
"upload_error": "上传失败",
|
||||
"upload_error_quota": "达到限额",
|
||||
"quick_upload": "快速上传",
|
||||
"drop_zone": "将文件拖放至此处上传",
|
||||
"add_files": "添加文件",
|
||||
"add_new_document": "添加至新文档",
|
||||
"latest_activity": "最新活动",
|
||||
"footer_sismics": "精心制作 <span class=\"glyphicon glyphicon-heart\"></span> 由 <a href=\"https://www.sismics.com\" target=\"_blank\">Sismics</a>",
|
||||
"api_documentation": "API 存档"
|
||||
},
|
||||
"pdf": {
|
||||
"export_title": "以PDF形式导出",
|
||||
"export_metadata": "到处元数据",
|
||||
"export_comments": "到处评论",
|
||||
"fit_to_page": "将图像与页面适配",
|
||||
"margin": "边缘",
|
||||
"millimeter": "毫米"
|
||||
},
|
||||
"share": {
|
||||
"title": "共享文档",
|
||||
"message": "如果您想多次共享同一文档,请将共享命名.",
|
||||
"submit": "共享"
|
||||
}
|
||||
},
|
||||
"file": {
|
||||
"view": {
|
||||
"previous": "上一个",
|
||||
"next": "下一个",
|
||||
"not_found": "文件未找到"
|
||||
}
|
||||
},
|
||||
"tag": {
|
||||
"new_tag": "新标签",
|
||||
"search": "搜索",
|
||||
"edit_tag": "更改标签",
|
||||
"default": {
|
||||
"title": "标签",
|
||||
"message_1": "<strong>标签</strong> 是和文档相关的标示.",
|
||||
"message_2": "一个文档可以由多个标签标记, 同时一个标签可以运用于多个文档.",
|
||||
"message_3": "使用该 <span class=\"glyphicon glyphicon-pencil\"></span> 按钮, 您可以编辑标签的权限.",
|
||||
"message_4": "如果一个标签可以被另一个用户或组读取, 相关的文件也可以被这些人阅读.",
|
||||
"message_5": "例如, 用一个标签标记您公司的文档 <span class=\"label label-info\">我的公司</span> 并同时添加权限 <strong>可读</strong> 给一个群组的 <span class=\"btn btn-default\">员工</span>"
|
||||
},
|
||||
"edit": {
|
||||
"delete_tag_title": "删除标签",
|
||||
"delete_tag_message": "您是否确认删除该标签?",
|
||||
"name": "名称",
|
||||
"color": "颜色",
|
||||
"parent": "母",
|
||||
"info": "此标记的权限也将应用于已标记的文档 <span class=\"label label-info\" ng-style=\"{ 'background': color }\">{{ name }}</span>"
|
||||
}
|
||||
},
|
||||
"group": {
|
||||
"profile": {
|
||||
"members": "组成员",
|
||||
"no_members": "无组成员",
|
||||
"related_links": "相关链接",
|
||||
"edit_group": "编辑 {{ Name }} 组"
|
||||
}
|
||||
},
|
||||
"user": {
|
||||
"profile": {
|
||||
"groups": "群组",
|
||||
"quota_used": "已使用配额",
|
||||
"percent_used": "{{ percent | number: 0 }}% 已使用",
|
||||
"related_links": "相关链接",
|
||||
"document_created": "文档由 {{ username }} 创建",
|
||||
"edit_user": "编辑 {{ username }} 用户"
|
||||
}
|
||||
},
|
||||
"usergroup": {
|
||||
"search_groups": "搜索群组",
|
||||
"search_users": "搜索用户",
|
||||
"you": "就是你了!",
|
||||
"default": {
|
||||
"title": "用户 & 群组",
|
||||
"message": "此处您可以浏览用户和群组信息."
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"menu_personal_settings": "个人设置",
|
||||
"menu_user_account": "用户帐号",
|
||||
"menu_two_factor_auth": "双重身份验证",
|
||||
"menu_opened_sessions": "已打开会话",
|
||||
"menu_general_settings": "一般设置",
|
||||
"menu_users": "用户",
|
||||
"menu_groups": "群组",
|
||||
"menu_vocabularies": "词条",
|
||||
"menu_configuration": "配置",
|
||||
"menu_server_logs": "服务器日志",
|
||||
"user": {
|
||||
"title": "用户 <small>管理</small>",
|
||||
"add_user": "添加用户",
|
||||
"username": "用户名",
|
||||
"create_date": "创建日期",
|
||||
"edit": {
|
||||
"delete_user_title": "删除用户",
|
||||
"delete_user_message": "您是否确认删除该用户? 所有相关文档,文件和标签将被删除",
|
||||
"edit_user_title": "<small>编辑</small> \"{{ username }}\"",
|
||||
"add_user_title": "<small>添加一个</small> 用户",
|
||||
"username": "用户名",
|
||||
"email": "邮箱",
|
||||
"groups": "群组",
|
||||
"storage_quota": "存储限额",
|
||||
"storage_quota_placeholder": "存储限额 (in MB)",
|
||||
"password": "密码",
|
||||
"password_confirm": "密码 (确认)"
|
||||
}
|
||||
},
|
||||
"security": {
|
||||
"enable_totp": "激活双重身份验证",
|
||||
"enable_totp_message": "请确保您的手机上已经拥有一个TOTP兼容的应用程序方可添加新账户",
|
||||
"title": "双重身份 <small>验证</small>",
|
||||
"message_1": "双重身份验证将让您的<strong>{{ appName }}</strong> 帐号获得多一层的安全保障.<br/>在启用该功能前, 请确保在您的手机上拥有一个与TOTP兼容的应用程序:",
|
||||
"message_google_authenticator": "给安卓, 苹果, and 黑莓系统: <a href=\"https://support.google.com/accounts/answer/1066447\" target=\"_blank\">谷歌认证</a>",
|
||||
"message_duo_mobile": "给 安卓 和 苹果系统: <a href=\"https://guide.duo.com/third-party-accounts\" target=\"_blank\">Duo Mobile</a>",
|
||||
"message_authenticator": "给 Windows 系统手机: <a href=\"https://www.microsoft.com/en-US/store/apps/Authenticator/9WZDNCRFJ3RJ\" target=\"_blank\">认证</a>",
|
||||
"message_2": "这些应用程序会自动生成一个验证码,且该验证码在一段时间内会变化.<br/>每次登录 <strong>{{ appName }}</strong>时您都需要输入该验证码.",
|
||||
"secret_key": "您的秘钥是: <strong>{{ secret }}</strong>",
|
||||
"secret_key_warning": "现在用该秘钥配置您的手机应用程序上的TOTP, 您之后将无获取权限.",
|
||||
"totp_enabled_message": "双重身份验证将确保您的帐号.<br/>每次您登录 <strong>{{ appName }}</strong>时, 您都需要从您配置的手机应用程序的验证码.<br/>如果您丢失您的手机, 您将无法登录您的帐号但有效会话将允许您重新生成密钥.",
|
||||
"disable_totp": {
|
||||
"disable_totp": "不激活双重身份验证",
|
||||
"message": "您的帐户将不再受双重身份验证保护.",
|
||||
"confirm_password": "确认您的密码",
|
||||
"submit": "不激活双重身份验证"
|
||||
}
|
||||
},
|
||||
"group": {
|
||||
"title": "群组 <small>管理</small>",
|
||||
"add_group": "添加组",
|
||||
"name": "名称",
|
||||
"edit": {
|
||||
"delete_group_title": "删除组",
|
||||
"delete_group_message": "您是否确认删除该组?",
|
||||
"edit_group_title": "编辑 <small>\"{{ name }}\"</small>",
|
||||
"add_group_title": "添加 <small>组</small>",
|
||||
"name": "名称",
|
||||
"parent_group": "母群组",
|
||||
"search_group": "搜索组",
|
||||
"members": "成员",
|
||||
"new_member": "新成员",
|
||||
"search_user": "搜索用户"
|
||||
}
|
||||
},
|
||||
"account": {
|
||||
"title": "用户<small>帐号</small>",
|
||||
"password": "密码",
|
||||
"password_confirm": "密码 (确认)",
|
||||
"updated": "帐号更新成功"
|
||||
},
|
||||
"config": {
|
||||
"title_guest_access": "游客 <small>权限</small>",
|
||||
"message_guest_access": "游客权限是所有人都能无需密码即获取 {{ appName }} 的权限模式.<br/>和其他正常用户一样, 游客权限用户也只能通过其获取的权限来访问其文档.<br/>",
|
||||
"enable_guest_access": "激活游客权限",
|
||||
"disable_guest_access": "不激活游客权限",
|
||||
"title_theme": "主题 <small>定制</small>",
|
||||
"application_name": "申请名",
|
||||
"main_color": "主颜色",
|
||||
"custom_css": "用户样式表",
|
||||
"custom_css_placeholder": "在主样式表之后添加客户自定义样式表",
|
||||
"logo": "图标 (正方形)",
|
||||
"background_image": "背景图片",
|
||||
"uploading_image": "上传图片中..."
|
||||
},
|
||||
"log": {
|
||||
"title": "服务器 <small>日志</small>",
|
||||
"date": "日期",
|
||||
"tag": "标签",
|
||||
"message": "信息"
|
||||
},
|
||||
"session": {
|
||||
"title": "打开 <small>会话</small>",
|
||||
"created_date": "创建日期",
|
||||
"last_connection_date": "最后登录时间",
|
||||
"user_agent": "从",
|
||||
"current": "当前",
|
||||
"current_session": "这是目前会话",
|
||||
"clear_message": "该帐号的所有其他连接将终止",
|
||||
"clear": "清除所有其他会话"
|
||||
},
|
||||
"vocabulary": {
|
||||
"title": "词条 <small>输入</small>",
|
||||
"choose_vocabulary": "选择一个词条编辑",
|
||||
"type": "类型",
|
||||
"coverage": "覆盖",
|
||||
"rights": "权利",
|
||||
"value": "值",
|
||||
"order": "顺序",
|
||||
"new_entry": "新输入"
|
||||
}
|
||||
},
|
||||
"directive": {
|
||||
"acledit": {
|
||||
"acl_target": "用于",
|
||||
"acl_permission": "允许",
|
||||
"add_permission": "添加一个许可",
|
||||
"search_user_group": "搜索一个用户或组"
|
||||
},
|
||||
"auditlog": {
|
||||
"log_created": "创建",
|
||||
"log_updated": "更新",
|
||||
"log_deleted": "删除",
|
||||
"Acl": "ACL",
|
||||
"Comment": "评论",
|
||||
"Document": "文档",
|
||||
"File": "文件",
|
||||
"Group": "组",
|
||||
"Tag": "标签",
|
||||
"User": "用户"
|
||||
},
|
||||
"selectrelation": {
|
||||
"typeahead": "请输入文档名称"
|
||||
},
|
||||
"selecttag": {
|
||||
"typeahead": "请输入标签"
|
||||
}
|
||||
},
|
||||
"filter": {
|
||||
"filesize": {
|
||||
"mb": "MB",
|
||||
"kb": "kB"
|
||||
}
|
||||
},
|
||||
"acl": {
|
||||
"READ": "可读",
|
||||
"READWRITE": "可写",
|
||||
"WRITE": "可写",
|
||||
"USER": "用户",
|
||||
"GROUP": "组",
|
||||
"SHARE": "已共享"
|
||||
},
|
||||
"validation": {
|
||||
"required": "必填",
|
||||
"too_short": "过短",
|
||||
"too_long": "过长",
|
||||
"email": "必须是一个有效邮箱地址",
|
||||
"password_confirm": "密码和确认密码必须完全一致",
|
||||
"number": "必须为数字",
|
||||
"no_space": "不允许空格"
|
||||
},
|
||||
"pagination": {
|
||||
"previous": "上一个",
|
||||
"next": "下一个",
|
||||
"first": "第一",
|
||||
"last": "持续"
|
||||
},
|
||||
"ok": "确认",
|
||||
"cancel": "取消",
|
||||
"share": "共享",
|
||||
"unshare": "不共享",
|
||||
"close": "关闭",
|
||||
"add": "添加",
|
||||
"open": "打开",
|
||||
"see": "查看",
|
||||
"save": "保存",
|
||||
"export": "导出",
|
||||
"edit": "编辑",
|
||||
"delete": "删除",
|
||||
"loading": "加载中...",
|
||||
"send": "发送",
|
||||
"enabled": "激活",
|
||||
"disabled": "未激活"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
<img src="img/loader.gif" ng-show="!app" />
|
||||
<img src="img/loader.gif" ng-show="!logs" />
|
||||
|
||||
<div ng-show="app">
|
||||
<div ng-show="logs">
|
||||
<div class="well drop-zone">
|
||||
<h3><span class="glyphicon glyphicon-cloud-upload"></span> {{ 'document.default.quick_upload' | translate }}</h3>
|
||||
<div class="row upload-zone" ng-model="dropFiles" ng-file-drop drag-over-class="bg-success"
|
||||
@ -55,17 +55,6 @@
|
||||
|
||||
<div ui-view="file"></div>
|
||||
|
||||
<div>
|
||||
<h3><span class="glyphicon glyphicon-tasks"></span> {{ 'document.default.latest_activity' | translate }}</h3>
|
||||
<audit-log logs="logs" />
|
||||
</div>
|
||||
|
||||
<div class="text-muted text-right">
|
||||
<ul class="list-inline">
|
||||
<li translate="document.default.footer_sismics"></li>
|
||||
<li><a href="apidoc/">{{ 'document.default.api_documentation' | translate }}</a></li>
|
||||
<li><strong>{{ 'document.default.version' | translate }}</strong> {{ app.current_version }}</li>
|
||||
<li><strong>{{ 'document.default.memory' | translate }}</strong> {{ app.free_memory / 1000000 | number: 0 }}/{{ app.total_memory / 1000000 | number: 0 }} MB</li>
|
||||
</ul>
|
||||
</div>
|
||||
<h3><span class="glyphicon glyphicon-tasks"></span> {{ 'document.default.latest_activity' | translate }}</h3>
|
||||
<audit-log logs="logs" />
|
||||
</div>
|
@ -77,7 +77,12 @@
|
||||
</table>
|
||||
|
||||
<div class="text-center pagination-box">
|
||||
<pagination total-items="totalDocuments" items-per-page="limit" max-size="5" page="currentPage"></pagination>
|
||||
<pagination
|
||||
previous-text="{{ 'pagination.previous' | translate }}"
|
||||
next-text="{{ 'pagination.next' | translate }}"
|
||||
first-text="{{ 'pagination.first' | translate }}"
|
||||
last-text="{{ 'pagination.last' | translate }}"
|
||||
total-items="totalDocuments" items-per-page="limit" max-size="5" page="currentPage"></pagination>
|
||||
<label class="sr-only" for="pagesizeSelect">{{ 'document.page_size' | translate }}</label>
|
||||
<select ng-model="limit" id="pagesizeSelect" class="form-control">
|
||||
<option value="10">{{ 'document.page_size_10' | translate }}</option>
|
||||
|
@ -3,6 +3,14 @@
|
||||
.navbar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Absolute positionned footer on top of the login background */
|
||||
.footer {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
border: none;
|
||||
color: #fff;
|
||||
}
|
||||
</style>
|
||||
<div class="row vertical-center login-box-container">
|
||||
<div class="col-sm-offset-5 col-sm-2 login-box">
|
||||
|
@ -1,4 +1,4 @@
|
||||
<h1>User <small>account</small></h1>
|
||||
<h1 translate="settings.account.title"></h1>
|
||||
<form class="form-horizontal" name="editUserForm" novalidate>
|
||||
<div class="form-group" ng-class="{ 'has-error': !editUserForm.password.$valid && editUserForm.$dirty, success: editUserForm.password.$valid }">
|
||||
<label class="col-sm-2 control-label" for="inputPassword">{{ 'settings.account.password' | translate }}</label>
|
||||
|
@ -67,6 +67,7 @@
|
||||
|
||||
.col-full {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
@ -78,6 +79,11 @@
|
||||
img {
|
||||
opacity: 0.1;
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
top: -10px;
|
||||
transform: translateY(-100%);
|
||||
}
|
||||
}
|
||||
|
||||
// Drop zone
|
||||
|
Loading…
Reference in New Issue
Block a user