diff --git a/src/components/Layout/Dashboard/Header/HeaderLocale.tsx b/src/components/Layout/Dashboard/Header/HeaderLocale.tsx
index 4e149a9..220b1b1 100644
--- a/src/components/Layout/Dashboard/Header/HeaderLocale.tsx
+++ b/src/components/Layout/Dashboard/Header/HeaderLocale.tsx
@@ -31,6 +31,9 @@ export default function HeaderLocale({ currentLocale }: { currentLocale: string
changeLocale('ja')}>
日本語
+ changeLocale('zh')}>
+ 简体中文
+
)
diff --git a/src/locales/dictionary.ts b/src/locales/dictionary.ts
index 171033c..af265b9 100644
--- a/src/locales/dictionary.ts
+++ b/src/locales/dictionary.ts
@@ -5,6 +5,7 @@ import { defaultLocale } from '@/locales/config'
const dictionaries = {
en: () => import('./en/lang.json').then((module) => module.default),
ja: () => import('./ja/lang.json').then((module) => module.default),
+ zh: () => import('./zh/lang.json').then((module) => module.default),
}
type Locale = keyof typeof dictionaries
diff --git a/src/locales/zh/lang.json b/src/locales/zh/lang.json
new file mode 100644
index 0000000..4e8dedb
--- /dev/null
+++ b/src/locales/zh/lang.json
@@ -0,0 +1,329 @@
+{
+ "login": {
+ "title": "登录",
+ "description": "登录到你的账户",
+ "form": {
+ "username": "用户名",
+ "password": "密码",
+ "submit": "登录"
+ },
+ "forgot_password": "忘记密码?",
+ "signup": {
+ "title": "注册",
+ "description": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\ntempor incididunt ut labore et dolore magna aliqua."
+ },
+ "message": {
+ "auth_failed": "用户名或密码无效"
+ }
+ },
+ "pagination": {
+ "summary": "显示从 {{from}} 到 {{to}} 总共 {{total}} 条结果",
+ "rows_per_page": "每页行数"
+ },
+ "signup": {
+ "title": "注册页",
+ "description": "创建你的账户",
+ "register_now": "立刻注册!",
+ "form": {
+ "username": "用户名",
+ "email": "Email",
+ "password": "密码",
+ "confirm_password": "密码校验",
+ "submit": "创建账户"
+ }
+ },
+ "action": {
+ "info": "详情",
+ "edit": "编辑",
+ "delete": "删除",
+ "submit": "提交",
+ "submitting": "提交中...",
+ "reset": "重置"
+ },
+ "theme": {
+ "light": "浅色",
+ "dark": "暗色",
+ "auto": "自动选择"
+ },
+ "dashboard": {
+ "featured": {
+ "user": "用户",
+ "income": "收入",
+ "conversion_rate": "转化率",
+ "sessions": "会话",
+ "action": {
+ "action1": "动作",
+ "action2": "另一个动作",
+ "action3": "其他动作"
+ }
+ },
+ "traffic": {
+ "title": "流量",
+ "duration": "2021年1月-7月",
+ "option": {
+ "day": "日",
+ "month": "月",
+ "year": "年"
+ },
+ "chart": {
+ "xlabel1": "一月",
+ "xlabel2": "二月",
+ "xlabel3": "三月",
+ "xlabel4": "四月",
+ "xlabel5": "五月",
+ "xlabel6": "六月",
+ "xlabel7": "七月"
+ },
+ "users": "用户",
+ "views": "显示",
+ "category1": "访问数",
+ "category2": "独立IP访客",
+ "category3": "页面访问数",
+ "category4": "新用户",
+ "category5": "跳失率"
+ },
+ "social": {
+ "facebook": {
+ "label1": "好友数量",
+ "label2": "信息流"
+ },
+ "twitter": {
+ "label1": "关注者",
+ "label2": "推文"
+ },
+ "instagram": {
+ "label1": "联系人",
+ "label2": "信息"
+ }
+ },
+ "sales": {
+ "title": "流量 & 销售",
+ "stats": {
+ "stat1": "新客户",
+ "stat2": "活跃客户",
+ "stat3": "页面访问量",
+ "stat4": "有机流量"
+ },
+ "monday": "星期一",
+ "tuesday": "星期二",
+ "wednesday": "星期三",
+ "thursday": "星期四",
+ "friday": "星期五",
+ "saturday": "星期六",
+ "sunday": "星期日",
+ "male": "男",
+ "female": "女",
+ "organic": "有机搜索",
+ "facebook": "脸书(Facebook)",
+ "twitter": "推特(Twitter)",
+ "linkedin": "领英(LinkedIn)"
+ },
+ "listing": {
+ "headers": {
+ "header1": "用户",
+ "header2": "使用量",
+ "header3": "付款方法",
+ "header4": "动态"
+ },
+ "user_status": {
+ "new": "新",
+ "recurring": "存量"
+ },
+ "registered": "已注册的",
+ "last_login": "最后登录",
+ "usage_duration": "2020年6月11日 - 2020年7月10日",
+ "registered_at": "2020年1月1日",
+ "items": {
+ "item1": {
+ "name": "Yiorgos Avraamu",
+ "login_at": "10秒前"
+ },
+ "item2": {
+ "name": "Avram Tarasios",
+ "login_at": "5分钟前"
+ },
+ "item3": {
+ "name": "Quintin Ed",
+ "login_at": "1小时前"
+ },
+ "item4": {
+ "name": "Enéas Kwadwo",
+ "login_at": "上个月"
+ },
+ "item5": {
+ "name": "Agapetus Tadeáš",
+ "login_at": "上个星期"
+ },
+ "item6": {
+ "name": "Friderik Dávid",
+ "login_at": "昨天"
+ }
+ }
+ }
+ },
+ "pokemons": {
+ "title": "宝可梦",
+ "add_new": "添加",
+ "attribute": {
+ "name": "名称",
+ "type": "类型",
+ "egg_group": "蛋群",
+ "hp": "血量",
+ "attack": "物理攻击",
+ "defense": "物理防御",
+ "sp_attack": "法术攻击",
+ "sp_defense": "发酥防御",
+ "speed": "速度",
+ "total": "总计"
+ }
+ },
+ "featured_nav": {
+ "dashboard": "面板",
+ "users": "用户",
+ "settings": "设置"
+ },
+ "notification": {
+ "message": "你有{{total}}条提醒",
+ "items": {
+ "new_user": "新用户注册",
+ "deleted_user": "用户删除",
+ "sales_report": "销售报告就绪",
+ "new_client": "新客户",
+ "server_overloaded": "服务器过载"
+ },
+ "server": {
+ "title": "服务器",
+ "processes": "处理器",
+ "cores": "核心",
+ "items": {
+ "cpu": "CPU使用量",
+ "memory": "内存使用量",
+ "ssd1": "固态硬盘1使用量"
+ }
+ }
+ },
+ "task": {
+ "message": "你有{{total}}个待处理任务",
+ "items": {
+ "task1": "升级Next.JS",
+ "task2": "训练宝可梦",
+ "task3": "完善Pokedex",
+ "task4": "捕捉所有的闪光点",
+ "task5": "打败所有的训练馆"
+ },
+ "view_all": "查看所有任务"
+ },
+ "messages": {
+ "message": "你有{{total}}条信息",
+ "items": {
+ "item1": {
+ "user": "John Doe",
+ "time": "刚刚",
+ "title": "宠物皮卡丘",
+ "description": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt"
+ },
+ "item2": {
+ "user": "John Doe",
+ "time": "5分钟之前",
+ "title": "打扮伊布",
+ "description": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt"
+ },
+ "item3": {
+ "user": "John Doe",
+ "time": "1:52 PM",
+ "title": "组队训练",
+ "description": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt"
+ },
+ "item4": {
+ "user": "John Doe",
+ "time": "4:03 PM",
+ "title": "去Safari区",
+ "description": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt"
+ }
+ }
+ },
+ "profile": {
+ "account": {
+ "title": "账户",
+ "items": {
+ "updates": "更新",
+ "messages": "信息",
+ "tasks": "任务",
+ "comments": "评论"
+ }
+ },
+ "settings": {
+ "title": "设置",
+ "items": {
+ "profile": "个人信息",
+ "settings": "设置",
+ "payments": "付款",
+ "projects": "项目"
+ }
+ },
+ "lock_account": "锁定账户",
+ "logout": "登出"
+ },
+ "breadcrumb": {
+ "home": "首页",
+ "library": "库",
+ "data": "数据"
+ },
+ "sidebar": {
+ "items": {
+ "dashboard": "面板",
+ "sample": "样例",
+ "theme": "主题",
+ "colors": "颜色",
+ "typography": "排版",
+ "components": "组件",
+ "accordion": "手风琴",
+ "breadcrumb": "面包屑",
+ "cards": "卡片",
+ "carousel": "旋转木马",
+ "collapse": "异常页",
+ "list_group": "列表组",
+ "navs": "导航",
+ "pagination": "分页",
+ "popovers": "弹出框",
+ "progress": "进度条",
+ "scrollspy": "滚动条",
+ "spinners": "列表选择框",
+ "tables": "表格",
+ "tabs": "弹出框",
+ "tooltips": "提示信息",
+ "buttons": "按钮",
+ "buttons_group": "按钮组",
+ "dropdowns": "下拉",
+ "charts": "表格",
+ "form_control": "表单控制",
+ "select": "选择",
+ "checks_and_radios": "单选框和复选框",
+ "range": "范围",
+ "input_group": "输入框组",
+ "floating_labels": "浮动标签",
+ "layout": "布局",
+ "validation": "验证",
+ "core_ui_icons": "CoreUI 图标",
+ "core_ui_icons_brand": "CoreUI 图标 - 品牌",
+ "core_ui_icons_flag": "CoreUI 图标 - 标记",
+ "alerts": "警示",
+ "badge": "徽章",
+ "modals": "模态框",
+ "toasts": "Toasts",
+ "widgets": "小组件",
+ "login": "登录页",
+ "register": "注册页",
+ "error404": "404错误页面",
+ "error500": "500错误页面",
+ "docs": "文档",
+ "try_core_ui_pro": "试用 CoreUI PRO",
+ "base": "基础",
+ "forms": "表单",
+ "icons": "图标",
+ "notifications": "提醒",
+ "extras": "更多组件",
+ "pages": "页面"
+ }
+ }
+}
diff --git a/src/zod/zod.ts b/src/zod/zod.ts
index 25e5202..d7244f0 100644
--- a/src/zod/zod.ts
+++ b/src/zod/zod.ts
@@ -1,6 +1,7 @@
import i18next from 'i18next'
import jaTranslation from 'zod-i18n-map/locales/ja/zod.json'
import enTranslation from 'zod-i18n-map/locales/en/zod.json'
+import zhTranslation from 'zod-i18n-map/locales/zh-CN/zod.json'
import { makeZodI18nMap } from 'zod-i18n-map'
import { z } from 'zod'
import { getLocale } from '@/locales/dictionary'
@@ -21,9 +22,18 @@ en.init({
},
})
+const zh = i18next.createInstance()
+zh.init({
+ lng: 'zh',
+ resources: {
+ zh: { zod: zhTranslation },
+ },
+})
+
const zodMap = {
en: makeZodI18nMap({ t: en.t }),
ja: makeZodI18nMap({ t: ja.t }),
+ zh: makeZodI18nMap({ t: zh.t }),
}
// Set zod error map by user's locale.