diff --git a/front/src/i18n/zh-CN/audio.ts b/front/src/i18n/zh-CN/audio.ts
new file mode 100644
index 00000000..b6127f8d
--- /dev/null
+++ b/front/src/i18n/zh-CN/audio.ts
@@ -0,0 +1,11 @@
+import type { BaseTranslation } from "../i18n-types";
+
+const audio: BaseTranslation = {
+ manager: {
+ reduce: "说话时降低音乐音量",
+ allow: "播放声音",
+ },
+ message: "音频消息",
+};
+
+export default audio;
diff --git a/front/src/i18n/zh-CN/camera.ts b/front/src/i18n/zh-CN/camera.ts
new file mode 100644
index 00000000..cb0b6026
--- /dev/null
+++ b/front/src/i18n/zh-CN/camera.ts
@@ -0,0 +1,25 @@
+import type { BaseTranslation } from "../i18n-types";
+
+const camera: BaseTranslation = {
+ enable: {
+ title: "开启你的摄像头和麦克风",
+ start: "出发!",
+ },
+ help: {
+ title: "需要摄像头/麦克风权限",
+ permissionDenied: "拒绝访问",
+ content: "你必须在浏览器设置里允许摄像头和麦克风访问权限。",
+ firefoxContent: '如果你不希望Firefox反复要求授权,请选中"记住此决定"。',
+ refresh: "刷新",
+ continue: "不使用摄像头继续游戏",
+ screen: {
+ firefox: "/resources/help-setting-camera-permission/en-US-firefox.png",
+ chrome: "/resources/help-setting-camera-permission/en-US-firefox.png",
+ },
+ },
+ my: {
+ silentZone: "安静区",
+ },
+};
+
+export default camera;
diff --git a/front/src/i18n/zh-CN/chat.ts b/front/src/i18n/zh-CN/chat.ts
new file mode 100644
index 00000000..5b1ccad1
--- /dev/null
+++ b/front/src/i18n/zh-CN/chat.ts
@@ -0,0 +1,12 @@
+import type { BaseTranslation } from "../i18n-types";
+
+const chat: BaseTranslation = {
+ intro: "聊天历史:",
+ enter: "输入消息...",
+ menu: {
+ visitCard: "Visit card",
+ addFriend: "添加朋友",
+ },
+};
+
+export default chat;
diff --git a/front/src/i18n/zh-CN/companion.ts b/front/src/i18n/zh-CN/companion.ts
new file mode 100644
index 00000000..2cf78080
--- /dev/null
+++ b/front/src/i18n/zh-CN/companion.ts
@@ -0,0 +1,11 @@
+import type { BaseTranslation } from "../i18n-types";
+
+const companion: BaseTranslation = {
+ select: {
+ title: "选择你的伙伴",
+ any: "没有伙伴",
+ continue: "继续",
+ },
+};
+
+export default companion;
diff --git a/front/src/i18n/zh-CN/emoji.ts b/front/src/i18n/zh-CN/emoji.ts
new file mode 100644
index 00000000..b0f18410
--- /dev/null
+++ b/front/src/i18n/zh-CN/emoji.ts
@@ -0,0 +1,21 @@
+import type { BaseTranslation } from "../i18n-types";
+
+const emoji: BaseTranslation = {
+ search: "搜索 emojis...",
+ categories: {
+ recents: "最近的 Emojis",
+ smileys: "表情",
+ people: "人物",
+ animals: "动物和自然",
+ food: "视频和饮料",
+ activities: "活动",
+ travel: "旅行和地点",
+ objects: "物品",
+ symbols: "符号",
+ flags: "旗帜",
+ custom: "自定义",
+ },
+ notFound: "未找到emoji",
+};
+
+export default emoji;
diff --git a/front/src/i18n/zh-CN/error.ts b/front/src/i18n/zh-CN/error.ts
new file mode 100644
index 00000000..a76654f3
--- /dev/null
+++ b/front/src/i18n/zh-CN/error.ts
@@ -0,0 +1,20 @@
+import type { BaseTranslation } from "../i18n-types";
+
+const error: BaseTranslation = {
+ accessLink: {
+ title: "访问链接错误",
+ subTitle: "找不到地图。请检查你的访问链接。",
+ details: "如果你想了解更多信息,你可以联系管理员或联系我们: hello@workadventu.re",
+ },
+ connectionRejected: {
+ title: "连接被拒绝",
+ subTitle: "你无法加入该世界。请稍后重试 {error}.",
+ details: "如果你想了解更多信息,你可以联系管理员或联系我们: hello@workadventu.re",
+ },
+ connectionRetry: {
+ unableConnect: "无法链接到 WorkAdventure. 请检查互联网连接。",
+ },
+ error: "错误",
+};
+
+export default error;
diff --git a/front/src/i18n/zh-CN/follow.ts b/front/src/i18n/zh-CN/follow.ts
new file mode 100644
index 00000000..52754d00
--- /dev/null
+++ b/front/src/i18n/zh-CN/follow.ts
@@ -0,0 +1,27 @@
+import type { BaseTranslation } from "../i18n-types";
+
+const follow: BaseTranslation = {
+ interactStatus: {
+ following: "跟随 {leader}",
+ waitingFollowers: "等待跟随者确认",
+ followed: {
+ one: "{follower} 正在跟随你",
+ two: "{firstFollower} 和 {secondFollower} 正在跟随你",
+ many: "{followers} 和 {lastFollower} 正在跟随你",
+ },
+ },
+ interactMenu: {
+ title: {
+ interact: "交互",
+ follow: "要跟随 {leader} 吗?",
+ },
+ stop: {
+ leader: "要停止领路吗?",
+ follower: "要停止跟随 {leader} 吗?",
+ },
+ yes: "是",
+ no: "否",
+ },
+};
+
+export default follow;
diff --git a/front/src/i18n/zh-CN/index.ts b/front/src/i18n/zh-CN/index.ts
new file mode 100644
index 00000000..f77c5789
--- /dev/null
+++ b/front/src/i18n/zh-CN/index.ts
@@ -0,0 +1,34 @@
+import type { BaseTranslation } from "../i18n-types";
+import audio from "./audio";
+import camera from "./camera";
+import chat from "./chat";
+import companion from "./companion";
+import woka from "./woka";
+import error from "./error";
+import follow from "./follow";
+import login from "./login";
+import menu from "./menu";
+import report from "./report";
+import warning from "./warning";
+import emoji from "./emoji";
+import trigger from "./trigger";
+
+const zh_CN: BaseTranslation = {
+ language: "中文",
+ country: "中国",
+ audio,
+ camera,
+ chat,
+ companion,
+ woka,
+ error,
+ follow,
+ login,
+ menu,
+ report,
+ warning,
+ emoji,
+ trigger,
+};
+
+export default zh_CN;
diff --git a/front/src/i18n/zh-CN/login.ts b/front/src/i18n/zh-CN/login.ts
new file mode 100644
index 00000000..cf788e2e
--- /dev/null
+++ b/front/src/i18n/zh-CN/login.ts
@@ -0,0 +1,14 @@
+import type { BaseTranslation } from "../i18n-types";
+
+const login: BaseTranslation = {
+ input: {
+ name: {
+ placeholder: "输入你的名字",
+ empty: "名字为空",
+ },
+ },
+ terms: '点击继续,意味着你同意我们的使用协议, 隐私政策 和 Cookie策略.',
+ continue: "继续",
+};
+
+export default login;
diff --git a/front/src/i18n/zh-CN/menu.ts b/front/src/i18n/zh-CN/menu.ts
new file mode 100644
index 00000000..e375c73c
--- /dev/null
+++ b/front/src/i18n/zh-CN/menu.ts
@@ -0,0 +1,132 @@
+import type { BaseTranslation } from "../i18n-types";
+
+const menu: BaseTranslation = {
+ title: "菜单",
+ icon: {
+ open: {
+ menu: "打开菜单",
+ invite: "显示邀请",
+ register: "注册",
+ chat: "打开聊天",
+ },
+ },
+ visitCard: {
+ close: "关闭",
+ },
+ profile: {
+ edit: {
+ name: "编辑名字",
+ woka: "编辑 WOKA",
+ companion: "编辑伙伴",
+ camera: "摄像头设置",
+ },
+ login: "登录",
+ logout: "登出",
+ },
+ settings: {
+ gameQuality: {
+ title: "游戏质量",
+ short: {
+ high: "高 (120 fps)",
+ medium: "中 (60 fps)",
+ small: "低 (40 fps)",
+ minimum: "最低 (20 fps)",
+ },
+ long: {
+ high: "高视频质量 (120 fps)",
+ medium: "中视频质量 (60 fps, 推荐)",
+ small: "低视频质量 (40 fps)",
+ minimum: "最低视频质量 (20 fps)",
+ },
+ },
+ videoQuality: {
+ title: "视频质量",
+ short: {
+ high: "高 (30 fps)",
+ medium: "中 (20 fps)",
+ small: "低 (10 fps)",
+ minimum: "最低 (5 fps)",
+ },
+ long: {
+ high: "高视频质量 (120 fps)",
+ medium: "中视频质量 (60 fps, 推荐)",
+ small: "低视频质量 (40 fps)",
+ minimum: "最低视频质量 (20 fps)",
+ },
+ },
+ language: {
+ title: "语言",
+ },
+ privacySettings: {
+ title: "离开模式设置",
+ explanation:
+ '当WorkAdventure标签页在后台时, 会切换到"离开模式"。在该模式中,你可以选择自动禁用摄像头 和/或 麦克风 直到标签页显示。',
+ cameraToggle: "摄像头",
+ microphoneToggle: "麦克风",
+ },
+ save: {
+ warning: "(保存这些设置会重新加载游戏)",
+ button: "保存",
+ },
+ fullscreen: "全屏",
+ notifications: "通知",
+ cowebsiteTrigger: "在打开网页和Jitsi Meet会议前总是询问",
+ ignoreFollowRequest: "忽略跟随其他用户的请求",
+ },
+ invite: {
+ description: "分享该房间的链接!",
+ copy: "复制",
+ share: "分享",
+ walk_automatically_to_position: "自动走到我的位置",
+ },
+ globalMessage: {
+ text: "文本",
+ audio: "音频",
+ warning: "广播到世界的所有房间",
+ enter: "输入你的消息...",
+ send: "发送",
+ },
+ globalAudio: {
+ uploadInfo: "上传文件",
+ error: "未选择文件。发送前必须上传一个文件。",
+ },
+ contact: {
+ gettingStarted: {
+ title: "开始",
+ description:
+ "WorkAdventure使你能够创建一个在线空间,与他们自然地交流。这都从创建你自己的空间开始。从我们的团队预制的大量选项中选择一个地图。",
+ },
+ createMap: {
+ title: "创建地图",
+ description: "你也可以跟随文档中的步骤创建你自己的地图。",
+ },
+ },
+ about: {
+ mapInfo: "地图信息",
+ mapLink: "地图链接",
+ copyrights: {
+ map: {
+ title: "地图版权",
+ empty: "地图创建者未申明地图版权。",
+ },
+ tileset: {
+ title: "tilesets版权",
+ empty: "地图创建者未申明tilesets版权。这不意味着这些tilesets没有版权。",
+ },
+ audio: {
+ title: "音频文件版权",
+ empty: "地图创建者未申明音频文件版权。这不意味着这些音频文件没有版权。",
+ },
+ },
+ },
+ sub: {
+ profile: "资料",
+ settings: "设置",
+ invite: "邀请",
+ credit: "Credit",
+ globalMessages: "全局消息",
+ contact: "联系",
+ },
+};
+
+export default menu;
diff --git a/front/src/i18n/zh-CN/report.ts b/front/src/i18n/zh-CN/report.ts
new file mode 100644
index 00000000..268a2236
--- /dev/null
+++ b/front/src/i18n/zh-CN/report.ts
@@ -0,0 +1,25 @@
+import type { BaseTranslation } from "../i18n-types";
+
+const report: BaseTranslation = {
+ block: {
+ title: "屏蔽",
+ content: "屏蔽任何来自 {userName} 的通信。该操作是可逆的。",
+ unblock: "解除屏蔽该用户",
+ block: "屏蔽该用户",
+ },
+ title: "举报",
+ content: "发送举报信息给这个房间的管理员,他们后续可能禁用该用户。",
+ message: {
+ title: "举报信息: ",
+ empty: "举报信息不能为空.",
+ },
+ submit: "举报该用户",
+ moderate: {
+ title: "Moderate {userName}",
+ block: "屏蔽",
+ report: "举报",
+ noSelect: "错误:未选择行为。",
+ },
+};
+
+export default report;
diff --git a/front/src/i18n/zh-CN/trigger.ts b/front/src/i18n/zh-CN/trigger.ts
new file mode 100644
index 00000000..d6b0e8d7
--- /dev/null
+++ b/front/src/i18n/zh-CN/trigger.ts
@@ -0,0 +1,9 @@
+import type { BaseTranslation } from "../i18n-types";
+
+const trigger: BaseTranslation = {
+ cowebsite: "按空格键或点击这里打开网页",
+ jitsiRoom: "按空格键或点击这里进入Jitsi Meet会议",
+ newTab: "按空格键或点击这里在新标签打开网页",
+};
+
+export default trigger;
diff --git a/front/src/i18n/zh-CN/warning.ts b/front/src/i18n/zh-CN/warning.ts
new file mode 100644
index 00000000..679a7b90
--- /dev/null
+++ b/front/src/i18n/zh-CN/warning.ts
@@ -0,0 +1,18 @@
+import type { BaseTranslation } from "../i18n-types";
+import { ADMIN_URL } from "../../Enum/EnvironmentVariable";
+
+const upgradeLink = ADMIN_URL + "/pricing";
+
+const warning: BaseTranslation = {
+ title: "警告!",
+ content: `该世界已接近容量限制!你可以 点击这里 升级它的容量`,
+ limit: "该世界已接近容量限制!",
+ accessDenied: {
+ camera: "摄像头访问权限被拒绝。点击这里检查你的浏览器权限。",
+ screenSharing: "屏幕共享权限被拒绝。点击这里检查你的浏览器权限。",
+ },
+ importantMessage: "重要消息",
+ connectionLost: "连接丢失。重新连接中...",
+};
+
+export default warning;
diff --git a/front/src/i18n/zh-CN/woka.ts b/front/src/i18n/zh-CN/woka.ts
new file mode 100644
index 00000000..2b30e676
--- /dev/null
+++ b/front/src/i18n/zh-CN/woka.ts
@@ -0,0 +1,23 @@
+import type { BaseTranslation } from "../i18n-types";
+
+const woka: BaseTranslation = {
+ customWoka: {
+ title: "自定义你的WOKA",
+ navigation: {
+ return: "返回",
+ back: "上一个",
+ finish: "完成",
+ next: "下一个",
+ },
+ },
+ selectWoka: {
+ title: "选择你的WOKA",
+ continue: "继续",
+ customize: "自定义你的 WOKA",
+ },
+ menu: {
+ businessCard: "Business Card",
+ },
+};
+
+export default woka;