From d336ab50530404c14a7a15ce686c799bed14db43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8D=92=E9=87=8E=E7=84=A1=E7=87=88?= Date: Fri, 10 Apr 2020 14:29:26 +0800 Subject: [PATCH] add Simplified Chinese locale --- frontend/app/locales/zh.json | 169 +++++++++++++++++++++++++++ frontend/app/utils/loadLocale.ts | 5 + frontend/tasks/supportedLocales.json | 2 +- 3 files changed, 175 insertions(+), 1 deletion(-) create mode 100644 frontend/app/locales/zh.json diff --git a/frontend/app/locales/zh.json b/frontend/app/locales/zh.json new file mode 100644 index 00000000..17206bef --- /dev/null +++ b/frontend/app/locales/zh.json @@ -0,0 +1,169 @@ +{ + "anonymousLoginForm.length-limit": "用户名最少需要3个字符", + "anonymousLoginForm.log-in": "登录", + "anonymousLoginForm.symbol-limit": "用户名必须以字母开头并且只能包含字母、数字、下划线或空格", + "anonymousLoginForm.user-name": "用户名", + "authPanel.anonymous-provider": "匿名", + "authPanel.disable-comments": "禁用评论", + "authPanel.disabled-cookies": "禁用第三方cookie阻止登录或在其中打开评论", + "authPanel.enable-comments": "启用评论", + "authPanel.enable-cookies": "允许使用cookie登录并发表评论", + "authPanel.hide-settings": "隐藏设置", + "authPanel.logged-as": "您以以下身份登录", + "authPanel.login": "登入:", + "authPanel.logout": "登出?", + "authPanel.new-page": "新页面", + "authPanel.or-provider": "或", + "authPanel.other-provider": "其它", + "authPanel.read-only": "只读", + "authPanel.request-to-delete-data": "请求删除我的数据", + "authPanel.show-settings": "显示设置", + "blockingDuration.day": "一天", + "blockingDuration.month": "一个月", + "blockingDuration.permanently": "永久", + "blockingDuration.week": "一周", + "comment.block": "封禁", + "comment.block-user": "是否封禁 {userName} {duration}?", + "comment.blocked-user": "已封禁用户", + "comment.blocking-period": "封禁期限", + "comment.cancel": "取消", + "comment.controversy": "争议: {value}", + "comment.copied": "已复制!", + "comment.copy": "复制", + "comment.delete": "删除", + "comment.delete-message": "是否删除这条评论?", + "comment.deleted-comment": "此评论已删除", + "comment.deleted-user": "已删除用户", + "comment.edit": "编辑", + "comment.expired-time": "编辑时间已过期", + "comment.go-to-parent": "转到父评论", + "comment.hide": "隐藏", + "comment.hide-user-comment": "您要隐藏{userName}的评论吗?", + "comment.pin": "置顶", + "comment.pin-comment": "您要置顶此评论吗?", + "comment.reply": "回复", + "comment.time": "{day} {time}", + "comment.toggle-verification": "切换认证", + "comment.unblock": "解除封禁", + "comment.unblock-user": "您是否要取消封禁此用户?", + "comment.unpin": "取消置顶", + "comment.unpin-comment": "您要取消置顶此评论吗?", + "comment.unverified-user": "未认证的用户", + "comment.unverify-user": "您是否要取消认证{userName}?", + "comment.verified-user": "认证用户", + "comment.verify-user": "您是否要设置{userName}为认证用户?", + "comment.vote-error": "投票失败: {voteErrorMessage}", + "commentForm.anonymous-uploading-disabled": "未经授权的用户无法上传图片。 上传之前,您应该先登录。", + "commentForm.exceeded-size": "{fileName}超出了{maxImageSize}的大小限制", + "commentForm.input-placeholder": "在此填写评论", + "commentForm.new-comment": "新评论", + "commentForm.notice-about-styling": "支持使用 Markdown 样式", + "commentForm.preview": "预览", + "commentForm.reply": "回复", + "commentForm.save": "保存", + "commentForm.send": "发送", + "commentForm.subscribe-by": "订阅评论:", + "commentForm.subscribe-or": "或", + "commentForm.unexpected-error": "出了些问题,请稍后再试。", + "commentForm.upload-file-fail": "{fileName} 上传失败,错误信息: \"{errorMessage}\"", + "commentForm.uploading": "上传中...", + "commentForm.uploading-file": "{fileName} 上传中...", + "commentSort.sort-by": "排序方式", + "commentsSort.best": "最佳", + "commentsSort.least-controversial": "争议最小", + "commentsSort.least-recently-updated": "最近更新最少", + "commentsSort.most-controversial": "争议最多", + "commentsSort.newest": "最新", + "commentsSort.oldest": "最旧", + "commentsSort.recently-updated": "最近更新最多", + "commentsSort.worst": "最差", + "emailLoginForm.back": "返回", + "emailLoginForm.confirm": "确认", + "emailLoginForm.email-address": "Email地址", + "emailLoginForm.empty-token": "Token字段不能为空", + "emailLoginForm.expired-token": "Token已过期", + "emailLoginForm.invalid-email": "Email地址应为有效的电子邮件地址", + "emailLoginForm.loading": "加载中...", + "emailLoginForm.send-verification": "发送验证", + "emailLoginForm.token": "Token", + "emailLoginForm.user-not-found": "找不到用户", + "errors.0": "出了些问题,请稍后再试。", + "errors.1": "找不到评论。 请刷新页面,然后重试。", + "errors.10": "编辑评论为时已晚。", + "errors.11": "评论已回复,无法编辑。", + "errors.12": "无法保存投票结果,请稍后再试。", + "errors.13": "您不能为自己的评论投票。", + "errors.14": "您已经对评论投了赞成票。", + "errors.15": "该评论的投票太多。", + "errors.16": "该评论已达到最低分数。", + "errors.17": "操作被拒绝,请稍后再试。", + "errors.18": "找不到请求的文件。", + "errors.2": "无法解组传入的请求。", + "errors.3": "您无权执行此操作。", + "errors.4": "无效的评论数据。", + "errors.5": "找不到评论。 请刷新页面,然后重试。", + "errors.6": "找不到网站。 请刷新页面,然后重试。", + "errors.7": "用户已被封禁。", + "errors.8": "用户已被封禁。", + "errors.9": "评论更改失败,请稍后再试。", + "errors.failed-fetch": "请求失败,请检查您的互联网连接或稍后再试。", + "errors.forbidden": "禁止访问", + "errors.not-authorized": "未经授权。", + "errors.to-many-request": "您已达到最大请求数限制。", + "errors.unexpected-error": "出了些问题。", + "root.pinned-comments": "置顶的评论", + "root.powered-by": "本站评论系统由Remark42提供支持", + "root.show-more": "显示更多", + "settings.block": "封禁", + "settings.block-time": "直到 {day} {time}", + "settings.block-user": "您要封禁{userName}吗?", + "settings.blocked-users-header": "已封禁用户:", + "settings.blocked-users-title": "已封禁用户", + "settings.hidden-user-header": "已隐藏评论用户:", + "settings.hidden-users-title": "已隐藏评论用户", + "settings.hide": "隐藏", + "settings.no-blocked-users": "没有被封禁的用户。", + "settings.no-hidden-users": "没有被隐藏评论的用户。", + "settings.permanently": "永久地", + "settings.show": "显示", + "settings.unblock": "解除封禁", + "settings.unblock-user": "你想解除对{userName}的封禁?", + "settings.unknown": "未知", + "subscribeByEmail.back": "返回", + "subscribeByEmail.close": "关闭", + "subscribeByEmail.email": "Email", + "subscribeByEmail.expired-token": "token已经过期", + "subscribeByEmail.have-been-subscribed": "您已通过电子邮件订阅了更新通知", + "subscribeByEmail.have-been-unsubscribed": "您已退订电子邮件更新通知", + "subscribeByEmail.only-registered-users": "仅适用于注册用户", + "subscribeByEmail.submit": "年底", + "subscribeByEmail.subscribe": "订阅", + "subscribeByEmail.subscribe-by-email": "通过邮件订阅", + "subscribeByEmail.subscribe-to-replies": "订阅回复", + "subscribeByEmail.subscribed": "您当前通过电子邮件订阅了更新通知", + "subscribeByEmail.token": "Token", + "subscribeByEmail.unsubscribe": "退订", + "subscribeByRSS.button-title": "通过RSS订阅", + "subscribeByRSS.replies": "回复", + "subscribeByRSS.site": "站点", + "subscribeByRSS.thread": "主题", + "subscribeByRSS.title": "RSS", + "toolbar.attach-image": "可以从剪贴板拖放或粘贴来上传图片", + "toolbar.bold": "添加粗体 ", + "toolbar.code": "插入代码", + "toolbar.header": "添加标题文字", + "toolbar.italic": "添加斜体文字 ", + "toolbar.link": "添加链接 ", + "toolbar.ordered-list": "添加有序编号列表", + "toolbar.quote": "插入引用文本", + "toolbar.unordered-list": "添加无序项目列表", + "user-info.last-comments": "最近的评论由{userName}发表", + "user-info.unexpected-error": "出问题了", + "vote.anonymous": "匿名用户无法投票", + "vote.deleted": "无法为已删除的评论投票", + "vote.guest": "登录以投票", + "vote.only-positive": "只允许正面分数", + "vote.only-post-page": "只能在文章页面上投票", + "vote.own-comment": "无法给自己的评论投票", + "vote.readonly": "无法对只读主题进行投票" +} diff --git a/frontend/app/utils/loadLocale.ts b/frontend/app/utils/loadLocale.ts index e81fdf8d..aaee4429 100644 --- a/frontend/app/utils/loadLocale.ts +++ b/frontend/app/utils/loadLocale.ts @@ -23,6 +23,11 @@ export async function loadLocale(locale: string): Promise .then(res => res.default) .catch(() => enMessages); } + if (locale === 'zh') { + return import(/* webpackChunkName: "zh" */ '../locales/zh.json') + .then(res => res.default) + .catch(() => enMessages); + } return enMessages; } diff --git a/frontend/tasks/supportedLocales.json b/frontend/tasks/supportedLocales.json index 8b10181c..4cdf4433 100644 --- a/frontend/tasks/supportedLocales.json +++ b/frontend/tasks/supportedLocales.json @@ -1 +1 @@ -["en", "ru", "de", "fi", "es"] +["en", "ru", "de", "fi", "es", "zh"]