diff --git a/README.md b/README.md index 030fbd4..72484a6 100755 --- a/README.md +++ b/README.md @@ -88,6 +88,8 @@ Marzneshin documentation may be found [here](https://docs.marzneshin.org). - English - Kurdish (Soranî, Kurmancî) - Persian +- Arabic +- Simplified Chinese # marznode diff --git a/dashboard/public/locales/zh-cn.json b/dashboard/public/locales/zh-cn.json new file mode 100644 index 0000000..b32076d --- /dev/null +++ b/dashboard/public/locales/zh-cn.json @@ -0,0 +1,303 @@ +{ + "name": "名称", + "info": "信息", + "status": "状态", + "address": "地址", + "users": "用户", + "nodes": "节点", + "services": "服务", + "hosts": "主机", + "username": "用户名", + "password": "密码", + "inbounds": "入站", + "submit": "提交", + "login": "登录", + "edit": "编辑", + "actions": "操作", + "settings": "设置", + "logs": "日志", + "note": "备注", + "config": "配置", + "tag": "标签", + "protocol": "协议", + "online": "在线", + "offline": "离线", + "not_connected": "未连接", + "apply": "应用", + "open": "打开", + "delete": "删除", + "port": "端口", + "create": "创建", + "path": "路径", + "host": "主机", + "alpn": "ALPN", + "security": "安全", + "user_info": "用户信息", + "admin_info": "管理员信息", + "subscription": "订阅", + "fingerprint": "指纹", + "mux": "多路复用", + "fragment": "分片", + "enabled": "已启用", + "activated": "已激活", + "unlimited": "无限制", + "left": "剩余", + "reached": "已达到", + "inactive": "未激活", + "active": "激活", + "close": "关闭", + "save": "保存", + "days": "天", + "home": "首页", + "cancel": "取消", + "view": "查看", + "certificate": "证书", + "valid": "有效", + "finished": "已完成", + "expired": "已过期", + "change": "更改", + "admins": "管理员", + "normal": "普通", + "sudo": "超级管理员", + "owner": "所有者", + "running": "运行中", + "down": "停止", + "weight": "权重", + "support-us": { + "title": "支持我们", + "desc": "Marzneshin 是一个免费的开源软件(FOSS),加入我们,通过捐款表达您的支持。", + "donate": "捐款" + }, + "page": { + "home": { + "users-stats": { + "desc": "用户状态概览" + }, + "total-traffics": { + "title": "系统总流量", + "desc": "所有节点的总数据流量" + } + }, + "settings": { + "subscription-settings": { + "template-on-acceptance": "接受时的模板", + "placeholder-remark": "备注占位符", + "placeholder-if-disabled": "禁用时的占位符", + "shuffle-configs": "随机配置", + "url-prefix": "URL前缀", + "profile-title": "配置文件标题", + "support-link": "支持链接", + "update-interval": "更新间隔", + "add-rule": "添加规则", + "reset-local-changes": "重置本地更改", + "title": "订阅", + "description": "管理和自定义订阅设置,包含可调整的规则和更新选项。", + "subscription-title": "订阅规则", + "subscription-desc": "按优先级添加订阅规则。", + "alert": { + "title": "无规则", + "desc": "未定义订阅规则" + } + }, + "certificate": { + "copy": "复制证书", + "error": "证书不可用", + "copied": "证书已复制" + } + }, + "nodes": { + "nodes-usage-widget": { + "title": "节点流量使用", + "desc": "该节点的总数据流量使用情况" + }, + "settings": { + "no-backend-alert": { + "title": "此节点未配置后端", + "desc": "请采取必要措施为此节点配置后端。" + }, + "detail": "详情" + }, + "dialogs": { + "creation": { + "title": "添加节点" + }, + "edition": { + "title": "编辑节点" + } + }, + "usage_coefficient": "使用系数", + "connection_backend": "连接后端", + "connection_backend_desc": "用于远程连接", + "certificate-alert": { + "title": "配置节点证书", + "desc": "如果您希望配置节点证书,请查看设置页面。", + "click": "点击此处" + } + }, + "services": { + "dialogs": { + "creation": { + "title": "创建服务" + }, + "edition": { + "title": "编辑服务" + } + } + }, + "users": { + "created_at": "创建日期", + "no_use": "未使用", + "data_limit_reached": "已达到数据限制", + "sub_updated_at": "订阅最后更新", + "sub_last_user_agent": "最后用户代理", + "traffic_reset_at": "最后流量重置", + "lifetime_used_traffic": "终身使用流量", + "note-placeholder": "用户附加信息", + "traffic": "流量", + "used_traffic": "已使用流量", + "data_limit_reset_strategy": "数据重置周期", + "online_at": "最后使用时间", + "expire_date": "到期日期", + "unlimited": "无限制", + "never": "永不", + "data_limit_method": "数据限制", + "fixed_date": "固定日期", + "expire_method": "到期方式", + "on_first_use": "首次使用时", + "reset_usage": "重置使用量", + "revoke_subscription": "取消订阅", + "usage_duration": "使用时长", + "nodes-usage": "节点使用", + "settings": { + "subscription_link": { + "copied": "订阅链接已复制", + "copy": "订阅链接", + "error": "无法复制订阅链接" + } + }, + "services-alert": { + "title": "未找到服务", + "desc": "请确保创建服务以启用用户连接入站。", + "click": "点击此处" + }, + "dialogs": { + "edition": { + "title": "编辑用户" + } + } + }, + "admins": { + "disable_users": "禁用用户", + "enable_users": "启用用户", + "permission": "权限", + "modify-users-access": "修改用户访问", + "subscription-url-prefix": "订阅URL前缀", + "sudo-privilage": "超级管理员权限", + "all-services-access": "访问所有服务", + "users-data-usage": "用户数据使用量" + }, + "hosts": { + "xmux-settings": "Xmux设置", + "split-http-settings": "分拆HTTP设置", + "early-data": "早期数据", + "http_headers": "HTTP头部", + "no-http-headers": "无HTTP头部", + "mux-settings": "多路复用设置", + "dns-servers": "DNS服务器", + "obfuscation-password": "混淆密码", + "server-public-key": "服务器公钥", + "tls-config": "TLS配置", + "network-settings": "网络设置", + "security-settings": "安全设置", + "allowed-ips": "允许的IP地址", + "allowed-ips-placeholder": "127.0.0.1,...", + "camouflage-settings": "伪装设置", + "fragment": { + "interval": "间隔", + "length": "长度", + "packets": "数据包", + "length-error": "长度不能超过32个字符,且必须为数字-数字格式", + "interval-error": "间隔不能超过32个字符,且必须为数字-数字格式", + "packets-error": "数据包不能超过32个字符,且必须为数字-数字格式或tlshello" + }, + "mux": { + "title": "连接多路复用", + "desc": "目前由v2rayng支持,使用自定义配置时" + }, + "no-inbound-selection-alert": { + "title": "未选择入站", + "desc": "必须选择入站才能添加主机。" + }, + "allowinsecure": "允许不安全连接", + "dialogs": { + "edition": { + "title": "编辑主机" + }, + "creation": { + "title": "添加主机" + }, + "mutation": { + "allowinsecure": { + "alert": "出于安全考虑,不建议启用允许不安全连接" + } + } + } + } + }, + "events": { + "delete": { + "error": "删除{{name}}失败", + "success": { + "title": "{{name}}已成功删除", + "desc": "" + } + }, + "create": { + "error": "创建{{name}}失败", + "success": { + "title": "{{name}}已成功创建", + "desc": "" + } + }, + "update": { + "error": "更新{{name}}失败", + "success": { + "title": "{{name}}已成功更新", + "desc": "" + } + }, + "user_revoke": { + "error": "取消{{name}}的订阅失败", + "success": { + "title": "{{name}}已成功创建", + "desc": "" + } + }, + "user_reset": { + "error": "重置{{name}}的数据使用量失败", + "success": { + "title": "{{name}}的数据使用量已成功重置", + "desc": "" + } + }, + "user_status": { + "error": "切换{{name}}的激活状态失败", + "success": { + "title": "{{name}}的激活状态已成功更新", + "desc": "" + } + } + }, + "delete-confirmation": { + "title": "您确定要执行此操作吗?", + "desc": "此操作不可撤销。" + }, + "table": { + "no-result-found": "未找到结果。", + "row-per-page": "每页行数", + "no-result": "无结果", + "selected": "已选择", + "toggle-column": "切换列", + "filter-placeholder": "过滤{{name}}" + } +} diff --git a/dashboard/src/features/i18n/index.ts b/dashboard/src/features/i18n/index.ts index 45e355a..4e3413e 100644 --- a/dashboard/src/features/i18n/index.ts +++ b/dashboard/src/features/i18n/index.ts @@ -30,7 +30,7 @@ i18n backend: { loadPath: `/locales/{{lng}}.json`, }, - supportedLngs: ['en', 'kur', 'kmr', 'ckb', 'fa', 'ru', 'ar'], + supportedLngs: ['en', 'kur', 'kmr', 'ckb', 'fa', 'ru', 'ar', 'zh-cn'], }) .then(() => { dayjs.locale(i18n.language); diff --git a/dashboard/src/features/language-switch/index.tsx b/dashboard/src/features/language-switch/index.tsx index 49026c9..c88ca37 100644 --- a/dashboard/src/features/language-switch/index.tsx +++ b/dashboard/src/features/language-switch/index.tsx @@ -46,6 +46,7 @@ export const LanguageSwitchMenu: FC = () => { +