From 486a6ac038dc57aa3d164321c3a480076d0027a2 Mon Sep 17 00:00:00 2001
From: ClarkQAQ <40785118+ClarkQAQ@users.noreply.github.com>
Date: Sat, 2 Nov 2024 01:05:38 +0800
Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(translations):=20chinese=20tra?=
=?UTF-8?q?nslations=20(#316)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* ✨ feat(translations): chinese translations
* ✨ feat(App.vue): append dropdown item
---
frontend/src/App.vue | 4 +
frontend/src/lang/index.js | 4 +-
frontend/src/lang/translations/zh.json | 492 +++++++++++++++++++++++++
3 files changed, 499 insertions(+), 1 deletion(-)
create mode 100644 frontend/src/lang/translations/zh.json
diff --git a/frontend/src/App.vue b/frontend/src/App.vue
index bfd7a56..e2b4f29 100644
--- a/frontend/src/App.vue
+++ b/frontend/src/App.vue
@@ -48,6 +48,9 @@ const languageFlag = computed(() => {
if (lang === "en") {
lang = "us";
}
+ if (lang === "zh") {
+ lang = "cn";
+ }
return "fi-" + lang;
})
@@ -117,6 +120,7 @@ const currentYear = ref(new Date().getFullYear())
Deutsch
Русский
Tiếng Việt
+ 中文
diff --git a/frontend/src/lang/index.js b/frontend/src/lang/index.js
index 9dc435b..308d359 100644
--- a/frontend/src/lang/index.js
+++ b/frontend/src/lang/index.js
@@ -3,6 +3,7 @@ import de from './translations/de.json';
import ru from './translations/ru.json';
import en from './translations/en.json';
import vi from './translations/vi.json';
+import zh from './translations/zh.json';
import {createI18n} from "vue-i18n";
// Create i18n instance with options
@@ -20,7 +21,8 @@ const i18n = createI18n({
"de": de,
"ru": ru,
"en": en,
- "vi": vi
+ "vi": vi,
+ "zh": zh
}
});
diff --git a/frontend/src/lang/translations/zh.json b/frontend/src/lang/translations/zh.json
new file mode 100644
index 0000000..cf1d715
--- /dev/null
+++ b/frontend/src/lang/translations/zh.json
@@ -0,0 +1,492 @@
+{
+ "languages": {
+ "zh": "中文"
+ },
+ "general": {
+ "pagination": {
+ "size": "每页显示数量",
+ "all": "全部 (较慢)"
+ },
+ "search": {
+ "placeholder": "搜索...",
+ "button": "搜索"
+ },
+ "select-all": "全选",
+ "yes": "是",
+ "no": "否",
+ "cancel": "取消",
+ "close": "关闭",
+ "save": "保存",
+ "delete": "删除"
+ },
+ "login": {
+ "headline": "请登录",
+ "username": {
+ "label": "用户名",
+ "placeholder": "请输入用户名"
+ },
+ "password": {
+ "label": "密码",
+ "placeholder": "请输入密码"
+ },
+ "button": "登录"
+ },
+ "menu": {
+ "home": "首页",
+ "interfaces": "接口",
+ "users": "用户",
+ "lang": "切换语言",
+ "profile": "个人资料",
+ "login": "登录",
+ "logout": "注销"
+ },
+ "home": {
+ "headline": "WireGuard® VPN Portal",
+ "info-headline": "更多信息",
+ "abstract": "WireGuard® 是一种极其简单但又快速现代的 VPN,采用先进的加密技术。它旨在比 IPsec 更快、更简单、更轻量、更实用,同时避免了大量的麻烦。它的性能显著优于 OpenVPN。",
+ "installation": {
+ "box-header": "WireGuard 安装",
+ "headline": "安装",
+ "content": "客户端软件的安装说明可在官方 WireGuard 网站上找到。",
+ "button": "打开说明"
+ },
+ "about-wg": {
+ "box-header": "关于 WireGuard",
+ "headline": "关于",
+ "content": "WireGuard® 是一种极其简单但又快速现代的 VPN,采用先进的加密技术。",
+ "button": "更多"
+ },
+ "about-portal": {
+ "box-header": "关于 WireGuard Portal",
+ "headline": "WireGuard Portal",
+ "content": "WireGuard Portal 是一个简单的基于网页的 WireGuard 配置平台。",
+ "button": "更多"
+ },
+ "profiles": {
+ "headline": "VPN 配置文件",
+ "abstract": "您可以通过您的用户个人资料访问并下载个人 VPN 配置。",
+ "content": "要查找您所有的配置文件,请点击下面的按钮。",
+ "button": "打开我的个人资料"
+ },
+ "admin": {
+ "headline": "后台管理",
+ "abstract": "在后台管理,您可以管理 WireGuard 节点和服务器接口,以及允许登录 WireGuard Portal 的用户。",
+ "content": "",
+ "button-admin": "打开服务器管理",
+ "button-user": "打开用户管理"
+ }
+ },
+ "interfaces": {
+ "headline": "接口管理",
+ "headline-peers": "当前 VPN 节点",
+ "headline-endpoints": "当前节点",
+ "no-interface": {
+ "default-selection": "没有可用接口",
+ "headline": "未找到接口...",
+ "abstract": "点击上面的加号按钮以创建新的 WireGuard 接口。"
+ },
+ "no-peer": {
+ "headline": "没有可用节点",
+ "abstract": "当前没有可用的节点与所选的 WireGuard 接口关联。"
+ },
+ "table-heading": {
+ "name": "名称",
+ "user": "用户",
+ "ip": "IP 地址",
+ "endpoint": "节点",
+ "status": "状态"
+ },
+ "interface": {
+ "headline": "接口状态",
+ "mode": "模式",
+ "key": "公钥",
+ "endpoint": "公开节点",
+ "port": "监听端口",
+ "peers": "启用节点",
+ "total-peers": "节点总数",
+ "endpoints": "启用节点",
+ "total-endpoints": "节点总数",
+ "ip": "IP 地址",
+ "default-allowed-ip": "默认允许的 IP",
+ "dns": "DNS 服务器",
+ "mtu": "MTU",
+ "default-keep-alive": "默认心跳包间隔",
+ "button-show-config": "显示配置",
+ "button-download-config": "下载配置",
+ "button-store-config": "为 wg-quick 保存配置",
+ "button-edit": "编辑接口"
+ },
+ "button-add-interface": "添加接口",
+ "button-add-peer": "添加节点",
+ "button-add-peers": "添加多个节点",
+ "button-show-peer": "显示节点",
+ "button-edit-peer": "编辑节点",
+ "peer-disabled": "节点已禁用,原因: ",
+ "peer-expiring": "节点将在以下时间过期: ",
+ "peer-connected": "已连接",
+ "peer-not-connected": "未连接",
+ "peer-handshake": "最后一次握手: "
+ },
+ "users": {
+ "headline": "用户管理",
+ "table-heading": {
+ "id": "ID",
+ "email": "电子邮件",
+ "firstname": "名",
+ "lastname": "姓",
+ "source": "来源",
+ "peers": "节点",
+ "admin": "管理员"
+ },
+ "no-user": {
+ "headline": "没有可用用户",
+ "abstract": "当前没有用户注册 WireGuard 门户。"
+ },
+ "button-add-user": "添加用户",
+ "button-show-user": "显示用户",
+ "button-edit-user": "编辑用户",
+ "user-disabled": "用户已禁用, 原因: ",
+ "user-locked": "账户已锁定, 原因: ",
+ "admin": "用户具有管理员权限",
+ "no-admin": "用户没有管理员权限"
+ },
+ "profile": {
+ "headline": "我的 VPN 节点列表",
+ "table-heading": {
+ "name": "名称",
+ "ip": "IP 地址",
+ "stats": "状态",
+ "interface": "服务器接口"
+ },
+ "no-peer": {
+ "headline": "没有可用节点",
+ "abstract": "当前没有与您的用户个人资料关联的节点。"
+ },
+ "peer-connected": "已连接",
+ "button-add-peer": "添加节点",
+ "button-show-peer": "显示节点",
+ "button-edit-peer": "编辑节点"
+ },
+ "modals": {
+ "user-view": {
+ "headline": "用户账户: ",
+ "tab-user": "信息",
+ "tab-peers": "节点",
+ "headline-info": "用户信息: ",
+ "headline-notes": "备注: ",
+ "email": "电子邮件",
+ "firstname": "名",
+ "lastname": "姓",
+ "phone": "电话号码",
+ "department": "部门",
+ "disabled": "账户已禁用",
+ "locked": "账户已锁定",
+ "no-peers": "用户没有关联的节点。",
+ "peers": {
+ "name": "名称",
+ "interface": "接口",
+ "ip": "IP 地址"
+ }
+ },
+ "user-edit": {
+ "headline-edit": "编辑用户: ",
+ "headline-new": "新用户",
+ "header-general": "常规",
+ "header-personal": "用户信息",
+ "header-notes": "备注",
+ "header-state": "状态",
+ "identifier": {
+ "label": "标识符",
+ "placeholder": "唯一用户标识符"
+ },
+ "source": {
+ "label": "来源",
+ "placeholder": "用户来源"
+ },
+ "password": {
+ "label": "密码",
+ "placeholder": "一个复杂的密码",
+ "description": "留空保持当前密码不变。"
+ },
+ "email": {
+ "label": "电子邮件",
+ "placeholder": "电子邮件地址"
+ },
+ "phone": {
+ "label": "电话",
+ "placeholder": "电话号码"
+ },
+ "department": {
+ "label": "部门",
+ "placeholder": "部门"
+ },
+ "firstname": {
+ "label": "名",
+ "placeholder": "名"
+ },
+ "lastname": {
+ "label": "姓",
+ "placeholder": "姓"
+ },
+ "notes": {
+ "label": "备注",
+ "placeholder": ""
+ },
+ "disabled": {
+ "label": "禁用 (无法连接 WireGuard 和登录)"
+ },
+ "locked": {
+ "label": "锁定 (无法登录,但 WireGuard 仍然可以连接)"
+ },
+ "admin": {
+ "label": "管理员"
+ }
+ },
+ "interface-view": {
+ "headline": "接口配置: "
+ },
+ "interface-edit": {
+ "headline-edit": "编辑接口: ",
+ "headline-new": "新接口",
+ "tab-interface": "接口",
+ "tab-peerdef": "节点默认值",
+ "header-general": "常规",
+ "header-network": "网络",
+ "header-crypto": "加密",
+ "header-hooks": "接口 Hooks",
+ "header-peer-hooks": "Hooks",
+ "header-state": "状态",
+ "identifier": {
+ "label": "标识符",
+ "placeholder": "唯一接口标识符"
+ },
+ "mode": {
+ "label": "接口模式",
+ "server": "服务器模式",
+ "client": "客户端模式",
+ "any": "未知模式"
+ },
+ "display-name": {
+ "label": "显示名称",
+ "placeholder": "接口的描述性名称"
+ },
+ "private-key": {
+ "label": "私钥",
+ "placeholder": "私钥"
+ },
+ "public-key": {
+ "label": "公钥",
+ "placeholder": "公钥"
+ },
+ "ip": {
+ "label": "IP 地址",
+ "placeholder": "IP 地址 (CIDR 格式)"
+ },
+ "listen-port": {
+ "label": "监听端口",
+ "placeholder": "监听端口"
+ },
+ "dns": {
+ "label": "DNS 服务器",
+ "placeholder": "应使用的 DNS 服务器"
+ },
+ "dns-search": {
+ "label": "DNS 搜索域",
+ "placeholder": "DNS 搜索前缀"
+ },
+ "mtu": {
+ "label": "MTU",
+ "placeholder": "接口 MTU (0 = 保持默认)"
+ },
+ "firewall-mark": {
+ "label": "防火墙掩码",
+ "placeholder": "应用于出站流量的防火墙掩码 (0 = 自动)"
+ },
+ "routing-table": {
+ "label": "路由表",
+ "placeholder": "路由表 ID",
+ "description": "特殊情况: off = 不管理路由, 0 = 自动"
+ },
+ "pre-up": {
+ "label": "启动前脚本",
+ "placeholder": "一个或多个用分号分隔的 bash 命令"
+ },
+ "post-up": {
+ "label": "启动后脚本",
+ "placeholder": "一个或多个用分号分隔的 bash 命令"
+ },
+ "pre-down": {
+ "label": "停止前脚本",
+ "placeholder": "一个或多个用分号分隔的 bash 命令"
+ },
+ "post-down": {
+ "label": "停止后脚本",
+ "placeholder": "一个或多个用分号分隔的 bash 命令"
+ },
+ "disabled": {
+ "label": "接口已禁用"
+ },
+ "save-config": {
+ "label": "自动保存 wg-quick 配置"
+ },
+ "defaults": {
+ "endpoint": {
+ "label": "服务器地址",
+ "placeholder": "服务器地址",
+ "description": "节点将连接到服务器的地址。"
+ },
+ "networks": {
+ "label": "IP 地址",
+ "placeholder": "IP 地址",
+ "description": "节点将从这些子网获取 IP 地址。"
+ },
+ "allowed-ip": {
+ "label": "允许的 IP 地址",
+ "placeholder": "默认允许的 IP 地址"
+ },
+ "mtu": {
+ "label": "MTU",
+ "placeholder": "客户端 MTU (0 = 保持默认)"
+ },
+ "keep-alive": {
+ "label": "心跳包间隔",
+ "placeholder": "持久保持连接 (0 = 默认)"
+ }
+ },
+ "button-apply-defaults": "应用节点默认值"
+ },
+ "peer-view": {
+ "headline-peer": "节点: ",
+ "headline-endpoint": "节点: ",
+ "section-info": "节点信息",
+ "section-status": "当前状态",
+ "section-config": "配置",
+ "identifier": "标识符",
+ "ip": "IP 地址",
+ "user": "关联用户",
+ "notes": "备注",
+ "expiry-status": "过期时间",
+ "disabled-status": "禁用时间",
+ "traffic": "流量",
+ "connection-status": "连接状态",
+ "upload": "上传字节 (服务器到节点)",
+ "download": "下载字节 (节点到服务器)",
+ "pingable": "连通状态",
+ "handshake": "最后握手",
+ "connected-since": "首次成功连接",
+ "endpoint": "节点地址",
+ "button-download": "下载配置",
+ "button-email": "通过电子邮件发送配置"
+ },
+ "peer-edit": {
+ "headline-edit-peer": "编辑节点: ",
+ "headline-edit-endpoint": "编辑节点: ",
+ "headline-new-peer": "创建节点",
+ "headline-new-endpoint": "创建节点",
+ "header-general": "常规",
+ "header-network": "网络",
+ "header-crypto": "加密",
+ "header-hooks": "Hooks (在节点执行)",
+ "header-state": "状态",
+ "display-name": {
+ "label": "显示名称",
+ "placeholder": "节点的描述性名称"
+ },
+ "linked-user": {
+ "label": "关联用户",
+ "placeholder": "拥有此节点的用户账户"
+ },
+ "private-key": {
+ "label": "私钥",
+ "placeholder": "私钥"
+ },
+ "public-key": {
+ "label": "公钥",
+ "placeholder": "公钥"
+ },
+ "preshared-key": {
+ "label": "预共享密钥",
+ "placeholder": "可选的预共享密钥"
+ },
+ "endpoint-public-key": {
+ "label": "节点公钥",
+ "placeholder": "远程节点的公钥"
+ },
+ "endpoint": {
+ "label": "节点地址",
+ "placeholder": "远程节点的地址"
+ },
+ "ip": {
+ "label": "IP 地址",
+ "placeholder": "IP 地址(CIDR 格式)"
+ },
+ "allowed-ip": {
+ "label": "允许的 IP 地址",
+ "placeholder": "允许的 IP 地址(CIDR 格式)"
+ },
+ "extra-allowed-ip": {
+ "label": "额外允许的 IP 地址",
+ "placeholder": "额外允许的 IP 地址(服务器端)",
+ "description": "这些 IP 将作为允许的 IP 添加到远程 WireGuard 接口。"
+ },
+ "dns": {
+ "label": "DNS 服务器",
+ "placeholder": "要使用的 DNS 服务器"
+ },
+ "dns-search": {
+ "label": "DNS 搜索域",
+ "placeholder": "DNS 搜索前缀"
+ },
+ "keep-alive": {
+ "label": "心跳包间隔",
+ "placeholder": "持久保持连接 (0 = 默认)"
+ },
+ "mtu": {
+ "label": "MTU",
+ "placeholder": "客户端 MTU (0 = 保持默认)"
+ },
+ "pre-up": {
+ "label": "启动前脚本",
+ "placeholder": "一个或多个用分号分隔的 bash 命令"
+ },
+ "post-up": {
+ "label": "启动后脚本",
+ "placeholder": "一个或多个用分号分隔的 bash 命令"
+ },
+ "pre-down": {
+ "label": "停止前脚本",
+ "placeholder": "一个或多个用分号分隔的 bash 命令"
+ },
+ "post-down": {
+ "label": "停止后脚本",
+ "placeholder": "一个或多个用分号分隔的 bash 命令"
+ },
+ "disabled": {
+ "label": "节点已禁用"
+ },
+ "ignore-global": {
+ "label": "忽略全局设置"
+ },
+ "expires-at": {
+ "label": "过期日期"
+ }
+ },
+ "peer-multi-create": {
+ "headline-peer": "创建多个节点",
+ "headline-endpoint": "创建多个节点",
+ "identifiers": {
+ "label": "用户标识符",
+ "placeholder": "用户标识符",
+ "description": "要为其创建节点 的用户标识符(用户名)。"
+ },
+ "prefix": {
+ "headline-peer": "节点: ",
+ "headline-endpoint": "节点: ",
+ "label": "显示名称前缀",
+ "placeholder": "前缀",
+ "description": "添加到节点 显示名称的前缀。"
+ }
+ }
+ }
+ }
+
\ No newline at end of file