From 5c9f3addead6148f629293fe58bdaff5de0b30c4 Mon Sep 17 00:00:00 2001 From: sriram veeraghanta Date: Thu, 16 Jan 2025 13:02:44 +0530 Subject: [PATCH 1/2] feat: chinese language support --- packages/i18n/src/config/index.ts | 10 +- .../i18n/src/locales/cn/translations.json | 319 ++++++++++++++++++ 2 files changed, 327 insertions(+), 2 deletions(-) create mode 100644 packages/i18n/src/locales/cn/translations.json diff --git a/packages/i18n/src/config/index.ts b/packages/i18n/src/config/index.ts index 3f55d8cf6f0..759fe323814 100644 --- a/packages/i18n/src/config/index.ts +++ b/packages/i18n/src/config/index.ts @@ -1,6 +1,7 @@ +import cn from "../locales/cn/translations.json"; import en from "../locales/en/translations.json"; -import fr from "../locales/fr/translations.json"; import es from "../locales/es/translations.json"; +import fr from "../locales/fr/translations.json"; import ja from "../locales/ja/translations.json"; export type Language = (typeof languages)[number]; @@ -11,12 +12,13 @@ export type Translations = { }; export const fallbackLng = "en"; -export const languages = ["en", "fr", "es", "ja"] as const; +export const languages = ["en", "fr", "es", "ja", "cn"] as const; export const translations: Translations = { en, fr, es, ja, + cn, }; export const SUPPORTED_LANGUAGES = [ @@ -36,4 +38,8 @@ export const SUPPORTED_LANGUAGES = [ label: "Japanese", value: "ja", }, + { + label: "Chinese", + value: "cn", + }, ]; diff --git a/packages/i18n/src/locales/cn/translations.json b/packages/i18n/src/locales/cn/translations.json new file mode 100644 index 00000000000..093027c16b1 --- /dev/null +++ b/packages/i18n/src/locales/cn/translations.json @@ -0,0 +1,319 @@ +{ + "submit": "提交", + "cancel": "取消", + "loading": "加载中", + "error": "错误", + "success": "成功", + "warning": "警告", + "info": "信息", + "close": "关闭", + "yes": "是", + "no": "否", + "ok": "确定", + "name": "名称", + "description": "描述", + "search": "搜索", + "add_member": "添加成员", + "remove_member": "移除成员", + "add_members": "添加成员", + "remove_members": "移除成员", + "add": "添加", + "remove": "移除", + "add_new": "新增", + "remove_selected": "移除选中项", + "first_name": "名字", + "last_name": "姓氏", + "email": "电子邮件", + "display_name": "显示名称", + "role": "角色", + "timezone": "时区", + "avatar": "头像", + "cover_image": "封面图片", + "password": "密码", + "change_cover": "更换封面", + "language": "语言", + "saving": "保存中...", + "save_changes": "保存更改", + "deactivate_account": "停用账户", + "deactivate_account_description": "停用账户后,该账户内的所有数据和资源将被永久删除,且无法恢复。", + "profile_settings": "个人资料设置", + "your_account": "账户", + "profile": "个人资料", + "security": "安全", + "activity": "活动", + "appearance": "外观", + "notifications": "通知", + "workspaces": "工作区", + "create_workspace": "创建工作区", + "invitations": "邀请", + "summary": "摘要", + "assigned": "已分配", + "created": "已创建", + "subscribed": "已订阅", + "you_do_not_have_the_permission_to_access_this_page": "您没有权限访问此页面。", + "failed_to_sign_out_please_try_again": "登出失败,请重试。", + "password_changed_successfully": "密码已成功更改。", + "something_went_wrong_please_try_again": "出错了,请重试。", + "change_password": "更改密码", + "passwords_dont_match": "密码不匹配", + "current_password": "当前密码", + "new_password": "新密码", + "confirm_password": "确认密码", + "this_field_is_required": "此字段为必填项", + "changing_password": "正在更改密码", + "please_enter_your_password": "请输入您的密码。", + "password_length_should_me_more_than_8_characters": "密码长度应大于8个字符。", + "password_is_weak": "密码强度较弱。", + "password_is_strong": "密码强度较强。", + "load_more": "加载更多", + "select_or_customize_your_interface_color_scheme": "选择或自定义界面配色方案。", + "theme": "主题", + "system_preference": "系统偏好", + "light": "浅色", + "dark": "深色", + "light_contrast": "浅色高对比", + "dark_contrast": "深色高对比", + "custom": "自定义主题", + "select_your_theme": "选择主题", + "customize_your_theme": "自定义主题", + "background_color": "背景颜色", + "text_color": "文字颜色", + "primary_color": "主色调", + "sidebar_background_color": "侧边栏背景颜色", + "sidebar_text_color": "侧边栏文字颜色", + "set_theme": "设置主题", + "enter_a_valid_hex_code_of_6_characters": "请输入6位有效的十六进制代码", + "background_color_is_required": "背景颜色为必填项", + "text_color_is_required": "文字颜色为必填项", + "primary_color_is_required": "主色调为必填项", + "sidebar_background_color_is_required": "侧边栏背景颜色为必填项", + "sidebar_text_color_is_required": "侧边栏文字颜色为必填项", + "updating_theme": "正在更新主题", + "theme_updated_successfully": "主题已成功更新", + "failed_to_update_the_theme": "主题更新失败", + "email_notifications": "电子邮件通知", + "stay_in_the_loop_on_issues_you_are_subscribed_to_enable_this_to_get_notified": "启用此功能以接收您订阅问题的通知。", + "email_notification_setting_updated_successfully": "电子邮件通知设置已成功更新", + "failed_to_update_email_notification_setting": "电子邮件通知设置更新失败", + "notify_me_when": "在以下情况下通知我", + "property_changes": "属性更改", + "property_changes_description": "当负责人、优先级、估算等属性更改时通知。", + "state_change": "状态更改", + "state_change_description": "当问题状态更改时通知", + "issue_completed": "问题完成", + "issue_completed_description": "仅在问题完成时通知", + "comments": "评论", + "comments_description": "当有人在问题中添加评论时通知", + "mentions": "提及", + "mentions_description": "仅在评论或描述中提及您时通知", + "create_your_workspace": "创建工作区", + "only_your_instance_admin_can_create_workspaces": "只有实例管理员可以创建工作区", + "only_your_instance_admin_can_create_workspaces_description": "如果您知道实例管理员的电子邮件地址,请点击以下按钮联系他们。", + "go_back": "返回", + "request_instance_admin": "请求实例管理员", + "plane_logo": "Plane 徽标", + "workspace_creation_disabled": "工作区创建已禁用", + "workspace_request_subject": "新工作区请求", + "workspace_request_body": "实例管理员:\n\n请在 URL [/workspace-name] 处创建一个新的工作区。[工作区创建目的]\n\n谢谢。\n{{firstName}} {{lastName}}\n{{email}}", + "creating_workspace": "正在创建工作区", + "workspace_created_successfully": "工作区已成功创建", + "create_workspace_page": "创建工作区页面", + "workspace_could_not_be_created_please_try_again": "无法创建工作区,请重试。", + "workspace_could_not_be_created_please_try_again_description": "创建工作区时出错,请重试。", + "this_is_a_required_field": "此字段为必填项。", + "name_your_workspace": "为工作区命名", + "workspaces_names_can_contain_only_space_dash_and_alphanumeric_characters": "工作区名称只能包含空格、破折号和字母数字字符。", + "limit_your_name_to_80_characters": "名称长度限制为80个字符。", + "set_your_workspace_url": "设置工作区URL", + "limit_your_url_to_48_characters": "URL长度限制为48个字符。", + "how_many_people_will_use_this_workspace": "有多少人将使用此工作区?", + "how_many_people_will_use_this_workspace_description": "这将帮助确定购买的席位数量。", + "select_a_range": "选择一个范围", + "urls_can_contain_only_dash_and_alphanumeric_characters": "URL只能包含破折号和字母数字字符。", + "something_familiar_and_recognizable_is_always_best": "熟悉且易于识别的名称总是最佳选择。", + "workspace_url_is_already_taken": "工作区URL已被占用!", + "old_password": "旧密码", + "general_settings": "常规设置", + "sign_out": "登出", + "signing_out": "正在登出", + "active_cycles": "活跃周期", + "active_cycles_description": "监控所有项目的周期,跟踪高优先级问题,并关注需要关注的周期。", + "on_demand_snapshots_of_all_your_cycles": "所有周期的按需快照", + "upgrade": "升级", + "10000_feet_view": "所有活跃周期的概览", + "10000_feet_view_description": "放大查看所有项目的周期,而不是单独查看每个项目的周期。", + "get_snapshot_of_each_active_cycle": "获取每个活跃周期的快照", + "get_snapshot_of_each_active_cycle_description": "跟踪所有活跃周期的高级指标,查看进度并了解范围与截止日期的关系。", + "compare_burndowns": "比较燃尽图", + "compare_burndowns_description": "监控每个团队的表现,查看每个周期的燃尽报告。", + "quickly_see_make_or_break_issues": "快速查看关键问题", + "quickly_see_make_or_break_issues_description": "预览每个周期中与截止日期相关的高优先级问题。一键查看所有周期的详细信息。", + "zoom_into_cycles_that_need_attention": "关注需要关注的周期", + "zoom_into_cycles_that_need_attention_description": "一键调查未达预期的周期状态。", + "stay_ahead_of_blockers": "提前解决阻碍", + "stay_ahead_of_blockers_description": "发现项目间的挑战,查看其他视图中不明显的周期依赖关系。", + "analytics": "分析", + "workspace_invites": "工作区邀请", + "workspace_settings": "工作区设置", + "enter_god_mode": "进入上帝模式", + "workspace_logo": "工作区徽标", + "new_issue": "新建问题", + "home": "首页", + "your_work": "您的工作", + "drafts": "草稿", + "projects": "项目", + "views": "视图", + "workspace": "工作区", + "archives": "归档", + "settings": "设置", + "failed_to_move_favorite": "移动收藏失败", + "your_favorites": "您的收藏", + "no_favorites_yet": "尚无收藏", + "create_folder": "创建文件夹", + "new_folder": "新建文件夹", + "favorite_updated_successfully": "收藏已成功更新", + "favorite_created_successfully": "收藏已成功创建", + "folder_already_exists": "文件夹已存在", + "folder_name_cannot_be_empty": "文件夹名称不能为空", + "something_went_wrong": "出错了", + "failed_to_reorder_favorite": "重新排序收藏失败", + "favorite_removed_successfully": "收藏已成功移除", + "failed_to_create_favorite": "创建收藏失败", + "failed_to_rename_favorite": "重命名收藏失败", + "project_link_copied_to_clipboard": "项目链接已复制到剪贴板", + "link_copied": "链接已复制", + "your_projects": "您的项目", + "add_project": "添加项目", + "create_project": "创建项目", + "failed_to_remove_project_from_favorites": "无法从收藏中移除项目,请重试。", + "project_created_successfully": "项目已成功创建", + "project_created_successfully_description": "项目已成功创建。您现在可以开始添加问题。", + "project_cover_image_alt": "项目封面图片", + "name_is_required": "名称为必填项", + "title_should_be_less_than_255_characters": "标题应少于255个字符", + "project_name": "项目名称", + "project_id_must_be_at_least_1_character": "项目ID至少为1个字符", + "project_id_must_be_at_most_5_characters": "项目ID最多为5个字符", + "project_id": "项目ID", + "project_id_tooltip_content": "用于唯一标识项目中的问题。最多5个字符。", + "description_placeholder": "描述...", + "only_alphanumeric_non_latin_characters_allowed": "仅允许字母数字和非拉丁字符。", + "project_id_is_required": "项目ID为必填项", + "select_network": "选择网络", + "lead": "负责人", + "private": "私有", + "public": "公开", + "accessible_only_by_invite": "仅限邀请访问", + "anyone_in_the_workspace_except_guests_can_join": "除访客外,工作区中的任何人都可以加入", + "creating": "创建中", + "creating_project": "正在创建项目", + "adding_project_to_favorites": "正在将项目添加到收藏", + "project_added_to_favorites": "项目已添加到收藏", + "couldnt_add_the_project_to_favorites": "无法将项目添加到收藏,请重试。", + "removing_project_from_favorites": "正在从收藏中移除项目", + "project_removed_from_favorites": "项目已从收藏中移除", + "couldnt_remove_the_project_from_favorites": "无法从收藏中移除项目,请重试。", + "add_to_favorites": "添加到收藏", + "remove_from_favorites": "从收藏中移除", + "publish_settings": "发布设置", + "publish": "发布", + "copy_link": "复制链接", + "leave_project": "离开项目", + "join_the_project_to_rearrange": "加入项目以重新排序", + "drag_to_rearrange": "拖动以重新排序", + "congrats": "恭喜!", + "project": "项目", + "open_project": "打开项目", + "issues": "问题", + "cycles": "周期", + "modules": "模块", + "pages": "页面", + "intake": "接收", + "time_tracking": "时间跟踪", + "work_management": "工作管理", + "projects_and_issues": "项目与问题", + "projects_and_issues_description": "在此项目上启用或禁用。", + "cycles_description": "按时间段对项目工作进行时间盒管理,并调整频率。", + "modules_description": "将工作分组为类似子项目的设置,拥有自己的负责人和分配人。", + "views_description": "保存排序、过滤和显示选项以供以后使用或共享。", + "pages_description": "写下一些内容。", + "intake_description": "启用此功能以接收您订阅问题的通知。", + "time_tracking_description": "跟踪问题和项目所花费的时间。", + "work_management_description": "轻松管理工作和项目。", + "documentation": "文档", + "message_support": "联系支持", + "contact_sales": "联系销售", + "hyper_mode": "超速模式", + "keyboard_shortcuts": "键盘快捷键", + "whats_new": "新功能", + "version": "版本", + "we_are_having_trouble_fetching_the_updates": "获取更新时出现问题。", + "our_changelogs": "我们的更新日志", + "for_the_latest_updates": "获取最新更新,请访问", + "please_visit": "请访问", + "docs": "文档", + "full_changelog": "完整更新日志", + "support": "支持", + "discord": "Discord", + "powered_by_plane_pages": "由 Plane Pages 提供支持", + "please_select_at_least_one_invitation": "请至少选择一个邀请。", + "please_select_at_least_one_invitation_description": "请至少选择一个邀请以加入工作区。", + "we_see_that_someone_has_invited_you_to_join_a_workspace": "我们发现有人邀请您加入一个工作区", + "join_a_workspace": "加入工作区", + "we_see_that_someone_has_invited_you_to_join_a_workspace_description": "我们发现有人邀请您加入一个工作区", + "join_a_workspace_description": "加入工作区", + "accept_and_join": "接受并加入", + "go_home": "返回首页", + "no_pending_invites": "没有待处理的邀请", + "you_can_see_here_if_someone_invites_you_to_a_workspace": "如果有人邀请您加入工作区,您可以在此处查看", + "back_to_home": "返回首页", + "workspace_name": "工作区名称", + "deactivate_your_account": "停用您的账户", + "deactivate_your_account_description": "停用后,您将无法再分配问题,工作区的计费也将停止。要重新激活账户,您需要使用此电子邮件地址收到工作区邀请。", + "deactivating": "正在停用", + "confirm": "确认", + "draft_created": "草稿已创建", + "issue_created_successfully": "问题已成功创建", + "draft_creation_failed": "草稿创建失败", + "issue_creation_failed": "问题创建失败", + "draft_issue": "草稿问题", + "issue_updated_successfully": "问题已成功更新", + "issue_could_not_be_updated": "无法更新问题", + "create_a_draft": "创建草稿", + "save_to_drafts": "保存为草稿", + "save": "保存", + "updating": "正在更新", + "create_new_issue": "创建新问题", + "editor_is_not_ready_to_discard_changes": "编辑器尚未准备好丢弃更改", + "failed_to_move_issue_to_project": "无法将问题移动到项目", + "create_more": "创建更多", + "add_to_project": "添加到项目", + "discard": "丢弃", + "duplicate_issue_found": "发现重复问题", + "duplicate_issues_found": "发现重复问题", + "no_matching_results": "没有匹配的结果", + "title_is_required": "标题为必填项", + "title": "标题", + "state": "状态", + "priority": "优先级", + "none": "无", + "urgent": "紧急", + "high": "高", + "medium": "中", + "low": "低", + "members": "成员", + "assignee": "分配人", + "assignees": "分配人", + "you": "您", + "labels": "标签", + "create_new_label": "创建新标签", + "start_date": "开始日期", + "due_date": "截止日期", + "cycle": "周期", + "estimate": "估算", + "change_parent_issue": "更改父问题", + "remove_parent_issue": "移除父问题", + "add_parent": "添加父问题", + "loading_members": "正在加载成员...", + "inbox": "收件箱" +} From 3d313f8079c00e3a41176cacd9303bb71a0c8f19 Mon Sep 17 00:00:00 2001 From: sriram veeraghanta Date: Thu, 16 Jan 2025 13:12:51 +0530 Subject: [PATCH 2/2] fix: following iso standards --- packages/i18n/src/config/index.ts | 8 ++++---- packages/i18n/src/locales/{cn => zh-CN}/translations.json | 0 2 files changed, 4 insertions(+), 4 deletions(-) rename packages/i18n/src/locales/{cn => zh-CN}/translations.json (100%) diff --git a/packages/i18n/src/config/index.ts b/packages/i18n/src/config/index.ts index 759fe323814..170f3baacb5 100644 --- a/packages/i18n/src/config/index.ts +++ b/packages/i18n/src/config/index.ts @@ -1,8 +1,8 @@ -import cn from "../locales/cn/translations.json"; import en from "../locales/en/translations.json"; import es from "../locales/es/translations.json"; import fr from "../locales/fr/translations.json"; import ja from "../locales/ja/translations.json"; +import zh_CN from "../locales/zh-CN/translations.json"; export type Language = (typeof languages)[number]; export type Translations = { @@ -12,13 +12,13 @@ export type Translations = { }; export const fallbackLng = "en"; -export const languages = ["en", "fr", "es", "ja", "cn"] as const; +export const languages = ["en", "fr", "es", "ja", "zh-CN"] as const; export const translations: Translations = { en, fr, es, ja, - cn, + zh_CN, }; export const SUPPORTED_LANGUAGES = [ @@ -40,6 +40,6 @@ export const SUPPORTED_LANGUAGES = [ }, { label: "Chinese", - value: "cn", + value: "zh-CN", }, ]; diff --git a/packages/i18n/src/locales/cn/translations.json b/packages/i18n/src/locales/zh-CN/translations.json similarity index 100% rename from packages/i18n/src/locales/cn/translations.json rename to packages/i18n/src/locales/zh-CN/translations.json