From 8e66af627a1aa4241e5c36b0301bbb45597f0830 Mon Sep 17 00:00:00 2001 From: Star_caorui Date: Thu, 24 Apr 2025 02:39:37 +0800 Subject: [PATCH] chore(translations): Add Simplified Chinese translation. (#473) --- frontend/messages/zh-CN.json | 346 ++++++++++++++++++ frontend/project.inlang/settings.json | 2 +- .../settings/account/locale-picker.svelte | 3 +- 3 files changed, 349 insertions(+), 2 deletions(-) create mode 100644 frontend/messages/zh-CN.json diff --git a/frontend/messages/zh-CN.json b/frontend/messages/zh-CN.json new file mode 100644 index 00000000..359b64b5 --- /dev/null +++ b/frontend/messages/zh-CN.json @@ -0,0 +1,346 @@ +{ + "$schema": "https://inlang.com/schema/inlang-message-format", + "my_account": "账户", + "logout": "登出", + "confirm": "确认", + "key": "Key", + "value": "Value", + "remove_custom_claim": "移除自定义声明", + "add_custom_claim": "添加自定义声明", + "add_another": "添加另一个", + "select_a_date": "选择日期", + "select_file": "选择文件", + "profile_picture": "头像", + "profile_picture_is_managed_by_ldap_server": "头像由 LDAP 服务器管理,无法在此处更改。", + "click_profile_picture_to_upload_custom": "点击头像来从文件中上传您的自定义头像。", + "image_should_be_in_format": "图片应为 PNG 或 JPEG 格式。", + "items_per_page": "每页条数", + "no_items_found": "🌱 这里暂时空空如也。", + "search": "搜索...", + "expand_card": "展开卡片", + "copied": "已复制", + "click_to_copy": "点击复制", + "something_went_wrong": "出了点问题", + "go_back_to_home": "返回首页", + "dont_have_access_to_your_passkey": "无法使用您的通行密钥?试试其他登录方式。", + "login_background": "登录页背景图", + "logo": "Logo", + "login_code": "临时登录码", + "create_a_login_code_to_sign_in_without_a_passkey_once": "创建一个临时登录码,用户可以使用它一次性登录而无需通行密钥。", + "one_hour": "1 小时", + "twelve_hours": "12 小时", + "one_day": "1 天", + "one_week": "1 周", + "one_month": "1 个月", + "expiration": "到期时间", + "generate_code": "生成代码", + "name": "名称", + "browser_unsupported": "浏览器不支持", + "this_browser_does_not_support_passkeys": "此浏览器不支持通行密钥。请使用其他登录方式。", + "an_unknown_error_occurred": "发生未知错误", + "authentication_process_was_aborted": "认证过程被中止", + "error_occurred_with_authenticator": "认证器发生错误", + "authenticator_does_not_support_discoverable_credentials": "认证器不支持可发现的凭据", + "authenticator_does_not_support_resident_keys": "认证器不支持常驻密钥", + "passkey_was_previously_registered": "此通行密钥之前已注册", + "authenticator_does_not_support_any_of_the_requested_algorithms": "认证器不支持任何请求的算法", + "authenticator_timed_out": "认证器超时", + "critical_error_occurred_contact_administrator": "发生严重错误。请联系您的管理员。", + "sign_in_to": "登录到 {name}", + "client_not_found": "客户端未找到", + "client_wants_to_access_the_following_information": "{client} 希望访问以下信息:", + "do_you_want_to_sign_in_to_client_with_your_app_name_account": "您是否希望使用您的 {appName} 账户登录到 {client}?", + "email": "电子邮件", + "view_your_email_address": "查看您的电子邮件地址", + "profile": "个人资料", + "view_your_profile_information": "查看您的个人资料信息", + "groups": "群组", + "view_the_groups_you_are_a_member_of": "查看您所属的群组", + "cancel": "取消", + "sign_in": "登录", + "try_again": "重试", + "client_logo": "客户端标志", + "sign_out": "登出", + "do_you_want_to_sign_out_of_pocketid_with_the_account": "您是否希望使用账户 {username} 登出 Pocket ID?", + "sign_in_to_appname": "登录到 {appName}", + "please_try_to_sign_in_again": "请尝试重新登录。", + "authenticate_yourself_with_your_passkey_to_access_the_admin_panel": "使用通行密钥或通过临时登录码进行登录", + "authenticate": "登录", + "appname_setup": "{appName} 设置", + "please_try_again": "请重试。", + "you_are_about_to_sign_in_to_the_initial_admin_account": "您即将登录到初始管理员账户。在此添加通行密钥之前,任何拥有此链接的人都可以访问该账户。请尽快设置通行密钥以防止未经授权的访问。", + "continue": "继续", + "alternative_sign_in": "替代登录方式", + "if_you_do_not_have_access_to_your_passkey_you_can_sign_in_using_one_of_the_following_methods": "如果您无法访问您的通行密钥,可以使用以下方法之一登录。", + "use_your_passkey_instead": "改用您的通行密钥?", + "email_login": "电子邮件登录", + "enter_a_login_code_to_sign_in": "输入一次性登录码以登录。", + "request_a_login_code_via_email": "通过电子邮件请求登录代码。", + "go_back": "返回", + "an_email_has_been_sent_to_the_provided_email_if_it_exists_in_the_system": "如果系统中存在提供的电子邮件地址,则已发送一封电子邮件。", + "enter_code": "输入登录码", + "enter_your_email_address_to_receive_an_email_with_a_login_code": "输入您的电子邮件地址以接收包含登录代码的电子邮件。", + "your_email": "您的电子邮件", + "submit": "提交", + "enter_the_code_you_received_to_sign_in": "输入您收到的登录码以登录。", + "code": "Code", + "invalid_redirect_url": "无效的重定向 URL", + "audit_log": "日志", + "users": "用户", + "user_groups": "用户组", + "oidc_clients": "OIDC 客户端", + "api_keys": "API 密钥", + "application_configuration": "设置", + "settings": "设置", + "update_pocket_id": "更新 Pocket ID", + "powered_by": "Powered by", + "see_your_account_activities_from_the_last_3_months": "查看过去 3 个月的账户活动。", + "time": "时间", + "event": "事件", + "approximate_location": "大致位置", + "ip_address": "IP 地址", + "device": "设备", + "client": "客户端", + "unknown": "未知", + "account_details_updated_successfully": "账户详细信息更新成功", + "profile_picture_updated_successfully": "头像更新成功。可能需要几分钟才能更新。", + "account_settings": "账户设置", + "passkey_missing": "尚未绑定通行密钥", + "please_provide_a_passkey_to_prevent_losing_access_to_your_account": "请添加通行密钥以防止失去对账户的访问。", + "single_passkey_configured": "已添加一个通行密钥", + "it_is_recommended_to_add_more_than_one_passkey": "建议添加多个通行密钥以避免失去对账户的访问。", + "account_details": "账户详情", + "passkeys": "通行密钥", + "manage_your_passkeys_that_you_can_use_to_authenticate_yourself": "管理您可以用来进行身份验证的通行密钥。", + "add_passkey": "添加通行密钥", + "create_a_one_time_login_code_to_sign_in_from_a_different_device_without_a_passkey": "创建一次性登录码,以便从不同设备登录而无需通行密钥。", + "create": "创建", + "first_name": "名字", + "last_name": "姓氏", + "username": "用户名", + "save": "保存", + "username_can_only_contain": "用户名只能包含小写字母、数字、下划线、点、连字符和 '@' 符号", + "sign_in_using_the_following_code_the_code_will_expire_in_minutes": "使用以下代码登录。代码将在 15 分钟后过期。", + "or_visit": "或访问", + "added_on": "添加于", + "rename": "重命名", + "delete": "删除", + "are_you_sure_you_want_to_delete_this_passkey": "您确定要删除此通行密钥吗?", + "passkey_deleted_successfully": "通行密钥删除成功", + "delete_passkey_name": "删除 {passkeyName}", + "passkey_name_updated_successfully": "通行密钥名称更新成功", + "name_passkey": "重命名通行密钥", + "name_your_passkey_to_easily_identify_it_later": "为您的通行密钥命名,以便以后轻松识别。", + "create_api_key": "创建 API 密钥", + "add_a_new_api_key_for_programmatic_access": "添加一个新的 API 密钥用于编程访问。", + "add_api_key": "添加 API 密钥", + "manage_api_keys": "管理 API 密钥", + "api_key_created": "API 密钥已创建", + "for_security_reasons_this_key_will_only_be_shown_once": "出于安全原因,此密钥只会显示一次。请妥善保存。", + "description": "描述", + "api_key": "API 密钥", + "close": "关闭", + "name_to_identify_this_api_key": "用于识别此 API 密钥的名称。", + "expires_at": "过期时间", + "when_this_api_key_will_expire": "此 API 密钥的过期时间。", + "optional_description_to_help_identify_this_keys_purpose": "可选描述,帮助识别此密钥的用途。", + "name_must_be_at_least_3_characters": "名称必须至少为 3 个字符", + "name_cannot_exceed_50_characters": "名称不能超过 50 个字符", + "expiration_date_must_be_in_the_future": "过期日期必须是未来的日期", + "revoke_api_key": "撤销 API 密钥", + "never": "永不", + "revoke": "撤销", + "api_key_revoked_successfully": "API 密钥撤销成功", + "are_you_sure_you_want_to_revoke_the_api_key_apikeyname": "您确定要撤销 API 密钥 \"{apiKeyName}\" 吗?这将中断使用此密钥的任何集成。", + "last_used": "最后使用", + "actions": "操作", + "images_updated_successfully": "图片更新成功", + "general": "常规", + "configure_smtp_to_send_emails": "启用电子邮件通知,以便在新设备或位置检测到登录时提醒用户。", + "ldap": "LDAP", + "configure_ldap_settings_to_sync_users_and_groups_from_an_ldap_server": "配置 LDAP 设置以从 LDAP 服务器同步用户和群组。", + "images": "图片", + "update": "更新", + "email_configuration_updated_successfully": "电子邮件配置更新成功", + "save_changes_question": "保存更改?", + "you_have_to_save_the_changes_before_sending_a_test_email_do_you_want_to_save_now": "在发送测试电子邮件之前,您必须保存更改。是否现在保存?", + "save_and_send": "保存并发送", + "test_email_sent_successfully": "测试电子邮件已成功发送到您的电子邮件地址。", + "failed_to_send_test_email": "发送测试电子邮件失败。请检查服务器日志以获取更多信息。", + "smtp_configuration": "SMTP 配置", + "smtp_host": "SMTP 主机", + "smtp_port": "SMTP 端口", + "smtp_user": "SMTP 用户", + "smtp_password": "SMTP 密码", + "smtp_from": "SMTP 发件人", + "smtp_tls_option": "SMTP TLS 选项", + "email_tls_option": "电子邮件 TLS 选项", + "skip_certificate_verification": "跳过证书验证", + "this_can_be_useful_for_selfsigned_certificates": "这对于自签名证书很有用。", + "enabled_emails": "启用的电子邮件", + "email_login_notification": "电子邮件登录通知", + "send_an_email_to_the_user_when_they_log_in_from_a_new_device": "当用户从新设备登录时,向其发送电子邮件。", + "emai_login_code_requested_by_user": "用户请求的电子邮件登录代码", + "allow_users_to_sign_in_with_a_login_code_sent_to_their_email": "允许用户通过发送到其电子邮件的登录代码登录。这会显著降低安全性,因为任何有权访问用户电子邮件的人都可以进入。", + "email_login_code_from_admin": "管理员发送的电子邮件登录代码", + "allows_an_admin_to_send_a_login_code_to_the_user": "允许管理员通过电子邮件向用户发送登录代码。", + "send_test_email": "发送测试电子邮件", + "application_configuration_updated_successfully": "应用配置更新成功", + "application_name": "应用名称", + "session_duration": "会话持续时间", + "the_duration_of_a_session_in_minutes_before_the_user_has_to_sign_in_again": "用户需要再次登录之前的会话持续时间(分钟)。", + "enable_self_account_editing": "启用自助账户编辑", + "whether_the_users_should_be_able_to_edit_their_own_account_details": "用户是否应能够编辑自己的账户详细信息。", + "emails_verified": "已验证的邮箱地址", + "whether_the_users_email_should_be_marked_as_verified_for_the_oidc_clients": "用户的电子邮件是否应标记为已验证,适用于 OIDC 客户端。", + "ldap_configuration_updated_successfully": "LDAP 配置更新成功", + "ldap_disabled_successfully": "LDAP 禁用成功", + "ldap_sync_finished": "LDAP 同步完成", + "client_configuration": "客户端配置", + "ldap_url": "LDAP URL", + "ldap_bind_dn": "LDAP Bind DN", + "ldap_bind_password": "LDAP Bind Password", + "ldap_base_dn": "LDAP Base DN", + "user_search_filter": "User Search Filter", + "the_search_filter_to_use_to_search_or_sync_users": "用于搜索/同步用户的搜索过滤器。", + "groups_search_filter": "Groups Search Filter", + "the_search_filter_to_use_to_search_or_sync_groups": "用于搜索/同步群组的搜索过滤器。", + "attribute_mapping": "属性映射", + "user_unique_identifier_attribute": "User Unique Identifier Attribute", + "the_value_of_this_attribute_should_never_change": "此属性的值不应更改。", + "username_attribute": "Username Attribute", + "user_mail_attribute": "User Mail Attribute", + "user_first_name_attribute": "User First Name Attribute", + "user_last_name_attribute": "User Last Name Attribute", + "user_profile_picture_attribute": "User Profile Picture Attribute", + "the_value_of_this_attribute_can_either_be_a_url_binary_or_base64_encoded_image": "此属性的值可以是 URL、二进制或 base64 编码的图像。", + "group_members_attribute": "Group Members Attribute", + "the_attribute_to_use_for_querying_members_of_a_group": "用于查询群组成员的属性。", + "group_unique_identifier_attribute": "Group Unique Identifier Attribute", + "group_name_attribute": "Group Name Attribute", + "admin_group_name": "Admin Group Name", + "members_of_this_group_will_have_admin_privileges_in_pocketid": "此群组的成员将在 Pocket ID 中拥有管理员权限。", + "disable": "禁用", + "sync_now": "立即同步", + "enable": "启用", + "user_created_successfully": "用户创建成功", + "create_user": "创建用户", + "add_a_new_user_to_appname": "向 {appName} 添加新用户", + "add_user": "添加用户", + "manage_users": "管理用户", + "admin_privileges": "管理员权限", + "admins_have_full_access_to_the_admin_panel": "管理员拥有管理面板的完全访问权限。", + "delete_firstname_lastname": "删除 {firstName} {lastName}", + "are_you_sure_you_want_to_delete_this_user": "您确定要删除此用户吗?", + "user_deleted_successfully": "用户删除成功", + "role": "角色", + "source": "来源", + "admin": "管理员", + "user": "用户", + "local": "本地", + "toggle_menu": "切换菜单", + "edit": "编辑", + "user_groups_updated_successfully": "用户组更新成功", + "user_updated_successfully": "用户更新成功", + "custom_claims_updated_successfully": "自定义声明更新成功", + "back": "返回", + "user_details_firstname_lastname": "用户详情 {firstName} {lastName}", + "manage_which_groups_this_user_belongs_to": "管理此用户所属的群组。", + "custom_claims": "自定义声明", + "custom_claims_are_key_value_pairs_that_can_be_used_to_store_additional_information_about_a_user": "自定义声明是键值对,可用于存储有关用户的额外信息。如果请求了 \"profile\" 范围,这些声明将包含在 ID Token 中。", + "user_group_created_successfully": "用户组创建成功", + "create_user_group": "创建用户组", + "create_a_new_group_that_can_be_assigned_to_users": "创建一个可以分配给用户的新群组。", + "add_group": "添加群组", + "manage_user_groups": "管理用户组", + "friendly_name": "显示名称", + "name_that_will_be_displayed_in_the_ui": "将在用户界面中显示的名称", + "name_that_will_be_in_the_groups_claim": "将在 \"groups\" 声明中显示的名称", + "delete_name": "删除 {name}", + "are_you_sure_you_want_to_delete_this_user_group": "您确定要删除此用户组吗?", + "user_group_deleted_successfully": "用户组删除成功", + "user_count": "用户数", + "user_group_updated_successfully": "用户组更新成功", + "users_updated_successfully": "用户更新成功", + "user_group_details_name": "用户组详情 {name}", + "assign_users_to_this_group": "将用户分配到此群组。", + "custom_claims_are_key_value_pairs_that_can_be_used_to_store_additional_information_about_a_user_prioritized": "自定义声明是键值对,可用于存储有关用户的额外信息。如果请求了 'profile' 范围,这些声明将包含在 ID 令牌中。如果存在冲突,用户上定义的自定义声明将优先。", + "oidc_client_created_successfully": "OIDC 客户端创建成功", + "create_oidc_client": "创建 OIDC 客户端", + "add_a_new_oidc_client_to_appname": "向 {appName} 添加新的 OIDC 客户端。", + "add_oidc_client": "添加 OIDC 客户端", + "manage_oidc_clients": "管理 OIDC 客户端", + "one_time_link": "一次性链接", + "use_this_link_to_sign_in_once": "使用此链接一次性登录。这对于尚未添加通行密钥或丢失通行密钥的用户是必要的。", + "add": "添加", + "callback_urls": "Callback URL", + "logout_callback_urls": "Logout Callback URL", + "public_client": "公共客户端", + "public_clients_do_not_have_a_client_secret_and_use_pkce_instead": "公共客户端没有客户端密钥,而是使用 PKCE。如果您的客户端是 SPA 或移动应用,请启用此选项。", + "pkce": "PKCE", + "public_key_code_exchange_is_a_security_feature_to_prevent_csrf_and_authorization_code_interception_attacks": "公钥代码交换是一种安全功能,可防止 CSRF 和授权代码拦截攻击。", + "name_logo": "{name} Logo", + "change_logo": "更改 Logo", + "upload_logo": "上传 Logo", + "remove_logo": "移除 Logo", + "are_you_sure_you_want_to_delete_this_oidc_client": "您确定要删除此 OIDC 客户端吗?", + "oidc_client_deleted_successfully": "OIDC 客户端删除成功", + "authorization_url": "Authorization URL", + "oidc_discovery_url": "OIDC Discovery URL", + "token_url": "Token URL", + "userinfo_url": "Userinfo URL", + "logout_url": "Logout URL", + "certificate_url": "Certificate URL", + "enabled": "已启用", + "disabled": "已禁用", + "oidc_client_updated_successfully": "OIDC 客户端更新成功", + "create_new_client_secret": "创建新的客户端密钥", + "are_you_sure_you_want_to_create_a_new_client_secret": "您确定要创建新的客户端密钥吗?旧的密钥将被失效。", + "generate": "生成", + "new_client_secret_created_successfully": "新客户端密钥创建成功", + "allowed_user_groups_updated_successfully": "允许的用户组更新成功", + "oidc_client_name": "OIDC 客户端 {name}", + "client_id": "客户端 ID", + "client_secret": "客户端密钥", + "show_more_details": "显示更多详情", + "allowed_user_groups": "允许的用户组", + "add_user_groups_to_this_client_to_restrict_access_to_users_in_these_groups": "将用户组添加到此客户端以限制访问,仅允许这些组中的用户。如果未选择用户组,所有用户都将有权访问此客户端。", + "favicon": "网站图标", + "light_mode_logo": "浅色模式 Logo", + "dark_mode_logo": "深色模式 Logo", + "background_image": "背景图片", + "language": "语言", + "reset_profile_picture_question": "重置头像?", + "this_will_remove_the_uploaded_image_and_reset_the_profile_picture_to_default": "这将移除已上传的图片,并将头像重置为默认值。您是否要继续?", + "reset": "重置", + "reset_to_default": "重置为默认", + "profile_picture_has_been_reset": "头像已重置。可能需要几分钟才能更新。", + "select_the_language_you_want_to_use": "选择您要使用的语言。某些语言可能未完全翻译。", + "personal": "个人", + "global": "全局", + "all_users": "所有用户", + "all_events": "所有事件", + "all_clients": "所有客户端", + "global_audit_log": "全局日志", + "see_all_account_activities_from_the_last_3_months": "查看过去 3 个月的所有用户活动。", + "token_sign_in": "Token 登录", + "client_authorization": "客户端授权", + "new_client_authorization": "首次客户端授权", + "disable_animations": "禁用动画", + "turn_off_all_animations_throughout_the_admin_ui": "关闭管理用户界面中的所有动画。", + "user_disabled": "账户已禁用", + "disabled_users_cannot_log_in_or_use_services": "禁用的用户无法登录或使用服务。", + "user_disabled_successfully": "用户已成功禁用。", + "user_enabled_successfully": "用户已成功启用。", + "status": "状态", + "disable_firstname_lastname": "禁用 {firstName} {lastName}", + "are_you_sure_you_want_to_disable_this_user": "您确定要禁用此用户吗?他们将无法登录或访问任何服务。", + "ldap_soft_delete_users": "保留来自 LDAP 的禁用用户。", + "ldap_soft_delete_users_description": "启用后,从 LDAP 中移除的用户将被禁用,而不是从系统中删除。", + "login_code_email_success": "登录代码已发送给用户。", + "send_email": "发送电子邮件", + "show_code": "显示登录码", + "callback_url_description": "由您的客户端提供的 URL。支持通配符 (*),但为了更好的安全性最好避免使用。", + "api_key_expiration": "API 密钥过期", + "send_an_email_to_the_user_when_their_api_key_is_about_to_expire": "当用户的 API 密钥即将过期时,向其发送电子邮件。" +} diff --git a/frontend/project.inlang/settings.json b/frontend/project.inlang/settings.json index e888777a..33fe337e 100644 --- a/frontend/project.inlang/settings.json +++ b/frontend/project.inlang/settings.json @@ -1,7 +1,7 @@ { "$schema": "https://inlang.com/schema/project-settings", "baseLocale": "en-US", - "locales": ["en-US", "nl-NL", "ru-RU", "de-DE", "fr-FR", "cs-CZ", "pt-BR", "it-IT"], + "locales": ["en-US", "nl-NL", "ru-RU", "de-DE", "fr-FR", "cs-CZ", "pt-BR", "it-IT", "zh-CN"], "modules": [ "./node_modules/@inlang/plugin-message-format/dist/index.js", "./node_modules/@inlang/plugin-m-function-matcher/dist/index.js" diff --git a/frontend/src/routes/settings/account/locale-picker.svelte b/frontend/src/routes/settings/account/locale-picker.svelte index cfa1147d..1bb52d47 100644 --- a/frontend/src/routes/settings/account/locale-picker.svelte +++ b/frontend/src/routes/settings/account/locale-picker.svelte @@ -15,7 +15,8 @@ 'nl-NL': 'Nederlands', 'pt-BR': 'Português brasileiro', 'ru-RU': 'Русский', - 'it-IT': 'Italiano' + 'it-IT': 'Italiano', + 'zh-CN': '简体中文' }; async function updateLocale(locale: Locale) {