0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2025-04-07 23:01:25 -05:00

refactor(phrases): update zh-cn translation ()

This commit is contained in:
Gao Sun 2023-03-20 11:33:32 +08:00 committed by GitHub
parent f27eb508ed
commit c4bae2175d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
51 changed files with 332 additions and 350 deletions

View file

@ -1,8 +1,11 @@
import { appendPath } from '@silverhand/essentials';
import { setDefaultOptions } from 'expect-puppeteer';
import { logtoCloudUrl as logtoCloudUrlString, logtoConsoleUrl } from '#src/constants.js';
import { generatePassword } from '#src/utils.js';
setDefaultOptions({ timeout: 1000 });
/**
* NOTE: This test suite assumes test cases will run sequentially (which is Jest default).
* Parallel execution will lead to errors.
@ -97,7 +100,7 @@ describe('smoke testing for cloud', () => {
// Wait for the next page to load
await expect(page).toMatchElement('div[class$=config] div[class$=title]', {
text: 'Lets first customize your experience with ease',
text: 'Lets first customize your sign-in experience with ease',
});
expect(new URL(page.url()).pathname.endsWith('/onboarding/sign-in-experience')).toBeTruthy();

View file

@ -1,8 +1,12 @@
import path from 'path';
import { setDefaultOptions } from 'expect-puppeteer';
import { logtoConsoleUrl as logtoConsoleUrlString } from '#src/constants.js';
import { generatePassword } from '#src/utils.js';
setDefaultOptions({ timeout: 1000 });
const appendPathname = (pathname: string, baseUrl: URL) =>
new URL(path.join(baseUrl.pathname, pathname), baseUrl);

View file

@ -18,7 +18,7 @@ const errors = {
invalid_pagination: 'Die Paginierung der Anfrage ist ungültig.',
can_not_get_tenant_id: 'Unable to get tenant id from request.', // UNTRANSLATED
file_size_exceeded: 'File size exceeded.', // UNTRANSLATED
mime_type_not_allowed: 'Mime type is not allowed.', // UNTRANSLATED
mime_type_not_allowed: 'MIME type is not allowed.', // UNTRANSLATED
},
oidc: {
aborted: 'Der Endnutzer hat die Interaktion abgebrochen.',

View file

@ -67,7 +67,7 @@ const cloud = {
book_button: 'Book', // UNTRANSLATED
},
sie: {
title: 'Lets first customize your experience with ease', // UNTRANSLATED
title: 'Lets first customize your sign-in experience with ease', // UNTRANSLATED
inspire: {
title: 'Create compelling examples', // UNTRANSLATED
description:
@ -103,7 +103,7 @@ const cloud = {
},
broadcast: '📣 You are in Logto Cloud (Preview)', // UNTRANSLATED
socialCallback: {
title: "You've successfully signed in!", // UNTRANSLATED
title: "You've successfully signed in", // UNTRANSLATED
description:
'You have successfully signed in using your social account. To ensure seamless integration and access to all the features of Logto, we recommend that you proceed to configure your own social connector.', // UNTRANSLATED
},

View file

@ -23,10 +23,10 @@ const role_details = {
api_permission_count_one: '{{count, number}} permission', // UNTRANSLATED
api_permission_count_other: '{{count, number}} permissions', // UNTRANSLATED
confirm_assign: 'Assign Permissions', // UNTRANSLATED
permission_assigned: 'The selected permissions were successfully assigned to this role!', // UNTRANSLATED
permission_assigned: 'The selected permissions were successfully assigned to this role', // UNTRANSLATED
deletion_description:
'If this permission is removed, the affected user with this role will lose the access granted by this permission.', // UNTRANSLATED
permission_deleted: 'The permission "{{name}}" was successfully removed from this role!', // UNTRANSLATED
permission_deleted: 'The permission "{{name}}" was successfully removed from this role', // UNTRANSLATED
empty: 'No permission available', // UNTRANSLATED
},
users: {
@ -36,13 +36,13 @@ const role_details = {
latest_sign_in_column: 'Latest sign in', // UNTRANSLATED
delete_description:
'It will remain in your user pool but lose the authorization for this role.', // UNTRANSLATED
deleted: '{{name}} was successfully removed from this role!', // UNTRANSLATED
deleted: '{{name}} was successfully removed from this role', // UNTRANSLATED
assign_title: 'Assign users', // UNTRANSLATED
assign_subtitle:
'Assign users to this role. Find appropriate users by searching name, email, phone, or user ID.', // UNTRANSLATED
assign_users_field: 'Assign users', // UNTRANSLATED
confirm_assign: 'Assign users', // UNTRANSLATED
users_assigned: 'The selected users were successfully assigned to this role!', // UNTRANSLATED
users_assigned: 'The selected users were successfully assigned to this role', // UNTRANSLATED
empty: 'No user available', // UNTRANSLATED
},
};

View file

@ -48,7 +48,7 @@ const user_details = {
assign_button: 'Assign Roles', // UNTRANSLATED
delete_description:
'This action will remove this role from this user. The role itself will still exist, but it will no longer be associated with this user.', // UNTRANSLATED
deleted: '{{name}} was successfully removed from this user!', // UNTRANSLATED
deleted: '{{name}} was successfully removed from this user.', // UNTRANSLATED
assign_title: 'Assign roles to {{name}}', // UNTRANSLATED
assign_subtitle: 'Authorize {{name}} one or more roles', // UNTRANSLATED
assign_role_field: 'Assign roles', // UNTRANSLATED

View file

@ -18,7 +18,7 @@ const errors = {
invalid_pagination: 'The request pagination value is invalid.',
can_not_get_tenant_id: 'Unable to get tenant id from request.',
file_size_exceeded: 'File size exceeded.',
mime_type_not_allowed: 'Mime type is not allowed.',
mime_type_not_allowed: 'MIME type is not allowed.',
},
oidc: {
aborted: 'The end-user aborted interaction.',

View file

@ -67,7 +67,7 @@ const cloud = {
book_button: 'Book',
},
sie: {
title: 'Lets first customize your experience with ease',
title: 'Lets first customize your sign-in experience with ease',
inspire: {
title: 'Create compelling examples',
description:
@ -103,7 +103,7 @@ const cloud = {
},
broadcast: '📣 You are in Logto Cloud (Preview)',
socialCallback: {
title: "You've successfully signed in!",
title: "You've successfully signed in",
description:
'You have successfully signed in using your social account. To ensure seamless integration and access to all the features of Logto, we recommend that you proceed to configure your own social connector.',
},

View file

@ -23,10 +23,10 @@ const role_details = {
api_permission_count_one: '{{count, number}} permission',
api_permission_count_other: '{{count, number}} permissions',
confirm_assign: 'Assign Permissions',
permission_assigned: 'The selected permissions were successfully assigned to this role!',
permission_assigned: 'The selected permissions were successfully assigned to this role',
deletion_description:
'If this permission is removed, the affected user with this role will lose the access granted by this permission.',
permission_deleted: 'The permission "{{name}}" was successfully removed from this role!',
permission_deleted: 'The permission "{{name}}" was successfully removed from this role',
empty: 'No permission available',
},
users: {
@ -36,13 +36,13 @@ const role_details = {
latest_sign_in_column: 'Latest sign in',
delete_description:
'It will remain in your user pool but lose the authorization for this role.',
deleted: '{{name}} was successfully removed from this role!', // UNTRANSLATED
deleted: '{{name}} was successfully removed from this role', // UNTRANSLATED
assign_title: 'Assign users',
assign_subtitle:
'Assign users to this role. Find appropriate users by searching name, email, phone, or user ID.',
assign_users_field: 'Assign users',
confirm_assign: 'Assign users',
users_assigned: 'The selected users were successfully assigned to this role!',
users_assigned: 'The selected users were successfully assigned to this role',
empty: 'No user available',
},
};

View file

@ -46,7 +46,7 @@ const user_details = {
assign_button: 'Assign Roles',
delete_description:
'This action will remove this role from this user. The role itself will still exist, but it will no longer be associated with this user.',
deleted: '{{name}} was successfully removed from this user!',
deleted: '{{name}} was successfully removed from this user.',
assign_title: 'Assign roles to {{name}}',
assign_subtitle: 'Authorize {{name}} one or more roles',
assign_role_field: 'Assign roles',

View file

@ -19,7 +19,7 @@ const errors = {
invalid_pagination: "La valeur de la pagination de la requête n'est pas valide.",
can_not_get_tenant_id: 'Unable to get tenant id from request.', // UNTRANSLATED
file_size_exceeded: 'File size exceeded.', // UNTRANSLATED
mime_type_not_allowed: 'Mime type is not allowed.', // UNTRANSLATED
mime_type_not_allowed: 'MIME type is not allowed.', // UNTRANSLATED
},
oidc: {
aborted: "L'utilisateur a abandonné l'interaction.",

View file

@ -67,7 +67,7 @@ const cloud = {
book_button: 'Book', // UNTRANSLATED
},
sie: {
title: 'Lets first customize your experience with ease', // UNTRANSLATED
title: 'Lets first customize your sign-in experience with ease', // UNTRANSLATED
inspire: {
title: 'Create compelling examples', // UNTRANSLATED
description:
@ -103,7 +103,7 @@ const cloud = {
},
broadcast: '📣 You are in Logto Cloud (Preview)', // UNTRANSLATED
socialCallback: {
title: "You've successfully signed in!", // UNTRANSLATED
title: "You've successfully signed in", // UNTRANSLATED
description:
'You have successfully signed in using your social account. To ensure seamless integration and access to all the features of Logto, we recommend that you proceed to configure your own social connector.', // UNTRANSLATED
},

View file

@ -23,10 +23,10 @@ const role_details = {
api_permission_count_one: '{{count, number}} permission', // UNTRANSLATED
api_permission_count_other: '{{count, number}} permissions', // UNTRANSLATED
confirm_assign: 'Assign Permissions', // UNTRANSLATED
permission_assigned: 'The selected permissions were successfully assigned to this role!', // UNTRANSLATED
permission_assigned: 'The selected permissions were successfully assigned to this role', // UNTRANSLATED
deletion_description:
'If this permission is removed, the affected user with this role will lose the access granted by this permission.', // UNTRANSLATED
permission_deleted: 'The permission "{{name}}" was successfully removed from this role!', // UNTRANSLATED
permission_deleted: 'The permission "{{name}}" was successfully removed from this role', // UNTRANSLATED
empty: 'No permission available', // UNTRANSLATED
},
users: {
@ -36,13 +36,13 @@ const role_details = {
latest_sign_in_column: 'Latest sign in', // UNTRANSLATED
delete_description:
'It will remain in your user pool but lose the authorization for this role.', // UNTRANSLATED
deleted: '{{name}} was successfully removed from this role!', // UNTRANSLATED
deleted: '{{name}} was successfully removed from this role', // UNTRANSLATED
assign_title: 'Assign users', // UNTRANSLATED
assign_subtitle:
'Assign users to this role. Find appropriate users by searching name, email, phone, or user ID.', // UNTRANSLATED
assign_users_field: 'Assign users', // UNTRANSLATED
confirm_assign: 'Assign users', // UNTRANSLATED
users_assigned: 'The selected users were successfully assigned to this role!', // UNTRANSLATED
users_assigned: 'The selected users were successfully assigned to this role', // UNTRANSLATED
empty: 'No user available', // UNTRANSLATED
},
};

View file

@ -48,7 +48,7 @@ const user_details = {
assign_button: 'Assign Roles', // UNTRANSLATED
delete_description:
'This action will remove this role from this user. The role itself will still exist, but it will no longer be associated with this user.', // UNTRANSLATED
deleted: '{{name}} was successfully removed from this user!', // UNTRANSLATED
deleted: '{{name}} was successfully removed from this user.', // UNTRANSLATED
assign_title: 'Assign roles to {{name}}', // UNTRANSLATED
assign_subtitle: 'Authorize {{name}} one or more roles', // UNTRANSLATED
assign_role_field: 'Assign roles', // UNTRANSLATED

View file

@ -18,7 +18,7 @@ const errors = {
invalid_pagination: '요청의 Pagination 값이 유효하지 않아요.',
can_not_get_tenant_id: 'Unable to get tenant id from request.', // UNTRANSLATED
file_size_exceeded: 'File size exceeded.', // UNTRANSLATED
mime_type_not_allowed: 'Mime type is not allowed.', // UNTRANSLATED
mime_type_not_allowed: 'MIME type is not allowed.', // UNTRANSLATED
},
oidc: {
aborted: 'End 사용자가 상호 작용을 중단했어요.',

View file

@ -67,7 +67,7 @@ const cloud = {
book_button: 'Book', // UNTRANSLATED
},
sie: {
title: 'Lets first customize your experience with ease', // UNTRANSLATED
title: 'Lets first customize your sign-in experience with ease', // UNTRANSLATED
inspire: {
title: 'Create compelling examples', // UNTRANSLATED
description:
@ -103,7 +103,7 @@ const cloud = {
},
broadcast: '📣 You are in Logto Cloud (Preview)', // UNTRANSLATED
socialCallback: {
title: "You've successfully signed in!", // UNTRANSLATED
title: "You've successfully signed in", // UNTRANSLATED
description:
'You have successfully signed in using your social account. To ensure seamless integration and access to all the features of Logto, we recommend that you proceed to configure your own social connector.', // UNTRANSLATED
},

View file

@ -18,7 +18,7 @@ const errors = {
invalid_pagination: 'O valor de paginação da solicitação é inválido.',
can_not_get_tenant_id: 'Unable to get tenant id from request.', // UNTRANSLATED
file_size_exceeded: 'File size exceeded.', // UNTRANSLATED
mime_type_not_allowed: 'Mime type is not allowed.', // UNTRANSLATED
mime_type_not_allowed: 'MIME type is not allowed.', // UNTRANSLATED
},
oidc: {
aborted: 'A interação abortada pelo end-user',

View file

@ -67,7 +67,7 @@ const cloud = {
book_button: 'Book', // UNTRANSLATED
},
sie: {
title: 'Lets first customize your experience with ease', // UNTRANSLATED
title: 'Lets first customize your sign-in experience with ease', // UNTRANSLATED
inspire: {
title: 'Create compelling examples', // UNTRANSLATED
description:
@ -103,7 +103,7 @@ const cloud = {
},
broadcast: '📣 You are in Logto Cloud (Preview)', // UNTRANSLATED
socialCallback: {
title: "You've successfully signed in!", // UNTRANSLATED
title: "You've successfully signed in", // UNTRANSLATED
description:
'You have successfully signed in using your social account. To ensure seamless integration and access to all the features of Logto, we recommend that you proceed to configure your own social connector.', // UNTRANSLATED
},

View file

@ -23,10 +23,10 @@ const role_details = {
api_permission_count_one: '{{count, number}} permission', // UNTRANSLATED
api_permission_count_other: '{{count, number}} permissions', // UNTRANSLATED
confirm_assign: 'Assign Permissions', // UNTRANSLATED
permission_assigned: 'The selected permissions were successfully assigned to this role!', // UNTRANSLATED
permission_assigned: 'The selected permissions were successfully assigned to this role', // UNTRANSLATED
deletion_description:
'If this permission is removed, the affected user with this role will lose the access granted by this permission.', // UNTRANSLATED
permission_deleted: 'The permission "{{name}}" was successfully removed from this role!', // UNTRANSLATED
permission_deleted: 'The permission "{{name}}" was successfully removed from this role', // UNTRANSLATED
empty: 'No permission available', // UNTRANSLATED
},
users: {
@ -36,13 +36,13 @@ const role_details = {
latest_sign_in_column: 'Latest sign in', // UNTRANSLATED
delete_description:
'It will remain in your user pool but lose the authorization for this role.', // UNTRANSLATED
deleted: '{{name}} was successfully removed from this role!', // UNTRANSLATED
deleted: '{{name}} was successfully removed from this role', // UNTRANSLATED
assign_title: 'Assign users', // UNTRANSLATED
assign_subtitle:
'Assign users to this role. Find appropriate users by searching name, email, phone, or user ID.', // UNTRANSLATED
assign_users_field: 'Assign users', // UNTRANSLATED
confirm_assign: 'Assign users', // UNTRANSLATED
users_assigned: 'The selected users were successfully assigned to this role!', // UNTRANSLATED
users_assigned: 'The selected users were successfully assigned to this role', // UNTRANSLATED
empty: 'No user available', // UNTRANSLATED
},
};

View file

@ -46,7 +46,7 @@ const user_details = {
assign_button: 'Assign Roles', // UNTRANSLATED
delete_description:
'This action will remove this role from this user. The role itself will still exist, but it will no longer be associated with this user.', // UNTRANSLATED
deleted: '{{name}} was successfully removed from this user!', // UNTRANSLATED
deleted: '{{name}} was successfully removed from this user.', // UNTRANSLATED
assign_title: 'Assign roles to {{name}}', // UNTRANSLATED
assign_subtitle: 'Authorize {{name}} one or more roles', // UNTRANSLATED
assign_role_field: 'Assign roles', // UNTRANSLATED

View file

@ -17,7 +17,7 @@ const errors = {
invalid_pagination: 'O valor de paginação enviado é inválido.',
can_not_get_tenant_id: 'Unable to get tenant id from request.', // UNTRANSLATED
file_size_exceeded: 'File size exceeded.', // UNTRANSLATED
mime_type_not_allowed: 'Mime type is not allowed.', // UNTRANSLATED
mime_type_not_allowed: 'MIME type is not allowed.', // UNTRANSLATED
},
oidc: {
aborted: 'O utilizador final abortou a interação.',

View file

@ -67,7 +67,7 @@ const cloud = {
book_button: 'Book', // UNTRANSLATED
},
sie: {
title: 'Lets first customize your experience with ease', // UNTRANSLATED
title: 'Lets first customize your sign-in experience with ease', // UNTRANSLATED
inspire: {
title: 'Create compelling examples', // UNTRANSLATED
description:
@ -103,7 +103,7 @@ const cloud = {
},
broadcast: '📣 You are in Logto Cloud (Preview)', // UNTRANSLATED
socialCallback: {
title: "You've successfully signed in!", // UNTRANSLATED
title: "You've successfully signed in", // UNTRANSLATED
description:
'You have successfully signed in using your social account. To ensure seamless integration and access to all the features of Logto, we recommend that you proceed to configure your own social connector.', // UNTRANSLATED
},

View file

@ -23,10 +23,10 @@ const role_details = {
api_permission_count_one: '{{count, number}} permission', // UNTRANSLATED
api_permission_count_other: '{{count, number}} permissions', // UNTRANSLATED
confirm_assign: 'Assign Permissions', // UNTRANSLATED
permission_assigned: 'The selected permissions were successfully assigned to this role!', // UNTRANSLATED
permission_assigned: 'The selected permissions were successfully assigned to this role', // UNTRANSLATED
deletion_description:
'If this permission is removed, the affected user with this role will lose the access granted by this permission.', // UNTRANSLATED
permission_deleted: 'The permission "{{name}}" was successfully removed from this role!', // UNTRANSLATED
permission_deleted: 'The permission "{{name}}" was successfully removed from this role', // UNTRANSLATED
empty: 'No permission available', // UNTRANSLATED
},
users: {
@ -36,13 +36,13 @@ const role_details = {
latest_sign_in_column: 'Latest sign in', // UNTRANSLATED
delete_description:
'It will remain in your user pool but lose the authorization for this role.', // UNTRANSLATED
deleted: '{{name}} was successfully removed from this role!', // UNTRANSLATED
deleted: '{{name}} was successfully removed from this role', // UNTRANSLATED
assign_title: 'Assign users', // UNTRANSLATED
assign_subtitle:
'Assign users to this role. Find appropriate users by searching name, email, phone, or user ID.', // UNTRANSLATED
assign_users_field: 'Assign users', // UNTRANSLATED
confirm_assign: 'Assign users', // UNTRANSLATED
users_assigned: 'The selected users were successfully assigned to this role!', // UNTRANSLATED
users_assigned: 'The selected users were successfully assigned to this role', // UNTRANSLATED
empty: 'No user available', // UNTRANSLATED
},
};

View file

@ -48,7 +48,7 @@ const user_details = {
assign_button: 'Assign Roles', // UNTRANSLATED
delete_description:
'This action will remove this role from this user. The role itself will still exist, but it will no longer be associated with this user.', // UNTRANSLATED
deleted: '{{name}} was successfully removed from this user!', // UNTRANSLATED
deleted: '{{name}} was successfully removed from this user.', // UNTRANSLATED
assign_title: 'Assign roles to {{name}}', // UNTRANSLATED
assign_subtitle: 'Authorize {{name}} one or more roles', // UNTRANSLATED
assign_role_field: 'Assign roles', // UNTRANSLATED

View file

@ -18,7 +18,7 @@ const errors = {
invalid_pagination: 'İstenen sayfalandırma değeri geçersiz.',
can_not_get_tenant_id: 'Unable to get tenant id from request.', // UNTRANSLATED
file_size_exceeded: 'File size exceeded.', // UNTRANSLATED
mime_type_not_allowed: 'Mime type is not allowed.', // UNTRANSLATED
mime_type_not_allowed: 'MIME type is not allowed.', // UNTRANSLATED
},
oidc: {
aborted: 'Son kullanıcı etkileşimi iptal etti.',

View file

@ -67,7 +67,7 @@ const cloud = {
book_button: 'Book', // UNTRANSLATED
},
sie: {
title: 'Lets first customize your experience with ease', // UNTRANSLATED
title: 'Lets first customize your sign-in experience with ease', // UNTRANSLATED
inspire: {
title: 'Create compelling examples', // UNTRANSLATED
description:
@ -103,7 +103,7 @@ const cloud = {
},
broadcast: '📣 You are in Logto Cloud (Preview)', // UNTRANSLATED
socialCallback: {
title: "You've successfully signed in!", // UNTRANSLATED
title: "You've successfully signed in", // UNTRANSLATED
description:
'You have successfully signed in using your social account. To ensure seamless integration and access to all the features of Logto, we recommend that you proceed to configure your own social connector.', // UNTRANSLATED
},

View file

@ -23,10 +23,10 @@ const role_details = {
api_permission_count_one: '{{count, number}} permission', // UNTRANSLATED
api_permission_count_other: '{{count, number}} permissions', // UNTRANSLATED
confirm_assign: 'Assign Permissions', // UNTRANSLATED
permission_assigned: 'The selected permissions were successfully assigned to this role!', // UNTRANSLATED
permission_assigned: 'The selected permissions were successfully assigned to this role', // UNTRANSLATED
deletion_description:
'If this permission is removed, the affected user with this role will lose the access granted by this permission.', // UNTRANSLATED
permission_deleted: 'The permission "{{name}}" was successfully removed from this role!', // UNTRANSLATED
permission_deleted: 'The permission "{{name}}" was successfully removed from this role', // UNTRANSLATED
empty: 'No permission available', // UNTRANSLATED
},
users: {
@ -36,13 +36,13 @@ const role_details = {
latest_sign_in_column: 'Latest sign in', // UNTRANSLATED
delete_description:
'It will remain in your user pool but lose the authorization for this role.', // UNTRANSLATED
deleted: '{{name}} was successfully removed from this role!', // UNTRANSLATED
deleted: '{{name}} was successfully removed from this role', // UNTRANSLATED
assign_title: 'Assign users', // UNTRANSLATED
assign_subtitle:
'Assign users to this role. Find appropriate users by searching name, email, phone, or user ID.', // UNTRANSLATED
assign_users_field: 'Assign users', // UNTRANSLATED
confirm_assign: 'Assign users', // UNTRANSLATED
users_assigned: 'The selected users were successfully assigned to this role!', // UNTRANSLATED
users_assigned: 'The selected users were successfully assigned to this role', // UNTRANSLATED
empty: 'No user available', // UNTRANSLATED
},
};

View file

@ -46,7 +46,7 @@ const user_details = {
assign_button: 'Assign Roles', // UNTRANSLATED
delete_description:
'This action will remove this role from this user. The role itself will still exist, but it will no longer be associated with this user.', // UNTRANSLATED
deleted: '{{name}} was successfully removed from this user!', // UNTRANSLATED
deleted: '{{name}} was successfully removed from this user.', // UNTRANSLATED
assign_title: 'Assign roles to {{name}}', // UNTRANSLATED
assign_subtitle: 'Authorize {{name}} one or more roles', // UNTRANSLATED
assign_role_field: 'Assign roles', // UNTRANSLATED

View file

@ -1,7 +1,7 @@
const errors = {
request: {
invalid_input: 'Input is invalid. {{details}}', // UNTRANSLATED
general: 'Request error occurred.', // UNTRANSLATED
invalid_input: '输入无效。{{details}}',
general: '发生请求错误。',
},
auth: {
authorization_header_missing: 'Authorization 请求头缺失。',
@ -15,9 +15,9 @@ const errors = {
guard: {
invalid_input: '请求中 {{type}} 无效',
invalid_pagination: '分页参数无效',
can_not_get_tenant_id: 'Unable to get tenant id from request.', // UNTRANSLATED
file_size_exceeded: 'File size exceeded.', // UNTRANSLATED
mime_type_not_allowed: 'Mime type is not allowed.', // UNTRANSLATED
can_not_get_tenant_id: '无法从请求中获取租户 ID。',
file_size_exceeded: '文件大小超过限制。',
mime_type_not_allowed: '不允许使用此 MIME 类型。',
},
oidc: {
aborted: '用户终止了交互。',
@ -62,9 +62,9 @@ const errors = {
phone_exists_in_profile: '当前用户已绑定手机号,无需重复操作。',
email_or_phone_required_in_profile: '请绑定邮箱地址或手机号码。',
suspended: '账号已被禁用。',
user_not_exist: '未找到与 {{ identifier }} 相关联的用户。',
user_not_exist: '未找到与 {{identifier}} 相关联的用户。',
missing_profile: '请于登录时提供必要的用户补充信息。',
role_exists: 'The role id {{roleId}} is already been added to this user', // UNTRANSLATED
role_exists: '角色 ID {{roleId}} 已添加到此用户',
},
password: {
unsupported_encryption_method: '不支持的加密方法 {{name}}',
@ -85,9 +85,8 @@ const errors = {
forgot_password_not_enabled: '忘记密码功能没有开启。',
verification_failed: '验证失败,请重新验证。',
connector_validation_session_not_found: '找不到连接器用于验证 token 的信息。',
identifier_not_found: 'User identifier not found. Please go back and sign in again.', // UNTRANSLATED
interaction_not_found:
'Interaction session not found. Please go back and start the session again.', // UNTRANSLATED
identifier_not_found: '找不到用户标识符。请返回并重新登录。',
interaction_not_found: '找不到交互会话。请返回并重新开始会话。',
},
connector: {
general: '连接器发生错误:{{errorDescription}}',
@ -133,18 +132,16 @@ const errors = {
empty_social_connectors: '你启用了社交登录的方式。请至少选择一个社交连接器。',
enabled_connector_not_found: '未找到已启用的 {{type}} 连接器',
not_one_and_only_one_primary_sign_in_method: '主要的登录方式必须有且仅有一个,请检查你的输入。',
username_requires_password: 'Must enable set a password for username sign up identifier.', // UNTRANSLATED
passwordless_requires_verify: 'Must enable verify for email/phone sign up identifier.', // UNTRANSLATED
miss_sign_up_identifier_in_sign_in: 'Sign in methods must contain the sign up identifier.', // UNTRANSLATED
password_sign_in_must_be_enabled:
'Password sign in must be enabled when set a password is required in sign up.', // UNTRANSLATED
code_sign_in_must_be_enabled:
'Verification code sign in must be enabled when set a password is not required in sign up.', // UNTRANSLATED
unsupported_default_language: '{{language}}无法选择为默认语言。',
username_requires_password: '必须为用户名注册标识符启用设置密码。',
passwordless_requires_verify: '必须为电子邮件/电话注册标识符启用验证。',
miss_sign_up_identifier_in_sign_in: '登录方法必须包含注册标识符。',
password_sign_in_must_be_enabled: '必须在注册中要求设置密码时启用密码登录。',
code_sign_in_must_be_enabled: '必须在注册中不要求设置密码时启用验证码登录。',
unsupported_default_language: '{{language}} 无法选择为默认语言。',
at_least_one_authentication_factor: '至少要选择一个登录要素',
},
localization: {
cannot_delete_default_language: '你已设置{{languageTag}}为你的默认语言,你无法删除默认语言。',
cannot_delete_default_language: '你已设置 {{languageTag}} 为你的默认语言,你无法删除默认语言。',
invalid_translation_structure: '无效的数据格式,请检查你的输入并重试。',
},
swagger: {
@ -158,25 +155,24 @@ const errors = {
not_found: '该资源不存在',
},
log: {
invalid_type: 'The log type is invalid.', // UNTRANSLATED
invalid_type: '日志类型无效。',
},
role: {
name_in_use: 'This role name {{name}} is already in use', // UNTRANSLATED
scope_exists: 'The scope id {{scopeId}} has already been added to this role', // UNTRANSLATED
user_exists: 'The user id {{userId}} is already been added to this role', // UNTRANSLATED
default_role_missing:
'Some of the default roleNames does not exist in database, please ensure to create roles first', // UNTRANSLATED
name_in_use: '此角色名称 {{name}} 已被使用',
scope_exists: '作用域 ID {{scopeId}} 已添加到此角色',
user_exists: '用户 ID {{userId}} 已添加到此角色',
default_role_missing: '某些默认角色名称在数据库中不存在,请确保先创建角色',
internal_role_violation:
'You may be trying to update or delete an internal role which is forbidden by Logto. If you are creating a new role, try another name that does not start with "#internal:".', // UNTRANSLATED
'你可能正在尝试更新或删除 Logto 禁止的内部角色。如果你要创建新角色,请尝试使用不以“#internal:”开头的名称。',
},
scope: {
name_exists: 'The scope name {{name}} is already in use', // UNTRANSLATED
name_with_space: 'The name of the scope cannot contain any spaces.', // UNTRANSLATED
name_exists: '此作用域名称 {{name}} 已被使用',
name_with_space: '作用域名称不能包含任何空格。',
},
storage: {
not_configured: 'Storage provider is not configured.', // UNTRANSLATED
missing_parameter: 'Missing parameter {{parameter}} for storage provider.', // UNTRANSLATED
upload_error: 'Failed to upload file to the storage provider.', // UNTRANSLATED
not_configured: '未配置存储提供程序。',
missing_parameter: '存储提供程序缺少参数 {{parameter}}。',
upload_error: '无法将文件上传到存储提供程序。',
},
};

View file

@ -1,10 +1,10 @@
const api_resource_details = {
back_to_api_resources: '返回 API 资源',
settings_tab: 'Settings', // UNTRANSLATED
permissions_tab: 'Permissions', // UNTRANSLATED
settings_tab: '设置',
permissions_tab: '权限',
settings: '设置',
settings_description:
'API resources, a.k.a. Resource Indicators, indicate the target services or resources to be requested, usually, a URI format variable representing the resources identity.', // UNTRANSLATED
'API 资源,又称资源指示器,表示要请求的目标服务或资源,通常是表示资源身份的 URI 格式变量。',
token_expiration_time_in_seconds: 'Token 过期时间(秒)',
token_expiration_time_in_seconds_placeholder: '请输入你的 token 过期时间',
delete_description:
@ -12,19 +12,18 @@ const api_resource_details = {
enter_your_api_resource_name: '输入 API 资源名称',
api_resource_deleted: ' API 资源 {{name}} 已删除.',
permission: {
create_button: 'Create Permission', // UNTRANSLATED
create_title: 'Create permission', // UNTRANSLATED
create_subtitle: 'Define the permissions (scopes) needed by this API.', // UNTRANSLATED
confirm_create: 'Create permission', // UNTRANSLATED
name: 'Permission name', // UNTRANSLATED
name_placeholder: 'read:resource', // UNTRANSLATED
forbidden_space_in_name: 'The permission name must not contain any spaces.', // UNTRANSLATED
description: 'Description', // UNTRANSLATED
description_placeholder: 'Able to read the resources', // UNTRANSLATED
permission_created: 'The permission {{name}} has been successfully created', // UNTRANSLATED
delete_description:
'If this permission is deleted, the user who had this permission will lose the access granted by it.', // UNTRANSLATED
deleted: 'The permission "{{name}}" was successfully deleted!', // UNTRANSLATED
create_button: '创建权限',
create_title: '创建权限',
create_subtitle: '定义此 API 所需的权限 (scope)。',
confirm_create: '创建权限',
name: '权限名称',
name_placeholder: 'read:resource',
forbidden_space_in_name: '权限名称不能包含空格。',
description: '描述',
description_placeholder: '能够读取资源',
permission_created: '权限 "{{name}}" 已成功创建',
delete_description: '如果删除此权限,拥有该权限的用户将失去由此权限授予的访问权限。',
deleted: '成功删除权限 "{{name}}"',
},
};

View file

@ -2,48 +2,46 @@ const application_details = {
back_to_applications: '返回全部应用',
check_guide: '查看指南',
settings: '设置',
settings_description:
'Applications are used to identify your applications in Logto for OIDC, sign-in experience, audit logs, etc.', // UNTRANSLATED
settings_description: '应用程序用于在 Logto OIDC、登录体验、审计日志等方面识别你的应用程序。',
advanced_settings: '高级设置',
advanced_settings_description:
'Advanced settings include OIDC related terms. You can check out the Token Endpoint for more information.', // UNTRANSLATED
'高级设置包括 OIDC 相关术语。你可以查看 Token Endpoint 以获取更多信息。',
application_name: '应用名称',
application_name_placeholder: '我的应用',
description: '描述',
description_placeholder: '请输入应用描述',
authorization_endpoint: 'Authorization Endpoint',
authorization_endpoint_tip:
'进行鉴权与授权的端点 endpoint。用于 OpenID Connect 中的 <a>鉴权</a> 流程。',
application_id: 'App ID',
authorization_endpoint: '授权端点',
authorization_endpoint_tip: '进行鉴权与授权的端点。用于 OpenID Connect 中的 <a>鉴权</a> 流程。',
application_id: '应用 ID',
application_id_tip:
'应用的唯一标识,通常由 Logto 生成。等价于 OpenID Connect 中的 <a>client_id</a>。',
application_secret: 'App Secret',
redirect_uri: 'Redirect URI',
redirect_uris: 'Redirect URIs',
application_secret: '应用密钥',
redirect_uri: '重定向 URI',
redirect_uris: '重定向 URIs',
redirect_uri_placeholder: 'https://your.website.com/app',
redirect_uri_placeholder_native: 'io.logto://callback',
redirect_uri_tip:
'在用户登录完成(不论成功与否)后重定向的目标 URI。参见 OpenID Connect <a>AuthRequest</a> 以了解更多。',
post_sign_out_redirect_uri: 'Post Sign-out Redirect URI',
post_sign_out_redirect_uris: 'Post sign out redirect URIs',
post_sign_out_redirect_uri: '退出登录后重定向 URI',
post_sign_out_redirect_uris: '退出登录后重定向 URIs',
post_sign_out_redirect_uri_placeholder: 'https://your.website.com/home',
post_sign_out_redirect_uri_tip:
'在用户退出登录后重定向的目标 URI可选。在某些应用类型中可能无实质作用。',
cors_allowed_origins: 'CORS Allowed Origins',
cors_allowed_origins: 'CORS 允许的来源',
cors_allowed_origins_placeholder: 'https://your.website.com',
cors_allowed_origins_tip:
'所有 Redirect URI 的 origin 将默认被允许。通常不需要对此字段进行操作。参见 <a>MDN 文档</a>以了解更多',
'所有重定向 URI 的来源将默认被允许。通常不需要对此字段进行操作。参见 <a>MDN 文档</a> 以了解更多',
id_token_expiration: 'ID Token 过期时间',
refresh_token_expiration: 'Refresh Token 过期时间',
token_endpoint: 'Token Endpoint',
user_info_endpoint: 'UserInfo Endpoint',
enable_admin_access: 'Enable admin access', // UNTRANSLATED
user_info_endpoint: '用户信息端点',
enable_admin_access: '启用管理访问',
enable_admin_access_label:
'Enable or disable the access to Management API. Once enabled, you can use access tokens to call Management API on behalf on this application.', // UNTRANSLATED
'启用或禁用对管理 API 的访问。启用后,你可以使用访问令牌代表该应用程序调用管理 API。',
delete_description: '本操作会永久性地删除该应用,且不可撤销。输入 <span>{{name}}</span> 确认。',
enter_your_application_name: '输入你的应用名称',
application_deleted: '应用 {{name}} 成功删除.',
redirect_uri_required: '至少需要输入一个 Redirect URL',
application_deleted: '应用 {{name}} 成功删除',
redirect_uri_required: '至少需要输入一个重定向 URL。',
};
export default application_details;

View file

@ -26,11 +26,10 @@ const applications = {
subtitle: '仅由 Web 服务器渲染和更新的应用程序',
description: '例如 Next.js, PHP',
},
// UNTRANSLATED
machine_to_machine: {
title: 'Machine to Machine',
subtitle: 'An app (usually a service) that directly talks to resources',
description: 'E.g., Backend service',
title: '机器对机器',
subtitle: '直接与资源对话的应用程序(通常是服务)',
description: '例如,后端服务',
},
},
guide: {
@ -41,9 +40,9 @@ const applications = {
subtitle: '参考以下步骤完成你的应用设置。首先,选择你要使用的 SDK 类型:',
description_by_sdk: '本教程向你演示如何在 {{sdk}} 应用中集成 Logto 登录功能',
},
placeholder_title: 'Select an application type to continue', // UNTRANSLATED
placeholder_title: '选择应用程序类型以继续',
placeholder_description:
'Logto uses an application entity for OIDC to help with tasks such as identifying your apps, managing sign-in, and creating audit logs.', // UNTRANSLATED
'Logto 使用 OIDC 的应用程序实体来帮助识别你的应用程序、管理登录和创建审计日志等任务。',
};
export default applications;

View file

@ -1,111 +1,108 @@
const cloud = {
welcome: {
title: 'Welcome and lets create your own Logto Cloud Preview', // UNTRANSLATED
title: '欢迎来到 Logto Cloud预览版让我们一起创建独属于你的体验',
description:
'Whether youre an open-source or cloud user, take a tour of the showcase and experience the full value of Logto. Cloud preview also serves as a preliminary version of Logto Cloud.', // UNTRANSLATED
project_field: 'Im using Logto for', // UNTRANSLATED
'无论你是开源用户还是云用户,都可以在展示中了解 Logto 的全部价值。Cloud 预览版也是 Logto Cloud 的初步版本。',
project_field: '我使用 Logto 是为了',
project_options: {
personal: 'Personal project', // UNTRANSLATED
company: 'Company project', // UNTRANSLATED
personal: '个人项目',
company: '公司项目',
},
deployment_type_field: 'Prefer open-source or cloud?', // UNTRANSLATED
deployment_type_field: '你偏爱开源还是云?',
deployment_type_options: {
open_source: 'Open-Source', // UNTRANSLATED
cloud: 'Cloud', // UNTRANSLATED
open_source: '开源',
cloud: '云',
},
},
about: {
title: 'A little bit about you', // UNTRANSLATED
description:
'Lets make your Logto experience unique to you by getting to know you better. Your information is safe with us.', // UNTRANSLATED
title_field: 'Your title', // UNTRANSLATED
title: '关于你的一些信息',
description: '通过更好地了解你,我们可以使你的 Logto 体验更加个性化。你的信息是安全的。',
title_field: '你的头衔',
title_options: {
developer: 'Developer', // UNTRANSLATED
team_lead: 'Team Lead', // UNTRANSLATED
ceo: 'CEO', // UNTRANSLATED
cto: 'CTO', // UNTRANSLATED
product: 'Product', // UNTRANSLATED
others: 'Others', // UNTRANSLATED
developer: '开发人员',
team_lead: '团队负责人',
ceo: 'CEO',
cto: 'CTO',
product: '产品',
others: '其他',
},
company_name_field: 'Company name', // UNTRANSLATED
company_name_placeholder: 'Acme.co', // UNTRANSLATED
company_size_field: 'Hows your company size?', // UNTRANSLATED
company_name_field: '公司名称',
company_name_placeholder: 'Acme.co',
company_size_field: '你的公司规模如何?',
company_options: {
size_1: '1', // UNTRANSLATED
size_2_49: '2-49', // UNTRANSLATED
size_50_199: '50-199', // UNTRANSLATED
size_200_999: '200-999', // UNTRANSLATED
size_1000_plus: '1000+', // UNTRANSLATED
size_1: '1',
size_2_49: '2-49',
size_50_199: '50-199',
size_200_999: '200-999',
size_1000_plus: '1000+',
},
reason_field: 'Im signing up because', // UNTRANSLATED
reason_field: '我注册的原因是',
reason_options: {
passwordless: 'Finding passwordless authentication and UI kit', // UNTRANSLATED
efficiency: 'Finding out-of-the-box identity infrastructure', // UNTRANSLATED
access_control: 'Controlling user access based on roles and responsibilities', // UNTRANSLATED
multi_tenancy: 'Seeking strategies for a multi-tenancy product', // UNTRANSLATED
enterprise: 'Finding SSO solutions for enterprise readiness', // UNTRANSLATED
others: 'Others', // UNTRANSLATED
passwordless: '寻找无需密码身份验证和 UI 工具包',
efficiency: '寻找即插即用的身份基础架构',
access_control: '基于角色和责任控制用户访问',
multi_tenancy: '寻求面向多租户产品的策略',
enterprise: '为产品更方便企业使用寻找 SSO 解决方案',
others: '其他',
},
},
congrats: {
title: 'Great news! You are qualified to earn Logto Cloud early credit!', // UNTRANSLATED
title: '好消息!你有资格获得 Logto Cloud 的早鸟惊喜。',
description:
'Dont miss out on a chance to enjoy a free <strong>60 days</strong> subscription to Logto Cloud after its official launch! Contact the Logto team now to learn more.', // UNTRANSLATED
check_out_button: 'Check out the live preview', // UNTRANSLATED
reserve_title: 'Reserve your time with Logto team', // UNTRANSLATED
reserve_description: 'Credit is only eligible once upon validation.', // UNTRANSLATED
book_button: 'Schedule now', // UNTRANSLATED
join_description: 'Join our public <a>{{link}}</a> to connect and chat with other developers.', // UNTRANSLATED
discord_link: 'discord channel', // UNTRANSLATED
enter_admin_console: 'Enter Logto Cloud Preview', // UNTRANSLATED
'别错过:立即联系 Logto 团队,了解更多信息,获得 Logto Cloud 正式版 <strong>60 天</strong> 的免费试用机会!',
check_out_button: '查看实时预览',
reserve_title: '与 Logto 团队预定时间',
reserve_description: '验证后仅有一次领取资格。',
book_button: '现在预定',
join_description: '加入我们的公开 <a>{{link}}</a>,与其他开发人员连接和聊天。',
discord_link: 'Discord 频道',
enter_admin_console: '进入 Logto Cloud 预览',
},
gift: {
title: 'Use Logto Cloud free for 60 days. Join the front-runners now!', // UNTRANSLATED
description: 'Book a one-on-one session with our team for early credit.', // UNTRANSLATED
reserve_title: 'Reserve your time with Logto team', // UNTRANSLATED
reserve_description: 'Credit is only eligible once upon evaluation.', // UNTRANSLATED
book_button: 'Book', // UNTRANSLATED
title: '免费使用 Logto Cloud 60 天,立即成为尝鲜会员!',
description: '预定与我们团队的一对一会话,以获取早鸟惊喜。',
reserve_title: '与 Logto 团队预定时间',
reserve_description: '评估后仅有一次领取资格。',
book_button: '预定',
},
sie: {
title: 'Lets first customize your experience with ease', // UNTRANSLATED
title: '让我们轻松定制你的登录体验',
inspire: {
title: 'Create compelling examples', // UNTRANSLATED
description:
'Feeling unsure about sign in experience? Just click the "Inspire Me" and let the magic happen!', // UNTRANSLATED
inspire_me: 'Inspire me', // UNTRANSLATED
title: '创建引人入胜的示例',
description: '对登录体验不确定吗?只需点击“启发我”,让魔法发生!',
inspire_me: '来点灵感',
},
logo_field: 'App Logo', // UNTRANSLATED
color_field: 'Brand color', // UNTRANSLATED
identifier_field: 'Identifier', // UNTRANSLATED
logo_field: '应用商标',
color_field: '品牌颜色',
identifier_field: '标识符',
identifier_options: {
email: 'Email', // UNTRANSLATED
phone: 'Phone', // UNTRANSLATED
user_name: 'Username', // UNTRANSLATED
email: '电子邮件',
phone: '电话',
user_name: '用户名',
},
authn_field: 'Authentication', // UNTRANSLATED
authn_field: '身份验证',
authn_options: {
password: 'Password', // UNTRANSLATED
verification_code: 'Verification code', // UNTRANSLATED
password: '密码',
verification_code: '验证码',
},
social_field: 'Social sign in', // UNTRANSLATED
finish_and_done: 'Finish and done', // UNTRANSLATED
social_field: '社交登录',
finish_and_done: '完成并完成',
preview: {
mobile_tab: 'Mobile', // UNTRANSLATED
web_tab: 'Web', // UNTRANSLATED
mobile_tab: '移动端',
web_tab: '网页端',
},
connectors: {
unlocked_later: 'Unlocked later', // UNTRANSLATED
unlocked_later_tip:
'Once you have completed the onboarding process and entered the product, you will have access to even more social sign-in methods.', // UNTRANSLATED
unlocked_later: '稍后解锁',
unlocked_later_tip: '完成入门流程并进入产品后,你将获得访问更多社交登录方式的权限。',
notice:
'Please avoid using the demo connector for production purposes. Once youve completed testing, kindly delete the demo connector and set up your own connector with your credentials.', // UNTRANSLATED
'请勿将演示连接器用于生产目的。完成测试后,请删除演示连接器并使用你的凭据设置自己的连接器。',
},
},
broadcast: '📣 You are in Logto Cloud (Preview)', // UNTRANSLATED
broadcast: '📣 你正在使用 Logto Cloud预览版',
socialCallback: {
title: "You've successfully signed in!", // UNTRANSLATED
title: '你已成功登录',
description:
'You have successfully signed in using your social account. To ensure seamless integration and access to all the features of Logto, we recommend that you proceed to configure your own social connector.', // UNTRANSLATED
'你已成功使用社交账户登录。为确保与 Logto 的无缝集成并获得所有功能的访问权限,我们建议你继续配置自己的社交连接器。',
},
};

View file

@ -1,13 +1,13 @@
const components = {
uploader: {
action_description: 'Drag and drop or browse', // UNTRANSLATED
uploading: 'Uploading...', // UNTRANSLATED
action_description: '拖放或浏览上传',
uploading: '上传中...',
image_limit:
'Upload image under {{size, number}}KB, {{extensions, list(style: narrow; type: conjunction;)}} only.', // UNTRANSLATED
error_upload: 'Something went wrong. File upload failed.', // UNTRANSLATED
error_file_size: 'File size is too large. Please upload a file under {{size, number}}KB.', // UNTRANSLATED
'上传图片大小不能超过 {{size, number}}KB只支持 {{extensions, list(style: narrow; type: conjunction;)}} 格式的文件。',
error_upload: '哎呀,出了些问题。文件上传失败。',
error_file_size: '文件太大了,请上传小于 {{size, number}}KB 的文件。',
error_file_type:
'File type is not supported. {{extensions, list(style: narrow; type: conjunction;)}} only.', // UNTRANSLATED
'不支持该文件类型。只支持 {{extensions, list(style: narrow; type: conjunction;)}} 格式的文件。',
},
};

View file

@ -3,7 +3,7 @@ const connector_details = {
check_readme: '查看 README',
settings: '通用设置',
settings_description:
'Connectors play a critical role in Logto. With their help, Logto enables end-users to use passwordless registration or sign-in and the capabilities of signing in with social accounts.', // UNTRANSLATED
'连接器在 Logto 中扮演着至关重要的角色。借助它们的帮助Logto 使终端用户能够使用无密码注册或登录的功能以及使用社交帐户登录的功能。',
parameter_configuration: '参数配置',
test_connection: '连接测试',
save_error_empty_config: '请输入配置内容',
@ -24,9 +24,9 @@ const connector_details = {
type_sms: '短信连接器',
type_social: '社交连接器',
in_used_social_deletion_description:
'This connector is in-use in your sign in experience. By deleting, <name/> sign in experience will be deleted in sign in experience settings.', // UNTRANSLATED
'你的登录体验正在使用这个连接器。删除后,<name/> 登录体验将在登录体验设置中被删除。',
in_used_passwordless_deletion_description:
'This {{name}} is in-use in your sign-in experience. By deleting, your sign-in experience will not work properly until you resolve the conflict.', // UNTRANSLATED
'你的登录体验正在使用 {{name}} 连接器。删除后,你的登录体验将无法正常工作,直到你解决冲突。',
};
export default connector_details;

View file

@ -7,8 +7,7 @@ const connectors = {
tab_email_sms: '短信和邮件连接器',
tab_social: '社交连接器',
connector_name: '连接器名称',
demo_tip:
'The demo connector is designed exclusively for demonstration purposes and is not recommended for deployment in a production environment.', // UNTRANSLATED
demo_tip: '演示连接器仅用于演示目的,不建议在生产环境中部署。',
connector_type: '类型',
connector_status: '登录体验',
connector_status_in_use: '使用中',
@ -17,9 +16,9 @@ const connectors = {
content: '未使用意味着你的登录体验并没有使用这个登录方式。<a>{{link}}</a>去添加。',
go_to_sie: '前往登录体验',
},
placeholder_title: 'Social connector', // UNTRANSLATED
placeholder_title: '社交连接器',
placeholder_description:
'Logto has provided many widely used social sign-in connectors meantime you can create your own with standard protocols.', // UNTRANSLATED
'Logto 提供了许多广泛使用的社交登录连接器,同时你还可以使用标准协议创建自己的连接器。',
save_and_done: '保存并完成',
type: {
email: '邮件连接器',
@ -57,15 +56,15 @@ const connectors = {
'此「身份供应商名称」值与现有的 <span>name</span> 连接器相同。使用相同的身份供应商名称会导致不符合预期的登录行为,用户可能通过两个不同的连接器访问同一个帐户。',
target_conflict_line2:
'如果你想替换当前的连接器并连接相同的身份提供商IdP以便先前的用户可以直接登录而无需重新注册请先删除 <span>name</span> 连接器,再创建一个新的连接器并使用相同的「身份供应商名称」值。',
target_conflict_line3: '如果想连接一个新的身份验证提供程序,请修改「身份供应商名称」并继续。',
target_conflict_line3: '如果想连接一个新的身份验证提供程序,请修改「身份供应商名称」并继续。',
config: '粘贴你的 JSON 代码',
sync_profile: '开启用户资料同步',
sync_profile_only_at_sign_up: '首次注册时同步',
sync_profile_each_sign_in: '每次登录时同步',
sync_profile_tip: '同步用户的用户名、头像等个人资料信息',
callback_uri: 'Callback URI', // UNTRANSLATED
callback_uri: 'Callback URI',
callback_uri_description:
"Also called redirect URI, is the URI in Logto where users will be sent back after social authorization, copy and paste to the social provider's config page.", // UNTRANSLATED
'也称为重定向 URI在社交授权后用户将被发送回 Logto 的 URI复制并粘贴到社交提供者的配置页面中。',
},
platform: {
universal: '通用',

View file

@ -15,9 +15,9 @@ const errors = {
password_pattern_error: '密码至少需要 {{min}} 个字符,且必须包含字母、数字和符号。',
insecure_contexts: '不支持不安全的上下文(非 HTTPS。',
unexpected_error: '发生未知错误',
not_found: '404 not found', // UNTRANSLATED
not_found: '404 找不到资源',
create_internal_role_violation:
'You are creating a new internal role which is forbidden by Logto. Try another name that does not start with "#internal:".', // UNTRANSLATED
'你正在创建一个被 Logto 禁止内部角色。尝试使用不以 "#internal:" 开头的其他名称。',
};
export default errors;

View file

@ -11,7 +11,7 @@ const general = {
save: '保存',
save_changes: '保存更改',
saved: '保存成功!',
discard: 'Discard', // UNTRANSLATED
discard: '放弃',
loading: '读取中...',
redirecting: '页面跳转中...',
add: '添加',
@ -41,16 +41,16 @@ const general = {
got_it: '知道了',
continue: '继续',
page_info: '{{min, number}}-{{max, number}} 共 {{total, number}} 条',
learn_more: 'Learn more', // UNTRANSLATED
tab_errors: '{{count, number}} errors', // UNTRANSLATED
skip_for_now: 'Skip for now', // UNTRANSLATED
learn_more: '了解更多',
tab_errors: '{{count, number}} 个错误',
skip_for_now: '先跳过',
remove: '移除',
visit: 'Visit', // UNTRANSLATED
join: 'Join', // UNTRANSLATED
try_now: 'Try Now', // UNTRANSLATED
multiple_form_field: '(Multiple)', // UNTRANSLATED
cap_limit: 'Cap limit', // UNTRANSLATED
demo: 'Demo', // UNTRANSLATED
visit: '访问',
join: '加入',
try_now: '现在试试',
multiple_form_field: '(多选)',
cap_limit: '限量使用',
demo: '演示',
};
export default general;

View file

@ -1,31 +1,27 @@
const get_started = {
progress: '开始上手: {{completed}}/{{total}}',
progress_dropdown_title: '一些快速上手的操作',
title: 'Something to explore to help you succeed', // UNTRANSLATED
title: '成功开发身份方案,我们先来探索一番',
subtitle_part1: '下列是一些可以快速上手的操作,通过这些,你可以更好地感受 Logto 的价值',
subtitle_part2: '我已经完成了这些设置。 ',
subtitle_part2: '我已经完成了这些设置。',
hide_this: '隐藏引导',
confirm_message: '你确认要隐藏该页面吗? 本操作将无法恢复。',
check_preview_title: 'Check the live preview', // UNTRANSLATED
check_preview_title: '查看实时预览',
check_preview_subtitle: '来体验 Logto 登录吧',
integration_title: 'Create and integrate your application', // UNTRANSLATED
integration_subtitle:
'Set up Logto authentication for your native, single page, machine to machine, or traditional application', // UNTRANSLATED
custom_sie_title: 'Customize sign-in experience', // UNTRANSLATED
custom_sie_subtitle: 'Unlock a vast range of scenarios with advanced settings', // UNTRANSLATED
passwordless_title: 'Scale passwordless sign in by adding your own connectors', // UNTRANSLATED
passwordless_subtitle:
'Try passwordless sign in and enable a secure and frictionless experience for your customer', // UNTRANSLATED
community_title: 'Join our discord community', // UNTRANSLATED
community_subtitle: 'Join our public channel to chat with other developers', // UNTRANSLATED
management_api_title: 'Interact with Management API', // UNTRANSLATED
management_api_subtitle: 'Directly connect your authentication system to our management API', // UNTRANSLATED
further_readings_title: 'Further readings', // UNTRANSLATED
further_readings_subtitle:
'Check out our step-by-step, scenario-based docs without tedious concepts', // UNTRANSLATED
add_rbac_title: 'Add role-based access control to protect your resources', // UNTRANSLATED
add_rbac_subtitle:
'Control your resource through scalable role authorization for diverse use cases.', // UNTRANSLATED
integration_title: '创建和集成你的应用程序',
integration_subtitle: '为你的本地、单页、机器对机器或传统应用程序设置 Logto 身份验证',
custom_sie_title: '自定义登录体验',
custom_sie_subtitle: '使用高级设置解锁各种场景',
passwordless_title: '通过添加自己的连接器来扩展无密码登录',
passwordless_subtitle: '尝试无密码登录,并为你的客户提供安全和无摩擦的体验',
community_title: '加入我们的 Discord 社区',
community_subtitle: '加入我们的公共频道与其他开发人员交流',
management_api_title: '与管理 API 交互',
management_api_subtitle: '直接将你的身份验证系统连接到我们的管理 API',
further_readings_title: '进一步阅读',
further_readings_subtitle: '查看我们的逐步、基于场景的文档,避免繁琐的概念',
add_rbac_title: '添加基于角色的访问控制以保护你的资源',
add_rbac_subtitle: '通过可扩展的角色授权控制你的资源,以适应各种用例。',
};
export default get_started;

View file

@ -3,7 +3,7 @@ const log_details = {
back_to_user: '返回 {{name}}',
success: '成功',
failed: '失败',
event_key: 'Event Key', // UNTRANSLATED
event_key: '事件 Key',
application: '应用',
ip_address: 'IP 地址',
user: '用户',

View file

@ -1,12 +1,11 @@
const permissions = {
search_placeholder: 'Search by API or permission name', // UNTRANSLATED
search_placeholder_without_api: 'Search by permission name', // UNTRANSLATED
name_column: 'Permission', // UNTRANSLATED
description_column: 'Description', // UNTRANSLATED
api_column: 'API', // UNTRANSLATED
placeholder_title: 'Permission', // UNTRANSLATED
placeholder_description:
'Permission refers to the authorization to access a resource (we call it API resource).', // UNTRANSLATED
search_placeholder: '通过 API 或权限名称搜索',
search_placeholder_without_api: '通过权限名称搜索',
name_column: '权限',
description_column: '描述',
api_column: 'API',
placeholder_title: '权限',
placeholder_description: '权限是指访问资源的授权(我们称其为 API 资源)。',
};
export default permissions;

View file

@ -47,11 +47,11 @@ const profile = {
description: '删除账户将会删除所有个人信息、用户数据和配置。此操作无法撤销。',
button: '删除账户',
dialog_paragraph_1:
'很抱歉听到您想要删除您的帐户。删除您的帐户将永久删除所有数据,包括用户信息、日志和设置,此操作无法撤销。因此,请确保在继续之前备份任何重要数据。',
'很抱歉听到你想要删除你的帐户。删除你的帐户将永久删除所有数据,包括用户信息、日志和设置,此操作无法撤销。因此,请确保在继续之前备份任何重要数据。',
dialog_paragraph_2:
'要继续删除帐户的删除过程,请通过 <a>mail</a> 向我们的支持团队发送主题为“帐户删除请求”的邮件。我们将协助并确保所有数据都已从我们的系统中正确删除。',
'要继续删除帐户的删除过程,请通过 <a>mail</a> 向我们的支持团队发送主题为“帐户删除请求”的邮件。我们将协助并确保所有数据都已从我们的系统中正确删除。',
dialog_paragraph_3:
'感谢您选择 Logto Cloud。如果您有任何进一步的问题或疑虑,请随时与我们联系。',
'感谢你选择 Logto Cloud。如果你有任何进一步的问题或疑虑,请随时与我们联系。',
},
set: '设置',
change: '修改',

View file

@ -1,49 +1,45 @@
const role_details = {
back_to_roles: 'Back to Roles',
identifier: 'Identifier',
back_to_roles: '返回角色',
identifier: '标识符',
delete_description:
'Doing so will remove the permissions associated with this role from the affected users and delete the mapping between roles, users, and permissions.', // UNTRANSLATED
role_deleted: '{{name}} was successfully deleted!', // UNTRANSLATED
settings_tab: 'Settings',
users_tab: 'Users',
permissions_tab: 'Permissions',
settings: 'Settings',
'这样做将从受影响的用户中删除与该角色关联的权限,并删除角色、用户和权限之间的映射关系。',
role_deleted: '{{name}} 已成功删除!',
settings_tab: '设置',
users_tab: '用户',
permissions_tab: '权限',
settings: '设置',
settings_description:
'Roles are a grouping of permissions that can be assigned to users. They also provide a way to aggregate permissions defined for different APIs, making it more efficient to add, remove, or adjust permissions compared to assigning them individually to users.', // UNTRANSLATED
field_name: 'Name',
field_description: 'Description',
'角色是一组权限,可以分配给用户。它们还提供了一种聚合不同 API 定义的权限的方法,使得添加、删除或调整权限比将其单独分配给用户更有效率。',
field_name: '名称',
field_description: '描述',
permission: {
assign_button: 'Assign Permissions', // UNTRANSLATED
assign_title: 'Assign permissions', // UNTRANSLATED
assign_subtitle:
'Assign permissions to this role. The role will gain the added permissions, and users with this role will inherit these permissions.', // UNTRANSLATED
assign_form_field: 'Assign permissions', // UNTRANSLATED
added_text_one: '{{count, number}} permission added', // UNTRANSLATED
added_text_other: '{{count, number}} permissions added', // UNTRANSLATED
api_permission_count_one: '{{count, number}} permission', // UNTRANSLATED
api_permission_count_other: '{{count, number}} permissions', // UNTRANSLATED
confirm_assign: 'Assign Permissions', // UNTRANSLATED
permission_assigned: 'The selected permissions were successfully assigned to this role!', // UNTRANSLATED
deletion_description:
'If this permission is removed, the affected user with this role will lose the access granted by this permission.', // UNTRANSLATED
permission_deleted: 'The permission "{{name}}" was successfully removed from this role!', // UNTRANSLATED
empty: 'No permission available', // UNTRANSLATED
assign_button: '分配权限',
assign_title: '分配权限',
assign_subtitle: '将权限分配给此角色。角色将获得添加的权限,具有此角色的用户将继承这些权限。',
assign_form_field: '分配权限',
added_text_one: '添加了 {{count, number}} 个权限',
added_text_other: '添加了 {{count, number}} 个权限',
api_permission_count_one: '{{count, number}} 个权限',
api_permission_count_other: '{{count, number}} 个权限',
confirm_assign: '分配权限',
permission_assigned: '所选的权限已成功分配给此角色',
deletion_description: '如果删除此权限,则具有此角色的受影响用户将失去此权限授予的访问权限。',
permission_deleted: '权限 {{name}} 已成功从此角色中删除',
empty: '无可用权限',
},
users: {
assign_button: 'Assign Users', // UNTRANSLATED
name_column: 'User', // UNTRANSLATED
app_column: 'App', // UNTRANSLATED
latest_sign_in_column: 'Latest sign in', // UNTRANSLATED
delete_description:
'It will remain in your user pool but lose the authorization for this role.', // UNTRANSLATED
deleted: '{{name}} was successfully removed from this role!', // UNTRANSLATED
assign_title: 'Assign users', // UNTRANSLATED
assign_subtitle:
'Assign users to this role. Find appropriate users by searching name, email, phone, or user ID.', // UNTRANSLATED
assign_users_field: 'Assign users', // UNTRANSLATED
confirm_assign: 'Assign users', // UNTRANSLATED
users_assigned: 'The selected users were successfully assigned to this role!', // UNTRANSLATED
empty: 'No user available', // UNTRANSLATED
assign_button: '分配用户',
name_column: '用户',
app_column: '应用',
latest_sign_in_column: '最近登录',
delete_description: '它将保留在你的用户池中,但失去此角色的授权。',
deleted: '{{name}} 已成功从此角色中删除',
assign_title: '分配用户',
assign_subtitle: '将用户分配给此角色。通过搜索名称、电子邮件、电话或用户 ID 查找适当的用户。',
assign_users_field: '分配用户',
confirm_assign: '分配用户',
users_assigned: '所选的用户已成功分配给此角色',
empty: '无可用用户',
},
};

View file

@ -1,23 +1,21 @@
const roles = {
title: 'Roles', // UNTRANSLATED
title: '角色',
subtitle:
'Roles include permissions that determine what a user can do. RBAC uses roles to give users access to resources for specific actions.', // UNTRANSLATED
create: 'Create Role', // UNTRANSLATED
role_name: 'Role', // UNTRANSLATED
role_description: 'Description', // UNTRANSLATED
role_name_placeholder: 'Enter your role name', // UNTRANSLATED
role_description_placeholder: 'Enter your role description', // UNTRANSLATED
assigned_users: 'Assigned users', // UNTRANSLATED
assign_permissions: 'Assign permissions', // UNTRANSLATED
create_role_title: 'Create Role', // UNTRANSLATED
create_role_description:
'Create and manage roles for your applications. Roles contain collections of permissions and can be assigned to users.', // UNTRANSLATED
create_role_button: 'Create Role', // UNTRANSLATED
role_created: 'The role {{name}} has been successfully created!', // UNTRANSLATED
search: 'Search by role name, description or ID', // UNTRANSLATED
placeholder_title: 'Roles', // UNTRANSLATED
placeholder_description:
'Roles are a grouping of permissions that can be assigned to users. Be sure to add permission first before create roles.', // UNTRANSLATED
'RBAC 是一种访问控制方法,它使用角色来决定用户可以做什么事情,包括授予用户访问特定资源的权限。',
create: '创建角色',
role_name: '角色名称',
role_description: '描述',
role_name_placeholder: '输入你的角色名称',
role_description_placeholder: '输入你的角色描述',
assigned_users: '已分配的用户',
assign_permissions: '分配权限',
create_role_title: '创建角色',
create_role_description: '为你的应用程序创建和管理角色。角色包含权限集合,并可以分配给用户。',
create_role_button: '创建角色',
role_created: '角色 {{name}} 已成功创建。',
search: '按角色名称、描述或 ID 搜索',
placeholder_title: '角色',
placeholder_description: '角色是可以分配给用户的权限分组。在创建角色之前,请确保先添加权限。',
};
export default roles;

View file

@ -7,9 +7,8 @@ const sign_in_exp = {
others: '其它',
},
welcome: {
title: 'Customize sign-in experience', // UNTRANSLATED
description:
'Get started fast with your first sign-in setup. This guide walks you through all the necessary settings.', // UNTRANSLATED
title: '自定义登录体验',
description: '通过首次登录设置快速入门。本指南将带领你完成所有必要的设置。',
get_started: '开始',
apply_remind: '请注意,登录体验将会应用到当前帐户下的所有应用。',
},
@ -33,8 +32,8 @@ const sign_in_exp = {
dark_logo_image_url_placeholder: 'https://your.cdn.domain/logo-dark.png',
logo_image: 'Logo 图片',
dark_logo_image: 'Logo 图片(深色)',
logo_image_error: 'App logo: {{error}}', // UNTRANSLATED
favicon_error: 'Favicon: {{error}}', // UNTRANSLATED
logo_image_error: '应用 Logo{{error}}',
favicon_error: 'Favicon{{error}}',
},
custom_css: {
title: '自定义 CSS',
@ -160,8 +159,8 @@ const sign_in_exp = {
},
preview: {
title: '登录预览',
live_preview: 'Live preview', // UNTRANSLATED
live_preview_tip: 'Save to preview changes', // UNTRANSLATED
live_preview: '实时预览',
live_preview_tip: '保存以预览更改',
native: '移动原生',
desktop_web: '桌面网页',
mobile_web: '移动网页',

View file

@ -2,7 +2,7 @@ const tab_sections = {
overview: '概览',
resource_management: '资源管理',
user_management: '用户管理',
access_control: 'Access Control', // UNTRANSLATED
access_control: '访问控制',
help_and_support: '帮助与支持',
};

View file

@ -7,7 +7,7 @@ const tabs = {
connectors: '连接器',
users: '用户管理',
audit_logs: '审计日志',
roles: 'Roles', // UNTRANSLATED
roles: '角色',
docs: '文档',
contact_us: '联系我们',
settings: '设置',

View file

@ -14,12 +14,12 @@ const user_details = {
congratulations: '该用户已被重置',
new_password: '新密码:',
},
tab_settings: 'Settings', // UNTRANSLATED
tab_roles: 'Roles', // UNTRANSLATED
tab_settings: '设置',
tab_roles: '角色',
tab_logs: '用户日志',
settings: 'Settings', // UNTRANSLATED
settings: '设置',
settings_description:
'Each user has a profile containing all user information. It consists of basic data, social identities, and custom data.', // UNTRANSLATED
'每个用户都有一个包含所有用户信息的个人资料。它由基本数据、社交身份和自定义数据组成。',
field_email: '主要邮箱',
field_phone: '主要手机号码',
field_username: '用户名',
@ -39,22 +39,21 @@ const user_details = {
},
suspended: '已禁用',
roles: {
name_column: 'Role', // UNTRANSLATED
description_column: 'Description', // UNTRANSLATED
assign_button: 'Assign Roles', // UNTRANSLATED
delete_description:
'This action will remove this role from this user. The role itself will still exist, but it will no longer be associated with this user.', // UNTRANSLATED
deleted: '{{name}} was successfully removed from this user!', // UNTRANSLATED
assign_title: 'Assign roles to {{name}}', // UNTRANSLATED
assign_subtitle: 'Authorize {{name}} one or more roles', // UNTRANSLATED
assign_role_field: 'Assign roles', // UNTRANSLATED
role_search_placeholder: 'Search by role name', // UNTRANSLATED
added_text: '{{value, number}} added', // UNTRANSLATED
assigned_user_count: '{{value, number}} users', // UNTRANSLATED
confirm_assign: 'Assign roles', // UNTRANSLATED
role_assigned: 'Successfully assigned role(s)', // UNTRANSLATED
search: 'Search by role name, description or ID', // UNTRANSLATED
empty: 'No role available', // UNTRANSLATED
name_column: '角色名称',
description_column: '描述',
assign_button: '分配角色',
delete_description: '此操作将从此用户中删除此角色。角色本身仍将存在,但不再与此用户相关联。',
deleted: '已成功将 {{name}} 从此用户中删除。',
assign_title: '将角色分配给 {{name}}',
assign_subtitle: '为 {{name}} 授权一个或多个角色',
assign_role_field: '分配角色',
role_search_placeholder: '按角色名称搜索',
added_text: '添加了 {{value, number}} 个',
assigned_user_count: '{{value, number}} 个用户',
confirm_assign: '分配角色',
role_assigned: '已成功分配角色',
search: '按角色名称、描述或 ID 搜索',
empty: '无可用角色',
},
};

View file

@ -9,11 +9,11 @@ const users = {
create_form_password: '密码',
create_form_name: '姓名',
unnamed: '未命名',
search: 'Search by name, email, phone or username', // UNTRANSLATED
search: '按姓名、电子邮件、电话或用户名搜索',
check_user_detail: '查看用户详情',
placeholder_title: 'User management', // UNTRANSLATED
placeholder_title: '用户管理',
placeholder_description:
'Each user has a profile containing all user information. It consists of basic data, social identities, and custom data.', // UNTRANSLATED
'每个用户都有一个包含所有用户信息的个人资料。它由基本数据、社交身份和自定义数据组成。',
};
export default users;

View file

@ -1,9 +1,9 @@
const demo_app = {
title: "You've successfully signed in the live preview!", // UNTRANSLATED
title: '你已成功登录实时预览!',
subtitle: '以下是本次登录的用户信息:',
username: '用户名:',
user_id: '用户 ID',
sign_out: 'Sign Out the Live Preview', // UNTRANSLATED
sign_out: '退出实时预览',
continue_explore: '或继续探索',
customize_sign_in_experience: '自定义登录体验',
enable_passwordless: '启用无密码登录',

View file

@ -1,5 +1,5 @@
const oidc = {
logout_success: 'You have successfully signed out.',
logout_success: '你已经成功登出。',
};
export default oidc;