diff --git a/app/const.js b/app/const.js index e9245ec8..76139590 100644 --- a/app/const.js +++ b/app/const.js @@ -1,42 +1,47 @@ -angular.module('web') - .factory('Const', [function () { - +angular.module("web").factory("Const", [ + function () { function getStorageClasses(f) { - var storageClasses = [{ - value: 'Standard', - name: '标准类型' + var storageClasses = [ + { + value: "Standard", + name: "标准类型", }, //标准类型 { - value: 'IA', - name: '低频访问类型' - } //低频访问类型 + value: "IA", + name: "低频访问类型", + }, //低频访问类型 ]; switch (f) { - case 3: - return storageClasses.concat([{ - value: 'Archive', - name: '归档类型' - }]); //归档类型 - case 2: - return storageClasses; - default: - return [{ - value: 'Standard', - name: '标准类型' - }]; //标准类型 + case 3: + return storageClasses.concat([ + { + value: "Archive", + name: "归档类型", + }, + ]); //归档类型 + case 2: + return storageClasses; + default: + return [ + { + value: "Standard", + name: "标准类型", + }, + ]; //标准类型 } } return { - AUTH_INFO_KEY: 'auth-info', - AUTH_HIS: 'auth-his', - AUTH_KEEP: 'auth-keep', - KEY_REMEMBER: 'auth-remember', - SHOW_HIS: 'show-his', - SHOW_REQUEST_PAY: 'show-request-pay', - SHOW_SECURE: 'show-secure', + AUTH_INFO_KEY: "auth-info", + AUTH_HIS: "auth-his", + AUTH_KEEP: "auth-keep", + KEY_REMEMBER: "auth-remember", + KEEP_ME_LOGGED_IN: "keep-me-logged-in", + SHOW_HIS: "show-his", + SHOW_REQUEST_PAY: "show-request-pay", + SHOW_SECURE: "show-secure", - IMM_DOC_PREVIEW_LINK: 'https://help.aliyun.com', + IMM_DOC_PREVIEW_LINK: "https://help.aliyun.com", IMM_DOC_TYPES: [ //演示文件: // 'pptx','ppt','pot','potx','pps','ppsx','dps','dpt','pptm','potm','ppsm', @@ -45,234 +50,238 @@ angular.module('web') // //文字文件: // 'doc','dot','wps','wpt','docx','dotx','docm','dotm', //其他格式文件: - 'pdf', + "pdf", //'lrc','c','cpp','h','asm','s','java','asp','bat','bas','prg','cmd','rtf','txt','log','xml','htm','html', ], REG: { - EMAIL: /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/ + EMAIL: /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/, }, - bucketACL: [{ - acl: 'private', - label: '私有' + bucketACL: [ + { + acl: "private", + label: "私有", }, //私有 { - acl: 'public-read', - label: '公共读' + acl: "public-read", + label: "公共读", }, //公共读 { - acl: 'public-read-write', - label: '公共读写' + acl: "public-read-write", + label: "公共读写", }, //公共读写 ], //https://help.aliyun.com/document_detail/31837.html - regions: [{ - id: 'oss-cn-hangzhou', - label: '华东1(杭州)', - storageClasses: getStorageClasses(3) + regions: [ + { + id: "oss-cn-hangzhou", + label: "华东1(杭州)", + storageClasses: getStorageClasses(3), }, { - id: 'oss-cn-shanghai', - label: '华东2(上海)', - storageClasses: getStorageClasses(3) + id: "oss-cn-shanghai", + label: "华东2(上海)", + storageClasses: getStorageClasses(3), }, { - id: 'oss-cn-qingdao', - label: '华北1(青岛)', - storageClasses: getStorageClasses(3) + id: "oss-cn-qingdao", + label: "华北1(青岛)", + storageClasses: getStorageClasses(3), }, { - id: 'oss-cn-beijing', - label: '华北2(北京)', - storageClasses: getStorageClasses(3) + id: "oss-cn-beijing", + label: "华北2(北京)", + storageClasses: getStorageClasses(3), }, { - id: 'oss-cn-zhangjiakou', - label: '华北3(张家口)', - storageClasses: getStorageClasses(3) + id: "oss-cn-zhangjiakou", + label: "华北3(张家口)", + storageClasses: getStorageClasses(3), }, { - id: 'oss-cn-huhehaote', - label: '华北5(呼和浩特)', - storageClasses: getStorageClasses(3) + id: "oss-cn-huhehaote", + label: "华北5(呼和浩特)", + storageClasses: getStorageClasses(3), }, { - id: 'oss-cn-shenzhen', - label: '华南1(深圳)', - storageClasses: getStorageClasses(3) + id: "oss-cn-shenzhen", + label: "华南1(深圳)", + storageClasses: getStorageClasses(3), }, { - id: 'oss-cn-heyuan', - label: '华南2(河源)', - storageClasses: getStorageClasses(3) + id: "oss-cn-heyuan", + label: "华南2(河源)", + storageClasses: getStorageClasses(3), }, { - id: 'oss-cn-chengdu', - label: '西南1(成都)', - storageClasses: getStorageClasses(3) + id: "oss-cn-chengdu", + label: "西南1(成都)", + storageClasses: getStorageClasses(3), }, { - id: 'oss-cn-hongkong', - label: '香港', - storageClasses: getStorageClasses(3) + id: "oss-cn-hongkong", + label: "香港", + storageClasses: getStorageClasses(3), }, { - id: 'oss-ap-southeast-1', - label: '亚太东南1(新加坡)', - storageClasses: getStorageClasses(3) + id: "oss-ap-southeast-1", + label: "亚太东南1(新加坡)", + storageClasses: getStorageClasses(3), }, { - id: 'oss-ap-southeast-2', - label: '亚太东南2(悉尼)', - storageClasses: getStorageClasses(3) + id: "oss-ap-southeast-2", + label: "亚太东南2(悉尼)", + storageClasses: getStorageClasses(3), }, { - id: 'oss-ap-southeast-3', - label: '亚太东南3(吉隆坡)', - storageClasses: getStorageClasses(3) + id: "oss-ap-southeast-3", + label: "亚太东南3(吉隆坡)", + storageClasses: getStorageClasses(3), }, { - id: 'oss-ap-southeast-5', - label: '亚太东南5(雅加达)', - storageClasses: getStorageClasses(3) + id: "oss-ap-southeast-5", + label: "亚太东南5(雅加达)", + storageClasses: getStorageClasses(3), }, { - id: 'oss-ap-northeast-1', - label: '亚太东北1(东京)', - storageClasses: getStorageClasses(3) + id: "oss-ap-northeast-1", + label: "亚太东北1(东京)", + storageClasses: getStorageClasses(3), }, { - id: 'oss-ap-south-1', - label: '亚太南部(孟买)', - storageClasses: getStorageClasses(3) + id: "oss-ap-south-1", + label: "亚太南部(孟买)", + storageClasses: getStorageClasses(3), }, { - id: 'oss-us-west-1', - label: '美国西部1(硅谷)', - storageClasses: getStorageClasses(3) + id: "oss-us-west-1", + label: "美国西部1(硅谷)", + storageClasses: getStorageClasses(3), }, { - id: 'oss-us-east-1', - label: '美国东部1(弗吉尼亚)', - storageClasses: getStorageClasses(3) + id: "oss-us-east-1", + label: "美国东部1(弗吉尼亚)", + storageClasses: getStorageClasses(3), }, { - id: 'oss-eu-central-1', - label: '欧洲中部1(法兰克福)', - storageClasses: getStorageClasses(3) + id: "oss-eu-central-1", + label: "欧洲中部1(法兰克福)", + storageClasses: getStorageClasses(3), }, { - id: 'oss-me-east-1', - label: '中东东部1(迪拜)', - storageClasses: getStorageClasses(3) + id: "oss-me-east-1", + label: "中东东部1(迪拜)", + storageClasses: getStorageClasses(3), }, { - id: 'oss-eu-west-1', - label: '英国(伦敦)', - storageClasses: getStorageClasses(3) - } + id: "oss-eu-west-1", + label: "英国(伦敦)", + storageClasses: getStorageClasses(3), + }, ], - countryNum: [{ - "label": "中国大陆(+86)", - "value": "86" + countryNum: [ + { + label: "中国大陆(+86)", + value: "86", }, { - "label": "香港(+852)", - "value": "852" + label: "香港(+852)", + value: "852", }, { - "label": "澳门(+853)", - "value": "853" + label: "澳门(+853)", + value: "853", }, { - "label": "台湾(+886)", - "value": "886" + label: "台湾(+886)", + value: "886", }, { - "label": "韩国(+82)", - "value": "82" + label: "韩国(+82)", + value: "82", }, { - "label": "日本(+81)", - "value": "81" + label: "日本(+81)", + value: "81", }, { - "label": "美国(+1)", - "value": "1" + label: "美国(+1)", + value: "1", }, { - "label": "加拿大(+1)", - "value": "1" + label: "加拿大(+1)", + value: "1", }, { - "label": "英国(+44)", - "value": "44" + label: "英国(+44)", + value: "44", }, { - "label": "澳大利亚(+61)", - "value": "61" + label: "澳大利亚(+61)", + value: "61", }, { - "label": "新加坡(+65)", - "value": "65" + label: "新加坡(+65)", + value: "65", }, { - "label": "马来西亚(+60)", - "value": "60" + label: "马来西亚(+60)", + value: "60", }, { - "label": "泰国(+66)", - "value": "66" + label: "泰国(+66)", + value: "66", }, { - "label": "越南(+84)", - "value": "84" + label: "越南(+84)", + value: "84", }, { - "label": "菲律宾(+63)", - "value": "63" + label: "菲律宾(+63)", + value: "63", }, { - "label": "印度尼西亚(+62)", - "value": "62" + label: "印度尼西亚(+62)", + value: "62", }, { - "label": "德国(+49)", - "value": "49" + label: "德国(+49)", + value: "49", }, { - "label": "意大利(+39)", - "value": "39" + label: "意大利(+39)", + value: "39", }, { - "label": "法国(+33)", - "value": "33" + label: "法国(+33)", + value: "33", }, { - "label": "俄罗斯(+7)", - "value": "7" + label: "俄罗斯(+7)", + value: "7", }, { - "label": "新西兰(+64)", - "value": "64" + label: "新西兰(+64)", + value: "64", }, { - "label": "荷兰(+31)", - "value": "31" + label: "荷兰(+31)", + value: "31", }, { - "label": "瑞典(+46)", - "value": "46" + label: "瑞典(+46)", + value: "46", }, { - "label": "乌克兰(+380)", - "value": "380" - } - ] - } - }]); + label: "乌克兰(+380)", + value: "380", + }, + ], + }; + }, +]); diff --git a/app/main/auth/login.html b/app/main/auth/login.html index 9fb99b1c..63f099b9 100644 --- a/app/main/auth/login.html +++ b/app/main/auth/login.html @@ -189,6 +189,13 @@
+ + +
diff --git a/app/main/auth/login.js b/app/main/auth/login.js index f6c2db3b..cbda8bcc 100644 --- a/app/main/auth/login.js +++ b/app/main/auth/login.js @@ -1,284 +1,336 @@ -angular.module('web') - .controller('loginCtrl', ['$scope', '$rootScope', '$translate', 'Auth', 'AuthInfo', '$timeout', '$location', 'Const', 'Dialog', 'Toast', 'Cipher', 'settingsSvs', - function ($scope, $rootScope, $translate, Auth, AuthInfo, $timeout, $location, Const, Dialog, Toast, Cipher, settingsSvs) { - - var DEF_EP_TPL = 'http://{region}.aliyuncs.com'; - - var KEY_REMEMBER = Const.KEY_REMEMBER; - var SHOW_HIS = Const.SHOW_HIS; - var SHOW_REQUEST_PAY = Const.SHOW_REQUEST_PAY; - var SHOW_SECURE = Const.SHOW_SECURE; - var KEY_AUTHTOKEN = 'key-authtoken'; - var regions = angular.copy(Const.regions); - - var T = $translate.instant; - - angular.extend($scope, { - gtab: parseInt(localStorage.getItem('gtag') || 1), - flags: { - remember: 'NO', - showHis: 'NO', - requestpaystatus: 'NO', - secure: 'NO' - }, - item: { - eptpl: DEF_EP_TPL, - }, - eptplType: 'default', - - hideTopNav: 1, - reg_osspath: /^oss\:\/\//, - regions: regions, - onSubmit: onSubmit, - showCleanHistories: showCleanHistories, - useHis: useHis, - showRemoveHis: showRemoveHis, - - open: open, - - onSubmit2: onSubmit2, - authTokenChange: authTokenChange, - - eptplChange: eptplChange, - }); - - $scope.$watch('item.eptpl', function (v) { - $scope.eptplType = v.indexOf('{region}.aliyuncs.com' > -1) ? 'default' : 'customize'; - }); - - // $scope.$watch('item.eptpl', function(v){ - // // $scope.eptplType = (v==DEF_EP_TPL)?'default':'customize'; - // }); - - $scope.$watch('gtab', function (v) { - localStorage.setItem('gtag', v) - }); - - $scope.$watch('item.cname', function (v) { - console.log('cname: ' + v) - if (v) { - $scope.eptplType = 'cname' - } - }); - - function eptplChange(t) { - $scope.eptplType = t; - //console.log(t); - if (t == 'default') { - $scope.item.eptpl = DEF_EP_TPL; - $scope.item.cname = false; - } else if (t == 'customize') { - $scope.item.cname = false; - $scope.item.eptpl = ''; - } else if (t == 'cname') { - $scope.item.cname = true; - $scope.item.eptplcname = ''; - } +angular.module("web").controller("loginCtrl", [ + "$scope", + "$rootScope", + "$translate", + "Auth", + "AuthInfo", + "$timeout", + "$location", + "Const", + "Dialog", + "Toast", + "Cipher", + "settingsSvs", + function ( + $scope, + $rootScope, + $translate, + Auth, + AuthInfo, + $timeout, + $location, + Const, + Dialog, + Toast, + Cipher, + settingsSvs + ) { + var DEF_EP_TPL = "http://{region}.aliyuncs.com"; + + var KEY_REMEMBER = Const.KEY_REMEMBER; + var SHOW_HIS = Const.SHOW_HIS; + var SHOW_REQUEST_PAY = Const.SHOW_REQUEST_PAY; + var SHOW_SECURE = Const.SHOW_SECURE; + const KEEP_ME_LOGGED_IN = Const.KEEP_ME_LOGGED_IN; + var KEY_AUTHTOKEN = "key-authtoken"; + var regions = angular.copy(Const.regions); + + var T = $translate.instant; + + angular.extend($scope, { + gtab: parseInt(localStorage.getItem("gtag") || 1), + flags: { + remember: "NO", + showHis: "NO", + requestpaystatus: "NO", + secure: "YES", + keepLoggedIn: "YES", + }, + item: { + eptpl: DEF_EP_TPL, + }, + eptplType: "default", + + hideTopNav: 1, + reg_osspath: /^oss\:\/\//, + regions: regions, + onSubmit: onSubmit, + showCleanHistories: showCleanHistories, + useHis: useHis, + showRemoveHis: showRemoveHis, + + open: open, + + onSubmit2: onSubmit2, + authTokenChange: authTokenChange, + + eptplChange: eptplChange, + }); + + $scope.$watch("item.eptpl", function (v) { + $scope.eptplType = v.indexOf("{region}.aliyuncs.com" > -1) + ? "default" + : "customize"; + }); + + // $scope.$watch('item.eptpl', function(v){ + // // $scope.eptplType = (v==DEF_EP_TPL)?'default':'customize'; + // }); + + $scope.$watch("gtab", function (v) { + localStorage.setItem("gtag", v); + }); + + $scope.$watch("item.cname", function (v) { + console.log("cname: " + v); + if (v) { + $scope.eptplType = "cname"; } - - function open(a) { - openExternal(a); + }); + + function eptplChange(t) { + $scope.eptplType = t; + //console.log(t); + if (t == "default") { + $scope.item.eptpl = DEF_EP_TPL; + $scope.item.cname = false; + } else if (t == "customize") { + $scope.item.cname = false; + $scope.item.eptpl = ""; + } else if (t == "cname") { + $scope.item.cname = true; + $scope.item.eptplcname = ""; } + } - var tid; + function open(a) { + openExternal(a); + } - function authTokenChange() { - $timeout.cancel(tid); - tid = $timeout(function () { - var authToken = $scope.item.authToken || ''; + var tid; - localStorage.setItem(KEY_AUTHTOKEN, authToken); + function authTokenChange() { + $timeout.cancel(tid); + tid = $timeout(function () { + var authToken = $scope.item.authToken || ""; - if (!authToken) { - $scope.authTokenInfo = null; - return; - } - - try { - var str = Buffer.from(authToken, 'base64').toString(); - var info = JSON.parse(str); - - if (info.id && info.secret && info.stoken && info.privilege && info.expiration && info.osspath) { - - //过期 - try { - var d = new Date(info.expiration).getTime(); - info.isExpired = d <= new Date().getTime(); - } catch (e) { + localStorage.setItem(KEY_AUTHTOKEN, authToken); - } - $scope.authTokenInfo = info; - - $scope.authTokenInfo.expirationStr = moment(new Date(info.expiration)).format('YYYY-MM-DD HH:mm:ss'); + if (!authToken) { + $scope.authTokenInfo = null; + return; + } - } - else if (info.id && info.secret && !info.id.startsWith('STS.')) { - //子用户ak - $scope.authTokenInfo = info; - } - else if (new Date(info.expiration).getTime() < new Date().getTime()) { - $scope.authTokenInfo = null; - } - } catch (e) { + try { + var str = Buffer.from(authToken, "base64").toString(); + var info = JSON.parse(str); + + if ( + info.id && + info.secret && + info.stoken && + info.privilege && + info.expiration && + info.osspath + ) { + //过期 + try { + var d = new Date(info.expiration).getTime(); + info.isExpired = d <= new Date().getTime(); + } catch (e) {} + $scope.authTokenInfo = info; + + $scope.authTokenInfo.expirationStr = moment( + new Date(info.expiration) + ).format("YYYY-MM-DD HH:mm:ss"); + } else if (info.id && info.secret && !info.id.startsWith("STS.")) { + //子用户ak + $scope.authTokenInfo = info; + } else if ( + new Date(info.expiration).getTime() < new Date().getTime() + ) { $scope.authTokenInfo = null; } - }, 600); - } - - init(); + } catch (e) { + $scope.authTokenInfo = null; + } + }, 600); + } - function init() { - $scope.flags.remember = localStorage.getItem(KEY_REMEMBER) || 'NO'; - $scope.flags.showHis = localStorage.getItem(SHOW_HIS) || 'NO'; + init(); + function init() { + $scope.flags.remember = localStorage.getItem(KEY_REMEMBER) || "NO"; + $scope.flags.showHis = localStorage.getItem(SHOW_HIS) || "NO"; + ($scope.flags.keepLoggedIn = + localStorage.getItem(KEEP_ME_LOGGED_IN) || "YES"), //requestPay状态 - $scope.flags.requestpaystatus = localStorage.getItem(SHOW_REQUEST_PAY) || 'NO'; - - // 是否使用https - $scope.flags.secure = localStorage.getItem(SHOW_SECURE) || 'NO'; + ($scope.flags.requestpaystatus = + localStorage.getItem(SHOW_REQUEST_PAY) || "NO"); - angular.extend($scope.item, AuthInfo.getRemember()); + // 是否使用https + $scope.flags.secure = localStorage.getItem(SHOW_SECURE) || "YES"; + angular.extend($scope.item, AuthInfo.getRemember()); - //临时token - $scope.item.authToken = localStorage.getItem(KEY_AUTHTOKEN) || ''; - authTokenChange(); + //临时token + $scope.item.authToken = localStorage.getItem(KEY_AUTHTOKEN) || ""; + authTokenChange(); - listHistories(); - - $scope.$watch('flags.remember', function (v) { - if (v == 'NO') { - AuthInfo.unremember(); - localStorage.setItem(KEY_REMEMBER, 'NO'); - } - }); + listHistories(); - $scope.$watch('flags.showHis', function (v) { - localStorage.setItem(SHOW_HIS, v); - }); + $scope.$watch("flags.remember", function (v) { + if (v == "NO") { + AuthInfo.unremember(); + localStorage.setItem(KEY_REMEMBER, "NO"); + } + }); - $scope.$watch('flags.requestpaystatus', function (v) { - localStorage.setItem(SHOW_REQUEST_PAY, v); - }); + $scope.$watch("flags.showHis", function (v) { + localStorage.setItem(SHOW_HIS, v); + }); - $scope.$watch('flags.secure', function (v) { - localStorage.setItem(SHOW_SECURE, v); - if ( $scope.eptplType === 'default') { - var secure = v === 'YES'; - $scope.item.eptpl = $scope.item.eptpl.replace(/^https?/, secure ? 'https' : 'http'); - } - }); - } + $scope.$watch("flags.requestpaystatus", function (v) { + localStorage.setItem(SHOW_REQUEST_PAY, v); + }); - function useHis(h) { - if (h.cname) { - $scope.eptplType = 'cname' + $scope.$watch("flags.secure", function (v) { + localStorage.setItem(SHOW_SECURE, v); + if ($scope.eptplType === "default") { + var secure = v === "YES"; + $scope.item.eptpl = $scope.item.eptpl.replace( + /^https?/, + secure ? "https" : "http" + ); } - angular.extend($scope.item, h); + }); - $scope.item.desc = h.desc || ''; - } + $scope.$watch("flags.keepLoggedIn", function (v) { + localStorage.setItem(KEEP_ME_LOGGED_IN, v); + }); + } - function showRemoveHis(h) { - var title = T('auth.removeAK.title'); //删除AK - var message = T('auth.removeAK.message', {id: h.id}); //'ID:'+h.id+', 确定删除?' - Dialog.confirm(title, message, function (b) { + function useHis(h) { + if (h.cname) { + $scope.eptplType = "cname"; + } + angular.extend($scope.item, h); + + $scope.item.desc = h.desc || ""; + } + + function showRemoveHis(h) { + var title = T("auth.removeAK.title"); //删除AK + var message = T("auth.removeAK.message", { id: h.id }); //'ID:'+h.id+', 确定删除?' + Dialog.confirm( + title, + message, + function (b) { if (b) { AuthInfo.removeFromHistories(h.id); listHistories(); } - }, 1); - } - - function listHistories() { - $scope.his = AuthInfo.listHistories(); - } - - function showCleanHistories() { - var title = T('auth.clearAKHistories.title'); //清空AK历史 - var message = T('auth.clearAKHistories.message'); //确定? - var successMessage = T('auth.clearAKHistories.successMessage'); //已清空AK历史 - Dialog.confirm(title, message, function (b) { + }, + 1 + ); + } + + function listHistories() { + $scope.his = AuthInfo.listHistories(); + } + + function showCleanHistories() { + var title = T("auth.clearAKHistories.title"); //清空AK历史 + var message = T("auth.clearAKHistories.message"); //确定? + var successMessage = T("auth.clearAKHistories.successMessage"); //已清空AK历史 + Dialog.confirm( + title, + message, + function (b) { if (b) { AuthInfo.cleanHistories(); listHistories(); Toast.success(successMessage); } - }, 1); - } - + }, + 1 + ); + } - function onSubmit(form1) { - if (!form1.$valid) return; - localStorage.setItem(KEY_REMEMBER, $scope.flags.remember); - var data = angular.copy($scope.item); + function onSubmit(form1) { + if (!form1.$valid) return; + localStorage.setItem(KEY_REMEMBER, $scope.flags.remember); + var data = angular.copy($scope.item); - delete data.requestpaystatus; + delete data.requestpaystatus; - if (!data.requestpaystatus) { - data.requestpaystatus = localStorage.getItem(SHOW_REQUEST_PAY) || 'NO'; - } + if (!data.requestpaystatus) { + data.requestpaystatus = localStorage.getItem(SHOW_REQUEST_PAY) || "NO"; + } - data.secure = localStorage.getItem(SHOW_SECURE) || 'NO'; + data.secure = localStorage.getItem(SHOW_SECURE) || "YES"; - //trim password - if (data.secret) data.secret = data.secret.trim(); + //trim password + if (data.secret) data.secret = data.secret.trim(); - delete data.authToken; - delete data.securityToken; + delete data.authToken; + delete data.securityToken; - if (data.id.indexOf('STS.') != 0) { - delete data.stoken; - } + if (data.id.indexOf("STS.") != 0) { + delete data.stoken; + } - if ($scope.flags.remember == 'YES') { - AuthInfo.remember(data); - } + if ($scope.flags.remember == "YES") { + AuthInfo.remember(data); + } - Toast.info(T('logining'), 1000); + Toast.info(T("logining"), 1000); - Auth.login(data).then(function () { - if (!data.region && data.eptpl.indexOf('{region}') === -1) { + Auth.login(data).then( + function () { + if (!data.region && data.eptpl.indexOf("{region}") === -1) { var regExp = /https?:\/\/(\S*)\.aliyuncs\.com/; var res = data.eptpl.match(regExp); if (res) { - data.region = res[1].replace('-internal', ''); + data.region = res[1].replace("-internal", ""); AuthInfo.save(data); } } - if ($scope.flags.remember == 'YES') AuthInfo.addToHistories(data); - Toast.success(T('login.successfully'), 1000); - $location.url('/'); - }, function (err) { - Toast.error(err.code + ':' + err.message); - }); - - return false; - } - - //token login - function onSubmit2(form2) { - - if (!form2.$valid) return; + if ($scope.flags.remember == "YES") AuthInfo.addToHistories(data); + Toast.success(T("login.successfully"), 1000); + $location.url("/"); + }, + function (err) { + Toast.error(err.code + ":" + err.message); + } + ); + return false; + } - if (!$scope.authTokenInfo) { - return; - } + //token login + function onSubmit2(form2) { + if (!form2.$valid) return; - var data = angular.copy($scope.authTokenInfo); + if (!$scope.authTokenInfo) { + return; + } - Toast.info(T('logining'), 1000);//'正在登录...' + var data = angular.copy($scope.authTokenInfo); - Auth.login(data).then(function () { - Toast.success(T('login.successfully'), 1000);//'登录成功,正在跳转...' - $location.url('/'); - }, function (err) { - Toast.error(err.code + ':' + err.message); - }); + Toast.info(T("logining"), 1000); //'正在登录...' - return false; - } + Auth.login(data).then( + function () { + Toast.success(T("login.successfully"), 1000); //'登录成功,正在跳转...' + $location.url("/"); + }, + function (err) { + Toast.error(err.code + ":" + err.message); + } + ); - }]) -; + return false; + } + }, +]); diff --git a/app/main/main.js b/app/main/main.js index f19d8546..6c45ce03 100644 --- a/app/main/main.js +++ b/app/main/main.js @@ -1,44 +1,65 @@ +angular.module("web").controller("mainCtrl", [ + "$scope", + "$rootScope", + "$timeout", + "$state", + "$q", + "Const", + "AuthInfo", + "autoUpgradeSvs", + function ( + $scope, + $rootScope, + $timeout, + $state, + $q, + Const, + AuthInfo, + autoUpgradeSvs + ) { + angular.extend($scope, { + upgradeInfo: { + files: false, + currentVersion: Global.app.version, + isLastVersion: true, + }, + }); -angular.module('web') - .controller('mainCtrl',['$scope','$rootScope', '$timeout', '$state', '$q','Const','AuthInfo','autoUpgradeSvs', - function($scope, $rootScope, $timeout, $state, $q, Const, AuthInfo, autoUpgradeSvs){ - - angular.extend($scope, { - upgradeInfo: { - files: false, - currentVersion: Global.app.version, - isLastVersion: true - } + $timeout(function () { + autoUpgradeSvs.load(function (info) { + angular.extend($scope.upgradeInfo, info); }); + }, 2000); - $timeout(function(){ - autoUpgradeSvs.load(function(info){ - angular.extend($scope.upgradeInfo, info) - }) - },2000) - - $rootScope.internalSupported = false; - - $scope.$on('$stateChangeSuccess', function(){ - var name = $state.current.name; - if(name!='login'){ - $rootScope.internalSupported = (AuthInfo.get().eptpl||'').indexOf('-internal')!=-1; - } - }); + $rootScope.internalSupported = false; + $scope.$on("$stateChangeSuccess", function () { + var name = $state.current.name; + if (name != "login") { + $rootScope.internalSupported = + (AuthInfo.get().eptpl || "").indexOf("-internal") != -1; + } + }); - // - // function init(){ - // var df = $q.defer(); - // $.ajax({url:'http://'+(region||'oss-cn-beijing')+'-internal.aliyuncs.com',timeout:2000,error:function(xhr){ - // isInit=true; - // if(xhr.status==403){ - // $rootScope.internalSupported = true; - // } - // df.resolve(); - // }}); - // return df.promise; - // } + window.addEventListener("unload", () => { + const shouldRemoveAuthInfo = + localStorage.getItem(Const.KEEP_ME_LOGGED_IN) === "NO"; + if (shouldRemoveAuthInfo) { + AuthInfo.remove(); + } + }); - }]) - ; + // + // function init(){ + // var df = $q.defer(); + // $.ajax({url:'http://'+(region||'oss-cn-beijing')+'-internal.aliyuncs.com',timeout:2000,error:function(xhr){ + // isInit=true; + // if(xhr.status==403){ + // $rootScope.internalSupported = true; + // } + // df.resolve(); + // }}); + // return df.promise; + // } + }, +]); diff --git a/node/i18n/en-US.js b/node/i18n/en-US.js index 1d5434bc..e6423a84 100644 --- a/node/i18n/en-US.js +++ b/node/i18n/en-US.js @@ -1,463 +1,497 @@ module.exports = { - 'app.name': 'OSS Browser', - 'language': 'Language', - 'name': 'Name', - 'type': 'Type', - 'customize': 'Customize', - 'public.cloud': 'Public Cloud', - - 'region.oss-cn-hangzhou': 'East China 1(Hangzhou)', - 'region.oss-cn-shanghai': 'East China 2(Shanghai)', - 'region.oss-cn-qingdao': 'North China 1(Qingdao)', - 'region.oss-cn-beijing': 'North China 2(Beijing)', - 'region.oss-cn-zhangjiakou': 'North China 3(Zhangjiakou)', - 'region.oss-cn-huhehaote': 'North China 5(Huhehaote)', - 'region.oss-cn-shenzhen': 'South China 1(Shenzhen)', - 'region.oss-cn-heyuan': 'South China 2(Heyuan)', - 'region.oss-cn-chengdu': 'Southwest China 1(Chengdu)', - 'region.oss-cn-hongkong': 'Hongkong', - - 'region.oss-ap-southeast-1': 'Asia Pacific Southeast 1(Singapore)', - 'region.oss-ap-southeast-2': 'Asia Pacific Southeast 2(Sydney)', - 'region.oss-ap-southeast-3': 'Asia Pacific Southeast 3(Kuala Lumpur)', - 'region.oss-ap-southeast-5': 'Asia Pacific Southeast 5(Jakarta)', - 'region.oss-ap-northeast-1': 'Asia Pacific Northeast 1(Tokyo)', - 'region.oss-ap-south-1': 'Asia Pacific South 1(Mumbai)', - - 'region.oss-us-west-1': 'Western US 1(Silicon Valley)', - 'region.oss-us-east-1': 'Eastern US 1(Virginia)', - 'region.oss-eu-central-1': 'Central Europe 1(Frankfurt)', - 'region.oss-me-east-1': 'Middle East East 1(Dubai)', - 'region.oss-eu-west-1': 'England (LonDon)', - - - 'optional': 'Optional', - 'default': 'Default', - 'auth.akLogin': 'AK Login', - 'auth.tokenLogin': 'Token Login', - 'auth.presetOssPath': 'Preset OSS Path', - 'auth.presetOssPath.placeholder': 'Optional, format: oss://bucket/key/', - 'auth.id.placeholder': 'AccessKeyId', - 'auth.secret.placeholder': 'AccessKeySecret', - 'auth.stoken.placeholder': 'STS Token', - 'auth.eptpl': 'Endpoint Template', - 'auth.eptpl.placeholder': 'Default: http://{region}.aliyuncs.com', - - 'auth.eptpl.popup.msg1': 'For Public Cloud, you can directly use the default settings', - 'auth.eptpl.popup.msg2': 'For Private Cloud, Please enter a custom Endpoint, such as:', - - 'auth.presetOssPath.popup.msg1': 'The current AK that has all Bucket rights does not need to set the "Preset OSS Path"', - 'auth.presetOssPath.popup.msg2': 'The current AK only has the permissions of a Bucket or a certain path under a Bucket, you need to set the "Preset OSS Path"', - - 'auth.remember.popup.msg1': 'Check "Remember" to save the AK. When you login again, click AK History to select the key to log in. You do not need to enter AK manually. Please do not check it on a temporary computer!', - - 'region': 'Region', - 'requestPay':"request payer", - 'requestpay.popup.msg':'If your authorized bucket opens the request payer mode and you are not the owner of the bucket, you should check the \'Request Payer Mode\'. The amount of traffic, requests, etc. that you generate when you visit the bucket will be paid by you. For details, please refer to the help documentation.', - 'auth.region.placeholder': 'Optional', - 'auth.description': 'Description', - 'auth.description.placeholder': 'Optional, Up to 30 words', - 'auth.remember': 'Remember', - 'auth.login': 'Login', - 'auth.akHistories': 'AK Histories', - 'auth.secure': 'HTTPS encryption', - - 'auth.authToken': 'Auth-Token', - 'auth.authToken.tooltip': 'View document', - 'auth.authToken.placeholder': 'Please enter the authorization token', - 'auth.authToken.error.invalid': 'Please enter a valid authorization token', - 'auth.authToken.error.expired': 'The authorization token has expired', - 'auth.authToken.info.validUntil': 'Valid until {{expiration}}', - 'auth.authToken.info.leftTime': 'Left Time', - - 'auth.clearHistories': 'Clear Histories', - - 'actions': 'Actions', - 'use': 'Use', - 'delete': 'Remove', - 'ok': 'OK', - 'cancel': 'Cancel', - 'close': 'Close', - - 'auth.removeAK.title': 'Remove AK', - 'auth.removeAK.message': 'Remove AK:{{id}}, Are you sure?', - - 'auth.clearAKHistories.title': 'Clear AK Histories', - 'auth.clearAKHistories.message': 'Are you sure?', - 'auth.clearAKHistories.successMessage': 'All AK Histories has been clear', - - 'storageClassesType.standard': 'Standard', - 'storageClassesType.ia': 'IA', - 'storageClassesType.archive': 'Archive', - - 'aclType.default': 'Inherit From Bucket', - 'aclType.public-read-write': 'Public Read and Write', - 'aclType.public-read': 'Public Read', - 'aclType.private': 'Private', - - 'files': 'Files', - 'settings': 'Settings', - 'about': 'About', - 'bookmarks': 'Bookmarks', - 'logout': 'Logout', - 'logout.message': 'Are you sure you want to logout?', - 'main.upgration': 'Release Notes', - 'tempCert': 'Temp Cert', - 'setup.success': 'Set up successfully', - 'forbidden': 'You cannot move the selected objects to the current path or across region', - 'settings.log': 'Log Settings', - 'settings.console': 'Debug panel', - 'settings.console.msg': 'Open debug', - 'settings.file': "Local log", - 'settings.file.msg': "Log in local storage", - 'settings.file.info': "local info file log ", - 'settings.file.info.msg': "put info log file in local ?", - 'settings.connectTimeout':'overtime(ms)', - 'settings.uploadPartSize':'uploadpart size(M)', - 'settings.downloadConcurrecyPartSize':'download concurrency part number', - 'settings.uploadAndDownloadRetryTimes': 'retry times', - - //address bar - 'backward': 'Backward', - 'forward': 'Forward', - 'goUp': 'Go up', - 'refresh': 'Refresh', - 'home': 'Home', - 'saveAsHome': 'Set Home Page', - 'saveToFav': 'Save To Bookmarks', - 'saveAsHome.success': 'Set home page success', - - 'bookmark.remove.success': 'Remove Bookmark success', - 'bookmark.add.error1': 'Add Bookmark failed: Exceeds the maximum limit', - 'bookmark.add.success': 'Add Bookmark success', + "app.name": "OSS Browser", + language: "Language", + name: "Name", + type: "Type", + customize: "Customize", + "public.cloud": "Public Cloud", + + "region.oss-cn-hangzhou": "East China 1(Hangzhou)", + "region.oss-cn-shanghai": "East China 2(Shanghai)", + "region.oss-cn-qingdao": "North China 1(Qingdao)", + "region.oss-cn-beijing": "North China 2(Beijing)", + "region.oss-cn-zhangjiakou": "North China 3(Zhangjiakou)", + "region.oss-cn-huhehaote": "North China 5(Huhehaote)", + "region.oss-cn-shenzhen": "South China 1(Shenzhen)", + "region.oss-cn-heyuan": "South China 2(Heyuan)", + "region.oss-cn-chengdu": "Southwest China 1(Chengdu)", + "region.oss-cn-hongkong": "Hongkong", + + "region.oss-ap-southeast-1": "Asia Pacific Southeast 1(Singapore)", + "region.oss-ap-southeast-2": "Asia Pacific Southeast 2(Sydney)", + "region.oss-ap-southeast-3": "Asia Pacific Southeast 3(Kuala Lumpur)", + "region.oss-ap-southeast-5": "Asia Pacific Southeast 5(Jakarta)", + "region.oss-ap-northeast-1": "Asia Pacific Northeast 1(Tokyo)", + "region.oss-ap-south-1": "Asia Pacific South 1(Mumbai)", + + "region.oss-us-west-1": "Western US 1(Silicon Valley)", + "region.oss-us-east-1": "Eastern US 1(Virginia)", + "region.oss-eu-central-1": "Central Europe 1(Frankfurt)", + "region.oss-me-east-1": "Middle East East 1(Dubai)", + "region.oss-eu-west-1": "England (LonDon)", + + optional: "Optional", + default: "Default", + "auth.akLogin": "AK Login", + "auth.tokenLogin": "Token Login", + "auth.presetOssPath": "Preset OSS Path", + "auth.presetOssPath.placeholder": "Optional, format: oss://bucket/key/", + "auth.id.placeholder": "AccessKeyId", + "auth.secret.placeholder": "AccessKeySecret", + "auth.stoken.placeholder": "STS Token", + "auth.eptpl": "Endpoint Template", + "auth.eptpl.placeholder": "Default: http://{region}.aliyuncs.com", + + "auth.eptpl.popup.msg1": + "For Public Cloud, you can directly use the default settings", + "auth.eptpl.popup.msg2": + "For Private Cloud, Please enter a custom Endpoint, such as:", + + "auth.presetOssPath.popup.msg1": + 'The current AK that has all Bucket rights does not need to set the "Preset OSS Path"', + "auth.presetOssPath.popup.msg2": + 'The current AK only has the permissions of a Bucket or a certain path under a Bucket, you need to set the "Preset OSS Path"', + + "auth.remember.popup.msg1": + 'Check "Remember" to save the AK. When you login again, click AK History to select the key to log in. You do not need to enter AK manually. Please do not check it on a temporary computer!', + + region: "Region", + requestPay: "request payer", + "requestpay.popup.msg": + "If your authorized bucket opens the request payer mode and you are not the owner of the bucket, you should check the 'Request Payer Mode'. The amount of traffic, requests, etc. that you generate when you visit the bucket will be paid by you. For details, please refer to the help documentation.", + "auth.region.placeholder": "Optional", + "auth.description": "Description", + "auth.description.placeholder": "Optional, Up to 30 words", + "auth.remember": "Remember", + "auth.login": "Login", + "auth.akHistories": "AK Histories", + "auth.secure": "HTTPS encryption", + "auth.keepLoggedIn": "Keep me logged in", + + "auth.authToken": "Auth-Token", + "auth.authToken.tooltip": "View document", + "auth.authToken.placeholder": "Please enter the authorization token", + "auth.authToken.error.invalid": "Please enter a valid authorization token", + "auth.authToken.error.expired": "The authorization token has expired", + "auth.authToken.info.validUntil": "Valid until {{expiration}}", + "auth.authToken.info.leftTime": "Left Time", + + "auth.clearHistories": "Clear Histories", + + actions: "Actions", + use: "Use", + delete: "Remove", + ok: "OK", + cancel: "Cancel", + close: "Close", + + "auth.removeAK.title": "Remove AK", + "auth.removeAK.message": "Remove AK:{{id}}, Are you sure?", + + "auth.clearAKHistories.title": "Clear AK Histories", + "auth.clearAKHistories.message": "Are you sure?", + "auth.clearAKHistories.successMessage": "All AK Histories has been clear", + + "storageClassesType.standard": "Standard", + "storageClassesType.ia": "IA", + "storageClassesType.archive": "Archive", + + "aclType.default": "Inherit From Bucket", + "aclType.public-read-write": "Public Read and Write", + "aclType.public-read": "Public Read", + "aclType.private": "Private", + + files: "Files", + settings: "Settings", + about: "About", + bookmarks: "Bookmarks", + logout: "Logout", + "logout.message": "Are you sure you want to logout?", + "main.upgration": "Release Notes", + tempCert: "Temp Cert", + "setup.success": "Set up successfully", + forbidden: + "You cannot move the selected objects to the current path or across region", + "settings.log": "Log Settings", + "settings.console": "Debug panel", + "settings.console.msg": "Open debug", + "settings.file": "Local log", + "settings.file.msg": "Log in local storage", + "settings.file.info": "local info file log ", + "settings.file.info.msg": "put info log file in local ?", + "settings.connectTimeout": "overtime(ms)", + "settings.uploadPartSize": "uploadpart size(M)", + "settings.downloadConcurrecyPartSize": "download concurrency part number", + "settings.uploadAndDownloadRetryTimes": "retry times", + + //address bar + backward: "Backward", + forward: "Forward", + goUp: "Go up", + refresh: "Refresh", + home: "Home", + saveAsHome: "Set Home Page", + saveToFav: "Save To Bookmarks", + "saveAsHome.success": "Set home page success", + + "bookmark.remove.success": "Remove Bookmark success", + "bookmark.add.error1": "Add Bookmark failed: Exceeds the maximum limit", + "bookmark.add.success": "Add Bookmark success", //bucket - 'bucket.add': 'Create Bucket', - 'bucket.multipart': 'MultiPart', - 'acl': 'ACL', - 'privilege': 'Privilege', - 'simplePolicy': 'Simple Policy', - 'more': 'More', - 'bucket.name': 'Bucket Name', - 'creationTime': 'Creation Time', - 'bucket.add.name.invalid': 'The Bucket name is invalid!', - 'acl.warn-not-private.public-read': 'If your bucket ACL is public read anyone can access your bucket without prior authentication. We recommend that you set the Bucket ACL to Private. Exercise caution when setting bucket ACLs.', - 'acl.warn-not-private.public-read-write': 'If your bucket ACL is public read/write anyone can access your bucket without prior authentication. We recommend that you set the Bucket ACL to Private. Exercise caution when setting bucket ACLs.', - - 'multipart.management': 'Multipart', - 'multipart.description': 'Manage events and fragments that are generated during the multipipart (upload) process.', - 'multipart.description.tooltip': 'That is, the Multipart Upload that has been initialized but not the Complete or Abort\'s Multipart Upload event', - - 'select.all': "Select All", - 'delete.selected': "Delete selected", - 'delete.all': "Delete All", - - 'initiatedTime': "Initiated Time", - - 'loading': 'Loading...', - 'nodata': 'No data', - - 'delete.multiparts.title': 'Delete multiparts', - 'delete.multiparts.message': 'Are you sure you want to delete {{num}} multiparts?', - 'delete.multiparts.on': 'Deleting...', - 'delete.multiparts.success': 'Deleted multiparts successfully', - - 'bucketACL.update': 'Update Bucket ACL', - 'bucketACL.update.success': 'Update successfully', - - 'bucket.add.success': 'Created successfully', - - 'bucket.delete.title': 'Delete Bucket', - 'bucket.delete.message': 'Bucket Name:{{name}}, Region:{{region}}, Are you sure you want to delete this bucket?', - 'bucket.delete.success': 'Deleted Bucket Successfully', - - 'simplePolicy.title': 'Simplify policy authorization', - 'simplePolicy.lb1.1': 'Resources', - 'simplePolicy.lb1.2': 'Privileges', - 'privilege.readonly': 'ReadOnly', - 'privilege.readwrite': 'ReadWrite', - 'privilege.all': 'Master', - 'simplePolicy.lb3.1': 'View Policy', - 'simplePolicy.lb3.2': 'Collapse', - 'simplePolicy.lb4': 'Create policy, named', - - 'readonly': 'Read-Only', - 'readwrite': 'Read-Write', - - 'simplePolicy.lb5': 'And authorized to', - 'subusers': 'Sub User', - 'usergroups': 'User Group', - 'roles': 'Role', - - 'chooseone': 'Choose one', - - 'simplePolicy.ok': 'OK', - 'simplePolicy.noauth.message1': 'You are not authorized to get user list', - 'simplePolicy.noauth.message2': 'You are not authorized to get use group list', - 'simplePolicy.noauth.message3': 'You are not authorized to get role list', - 'simplePolicy.success': 'Apply policy successfully', + "bucket.add": "Create Bucket", + "bucket.multipart": "MultiPart", + acl: "ACL", + privilege: "Privilege", + simplePolicy: "Simple Policy", + more: "More", + "bucket.name": "Bucket Name", + creationTime: "Creation Time", + "bucket.add.name.invalid": "The Bucket name is invalid!", + "acl.warn-not-private.public-read": + "If your bucket ACL is public read anyone can access your bucket without prior authentication. We recommend that you set the Bucket ACL to Private. Exercise caution when setting bucket ACLs.", + "acl.warn-not-private.public-read-write": + "If your bucket ACL is public read/write anyone can access your bucket without prior authentication. We recommend that you set the Bucket ACL to Private. Exercise caution when setting bucket ACLs.", + + "multipart.management": "Multipart", + "multipart.description": + "Manage events and fragments that are generated during the multipipart (upload) process.", + "multipart.description.tooltip": + "That is, the Multipart Upload that has been initialized but not the Complete or Abort's Multipart Upload event", + + "select.all": "Select All", + "delete.selected": "Delete selected", + "delete.all": "Delete All", + + initiatedTime: "Initiated Time", + + loading: "Loading...", + nodata: "No data", + + "delete.multiparts.title": "Delete multiparts", + "delete.multiparts.message": + "Are you sure you want to delete {{num}} multiparts?", + "delete.multiparts.on": "Deleting...", + "delete.multiparts.success": "Deleted multiparts successfully", + + "bucketACL.update": "Update Bucket ACL", + "bucketACL.update.success": "Update successfully", + + "bucket.add.success": "Created successfully", + + "bucket.delete.title": "Delete Bucket", + "bucket.delete.message": + "Bucket Name:{{name}}, Region:{{region}}, Are you sure you want to delete this bucket?", + "bucket.delete.success": "Deleted Bucket Successfully", + + "simplePolicy.title": "Simplify policy authorization", + "simplePolicy.lb1.1": "Resources", + "simplePolicy.lb1.2": "Privileges", + "privilege.readonly": "ReadOnly", + "privilege.readwrite": "ReadWrite", + "privilege.all": "Master", + "simplePolicy.lb3.1": "View Policy", + "simplePolicy.lb3.2": "Collapse", + "simplePolicy.lb4": "Create policy, named", + + readonly: "Read-Only", + readwrite: "Read-Write", + + "simplePolicy.lb5": "And authorized to", + subusers: "Sub User", + usergroups: "User Group", + roles: "Role", + + chooseone: "Choose one", + + "simplePolicy.ok": "OK", + "simplePolicy.noauth.message1": "You are not authorized to get user list", + "simplePolicy.noauth.message2": + "You are not authorized to get use group list", + "simplePolicy.noauth.message3": "You are not authorized to get role list", + "simplePolicy.success": "Apply policy successfully", //settings - 'settings.maxUploadNum': 'Upload tasks concurrent number', - 'settings.maxDownloadNum': 'Download tasks concurrent number', - 'settings.WhetherShowThumbnail': 'Whether to show the image thumbnail', - 'settings.WhetherShowThumbnail.msg': 'Displaying thumbnails in the list of files will consume a certain amount of traffic', - 'settings.success': 'Saved successfully', - 'settings.autoUpgrade': 'Auto update', - 'settings.autoUpgrade.msg': 'Download update package automatically', + "settings.maxUploadNum": "Upload tasks concurrent number", + "settings.maxDownloadNum": "Download tasks concurrent number", + "settings.WhetherShowThumbnail": "Whether to show the image thumbnail", + "settings.WhetherShowThumbnail.msg": + "Displaying thumbnails in the list of files will consume a certain amount of traffic", + "settings.success": "Saved successfully", + "settings.autoUpgrade": "Auto update", + "settings.autoUpgrade.msg": "Download update package automatically", //bookmark - 'bookmarks.title': 'Bookmarks', - 'time': 'Time', - 'bookmarks.delete.success': 'Deleted bookmark successfully', + "bookmarks.title": "Bookmarks", + time: "Time", + "bookmarks.delete.success": "Deleted bookmark successfully", - 'opensource.address': 'Open source', - 'foundNewVersion': 'Found new version', - 'clickToDownload': 'Click to download', - 'currentIsLastest': 'This is the lastest version!', + "opensource.address": "Open source", + foundNewVersion: "Found new version", + clickToDownload: "Click to download", + currentIsLastest: "This is the lastest version!", //files - 'upload': 'Upload', - 'folder.create': 'Directory', - 'folder.create.success': 'Directory created successfully', - 'folder.name': "Name", - - 'download': 'Download', - 'copy': 'Copy', - 'move': 'Move', - 'paste': 'Paste', - 'rename': 'Rename', - 'getAddress': 'Address', - 'genAuthToken': 'Authorization Token', - - 'rename.to': 'Rename To', - 'whetherCover.title': 'Whether cover', - 'whetherCover.message1': 'Has the folder of the same name, is it covered?', - 'whetherCover.message2': 'Has the file of the same name already covered?', - 'rename.success': 'Rename successfully', - 'rename.on': 'Renaming...', - 'folder.in': 'Folder', - 'file': 'File', - 'folder': 'Folder', - - 'copy.on': 'Copying...', - 'move.on': 'Moving...', - - 'use.cancelled': 'Cancelled by user', - - 'copy.error1': 'Some files can not be copied', - 'move.error1': 'Some files can not be moved', - 'copy.success': 'Copied successfully', - 'move.success': 'Moved successfully', - - 'stop': 'Stop', - - 'paste.resources': 'Paste to current directory', - - 'copy.cancel': 'Cancel Copy', - 'move.cancel': 'Cancel Move', - - 'search.files.placeholder': 'Filter by name prefix', - - 'genAuthToken.title': 'Generate Authorization Token', - 'genAuthToken.message1.1': 'Authorize to Bucket', - 'genAuthToken.message1.2': 'Authorize to Folder', - 'genAuthToken.message2': 'Privilege', - - 'effective.duration': 'Effective duration', - 'unit.second': 's', - - 'genAuthToken.message3.1': 'You also need to specify a role', - 'genAuthToken.message3.2': 'This role requires at least {{privilege}} permission to access this {{type}}', - - 'genAuthToken.message4': 'Authorization Token', - 'genAuthToken.message5': 'Log in to the OSS browser using the generated authorization code above, You can get {{privilege}} permission to access this {{type}} [{{object}}], Valid until {{expiration}}.', - 'genAuthToken.message6.1': 'Generate', - 'genAuthToken.message6.2': 'Re-Generate', - - 'deleteModal.title': 'Delete These Files', - 'deleteModal.message1': 'The following directory or file will be deleted', - 'delete.on': 'Deleting...', - 'delete.success': 'Deleted successfully', - 'deleteModal.message2': 'Has been cancelled', - 'deleteModal.message3': 'Some directories or files can not be deleted', - - 'paste.message1': '{{action}} {{name}}... to this directory (The same file or directory will be covered)?', - - 'acl.update.title': 'Update ACL', - 'acl.update.success': 'ACL Updated successfully', - 'aclType.private.message': 'Private: All access to object needs to be authenticated', - 'aclType.public-read.message': 'Public read: need to write for the operation of the object authentication; object can be anonymous read', - 'aclType.public-read-write.message': 'Public read and write: Everyone can read and write objects', - - 'getAddress.title': 'Get Address', - 'address': 'Address', - 'getAddress.message': 'Please enter the validity period of the link', - 'generate': 'Generate', - 'qrcode.download': 'Sweep code to download', - - 'restore.checker.message1': 'Archive need to be restored in order to preview or download.', - 'restore.immediately': 'Restore immediately', - 'restore.checker.message2': 'The archive has been restored, the expiration time', - 'restore.onprogress': 'Archive file is recovering, please be patient ...', - 'restore.on': 'Sending...', - 'restore.success': 'Restore request has been send successfully', - 'restore.days': 'Days', - 'restore.message2': 'The expiration time', - 'restore.title': 'Restore', - 'restore.msg': 'Select the files that need to be restored', - 'restore': 'Restore', - - 'preview': 'Preview', - 'cannot.preview': 'Can not preview', - 'cannot.preview.this.file': 'Can not preview this file.', - 'tryto.open.as.textfile': 'Try to open as a text file', - 'preview.in.web.browser': 'Preview in web browser', - - 'save': 'Save', - 'size': 'Size', - 'filesize': 'File size', - 'codepreview.notsupport': 'This file can not be opening directly, please download to the local and then open.', - 'download.file': 'Download File', - - 'lastModifyTime': 'Last Modified', - 'loading.more': 'Loading more...', - - 'download.addtolist.on': 'Being added to the download queue', - 'download.addtolist.success': 'All added', - - 'upload.addtolist.on': 'Being added to the upload queue', - 'upload.addtolist.success': 'All added', - - 'transframe.search.placeholder': 'Filter by name or status', - 'ram.search.placeholder': 'Search by name or modified time', - - 'start.all': 'Start All', - 'pause.all': 'Stop All', - 'clear.finished': 'Clear Finished', - 'clear.all': 'Clear All', - - 'clear.all.title': 'Clear All', - 'clear.all.download.message': 'Are you sure you want to clear all download tasks?', - 'clear.all.upload.message': 'Are you sure you want to clear all upload tasks?', - - 'pause.on': 'Stopping...', - 'pause.success': 'Stopped successfully', - 'remove.from.list.title': 'Remove', - 'remove.from.list.message': 'Are you sure you want to remove this task?', - - 'status.running.uploading': 'Uploading', - 'status.running.downloading': 'Downloading', - 'status.running': 'Running', - 'status.stopped': 'Stopped', - 'status.failed': 'Failed', - 'status.finished': 'Finished', - 'status.waiting': 'Waiting', - 'status.retrying': 'Retrying', - 'status.retrytimes': 'Times', - 'status.verifying': 'Verifying', - - 'users': 'Sub Users', - 'users.title': 'Sub Users', - 'user.id': 'UserId', - 'displayName': 'Dislpay Name', - 'comments': 'Comments', - 'update': 'Update', - 'username': 'User Name', - 'details': 'Details', - 'add': 'Add', - 'mobilePhone': 'Mobile Phone', - 'ak': 'AccessKey', - 'aks': 'AccessKeys', - 'email': 'Email', - - 'user.delete.title': 'Delete User', - 'user.delete.message': 'Are you sure you want to delete this user: {{name}}?', - 'user.delete.on': 'Deleting...', - 'user.delete.success': 'Delete user successfully', - - 'status': 'Status', - 'accessKeySecret': 'AccessKeySecret', - 'createTime': 'Create Time', - - 'ak.status.update.title.Active': 'Disable AccessKey', - 'ak.status.update.title.Inactive': 'Enable AccessKey', - 'ak.status.update.message.Active': 'Are you sure you want to Disable this AccessKey?', - 'ak.status.update.message.Inactive': 'Are you sure you want to Enable this AccessKey?', - 'ak.delete.title': 'Delete AccessKey', - 'ak.delete.message': 'Are you sure you want to Delete this AccessKey', - - 'user.update.message.tip': 'Please make sure you have got AliyunRAMFullAccess permissions', - 'user.list.message.tip': 'Here we only provide the necessary user management functions, for further enhancements, please go to the RAM Console to operate:', - - 'status.Active': 'Active', - 'status.Inactive': 'Inactive', - 'enable': 'Enable', - 'disable': 'Disable', - 'show': 'Show', - 'can.not.get.accessKeySecret': 'Can not get AccessKeySecret', - - 'settings.subtitle.updown': 'Transfer Settings', - 'settings.subtitle.sys': 'System Settings', - 'settings.subtitle.email': 'Email Sending Settings', - 'settings.mailSmtp.addr': 'SMTP Address', - 'settings.mailSmtp.ssl': 'Use SSL', - 'settings.mailSmtp.from': 'Email(From)', - - 'user': 'UserName', - 'pass': 'Password', - 'test': 'Test', - - 'mail.test.title': 'Test mail', - 'mail.test.message': 'It will send the test message to: {{from}}', - 'mail.test.success': 'Sending successfully', - 'mail.send.on': 'Sending...', - - 'new.user': '[ Create One ]', - 'new.user.name': 'New User Name', - 'new.user.random.gen': 'Generate', - 'new.user.email.send': 'Email (to)', - 'new.user.email.noset': 'You need to set up mail sending configuration first', - 'new.user.email.noset.open': 'Open Settings Dialog', - - 'click.copy': 'Copy', - - 'http.headers': 'Http Headers', - 'key': 'Key', - 'value': 'Value', - 'userMetaData': 'User-defined Metadata', - - 'setting.on': 'Setting..', - 'setting.success': 'Setting successfully', - - 'send.to': 'Mail to', - 'send.email': 'Mail it', - 'send.now': 'Send', - 'file.download.address': 'file download address', - 'file.download.warning': 'If you have enabled the Referer whitelist for OSS Buckets and the Referer field cannot be left empty, you will not be able to access this URL directly through a browser.', - - 'copy.successfully': 'It has been copied to the clipboard', - 'click.download': 'click to download', - 'qrcode.download': 'scan qrcode to download', - - 'saving': 'Saving', - 'save.successfully': 'Saved', - 'content.isnot.modified': 'The content is not modified', - - 'logining': 'Logging in ...', - 'login.successfully': 'Login successful, jumping ...', - 'login.endpoint.error': 'Please make sure Endpoint is correct', - - 'upgrade.start': 'Upgrade', - 'upgrade.downloading': 'Start download...', - 'upgrade.download.field': 'Automatic update failed, please manually download the installation package.', - 'upgrade.download.success': 'Download successfully, install and restart', - - 'Insufficient disk space': 'Insufficient disk space', - - 'grant.email.title': 'OSS Browser Authorization', - 'grant.email.body.title': 'OSS Browser currently supports 2 ways to login, you can choose any one:', - - 'goto.create.role': 'Go to create a role', - -} + upload: "Upload", + "folder.create": "Directory", + "folder.create.success": "Directory created successfully", + "folder.name": "Name", + + download: "Download", + copy: "Copy", + move: "Move", + paste: "Paste", + rename: "Rename", + getAddress: "Address", + genAuthToken: "Authorization Token", + + "rename.to": "Rename To", + "whetherCover.title": "Whether cover", + "whetherCover.message1": "Has the folder of the same name, is it covered?", + "whetherCover.message2": "Has the file of the same name already covered?", + "rename.success": "Rename successfully", + "rename.on": "Renaming...", + "folder.in": "Folder", + file: "File", + folder: "Folder", + + "copy.on": "Copying...", + "move.on": "Moving...", + + "use.cancelled": "Cancelled by user", + + "copy.error1": "Some files can not be copied", + "move.error1": "Some files can not be moved", + "copy.success": "Copied successfully", + "move.success": "Moved successfully", + + stop: "Stop", + + "paste.resources": "Paste to current directory", + + "copy.cancel": "Cancel Copy", + "move.cancel": "Cancel Move", + + "search.files.placeholder": "Filter by name prefix", + + "genAuthToken.title": "Generate Authorization Token", + "genAuthToken.message1.1": "Authorize to Bucket", + "genAuthToken.message1.2": "Authorize to Folder", + "genAuthToken.message2": "Privilege", + + "effective.duration": "Effective duration", + "unit.second": "s", + + "genAuthToken.message3.1": "You also need to specify a role", + "genAuthToken.message3.2": + "This role requires at least {{privilege}} permission to access this {{type}}", + + "genAuthToken.message4": "Authorization Token", + "genAuthToken.message5": + "Log in to the OSS browser using the generated authorization code above, You can get {{privilege}} permission to access this {{type}} [{{object}}], Valid until {{expiration}}.", + "genAuthToken.message6.1": "Generate", + "genAuthToken.message6.2": "Re-Generate", + + "deleteModal.title": "Delete These Files", + "deleteModal.message1": "The following directory or file will be deleted", + "delete.on": "Deleting...", + "delete.success": "Deleted successfully", + "deleteModal.message2": "Has been cancelled", + "deleteModal.message3": "Some directories or files can not be deleted", + + "paste.message1": + '{{action}} {{name}}... to this directory (The same file or directory will be covered)?', + + "acl.update.title": "Update ACL", + "acl.update.success": "ACL Updated successfully", + "aclType.private.message": + "Private: All access to object needs to be authenticated", + "aclType.public-read.message": + "Public read: need to write for the operation of the object authentication; object can be anonymous read", + "aclType.public-read-write.message": + "Public read and write: Everyone can read and write objects", + + "getAddress.title": "Get Address", + address: "Address", + "getAddress.message": "Please enter the validity period of the link", + generate: "Generate", + "qrcode.download": "Sweep code to download", + + "restore.checker.message1": + "Archive need to be restored in order to preview or download.", + "restore.immediately": "Restore immediately", + "restore.checker.message2": + "The archive has been restored, the expiration time", + "restore.onprogress": "Archive file is recovering, please be patient ...", + "restore.on": "Sending...", + "restore.success": "Restore request has been send successfully", + "restore.days": "Days", + "restore.message2": "The expiration time", + "restore.title": "Restore", + "restore.msg": "Select the files that need to be restored", + restore: "Restore", + + preview: "Preview", + "cannot.preview": "Can not preview", + "cannot.preview.this.file": "Can not preview this file.", + "tryto.open.as.textfile": "Try to open as a text file", + "preview.in.web.browser": "Preview in web browser", + + save: "Save", + size: "Size", + filesize: "File size", + "codepreview.notsupport": + "This file can not be opening directly, please download to the local and then open.", + "download.file": "Download File", + + lastModifyTime: "Last Modified", + "loading.more": "Loading more...", + + "download.addtolist.on": "Being added to the download queue", + "download.addtolist.success": "All added", + + "upload.addtolist.on": "Being added to the upload queue", + "upload.addtolist.success": "All added", + + "transframe.search.placeholder": "Filter by name or status", + "ram.search.placeholder": "Search by name or modified time", + + "start.all": "Start All", + "pause.all": "Stop All", + "clear.finished": "Clear Finished", + "clear.all": "Clear All", + + "clear.all.title": "Clear All", + "clear.all.download.message": + "Are you sure you want to clear all download tasks?", + "clear.all.upload.message": + "Are you sure you want to clear all upload tasks?", + + "pause.on": "Stopping...", + "pause.success": "Stopped successfully", + "remove.from.list.title": "Remove", + "remove.from.list.message": "Are you sure you want to remove this task?", + + "status.running.uploading": "Uploading", + "status.running.downloading": "Downloading", + "status.running": "Running", + "status.stopped": "Stopped", + "status.failed": "Failed", + "status.finished": "Finished", + "status.waiting": "Waiting", + "status.retrying": "Retrying", + "status.retrytimes": "Times", + "status.verifying": "Verifying", + + users: "Sub Users", + "users.title": "Sub Users", + "user.id": "UserId", + displayName: "Dislpay Name", + comments: "Comments", + update: "Update", + username: "User Name", + details: "Details", + add: "Add", + mobilePhone: "Mobile Phone", + ak: "AccessKey", + aks: "AccessKeys", + email: "Email", + + "user.delete.title": "Delete User", + "user.delete.message": "Are you sure you want to delete this user: {{name}}?", + "user.delete.on": "Deleting...", + "user.delete.success": "Delete user successfully", + + status: "Status", + accessKeySecret: "AccessKeySecret", + createTime: "Create Time", + + "ak.status.update.title.Active": "Disable AccessKey", + "ak.status.update.title.Inactive": "Enable AccessKey", + "ak.status.update.message.Active": + "Are you sure you want to Disable this AccessKey?", + "ak.status.update.message.Inactive": + 'Are you sure you want to Enable this AccessKey?', + "ak.delete.title": "Delete AccessKey", + "ak.delete.message": + "Are you sure you want to Delete this AccessKey", + + "user.update.message.tip": + "Please make sure you have got AliyunRAMFullAccess permissions", + "user.list.message.tip": + "Here we only provide the necessary user management functions, for further enhancements, please go to the RAM Console to operate:", + + "status.Active": "Active", + "status.Inactive": "Inactive", + enable: "Enable", + disable: "Disable", + show: "Show", + "can.not.get.accessKeySecret": "Can not get AccessKeySecret", + + "settings.subtitle.updown": "Transfer Settings", + "settings.subtitle.sys": "System Settings", + "settings.subtitle.email": "Email Sending Settings", + "settings.mailSmtp.addr": "SMTP Address", + "settings.mailSmtp.ssl": "Use SSL", + "settings.mailSmtp.from": "Email(From)", + + user: "UserName", + pass: "Password", + test: "Test", + + "mail.test.title": "Test mail", + "mail.test.message": + 'It will send the test message to: {{from}}', + "mail.test.success": "Sending successfully", + "mail.send.on": "Sending...", + + "new.user": "[ Create One ]", + "new.user.name": "New User Name", + "new.user.random.gen": "Generate", + "new.user.email.send": "Email (to)", + "new.user.email.noset": "You need to set up mail sending configuration first", + "new.user.email.noset.open": "Open Settings Dialog", + + "click.copy": "Copy", + + "http.headers": "Http Headers", + key: "Key", + value: "Value", + userMetaData: "User-defined Metadata", + + "setting.on": "Setting..", + "setting.success": "Setting successfully", + + "send.to": "Mail to", + "send.email": "Mail it", + "send.now": "Send", + "file.download.address": "file download address", + "file.download.warning": + "If you have enabled the Referer whitelist for OSS Buckets and the Referer field cannot be left empty, you will not be able to access this URL directly through a browser.", + + "copy.successfully": "It has been copied to the clipboard", + "click.download": "click to download", + "qrcode.download": "scan qrcode to download", + + saving: "Saving", + "save.successfully": "Saved", + "content.isnot.modified": "The content is not modified", + + logining: "Logging in ...", + "login.successfully": "Login successful, jumping ...", + "login.endpoint.error": "Please make sure Endpoint is correct", + + "upgrade.start": "Upgrade", + "upgrade.downloading": "Start download...", + "upgrade.download.field": + "Automatic update failed, please manually download the installation package.", + "upgrade.download.success": "Download successfully, install and restart", + + "Insufficient disk space": "Insufficient disk space", + + "grant.email.title": "OSS Browser Authorization", + "grant.email.body.title": + "OSS Browser currently supports 2 ways to login, you can choose any one:", + + "goto.create.role": "Go to create a role", +}; diff --git a/node/i18n/ja-JP.js b/node/i18n/ja-JP.js index 16404c68..2568a3c4 100644 --- a/node/i18n/ja-JP.js +++ b/node/i18n/ja-JP.js @@ -1,462 +1,501 @@ module.exports = { - 'app.name': 'OSSブラウザ', - 'language': '言語', - 'name': '名前', - 'type': 'タイプ', - 'customize': 'カスタマイズ', - 'public.cloud': 'パブリッククラウド', - - 'region.oss-cn-hangzhou': '杭州 (中国東部 1)', - 'region.oss-cn-shanghai': '上海 (中国東部 2)', - 'region.oss-cn-qingdao': '青島 (中国北部 1)', - 'region.oss-cn-beijing': '北京 (中国北部 2)', - 'region.oss-cn-zhangjiakou': '張家口 (中国北部 3)', - 'region.oss-cn-huhehaote': 'フフホト (中国北部 5)', - 'region.oss-cn-shenzhen': '深セン (中国南部 1)', - 'region.oss-cn-heyuan': '河源(中国南部 2)', - 'region.oss-cn-chengdu': '成都(中国西部 1)', - 'region.oss-cn-hongkong': '香港', - - 'region.oss-ap-southeast-1': 'アジア東南 1 (シンガポール)', - 'region.oss-ap-southeast-2': 'アジア東南 2 (シドニー)', - 'region.oss-ap-southeast-3': 'アジア東南 3 (クアラルンプール)', - 'region.oss-ap-southeast-5': 'アジア東南 5 (ジャカルタ)', - 'region.oss-ap-northeast-1': 'アジア東北 1 (日本)', - 'region.oss-ap-south-1': 'アジア南部 1 (ムンバイ)', - - 'region.oss-us-west-1': 'シリコンバレー (米国西部 1)', - 'region.oss-us-east-1': 'バージニア (米国東部 1)', - 'region.oss-eu-central-1': 'フランクフルト (ドイツ)', - 'region.oss-me-east-1': 'ドバイ (UAE)', - 'region.oss-eu-west-1': 'イングランド (ロンドン)', - - 'optional': 'オプション', - 'default': 'デフォルト', - 'auth.akLogin': 'AK ログイン', - 'auth.tokenLogin': 'トークンログイン', - 'auth.presetOssPath': 'プリセット OSS パス', - 'auth.presetOssPath.placeholder': 'オプション, 形式: oss://bucket/key/', - 'auth.id.placeholder': 'AccessKeyId', - 'auth.secret.placeholder': 'AccessKeySecret', - 'auth.stoken.placeholder': 'STS トークン', - 'auth.eptpl': 'エンドポイントテンプレート', - 'auth.eptpl.placeholder': 'デフォルト: http://{region}.aliyuncs.com', - - 'auth.eptpl.popup.msg1': 'パブリッククラウドの場合は、デフォルト設定をそのまま使用できます', - 'auth.eptpl.popup.msg2': 'プライベートクラウドの場合は、次のようなカスタムエンドポイントを入力してください:', - - 'auth.presetOssPath.popup.msg1': '現在使用されている AK には、すべてのバケットのアクセス権があるので、[プリセット OSS パス] を設定する必要はありません。', - 'auth.presetOssPath.popup.msg2': '現在使用されている AK は、特定バケットまたはバケット配下の特定パスに対するアクセス権しかないので、[プリセット OSS パス] を設定する必要があります', - - 'auth.remember.popup.msg1': 'AK を保存するには、 [入力情報の保存] チェックボックスをチェックします。次にログインするときは、[AK 履歴] をクリックしてログインするキーを選択します。AK を手動で入力する必要はありません。 一時的に使用するコンピューターの場合、これをチェックしないでください', - - 'region': 'リージョン', - 'requestPay':"request payer", - 'requestpay.popup.msg': 'あなたの許可されたバケットが要求支払人モードを開き、あなたがそのバケットの所有者ではない場合、あなたは「要求支払人モード」をチェックするべきです。 あなたがバケツを訪れたときにあなたが生み出すトラフィックやリクエストなどの量はあなたによって支払われるでしょう。詳細については、ヘルプドキュメントを参照してください', - 'auth.region.placeholder': 'オプション', - 'auth.description': '説明', - 'auth.description.placeholder': 'オプション、最大 30 文字', - 'auth.remember': '入力情報の保存', - 'auth.login': 'ログイン', - 'auth.akHistories': 'AK 履歴', - 'auth.secure': 'HTTPS暗号化', - - 'auth.authToken': '認証トークン', - 'auth.authToken.tooltip': 'ドキュメントの表示', - 'auth.authToken.placeholder': '認証トークンを入力してください', - 'auth.authToken.error.invalid': '有効な認証トークンを入力してください', - 'auth.authToken.error.expired': '認証トークンは期限切れです', - 'auth.authToken.info.validUntil': '{{expiration}} まで有効です。', - 'auth.authToken.info.leftTime': '残り時間', - - 'auth.clearHistories': 'AK 履歴の削除', - - 'actions': 'アクション', - 'use': '利用', - 'delete': '削除', - 'ok': 'OK', - 'cancel': 'キャンセル', - 'close': 'クローズ', - - 'auth.removeAK.title': 'AK の削除', - 'auth.removeAK.message': 'AK {{id}} を削除してもよろしいですか。', - - 'auth.clearAKHistories.title': 'AK 履歴の削除', - 'auth.clearAKHistories.message': '削除してもよろしいですか。', - 'auth.clearAKHistories.successMessage': 'AK 履歴は完全に削除されました。', - - 'storageClassesType.standard': '標準', - 'storageClassesType.ia': '低頻度アクセス', - 'storageClassesType.archive': 'アーカイブ', - - 'aclType.default': 'バケットから継承', - 'aclType.public-read-write': '公開読み書き', - 'aclType.public-read': '公開読み取り', - 'aclType.private': '非公開', - - 'files': 'ファイル', - 'settings': '設定', - 'about': 'バージョン情報', - 'bookmarks': 'ブックマーク', - 'logout': 'ログアウト', - 'logout.message': 'ログアウトしてもよろしいですか。', - 'main.upgration': 'リリースノート', - 'tempCert': '一時認証', - 'setup.success': 'セットアップを完了しました', - 'forbidden': '選択したオブジェクトを現在のフォルダーまたは Region 間で移動することはできません', + "app.name": "OSSブラウザ", + language: "言語", + name: "名前", + type: "タイプ", + customize: "カスタマイズ", + "public.cloud": "パブリッククラウド", + + "region.oss-cn-hangzhou": "杭州 (中国東部 1)", + "region.oss-cn-shanghai": "上海 (中国東部 2)", + "region.oss-cn-qingdao": "青島 (中国北部 1)", + "region.oss-cn-beijing": "北京 (中国北部 2)", + "region.oss-cn-zhangjiakou": "張家口 (中国北部 3)", + "region.oss-cn-huhehaote": "フフホト (中国北部 5)", + "region.oss-cn-shenzhen": "深セン (中国南部 1)", + "region.oss-cn-heyuan": "河源(中国南部 2)", + "region.oss-cn-chengdu": "成都(中国西部 1)", + "region.oss-cn-hongkong": "香港", + + "region.oss-ap-southeast-1": "アジア東南 1 (シンガポール)", + "region.oss-ap-southeast-2": "アジア東南 2 (シドニー)", + "region.oss-ap-southeast-3": "アジア東南 3 (クアラルンプール)", + "region.oss-ap-southeast-5": "アジア東南 5 (ジャカルタ)", + "region.oss-ap-northeast-1": "アジア東北 1 (日本)", + "region.oss-ap-south-1": "アジア南部 1 (ムンバイ)", + + "region.oss-us-west-1": "シリコンバレー (米国西部 1)", + "region.oss-us-east-1": "バージニア (米国東部 1)", + "region.oss-eu-central-1": "フランクフルト (ドイツ)", + "region.oss-me-east-1": "ドバイ (UAE)", + "region.oss-eu-west-1": "イングランド (ロンドン)", + + optional: "オプション", + default: "デフォルト", + "auth.akLogin": "AK ログイン", + "auth.tokenLogin": "トークンログイン", + "auth.presetOssPath": "プリセット OSS パス", + "auth.presetOssPath.placeholder": "オプション, 形式: oss://bucket/key/", + "auth.id.placeholder": "AccessKeyId", + "auth.secret.placeholder": "AccessKeySecret", + "auth.stoken.placeholder": "STS トークン", + "auth.eptpl": "エンドポイントテンプレート", + "auth.eptpl.placeholder": "デフォルト: http://{region}.aliyuncs.com", + + "auth.eptpl.popup.msg1": + "パブリッククラウドの場合は、デフォルト設定をそのまま使用できます", + "auth.eptpl.popup.msg2": + "プライベートクラウドの場合は、次のようなカスタムエンドポイントを入力してください:", + + "auth.presetOssPath.popup.msg1": + "現在使用されている AK には、すべてのバケットのアクセス権があるので、[プリセット OSS パス] を設定する必要はありません。", + "auth.presetOssPath.popup.msg2": + "現在使用されている AK は、特定バケットまたはバケット配下の特定パスに対するアクセス権しかないので、[プリセット OSS パス] を設定する必要があります", + + "auth.remember.popup.msg1": + "AK を保存するには、 [入力情報の保存] チェックボックスをチェックします。次にログインするときは、[AK 履歴] をクリックしてログインするキーを選択します。AK を手動で入力する必要はありません。 一時的に使用するコンピューターの場合、これをチェックしないでください", + + region: "リージョン", + requestPay: "request payer", + "requestpay.popup.msg": + "あなたの許可されたバケットが要求支払人モードを開き、あなたがそのバケットの所有者ではない場合、あなたは「要求支払人モード」をチェックするべきです。 あなたがバケツを訪れたときにあなたが生み出すトラフィックやリクエストなどの量はあなたによって支払われるでしょう。詳細については、ヘルプドキュメントを参照してください", + "auth.region.placeholder": "オプション", + "auth.description": "説明", + "auth.description.placeholder": "オプション、最大 30 文字", + "auth.remember": "入力情報の保存", + "auth.login": "ログイン", + "auth.akHistories": "AK 履歴", + "auth.secure": "HTTPS暗号化", + "auth.keepLoggedIn": "ログインしたままにする", + + "auth.authToken": "認証トークン", + "auth.authToken.tooltip": "ドキュメントの表示", + "auth.authToken.placeholder": "認証トークンを入力してください", + "auth.authToken.error.invalid": "有効な認証トークンを入力してください", + "auth.authToken.error.expired": "認証トークンは期限切れです", + "auth.authToken.info.validUntil": "{{expiration}} まで有効です。", + "auth.authToken.info.leftTime": "残り時間", + + "auth.clearHistories": "AK 履歴の削除", + + actions: "アクション", + use: "利用", + delete: "削除", + ok: "OK", + cancel: "キャンセル", + close: "クローズ", + + "auth.removeAK.title": "AK の削除", + "auth.removeAK.message": + "AK {{id}} を削除してもよろしいですか。", + + "auth.clearAKHistories.title": "AK 履歴の削除", + "auth.clearAKHistories.message": "削除してもよろしいですか。", + "auth.clearAKHistories.successMessage": "AK 履歴は完全に削除されました。", + + "storageClassesType.standard": "標準", + "storageClassesType.ia": "低頻度アクセス", + "storageClassesType.archive": "アーカイブ", + + "aclType.default": "バケットから継承", + "aclType.public-read-write": "公開読み書き", + "aclType.public-read": "公開読み取り", + "aclType.private": "非公開", + + files: "ファイル", + settings: "設定", + about: "バージョン情報", + bookmarks: "ブックマーク", + logout: "ログアウト", + "logout.message": "ログアウトしてもよろしいですか。", + "main.upgration": "リリースノート", + tempCert: "一時認証", + "setup.success": "セットアップを完了しました", + forbidden: + "選択したオブジェクトを現在のフォルダーまたは Region 間で移動することはできません", //address bar - 'backward': '戻る', - 'forward': '進む', - 'goUp': '上がる', - 'refresh': '更新', - 'home': 'ホーム', - 'saveAsHome': 'ホームページに設定', - 'saveToFav': 'ブックマークに保存', - 'saveAsHome.success': 'ホームページに設定しました', - - 'bookmark.remove.success': 'ブックマークを削除しました', - 'bookmark.add.error1': 'ブックマークの追加に失敗しました: 個数の上限に達しました', - 'bookmark.add.success': 'ブックマークを追加しました', + backward: "戻る", + forward: "進む", + goUp: "上がる", + refresh: "更新", + home: "ホーム", + saveAsHome: "ホームページに設定", + saveToFav: "ブックマークに保存", + "saveAsHome.success": "ホームページに設定しました", + + "bookmark.remove.success": "ブックマークを削除しました", + "bookmark.add.error1": + "ブックマークの追加に失敗しました: 個数の上限に達しました", + "bookmark.add.success": "ブックマークを追加しました", //bucket - 'bucket.add': 'バケットの作成', - 'bucket.multipart': 'マルチパート', - 'acl': 'ACL', - 'privilege': '権限', - 'simplePolicy': 'シンプルポリシー', - 'more': '詳細', - 'bucket.name': 'バケット名', - 'creationTime': '作成日時', - 'bucket.add.name.invalid': 'バケット名が無効です!', - 'acl.warn-not-private.public-read': '公開読み取り権限は、匿名でバケット内のデータにアクセスでき、 セキュリティリスクが高くなるため、 非公開 (private) を推奨します。', - 'acl.warn-not-private.public-read-write': '公開読み書き権限は、匿名でバケット内のデータにアクセスでき、 セキュリティリスクが高くなるため、 非公開 (private) を推奨します。', - - 'multipart.management': 'マルチパート', - 'multipart.description': 'マルチパート (アップロード) プロセス中に生成されたイベントやフラグメントを管理します', - 'multipart.description.tooltip': 'つまり、初期化されたが、完了または中止のイベントが来ていないマルチパートアップロードです', - - 'select.all': "すべて選択", - 'delete.selected': "選択されたものを削除", - 'delete.all': "すべて削除", - - 'initiatedTime': "開始日時", - - 'loading': 'ロード中...', - 'nodata': 'データなし', - - 'delete.multiparts.title': 'マルチパートの削除', - 'delete.multiparts.message': '{{num}} 個のマルチパートを削除してもよろしいですか。', - 'delete.multiparts.on': '削除中...', - 'delete.multiparts.success': 'マルチパートを削除しました', - - 'bucketACL.update': 'バケット ACL の更新', - 'bucketACL.update.success': '更新を完了しました', - - 'bucket.add.success': '作成を完了しました', - - 'bucket.delete.title': 'バケットの削除', - 'bucket.delete.message': 'バケット名: {{name}}, リージョン: {{region}}, このバケットを削除してもよろしいですか。', - 'bucket.delete.success': 'バケットを削除しました', - - 'simplePolicy.title': 'ポリシー認証の簡略化', - 'simplePolicy.lb1.1': 'リソース', - 'simplePolicy.lb1.2': '権限', - 'privilege.readonly': '読み取り', - 'privilege.readwrite': '読み書き', - 'privilege.all': 'フルコントロール', - 'simplePolicy.lb3.1': 'ポリシーの表示', - 'simplePolicy.lb3.2': '圧縮', - 'simplePolicy.lb4': '名前付きポリシーの作成', - - 'readonly': 'Read-Only', - 'readwrite': 'Read-Write', - - 'simplePolicy.lb5': '許可', - 'subusers': 'サブユーザー', - 'usergroups': 'ユーザーグループ', - 'roles': 'ロール', - - 'chooseone': '一つを選んでください', - - 'simplePolicy.ok': 'OK', - 'simplePolicy.noauth.message1': 'ユーザーリストを取得する権限がありません', - 'simplePolicy.noauth.message2': 'ユーザーグループリストを取得する権限がありません', - 'simplePolicy.noauth.message3': 'ロールリストを取得する権限がありません', - 'simplePolicy.success': 'ポリシーを適用しました', + "bucket.add": "バケットの作成", + "bucket.multipart": "マルチパート", + acl: "ACL", + privilege: "権限", + simplePolicy: "シンプルポリシー", + more: "詳細", + "bucket.name": "バケット名", + creationTime: "作成日時", + "bucket.add.name.invalid": "バケット名が無効です!", + "acl.warn-not-private.public-read": + "公開読み取り権限は、匿名でバケット内のデータにアクセスでき、 セキュリティリスクが高くなるため、 非公開 (private) を推奨します。", + "acl.warn-not-private.public-read-write": + "公開読み書き権限は、匿名でバケット内のデータにアクセスでき、 セキュリティリスクが高くなるため、 非公開 (private) を推奨します。", + + "multipart.management": "マルチパート", + "multipart.description": + "マルチパート (アップロード) プロセス中に生成されたイベントやフラグメントを管理します", + "multipart.description.tooltip": + "つまり、初期化されたが、完了または中止のイベントが来ていないマルチパートアップロードです", + + "select.all": "すべて選択", + "delete.selected": "選択されたものを削除", + "delete.all": "すべて削除", + + initiatedTime: "開始日時", + + loading: "ロード中...", + nodata: "データなし", + + "delete.multiparts.title": "マルチパートの削除", + "delete.multiparts.message": + "{{num}} 個のマルチパートを削除してもよろしいですか。", + "delete.multiparts.on": "削除中...", + "delete.multiparts.success": "マルチパートを削除しました", + + "bucketACL.update": "バケット ACL の更新", + "bucketACL.update.success": "更新を完了しました", + + "bucket.add.success": "作成を完了しました", + + "bucket.delete.title": "バケットの削除", + "bucket.delete.message": + "バケット名: {{name}}, リージョン: {{region}}, このバケットを削除してもよろしいですか。", + "bucket.delete.success": "バケットを削除しました", + + "simplePolicy.title": "ポリシー認証の簡略化", + "simplePolicy.lb1.1": "リソース", + "simplePolicy.lb1.2": "権限", + "privilege.readonly": "読み取り", + "privilege.readwrite": "読み書き", + "privilege.all": "フルコントロール", + "simplePolicy.lb3.1": "ポリシーの表示", + "simplePolicy.lb3.2": "圧縮", + "simplePolicy.lb4": "名前付きポリシーの作成", + + readonly: "Read-Only", + readwrite: "Read-Write", + + "simplePolicy.lb5": "許可", + subusers: "サブユーザー", + usergroups: "ユーザーグループ", + roles: "ロール", + + chooseone: "一つを選んでください", + + "simplePolicy.ok": "OK", + "simplePolicy.noauth.message1": "ユーザーリストを取得する権限がありません", + "simplePolicy.noauth.message2": + "ユーザーグループリストを取得する権限がありません", + "simplePolicy.noauth.message3": "ロールリストを取得する権限がありません", + "simplePolicy.success": "ポリシーを適用しました", //settings - 'settings.maxUploadNum': 'アップロード並列タスク数', - 'settings.maxDownloadNum': 'ダウンロード並列タスク数', - 'settings.WhetherShowThumbnail': '画像をサムネイル表示', - 'settings.WhetherShowThumbnail.msg': 'ファイル一覧にサムネイルを表示すると一定量のトラフィックが消費されます', - 'settings.success': '保存を完了しました', - 'settings.autoUpgrade': '自動更新', - 'settings.autoUpgrade.msg': 'アップデートパッケージを自動的にダウンロードします', - 'settings.log': 'ログ設定', - 'settings.console': '試用パネル', - 'settings.console.msg': '調査を開く', - 'settings.file': "ローカルログファイル", - 'settings.file.msg': "ログファイルをシステムローカルに保存", - 'settings.file.info': "ローカルinfoログファイル", - 'settings.file.info.msg': "infoレベルのログを地元に預かるかどうか", - 'settings.connectTimeout':'タイムアウト(ms)', - 'settings.uploadPartSize':'スライスサイズ(M)', - 'settings.downloadConcurrecyPartSize':'ダウンロード数', - 'settings.uploadAndDownloadRetryTimes': '再試行回数', - - //bookmark - 'bookmarks.title': 'ブックマーク', - 'time': '時間', - 'bookmarks.delete.success': 'ブックマークを削除しました', - - 'opensource.address': 'オープンするソース', - 'foundNewVersion': '新しいバージョンがあります', - 'clickToDownload': 'クリックしてダウンロード', - 'currentIsLastest': 'これは最新バージョンです', + "settings.maxUploadNum": "アップロード並列タスク数", + "settings.maxDownloadNum": "ダウンロード並列タスク数", + "settings.WhetherShowThumbnail": "画像をサムネイル表示", + "settings.WhetherShowThumbnail.msg": + "ファイル一覧にサムネイルを表示すると一定量のトラフィックが消費されます", + "settings.success": "保存を完了しました", + "settings.autoUpgrade": "自動更新", + "settings.autoUpgrade.msg": + "アップデートパッケージを自動的にダウンロードします", + "settings.log": "ログ設定", + "settings.console": "試用パネル", + "settings.console.msg": "調査を開く", + "settings.file": "ローカルログファイル", + "settings.file.msg": "ログファイルをシステムローカルに保存", + "settings.file.info": "ローカルinfoログファイル", + "settings.file.info.msg": "infoレベルのログを地元に預かるかどうか", + "settings.connectTimeout": "タイムアウト(ms)", + "settings.uploadPartSize": "スライスサイズ(M)", + "settings.downloadConcurrecyPartSize": "ダウンロード数", + "settings.uploadAndDownloadRetryTimes": "再試行回数", + + //bookmark + "bookmarks.title": "ブックマーク", + time: "時間", + "bookmarks.delete.success": "ブックマークを削除しました", + + "opensource.address": "オープンするソース", + foundNewVersion: "新しいバージョンがあります", + clickToDownload: "クリックしてダウンロード", + currentIsLastest: "これは最新バージョンです", //files - 'upload': 'アップロード', - 'folder.create': '新しいディレクトリ', - 'folder.create.success': 'ディレクトリを作成しました', - 'folder.name': '名前', - - 'download': 'ダウンロード', - 'copy': 'コピー', - 'move': '移動', - 'paste': '貼り付け', - 'rename': '名前の変更', - 'getAddress': 'アドレスの取得', - 'genAuthToken': '認証トークン', - - 'rename.to': '新しい名前', - 'whetherCover.title': 'カバーの適用', - 'whetherCover.message1': '同じ名前のフォルダーをカバーされていますか', - 'whetherCover.message2': '同じ名前のファイルは既にカバーされていますか', - 'rename.success': '名前を変更しました', - 'rename.on': '名前を変更しています...', - 'folder.in': 'フォルダー', - 'file': 'ファイル', - 'folder': 'フォルダー', - - 'copy.on': 'コピー中...', - 'move.on': '移動中...', - - 'use.cancelled': 'ユーザーによりキャンセル', - - 'copy.error1': '一部のファイルをコピーできません', - 'move.error1': '一部のファイルを移動できません', - 'copy.success': 'コピーを完了しました', - 'move.success': '移動を完了しました', - - 'stop': '停止', - - 'paste.resources': '現在のディレクトリに貼り付け', - - 'copy.cancel': 'コピーのキャンセル', - 'move.cancel': '移動のキャンセル', - - 'search.files.placeholder': '名前プレフィックスでフィルタリング', - - 'genAuthToken.title': '認証トークンの生成', - 'genAuthToken.message1.1': '認証するバケット', - 'genAuthToken.message1.2': '認証するフォルダー', - 'genAuthToken.message2': '権限', - - 'effective.duration': '有効期間', - 'unit.second': '秒', - - 'genAuthToken.message3.1': 'ロール指定', - 'genAuthToken.message3.2': 'このロールは、この{{type}}のアクセスには少なくとも{{privilege}}権限が必要です', - - 'genAuthToken.message4': '認証トークン', - 'genAuthToken.message5': '上に生成された認証コードを使用して OSS ブラウザにログインすると、{{type}} [{{object}}] にアクセスする権限を得ることができます。{{expiration}} まで有効です。', - 'genAuthToken.message6.1': '生成', - 'genAuthToken.message6.2': '再生成', - - 'deleteModal.title': 'ファイルの削除', - 'deleteModal.message1': '次のディレクトリまたはファイルが削除されます', - 'delete.on': '削除中...', - 'delete.success': '削除を完了しました', - 'deleteModal.message2': 'キャンセルされました', - 'deleteModal.message3': 'いくつかのディレクトリやファイルは削除できません', - - 'paste.message1': '{{name}}... をこのディレクトリに{{action}}しますか (同名のファイルまたはディレクトリはカバーされます)', - - 'acl.update.title': 'ACL の更新', - 'acl.update.success': 'ACL を更新しました', - 'aclType.private.message': '非公開: オブジェクトに対するアクセスは認証が必要です', - 'aclType.public-read.message': '公開読み取り: オブジェクトに対する書き込みには認証が必要です。オブジェクトは誰でも読み取り可能です', - 'aclType.public-read-write.message': '公開読み書き: 誰でもオブジェクトを読み書き可能です', - - 'getAddress.title': 'アドレスの取得', - 'address': 'アドレス', - 'getAddress.message': 'リンクの有効期間を入力してください', - 'generate': '生成', - 'qrcode.download': 'コードをスキャンしダウンロード', - - 'restore.checker.message1': 'プレビューまたはダウンロードするためにアーカイブをリストアする必要があります。', - 'restore.immediately': 'すぐにリストア', - 'restore.checker.message2': 'アーカイブがリストアされました。有効期限', - 'restore.onprogress': 'アーカイブファイルを回復しています、しばらくお待ちください ...', - 'restore.on': '送信中...', - 'restore.success': 'リストアリクエストが送信されました', - 'restore.days': '日数', - 'restore.message2': '有効期限', - 'restore.title': 'リストア', - 'restore.msg': '復元する必要があるファイルを選択してください', - 'restore': 'リストア', - - 'preview': 'プレビュー', - 'cannot.preview': 'プレビューできません', - 'cannot.preview.this.file': 'このファイルをプレビューできません。', - 'tryto.open.as.textfile': 'テキストファイルとしてオープン', - 'preview.in.web.browser': 'ブラウザでプレビュー', - - 'save': '保存', - 'size': 'サイズ', - 'filesize': 'ファイルサイズ', - 'codepreview.notsupport': 'このファイルは直接オープンできません。ローカルにダウンロードしてからオープンしてください。', - 'download.file': 'ダウンロードファイル', - - 'lastModifyTime': '更新日時', - 'loading.more': 'もっと読み込んでいます...', - - 'download.addtolist.on': 'ダウンロードキューに追加中', - 'download.addtolist.success': 'すべて追加されました', - - 'upload.addtolist.on': 'アップロードキューに追加中', - 'upload.addtolist.success': 'すべて追加されました', - - 'transframe.search.placeholder': '名前またはステータスによるフィルタリング', - 'ram.search.placeholder': '名前や修正時間によって検索する', - - 'start.all': 'すべて開始', - 'pause.all': 'すべて停止', - 'clear.finished': 'クリア完了', - 'clear.all': 'すべてクリア', - - 'clear.all.title': 'すべてクリア', - 'clear.all.download.message': 'すべてのダウンロードタスクをクリアしてもよろしいですか。', - 'clear.all.upload.message': 'すべてのアップロードタスクをクリアしてもよろしいですか。', - - 'pause.on': '停止中...', - 'pause.success': '停止を完了しました', - 'remove.from.list.title': '削除', - 'remove.from.list.message': 'このタスクを削除してもよろしいですか。', - - 'status.running.uploading': 'アップロード中', - 'status.running.downloading': 'ダウンロード中', - 'status.running': '実行中', - 'status.stopped': '停止', - 'status.failed': '失敗', - 'status.finished': '完了', - 'status.waiting': '待機中', - 'status.retrying': 'やり直してみる', - 'status.retrytimes': '次', - 'status.verifying': '検証中', - - 'users': 'サブユーザー', - 'users.title': 'サブユーザー', - 'user.id': 'UserId', - 'displayName': '表示名', - 'comments': 'コメント', - 'update': '更新', - 'username': 'ユーザー名', - 'details': '詳細', - 'add': '追加', - 'mobilePhone': '携帯電話', - 'ak': 'AccessKey', - 'aks': 'AccessKeys', - 'email': 'Email', - - 'user.delete.title': 'ユーザーの削除', - 'user.delete.message': 'ユーザー {{name}} を削除してもよろしいですか。', - 'user.delete.on': '削除中...', - 'user.delete.success': '削除を完了しました', - - 'status': '状態', - 'accessKeySecret': 'AccessKeySecret', - 'createTime': '作成日時', - - 'ak.status.update.title.Active': 'AccessKey の無効化', - 'ak.status.update.title.Inactive': 'AccessKey の有効化', - 'ak.status.update.message.Active': 'このアクセスキーを無効化してもよろしいですか。', - 'ak.status.update.message.Inactive': 'このアクセスキーを有効化してもよろしいですか。', - 'ak.delete.title': 'AccessKey の削除', - 'ak.delete.message': 'このアクセスキーを削除してもよろしいですか。', - - 'user.update.message.tip': 'AliyunRAMFullAccess 権限を持っていることを確認してください', - 'user.list.message.tip': 'ここでは、必要なユーザー管理機能のみを提供しています。さらに拡張するには、RAM コンソールを操作してください:', - - 'status.Active': 'アクティブ', - 'status.Inactive': '非アクティブ', - 'enable': '有効化', - 'disable': '無効化', - 'show': '表示', - 'can.not.get.accessKeySecret': 'AccessKeySecret を取得できません', - - 'settings.subtitle.updown': '転送設定', - 'settings.subtitle.sys': 'システム設定', - 'settings.subtitle.email': 'メール送信設定', - 'settings.mailSmtp.addr': 'SMTP アドレス', - 'settings.mailSmtp.ssl': 'SSL を使用する', - 'settings.mailSmtp.from': 'メール (From)', - - 'user': 'ユーザ名', - 'pass': 'パスワード', - 'test': 'テスト', - - 'mail.test.title': 'テストメール', - 'mail.test.message': 'テストメッセージを {{from}} へ送信します', - 'mail.test.success': '送信を完了しました', - 'mail.send.on': '送信中...', - - 'new.user': '[一個作成]', - 'new.user.name': '新規ユーザー名', - 'new.user.random.gen': '生成', - 'new.user.email.send': 'メール (To)', - 'new.user.email.noset': '最初にメール送信を設定する必要があります', - 'new.user.email.noset.open': '設定ダイアログのオープン', - - 'click.copy': 'コピー', - - 'http.headers': 'HTTP ヘッダー', - 'key': 'Key', - 'value': 'Value', - 'userMetaData': 'ユーザー定義のメタデータ', - - 'setting.on': '設定中..', - 'setting.success': '設定を完了しました', - - 'send.to': '送信先', - 'send.email': 'メールする', - 'send.now': '送信', - 'file.download.address': 'ファイルダウンロードアドレス', - 'file.download.warning': 'OSS バケットのリファラリストを設定する際、ノーリファラを選択しなかった場合、ブラウザから直接 URL にアクセスすることはできません。', - - 'copy.successfully': 'クリップボードにコピー済みです', - 'click.download': 'クリックしてダウンロード', - 'qrcode.download': 'QR コードをスキャンしてダウンロード', - - - 'saving': '保存中', - 'save.successfully': '成功完了', - 'content.isnot.modified': '内容は変更されません', - - 'logining': 'ログイン中...', - 'login.successfully': 'ログイン完了、ジャンプ中...', - 'login.endpoint.error': 'エンドポイントが正しいことを確認してください', - - 'upgrade.start': '更新の開始', - 'upgrade.downloading': 'ダウンロード開始中...', - 'upgrade.download.field': '自動更新に失敗しました。インストールパッケージを手動でダウンロードしてください。', - 'upgrade.download.success': 'ダウンロードを完了しました。インストールして再起動してください', - - 'Insufficient disk space': 'ディスク容量不足', - - 'grant.email.title': 'OSSブラウザ認証', - 'grant.email.body.title': 'OSS ブラウザは現在 2 つのログイン方法をサポートしています。いずれかを選択できます:', - - 'goto.create.role': 'ロールの作成', -} + upload: "アップロード", + "folder.create": "新しいディレクトリ", + "folder.create.success": "ディレクトリを作成しました", + "folder.name": "名前", + + download: "ダウンロード", + copy: "コピー", + move: "移動", + paste: "貼り付け", + rename: "名前の変更", + getAddress: "アドレスの取得", + genAuthToken: "認証トークン", + + "rename.to": "新しい名前", + "whetherCover.title": "カバーの適用", + "whetherCover.message1": "同じ名前のフォルダーをカバーされていますか", + "whetherCover.message2": "同じ名前のファイルは既にカバーされていますか", + "rename.success": "名前を変更しました", + "rename.on": "名前を変更しています...", + "folder.in": "フォルダー", + file: "ファイル", + folder: "フォルダー", + + "copy.on": "コピー中...", + "move.on": "移動中...", + + "use.cancelled": "ユーザーによりキャンセル", + + "copy.error1": "一部のファイルをコピーできません", + "move.error1": "一部のファイルを移動できません", + "copy.success": "コピーを完了しました", + "move.success": "移動を完了しました", + + stop: "停止", + + "paste.resources": "現在のディレクトリに貼り付け", + + "copy.cancel": "コピーのキャンセル", + "move.cancel": "移動のキャンセル", + + "search.files.placeholder": "名前プレフィックスでフィルタリング", + + "genAuthToken.title": "認証トークンの生成", + "genAuthToken.message1.1": "認証するバケット", + "genAuthToken.message1.2": "認証するフォルダー", + "genAuthToken.message2": "権限", + + "effective.duration": "有効期間", + "unit.second": "秒", + + "genAuthToken.message3.1": "ロール指定", + "genAuthToken.message3.2": + "このロールは、この{{type}}のアクセスには少なくとも{{privilege}}権限が必要です", + + "genAuthToken.message4": "認証トークン", + "genAuthToken.message5": + "上に生成された認証コードを使用して OSS ブラウザにログインすると、{{type}} [{{object}}] にアクセスする権限を得ることができます。{{expiration}} まで有効です。", + "genAuthToken.message6.1": "生成", + "genAuthToken.message6.2": "再生成", + + "deleteModal.title": "ファイルの削除", + "deleteModal.message1": "次のディレクトリまたはファイルが削除されます", + "delete.on": "削除中...", + "delete.success": "削除を完了しました", + "deleteModal.message2": "キャンセルされました", + "deleteModal.message3": "いくつかのディレクトリやファイルは削除できません", + + "paste.message1": + '{{name}}... をこのディレクトリに{{action}}しますか (同名のファイルまたはディレクトリはカバーされます)', + + "acl.update.title": "ACL の更新", + "acl.update.success": "ACL を更新しました", + "aclType.private.message": + "非公開: オブジェクトに対するアクセスは認証が必要です", + "aclType.public-read.message": + "公開読み取り: オブジェクトに対する書き込みには認証が必要です。オブジェクトは誰でも読み取り可能です", + "aclType.public-read-write.message": + "公開読み書き: 誰でもオブジェクトを読み書き可能です", + + "getAddress.title": "アドレスの取得", + address: "アドレス", + "getAddress.message": "リンクの有効期間を入力してください", + generate: "生成", + "qrcode.download": "コードをスキャンしダウンロード", + + "restore.checker.message1": + "プレビューまたはダウンロードするためにアーカイブをリストアする必要があります。", + "restore.immediately": "すぐにリストア", + "restore.checker.message2": "アーカイブがリストアされました。有効期限", + "restore.onprogress": + "アーカイブファイルを回復しています、しばらくお待ちください ...", + "restore.on": "送信中...", + "restore.success": "リストアリクエストが送信されました", + "restore.days": "日数", + "restore.message2": "有効期限", + "restore.title": "リストア", + "restore.msg": "復元する必要があるファイルを選択してください", + restore: "リストア", + + preview: "プレビュー", + "cannot.preview": "プレビューできません", + "cannot.preview.this.file": "このファイルをプレビューできません。", + "tryto.open.as.textfile": "テキストファイルとしてオープン", + "preview.in.web.browser": "ブラウザでプレビュー", + + save: "保存", + size: "サイズ", + filesize: "ファイルサイズ", + "codepreview.notsupport": + "このファイルは直接オープンできません。ローカルにダウンロードしてからオープンしてください。", + "download.file": "ダウンロードファイル", + + lastModifyTime: "更新日時", + "loading.more": "もっと読み込んでいます...", + + "download.addtolist.on": "ダウンロードキューに追加中", + "download.addtolist.success": "すべて追加されました", + + "upload.addtolist.on": "アップロードキューに追加中", + "upload.addtolist.success": "すべて追加されました", + + "transframe.search.placeholder": "名前またはステータスによるフィルタリング", + "ram.search.placeholder": "名前や修正時間によって検索する", + + "start.all": "すべて開始", + "pause.all": "すべて停止", + "clear.finished": "クリア完了", + "clear.all": "すべてクリア", + + "clear.all.title": "すべてクリア", + "clear.all.download.message": + "すべてのダウンロードタスクをクリアしてもよろしいですか。", + "clear.all.upload.message": + "すべてのアップロードタスクをクリアしてもよろしいですか。", + + "pause.on": "停止中...", + "pause.success": "停止を完了しました", + "remove.from.list.title": "削除", + "remove.from.list.message": "このタスクを削除してもよろしいですか。", + + "status.running.uploading": "アップロード中", + "status.running.downloading": "ダウンロード中", + "status.running": "実行中", + "status.stopped": "停止", + "status.failed": "失敗", + "status.finished": "完了", + "status.waiting": "待機中", + "status.retrying": "やり直してみる", + "status.retrytimes": "次", + "status.verifying": "検証中", + + users: "サブユーザー", + "users.title": "サブユーザー", + "user.id": "UserId", + displayName: "表示名", + comments: "コメント", + update: "更新", + username: "ユーザー名", + details: "詳細", + add: "追加", + mobilePhone: "携帯電話", + ak: "AccessKey", + aks: "AccessKeys", + email: "Email", + + "user.delete.title": "ユーザーの削除", + "user.delete.message": "ユーザー {{name}} を削除してもよろしいですか。", + "user.delete.on": "削除中...", + "user.delete.success": "削除を完了しました", + + status: "状態", + accessKeySecret: "AccessKeySecret", + createTime: "作成日時", + + "ak.status.update.title.Active": "AccessKey の無効化", + "ak.status.update.title.Inactive": "AccessKey の有効化", + "ak.status.update.message.Active": + "このアクセスキーを無効化してもよろしいですか。", + "ak.status.update.message.Inactive": + 'このアクセスキーを有効化してもよろしいですか。', + "ak.delete.title": "AccessKey の削除", + "ak.delete.message": + "このアクセスキーを削除してもよろしいですか。", + + "user.update.message.tip": + "AliyunRAMFullAccess 権限を持っていることを確認してください", + "user.list.message.tip": + "ここでは、必要なユーザー管理機能のみを提供しています。さらに拡張するには、RAM コンソールを操作してください:", + + "status.Active": "アクティブ", + "status.Inactive": "非アクティブ", + enable: "有効化", + disable: "無効化", + show: "表示", + "can.not.get.accessKeySecret": "AccessKeySecret を取得できません", + + "settings.subtitle.updown": "転送設定", + "settings.subtitle.sys": "システム設定", + "settings.subtitle.email": "メール送信設定", + "settings.mailSmtp.addr": "SMTP アドレス", + "settings.mailSmtp.ssl": "SSL を使用する", + "settings.mailSmtp.from": "メール (From)", + + user: "ユーザ名", + pass: "パスワード", + test: "テスト", + + "mail.test.title": "テストメール", + "mail.test.message": + 'テストメッセージを {{from}} へ送信します', + "mail.test.success": "送信を完了しました", + "mail.send.on": "送信中...", + + "new.user": "[一個作成]", + "new.user.name": "新規ユーザー名", + "new.user.random.gen": "生成", + "new.user.email.send": "メール (To)", + "new.user.email.noset": "最初にメール送信を設定する必要があります", + "new.user.email.noset.open": "設定ダイアログのオープン", + + "click.copy": "コピー", + + "http.headers": "HTTP ヘッダー", + key: "Key", + value: "Value", + userMetaData: "ユーザー定義のメタデータ", + + "setting.on": "設定中..", + "setting.success": "設定を完了しました", + + "send.to": "送信先", + "send.email": "メールする", + "send.now": "送信", + "file.download.address": "ファイルダウンロードアドレス", + "file.download.warning": + "OSS バケットのリファラリストを設定する際、ノーリファラを選択しなかった場合、ブラウザから直接 URL にアクセスすることはできません。", + + "copy.successfully": "クリップボードにコピー済みです", + "click.download": "クリックしてダウンロード", + "qrcode.download": "QR コードをスキャンしてダウンロード", + + saving: "保存中", + "save.successfully": "成功完了", + "content.isnot.modified": "内容は変更されません", + + logining: "ログイン中...", + "login.successfully": "ログイン完了、ジャンプ中...", + "login.endpoint.error": "エンドポイントが正しいことを確認してください", + + "upgrade.start": "更新の開始", + "upgrade.downloading": "ダウンロード開始中...", + "upgrade.download.field": + "自動更新に失敗しました。インストールパッケージを手動でダウンロードしてください。", + "upgrade.download.success": + "ダウンロードを完了しました。インストールして再起動してください", + + "Insufficient disk space": "ディスク容量不足", + + "grant.email.title": "OSSブラウザ認証", + "grant.email.body.title": + "OSS ブラウザは現在 2 つのログイン方法をサポートしています。いずれかを選択できます:", + + "goto.create.role": "ロールの作成", +}; diff --git a/node/i18n/zh-CN.js b/node/i18n/zh-CN.js index bc49f066..cdb7ae51 100644 --- a/node/i18n/zh-CN.js +++ b/node/i18n/zh-CN.js @@ -1,461 +1,480 @@ module.exports = { - 'app.name': 'OSS浏览器', - 'language': '语言', - 'name': "名称", - 'type': '类型', - 'customize': '自定义', - 'public.cloud': '公共云', - - 'region.oss-cn-hangzhou': '华东1(杭州)', - 'region.oss-cn-shanghai': '华东2(上海)', - 'region.oss-cn-qingdao': '华北1(青岛)', - 'region.oss-cn-beijing': '华北2(北京)', - 'region.oss-cn-zhangjiakou': '华北3(张家口)', - 'region.oss-cn-huhehaote': '华北5(呼和浩特)', - 'region.oss-cn-shenzhen': '华南1(深圳)', - 'region.oss-cn-heyuan': '华南2(河源)', - 'region.oss-cn-chengdu': '西南1(成都)', - 'region.oss-cn-hongkong': '香港', - - 'region.oss-ap-southeast-1': '亚太东南1(新加坡)', - 'region.oss-ap-southeast-2': '亚太东南2(悉尼)', - 'region.oss-ap-southeast-3': '亚太东南3(吉隆坡)', - 'region.oss-ap-southeast-5': '亚太东南5(雅加达)', - 'region.oss-ap-northeast-1': '亚太东北1(东京)', - 'region.oss-ap-south-1': '亚太南部(孟买)', - - 'region.oss-us-west-1': '美国西部1(硅谷)', - 'region.oss-us-east-1': '美国东部1(弗吉尼亚)', - 'region.oss-eu-central-1': '欧洲中部1(法兰克福)', - 'region.oss-me-east-1': '中东东部1(迪拜)', - 'region.oss-eu-west-1': '英国 (伦敦)', - - - 'optional': '可选', - 'default': '默认', - 'auth.akLogin': 'AK登录', - 'auth.tokenLogin': '授权码登录', - 'auth.presetOssPath': '预设OSS路径', - 'auth.presetOssPath.placeholder': '可选,格式如: oss://bucket/key/', - 'auth.id.placeholder': '请输入AccessKeyId', - 'auth.secret.placeholder': '请输入AccessKeySecret', - 'auth.stoken.placeholder': '请输入STS Token', - 'auth.eptpl': 'Endpoint模板', - 'auth.eptpl.placeholder': '默认: http://{region}.aliyuncs.com', - - 'auth.eptpl.popup.msg1': '公共云直接使用默认即可', - 'auth.eptpl.popup.msg2': '专有云请输入自定义Endpoint,如:', - - 'auth.presetOssPath.popup.msg1': '大权限子账号登录: 当前使用的AK已拥有所有Bucket的权限,不需要设置"预设OSS路径"', - 'auth.presetOssPath.popup.msg2': '小权限子账号登录: 当前使用的AK只有某个Bucket或者Bucket下某个路径的权限,需要设置"预设OSS路径"', - - 'auth.remember.popup.msg1': '勾选"记住秘钥"可保存AK秘钥,再次登录时,单击AK历史,可选择该秘钥登录,不需要手动输入AK。请不要再临时使用的电脑上勾选!', - - 'region': '区域', - 'requestPay':"请求者付费模式", - 'requestpay.popup.msg':'如您获得授权的Bucket开启了请求付费者模式,且您不是该Bucket的拥有者,则需勾选`请求付费者模式`,其中,您访问该Bucket产生的流量、请求次数等费用, 将由您支付,详情参考帮助文档', - 'auth.region.placeholder': '可选', - 'auth.description': '备注', - 'auth.description.placeholder': '可以为空,最多30个字', - 'auth.remember': '记住秘钥', - 'auth.login': '登入', - 'auth.akHistories': 'AK历史', - 'auth.secure': 'HTTPS加密', - - 'auth.authToken': '授权码', - 'auth.authToken.tooltip': '点击查看帮助', - 'auth.authToken.placeholder': '请输入授权码', - 'auth.authToken.error.invalid': '请输入有效的授权码', - 'auth.authToken.error.expired': '授权码已经过期', - 'auth.authToken.info.validUntil': '有效期至{{expiration}}', - 'auth.authToken.info.leftTime': '剩余时间', - - 'auth.clearHistories': '清空历史', - - 'actions': '操作', - 'use': '使用', - 'delete': '删除', - 'ok': '确定', - 'cancel': '取消', - 'close': '关闭', - - 'auth.removeAK.title': '删除AK', - 'auth.removeAK.message': 'ID:{{id}}, 确定删除?', - - 'auth.clearAKHistories.title': '清空AK历史', - 'auth.clearAKHistories.message': '确定?', - 'auth.clearAKHistories.successMessage': '已清空AK历史', - - 'storageClassesType.standard': '标准类型', - 'storageClassesType.ia': '低频访问类型', - 'storageClassesType.archive': '归档存储', - - 'aclType.default': '继承Bucket', - 'aclType.public-read-write': '公共读写', - 'aclType.public-read': '公共读', - 'aclType.private': '私有', - - 'files': '文件', - 'settings': '设置', - 'about': '关于', - 'bookmarks': '书签管理', - 'logout': '退出', - 'logout.message': '确定要退出?', - 'main.upgration': '主要更新', - 'tempCert': '临时凭证', - 'setup.success': '已经设置成功', - 'forbidden': '不支持在当前路径或者跨Region移动', + "app.name": "OSS浏览器", + language: "语言", + name: "名称", + type: "类型", + customize: "自定义", + "public.cloud": "公共云", + + "region.oss-cn-hangzhou": "华东1(杭州)", + "region.oss-cn-shanghai": "华东2(上海)", + "region.oss-cn-qingdao": "华北1(青岛)", + "region.oss-cn-beijing": "华北2(北京)", + "region.oss-cn-zhangjiakou": "华北3(张家口)", + "region.oss-cn-huhehaote": "华北5(呼和浩特)", + "region.oss-cn-shenzhen": "华南1(深圳)", + "region.oss-cn-heyuan": "华南2(河源)", + "region.oss-cn-chengdu": "西南1(成都)", + "region.oss-cn-hongkong": "香港", + + "region.oss-ap-southeast-1": "亚太东南1(新加坡)", + "region.oss-ap-southeast-2": "亚太东南2(悉尼)", + "region.oss-ap-southeast-3": "亚太东南3(吉隆坡)", + "region.oss-ap-southeast-5": "亚太东南5(雅加达)", + "region.oss-ap-northeast-1": "亚太东北1(东京)", + "region.oss-ap-south-1": "亚太南部(孟买)", + + "region.oss-us-west-1": "美国西部1(硅谷)", + "region.oss-us-east-1": "美国东部1(弗吉尼亚)", + "region.oss-eu-central-1": "欧洲中部1(法兰克福)", + "region.oss-me-east-1": "中东东部1(迪拜)", + "region.oss-eu-west-1": "英国 (伦敦)", + + optional: "可选", + default: "默认", + "auth.akLogin": "AK登录", + "auth.tokenLogin": "授权码登录", + "auth.presetOssPath": "预设OSS路径", + "auth.presetOssPath.placeholder": "可选,格式如: oss://bucket/key/", + "auth.id.placeholder": "请输入AccessKeyId", + "auth.secret.placeholder": "请输入AccessKeySecret", + "auth.stoken.placeholder": "请输入STS Token", + "auth.eptpl": "Endpoint模板", + "auth.eptpl.placeholder": "默认: http://{region}.aliyuncs.com", + + "auth.eptpl.popup.msg1": "公共云直接使用默认即可", + "auth.eptpl.popup.msg2": "专有云请输入自定义Endpoint,如:", + + "auth.presetOssPath.popup.msg1": + '大权限子账号登录: 当前使用的AK已拥有所有Bucket的权限,不需要设置"预设OSS路径"', + "auth.presetOssPath.popup.msg2": + '小权限子账号登录: 当前使用的AK只有某个Bucket或者Bucket下某个路径的权限,需要设置"预设OSS路径"', + + "auth.remember.popup.msg1": + '勾选"记住秘钥"可保存AK秘钥,再次登录时,单击AK历史,可选择该秘钥登录,不需要手动输入AK。请不要再临时使用的电脑上勾选!', + + region: "区域", + requestPay: "请求者付费模式", + "requestpay.popup.msg": + "如您获得授权的Bucket开启了请求付费者模式,且您不是该Bucket的拥有者,则需勾选`请求付费者模式`,其中,您访问该Bucket产生的流量、请求次数等费用, 将由您支付,详情参考帮助文档", + "auth.region.placeholder": "可选", + "auth.description": "备注", + "auth.description.placeholder": "可以为空,最多30个字", + "auth.remember": "记住秘钥", + "auth.login": "登入", + "auth.akHistories": "AK历史", + "auth.secure": "HTTPS加密", + "auth.keepLoggedIn": "保持登录", + + "auth.authToken": "授权码", + "auth.authToken.tooltip": "点击查看帮助", + "auth.authToken.placeholder": "请输入授权码", + "auth.authToken.error.invalid": "请输入有效的授权码", + "auth.authToken.error.expired": "授权码已经过期", + "auth.authToken.info.validUntil": "有效期至{{expiration}}", + "auth.authToken.info.leftTime": "剩余时间", + + "auth.clearHistories": "清空历史", + + actions: "操作", + use: "使用", + delete: "删除", + ok: "确定", + cancel: "取消", + close: "关闭", + + "auth.removeAK.title": "删除AK", + "auth.removeAK.message": "ID:{{id}}, 确定删除?", + + "auth.clearAKHistories.title": "清空AK历史", + "auth.clearAKHistories.message": "确定?", + "auth.clearAKHistories.successMessage": "已清空AK历史", + + "storageClassesType.standard": "标准类型", + "storageClassesType.ia": "低频访问类型", + "storageClassesType.archive": "归档存储", + + "aclType.default": "继承Bucket", + "aclType.public-read-write": "公共读写", + "aclType.public-read": "公共读", + "aclType.private": "私有", + + files: "文件", + settings: "设置", + about: "关于", + bookmarks: "书签管理", + logout: "退出", + "logout.message": "确定要退出?", + "main.upgration": "主要更新", + tempCert: "临时凭证", + "setup.success": "已经设置成功", + forbidden: "不支持在当前路径或者跨Region移动", //address bar - 'backward': '后退', - 'forward': '前进', - 'goUp': '上一级', - 'refresh': '刷新', - 'home': '首页', - 'saveAsHome': '保存为首页', - 'saveToFav': '保存书签', - 'saveAsHome.success': '设置默认地址成功', - - 'bookmark.remove.success': '已删除书签', - 'bookmark.add.error1': '添加书签失败: 超过最大限制', - 'bookmark.add.success': '添加书签成功', + backward: "后退", + forward: "前进", + goUp: "上一级", + refresh: "刷新", + home: "首页", + saveAsHome: "保存为首页", + saveToFav: "保存书签", + "saveAsHome.success": "设置默认地址成功", + + "bookmark.remove.success": "已删除书签", + "bookmark.add.error1": "添加书签失败: 超过最大限制", + "bookmark.add.success": "添加书签成功", //bucket - 'bucket.add': '新建 Bucket', - 'bucket.multipart': '碎片', - 'acl': 'ACL权限', - 'privilege': '权限', - 'simplePolicy': '简化Policy授权', - 'more': '更多', - 'bucket.name': 'Bucket名称', - 'creationTime': '创建时间', - 'bucket.add.name.invalid': '您输入的Bucket名称无效', - 'acl.warn-not-private.public-read': '公共读(public-read)权限可以不通过身份验证直接读取您 Bucket 中的数据,安全风险高,为确保您的数据安全,不推荐此配置,建议您选择私有(private)。', - 'acl.warn-not-private.public-read-write': '公共读写(public-read-write)权限可以不通过身份验证直接读取您 Bucket 中的数据,安全风险高,为确保您的数据安全,不推荐此配置,建议您选择私有(private)。', - - 'multipart.management': 'Multipart管理', - 'multipart.description': '管理通过Multipart(分块)方式上传过程中产生的事件与碎片。', - 'multipart.description.tooltip': '即已经被初始化的Multipart Upload但是未被Complete或者Abort的Multipart Upload事件', - - 'select.all': "全选", - 'delete.selected': "删除所选", - 'delete.all': "删除所有", - - 'initiatedTime': "最初创建时间", - - 'loading': '正在载入...', - 'nodata': '没有数据', - - 'delete.multiparts.title': '删除碎片', - 'delete.multiparts.message': '删除{{num}}个碎片, 确定删除吗?', - 'delete.multiparts.on': '正在删除碎片...', - 'delete.multiparts.success': '删除碎片成功', - - 'bucketACL.update': '修改Bucket权限', - 'bucketACL.update.success': '修改Bucket权限成功', - - 'bucket.add.success': '创建Bucket成功', - - 'bucket.delete.title': '删除Bucket', - 'bucket.delete.message': 'Bucket名称:{{name}}, 所在区域:{{region}}, 确定删除?', - 'bucket.delete.success': '删除Bucket成功', - - 'simplePolicy.title': '简化Policy授权', - 'simplePolicy.lb1.1': '将下列资源', - 'simplePolicy.lb1.2': '的权限', - 'privilege.readonly': '只读', - 'privilege.readwrite': '读写', - 'privilege.all': '完全控制', - 'simplePolicy.lb3.1': '查看Policy', - 'simplePolicy.lb3.2': '隐藏Policy', - 'simplePolicy.lb4': '创建为policy,命名为', - - 'readonly': '只读', - 'readwrite': '可写', - - 'simplePolicy.lb5': '并授权给', - 'subusers': '子用户', - 'usergroups': '用户组', - 'roles': '角色', - - 'chooseone': '请选择', - - 'simplePolicy.ok': '确定授权', - 'simplePolicy.noauth.message1': '没有权限获取用户列表', - 'simplePolicy.noauth.message2': '没有权限获取用户组列表', - 'simplePolicy.noauth.message3': '没有权限获取角色列表', - 'simplePolicy.success': '应用policy成功', + "bucket.add": "新建 Bucket", + "bucket.multipart": "碎片", + acl: "ACL权限", + privilege: "权限", + simplePolicy: "简化Policy授权", + more: "更多", + "bucket.name": "Bucket名称", + creationTime: "创建时间", + "bucket.add.name.invalid": "您输入的Bucket名称无效", + "acl.warn-not-private.public-read": + "公共读(public-read)权限可以不通过身份验证直接读取您 Bucket 中的数据,安全风险高,为确保您的数据安全,不推荐此配置,建议您选择私有(private)。", + "acl.warn-not-private.public-read-write": + "公共读写(public-read-write)权限可以不通过身份验证直接读取您 Bucket 中的数据,安全风险高,为确保您的数据安全,不推荐此配置,建议您选择私有(private)。", + + "multipart.management": "Multipart管理", + "multipart.description": + "管理通过Multipart(分块)方式上传过程中产生的事件与碎片。", + "multipart.description.tooltip": + "即已经被初始化的Multipart Upload但是未被Complete或者Abort的Multipart Upload事件", + + "select.all": "全选", + "delete.selected": "删除所选", + "delete.all": "删除所有", + + initiatedTime: "最初创建时间", + + loading: "正在载入...", + nodata: "没有数据", + + "delete.multiparts.title": "删除碎片", + "delete.multiparts.message": "删除{{num}}个碎片, 确定删除吗?", + "delete.multiparts.on": "正在删除碎片...", + "delete.multiparts.success": "删除碎片成功", + + "bucketACL.update": "修改Bucket权限", + "bucketACL.update.success": "修改Bucket权限成功", + + "bucket.add.success": "创建Bucket成功", + + "bucket.delete.title": "删除Bucket", + "bucket.delete.message": + "Bucket名称:{{name}}, 所在区域:{{region}}, 确定删除?", + "bucket.delete.success": "删除Bucket成功", + + "simplePolicy.title": "简化Policy授权", + "simplePolicy.lb1.1": "将下列资源", + "simplePolicy.lb1.2": "的权限", + "privilege.readonly": "只读", + "privilege.readwrite": "读写", + "privilege.all": "完全控制", + "simplePolicy.lb3.1": "查看Policy", + "simplePolicy.lb3.2": "隐藏Policy", + "simplePolicy.lb4": "创建为policy,命名为", + + readonly: "只读", + readwrite: "可写", + + "simplePolicy.lb5": "并授权给", + subusers: "子用户", + usergroups: "用户组", + roles: "角色", + + chooseone: "请选择", + + "simplePolicy.ok": "确定授权", + "simplePolicy.noauth.message1": "没有权限获取用户列表", + "simplePolicy.noauth.message2": "没有权限获取用户组列表", + "simplePolicy.noauth.message3": "没有权限获取角色列表", + "simplePolicy.success": "应用policy成功", //settings - 'settings.maxUploadNum': '最大上传任务数', - 'settings.maxDownloadNum': '最大下载任务数', - 'settings.WhetherShowThumbnail': '是否显示图片缩略', - 'settings.WhetherShowThumbnail.msg': '在文件列表中显示图片缩略, 会消耗一定的流量', - 'settings.success': '已经保存设置', - 'settings.autoUpgrade': '自动更新', - 'settings.autoUpgrade.msg': '自动下载更新包', - 'settings.log': '日志设置', - 'settings.console': '调试面板', - 'settings.console.msg': '开启调试', - 'settings.file': "本地日志文件", - 'settings.file.msg': "日志文件存储到系统本地", - 'settings.file.info': "本地info日志文件", - 'settings.file.info.msg': "是否把info级别的日志存到本地", - 'settings.connectTimeout':'超时时间(ms)', - 'settings.uploadPartSize':'分片大小(M)', - 'settings.downloadConcurrecyPartSize':'并发分片下载数', - 'settings.uploadAndDownloadRetryTimes': '重试次数', - //bookmark - 'bookmarks.title': '书签管理', - 'time': '时间', - 'bookmarks.delete.success': '删除书签成功', - - 'opensource.address': '开源地址', - 'foundNewVersion': '发现新版本', - 'clickToDownload': '点此下载', - 'currentIsLastest': '当前是最新版本!', + "settings.maxUploadNum": "最大上传任务数", + "settings.maxDownloadNum": "最大下载任务数", + "settings.WhetherShowThumbnail": "是否显示图片缩略", + "settings.WhetherShowThumbnail.msg": + "在文件列表中显示图片缩略, 会消耗一定的流量", + "settings.success": "已经保存设置", + "settings.autoUpgrade": "自动更新", + "settings.autoUpgrade.msg": "自动下载更新包", + "settings.log": "日志设置", + "settings.console": "调试面板", + "settings.console.msg": "开启调试", + "settings.file": "本地日志文件", + "settings.file.msg": "日志文件存储到系统本地", + "settings.file.info": "本地info日志文件", + "settings.file.info.msg": "是否把info级别的日志存到本地", + "settings.connectTimeout": "超时时间(ms)", + "settings.uploadPartSize": "分片大小(M)", + "settings.downloadConcurrecyPartSize": "并发分片下载数", + "settings.uploadAndDownloadRetryTimes": "重试次数", + //bookmark + "bookmarks.title": "书签管理", + time: "时间", + "bookmarks.delete.success": "删除书签成功", + + "opensource.address": "开源地址", + foundNewVersion: "发现新版本", + clickToDownload: "点此下载", + currentIsLastest: "当前是最新版本!", //files - 'upload': '上传', - 'folder.create': '创建目录', - 'folder.create.success': '创建目录成功', - 'folder.name': '目录名', - - 'download': '下载', - 'copy': '复制', - 'move': '移动', - 'paste': '粘贴', - 'rename': '重命名', - 'getAddress': '获取地址', - 'genAuthToken': '生成授权码', - - 'rename.to': '重命名', - 'whetherCover.title': '是否覆盖', - 'whetherCover.message1': '已经有同名目录,是否覆盖?', - 'whetherCover.message2': '已经有同名文件,是否覆盖?', - 'rename.success': '重命名成功', - 'rename.on': '正在重命名...', - 'folder.in': '所在目录', - 'file': '文件', - 'folder': '目录', - - 'copy.on': '正在复制...', - 'move.on': '正在移动...', - - 'use.cancelled': '用户取消', - - 'copy.error1': '部分目录或文件无法复制', - 'move.error1': '部分目录或文件无法移动', - 'copy.success': '复制成功', - 'move.success': '移动成功', - - 'stop': '停止', - - 'paste.resources': '粘贴到本目录', - - 'copy.cancel': '取消复制', - 'move.cancel': '取消移动', - - 'search.files.placeholder': '按名称前缀过滤', - - 'genAuthToken.title': '生成授权码', - 'genAuthToken.message1.1': '授权给Bucket', - 'genAuthToken.message1.2': '授权给目录', - 'genAuthToken.message2': '的权限', - - 'effective.duration': '有效时长', - 'unit.second': '秒', - - 'genAuthToken.message3.1': '还需要指定一个角色', - 'genAuthToken.message3.2': '这个角色需要至少有这个{{type}}的{{privilege}}权限', - - 'genAuthToken.message4': '生成的授权码', - 'genAuthToken.message5': '使用上面生成的授权码登录OSS浏览器,可以达到只拥有[{{object}}]这个{{type}}的{{privilege}}权限的效果,有效期至{{expiration}}。', - 'genAuthToken.message6.1': '确定生成', - 'genAuthToken.message6.2': '重新生成', - - 'deleteModal.title': '删除目录和文件', - 'deleteModal.message1': '将删除以下目录或文件', - 'delete.on': '正在删除...', - 'delete.success': '删除成功', - 'deleteModal.message2': '用户取消删除', - 'deleteModal.message3': '部分目录或文件无法删除', - - 'paste.message1': '将 {{name}}等 {{action}} 到这个目录下面(如有相同的文件或目录则覆盖)?', - - 'acl.update.title': '设置ACL权限', - 'acl.update.success': '修改ACL权限成功', - 'aclType.private.message': '私有:对object的所有访问操作需要进行身份验证', - 'aclType.public-read.message': '公共读:对object写操作需要进行身份验证;可以对object进行匿名读', - 'aclType.public-read-write.message': '公共读写:所有人都可以对object进行读写操作', - - 'getAddress.title': '获取地址', - 'address': '地址', - 'getAddress.message': '请输入链接有效期', - 'generate': '生成', - 'qrcode.download': '扫码下载', - - 'restore.checker.message1': '归档文件,需要解冻才能预览或下载。', - 'restore.immediately': '立即解冻', - 'restore.checker.message2': '归档文件已解冻,可读截止时间', - 'restore.onprogress': '归档文件正在解冻中,请耐心等待...', - 'restore.on': '提交中...', - 'restore.success': '解冻请求已经提交', - 'restore.days': '解冻天数', - 'restore.message2': '可读截止时间', - 'restore.title': '解冻', - 'restore.msg': '选择需要解冻的文件', - 'restore': '解冻', - - 'preview': '预览', - 'cannot.preview': '无法预览', - 'cannot.preview.this.file': '该文件类型无法预览。', - 'tryto.open.as.textfile': '尝试作为文本文件打开', - 'preview.in.web.browser': '在浏览器中预览', - - 'save': '保存', - 'size': '大小', - 'filesize': '文件大小', - 'codepreview.notsupport': '不支持直接打开,请下载到本地后打开。', - 'download.file': '下载文件', - - 'lastModifyTime': '最后修改时间', - 'loading.more': '正在加载更多...', - - 'download.addtolist.on': '正在添加到下载队列', - 'download.addtolist.success': '已全部添加到下载队列', - - 'upload.addtolist.on': '正在添加到上传队列', - 'upload.addtolist.success': '已全部添加到上传队列', - - 'transframe.search.placeholder': '根据名称或状态搜索', - 'ram.search.placeholder': '根据名称或修改时间搜索', - - 'start.all': '启动全部', - 'pause.all': '暂停全部', - 'clear.finished': '清空已完成', - 'clear.all': '清空全部', - - 'clear.all.title': '清空全部', - 'clear.all.download.message': '确定清空所有下载任务?', - 'clear.all.upload.message': '确定清空所有上传任务?', - - 'pause.on': '正在暂停...', - 'pause.success': '暂停成功', - 'remove.from.list.title': '从列表中移除', - 'remove.from.list.message': '确定移除该任务?', - - 'status.running.uploading': '正在上传', - 'status.running.downloading': '正在下载', - 'status.running': '运行中', - 'status.stopped': '已停止', - 'status.failed': '失败', - 'status.finished': '完成', - 'status.waiting': '等待', - 'status.retrying': '重试中', - 'status.retrytimes': '次', - 'status.verifying': '正在校验', - - 'users': '子用户', - 'users.title': '子用户管理', - 'user.id': '用户ID', - 'displayName': '显示名', - 'comments': '描述', - 'update': '修改', - 'username': '用户名', - 'details': '详情', - 'add': '添加', - 'mobilePhone': '手机号', - 'ak': 'AccessKey', - 'aks': 'AccessKeys', - 'email': '邮箱', - - 'user.delete.title': '删除用户', - 'user.delete.message': '确定要删除[{{name}}]这个用户?', - 'user.delete.on': '正在删除...', - 'user.delete.success': '删除用户成功', - - 'status': '状态', - 'accessKeySecret': 'AccessKeySecret', - 'createTime': '创建时间', - - 'ak.status.update.title.Active': '禁用AccessKey', - 'ak.status.update.title.Inactive': '启用AccessKey', - 'ak.status.update.message.Active': '确定要禁用该AccessKey?', - 'ak.status.update.message.Inactive': '确定要启用该AccessKey?', - 'ak.delete.title': '删除AccessKey', - 'ak.delete.message': '确定要删除该AccessKey?', - - 'user.update.message.tip': '请自行确保当前操作登录用户需要有 AliyunRAMFullAccess 权限。', - 'user.list.message.tip': '这里只提供必要的用户管理功能,更进一步的增强功能,请到RAM控制台操作:', - - 'status.Active': '已启用', - 'status.Inactive': '已禁用', - 'enable': '启用', - 'disable': '禁用', - 'show': '显示', - 'can.not.get.accessKeySecret': '无法获取 AccessKeySecret', - - 'settings.subtitle.updown': '上传下载设置', - 'settings.subtitle.sys': '系统设置', - 'settings.subtitle.email': '邮件发送设置', - 'settings.mailSmtp.addr': 'SMTP地址', - 'settings.mailSmtp.ssl': '使用SSL', - 'settings.mailSmtp.from': '发送邮件的邮箱', - - 'user': '用户名', - 'pass': '密码', - 'test': '测试一下', - - 'mail.test.title': '测试邮件', - 'mail.test.message': '将发送测试邮件到: {{from}}', - 'mail.test.success': '邮件发送成功', - 'mail.send.on': '正在发送...', - - 'new.user': '[ 新建一个 ]', - 'new.user.name': '新用户名', - 'new.user.random.gen': '随机生成', - 'new.user.email.send': 'AK发送到邮件', - 'new.user.email.noset': '还没设置邮件发送配置,需要先设置', - 'new.user.email.noset.open': '打开设置', - - 'click.copy': '点击复制', - - 'http.headers': 'HTTP头', - 'key': '参数', - 'value': '值', - 'userMetaData': '用户自定义元数据', - - 'setting.on': '正在设置..', - 'setting.success': '设置成功', - - 'send.to': '发送到', - 'send.email': '发送邮件', - 'send.now': '立即发送', - 'file.download.address': '文件下载地址', - 'file.download.warning': '如果您设置了Referer 白名单且Referer不允许为空,则通过浏览器直接访问该URL会失败', - - 'copy.successfully': '已复制到剪贴板', - 'click.download': '点此下载', - 'qrcode.download': '扫码下载', - - 'saving': '正在保存', - 'save.successfully': '保存成功', - 'content.isnot.modified': '内容没有修改', - - 'logining': '正在登录中...', - 'login.successfully': '登录成功,正在跳转...', - 'login.endpoint.error': '请确定Endpoint是否正确', - - 'upgrade.start': '开始更新', - 'upgrade.downloading': '正在下载...', - 'upgrade.download.field': '自动更新失败, 请手动下载安装包。', - 'upgrade.download.success': '已经下载成功, 现在安装并重启应用', - - 'Insufficient disk space': '磁盘空间不足', - - 'grant.email.title': 'OSS Browser 授权', - 'grant.email.body.title': 'OSS Browser 目前支持2种方式登录, 您可以选择任意一种:', - - 'goto.create.role': '去创建角色', + upload: "上传", + "folder.create": "创建目录", + "folder.create.success": "创建目录成功", + "folder.name": "目录名", + + download: "下载", + copy: "复制", + move: "移动", + paste: "粘贴", + rename: "重命名", + getAddress: "获取地址", + genAuthToken: "生成授权码", + + "rename.to": "重命名", + "whetherCover.title": "是否覆盖", + "whetherCover.message1": "已经有同名目录,是否覆盖?", + "whetherCover.message2": "已经有同名文件,是否覆盖?", + "rename.success": "重命名成功", + "rename.on": "正在重命名...", + "folder.in": "所在目录", + file: "文件", + folder: "目录", + + "copy.on": "正在复制...", + "move.on": "正在移动...", + + "use.cancelled": "用户取消", + + "copy.error1": "部分目录或文件无法复制", + "move.error1": "部分目录或文件无法移动", + "copy.success": "复制成功", + "move.success": "移动成功", + + stop: "停止", + + "paste.resources": "粘贴到本目录", + + "copy.cancel": "取消复制", + "move.cancel": "取消移动", + + "search.files.placeholder": "按名称前缀过滤", + + "genAuthToken.title": "生成授权码", + "genAuthToken.message1.1": "授权给Bucket", + "genAuthToken.message1.2": "授权给目录", + "genAuthToken.message2": "的权限", + + "effective.duration": "有效时长", + "unit.second": "秒", + + "genAuthToken.message3.1": "还需要指定一个角色", + "genAuthToken.message3.2": + "这个角色需要至少有这个{{type}}的{{privilege}}权限", + + "genAuthToken.message4": "生成的授权码", + "genAuthToken.message5": + "使用上面生成的授权码登录OSS浏览器,可以达到只拥有[{{object}}]这个{{type}}的{{privilege}}权限的效果,有效期至{{expiration}}。", + "genAuthToken.message6.1": "确定生成", + "genAuthToken.message6.2": "重新生成", + + "deleteModal.title": "删除目录和文件", + "deleteModal.message1": "将删除以下目录或文件", + "delete.on": "正在删除...", + "delete.success": "删除成功", + "deleteModal.message2": "用户取消删除", + "deleteModal.message3": "部分目录或文件无法删除", + + "paste.message1": + '将 {{name}}等 {{action}} 到这个目录下面(如有相同的文件或目录则覆盖)?', + + "acl.update.title": "设置ACL权限", + "acl.update.success": "修改ACL权限成功", + "aclType.private.message": "私有:对object的所有访问操作需要进行身份验证", + "aclType.public-read.message": + "公共读:对object写操作需要进行身份验证;可以对object进行匿名读", + "aclType.public-read-write.message": + "公共读写:所有人都可以对object进行读写操作", + + "getAddress.title": "获取地址", + address: "地址", + "getAddress.message": "请输入链接有效期", + generate: "生成", + "qrcode.download": "扫码下载", + + "restore.checker.message1": "归档文件,需要解冻才能预览或下载。", + "restore.immediately": "立即解冻", + "restore.checker.message2": "归档文件已解冻,可读截止时间", + "restore.onprogress": "归档文件正在解冻中,请耐心等待...", + "restore.on": "提交中...", + "restore.success": "解冻请求已经提交", + "restore.days": "解冻天数", + "restore.message2": "可读截止时间", + "restore.title": "解冻", + "restore.msg": "选择需要解冻的文件", + restore: "解冻", + + preview: "预览", + "cannot.preview": "无法预览", + "cannot.preview.this.file": "该文件类型无法预览。", + "tryto.open.as.textfile": "尝试作为文本文件打开", + "preview.in.web.browser": "在浏览器中预览", + + save: "保存", + size: "大小", + filesize: "文件大小", + "codepreview.notsupport": "不支持直接打开,请下载到本地后打开。", + "download.file": "下载文件", + + lastModifyTime: "最后修改时间", + "loading.more": "正在加载更多...", + + "download.addtolist.on": "正在添加到下载队列", + "download.addtolist.success": "已全部添加到下载队列", + + "upload.addtolist.on": "正在添加到上传队列", + "upload.addtolist.success": "已全部添加到上传队列", + + "transframe.search.placeholder": "根据名称或状态搜索", + "ram.search.placeholder": "根据名称或修改时间搜索", + + "start.all": "启动全部", + "pause.all": "暂停全部", + "clear.finished": "清空已完成", + "clear.all": "清空全部", + + "clear.all.title": "清空全部", + "clear.all.download.message": "确定清空所有下载任务?", + "clear.all.upload.message": "确定清空所有上传任务?", + + "pause.on": "正在暂停...", + "pause.success": "暂停成功", + "remove.from.list.title": "从列表中移除", + "remove.from.list.message": "确定移除该任务?", + + "status.running.uploading": "正在上传", + "status.running.downloading": "正在下载", + "status.running": "运行中", + "status.stopped": "已停止", + "status.failed": "失败", + "status.finished": "完成", + "status.waiting": "等待", + "status.retrying": "重试中", + "status.retrytimes": "次", + "status.verifying": "正在校验", + + users: "子用户", + "users.title": "子用户管理", + "user.id": "用户ID", + displayName: "显示名", + comments: "描述", + update: "修改", + username: "用户名", + details: "详情", + add: "添加", + mobilePhone: "手机号", + ak: "AccessKey", + aks: "AccessKeys", + email: "邮箱", + + "user.delete.title": "删除用户", + "user.delete.message": "确定要删除[{{name}}]这个用户?", + "user.delete.on": "正在删除...", + "user.delete.success": "删除用户成功", + + status: "状态", + accessKeySecret: "AccessKeySecret", + createTime: "创建时间", + + "ak.status.update.title.Active": "禁用AccessKey", + "ak.status.update.title.Inactive": "启用AccessKey", + "ak.status.update.message.Active": "确定要禁用该AccessKey?", + "ak.status.update.message.Inactive": "确定要启用该AccessKey?", + "ak.delete.title": "删除AccessKey", + "ak.delete.message": "确定要删除该AccessKey?", + + "user.update.message.tip": + "请自行确保当前操作登录用户需要有 AliyunRAMFullAccess 权限。", + "user.list.message.tip": + "这里只提供必要的用户管理功能,更进一步的增强功能,请到RAM控制台操作:", + + "status.Active": "已启用", + "status.Inactive": "已禁用", + enable: "启用", + disable: "禁用", + show: "显示", + "can.not.get.accessKeySecret": "无法获取 AccessKeySecret", + + "settings.subtitle.updown": "上传下载设置", + "settings.subtitle.sys": "系统设置", + "settings.subtitle.email": "邮件发送设置", + "settings.mailSmtp.addr": "SMTP地址", + "settings.mailSmtp.ssl": "使用SSL", + "settings.mailSmtp.from": "发送邮件的邮箱", + + user: "用户名", + pass: "密码", + test: "测试一下", + + "mail.test.title": "测试邮件", + "mail.test.message": "将发送测试邮件到: {{from}}", + "mail.test.success": "邮件发送成功", + "mail.send.on": "正在发送...", + + "new.user": "[ 新建一个 ]", + "new.user.name": "新用户名", + "new.user.random.gen": "随机生成", + "new.user.email.send": "AK发送到邮件", + "new.user.email.noset": "还没设置邮件发送配置,需要先设置", + "new.user.email.noset.open": "打开设置", + + "click.copy": "点击复制", + + "http.headers": "HTTP头", + key: "参数", + value: "值", + userMetaData: "用户自定义元数据", + + "setting.on": "正在设置..", + "setting.success": "设置成功", + + "send.to": "发送到", + "send.email": "发送邮件", + "send.now": "立即发送", + "file.download.address": "文件下载地址", + "file.download.warning": + "如果您设置了Referer 白名单且Referer不允许为空,则通过浏览器直接访问该URL会失败", + + "copy.successfully": "已复制到剪贴板", + "click.download": "点此下载", + "qrcode.download": "扫码下载", + + saving: "正在保存", + "save.successfully": "保存成功", + "content.isnot.modified": "内容没有修改", + + logining: "正在登录中...", + "login.successfully": "登录成功,正在跳转...", + "login.endpoint.error": "请确定Endpoint是否正确", + + "upgrade.start": "开始更新", + "upgrade.downloading": "正在下载...", + "upgrade.download.field": "自动更新失败, 请手动下载安装包。", + "upgrade.download.success": "已经下载成功, 现在安装并重启应用", + + "Insufficient disk space": "磁盘空间不足", + + "grant.email.title": "OSS Browser 授权", + "grant.email.body.title": + "OSS Browser 目前支持2种方式登录, 您可以选择任意一种:", + + "goto.create.role": "去创建角色", };