diff --git a/src/renderer/components/landing/Footer.vue b/src/renderer/components/landing/Footer.vue
index 4e0018b4..8b5d595c 100644
--- a/src/renderer/components/landing/Footer.vue
+++ b/src/renderer/components/landing/Footer.vue
@@ -131,30 +131,19 @@
English
+ >{{ item.name }}
-
- Vietnamese
-
-
@@ -209,6 +198,22 @@ export default {
computed: {
currentYear () {
return new Date().getFullYear()
+ },
+ languages () {
+ return [
+ {
+ id: 'en',
+ name: 'English'
+ },
+ {
+ id: 'vi',
+ name: 'Tiếng Việt'
+ }
+ // {
+ // id: 'zh',
+ // name: '繁體中文'
+ // }
+ ]
}
},
mounted () {
@@ -218,7 +223,7 @@ export default {
setLocale (locale) {
this.changeLang(locale)
setTimeout(() => {
- if (this.$route.path.startsWith('/vi/blog') && locale === 'en') {
+ if (this.$route.path.startsWith('/vi/blog') && locale !== 'vi') {
this.$router.push('/blog')
return
}
@@ -226,7 +231,7 @@ export default {
this.$router.push('/vi/blog')
return
}
- if (this.$route.path.startsWith('/vi/whitepaper') && locale === 'en') {
+ if (this.$route.path.startsWith('/vi/whitepaper') && locale !== 'vi') {
window.location.replace('/whitepaper')
return
}
diff --git a/src/renderer/components/landing/whitepaper/Header.vue b/src/renderer/components/landing/whitepaper/Header.vue
index b40b33cb..f323f467 100644
--- a/src/renderer/components/landing/whitepaper/Header.vue
+++ b/src/renderer/components/landing/whitepaper/Header.vue
@@ -186,13 +186,11 @@ export default {
setLocale (locale) {
this.changeLang(locale)
setTimeout(() => {
- if (locale === 'en') {
- window.location.replace('/whitepaper')
- return
- }
if (locale === 'vi') {
window.location.replace('/vi/whitepaper')
+ return
}
+ window.location.replace('/whitepaper')
}, 200)
}
}
diff --git a/src/renderer/components/notifications/NotificationBell.vue b/src/renderer/components/notifications/NotificationBell.vue
index 33eff153..40ad1817 100644
--- a/src/renderer/components/notifications/NotificationBell.vue
+++ b/src/renderer/components/notifications/NotificationBell.vue
@@ -51,7 +51,7 @@
{{ item.title.vi }}
-
+
{{ item.title.en }}
-
-
+
+
+
diff --git a/src/renderer/layouts/landing.vue b/src/renderer/layouts/landing.vue
index bc2cebb0..fd820ccd 100644
--- a/src/renderer/layouts/landing.vue
+++ b/src/renderer/layouts/landing.vue
@@ -72,6 +72,16 @@ export default {
},
head () {
// this.$i18n.locale = this.lang
+ const locale = (() => {
+ switch (this.locale) {
+ case 'vi':
+ return 'vi_VN'
+ case 'zh':
+ return 'zh_TW'
+ default:
+ return 'en_US'
+ }
+ })()
return {
htmlAttrs: {
lang: this.locale
@@ -87,7 +97,7 @@ export default {
{
hid: 'og:locale',
property: 'og:locale',
- content: this.locale === 'vi' ? 'vi_VN' : 'en_US'
+ content: locale
},
{
hid: 'twitter:title',
diff --git a/src/renderer/layouts/register.vue b/src/renderer/layouts/register.vue
index 8b7f535d..889f8afd 100644
--- a/src/renderer/layouts/register.vue
+++ b/src/renderer/layouts/register.vue
@@ -27,6 +27,16 @@ export default {
},
head () {
// this.$i18n.locale = this.lang
+ const locale = (() => {
+ switch (this.locale) {
+ case 'vi':
+ return 'vi_VN'
+ case 'zh':
+ return 'zh_TW'
+ default:
+ return 'en_US'
+ }
+ })()
return {
htmlAttrs: {
lang: this.locale
@@ -42,7 +52,7 @@ export default {
{
hid: 'og:locale',
property: 'og:locale',
- content: this.locale === 'vi' ? 'vi_VN' : 'en_US'
+ content: locale
},
{
hid: 'twitter:title',
diff --git a/src/renderer/layouts/whitepaper.vue b/src/renderer/layouts/whitepaper.vue
index f3c138e6..593a47d9 100644
--- a/src/renderer/layouts/whitepaper.vue
+++ b/src/renderer/layouts/whitepaper.vue
@@ -60,24 +60,19 @@
- English
+ {{ item.name }}
-
- Vietnamese
-
-
@@ -235,6 +230,22 @@ export default {
computed: {
language () {
return this.$store.state.user.language
+ },
+ languages () {
+ return [
+ {
+ id: 'en',
+ name: 'English'
+ },
+ {
+ id: 'vi',
+ name: 'Tiếng Việt'
+ }
+ // {
+ // id: 'zh',
+ // name: '繁體中文'
+ // }
+ ]
}
},
watch: {
diff --git a/src/renderer/locales/zh.json b/src/renderer/locales/zh.json
new file mode 100644
index 00000000..a6a05ce6
--- /dev/null
+++ b/src/renderer/locales/zh.json
@@ -0,0 +1,1859 @@
+{
+ "common": {
+ "accept": "接受",
+ "accounts": "帳戶 | 帳戶",
+ "actions": "動作",
+ "active": "啟用",
+ "add": "新增",
+ "add_new": "新增",
+ "address": "地址",
+ "address_placeholder": "請輸入您的地址",
+ "agree_terms": "我同意條款內容與條件",
+ "all_items": "所有項目",
+ "amount": "金額",
+ "apply": "套用",
+ "approve": "同意",
+ "authentication_app": "驗證應用程式",
+ "authentication_email": "驗證信箱",
+ "back": "返回",
+ "cancel": "取消",
+ "cardholder": "持卡人姓名",
+ "cardholder_placeholder": "瑪卡巴卡",
+ "choose_file": "選擇檔案",
+ "city": "城市",
+ "clone": "複製",
+ "close": "關閉",
+ "collapse": "收合",
+ "collections": "團隊資料夾",
+ "company": "公司",
+ "company_placeholder": "請輸入您的公司",
+ "company_size": "員工人數",
+ "configuration": "設定",
+ "confirm": "確認",
+ "confirm_password": "確認密碼",
+ "confirm_password_placeholder": "請輸入確認密碼",
+ "confirmed": "已確認",
+ "contact_us": "聯絡我們",
+ "continue": "繼續",
+ "copied": "已複製到剪貼簿",
+ "copy": "複製",
+ "country": "國家",
+ "created": "建立於",
+ "created_date": "建立日期",
+ "cystack_address": "地址:Tan Hong Ha Complex, 317 Truong Chinh Street, Thanh Xuan District, Hanoi, Vietnam",
+ "decline": "拒絕",
+ "delete": "刪除",
+ "delete_account": "刪除帳戶",
+ "disable": "停用",
+ "discount": "折扣",
+ "dob": "生日",
+ "done": "完成",
+ "dr": "Dr",
+ "duration": "期間",
+ "edit": "編輯",
+ "email": "電子信箱",
+ "email_address": "電子信箱",
+ "email_placeholder": "請輸入您的電子信箱",
+ "enable": "啟用",
+ "error": "錯誤",
+ "expired": "已過期",
+ "failed": "失敗",
+ "features": "功能",
+ "female": "女性",
+ "first_name": "名",
+ "first_name_placeholder": "請輸入您的名字",
+ "folder": "資料夾",
+ "folder_name": "資料夾名稱",
+ "fullname": "全名",
+ "get_share_link": "取得分享連結",
+ "go_to_website": "前往網站",
+ "good": "良好",
+ "group_name": "群組名稱",
+ "groups": "群組",
+ "half_yearly": "半年方案",
+ "have_code": "有優惠代碼",
+ "in_app_share": "在應用程式內分享",
+ "invite": "邀請",
+ "issue": "問題",
+ "item_name": "項目名稱",
+ "job_title": "職稱",
+ "job_title_placeholder": "請輸入您的職稱",
+ "joined": "加入於",
+ "last_name": "姓",
+ "last_name_placeholder": "請輸入您的姓氏",
+ "learn_more": "了解更多",
+ "length": "長度",
+ "lifetime": "終身方案",
+ "lock": "鎖定",
+ "login": "登入",
+ "logout": "登出",
+ "male": "男性",
+ "manage_plans": "管理方案",
+ "master_password": "主密碼",
+ "me": "我",
+ "month": "月",
+ "monthly": "月方案",
+ "move_folder": "移到資料夾",
+ "mr": "先生",
+ "mrs": "女士",
+ "ms": "小姐",
+ "name": "名稱",
+ "nationality": "國籍",
+ "new_password": "新密碼",
+ "new_password_placeholder": "請輸入新密碼",
+ "next": "下一步",
+ "no": "否",
+ "no_credit_card": "無需信用卡。",
+ "note": "備註",
+ "ok": "確定",
+ "onetime": "終身方案",
+ "only": "僅",
+ "or": "或",
+ "organization": "組織",
+ "other": "其他",
+ "owner": "擁有者",
+ "ownership": "擁有權限",
+ "password": "密碼",
+ "permanently_delete": "永久刪除",
+ "phone": "電話號碼",
+ "phone_placeholder": "請輸入您的電話號碼",
+ "plan": "方案",
+ "previous": "上一步",
+ "price": "價格",
+ "privacy": "隱私",
+ "privacy_policy": "隱私政策",
+ "proceed": "前往",
+ "purge": "清除帳戶",
+ "quick_share": "快速分享",
+ "reinvite": "重新邀請",
+ "reject": "拒絕",
+ "release_notes": "更新說明",
+ "remove": "移除",
+ "rename": "重新命名",
+ "request_access": "請求權限",
+ "restore": "恢復",
+ "save": "儲存",
+ "search_placeholder": "搜尋所有內容……",
+ "secret_key": "密鑰",
+ "see_all": "查看全部",
+ "see_more": "查看更多",
+ "select": "選擇",
+ "select_an_option": "請選擇",
+ "share": "分享",
+ "share_type": "分享型態",
+ "shared_with_you": "已在 Locker 分享",
+ "sign_up": "註冊",
+ "skip": "略過",
+ "state": "省/州",
+ "status": "狀態",
+ "submit": "送出",
+ "subscribe": "訂閱",
+ "success": "成功",
+ "takeover": "接受",
+ "terms": "條款",
+ "total": "總計",
+ "totp": "TOTP",
+ "type": "類型",
+ "unlimited": "無上限",
+ "update": "更新",
+ "upgrade": "升級",
+ "user": "使用者",
+ "username": "使用者名稱",
+ "users": "使用者",
+ "verify": "驗證",
+ "view": "檢視",
+ "view_folder": "開啟資料夾",
+ "view_item": "檢視項目",
+ "warning": "警告",
+ "work_email": "公司信箱",
+ "work_email_placeholder": "請輸入您的公司信箱",
+ "year": "年",
+ "yearly": "年度方案",
+ "yes": "是",
+ "you": "您",
+ "your_digital_vault": "您的數位保險庫",
+ "zip": "郵遞區號",
+ "send": "發送"
+ },
+ "sidebar": {
+ "all": "所有項目",
+ "passwords": "密碼",
+ "dashboard": "儀表板",
+ "enterprise_dashboard": "企業儀表板",
+ "vault": "保險庫",
+ "notes": "安全筆記",
+ "cards": "付款卡",
+ "identities": "身份資料",
+ "crypto_backups": "加密資產備份",
+ "crypto-backups": "加密資產備份",
+ "shares": "共享項目",
+ "trash": "垃圾桶",
+ "users": "使用者",
+ "groups": "群組",
+ "shared_folders": "共享資料夾",
+ "settings": "設定",
+ "general": "一般設定",
+ "import_export": "匯入/匯出",
+ "download": "下載",
+ "excluded_domains": "排除的網域",
+ "upgrade": "升級",
+ "tools": "工具",
+ "logs": "紀錄",
+ "overview": "概覽",
+ "billing": "帳單",
+ "family_members": "家庭成員",
+ "policies": "策略",
+ "inventory": "清單",
+ "help": "幫助與回饋",
+ "feedback": "回報問題",
+ "shared_with_you": "與您分享",
+ "your_shares": "已分享的項目",
+ "requests": "請求",
+ "choose_plan": "選擇方案",
+ "payment": "付款",
+ "confirmation": "確認",
+ "account": "帳戶",
+ "options": "選項",
+ "security": "安全性",
+ "security_tools": "安全工具",
+ "plans_billing": "方案與帳單",
+ "referral": "推薦",
+ "manage_member": "管理成員",
+ "notifications": "通知",
+ "private_email": "私人電子郵件",
+ "authenticator": "驗證器",
+ "in_app_shares": "應用程式內分享",
+ "quick_shares": "快速分享",
+ "rewards": "獎勵"
+ },
+ "errors": {
+ "1002": "驗證碼有誤。",
+ "1004": "請用此電子郵件註冊一個新帳戶",
+ "3003": "此團隊已被鎖定。請升級方案來解鎖。",
+ "5000": "此項目正在共用中且無法被移至共用資料夾。| 您的資料夾包含共用的項目。請移出這些項目才能繼續。",
+ "5001": "您不能一次刪除超過 10,000 個項目。",
+ "5002": "您已達 {type} 的儲存空間上限。請至垃圾桶查看並刪除不必要的項目,或升級至 Premium 方案以繼續使用。",
+ "7009": "您的付款卡片發生錯誤(如餘額不足等)。請聯繫您的發卡機構獲取詳情。",
+ "7012": "此方案包含您只能加入 6 位成員。",
+ "7013": "此試用方案已被 {email} 申請",
+ "7015": "{email} 已在一個企業團隊。請離開該企業團隊或使用其他電子郵件。",
+ "7018": "您提供的電子郵件不是學校信箱",
+ "7019": "此學校信箱已經註冊過",
+ "111111": "您已經新增過此付款方式了。",
+ "confirm_password": "主密碼驗證不符",
+ "invalid_password": "您的密碼不正確,請再試一次",
+ "invalid_master_password": "您的主密碼不正確,請再試一次",
+ "invalid_number": "卡號不正確",
+ "incomplete_number": "卡號輸入不完整",
+ "incomplete_cvc": "安全驗證碼輸入不完整",
+ "incomplete_expiry": "有效期限輸入不完整",
+ "invalid_expiry_year": "有效年份不正確",
+ "invalid_expiry_year_past": "卡片已過期",
+ "invalid_expiry_month_past": "卡片已過期",
+ "0004": "資料有誤",
+ "id_confirm_password": "Locker ID 密碼驗證不符",
+ "something_went_wrong": "發生了一些錯誤",
+ "oops": "糟糕!出了點狀況。請稍後再試。",
+ "locked_until_pay": "您的帳戶因 Locker for Business 方案到期而停用。",
+ "upgrade_to_use": "您需要升級方案才能使用這項功能",
+ "only_individual": "此方案僅適用於個人帳戶",
+ "invalid_url": "無效的網址",
+ "invalid_code": "您輸入的代碼好像不存在或已過期了 :("
+ },
+ "master_password": {
+ "create_success": "您的主密碼設定完成!",
+ "create_failed": "您的主密碼設定失敗!",
+ "scores": {
+ "na": "N/A",
+ "very_weak": "非常弱",
+ "weak": "弱",
+ "medium": "中",
+ "good": "強",
+ "strong": "非常強",
+ "not_set": "未設定密碼"
+ },
+ "change": "變更主密碼",
+ "current_password": "輸入目前主密碼",
+ "new_password": "輸入新的主密碼",
+ "re_password": "再次輸入新的主密碼",
+ "change_btn": "變更密碼",
+ "enter_password": "輸入主密碼",
+ "enter_password_desc": "輸入您的主密碼以解鎖",
+ "enter_password_title": "登入",
+ "get_hint": "取得主密碼提示",
+ "continue": "繼續",
+ "master_password_hint": "主密碼提示",
+ "master_password_hint_desc": "主密碼提示將會寄送至您的電子信箱",
+ "send": "寄送",
+ "back_login": "返回登入",
+ "sorry": "抱歉,您還沒有設定主密碼提示。",
+ "hint_success": "請至電子信箱查看提示內容。",
+ "unlock": "解鎖",
+ "id_password": "新的 Locker ID 密碼",
+ "id_password_confirm": "再次輸入 Locker ID 密碼"
+ },
+ "enum": {
+ "Login": "密碼 | 密碼",
+ "SecureNote": "安全筆記 | 安全筆記",
+ "Card": "付款卡 | 付款卡",
+ "Identity": "身份資料 | 身份資料",
+ "null": "垃圾桶"
+ },
+ "type": {
+ "0": "項目 | 項目",
+ "1": "密碼 | 密碼",
+ "2": "安全筆記 | 安全筆記",
+ "3": "卡片 | 卡片",
+ "4": "身份資料 | 身份資料",
+ "5": "OTP | OTPs",
+ "6": "加密資產帳戶 | 加密資產帳戶",
+ "7": "加密資產備份 | 加密資產備份",
+ "null": "項目 | 項目",
+ "Login": "密碼 | 密碼",
+ "SecureNote": "安全筆記 | 安全筆記",
+ "Card": "卡片 | 卡片",
+ "Identity": "身份資料 | 身份資料",
+ "Dashboard": "項目 | 項目",
+ "Vault": "項目 | 項目",
+ "Shares": "項目 | 項目",
+ "Folder": "資料夾 | 資料夾",
+ "your_shares": "已向人分享",
+ "requests": "請求分享",
+ "CryptoAccount": "加密資產帳戶 | 加密資產帳戶",
+ "CryptoWallet": "加密資產備份 | 加密資產備份",
+ "CryptoBackup": "加密資產備份 | 加密資產備份",
+ "TOTP": "驗證器",
+ "private_email": "私人 Email | 私人 Emails"
+ },
+ "set_master_password": {
+ "title": "建立主密碼",
+ "subtitle": "您的主密碼是用來解鎖所有儲存於 Locker 內資料的重要關鍵。請勿與他人共享您的主密碼。",
+ "logout": "登出",
+ "enter_master_password": "輸入主密碼",
+ "confirm_master_password": "確認主密碼",
+ "master_password_hint": "提示(選填) ",
+ "create_button": "建立密碼",
+ "note": "注意:忘記或遺失主密碼時,Locker 無法檢視、儲存、或再次發放主密碼。",
+ "confirm_nodal": {
+ "title": "重要事項",
+ "text1": "繼續代表您了解 Locker 無法檢視、儲存、或再次發放您遺失的主密碼。主密碼的保管是您個人的責任。",
+ "text2": "您可以進一步瞭解有關於主密碼",
+ "link": "在此",
+ "btn_next": "我了解了。開始吧!",
+ "btn_back": "返回,我要變更我的主密碼"
+ }
+ },
+ "data": {
+ "notifications": {
+ "safe": "您的電子郵件是安全的!",
+ "leaked": "您的電子郵件出現在 {breaches} 資料洩漏事件中",
+ "create_success": "已新增 {type} !| 已新增 {type}!",
+ "create_failed": "未能新增 {type} !| 未能新增 {type}!",
+ "update_success": "已更新 {type} !| 已更新 {type}!",
+ "update_failed": "未能更新 {type} !| 未能更新 {type}!",
+ "trash_success": "已將 {type} 移至垃圾桶!| 已將 {type} 移至垃圾桶!",
+ "trash_failed": "未能將 {type} 移至垃圾桶!| 未能將 {type} 移至垃圾桶!",
+ "delete_success": "已永久刪除 {type} !| 已永久刪除 {type}!",
+ "delete_failed": "未能永久刪除 {type} !| 未能永久刪除 {type}!",
+ "restore_success": "已還原 {type} !| 已還原 {type}!",
+ "restore_failed": "未能還原 {type} !| 未能還原 {type}!",
+ "delete_selected": "刪除所選項目",
+ "delete_selected_desc": "您確定要永久刪除此項目嗎?| 您已選擇 {count} 個項目要永久刪除。您確定要永久刪除所有這些項目嗎?",
+ "trash_selected": "將所選項目移到垃圾桶",
+ "trash_selected_desc": "您確定要把這些項目丟到垃圾桶嗎?垃圾桶內的項目會在 30 天後被永久刪除。| 您已選擇 {count} 個項目要移到垃圾桶。您確定要刪除所有這些項目嗎?垃圾桶內的項目會在 30 天後被永久刪除。",
+ "trash_no_permission": "{count} 個項目因為非您所有而無法被移到垃圾桶",
+ "restore_selected": "復原所選項目",
+ "restore_selected_desc": "您確定要復原這個項目嗎?| 您已選擇 {count} 個項目要復原。您確定要復原所有這些項目嗎?",
+ "move_selected": "移動選取項目",
+ "move_selected_desc": "選擇您要將這 {count} 個選定項目移至的資料夾。",
+ "move_success": "項目已移動!| 項目已移動!",
+ "move_failed": "項目未移動!| 項目未移動!",
+ "deleted_folder": "刪除資料夾後,其中的所有項目都會被移至垃圾桶。您確定要刪除此資料夾嗎?",
+ "add_member_success": "成員已收到邀請!",
+ "add_member_failed": "邀請成員失敗!",
+ "delete_member_success": "成員已刪除!",
+ "delete_member_failed": "未能刪除成員!",
+ "delete_member_description": "您確定要移除此使用者?",
+ "update_member_success": "成員權限已更新!",
+ "update_member_failed": "未能更新成員權限",
+ "confirm_member_success": "此成員已確認!",
+ "confirm_member_failed": "未能確認成員身份!",
+ "reject_member_success": "已拒絕邀請!",
+ "reject_member_failed": "未能拒絕邀請!",
+ "accept_member_success": "邀請已被接受!",
+ "accept_member_failed": "未能接受邀請!",
+ "update_settings_success": "您的設定已更新!",
+ "update_settings_failed": "您的設定更新出錯!",
+ "update_master_success": "您的主密碼已更新!",
+ "update_master_failed": "您的主密碼更新出錯!",
+ "incorrect_current_master": "目前的主密碼有誤",
+ "add_group_success": "群組已新增!",
+ "add_group_failed": "未能新增群組!",
+ "delete_group_success": "群組已刪除!",
+ "delete_group_failed": "未能刪除群組!",
+ "delete_group_description": "您確定要移除此群組嗎?",
+ "update_group_success": "群組資訊已更新!",
+ "update_group_failed": "未能更新群組資訊!",
+ "add_folder_success": "資料夾已新增!",
+ "add_folder_failed": "未能新增資料夾!",
+ "delete_folder_success": "資料夾已刪除!",
+ "delete_folder_failed": "未能刪除資料夾!",
+ "delete_folder_description": "您確定要移除此資料夾嗎?",
+ "update_folder_success": "資料夾資訊已更新!",
+ "update_folder_failed": "未能更新資料夾資訊!",
+ "purge_success": "您的保險庫已清除!",
+ "purge_failed": "未能清除您的保險庫!",
+ "purge_title": "刪除帳戶內的所有項目",
+ "purge_description": "Locker 中的所有項目將被永久刪除。其他使用者與您分享的項目(若有)不會被刪除。",
+ "delete_account_success": "您的 Locker 帳戶已被刪除!",
+ "delete_account_failed": "未能刪除您的 Locker 帳戶!",
+ "delete_account_title": "刪除 Locker 帳戶",
+ "delete_account_description": "進行以下操作來刪除帳戶以及相關的所有資料。",
+ "purge_team_success": "您團隊的保險庫已清除!",
+ "purge_team_failed": "未能清除您團隊的保險庫!",
+ "purge_team_title": "刪除團隊保險庫中的所有項目",
+ "purge_team_description": "進行以下操作來刪除團隊保險庫中的所有項目。",
+ "update_team_success": "您團隊的資訊已更新!",
+ "update_team_failed": "未能更新您團隊的資訊!",
+ "fingerprint_title": "驗證指紋密碼片語",
+ "fingerprint_description_1": "為確保加密金鑰的完整性,請在繼續之前驗證使用者提供的指紋密碼片語。",
+ "fingerprint_description_2": "「指紋密碼片語」是一個獨一無二的片語(類似於密碼),使用者可以使用它向另一個使用者驗證自己的公開金鑰,用於分享目的。",
+ "min_password_length": "密碼長度至少 {length}",
+ "max_password_length": "密碼長度不能超過 {length}",
+ "password_composition": "密碼必須至少包含一個特殊字元",
+ "max_less_than_min": "密碼最長位數不得少於最短位數",
+ "requires_lowercase": "需包含小寫字母(abc)",
+ "requires_uppercase": "需包含大寫字母(ABC)",
+ "requires_special": "需包含特殊字元(@#!$%)",
+ "requires_number": "需包含數字(0 1 2 3)",
+ "avoid_ambiguous": "請避免模糊不清的字元(O 和數字 0,小寫 l 和大寫 I……等)",
+ "invite_user_success": "已邀請使用者",
+ "invite_user_failed": "邀請使用者失敗",
+ "accept_invitation_success": "已接受邀請",
+ "accept_invitation_failed": "無法接受邀請",
+ "reject_invitation": "已拒絕邀請",
+ "reject_invitation_failed": "拒絕邀請失敗",
+ "confirm_emergency_access_success": "已確認 {user} 的身份",
+ "confirm_emergency_access_failed": "無法確認 {user} 的身份",
+ "reinvited_user_success": "{user} 已重新邀請",
+ "reinvited_user_failed": "重新邀請 {user} 失敗",
+ "update_contact_success": "緊急聯絡人已更新",
+ "update_contact_failed": "更新緊急聯絡人失敗",
+ "remove_user_success": "已移除使用者 {user}",
+ "remove_user_failed": "移除使用者失敗",
+ "request_send_success": "已向 {user} 請求緊急取用權限",
+ "request_send_failed": "發送請求失敗",
+ "emergency_access_approved_failed": "更新存取權限請求失敗",
+ "emergency_access_approved_success": "已核准緊急存取權限",
+ "emergency_access_rejected_success": "已拒絕緊急存取權限",
+ "emergency_access_rejected_failed": "未能更新存取權限請求",
+ "error_occurred": "發生錯誤",
+ "takeover_success": "已重設 {user} 的主密碼。您現在可使用新的主密碼登入保險庫。",
+ "takeover_locker_success": "已重設 {user} 的密碼。您現在可使用新的密碼登入 Locker。",
+ "delete_emergency_contact": "您確定要移除此緊急聯絡人嗎?",
+ "approve_emergency_access": "您確定要核准對方的緊急存取權限嗎?這將使 {user} 能夠「{type}」您的帳戶。",
+ "request_emergency_access": "您確定要請求緊急存取權限嗎?您會於 {day} 天後獲得存取權,或是在使用者手動核准時的任何時間點獲得。",
+ "incorrect_format": "資料格式不正確",
+ "no_data": "沒有資料",
+ "select_appropriate_file": "請選擇正確的檔案",
+ "import_failed": "資料匯入失敗",
+ "import_success": "已匯入 {foldersCount} 個資料夾,{ciphersCount}/{total} 個項目",
+ "confirm_invite_user": "您確定要邀請以下使用者嗎:",
+ "leave_share": "您確定要退出這個分享群組嗎?",
+ "share_success": "已分享此項目!| 已分享這些項目!",
+ "share_failed": "分享此項目失敗!| 分享這些項目失敗!",
+ "share_less_than_20": "您一次最多只能分享 20 個項目",
+ "leave_share_success": "已成功退出分享群組",
+ "update_share_success": "已成功更新分享成員",
+ "stop_share_success": "已成功停止分享",
+ "authentication_failed": "驗證失敗",
+ "extension_loggedin": "Locker 瀏覽器擴充功能已登入。您現在可以點擊工具列中的 Locker 圖示來使用。",
+ "invalid_master_password": "主密碼必須至少有 8 個字元",
+ "upgrade_success": "升級成功",
+ "mark_all_as_read": "全部標為已讀",
+ "no_notifications": "沒有新的通知",
+ "switch_plan": "選擇前往以進到付款頁面。完成購買後,您目前方案 {currentPlan}({currentPeriod})將被取消。您的方案將會更新為 {chosenPlan}({chosenPeriod})。",
+ "purchase_plan": "選擇執行以進入付款頁面。完成購買後,將會為您目前方案延長 {duration}。選擇取消則會關閉此提示視窗。"
+ },
+ "profile_menu": {
+ "lock": "鎖定帳戶",
+ "logout": "登出",
+ "account_settings": "帳戶設定",
+ "support_center": "客服中心",
+ "tour": "使用教學導覽",
+ "feedback": "提供意見回饋"
+ },
+ "admin_menu": {
+ "my_vault": "我的保險庫",
+ "team_profile": "團隊設定檔",
+ "change_team": "切換團隊"
+ },
+ "no_data": {
+ "7": {
+ "title": "新增第一個加密資產備份",
+ "description": "將您的加密帳戶/錢包安全存放",
+ "btn": "新增資產"
+ },
+ "Dashboard": {
+ "title": "讓我們開始吧!",
+ "description": "新增您的第一個項目。您隨時都能輕鬆找到它",
+ "btn": "新增項目",
+ "btn_import": "匯入"
+ },
+ "Vault": {
+ "title": "讓我們開始吧!",
+ "description": "新增您的第一個項目。您隨時都能輕鬆找到它",
+ "btn": "新增項目",
+ "btn_import": "匯入"
+ },
+ "Login": {
+ "title": "讓我們開始吧!",
+ "description": "紀錄密碼,從任何裝置都能隨時存取",
+ "btn": "新增密碼",
+ "btn_import": "匯入"
+ },
+ "SecureNote": {
+ "title": "解放被塞滿的大腦",
+ "description": "儲存 Wi-Fi 密碼、辦公室保全密碼,或是朋友的生日……",
+ "btn": "新增註記"
+ },
+ "Card": {
+ "title": "簡化線上購物",
+ "description": "新增付款卡,線上購物時自動填入付款資料",
+ "btn": "新增付款卡"
+ },
+ "Identity": {
+ "title": "快速填寫線上表格",
+ "description": "新增身份資料,Locker 能幫您自動填寫各類線上表單",
+ "btn": "新增身份資料"
+ },
+ "Trash": {
+ "title": "這裡什麼都沒有",
+ "description": "移到垃圾桶的項目都可在永久刪除前還原"
+ },
+ "Shares": {
+ "title": "這裡什麼都沒有",
+ "description": "您與他人分享的項目都會出現在這裡",
+ "btn": "新增項目"
+ },
+ "TOTP": {
+ "title": "使您的帳戶更加安全",
+ "description": "開啟 Locker 的雙因素認證功能,為您的線上帳戶再增一層安全防護",
+ "btn": "設定雙因素認證(2FA)"
+ }
+ },
+ "members": {
+ "role": {
+ "admin": {
+ "title": "管理員",
+ "description": "管理員能存取並管理組織內的所有項目、資料夾及使用者"
+ },
+ "manager": {
+ "title": "管理員",
+ "description": "管理員能存取並管理組織內已指派給他的資料夾"
+ },
+ "member": {
+ "title": "成員",
+ "description": "一般的使用者,只能存取團隊內已指派給他的資料夾"
+ },
+ "owner": {
+ "title": "擁有者"
+ },
+ "family": {
+ "title": "家庭成員"
+ }
+ },
+ "invite_user": "邀請使用者",
+ "edit_member": "編輯成員",
+ "enter_email": "輸入電子信箱",
+ "user_access": "此使用者只能存取已選取的資料夾。",
+ "invite_member": {
+ "by_file": "上傳成員名單",
+ "upload_file": "上傳檔案",
+ "select_format": "選取匯入檔案格式",
+ "select_file": "選取匯入檔案",
+ "description": "輸入成員的電子信箱以發送邀請。可輸入多個電子信箱,以英文逗號( , )隔開。若成員沒有 Locker 帳戶,會被引導至帳戶建立頁面。若成員已擁有 Locker 帳戶,則現有帳戶會被加入您的群組。",
+ "warning": "** 注意:請輸入欲邀請成員的正確電子信箱。輸入錯誤的電子信箱可能造成惡意人士存取群組資料的風險。",
+ "csv_template": "上傳檔案前,請根據此處的範本,將 .csv 檔案排版。",
+ "xlsx_template": "上傳檔案前,請根據此處的範本,將 .xlsx 檔案排版。"
+ }
+ },
+ "timeouts": {
+ "oneMinute": "1 分鐘",
+ "fiveMinutes": "5 分鐘",
+ "tenMinutes": "10 分鐘",
+ "fifteenMinutes": "15 分鐘",
+ "thirtyMinutes": "30 分鐘",
+ "oneHour": "1 小時",
+ "fourHours": "4 小時",
+ "twoWeeks": "2 週",
+ "onRefresh": "當瀏覽器重啟時"
+ },
+ "exportFile": {
+ "export": "匯出",
+ "export_items": "匯出項目",
+ "export_items_desc": "請輸入您的主密碼以匯出保險庫內的資料。",
+ "csv": "CSV",
+ "json": "JSON",
+ "encrypted_json": "加密的 JSON"
+ },
+ "importFile": {
+ "import": "匯入",
+ "import_items": "匯入項目",
+ "import_items_desc": "從瀏覽器或檔案匯入密碼與其他項目。",
+ "select_file": "1. 選擇匯入檔案格式",
+ "select_format": "2. 選擇匯入檔案",
+ "or_copy": "或複製/貼上匯入檔案內容",
+ "instructions": "{name} 匯入說明",
+ "upgrade_dialog_title": "您的免費方案空間有限",
+ "upgrade_dialog_message": "已匯入 {importedCount}/{total} 個項目。升級至 Premium 新使增項目不受數量限制"
+ },
+ "plans": {
+ "price": {
+ "price": "月費方案",
+ "half_yearly_price": "半年方案",
+ "yearly_price": "年度方案"
+ },
+ "descriptions": {
+ "pm_free": "保護密碼安全並享用 Locker 基本功能。",
+ "pm_premium": "額外實用功能,讓使用體驗加分。",
+ "pm_family": "無限儲存空間,讓您體驗 Locker 最完整的功能。"
+ },
+ "members": "{count} 位 | {count} 位",
+ "features": {
+ "unlimited_storage": "無儲存空間上限",
+ "sync_devices": "跨裝置資料同步(最高 3 台裝置)",
+ "sync_devices_unlimited": "跨裝置資料同步(無裝置數量限制)",
+ "auto_fill": "隨時隨地自動填入資料",
+ "authenticator": "雙因素認證",
+ "password_generator": "安全強力密碼產生器",
+ "password_health": "密碼健康檢測",
+ "data_breach": "資料洩漏掃描",
+ "emergency_access": "緊急存取功能",
+ "share_passwords": "安全分享項目",
+ "private_email": "私人電子郵件(最多 5 個別名)",
+ "private_email_unlimited": "私人電子郵件(無別名數量限制及 1 個子網域)",
+ "family_members": "家庭成員(最多 6 位成員)"
+ },
+ "payment_step": {
+ "step_1": "步驟 1:確認選擇的方案",
+ "step_2": "步驟 2:輸入付款資料",
+ "step_3": "步驟 3:付款與升級",
+ "family": {
+ "invite_member": "開始邀請成員",
+ "invite_member_desc": "輸入他們的電子信箱。你也可以之後在設定 > 管理成員中邀請。",
+ "invite": "邀請",
+ "invite_member_desc_2": "已加入此方案的成員會顯示在下方的列表中。",
+ "list_member": "已加入成員列表"
+ },
+ "enter_code": "輸入優惠代碼"
+ },
+ "choose_plan": "選擇方案",
+ "choose_plan_desc": "選擇符合您需求的方案。",
+ "current_plan": "您目前的方案",
+ "choose_this_plan": "選擇此方案",
+ "bill_monthly": "按月計費",
+ "bill_annually": "按年計費",
+ "bill_annually_desc": "(最高省下 75%)",
+ "payment": "付款資訊",
+ "choose_payment_method": "選擇付款方式",
+ "order_summary": "訂單摘要",
+ "invite_people": "邀請成員加入此方案",
+ "type_email": "在下方輸入他們的電子信箱",
+ "list_member": "已加入成員列表",
+ "price_12months": "12 個月優惠價",
+ "save": "優惠",
+ "trial_included": "包含 14 天免費試用",
+ "start_trial": "開始 14 天免費試用",
+ "purchase_now": "立即購買",
+ "most_popular": "最受歡迎",
+ "next_billing_on": "下個結算日"
+ },
+ "billing": {
+ "card_number": "卡號",
+ "expiration": "有效期限",
+ "cvc": "CVV 安全碼",
+ "payment_method": "付款方式",
+ "billing_contact": "帳單聯絡人",
+ "billing_address": "帳單地址",
+ "card_title": "輸入付款資訊",
+ "edit_card_title": "修改付款資訊",
+ "email_hint": "我們會寄送帳單至這個電子信箱",
+ "card_decline": {
+ "generic_decline": "您的信用卡遭到拒絕。請聯絡發卡機構或嘗試其他卡片。",
+ "validation_error": "您的卡片資訊有誤。"
+ },
+ "add_card_success": "付款資訊已新增!",
+ "add_card_failed": "新增付款資訊失敗!",
+ "edit_card_success": "付款資訊已更新!",
+ "edit_card_failed": "更新付款資訊失敗!",
+ "delete_card_success": "付款資訊已移除!",
+ "delete_card_failed": "移除付款資訊失敗!",
+ "remove_btn": "移除信用卡",
+ "change_btn": "更換信用卡",
+ "add_btn": "新增信用卡",
+ "not_have": "此帳戶尚無信用卡資料。",
+ "billed_to": "此帳戶的帳單寄至:",
+ "card_ending": "以 {name} 名義結尾的信用卡,末四碼為",
+ "billing_information": "帳單資訊",
+ "confirm_delete_card": "移除付款資訊",
+ "confirm_delete_card_all": "若您移除此信用卡,您的所有訂閱都會被取消。確定要移除嗎?",
+ "next_billing": "下個結算日",
+ "total_after_trial": "試用期後,每月自動續訂費用總額",
+ "charged_today": "今日已請款金額",
+ "upgrade_summary": "方案升級摘要",
+ "checkout": "前往結帳",
+ "checkout_hint": "試用期結束後,Locker 會自動繼續您的訂閱。您依然可以在任何時間取消。",
+ "required_ownership": "需要通過所有權驗證",
+ "total_monthly": "每月總額",
+ "total_yearly": "每年總額",
+ "additions_members": "額外成員費用",
+ "past_due": "逾期未付",
+ "paid": "已付款",
+ "failed": "付款失敗",
+ "pending": "處理中",
+ "processing": "處理中",
+ "invoice_id": "帳單編號",
+ "pay_success": "付款成功!",
+ "pay_failed": "付款失敗!",
+ "view_details": "查看詳情",
+ "promo": "優惠代碼",
+ "promotion_code": "有優惠代碼嗎?",
+ "promotion_placeholder": "請在此輸入優惠代碼",
+ "apply": "套用",
+ "plan_item": "{duration} {name} 方案訂閱",
+ "unsubscribe_success": "您的訂閱已取消!試用期後,您的方案會在 {date} 降級至免費版",
+ "unsubscribe_failed": "未能取消您的訂閱!",
+ "subscribe_success": "您的訂閱資訊已更新!",
+ "subscribe_failed": "未能更新您的訂閱資訊!",
+ "restart_success": "您的訂閱已重新開始!",
+ "restart_failed": "未能重新開始您的訂閱!",
+ "confirm_unsubscribe": "您確定要取消訂閱嗎?訂閱結束後,您的方案會在 {date} 降級至免費版",
+ "confirm_restart": "確認要重新開始訂閱嗎?",
+ "restart": "重新開始",
+ "upgrading": "升級為",
+ "payment_due": "待結帳單",
+ "intro": "請輸入信用卡資訊(Visa、MasterCard、American Express、Discover……等)",
+ "stripe_desc": "我們使用全球頂尖的第三方支付平台之一 Stripe 來處理金流,您的信用卡資訊不會儲存在我們的伺服器中。",
+ "total": "總額",
+ "cancel_subscription": "取消訂閱",
+ "invoices": "收據",
+ "cancel_at_period_end": "您的方案會降級於",
+ "yearly_discount": "年度方案優惠({discount})",
+ "plan_details": [
+ "您現在需支付 {total} {currency},這是目前結算週期的部分費用。",
+ "您的方案是 {duration} 計費,並會在 {next_bill} 以 {price} {currency}(加上任何適用的稅費,並扣除優惠)的價格更新。",
+ "您可以在此日期前隨時取消。"
+ ],
+ "trial_summary": [
+ "您的信用卡目前不會被扣款,您將於 {next_bill} 被收取 {price} {currency}(加上任何適用的稅費,並扣除優惠)。",
+ "您可以在此日期前隨時取消。"
+ ],
+ "payment_success": "付款成功",
+ "thankyou": "感謝您,您的帳戶已升級。
我們已將帳單寄送到您提供的帳單地址",
+ "back_to_home": "返回首頁",
+ "billing_documents": "帳單文件",
+ "buy_premium": "訂購 Premium",
+ "manage_payments": "管理付款",
+ "pay_and_upgrade": "付款與升級",
+ "card_info": "付款卡片資訊",
+ "name_on_card": "持卡人姓名",
+ "by_confirm_you_allow": "確認訂閱後,即代表您允許 CyStack, LLC 依照他們的條款,向您的信用卡收取款項以支付此次與未來相關費用。您可隨時取消訂閱。",
+ "update_payment_or_downgrade": "我們無法續訂您的 Locker 訂閱。請在 {time} 之前更新您的付款資訊,否則您的方案將會降為免費版。"
+ },
+ "groups": {
+ "access_all": "此群組可存取所有項目。",
+ "access_selected": "此群組僅能存取選取的特定資料夾。",
+ "edit_group": "編輯群組",
+ "add_group": "新增群組",
+ "user_access": "使用者存取權",
+ "groups": "群組"
+ },
+ "users": {
+ "edit_user": "編輯使用者",
+ "add_user": "新增使用者",
+ "add_family": "新增家庭成員",
+ "edit_family": "編輯家庭成員"
+ },
+ "folders": {
+ "edit_folder": "編輯資料夾",
+ "add_folder": "新增資料夾",
+ "edit_team_folder": "編輯團隊資料夾",
+ "add_team_folder": "新增團隊資料夾",
+ "groups_access": "群組存取權限",
+ "user_access": "使用者存取權限",
+ "move_to": "移動至",
+ "move_to_desc": "為這 1 項選取的項目選取新的資料夾。",
+ "no_folder": "沒有資料夾",
+ "select_folder": "選取資料夾",
+ "share_folder": "分享資料夾",
+ "add_member": "新增成員"
+ },
+ "ciphers": {
+ "add_cipher": "新增項目",
+ "password_strength": "密碼強度",
+ "website_address": "網址",
+ "password": "密碼",
+ "card_holder": "持卡人姓名",
+ "brand": "發卡機構",
+ "card_number": "卡號",
+ "expiration_month": "有效月",
+ "expiration_year": "有效年",
+ "cvv": "安全驗證碼(CVV)",
+ "notes": "備註",
+ "name": "名稱",
+ "folder": "資料夾",
+ "title": "標題",
+ "first_name": "名",
+ "last_name": "姓",
+ "company": "公司",
+ "ssn": "身分證字號/居留證號碼",
+ "passport": "護照號碼",
+ "license": "駕照號碼",
+ "phone": "電話",
+ "address": "地址",
+ "city_town": "城市",
+ "state_province": "州/省",
+ "zip": "郵遞區號",
+ "country": "國家",
+ "owned_by": "擁有者",
+ "personal": "個人資料",
+ "contact": "聯絡資訊",
+ "login": "登入資訊",
+ "others": "其他",
+ "choose_at_least_folder": "只有可以存取這些資料夾的團隊成員才能看到此項目。請至少選擇 1 個資料夾。",
+ "choose_a_team": "選擇您要共享此項目給的團隊。共享會將項目的擁有權轉移到這個團隊。一旦您共享後,將不再是此項目的直接擁有者。",
+ "folders_team": "團隊資料夾",
+ "sort_by": "排序依據",
+ "ascending": "遞增",
+ "descending": "遞減",
+ "time": "時間",
+ "created_time": "建立時間",
+ "updated_time": "更新時間",
+ "unassigned_folder": "未分類資料夾",
+ "all_items": "所有項目",
+ "add_item": "新增項目",
+ "selected_items": "已選取的項目",
+ "generate_random_password": "隨機產生密碼",
+ "show_password": "顯示密碼",
+ "choose_file_folder": "選擇項目:",
+ "choose_file_folder_desc": "您可以選擇任意數量的項目。",
+ "add_recipient_emails": "新增收件者電子郵件:",
+ "add_recipient_emails_desc": "您可以加入任意數量的電子郵件。",
+ "share_type": "分享型態:",
+ "share_type_desc": "選擇您要如何分享。可以在之後編輯此設定。",
+ "share_instruction": "發出分享請求後,被指派的使用者必須同意後,才能使用分享帳戶。\n若對方尚未有 Locker 帳戶,將會透過電子郵件邀請對方建立新帳戶。",
+ "stop_sharing": "停止分享",
+ "edit_share_type": "編輯權限",
+ "leave": "離開",
+ "recovery_email": "救援電子郵件",
+ "additional_info": "其他資料",
+ "seed": "助記詞",
+ "seed_phrase_desc": "注意:助記詞(或稱回復詞)通常是 12 至 24 個隨機英文字組成的片語。這是加密錢包中最敏感的資料。",
+ "card_details": "卡片資訊",
+ "contact_info": "聯絡資訊",
+ "only_use": "僅使用",
+ "viewable": "可檢視",
+ "editable": "可編輯",
+ "wallet_address": "錢包地址",
+ "private_key": "私鑰",
+ "password_pin": "密碼/PIN 碼",
+ "username": "使用者名稱",
+ "wallet_app": "錢包 App",
+ "networks": "可用網路",
+ "shared_with": "分享對象",
+ "custom_fields": "自訂欄位",
+ "new_custom_field": "新增自訂欄位",
+ "field_name": "欄位名稱",
+ "value": "欄位值",
+ "text": "文字",
+ "hidden": "隱藏欄位",
+ "date": "日期",
+ "monthYear": "月/年",
+ "most_relevant": "最相關",
+ "view_share": "查看分享",
+ "drive_license": {
+ "no": "編號",
+ "class": "駕照種類",
+ "valid_until": "有效期限",
+ "vehicle_class": "准駕車型",
+ "beginning_date": "起始日期",
+ "issued_by": "發行機關"
+ },
+ "citizen_id": {
+ "id_no": "身分證字號",
+ "sex": "性別",
+ "place_of_origin": "籍貫",
+ "place_of_residence": "住址",
+ "expiry_date": "有效期限",
+ "personal_id": "個人身分資訊",
+ "date_of_issue": "發行日期",
+ "issued_by": "發行機關"
+ },
+ "passport_type": {
+ "passport_id": "護照號碼",
+ "type": "類型",
+ "code": "國籍代碼",
+ "sex": "性別",
+ "id_number": "身分證字號",
+ "date_of_issue": "發照日期",
+ "date_of_expiry": "有效期限",
+ "place_of_issue": "核發地點"
+ },
+ "router": {
+ "device_name": "裝置名稱",
+ "router_ip_address": "路由器 IP 位址",
+ "wifi_ssid": "WiFi 名稱(SSID)",
+ "wifi_pw": "WiFi 密碼",
+ "admin_username": "管理員帳號",
+ "admin_password": "管理員密碼"
+ },
+ "server": {
+ "host": "主機位址(IP/網域)",
+ "public_key": "公鑰",
+ "private_key": "私鑰"
+ },
+ "api": {
+ "url": "網址",
+ "method": "方法",
+ "header": "標頭(Header)",
+ "body_data": "請求內容(Body Data)",
+ "response": "回應內容"
+ },
+ "database": {
+ "host": "主機位址(IP/網域)",
+ "port": "連接埠",
+ "default": "預設資料庫"
+ },
+ "otp": {
+ "setup": "雙因素認證設定",
+ "no_otp": "暫不啟用雙因素認證",
+ "add_new": "新增雙因素認證設定",
+ "select": "套用現有雙因素認證設定",
+ "select_placeholder": "選擇雙因素認證設定",
+ "secret_key": "密鑰或路徑",
+ "otp_option": "選項"
+ }
+ },
+ "settings": {
+ "account": "帳戶",
+ "plan": "方案",
+ "manage_plan": "管理方案",
+ "manage": "管理",
+ "fingerprint": "指紋辨識",
+ "options": "選項",
+ "timeout": "閒置多久後自動上鎖",
+ "timeout_desc": "指定一段裝置閒置時間後,自動為保險庫上鎖。",
+ "timeout_action": "上鎖後動作",
+ "timeout_action_1": "上鎖後需要重新輸入主密碼解鎖。",
+ "timeout_action_2": "上鎖後須重新登入。",
+ "security": "安全設定",
+ "change_master_password": "變更主密碼",
+ "emergency_access": "緊急存取權限",
+ "emergency_access_desc": "設定可信任聯絡人。在特定情況下,此聯絡人將能取得您的保險庫檢視權以及接管權限。",
+ "danger_zone": "危險區域",
+ "danger_zone_note": "注意,以下動作無法復原!",
+ "delete_all_items": "刪除所有保險庫資料",
+ "delete_all_items_desc": "刪除 Locker 帳戶中的所有資料。但您的 Locker 帳戶會保留。",
+ "delete_account": "刪除帳戶",
+ "delete_account_desc": "永久刪除您的 Locker 帳戶",
+ "language": "語言",
+ "vietnamese": "Tiếng Việt",
+ "english": "English",
+ "deauthorize_sessions": "解除所有裝置的登入授權",
+ "deauthorize_device": "登出此 {name}",
+ "deauthorize_device_desc": "這個動作會移除此裝置存取您的 Locker 帳戶之權限。請輸入主密碼確認。",
+ "deauthorize_sessions_title": "擔心帳戶在其他裝置上登入著嗎?執行以下動作將會解除您曾使用過的電腦或裝置的登入授權。若您曾使用公用電腦,或是曾不小心在非您所有的裝置上儲存密碼,建議進行此步驟。",
+ "deauthorize_sessions_desc": "這個動作也會登出目前正在使用的帳戶,您將需要重新登入。",
+ "deauthorize_sessions_success": "已解除所有裝置的登入授權",
+ "deauthorize_sessions_failed": "發生錯誤",
+ "learn_about_secure": "了解我們如何保護您的保險庫",
+ "learn_about_secure_desc": "不論是哪種方案,所有 Locker 帳戶皆受到 AES-256 加密及零知識(Zero Knowledge)技術保護,提供最完善的隱私保護。",
+ "master_password_health": "主密碼健康度",
+ "master_password_health_desc": "為您的主密碼做健檢。",
+ "master_password_hint": "主密碼提示",
+ "master_password_hint_desc": "設定主密碼的提示,以備您忘記主密碼時使用。",
+ "weak_passwords": "弱密碼偵測",
+ "weak_passwords_desc": "在您的保險庫中偵測強度不足的密碼。",
+ "data_breach": "資料洩漏掃描",
+ "data_breach_desc": "在您的保險庫中掃描是否有被外洩過的帳戶。",
+ "password_reusage": "重複使用密碼偵測",
+ "password_reusage_desc": "在您的保險庫中偵測是否有重複使用的密碼。",
+ "learn_about_emergency_access": "深入了解緊急存取",
+ "learn_about_emergency_access_desc": "此功能可授予另一個 Locker 帳戶的擁有者在特定緊急情況下,存取您的保險庫之能力。",
+ "plans_billing": "方案與付款",
+ "plans_billing_desc": "管理方案、訂閱、帳單以及付款方式。",
+ "security_desc": "管理您的安全和隱私設定。",
+ "account_desc": "管理個人資料與帳戶設定。",
+ "import_export_desc": "匯入或匯出 Locker 檔案。",
+ "delete_desc": "您可以刪除資料與帳戶。這些動作將無法復原,一旦執行,我們將無法為您恢復這些資料。",
+ "plan_storage": "方案儲存空間",
+ "plan_storage_desc": "查看保險庫容量上限。",
+ "extra_security": "加強安全",
+ "extra_security_desc": "包含資料洩漏掃描、弱密碼偵測、重複使用密碼偵測與緊急存取權。",
+ "utilities": "附加功能",
+ "utilities_desc": "包含密碼分享與登入裝置不限等便利功能。",
+ "your_profile": "您的個人資料",
+ "edit_profile": "編輯個人資料",
+ "change_password": "變更密碼",
+ "change_password_desc": "這是您登入 Locker 帳戶所用的密碼。",
+ "manage_sessions": "管理登入裝置",
+ "logout_all": "從所有裝置登出",
+ "setup_vault_options": "設定保險庫選項",
+ "your_inventory": "您的庫存",
+ "security_control": "安全設定",
+ "referral": "推薦好友",
+ "referral_link": "推薦連結",
+ "referral_desc": "邀請好友免費獲得 Premium",
+ "referral_details": "好友成功建立主密碼後,您和您的好友就能各自獲得 1 個月免費 Locker Premium",
+ "notifications": "通知",
+ "email_notifications": "電子郵件通知",
+ "system_email": "系統通知",
+ "master_password_change": "已更換主密碼",
+ "login_with_new_device": "已從新裝置登入",
+ "data_breach_scanning": "資料洩漏掃描",
+ "tips_and_tricks": "密碼管理建議與技巧",
+ "marketing_and_promotion": "行銷與促銷郵件",
+ "other": "其他",
+ "preferences": "偏好設定",
+ "import_export": "匯入/匯出",
+ "account_password": "帳戶密碼",
+ "master_password": "主密碼",
+ "two_factor_authentication": "雙因素認證(2FA)",
+ "two_step_verification": "開啟雙因素認證",
+ "two_factor_authentication_des": "為您的 Locker 帳戶設雙因素認證,打造更安全的防護。",
+ "learn_two_factor_authentication": "了解如何為 Locker 帳戶開啟雙因素認證",
+ "lock_desc": "立即鎖定保險庫",
+ "current_device": "目前使用的裝置",
+ "dont_find_lang": "找不到您的語言嗎?",
+ "extra_features": {
+ "feat1": {
+ "title": "密碼儲存空間不夠用?",
+ "desc": "僅需每月 $1.29 升級至 Premium,即可享有無限儲存空間與更多功能!",
+ "learn_more": {
+ "text": "進一步了解 Premium 方案",
+ "url": "https://support.locker.io/en/locker-password-manager/general-features/plans-and-pricing/upgrading-to-premium-plan"
+ },
+ "btn_text": "升級 Premium"
+ },
+ "feat2": {
+ "title": "安全的項目分享",
+ "desc": "透過 Locker Premium,項目分享變得更簡易安全。不論是 Locker 內或外分享,都能自訂分享方式!",
+ "learn_more": {
+ "text": "了解如何分享項目",
+ "url": "https://support.locker.io/en/locker-password-manager/vault-management/item-management/share-items"
+ },
+ "btn_text": "立即分享項目"
+ },
+ "feat3": {
+ "title": "緊急存取權限",
+ "desc": "新增可信任的聯絡人,讓他們能在緊急時刻存取你的項目!",
+ "learn_more": {
+ "text": "進一步了解緊急存取",
+ "url": "https://support.locker.io/en/locker-general/security-for-locker-account/set-up-emergency-access"
+ },
+ "btn_text": "新增可信任聯絡人"
+ },
+ "feat4": {
+ "title": "資料洩漏掃描",
+ "desc": "檢測並即時獲知你的資料是否曾在洩漏事件中外洩!",
+ "learn_more": {
+ "text": "立即掃描你的電子郵件地址",
+ "url": "https://support.locker.io/en/locker-password-manager/general-features/built-in-add-on-features/data-breach-scanner"
+ },
+ "btn_text": "檢查洩漏資料"
+ },
+ "feat5": {
+ "title": "密碼健康檢測",
+ "desc": "辨識強度不足、重複使用、或已外洩的密碼,更好地保護你的線上帳戶。",
+ "learn_more": {
+ "text": "進一步了解密碼健康檢測",
+ "url": "https://support.locker.io/en/locker-password-manager/general-features/built-in-add-on-features/password-health-checker"
+ },
+ "btn_text": "檢測弱密碼"
+ },
+ "feat6": {
+ "title": "私人電子信箱",
+ "desc": "產生無限數量的別名,保護真實的電子郵件地址。更配備額外的安全功能!",
+ "learn_more": {
+ "text": "進一步了解私人電子信箱",
+ "url": "https://support.locker.io/en/locker-maily/private-email-for-premium"
+ },
+ "btn_text": "取得無限別名"
+ },
+ "feat7": {
+ "title": "裝置登入管理",
+ "desc": "升級 Premium 以解除登入裝置數量的限制!",
+ "learn_more": {
+ "text": "進一步了解支援的裝置",
+ "url": ""
+ },
+ "btn_text": "升級 Premium"
+ },
+ "feat8": {
+ "title": "6 個家庭成員",
+ "desc": "使用 Locker Family 方案,守護您與親友的線上安全,享更優惠的價格,使用上更便利!",
+ "learn_more": {
+ "text": "進一步了解 Family 方案",
+ "url": "https://support.locker.io/en/locker-password-manager/general-features/plans-and-pricing/upgrading-to-family-plan"
+ },
+ "btn_text": "瞭解詳情"
+ }
+ },
+ "factor2": {
+ "title": "雙因素認證",
+ "is_on": "雙因素認證已啟用",
+ "is_off": "雙因素認證未啟用",
+ "send_code_via_email": "透過電子郵件發送代碼",
+ "email_sent": "電子郵件已發送至",
+ "enter_code": "請輸入驗證碼",
+ "resend_email": "重新發送電子郵件",
+ "factor2_app_des": {
+ "title": "透過第二道登入步驟,為您的帳戶增添額外的安全防護。",
+ "step1": "下載並安裝 Locker Password Manager 到您的手機或電腦。",
+ "step2": "將此組金鑰 {key} 手寫到紙上並保管好。若您遺失或換新了裝置,將會需要這組金鑰。",
+ "step3": "在手機或電腦上開啟 Locker Password Manager 應用程式,前往「一次性密碼」(OTP)頁面,並使用手機掃描下方的 QRCode。",
+ "step4": "在下方輸入應用程式產生的一次性驗證碼。"
+ },
+ "factor2_email_des": {
+ "title": "當我們偵測到從異常裝置的登入嘗試時,將要求您輸入安全代碼。"
+ }
+ }
+ },
+ "tools": {
+ "password_generator": "密碼產生器",
+ "password_generator_desc": "為您的帳戶建立安全密碼",
+ "password_health": "密碼健康檢測",
+ "password_health_desc": "辨識會使您遭受風險的密碼",
+ "relay": "Locker 私人電子信箱",
+ "relay_desc": "對線上服務供應商隱藏您的電子郵件",
+ "data_breach": "資料洩漏掃描",
+ "data_breach_desc": "檢查您的機敏資料是否曾外洩於線上",
+ "copy_password": "複製密碼",
+ "fill_password": "自動填入密碼",
+ "show_options": "顯示選項",
+ "uppercase": "包含大寫(A-Z)",
+ "lowercase": "包含小寫(a-z)",
+ "digits": "包含數字(0-9)",
+ "symbols": "包含特殊符號(@!$%*)",
+ "ambiguous": "避免容易混淆的字元",
+ "reused_passwords": "重複使用的密碼",
+ "exposed_passwords": "遭外洩的密碼",
+ "weak_passwords": "強度不足的密碼",
+ "weak_passwords_desc": "容易被猜測",
+ "reused_passwords_desc": "使用於多個帳戶",
+ "exposed_passwords_desc": "遭外洩的密碼是指駭客透過已知的資料洩漏事件揭露,並在網路上公開或於暗網上販售的密碼。",
+ "good_news": "好消息",
+ "weak_passwords_found": "發現了強度不足的密碼",
+ "good_news_details": "您保險庫中所有项目的密碼強度都足夠。",
+ "weak_passwords_found_details": "我們在您的保險庫中發現有 {data} 個項目密碼強度不足。您應該將它們修改成更強的密碼。",
+ "reused_passwords_found": "發現了重複使用的密碼",
+ "reused_passwords_found_details": "我們發現保險庫中有 {data} 組密碼被重複使用。您應該將它們都修改成獨特的密碼。",
+ "good_news_reused_details": "您的保險庫中沒有重複使用的密碼。",
+ "exposed_passwords_found": "發現了遭外洩的密碼",
+ "exposed_passwords_found_details": "我們發現在您的保險庫中有 {data} 個項目的密碼曾在已知的資料洩漏事件中被揭露。您應該將這些密碼修改成新的。",
+ "good_news_exposed_details": "您的保險庫中沒有密碼曾在已知的資料洩漏事件中被揭露。",
+ "times": "次",
+ "used": "使用於",
+ "exposed": "曾外洩",
+ "breach_scanner_desc": "所謂的「被駭」(breached)指的是網站資料遭駭客非法存取並隨後公諸於世的事件。請檢閱被駭時遭外洩的資料類別(如電子郵件地址、密碼、信用卡號等),並採取適當的行動,例如修改密碼。",
+ "check_breach_title": "檢查您使用的任一使用者名稱或子郵件地址",
+ "check_breach_button": "檢查外洩情況",
+ "breach_found": "已發現外洩的帳戶",
+ "breach_not_found_details": "沒有在任何已知資料洩漏事件中找到 {email}。",
+ "breach_found_details": "在網路上有 {count} 筆不同的資料洩漏事件中發現 {email}。",
+ "breach_compromised_data": "遭外洩的資料",
+ "breach_affected_users": "波及的使用者數",
+ "breach_occurred": "洩漏事件日期",
+ "breach_reported": "洩漏事件通報日期",
+ "relay_your_root_email": "您的原始電子信箱:",
+ "relay_desc_1": "所有寄到別名的信件都會轉寄至您的原始電子信箱。",
+ "relay_desc_2": "您可以透過別名回信給寄件人。",
+ "relay_desc_3": "最多可同時產生及使用 5 個別名。",
+ "relay_desc_4": "您有一個可編輯的別名。",
+ "relay_desc_1_premium": "所有寄到別名的信件都會轉寄至您的原始電子信箱。",
+ "relay_desc_2_premium": "您可以透過別名回信給寄件人。",
+ "relay_desc_3_premium": "可以產生及使用無上限數量的別名。",
+ "relay_desc_4_premium": "您有一個可自訂的別名及一個子網域。",
+ "relay_your_alias_addresses": "您的別名",
+ "relay_new_alias": "新別名",
+ "relay_manage_subdomain": "管理子網域",
+ "relay_use_subdomain": "使用子網域",
+ "relay_alias_added": "已新增別名",
+ "relay_alias_edited": "已更新別名",
+ "relay_alias_deleted": "已刪除別名",
+ "learn_more_private_email": "瞭解更多 Locker 私人電子信箱",
+ "edit_relay_alias": {
+ "title": "編輯別名",
+ "desc": "Locker 將不再轉發寄到 {email} 的信件,包含能讓您重置丟失的密碼的信件。",
+ "warning": "如果您使用這個別名登入網站,您應該在更新這個別名前,先將登入信息更新為其他電子信箱。",
+ "confirm": "是,更新它"
+ },
+ "delete_relay_alias": {
+ "title": "確定要永久刪除此別名嗎?",
+ "desc": "一旦您刪除此別名,將無法復原。Locker 將不再轉發寄到 {email} 的信件,包含能讓您重置丟失的密碼的信件。",
+ "warning": "如果您使用這個別名登入網站,您應該在刪除這個別名前,先將登入信息更新為其他電子信箱。",
+ "confirm": "是,刪除它"
+ },
+ "relay_address": {
+ "edit_title": "編輯私人電子信箱",
+ "forwarded": "已轉寄",
+ "blocked": "遭封鎖",
+ "block_all": "封鎖所有信件",
+ "block_all_desc": "封鎖所有信件,包含廣告信或是垃圾郵件。",
+ "block_spam": "封鎖垃圾郵件",
+ "block_spam_desc": "封鎖廣告信與垃圾郵件。只轉發重要信件。",
+ "forward": "轉寄",
+ "forward_desc": "轉寄所有信件至原始電子信箱。"
+ },
+ "relay_subdomain": {
+ "manage_subdomain": "管理子網域",
+ "create_subdomain": "建立新子網域",
+ "your_subdomain": "您的子網域",
+ "new_subdomain": "新子網域",
+ "change_subdomain": "更換子網域",
+ "edit_desc": "當您更換新子網域,目前的子網域將會被永久刪除。從您目前子網域下建立的所有別名,也會一併被刪除。",
+ "create_desc": "子網域能讓您建立自訂信箱網域。
範例: viktor@viktor-agency.maily.org"
+ }
+ },
+ "welcome": {
+ "title": "歡迎使用 Locker",
+ "text1": "您可以安全地儲存各種密碼、記事、線上購物的記錄,甚至是重要文件。",
+ "text2": "不論您在哪裡工作,您的保險庫都能和所有裝置同步,讓您保持資料整齊又節省時間。",
+ "text3": "為了更方便使用,您可以前往 這裡 下載 Locker 擴充套件。"
+ },
+ "password_policies": {
+ "password_violated": "密碼不合規定",
+ "password_violated_desc": "您的密碼違反以下 {team} 的規定",
+ "confirm_violation": "仍然使用此密碼",
+ "min_password_length": "最短密碼長度為 {length}",
+ "min_password_length_desc": "啟用後,您將可以為這個團隊的所有成員設定密碼所需的最短長度。",
+ "max_password_length": "最大密碼長度",
+ "max_password_length_desc": "啟用後,您將可以為這個團隊的所有成員設定密碼最長可以多長。",
+ "password_complexity": "密碼複雜度",
+ "password_complexity_desc": "啟用後,您將可以為這個團隊的所有成員設定密碼組成的相關規定。",
+ "failed_login_attempts": "封鎖多次登入失敗",
+ "failed_login_attempts_desc": "啟用後,您將控制用戶失敗的登入嘗試次數。",
+ "min_password_length_rcm": "CIS規範建議密碼安全性的最低長度為 8 個字元。",
+ "max_password_length_rcm": "最長密碼長度不能小於最短密碼長度。",
+ "requires_lowercase": "須包含小寫字母(abc)",
+ "requires_uppercase": "須包含大寫字母(ABC)",
+ "requires_special": "須包含特殊符號(@#!$%)",
+ "requires_number": "須包含數字(0 1 2 3)",
+ "avoid_ambiguous": "避免相似的字符(像是 O 和 0,l 和 I……等等)",
+ "notice": "提示:這些設定只會套用於未來團隊共享的密碼,先前建立的密碼不受影響。",
+ "failed_login_how_many": "允許多次登入失敗?",
+ "failed_login_how_long": "在多久時間內,連續 {failed_login_attempts} 次登入失敗後封鎖使用者?",
+ "failed_login_how_much_time": "需隔多久後使用者方可再次登入?",
+ "failed_login_owner_email": "當有成員因為連續登入失敗遭到封鎖,發送信件給團隊所有者",
+ "failed_login_times": {
+ "oneLogin": "1 次登入失敗",
+ "twoLogins": "2 次登入失敗",
+ "threeLogins": "3 次登入失敗",
+ "fourLogins": "4 次登入失敗",
+ "fiveLogins": "5 次登入失敗",
+ "tenLogins": "10 次登入失敗",
+ "fifteenLogins": "15 次登入失敗"
+ },
+ "block_mobile": "封鎖手機存取權",
+ "block_mobile_desc": "",
+ "ip_filtering": "IP 位置限制",
+ "ip_filtering_desc": "",
+ "ip_allow": "允許的 IP 位址",
+ "ip_block": "遭封鎖的 IP 位址",
+ "failed_login_owner_email_desc": ""
+ },
+ "emergency_access": {
+ "emergency_access": "緊急存取權限",
+ "emergency_access_desc": "授予可信任聯絡人緊急時存取您帳戶的權限。在緊急情況下,可信任聯絡人將能申請檢視或接管您的帳戶。若想知道運作方式或是零知識分享如何保障資料安全的細節,請參考說明文件。",
+ "learn_more": "瞭解更多關於緊急存取權限",
+ "emergency_access_owner_warning": "您是 1 或多個團隊的擁有者。若您授予緊急聯絡人接管帳戶的權限,對方在接管後將能使用您所有的擁有者權限。",
+ "trusted_emergency_contacts": "您的可信任聯絡人",
+ "no_trusted_contacts": "您尚未添加任何聯絡人。請邀請可信任聯絡人。",
+ "add_emergency_contact": "新增可信任聯絡人",
+ "designated_emergency_contacts": "委託您為緊急聯絡人",
+ "no_granted_access": "尚未被任何人指定為緊急聯絡人",
+ "invite_emergency_contact": "邀請可信任聯絡人",
+ "edit_emergency_contact": "編輯聯絡人",
+ "invite_emergency_contact_desc": "請在下方填寫對方的 Locker 電子信箱,邀請成為緊急聯絡人。若對方尚未有 Locker 帳戶,將會被引導至建立新帳戶頁面。",
+ "emergency_access_recovery_initiated": "已提交緊急使用權限申請",
+ "emergency_access_recovery_approved": "核准緊急使用權限申請",
+ "view": "檢視",
+ "view_desc": "對方將能檢視您所有保險庫項目。",
+ "takeover": "接管",
+ "takeover_desc": "對方將能重設您的主密碼。",
+ "reset_master_pw": "重設對方 Locker 主密碼",
+ "reset_pw": "重設對方 Locker 密碼",
+ "wait_time": "等待時間",
+ "wait_time_desc": "自動授予權限前須等待的時間",
+ "one_day": "1 天",
+ "invited_user": "已邀請使用者",
+ "accept_emergency_access": "您獲邀為上述使用者的緊急聯絡人。要接受邀請,需要登入 Locker,若尚無帳戶請先建立一個。",
+ "emergency_invite_accept_failed": "無法接受邀請。請要求使用者再次發送邀請。",
+ "emergency_invite_accepted_desc": "完成身份驗證後,您將可以存取此使用者的緊急取用管理選項,驗證後您會收到電子郵件通知。",
+ "request_access": "請求存取權限",
+ "user_access": "使用者存取權限",
+ "grantee_recovery_initiated_info": "{day} 天後,或是對方手動核准後,將授予您存取權限。",
+ "grantor_recovery_initiated_info": "{day} 天後,或是您手動核准申請後,對方將能存取您的帳戶。",
+ "invitation": "成為緊急聯絡人邀請",
+ "invitation_details": "您受邀成為以下聯絡人的緊急聯絡人:",
+ "access_type": "存取權限類型",
+ "status": {
+ "invited": "已邀請",
+ "accepted": "已接受",
+ "confirmed": "已確認",
+ "expired": "已過期",
+ "recovery_initiated": "已提交申請",
+ "recovery_approved": "已核准申請"
+ },
+ "pending_request": "待回覆的申請 | 待回覆的申請"
+ },
+ "wait_time_days": {
+ "oneDay": "1 天",
+ "twoDays": "2 天",
+ "sevenDays": "7 天",
+ "fourteenDays": "14 天",
+ "thirtyDays": "30 天",
+ "ninetyDays": "90 天"
+ },
+ "instructions": {
+ "see_details": "請至我們的說明網頁查看詳細操作說明:",
+ "bitwarden_link": "https://support.locker.io/en/locker-password-manager/get-started/import-and-export/import-data-from-bitwarden-to-locker",
+ "lastpasscsv_link": "https://support.locker.io/en/locker-password-manager/get-started/import-and-export/import-data-from-lastpass-to-locker",
+ "chromecsv_link": "https://support.locker.io/en/locker-password-manager/get-started/import-and-export/import-data-from-google-chrome-to-locker",
+ "firefoxcsv_link": "https://support.locker.io/en/locker-password-manager/get-started/import-and-export/import-data-from-mozilla-firefox-to-locker",
+ "1password_link": "https://support.locker.io/en/locker-password-manager/get-started/import-and-export/import-data-from-1password-to-locker",
+ "keepassxcsv_link": "https://support.locker.io/en/locker-password-manager/get-started/import-and-export/import-data-from-keepassx-to-locker",
+ "aviracsv": "在 Avira 網頁版保險庫中,點選「Settings」→「My Data」→「Export data」並儲存成 CSV 檔。",
+ "blurcsv": "在 Blur 網頁版保險庫中,於右上角點選您的使用者名稱,前往「Settings」→「Export Data」,接著在「Accounts」欄位點選「Export CSV」。",
+ "safeincloudxml": "開啟 SaveInCloud 桌面應用程式,點選「File」→「Export」→「As XML」,然後儲存 XML 檔案。",
+ "padlockcsv": "開啟 Padlock 桌面應用程式,點選左上角的漢堡圖示,接著前往「Settings」→「Export」按鈕,並選擇「As CSV」儲存檔案。",
+ "keepass2xml_link": "https://support.locker.io/en/locker-password-manager/get-started/import-and-export/import-data-from-keepass-to-locker",
+ "upmcsv": "開啟 Universal Password Manager 桌面應用程式,點選「Database」→「Export」,然後儲存 CSV 檔案。",
+ "saferpasscsv": "開啟 SaferPass 瀏覽器擴充套件,點選左上角的漢堡圖示,前往「Settings」。點選「Export accounts」按鈕來儲存 CSV 檔案。",
+ "meldiumcsv": "開啟 Meldium 網頁版保險庫,前往「Settings」,尋找「Export data」功能,點選「Show me my data」來儲存 CSV 檔案。",
+ "keepercsv_link": "https://support.locker.io/en/locker-password-manager/get-started/import-and-export/import-data-from-keeper-to-locker",
+ "passworddragonxml": "開啟 Password Dragon 桌面應用程式,點選「File」→「Export」→「To XML」。接著在跳出的視窗中,選擇「All Rows」勾選所有欄位,並且點選「Export」按鈕儲存 XML 檔案。",
+ "enpass_link": "https://support.locker.io/en/locker-password-manager/get-started/import-and-export/import-data-from-enpass-to-locker",
+ "pwsafexml": "開啟 Password Safe 桌面應用程式,點選「File」→「Export To」→「XML format...」,然後儲存 XML 檔案。",
+ "dashlanejson": "開啟 Dashlane 桌面應用程式,點選「File」→「Export」→「Unsecured archive (readable) in JSON format」,然後儲存 JSON 檔案。",
+ "msecurecsv": "開啟 mSecure 桌面應用程式,點選「File」→「Export」→「CSV File...」,然後儲存 CSV 檔案。",
+ "stickypasswordxml": "開啟 Sticky Password 桌面應用程式,於右上角點選「Menu」→「Export」→「Export all」。選擇非加密的 XML 格式,並儲存 XML 檔案。",
+ "truekeycsv": "開啟 True Key 桌面應用程式,點選右上角的齒輪圖示,並前往「App Settings」。點選「Export」按鈕,輸入您的密碼,然後儲存 CSV 檔案。",
+ "clipperzhtml": "登入 Clipperz 網頁應用程式(clipperz.is/app)。點選右上角的漢堡圖示展開導覽選單。前往「Data」→「Export」。點選「download HTML+JSON」按鈕來儲存 HTML 檔案。",
+ "roboformcsv": "開啟 RoboForm Editor 桌面應用程式,點選左上角的「RoboForm」→「Options」→「Account & Data」,然後點選「Export」按鈕。選擇所有項目,將「Format」改為「CSV file」後,再點選「Export」按鈕來儲存 CSV 檔案。注意:RoboForm 只能匯出登入資料,不能匯出其他項目。",
+ "passboltcsv": "登入 Passbolt 網頁版保險庫,前往「Passwords」列表。選擇您想匯出的資料並點選列表上方的「Export」按鈕。選擇「csv (lastpass)」格式,再點選「Export」按鈕。",
+ "ascendocsv": "開啟 Ascendo DataVault 桌面應用程式,點選「Tools」→「Export」。接著在跳出的視窗裡選擇「All Items (DVX, CSV)」選項,然後點選「OK」按鈕來儲存 CSV 檔案。",
+ "passwordbossjson": "開啟 Password Boss 桌面應用程式,點選「File」→「Export data」→「Password Boss JSON - not encrypted」,然後儲存 JSON 檔案。",
+ "zohovaultcsv": "登入 Zoho 網頁版保險庫(vault.zoho.com)。前往「Tools」→「Export Secrets」。選擇「All Secrets」並點選「Zoho Vault Format CSV」按鈕。反白選取文字方塊中的數據,並開啟記事本等文字編輯器貼上。最後,把檔案儲存成 zoho_export.csv
。",
+ "splashidcsv": "開啟 SplashID Safe 桌面應用程式,在右上角點選 SplashID 的藍色鎖頭圖示。前往「Export」→「Export as CSV」,然後儲存 CSV 檔案。",
+ "passkeepcsv": "開啟 PassKeep 行動App,前往「Backup/Restore」區塊,點選「CSV Backup/Restore」,並選擇「Backup to CSV」來儲存 CSV 檔案。",
+ "gnomejson": "請確認您有安裝 python-keyring 和 python-gnomekeyring。請將 GNOME Keyring Import/ Export 的 python script 儲存到桌面,命名為 pw_helper.py。 開啟終端機執行 `chmod +rx Desktop/pw_helper.py` 以及 `python Desktop/pw_helper.py export Desktop/my_passwords.json`。最後,將 my_passwords.json 檔案上傳到 Locker。",
+ "passwordagentcsv": "開啟 Password Agent 桌面應用程式,點選「File」→「Export」。點選「Fields to export 」按鈕,並勾選所有欄位,接著把「Output format」改為「CSV」,然後點選「Start」按鈕儲存 CSV 檔案。",
+ "passpackcsv": "登入 Passpack 網頁版保險庫,前往「Settings」→「Export」,然後點選「Download」按鈕儲存 CSV 檔案。",
+ "passmanjson": "開啟您的 Passman 保險庫,點選左下角的「Settings」。在「Settings」視窗內切換到「Export credentials」分頁,選擇「JSON」作為匯出類型。輸入您的保險庫密碼,然後點選「Export」按鈕來儲存 JSON 檔案。",
+ "avastcsv": "開啟 Avast Passwords 桌面應用程式,前往「Settings」→「Import/export data」,在「Export to CSV file」選項中點選「Export」按鈕儲存 CSV 檔案。",
+ "avastjson": "開啟 Avast Passwords 桌面應用程式,前往「Settings」→「Import/export data」,在「Export to JSON file」選項中點選「Export」按鈕儲存 JSON 檔案。",
+ "fsecurefsk": "開啟 F-Secure KEY 桌面程式,前往「設定」→「Export Passwords」。選擇「匯出」按鈕,輸入您的主密碼,並儲存 FSK 檔案。",
+ "kasperskytxt": "開啟 Kaspersky Password Manager 桌面程式,前往「設定」→「Import/Export」。找到「匯出為文字檔」區塊,並點選「匯出」按鈕儲存 TXT 檔案。",
+ "remembearcsv": "開啟 RememBear 桌面程式,前往「設定」→「帳戶」→「匯出」。輸入您的主密碼,然後點選「無論如何都要匯出」按鈕儲存 CSV 檔案。",
+ "passwordwallettxt": "開啟 PasswordWallet 桌面程式,前往「檔案」→「匯出」→「Visible entries to text file」。輸入您的密碼,然後點選「OK」按鈕儲存 TXT 檔案。",
+ "mykicsv": "開啟 Myki 桌面瀏覽器擴充套件,前往「進階」→「匯出帳戶」,接著用行動裝置掃描 QR Code。將會有多個 CSV 檔案儲存到電腦的下載資料夾。",
+ "securesafecsv": "將 SecureSafe 密碼管理器儲存檔匯出為以逗號分隔的 CSV 檔案。",
+ "logmeoncecsv": "開啟 LogMeOnce 瀏覽器擴充套件,前往「Open Menu」→「匯出至」,並選擇「CSV File」儲存 CSV 檔案。",
+ "blackberrycsv": "開啟 BlackBerry Password Keeper 應用程式,前往「設定」→「Import/Export」,選擇「Export Passwords」,並依照螢幕上指示儲存 CSV 檔案。",
+ "buttercupcsv": "開啟 Buttercup 桌面程式,並解鎖您的保險庫。右鍵點選保險庫圖示,並選擇「匯出」來儲存 CSV 檔案。",
+ "codebookcsv": "開啟 Codebook 桌面程式並登入,前往「檔案」→「匯出所有」,接著點選對話框上的「是」儲存 CSV 檔案。",
+ "encryptrcsv": "開啟 Encryptr 桌面程式最新版,並等待所有資料同步完成。當同步完成後,右上角的下載圖示會轉為粉紅色。點選下載圖示並儲存 CSV 檔案。",
+ "yoticsv": "在 Yoti 瀏覽器擴充套件內,點選「設定」→「Export Saved Logins」儲存 CSV 檔案。",
+ "safaricsv_link": "https://support.locker.io/en/locker-password-manager/get-started/import-and-export/import-data-from-safari-to-locker",
+ "dashlane_link": "https://support.locker.io/en/locker-password-manager/get-started/import-and-export/import-data-from-dashlane-to-locker",
+ "nordpasscsv_link": "https://support.locker.io/en/locker-password-manager/get-started/import-and-export/import-data-from-nordpass-to-locker",
+ "roboformcsv_link": "https://support.locker.io/en/locker-password-manager/get-started/import-and-export/import-data-from-roboform-to-locker"
+ },
+ "sharing": {
+ "member": "成員",
+ "invited": "已邀請",
+ "accepted": "待對方確認",
+ "confirmed": "已共享",
+ "shared": "已共享",
+ "pending": "待處理",
+ "waiting": "待對方確認",
+ "new_share": "新共享",
+ "encrypted_content": "加密內容",
+ "tips": "小提示",
+ "tips_title": "請接受邀請來檢視這項目",
+ "enter_email_or_group": "個人電子信箱或團隊名稱",
+ "shared_to_new_member": "已成功將項目共享給新成員",
+ "item_no_longer_shared": "此項目已停止共享",
+ "search_inventory": "搜尋清單",
+ "choose_sharing_option": "選擇您的共享設定",
+ "share_desc": "與 Locker 使用者或使用者群組共享(僅 Locker 企業版支援)。對方將能查看或編輯您的項目內容。",
+ "quick_share_desc": "傳送一個項目連結給任何人,對方不需要 Locker 帳戶即可檢視內容。",
+ "quick_share": {
+ "empty_desc": "傳送這個項目的連結給任何人,對方不需要 Locker 帳戶即可檢視內容。",
+ "choose_item": "選擇一個項目",
+ "emails_label": "請輸入共享名單的電子信箱",
+ "emails_desc": "對方需要驗證電子郵件地址才能存取項目",
+ "expire_after": "連結有效期限",
+ "expire_on": "此共享項目連結有效期限",
+ "get_link": "取得共享連結",
+ "no_expires": "不會過期",
+ "anyone_with_link": "任何擁有連結的人",
+ "anyone": "任何人",
+ "nobody": "無人",
+ "only_some": "僅限受邀的對象",
+ "unlimited": "不限次數",
+ "times_access": "允許存取次數",
+ "receiver": "收件人",
+ "copy_link": "複製連結",
+ "sharing_time": "共享時間",
+ "view": "檢視 | 檢視次數",
+ "expiration": "到期日",
+ "hide_info": "隱藏內容",
+ "show_info": "顯示內容",
+ "view_item": {
+ "intro": {
+ "title": "快速又簡單",
+ "desc": "使用 Locker 快速共享能讓您以加密方式共享敏感資訊(如密碼、加密資產等)。分享的連結也會自動過期,讓您可以保有隱私,也能確保資料不會永遠留在網路上。",
+ "btn": "立刻試用 Locker!"
+ },
+ "messages": {
+ "check_email": "請檢查您的信箱",
+ "no_access": "您沒有權限檢視這個項目。請改用其他信箱試試。",
+ "wrong_otp": "一次性密碼不正確。請輸入正確的一次性密碼。"
+ },
+ "no_item": {
+ "title": "抱歉,沒有可檢視的項目",
+ "desc": "可能是以下其中一個狀況:",
+ "reasons": [
+ "檢視項目的連結已過期或使用次數已達上限。",
+ "擁有者已停止共享此項目。",
+ "您輸入的連結不正確。"
+ ]
+ },
+ "require_email": {
+ "title": "您已收到機敏資料",
+ "desc_email": "檢視內容前,您需要先驗證信箱。請輸入您的信箱以接收一次性密碼",
+ "send_code": "發送驗證碼",
+ "desc_otp": "請輸入一次性密碼",
+ "resend_code": "重新發送驗證碼"
+ }
+ }
+ }
+ },
+ "family_member": {
+ "header": "管理成員",
+ "info_upgrade": "升級到 Family 方案並邀請您的好友加入 Locker!",
+ "add_noti": "已成功加入成員 ",
+ "delete_noti": "已成功刪除成員",
+ "confirm": "您確定要把這位使用者從 Family 方案中移除嗎?",
+ "action": "邀請",
+ "title": "新增成員到您的 Family 方案",
+ "placeholder": "邀請成員加入您的方案",
+ "list_member_title": "您新增到方案的成員將顯示在下方清單中",
+ "select_person": "選擇成員",
+ "number_member": "您方案內的成員",
+ "remove": "移除家庭成員",
+ "confirm_delete_member_all": "您確定要把 {email} 從您的 Family 方案移除嗎?",
+ "confirm_delete_member": "移除成員",
+ "unknown": "不確定",
+ "unknown_tooltip": "這個人還沒有 Locker 帳戶,但只要用這個電子郵件建立帳戶就能立即有 Premium 資格。",
+ "learn_more": "了解更多",
+ "number_member_detail": "{currentNumber}/{planMember} 位使用者",
+ "bill_annually_desc": "*註:僅限年繳。月繳價格為 {monthlyPrice} / 月 / 6 位使用者。",
+ "mo_per_6_users": "/ 月 / 6 位使用者*"
+ },
+ "enterprise": {
+ "join_now": "立即加入",
+ "request_to_join": "申請加入",
+ "popup": {
+ "title": "加入團隊",
+ "desc": "加入您的團隊後方可繼續使用 Locker。",
+ "text1": "此帳戶是由 {enterpriseName} 管理。",
+ "text2": "別擔心,您還是可以使用個人保險庫。但是,{enterpriseName} 會有權限控管您帳戶的某些設定,像是:",
+ "list": [
+ "啟用、停用、或禁用您的帳戶",
+ "將您加到團隊中",
+ "為您的帳戶套用密碼政策"
+ ],
+ "text3": "您所有保險庫資料將維持不變。{enterpriseName} 無法看到您的資料或主密碼。",
+ "text4": "您必需向 {enterpriseName} 提出存取申請,才能繼續使用 Locker 帳戶。",
+ "subtitle": "有使用者邀請您加入他們的 Locker 團隊。",
+ "oragnization": "團隊",
+ "inviter": "邀請者",
+ "accept": {
+ "title": "若您同意邀請:",
+ "list": [
+ "您的帳戶會升級成企業用戶方案",
+ "您的帳戶會屬於這個團隊",
+ "您的保險庫仍舊是您的,包含管理員在內,沒有人能看或編輯您的資料",
+ "管理員可以為您的帳戶套用企業級設定。了解 Locker 企業版的設定",
+ "管理員可以禁用您的帳戶。這代表在他們啟用前,您將失去存取保險庫的權限。"
+ ]
+ },
+ "decline": {
+ "title": "若您不想加入這個團隊:",
+ "list": [
+ "按一下「拒絕」就好。不會再跳出詢問視窗。"
+ ]
+ }
+ },
+ "banner": {
+ "title": "已受邀加入 {team}",
+ "desc": "{owner} 邀請您加入 {team}。"
+ },
+ "warning": {
+ "text": "我們無法為您的 Locker 續訂方案。請在 {time} 之前更新您的付款資訊,否則將無法使用 Locker 密碼管理器。",
+ "link": "更新付款方式"
+ },
+ "about_to_expire_warning": {
+ "text": "您的 Locker 企業方案即將過期。請在 {time} 之前完成付款,才能繼續使用 Locker 企業版。",
+ "link": "更新付款方式"
+ }
+ },
+ "policies": {
+ "title": "安全設定",
+ "violated_items": "違規項目",
+ "no_active_policies": "目前沒有任何啟用的安全設定。",
+ "you_are_a_member_of": "您的帳戶屬於",
+ "rules_being_applied": "任何啟用的密碼設定將會顯示在下方。",
+ "policy_details": "設定內容",
+ "password_requirement": "密碼需求",
+ "password_requirement_desc": "您的公司已為您的密碼設定最佳安全實踐方式。",
+ "password_requirement_policy_details": "您保險庫中的所有密碼都必需符合這些需求:",
+ "password_requirement_note": "請注意,您還是能建立不符合需求的新密碼。但是,管理員會知悉這些違規狀況。強烈建議您為提升安全性修改這些違規的密碼。
(*)共享的密碼不受此規範影響。",
+ "you_have_violated_items": "您有 {count} 個違規項目",
+ "master_password_requirement": "主密碼需求",
+ "master_password_requirement_desc": "建立一組旁人猜不出的主密碼",
+ "master_password_requirement_policy_details": "您的主密碼需要符合:",
+ "need_to_change_master_pw": "您需要修改主密碼",
+ "block_failed_logins": "封鎖多次登入失敗",
+ "block_failed_logins_desc": "在指定時間內封鎖多次登入失敗,以防止暴力破解攻擊。",
+ "block_failed_logins_policy_details": "您的工作區封鎖了連續的登入失敗嘗試。如果您無法登入 Locker,請聯繫您的工作區管理員解鎖。",
+ "you_have_been_blocked": "您這個月已遭到封鎖 {count} 次",
+ "passwordless": "無密碼登入",
+ "passwordless_desc": "使用無密碼方式登入 Locker。",
+ "passwordless_policy_details": "您的管理員要求您使用無密碼方式登入 Locker。",
+ "2fa": "使用兩步驟驗證(2FA)登入",
+ "2fa_desc": "在新裝置上初次登入 Locker 時使用兩步驟驗證(2FA)。",
+ "2fa_policy_details": "{target} 需要在新裝置上初次登入 Locker 時,使用兩步驟驗證(2FA)。",
+ "lock_by_2fa": {
+ "title": "啟用兩步驟驗證",
+ "desc": "您的團隊要求登入時使用兩步驟驗證(2FA)。請啟用 2FA 後繼續。",
+ "enable_btn": "啟用兩步驟驗證",
+ "logout_text": "要使用其他帳戶嗎?"
+ },
+ "violation": "{count} 個違規"
+ },
+ "welcome_business": {
+ "title": "歡迎使用 Locker 企業版!",
+ "content": {
+ "text_1": "使用 Locker 企業版,您可以:",
+ "list": [
+ "邀請成員加入 Locker",
+ "建立、管理共用資料夾,提升協作效率",
+ "為整個團隊設定密碼政策",
+ "追蹤成員的安全設定遵守情況",
+ "追蹤活動和違規狀況"
+ ],
+ "text_2": "點選左側選單中的「企業控制台」,就可以開始使用 Locker 企業版。"
+ },
+ "dont_show": "不再顯示",
+ "go_dashboard": "前往控制台"
+ },
+ "rewards": {
+ "subtitle": "參加我們的獎勵計畫,為 Locker 訂閱省錢。每完成一個項目,您就可以獲得一個月的 Premium/Family 方案免費試用,或是年繳方案的折扣。折扣可以累積!",
+ "note1": "{plan} 免費 {month} 個月",
+ "note2": "{percent}% 折扣碼",
+ "no_discount": "還沒有折扣碼可以收取。行動後,可以獲得最高 {percent}% 的折扣",
+ "progress": "已可收取 {percent}% 折扣碼",
+ "progress1": "已可收取 {percent}% 折扣碼。使用新折扣碼將替換現有 {current_percent}% 的折扣碼",
+ "process2": "已收取所有折扣碼",
+ "discontinue": "中止您的計費週期",
+ "discontinue_note": "可以在目前的訂閱期滿後,再開始使用免費月份。",
+ "steps": [
+ {
+ "key": 1,
+ "name": "尚未開始",
+ "value": "not_started",
+ "icon": "power",
+ "class": "text-black-400",
+ "status": "wait"
+ },
+ {
+ "key": 2,
+ "name": "驗證中",
+ "value": "under_verification",
+ "icon": "under-verification",
+ "class": "text-warning",
+ "status": "wait"
+ },
+ {
+ "key": 3,
+ "name": "已發送獎勵",
+ "value": "reward_sent",
+ "icon": "reward-sent",
+ "class": "text-green",
+ "status": "wait"
+ }
+ ],
+ "get_code": {
+ "title": "領取折扣碼",
+ "note": "或是繼續完成其他行動來獲得最高 {percent}% 的折扣",
+ "redeem_code": "兌換折扣碼",
+ "process": "已累積 {value} 個折扣碼",
+ "description": "此 {percent}% 折扣碼的有效期限至 {time}",
+ "your_codes": "您的折扣碼",
+ "popup": {
+ "title": "確定要領取 {percent}% 折扣碼嗎?",
+ "desc": "取得折扣碼後,您可以直接以折扣碼結帳,或是繼續完成其他任務來取得更高折扣(最高可達 {percent}%)",
+ "note": "此折扣碼的有效期限至 {time}",
+ "note1": "此折扣碼的有效期限至 {time}",
+ "redeem_now": "立即兌換",
+ "redeem_note": "可立即或於 {time} 之前兌換。您可在「獎勵」分頁查看折扣碼。"
+ }
+ },
+ "verify_popup": {
+ "continue": "繼續",
+ "go_to_plan": "前往方案與計費",
+ "congrats": "恭喜您",
+ "congrats_desc": "您完成 {action} 任務,獲得了 1 個月的 {plan} 免費試用資格。中止目前的計費週期,您可以在訂閱到期後開始免費月份的使用。",
+ "congrats_desc1": "您完成 {action} 任務,獲得了 {percent}% 折扣!您目前已累積 {current_discount}% 的折扣。馬上領取折扣碼或繼續完成其他任務,以獲得最高 {remain_percent}% 的折扣。",
+ "congrats_desc2": "您完成 {action} 任務,獲得了 {percent}% 折扣!您目前已累積 {current_discount}% 的折扣。領取折扣碼後可立即使用。",
+ "resubmit": {
+ "title": "糟糕!",
+ "desc": "無法驗證您已完成 {action} 的動作。這可能是由於您的評論尚未在 {store} 上顯示,或是您輸入了有誤的顯示名稱。請在評論於 {store} 上顯示後重新檢查,並於 24 小時內再次提交您的顯示名稱。",
+ "desc1": "抱歉,{action} 任務未能順利完成,因此無法獲取獎勵,請重新進行這個任務來獲取獎勵",
+ "desc2": "或者聯繫 support@locker.io 了解詳情。",
+ "desc3": "無法驗證 {action} 的任務完成狀況。請重新安裝並登入 Locker 桌面應用程式,以便獲得獎勵。"
+ }
+ },
+ "referral": {
+ "title": "推薦好友",
+ "subtitle": "邀請好友註冊,您與好友皆可獲得一個月的 Locker Premium 免費試用。",
+ "subtitle1": "推薦連結",
+ "subtitle1_desc": "好友註冊 Locker 成功後(建立主密碼),您與好友皆可獲得一個月的 Premium 免費試用。"
+ },
+ "ext_installation": {
+ "title": "瀏覽器擴充套件安裝與評論",
+ "subtitle": "在兩個瀏覽器上安裝、登入 Locker 擴充套件,並在套件商店留言,可獲得 Locker Premium/Family 一個月免費使用。",
+ "subtitle1_desc": "執行步驟:
(1) 在兩個不同的瀏覽器上安裝並登入 Locker 擴充套件
(2) 在套件商店裡給評價與評論
(3) 勾選已完成的商店,輸入使用者名稱/信箱
(4) 按下發送按鈕",
+ "btn": "發送",
+ "input_placeholder": "輸入顯示名稱"
+ },
+ "desktop_installation": {
+ "title": "安裝桌面程式",
+ "header_btn": "下載 Locker 桌面應用程式",
+ "subtitle": "在 Locker 桌面應用程式安裝並登入,可獲取 Locker Premium 或 Family 年繳方案的 5% 折扣碼",
+ "subtitle1_desc": "執行步驟:
(1) 在電腦上安裝並登入 Locker 桌面應用程式
(2) 按下「是,我確認」按鈕來確認完成此操作
(3) 我們會立刻進行驗證,並給予您獎勵",
+ "subtitle1_desc1": "按下確認已在電腦上完成 Locker 桌面應用程式安裝與登入,我們會在一個星期內為您進行驗證和發送獎勵",
+ "btn": "是,我確認",
+ "note": "我們無法驗證您已完成「安裝桌面程式」的動作,請重新安裝、登入 Locker 桌面應用程式後,再獲得獎勵"
+ },
+ "app_store_rating": {
+ "title": "App Store 評分與評論",
+ "header_btn": "撰寫評論",
+ "subtitle": "為 Locker 在 App Store 上給評價和留下評論,可獲取 Locker Premium 或 Family 年繳方案的 5% 折扣碼。",
+ "subtitle1_desc": "執行步驟:
(1) 為 Locker 在 App Store 上給評價和留言
(2) 在評價後的 24 小時內,在此欄位輸入你在 App Store 評論上的顯示名稱(或是複製貼上也可)
(3) 我們將為你進行驗證並於一分鐘內給你獎勵",
+ "input_placeholder": "輸入您的顯示名稱",
+ "btn": "發送"
+ },
+ "google_play_rating": {
+ "title": "Google Play 評分與評論",
+ "header_btn": "撰寫評論",
+ "subtitle": "為 Locker 在 Google Play 上給評價和留下評論,可獲取 Locker Premium 或 Family 年繳方案的 5% 折扣碼。",
+ "subtitle1_desc": "執行步驟:
(1) 為 Locker 在 Google Play 上給評價和留言
(2) 在評價後的 24 小時內,在此欄位輸入你在 Google Play 評論上的顯示名稱(或是複製貼上也可)
(3) 我們將為你進行驗證並於一分鐘內給你獎勵",
+ "input_placeholder": "輸入您的顯示名稱",
+ "btn": "發送"
+ },
+ "capterra_rating": {
+ "title": "Capterra 評分與評論",
+ "header_btn": "在 Capterra 上撰寫評論",
+ "subtitle": "為 Locker 在 Capterra 上留下評論,可獲得 Locker Premium 或 Family 年繳方案的 5% 折扣碼。",
+ "subtitle1_desc": "執行步驟:
(1) 為 Locker 在 Capterra 上給評價與留言
(2) 在評價後的 24 小時內,在此欄位輸入你在 Capterra 評論上的顯示名稱(或是複製貼上也可)
(3) 我們將為你進行驗證並於一分鐘內給你獎勵",
+ "input_placeholder": "輸入您的顯示名稱",
+ "btn": "發送"
+ }
+ }
+ },
+ "plan": {
+ "plans": [
+ {
+ "alias": "pm_free",
+ "title": "免費方案",
+ "duration": "",
+ "accounts": "",
+ "price": {
+ "usd": 0
+ },
+ "yearly_price": {
+ "usd": 0
+ }
+ },
+ {
+ "alias": "pm_premium",
+ "title": "Premium",
+ "duration": "月繳",
+ "accounts": "",
+ "price": {
+ "usd": "4.99"
+ },
+ "yearly_price": {
+ "usd": "15.48"
+ }
+ },
+ {
+ "alias": "pm_family",
+ "title": "家庭與朋友",
+ "duration": "月繳",
+ "accounts": "6 個帳戶",
+ "price": {
+ "usd": "9.99"
+ },
+ "yearly_price": {
+ "usd": "71.88"
+ }
+ }
+ ]
+ },
+ "master_pw_item": {
+ "name": "Locker 主密碼",
+ "desc": "此項是您的 Locker 主密碼。它會隨著您更改主密碼而變動。我們自動建立了這個項目,讓您不會忘記主密碼。不用擔心,這個操作只會在您的裝置上進行,我們依然無法從伺服器端查看或編輯您的主密碼。享受使用 Locker 的樂趣吧!"
+ },
+ "tutorial": {
+ "welcome": {
+ "title": "歡迎使用 Locker",
+ "desc": "我們將在 3 分鐘內帶您認識 Locker 最重要的功能",
+ "start": "讓我們開始吧",
+ "skip": "跳過教學"
+ },
+ "extension": {
+ "title": "6. 網頁存密碼超方便",
+ "desc": "使用 Locker 瀏覽器擴充套件,您可以:",
+ "list": [
+ "邊瀏覽網頁邊儲存帳號與密碼",
+ "一鍵安全填入登入資訊",
+ "快速查看所有的密碼和其他項目"
+ ],
+ "action": "立即安裝擴充套件 "
+ },
+ "tour": {
+ "btn": "開始使用教學",
+ "steps_completed": "已完成步驟",
+ "steps": {
+ "add_pw": {
+ "title": "新增密碼",
+ "desc": "你可以隨時手動新增資料,像是密碼、信用卡、秘密記事等。",
+ "btn": "新增資料",
+ "detail": {
+ "step1": {
+ "title": "1. 新增密碼",
+ "text": "你可以新增資料,像是密碼、信用卡、祕密記事等。點擊按鈕後選擇「密碼」來建立新的密碼記錄。"
+ },
+ "step2": {
+ "title": "1. 新增密碼",
+ "text": "選擇密碼"
+ },
+ "step3": {
+ "title": "1. 新增密碼",
+ "text": "填入必要資訊再按下儲存來新增你的第一個項目"
+ }
+ }
+ },
+ "import_file": {
+ "title": "匯入檔案",
+ "desc": "你可以將瀏覽器或其他密碼管理員中的登入紀錄匯入 Locker。",
+ "btn": "匯入資料",
+ "detail": {
+ "step1": {
+ "title": "2. 匯入檔案",
+ "text": "你可以從其他密碼管理員或瀏覽器中匯出密碼並匯入 Locker。
了解如何從其他來源匯出
首先,選取你要匯入的檔案格式。"
+ },
+ "step2": {
+ "title": "2. 匯入檔案",
+ "text": "選取檔案格式"
+ },
+ "step3": {
+ "title": "2. 匯入檔案",
+ "text": "點擊選擇檔案來選取檔案"
+ },
+ "step4": {
+ "title": "2. 匯入檔案",
+ "text": "點擊「匯入」,檔案內容就會被儲存進 Locker 囉!"
+ }
+ }
+ },
+ "browse_items": {
+ "title": "瀏覽項目和其他工具",
+ "desc": "以下是導航列的各個項目,你可以透過分類快速瀏覽。還能查看保險庫的「安全性」報告以及與其他 Locker 使用者「共享」項目哦,一起來看看吧!",
+ "btn": "查看側邊列",
+ "detail": {
+ "step1": {
+ "title": "3. 瀏覽項目和安全性報告",
+ "text": "這裡是導航列的各個項目,你可以透過分類快速瀏覽。還能查看保險庫的「安全性」報告以及與其他 Locker 使用者「共享」項目哦,一起來看看吧!"
+ },
+ "step2": {
+ "title": "3. 瀏覽項目和安全性報告",
+ "text": "這裡是導航列的各個項目,你可以透過分類快速瀏覽。還能查看保險庫的「安全性」報告以及與其他 Locker 使用者「共享」項目哦,一起來看看吧!"
+ }
+ }
+ },
+ "view_settings": {
+ "title": "前往設定",
+ "desc": "這是你的設定選單。你可以在這裡查看 Locker 的設定,或是團隊版儀表板。點擊「設定」來繼續。",
+ "btn": "前往設定",
+ "detail": {
+ "step1": {
+ "title": "4. 側邊列選項",
+ "text": "這是你的設定選單。你可以在這裡查看 Locker 的設定,或是團隊版儀表板。點擊「設定」來繼續。"
+ }
+ }
+ },
+ "view_profile": {
+ "title": "查看個人檔案選單",
+ "desc": "點擊你的使用者名稱來查看 Locker 帳戶相關選項。你也可以在這個選單中找到這份教學。",
+ "btn": "查看個人檔案選單",
+ "detail": {
+ "step1": {
+ "title": "5. 個人檔案選項",
+ "text": "點擊你的使用者名稱來查看 Locker 帳戶相關選項。你也可以在選單中找到「這份教學」。"
+ }
+ }
+ },
+ "view_autofill": {
+ "title": "試試看自動填入",
+ "desc": "使用 Locker 瀏覽器擴充套件,就能在你瀏覽網頁時自動儲存帳號密碼,並一鍵安全地填入登入資訊。",
+ "btn": "安裝擴充套件"
+ }
+ }
+ }
+ },
+ "lock": {
+ "factor2": {
+ "step_1": {
+ "title": "驗證身分"
+ },
+ "step_2": {
+ "title": "輸入驗證碼",
+ "mail_desc": "已將驗證信寄至 {email},請至您的收件匣/垃圾郵件夾查看。",
+ "app_desc": "請使用您的雙因素驗證應用程式(如 Locker 或 Google Authenticator)取得驗證碼。",
+ "enter_code": "請輸入驗證碼",
+ "save_device": "儲存至裝置"
+ }
+ },
+ "pwl": {
+ "title": "無密碼解鎖",
+ "pls_login_desktop": "你的帳戶預設使用無密碼登入的設定,請先使用桌面程式登入,才能繼續使用網頁版本。",
+ "pls_enter_otp": "請在 Locker 桌面應用程式中輸入這個驗證碼",
+ "download_app": "下載桌面程式",
+ "try_again": "再試一次",
+ "get_new_code": "取得新驗證碼",
+ "errors": {
+ "cannot_connect": "無法連接桌面程式",
+ "rejected": "驗證失敗!請先用對的信箱解鎖桌面程式",
+ "wrong_otp": "OTP 不正確,請再試一次"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/renderer/nuxt.config.electron.js b/src/renderer/nuxt.config.electron.js
index 5856c2cd..7c8a65b8 100644
--- a/src/renderer/nuxt.config.electron.js
+++ b/src/renderer/nuxt.config.electron.js
@@ -40,7 +40,7 @@ module.exports = {
},
css: ['@/assets/css/app.scss'],
i18n: {
- locales: ['en', 'vi'],
+ locales: ['en', 'vi', 'cn'],
defaultLocale: 'en',
strategy: 'prefix_except_default',
vuex: {
@@ -50,7 +50,8 @@ module.exports = {
fallbackLocale: 'en',
messages: {
en: require('./locales/en.js'),
- vi: require('./locales/vi.js')
+ vi: require('./locales/vi.js'),
+ cn: require('./locales/cn.json')
}
}
},
diff --git a/src/renderer/nuxt.config.js b/src/renderer/nuxt.config.js
index 096ed61c..abfe4570 100644
--- a/src/renderer/nuxt.config.js
+++ b/src/renderer/nuxt.config.js
@@ -7,6 +7,8 @@ import path from 'path'
import fs from 'fs'
import viVee from 'vee-validate/dist/locale/vi.json'
import enVee from 'vee-validate/dist/locale/en.json'
+// import zhVee from 'vee-validate/dist/locale/zh_CN.json'
+import zhVee from 'vee-validate/dist/locale/zh_TW.json'
import axios from 'axios'
import cheerio from 'cheerio'
@@ -135,7 +137,7 @@ module.exports = {
'@/assets/flags/flags.css'
],
i18n: {
- locales: ['en', 'vi'],
+ locales: ['en', 'vi', 'zh'],
defaultLocale: 'en',
strategy: 'prefix_except_default',
vuex: {
@@ -145,7 +147,8 @@ module.exports = {
fallbackLocale: 'en',
messages: {
en: { ...require('./locales/en.js'), ...enVee },
- vi: { ...require('./locales/vi.js'), ...viVee }
+ vi: { ...require('./locales/vi.js'), ...viVee },
+ zh: { ...require('./locales/zh.json'), ...zhVee }
}
}
},
@@ -194,7 +197,7 @@ module.exports = {
router: {},
moment: {
defaultLocale: 'en',
- locales: ['vi']
+ locales: ['vi', 'zh-tw']
},
build: {
transpile: ['vee-validate/dist/rules'],
diff --git a/src/renderer/pages/features/data-breach-scanner.vue b/src/renderer/pages/features/data-breach-scanner.vue
index f5b1a881..86e09e16 100644
--- a/src/renderer/pages/features/data-breach-scanner.vue
+++ b/src/renderer/pages/features/data-breach-scanner.vue
@@ -377,13 +377,13 @@ export default {
methods: {
async getData () {
this.loading = true
- const text_email = document.getElementById('input-email')
+ const textEmail = document.getElementById('input-email')
try {
const moutains = await this.$axios
.$post(
'https://api.locker.io/v3/cystack_platform/pm/tools/public/breach',
{
- email: text_email.value
+ email: textEmail.value
}
)
.then(res => {
@@ -392,7 +392,7 @@ export default {
})
return { moutains }
} catch (e) {
- if (e.request.status == 400) {
+ if (e.request.status === 400) {
this.notify(this.$tc('errors.0004', 1), 'error')
} else {
this.notify(this.$tc('errors.oops', 1), 'error')
diff --git a/src/renderer/pages/password-generator.vue b/src/renderer/pages/password-generator.vue
index 2060e2c8..8ab8368f 100644
--- a/src/renderer/pages/password-generator.vue
+++ b/src/renderer/pages/password-generator.vue
@@ -36,7 +36,7 @@
Mật khẩu mạnh:
-
Strength:
+
Strength:
{
if (app.$cookies.get('i18n_redirected') !== 'vi') {
i18n.setLocale('vi')
}
+ } else if (toRoute.path.startsWith('/zh')) {
+ if (app.$cookies.get('i18n_redirected') !== 'zh') {
+ i18n.setLocale('zh')
+ }
}
if (
diff --git a/src/renderer/plugins/tutorial.js b/src/renderer/plugins/tutorial.js
index 530ba3cc..cacbdb6f 100644
--- a/src/renderer/plugins/tutorial.js
+++ b/src/renderer/plugins/tutorial.js
@@ -34,7 +34,17 @@ export default async ({ store, i18n, $axios, redirect }, inject) => {
tour.hide()
store.commit('UPDATE_TUTORIAL', { currentStepId: 'add-pw-1' })
_closeModals()
- redirect(302, `${store.state.i18n.locale === 'vi' ? '/vi' : ''}/vault`)
+ const locale = (() => {
+ switch (store.state.i18n.locale) {
+ case 'vi':
+ return '/vi'
+ case 'zh':
+ return '/zh'
+ default:
+ return ''
+ }
+ })()
+ redirect(302, `${locale}/vault`)
setTimeout(() => {
store.commit('UPDATE_TUTORIAL', { isActive: true })
tour.show('add-pw-1')
@@ -44,9 +54,19 @@ export default async ({ store, i18n, $axios, redirect }, inject) => {
const _startFromImport = () => {
tour.hide()
store.commit('UPDATE_TUTORIAL', { currentStepId: 'import-1' })
+ const locale = (() => {
+ switch (store.state.i18n.locale) {
+ case 'vi':
+ return '/vi'
+ case 'zh':
+ return '/zh'
+ default:
+ return ''
+ }
+ })()
redirect(
302,
- `${store.state.i18n.locale === 'vi' ? '/vi' : ''}/settings/import-export`
+ `${locale}/settings/import-export`
)
setTimeout(() => {
store.commit('UPDATE_TUTORIAL', { isActive: true })
diff --git a/src/renderer/store/index.js b/src/renderer/store/index.js
index 12c88dee..49283f58 100644
--- a/src/renderer/store/index.js
+++ b/src/renderer/store/index.js
@@ -255,7 +255,12 @@ export const actions = {
return new Promise(resolve => {
if (state.isLoggedIn) {
const data = Object.assign({}, state.user)
- data.language = payload
+ if (['en', 'vi'].includes(payload)) {
+ data.language = payload
+ } else {
+ data.language = 'en'
+ }
+ data.customer_language = payload
this.$axios.$put('me', data)
}
resolve(payload)
@@ -270,7 +275,7 @@ export const actions = {
}
return this.$axios.$get('me').then(res => {
commit('UPDATE_USER', res)
- commit('SET_LANG', res.language)
+ commit('SET_LANG', res.customer_language || res.language)
return res
})
},