mirror of
https://github.com/logto-io/logto.git
synced 2025-03-17 22:31:28 -05:00
feat(phrases): add ru translation
This commit is contained in:
parent
7f3a42ce83
commit
f9ca7cc495
57 changed files with 1498 additions and 6 deletions
5
.changeset/chilled-garlics-guess.md
Normal file
5
.changeset/chilled-garlics-guess.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
"@logto/phrases": minor
|
||||
---
|
||||
|
||||
add ru translation
|
|
@ -41,7 +41,7 @@ const createFullTranslation = async (
|
|||
|
||||
/* eslint-disable no-await-in-loop */
|
||||
for (const file of files) {
|
||||
const relativePath = path.relative(path.join(directory, baseLanguage), file);
|
||||
const relativePath = path.relative(path.join(directory, baseLanguage.toLowerCase()), file);
|
||||
const targetPath = path.join(directory, languageTag.toLowerCase(), relativePath);
|
||||
|
||||
const getTranslationPath = async () => {
|
||||
|
|
|
@ -80,7 +80,7 @@ export const translate = async (api: Got, languageTag: LanguageTag, filePath: st
|
|||
}
|
||||
|
||||
const { content } = entity.message;
|
||||
const matched = /```ts\n(.*)```/s.exec(content)?.[1];
|
||||
const matched = /```(?:ts)?\n(.*)```/s.exec(content)?.[1];
|
||||
|
||||
if (!matched) {
|
||||
// Treat as pure code
|
||||
|
|
|
@ -24,11 +24,11 @@ export const readLocaleFiles = async (directory: string): Promise<string[]> => {
|
|||
};
|
||||
|
||||
export const readBaseLocaleFiles = async (directory: string): Promise<string[]> => {
|
||||
const enDirectory = path.join(directory, baseLanguage);
|
||||
const enDirectory = path.join(directory, baseLanguage.toLowerCase());
|
||||
const stat = await fs.stat(enDirectory);
|
||||
|
||||
if (!stat.isDirectory()) {
|
||||
log.error(directory, 'has no `' + baseLanguage + '` directory');
|
||||
log.error(directory, 'has no `' + baseLanguage.toLowerCase() + '` directory');
|
||||
}
|
||||
|
||||
return readLocaleFiles(enDirectory);
|
||||
|
|
|
@ -11,6 +11,7 @@ import ja from './locales/ja/index.js';
|
|||
import ko from './locales/ko/index.js';
|
||||
import ptBR from './locales/pt-br/index.js';
|
||||
import ptPT from './locales/pt-pt/index.js';
|
||||
import ru from './locales/ru/index.js';
|
||||
import trTR from './locales/tr-tr/index.js';
|
||||
import zhCN from './locales/zh-cn/index.js';
|
||||
import type { LocalePhrase } from './types.js';
|
||||
|
@ -26,8 +27,9 @@ export const builtInLanguages = [
|
|||
'fr',
|
||||
'ja',
|
||||
'ko',
|
||||
'pt-PT',
|
||||
'pt-BR',
|
||||
'pt-PT',
|
||||
'ru',
|
||||
'tr-TR',
|
||||
'zh-CN',
|
||||
] as const;
|
||||
|
@ -61,8 +63,9 @@ const resource: Resource = {
|
|||
es,
|
||||
fr,
|
||||
ko,
|
||||
'pt-PT': ptPT,
|
||||
'pt-BR': ptBR,
|
||||
'pt-PT': ptPT,
|
||||
ru,
|
||||
'tr-TR': trTR,
|
||||
'zh-CN': zhCN,
|
||||
ja,
|
||||
|
|
13
packages/phrases/src/locales/ru/errors/auth.ts
Normal file
13
packages/phrases/src/locales/ru/errors/auth.ts
Normal file
|
@ -0,0 +1,13 @@
|
|||
const auth = {
|
||||
authorization_header_missing: 'Отсутствует заголовок авторизации.',
|
||||
authorization_token_type_not_supported: 'Тип авторизации не поддерживается.',
|
||||
unauthorized: 'Не авторизованы. Пожалуйста, проверьте учетные данные и его область действия.',
|
||||
forbidden: 'Запрещено. Пожалуйста, проверьте свои роли и разрешения пользователей.',
|
||||
expected_role_not_found:
|
||||
'Ожидаемая роль не найдена. Пожалуйста, проверьте свои роли и разрешения пользователей.',
|
||||
jwt_sub_missing: 'Отсутствует `sub` в JWT.',
|
||||
require_re_authentication:
|
||||
'Для выполнения защищенного действия требуется повторная аутентификация.',
|
||||
};
|
||||
|
||||
export default auth;
|
37
packages/phrases/src/locales/ru/errors/connector.ts
Normal file
37
packages/phrases/src/locales/ru/errors/connector.ts
Normal file
|
@ -0,0 +1,37 @@
|
|||
const connector = {
|
||||
general: 'Ошибка произошла в коннекторе: {{errorDescription}}',
|
||||
not_found: 'Не найден доступный коннектор для типа: {{type}}.',
|
||||
not_enabled: 'Коннектор не включен.',
|
||||
invalid_metadata: 'Метаданные коннектора недействительны.',
|
||||
invalid_config_guard: 'Защита конфигурации коннектора недействительна.',
|
||||
unexpected_type: 'Тип коннектора неожиданный.',
|
||||
invalid_request_parameters: 'Запрос содержит неверный входной параметр (ы).',
|
||||
insufficient_request_parameters: 'В запросе может не хватать некоторых входных параметров.',
|
||||
invalid_config: 'Конфигурация коннектора недействительна.',
|
||||
invalid_response: 'Ответ коннектора недействителен.',
|
||||
template_not_found: 'Невозможно найти правильный шаблон в конфигурации коннектора.',
|
||||
not_implemented: '{{method}}: еще не реализован.',
|
||||
social_invalid_access_token: 'Токен доступа коннектора недействителен.',
|
||||
invalid_auth_code: 'Код аутентификации коннектора недействителен.',
|
||||
social_invalid_id_token: 'Токен идентификатора коннектора недействителен.',
|
||||
authorization_failed: 'Процесс авторизации пользователя неудачный.',
|
||||
social_auth_code_invalid: 'Не удалось получить токен доступа, проверьте код авторизации.',
|
||||
more_than_one_sms: 'Количество SMS-коннекторов больше 1.',
|
||||
more_than_one_email: 'Количество email-коннекторов больше 1.',
|
||||
more_than_one_connector_factory:
|
||||
'Обнаружено несколько фабрик коннекторов (с идентификаторами {{connectorIds}}), можно удалить ненужные.',
|
||||
db_connector_type_mismatch: 'В базе данных есть коннектор, не соответствующий типу.',
|
||||
not_found_with_connector_id:
|
||||
'Не удается найти коннектор с заданным стандартным идентификатором коннектора.',
|
||||
multiple_instances_not_supported:
|
||||
'Нельзя создавать несколько экземпляров с выбранным стандартным коннектором.',
|
||||
invalid_type_for_syncing_profile:
|
||||
'Вы можете синхронизировать профиль пользователя только с социальными коннекторами.',
|
||||
can_not_modify_target: 'Цель коннектора не может быть изменена.',
|
||||
should_specify_target: "Вы должны указать 'target'.",
|
||||
multiple_target_with_same_platform:
|
||||
'Вы не можете иметь несколько социальных коннекторов с одной и той же целью и платформой.',
|
||||
cannot_overwrite_metadata_for_non_standard_connector:
|
||||
'Метаданные этого коннектора не могут быть перезаписаны.',
|
||||
};
|
||||
export default connector;
|
8
packages/phrases/src/locales/ru/errors/entity.ts
Normal file
8
packages/phrases/src/locales/ru/errors/entity.ts
Normal file
|
@ -0,0 +1,8 @@
|
|||
const entity = {
|
||||
create_failed: 'Не удалось создать {{name}}.',
|
||||
not_exists: '{{name}} не существует.',
|
||||
not_exists_with_id: '{{name}} с ID `{{id}}` не существует.',
|
||||
not_found: 'Ресурс не существует.',
|
||||
};
|
||||
|
||||
export default entity;
|
9
packages/phrases/src/locales/ru/errors/guard.ts
Normal file
9
packages/phrases/src/locales/ru/errors/guard.ts
Normal file
|
@ -0,0 +1,9 @@
|
|||
const guard = {
|
||||
invalid_input: 'Запрос {{type}} неверный.',
|
||||
invalid_pagination: 'Значение разбиения на страницы неверно.',
|
||||
can_not_get_tenant_id: 'Невозможно получить идентификатор арендатора из запроса.',
|
||||
file_size_exceeded: 'Превышен размер файла.',
|
||||
mime_type_not_allowed: 'MIME-тип не разрешен.',
|
||||
};
|
||||
|
||||
export default guard;
|
39
packages/phrases/src/locales/ru/errors/index.ts
Normal file
39
packages/phrases/src/locales/ru/errors/index.ts
Normal file
|
@ -0,0 +1,39 @@
|
|||
import auth from './auth.js';
|
||||
import connector from './connector.js';
|
||||
import entity from './entity.js';
|
||||
import guard from './guard.js';
|
||||
import localization from './localization.js';
|
||||
import log from './log.js';
|
||||
import oidc from './oidc.js';
|
||||
import password from './password.js';
|
||||
import request from './request.js';
|
||||
import role from './role.js';
|
||||
import scope from './scope.js';
|
||||
import session from './session.js';
|
||||
import sign_in_experiences from './sign-in-experiences.js';
|
||||
import storage from './storage.js';
|
||||
import swagger from './swagger.js';
|
||||
import user from './user.js';
|
||||
import verification_code from './verification-code.js';
|
||||
|
||||
const errors = {
|
||||
request,
|
||||
auth,
|
||||
guard,
|
||||
oidc,
|
||||
user,
|
||||
password,
|
||||
session,
|
||||
connector,
|
||||
verification_code,
|
||||
sign_in_experiences,
|
||||
localization,
|
||||
swagger,
|
||||
entity,
|
||||
log,
|
||||
role,
|
||||
scope,
|
||||
storage,
|
||||
};
|
||||
|
||||
export default errors;
|
8
packages/phrases/src/locales/ru/errors/localization.ts
Normal file
8
packages/phrases/src/locales/ru/errors/localization.ts
Normal file
|
@ -0,0 +1,8 @@
|
|||
const localization = {
|
||||
cannot_delete_default_language:
|
||||
'{{languageTag}} установлен как язык по умолчанию и не может быть удален.',
|
||||
invalid_translation_structure:
|
||||
'Неверная структура данных. Пожалуйста, проверьте ввод и повторите попытку.',
|
||||
};
|
||||
|
||||
export default localization;
|
5
packages/phrases/src/locales/ru/errors/log.ts
Normal file
5
packages/phrases/src/locales/ru/errors/log.ts
Normal file
|
@ -0,0 +1,5 @@
|
|||
const log = {
|
||||
invalid_type: 'Тип журнала недействительный.',
|
||||
};
|
||||
|
||||
export default log;
|
20
packages/phrases/src/locales/ru/errors/oidc.ts
Normal file
20
packages/phrases/src/locales/ru/errors/oidc.ts
Normal file
|
@ -0,0 +1,20 @@
|
|||
const oidc = {
|
||||
aborted: 'Конечный пользователь прервал взаимодействие.',
|
||||
invalid_scope: 'Scope {{scope}} не поддерживается.',
|
||||
invalid_scope_plural: 'Scope {{scopes}} не поддерживаются.',
|
||||
invalid_token: 'Недействительный токен.',
|
||||
invalid_client_metadata: 'Недопустимые метаданные клиента.',
|
||||
insufficient_scope: 'Отсутствует токен доступа для запрошенного scope {{scopes}}.',
|
||||
invalid_request: 'Недопустимый запрос.',
|
||||
invalid_grant: 'Недопустимый запрос на предоставление прав.',
|
||||
invalid_redirect_uri:
|
||||
'redirect_uri не соответствует ни одному зарегистрированному redirect_uris клиента.',
|
||||
access_denied: 'Доступ запрещен.',
|
||||
invalid_target: 'Недопустимый указатель ресурса.',
|
||||
unsupported_grant_type: 'Запрошенный grant_type не поддерживается.',
|
||||
unsupported_response_mode: 'Запрошенный response_mode не поддерживается.',
|
||||
unsupported_response_type: 'Запрошенный response_type не поддерживается.',
|
||||
provider_error: 'Внутренняя ошибка OIDC: {{message}}.',
|
||||
};
|
||||
|
||||
export default oidc;
|
6
packages/phrases/src/locales/ru/errors/password.ts
Normal file
6
packages/phrases/src/locales/ru/errors/password.ts
Normal file
|
@ -0,0 +1,6 @@
|
|||
const password = {
|
||||
unsupported_encryption_method: 'Метод шифрования {{name}} не поддерживается.',
|
||||
pepper_not_found: 'Не найден пепер пароля. Пожалуйста, проверьте ваши основные envs.',
|
||||
};
|
||||
|
||||
export default password;
|
6
packages/phrases/src/locales/ru/errors/request.ts
Normal file
6
packages/phrases/src/locales/ru/errors/request.ts
Normal file
|
@ -0,0 +1,6 @@
|
|||
const request = {
|
||||
invalid_input: 'Неверный ввод. {{details}}',
|
||||
general: 'Произошла ошибка запроса.',
|
||||
};
|
||||
|
||||
export default request;
|
11
packages/phrases/src/locales/ru/errors/role.ts
Normal file
11
packages/phrases/src/locales/ru/errors/role.ts
Normal file
|
@ -0,0 +1,11 @@
|
|||
const role = {
|
||||
name_in_use: 'Это имя роли {{name}} уже используется',
|
||||
scope_exists: 'Идентификатор области действия {{scopeId}} уже был добавлен в эту роль',
|
||||
user_exists: 'Идентификатор пользователя {{userId}} уже был добавлен в эту роль',
|
||||
default_role_missing:
|
||||
'Некоторые имена ролей по умолчанию отсутствуют в базе данных, пожалуйста, убедитесь в том, что сначала создали роли',
|
||||
internal_role_violation:
|
||||
'Возможно, вы пытаетесь обновить или удалить внутреннюю роль, что запрещено Logto. Если вы создаете новую роль, попробуйте другое имя, которое не начинается с "#internal:".',
|
||||
};
|
||||
|
||||
export default role;
|
6
packages/phrases/src/locales/ru/errors/scope.ts
Normal file
6
packages/phrases/src/locales/ru/errors/scope.ts
Normal file
|
@ -0,0 +1,6 @@
|
|||
const scope = {
|
||||
name_exists: 'Имя области {{name}} уже используется',
|
||||
name_with_space: 'Имя области не может содержать пробелы.',
|
||||
};
|
||||
|
||||
export default scope;
|
24
packages/phrases/src/locales/ru/errors/session.ts
Normal file
24
packages/phrases/src/locales/ru/errors/session.ts
Normal file
|
@ -0,0 +1,24 @@
|
|||
const session = {
|
||||
not_found: 'Сессия не найдена. Вернитесь и войдите в систему снова.',
|
||||
invalid_credentials: 'Неправильный аккаунт или пароль. Проверьте ввод.',
|
||||
invalid_sign_in_method: 'Текущий метод входа в систему недоступен.',
|
||||
invalid_connector_id: 'Не удалось найти доступный коннектор с идентификатором {{connectorId}}.',
|
||||
insufficient_info: 'Недостаточно информации для входа в систему.',
|
||||
connector_id_mismatch: 'Идентификатор коннектора не соответствует записи сессии.',
|
||||
connector_session_not_found: 'Сессия коннектора не найдена. Вернитесь и войдите в систему снова.',
|
||||
verification_session_not_found:
|
||||
'Верификация не прошла успешно. Перезапустите процесс верификации и попробуйте еще раз.',
|
||||
verification_expired:
|
||||
'Соединение истекло. Повторите верификацию, чтобы обеспечить безопасность вашей учетной записи.',
|
||||
unauthorized: 'Сначала войдите в систему.',
|
||||
unsupported_prompt_name: 'Неподдерживаемое имя подсказки.',
|
||||
forgot_password_not_enabled: 'Забыли пароль не включен.',
|
||||
verification_failed:
|
||||
'Верификация не прошла успешно. Перезапустите процесс верификации и попробуйте еще раз.',
|
||||
connector_validation_session_not_found: 'Сеанс коннектора для проверки токена не найден.',
|
||||
identifier_not_found:
|
||||
'Идентификатор пользователя не найден. Вернитесь и войдите в систему снова.',
|
||||
interaction_not_found: 'Сессия взаимодействия не найдена. Вернитесь и начните сессию заново.',
|
||||
};
|
||||
|
||||
export default session;
|
|
@ -0,0 +1,23 @@
|
|||
const sign_in_experiences = {
|
||||
empty_content_url_of_terms_of_use:
|
||||
'Пустой URL-адрес контента "Условия использования". Пожалуйста, добавьте URL-адрес контента, если "Условия использования" включены.',
|
||||
empty_social_connectors:
|
||||
'Пустые социальные коннекторы. Пожалуйста, добавьте включенные социальные коннекторы, когда включен метод входа в систему через социальные сети.',
|
||||
enabled_connector_not_found: 'Включенный коннектор {{type}} не найден.',
|
||||
not_one_and_only_one_primary_sign_in_method:
|
||||
'Должен быть один и только один первичный метод входа в систему. Пожалуйста, проверьте свой ввод.',
|
||||
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: 'Вы должны выбрать как минимум один фактор аутентификации.',
|
||||
};
|
||||
|
||||
export default sign_in_experiences;
|
7
packages/phrases/src/locales/ru/errors/storage.ts
Normal file
7
packages/phrases/src/locales/ru/errors/storage.ts
Normal file
|
@ -0,0 +1,7 @@
|
|||
const storage = {
|
||||
not_configured: 'Провайдер хранилища не настроен.',
|
||||
missing_parameter: 'Отсутствует параметр {{parameter}} для провайдера хранилища.',
|
||||
upload_error: 'Не удалось загрузить файл в провайдер хранилища.',
|
||||
};
|
||||
|
||||
export default storage;
|
7
packages/phrases/src/locales/ru/errors/swagger.ts
Normal file
7
packages/phrases/src/locales/ru/errors/swagger.ts
Normal file
|
@ -0,0 +1,7 @@
|
|||
const swagger = {
|
||||
invalid_zod_type: 'Неверный тип Zod. Пожалуйста, проверьте конфигурацию защиты маршрута.',
|
||||
not_supported_zod_type_for_params:
|
||||
'Неподдерживаемый тип Zod для параметров. Пожалуйста, проверьте конфигурацию защиты маршрута.',
|
||||
};
|
||||
|
||||
export default swagger;
|
34
packages/phrases/src/locales/ru/errors/user.ts
Normal file
34
packages/phrases/src/locales/ru/errors/user.ts
Normal file
|
@ -0,0 +1,34 @@
|
|||
const user = {
|
||||
username_already_in_use: 'Это имя пользователя уже используется.',
|
||||
email_already_in_use: 'Этот адрес электронной почты связан с существующей учетной записью.',
|
||||
phone_already_in_use: 'Этот номер телефона связан с существующей учетной записью.',
|
||||
invalid_email: 'Некорректный адрес электронной почты.',
|
||||
invalid_phone: 'Некорректный номер телефона.',
|
||||
email_not_exist: 'Адрес электронной почты не зарегистрирован.',
|
||||
phone_not_exist: 'Номер телефона не зарегистрирован.',
|
||||
identity_not_exist: 'Учетная запись социальной сети не зарегистрирована.',
|
||||
identity_already_in_use:
|
||||
'Учетная запись в социальной сети связана с существующей учетной записью.',
|
||||
social_account_exists_in_profile: 'Вы уже связали эту учетную запись с социальной сетью.',
|
||||
cannot_delete_self: 'Вы не можете удалить свою собственную учетную запись.',
|
||||
sign_up_method_not_enabled: 'Этот метод регистрации не включен.',
|
||||
sign_in_method_not_enabled: 'Этот метод входа не включен.',
|
||||
same_password: 'Новый пароль не может совпадать со старым паролем.',
|
||||
password_required_in_profile: 'Вы должны установить пароль перед входом в систему.',
|
||||
new_password_required_in_profile: 'Вы должны установить новый пароль.',
|
||||
password_exists_in_profile: 'Пароль уже существует в вашем профиле.',
|
||||
username_required_in_profile: 'Вы должны установить имя пользователя перед входом в систему.',
|
||||
username_exists_in_profile: 'Имя пользователя уже существует в вашем профиле.',
|
||||
email_required_in_profile: 'Вы должны добавить адрес электронной почты перед входом в систему.',
|
||||
email_exists_in_profile: 'Ваш профиль уже связан с адресом электронной почты.',
|
||||
phone_required_in_profile: 'Вы должны добавить номер телефона перед входом в систему.',
|
||||
phone_exists_in_profile: 'Ваш профиль уже связан с номером телефона.',
|
||||
email_or_phone_required_in_profile:
|
||||
'Вы должны добавить адрес электронной почты или номер телефона перед входом в систему.',
|
||||
suspended: 'Эта учетная запись приостановлена.',
|
||||
user_not_exist: 'Пользователя с {{ identifier }} не существует.',
|
||||
missing_profile: 'Вы должны предоставить дополнительную информацию перед входом в систему.',
|
||||
role_exists: 'Идентификатор роли {{roleId}} уже добавлен в этого пользователя',
|
||||
};
|
||||
|
||||
export default user;
|
12
packages/phrases/src/locales/ru/errors/verification-code.ts
Normal file
12
packages/phrases/src/locales/ru/errors/verification-code.ts
Normal file
|
@ -0,0 +1,12 @@
|
|||
const verification_code = {
|
||||
phone_email_empty: 'Оба поля "телефон" и "эл. почта" пустые.',
|
||||
not_found: 'Код верификации не найден. Пожалуйста, сначала отправьте код верификации.',
|
||||
phone_mismatch: 'Телефон не соответствует. Пожалуйста, запросите новый код верификации.',
|
||||
email_mismatch: 'Эл. почта не соответствует. Пожалуйста, запросите новый код верификации.',
|
||||
code_mismatch: 'Недействительный код верификации.',
|
||||
expired: 'Срок действия кода верификации истек. Пожалуйста, запросите новый код верификации.',
|
||||
exceed_max_try:
|
||||
'Превышено ограничение на количество попыток ввода кода верификации. Пожалуйста, запросите новый код верификации.',
|
||||
};
|
||||
|
||||
export default verification_code;
|
11
packages/phrases/src/locales/ru/index.ts
Normal file
11
packages/phrases/src/locales/ru/index.ts
Normal file
|
@ -0,0 +1,11 @@
|
|||
import { type LocalePhrase } from '../../types.js';
|
||||
|
||||
import errors from './errors/index.js';
|
||||
import translation from './translation/index.js';
|
||||
|
||||
const ru: LocalePhrase = Object.freeze({
|
||||
translation,
|
||||
errors,
|
||||
});
|
||||
|
||||
export default ru;
|
|
@ -0,0 +1,32 @@
|
|||
const api_resource_details = {
|
||||
page_title: 'Детали ресурса API',
|
||||
back_to_api_resources: 'Вернуться к Ресурсам API',
|
||||
settings_tab: 'Настройки',
|
||||
permissions_tab: 'Разрешения',
|
||||
settings: 'Настройки',
|
||||
settings_description:
|
||||
'Ресурсы API, также известные как индикаторы ресурсов, указывают целевые службы или ресурсы, запрашиваемые обычно в виде переменной формата URI, представляющей идентификатор ресурса.',
|
||||
token_expiration_time_in_seconds: 'Время истечения токена (в секундах)',
|
||||
token_expiration_time_in_seconds_placeholder: 'Введите время истечения вашего токена',
|
||||
delete_description:
|
||||
'Это действие нельзя отменить. Оно навсегда удалит ресурс API. Пожалуйста, введите имя ресурса API <span> {{имя}} </span>, чтобы подтвердить.',
|
||||
enter_your_api_resource_name: 'Введите название своего ресурса API',
|
||||
api_resource_deleted: 'Ресурс API {{name}} был успешно удален',
|
||||
permission: {
|
||||
create_button: 'Создать разрешение',
|
||||
create_title: 'Создать разрешение',
|
||||
create_subtitle: 'Определите необходимые разрешения (области) для этого API.',
|
||||
confirm_create: 'Создать разрешение',
|
||||
name: 'Название разрешения',
|
||||
name_placeholder: 'read:resource',
|
||||
forbidden_space_in_name: 'Название разрешения не должно содержать пробелов.',
|
||||
description: 'Описание',
|
||||
description_placeholder: 'Можно читать ресурсы',
|
||||
permission_created: 'Разрешение {{название}} создано успешно',
|
||||
delete_description:
|
||||
'Если это разрешение будет удалено, пользователь, у которого оно было, потеряет доступ, предоставленный им.',
|
||||
deleted: 'Разрешение "{{название}}" успешно удалено!',
|
||||
},
|
||||
};
|
||||
|
||||
export default api_resource_details;
|
|
@ -0,0 +1,15 @@
|
|||
const api_resources = {
|
||||
page_title: 'Ресурсы API',
|
||||
title: 'Ресурсы API',
|
||||
subtitle: 'Определите API, которые могут использовать ваши авторизованные приложения',
|
||||
create: 'Создать ресурс API',
|
||||
api_name: 'Название API',
|
||||
api_name_placeholder: 'Введите название вашего API',
|
||||
api_identifier: 'Идентификатор API',
|
||||
api_identifier_tip:
|
||||
'Уникальный идентификатор для ресурса API. Он должен быть абсолютным URI и не иметь фрагмента (#). Равен параметру <a>resource</a> в OAuth 2.0.',
|
||||
api_resource_created: 'Ресурс API {{name}} был успешно создан',
|
||||
api_identifier_placeholder: 'https://your-api-identifier/',
|
||||
};
|
||||
|
||||
export default api_resources;
|
|
@ -0,0 +1,51 @@
|
|||
const application_details = {
|
||||
page_title: 'Детали приложения',
|
||||
back_to_applications: 'Вернуться к приложениям',
|
||||
check_guide: 'Проверить гид',
|
||||
settings: 'Настройки',
|
||||
settings_description:
|
||||
'Приложения используются для идентификации ваших приложений в Logto для OIDC, опыта входа, аудита и т. Д.',
|
||||
advanced_settings: 'Расширенные настройки',
|
||||
advanced_settings_description:
|
||||
'Расширенные настройки включают связанные с OIDC термины. Вы можете проверить конечную точку токена для получения дополнительной информации.',
|
||||
application_name: 'Название приложения',
|
||||
application_name_placeholder: 'Мое приложение',
|
||||
description: 'Описание',
|
||||
description_placeholder: 'Введите описание своего приложения',
|
||||
authorization_endpoint: 'Конечная точка авторизации',
|
||||
authorization_endpoint_tip:
|
||||
'Конечная точка для аутентификации и авторизации. Он используется для аутентификации <a> OpenID Connect </a>.',
|
||||
application_id: 'ID приложения',
|
||||
application_id_tip:
|
||||
'Уникальный идентификатор приложения, обычно генерируемый Logto. Он также означает «<a> client_id </a>» в OpenID Connect.',
|
||||
application_secret: 'Секрет приложения',
|
||||
redirect_uri: 'URI перенаправления',
|
||||
redirect_uris: 'URI перенаправления',
|
||||
redirect_uri_placeholder: 'https://ваш.вебсайт.com/приложение',
|
||||
redirect_uri_placeholder_native: 'io.logto://callback',
|
||||
redirect_uri_tip:
|
||||
'URI перенаправляется после входа пользователя (успешного или нет). См. OpenID Connect <a> AuthRequest </a> для получения дополнительной информации.',
|
||||
post_sign_out_redirect_uri: 'URI перенаправления после выхода из системы',
|
||||
post_sign_out_redirect_uris: 'URI перенаправления после выхода из системы',
|
||||
post_sign_out_redirect_uri_placeholder: 'https://ваш.вебсайт.com/домашняя страница',
|
||||
post_sign_out_redirect_uri_tip:
|
||||
'URI перенаправляется после выхода пользователя (необязательно). Это может не иметь практического эффекта в некоторых типах приложений.',
|
||||
cors_allowed_origins: 'Разрешенные источники CORS',
|
||||
cors_allowed_origins_placeholder: 'https://ваш.вебсайт.com',
|
||||
cors_allowed_origins_tip:
|
||||
'По умолчанию разрешены все источники URI перенаправления. Обычно для этого поля не требуется никаких действий. См. <a> Документацию MDN </a> для получения подробной информации.',
|
||||
id_token_expiration: 'Истечение срока действия токена ID',
|
||||
refresh_token_expiration: 'Истечение срока действия обновления токена',
|
||||
token_endpoint: 'Конечная точка токена',
|
||||
user_info_endpoint: 'Конечная точка информации о пользователе',
|
||||
enable_admin_access: 'Включить доступ администратора',
|
||||
enable_admin_access_label:
|
||||
'Включить или отключить доступ к API управления. После включения вы можете использовать токены доступа для вызова API управления от имени этого приложения.',
|
||||
delete_description:
|
||||
'Это действие нельзя отменить. Оно навсегда удалит приложение. Введите название приложения <span> {{name}} </span>, чтобы подтвердить.',
|
||||
enter_your_application_name: 'Введите название своего приложения',
|
||||
application_deleted: 'Приложение {{name}} успешно удалено',
|
||||
redirect_uri_required: 'Вы должны ввести по крайней мере один URI перенаправления',
|
||||
};
|
||||
|
||||
export default application_details;
|
|
@ -0,0 +1,53 @@
|
|||
const applications = {
|
||||
page_title: 'Заявки',
|
||||
title: 'Заявки',
|
||||
subtitle:
|
||||
'Настроить аутентификацию Logto для вашего нативного, одностраничного, машина-машина или традиционного приложения.',
|
||||
create: 'Создать заявку',
|
||||
application_name: 'Название приложения',
|
||||
application_name_placeholder: 'Мое приложение',
|
||||
application_description: 'Описание приложения',
|
||||
application_description_placeholder: 'Введите описание вашего приложения',
|
||||
select_application_type: 'Выбрать тип приложения',
|
||||
no_application_type_selected: 'Вы еще не выбрали тип приложения',
|
||||
application_created:
|
||||
'Приложение {{name}} успешно создано! \nТеперь завершите настройку приложения.',
|
||||
app_id: 'ID приложения',
|
||||
type: {
|
||||
native: {
|
||||
title: 'Нативное приложение',
|
||||
subtitle: 'Приложение, работающее в нативной среде',
|
||||
description: 'Например, приложение для iOS, приложение для Android',
|
||||
},
|
||||
spa: {
|
||||
title: 'Одностраничное приложение',
|
||||
subtitle: 'Приложение, работающее в веб-браузере и динамически обновляющее данные на месте',
|
||||
description: 'Например, приложение React DOM, приложение Vue',
|
||||
},
|
||||
traditional: {
|
||||
title: 'Традиционный веб',
|
||||
subtitle: 'Приложение, которое отображает и обновляет страницы только веб-сервером',
|
||||
description: 'Например, Next.js, PHP',
|
||||
},
|
||||
machine_to_machine: {
|
||||
title: 'Машина-машина',
|
||||
subtitle: 'Приложение (обычно сервис), которое напрямую общается с ресурсами',
|
||||
description: 'Например, backend-сервис',
|
||||
},
|
||||
},
|
||||
guide: {
|
||||
get_sample_file: 'Получить образец',
|
||||
header_description:
|
||||
'Следуйте пошаговому руководству, чтобы интегрировать ваше приложение, или нажимите правильную кнопку, чтобы получить наш образец проекта',
|
||||
title: 'Приложение успешно создано',
|
||||
subtitle:
|
||||
'Теперь следуйте инструкциям ниже, чтобы завершить настройку приложения. Выберите тип SDK, чтобы продолжить.',
|
||||
description_by_sdk:
|
||||
'Это быстрое руководство демонстрирует, как интегрировать Logto в {{sdk}} приложение',
|
||||
},
|
||||
placeholder_title: 'Выберите тип приложения, чтобы продолжить',
|
||||
placeholder_description:
|
||||
'Logto использует сущность приложения для OIDC для выполнения задач, таких как идентификация ваших приложений, управление входом в систему и создание журналов аудита.',
|
||||
};
|
||||
|
||||
export default applications;
|
|
@ -0,0 +1,120 @@
|
|||
const cloud = {
|
||||
welcome: {
|
||||
page_title: 'Добро пожаловать',
|
||||
title:
|
||||
'Добро пожаловать, и давайте создадим свой собственный предварительный просмотр облака Logto',
|
||||
description:
|
||||
'Независимо от того, являетесь ли вы пользователем открытого исходного кода или облачным пользователем, ознакомьтесь с витриной и ощутите полную ценность Logto. Предварительный просмотр облака также служит предварительной версией облака Logto.',
|
||||
project_field: 'Я использую Logto для',
|
||||
project_options: {
|
||||
personal: 'Личного проекта',
|
||||
company: 'Компании',
|
||||
},
|
||||
deployment_type_field: 'Предпочитаете открытый исходный код или облако?',
|
||||
deployment_type_options: {
|
||||
open_source: 'Открытый Исходный Код',
|
||||
cloud: 'Облачный',
|
||||
},
|
||||
},
|
||||
about: {
|
||||
page_title: 'Немного о вас',
|
||||
title: 'Немного о вас',
|
||||
description:
|
||||
'Сделайте свой опыт работы с Logto уникальным для вас, узнав вас получше. Ваша информация надежно защищена.',
|
||||
title_field: 'Твоя должность',
|
||||
title_options: {
|
||||
developer: 'Разработчик',
|
||||
team_lead: 'Лидер команды',
|
||||
ceo: 'Генеральный директор',
|
||||
cto: 'Технический директор',
|
||||
product: 'Продукт',
|
||||
others: 'Другие',
|
||||
},
|
||||
company_name_field: 'Название компании',
|
||||
company_name_placeholder: 'Acme.co',
|
||||
company_size_field: 'Какой у вас размер компании?',
|
||||
company_options: {
|
||||
size_1: '1',
|
||||
size_2_49: '2-49',
|
||||
size_50_199: '50-199',
|
||||
size_200_999: '200-999',
|
||||
size_1000_plus: '1000+',
|
||||
},
|
||||
reason_field: 'Я подписываюсь потому, что',
|
||||
reason_options: {
|
||||
passwordless:
|
||||
'Ищу безопасную аутентификацию без пароля и набор компонентов пользовательского интерфейса',
|
||||
efficiency: 'Пытаюсь найти готовую инфраструктуру идентификации',
|
||||
access_control: 'Хочу контролировать доступ пользователей на основе ролей и обязанностей',
|
||||
multi_tenancy: 'Ищу стратегии для продукта с несколькими арендаторами',
|
||||
enterprise: 'Ищу решения для одиночного входа (SSO) для компаний',
|
||||
others: 'Другие',
|
||||
},
|
||||
},
|
||||
congrats: {
|
||||
page_title: 'Заработайте бонусы раннего доступа',
|
||||
title: 'Отличные новости! Вы имеете право на ранний доступ к облаку Logto!',
|
||||
description:
|
||||
'Не упустите возможность бесплатно пользоваться Logto Cloud в течение <strong>60 дней</strong> после его официального запуска! Свяжитесь с командой Logto, чтобы узнать больше.',
|
||||
check_out_button: 'Посмотреть предварительный просмотр в режиме реального времени',
|
||||
reserve_title: 'Запишитесь на встречу с командой Logto',
|
||||
reserve_description: 'Кредит действителен только после подтверждения.',
|
||||
book_button: 'Записаться',
|
||||
join_description:
|
||||
'Присоединяйтесь к нашей общедоступной <a>{{link}}</a>, чтобы связаться и пообщаться с другими разработчиками.',
|
||||
discord_link: 'канал Discord',
|
||||
enter_admin_console: 'Войти в предварительный просмотр облака Logto',
|
||||
},
|
||||
gift: {
|
||||
title: 'Бесплатно пользуйтесь Logto Cloud в течение 60 дней. Присоединяйтесь к лидерам сейчас!',
|
||||
description:
|
||||
'Запланируйте индивидуальную встречу с нашей командой для получения раннего доступа.',
|
||||
reserve_title: 'Запишитесь на встречу с командой Logto',
|
||||
reserve_description: 'Кредит действителен только после оценки.',
|
||||
book_button: 'Записаться',
|
||||
},
|
||||
sie: {
|
||||
page_title: 'Настройка опыта входа',
|
||||
title: 'Давайте сначала легко настроим ваш опыт входа',
|
||||
inspire: {
|
||||
title: 'Создайте убедительные примеры',
|
||||
description:
|
||||
'Чувствуете неуверенность в опыте входа? Просто нажмите «Вдохновить меня» и позвольте волшебству совершиться!',
|
||||
inspire_me: 'Вдохнови меня',
|
||||
},
|
||||
logo_field: 'Логотип приложения',
|
||||
color_field: 'Цвет бренда',
|
||||
identifier_field: 'Идентификатор',
|
||||
identifier_options: {
|
||||
email: 'Электронная почта',
|
||||
phone: 'Номер телефона',
|
||||
user_name: 'Имя пользователя',
|
||||
},
|
||||
authn_field: 'Аутентификация',
|
||||
authn_options: {
|
||||
password: 'Пароль',
|
||||
verification_code: 'Код подтверждения',
|
||||
},
|
||||
social_field: 'Вход через социальную сеть',
|
||||
finish_and_done: 'Готово',
|
||||
preview: {
|
||||
mobile_tab: 'Мобильный',
|
||||
web_tab: 'Веб',
|
||||
},
|
||||
connectors: {
|
||||
unlocked_later: 'Разблокируется позже',
|
||||
unlocked_later_tip:
|
||||
'После того, как вы завершите процесс ввода в эксплуатацию и войдете в продукт, вы получите доступ к еще большему количеству методов входа через социальные сети.',
|
||||
notice:
|
||||
'Пожалуйста, не используйте демонстрационный коннектор для производственных целей. После тестирования удалите демонстрационный коннектор и настройте свой собственный коннектор с вашими учетными данными.',
|
||||
},
|
||||
},
|
||||
broadcast: '📣 Вы в облаке Logto (предварительный просмотр)',
|
||||
socialCallback: {
|
||||
title: 'Вход выполнен успешно',
|
||||
description:
|
||||
'Вы успешно вошли, используя свою учетную запись в социальной сети. Чтобы обеспечить безпроблемную интеграцию и доступ ко всем функциям Logto, рекомендуем настроить свой собственный социальный коннектор.',
|
||||
},
|
||||
};
|
||||
|
||||
export default cloud;
|
|
@ -0,0 +1,15 @@
|
|||
const components = {
|
||||
uploader: {
|
||||
action_description: 'Перетащите или выберите файл',
|
||||
uploading: 'Загрузка...',
|
||||
image_limit:
|
||||
'Загрузите изображение размером менее {{size, number}} КБ, только {{extensions, list(style: narrow; type: conjunction;)}}.',
|
||||
error_upload: 'Что-то пошло не так. Загрузка файла не удалась.',
|
||||
error_file_size:
|
||||
'Размер файла слишком большой. Пожалуйста, загрузите файл размером менее {{size, number}} КБ.',
|
||||
error_file_type:
|
||||
'Тип файла не поддерживается. Допустимы только файлы типа {{extensions, list(style: narrow; type: conjunction;)}}.',
|
||||
},
|
||||
};
|
||||
|
||||
export default components;
|
|
@ -0,0 +1,35 @@
|
|||
const connector_details = {
|
||||
page_title: 'Детали подключения',
|
||||
back_to_connectors: 'Вернуться к подключениям',
|
||||
check_readme: 'Проверить README',
|
||||
settings: 'Общие настройки',
|
||||
settings_description:
|
||||
'Коннекторы играют критическую роль в Logto. С их помощью, Logto позволяет конечным пользователям использовать беспарольную регистрацию или вход и возможности входа с социальными аккаунтами.',
|
||||
parameter_configuration: 'Конфигурация параметра',
|
||||
test_connection: 'Тестовое соединение',
|
||||
save_error_empty_config: 'Пожалуйста, введите конфигурацию',
|
||||
send: 'Отправить',
|
||||
send_error_invalid_format: 'Неверный ввод',
|
||||
edit_config_label: 'Введите ваш JSON здесь',
|
||||
test_email_sender: 'Протестируйте ваш электронный коннектор',
|
||||
test_sms_sender: 'Протестируйте ваш SMS коннектор',
|
||||
test_email_placeholder: 'john.doe@example.com',
|
||||
test_sms_placeholder: '+1 555-123-4567',
|
||||
test_message_sent: 'Тестовое сообщение отправлено',
|
||||
test_sender_description:
|
||||
'Logto использует шаблон "Общий" для тестирования. Вы получите сообщение, если ваш коннектор правильно настроен.',
|
||||
options_change_email: 'Изменить электронный коннектор',
|
||||
options_change_sms: 'Изменить SMS коннектор',
|
||||
connector_deleted: 'Коннектор успешно удален',
|
||||
type_email: 'Электронный коннектор',
|
||||
type_sms: 'SMS коннектор',
|
||||
type_social: 'Социальный коннектор',
|
||||
in_used_social_deletion_description:
|
||||
'Этот коннектор используется в вашем опыте входа в систему. При удалении опыт входа в систему <name/> будет удален в настройках опыта входа в систему. Вы должны повторно настроить его, если решите добавить его обратно.',
|
||||
in_used_passwordless_deletion_description:
|
||||
'Этот {{name}} используется в вашем опыте входа в систему. При удалении опыт входа в систему не будет работать правильно, пока не будет решен конфликт. Вы должны повторно настроить его, если решите добавить его обратно.',
|
||||
deletion_description:
|
||||
'Вы удаляете этот коннектор. Он не может быть отменен, и вы должны повторно настроить его, если решите добавить его обратно.',
|
||||
};
|
||||
|
||||
export default connector_details;
|
|
@ -0,0 +1,90 @@
|
|||
const connectors = {
|
||||
page_title: 'Коннекторы',
|
||||
title: 'Коннекторы',
|
||||
subtitle: 'Настройте коннекторы, чтобы включить опыт без пароля и социального входа в систему',
|
||||
create: 'Добавить социальный коннектор',
|
||||
config_sie_notice: 'Вы настроили коннекторы. Убедитесь, что вы настроили их в <a>{{link}}</a>.',
|
||||
config_sie_link_text: 'опыте входа в систему',
|
||||
tab_email_sms: 'Коннекторы электронной почты и SMS',
|
||||
tab_social: 'Социальные коннекторы',
|
||||
connector_name: 'Имя коннектора',
|
||||
demo_tip:
|
||||
'Максимальное количество сообщений для этого демонстрационного коннектора ограничено 100 и не рекомендуется для развертывания в производственной среде.',
|
||||
social_demo_tip:
|
||||
'Демонстрационный коннектор предназначен исключительно для демонстрационных целей и не рекомендуется для развертывания в производственной среде.',
|
||||
connector_type: 'Тип',
|
||||
connector_status: 'Опыт входа в систему',
|
||||
connector_status_in_use: 'Используется',
|
||||
connector_status_not_in_use: 'Не используется',
|
||||
not_in_use_tip: {
|
||||
content:
|
||||
'Не используется означает, что ваш опыт входа в систему не использовал этот метод входа. <a>{{link}}</a>, чтобы добавить этот метод входа.',
|
||||
go_to_sie: 'Перейти к опыту входа в систему',
|
||||
},
|
||||
placeholder_title: 'Социальный коннектор',
|
||||
placeholder_description:
|
||||
'Logto предоставляет множество широко используемых коннекторов для входа через социальные сети, в то время как вы можете создать свой с помощью стандартных протоколов.',
|
||||
save_and_done: 'Сохранить и завершить',
|
||||
type: {
|
||||
email: 'Коннектор электронной почты',
|
||||
sms: 'Коннектор SMS',
|
||||
social: 'Социальный коннектор',
|
||||
},
|
||||
setup_title: {
|
||||
email: 'Настройка коннектора электронной почты',
|
||||
sms: 'Настройка коннектора SMS',
|
||||
social: 'Добавить социальный коннектор',
|
||||
},
|
||||
guide: {
|
||||
subtitle: 'Пошаговое руководство по настройке вашего коннектора',
|
||||
general_setting: 'Общие настройки',
|
||||
parameter_configuration: 'Конфигурация параметров',
|
||||
test_connection: 'Тестовое соединение',
|
||||
name: 'Имя для кнопки входа через социальные сети',
|
||||
name_placeholder: 'Введите имя для кнопки входа через социальные сети',
|
||||
name_tip:
|
||||
'Имя кнопки коннектора будет отображаться как "Продолжить с {{name}}". Будьте внимательны к длине названия, в случае, если оно станет слишком длинным.',
|
||||
logo: 'URL логотипа для кнопки входа через социальные сети',
|
||||
logo_placeholder: 'https://your.cdn.domain/logo.png',
|
||||
logo_tip:
|
||||
'Логотип будет отображаться на коннекторе. Получите публично доступную ссылку на изображение и вставьте ссылку сюда.',
|
||||
logo_dark: 'URL логотипа для кнопки входа через социальные сети (Темный режим)',
|
||||
logo_dark_placeholder: 'https://your.cdn.domain/logo.png',
|
||||
logo_dark_tip:
|
||||
'Установите логотип коннектора для темного режима после его включения в опыте входа в систему в Административной консоли.',
|
||||
logo_dark_collapse: 'Свернуть',
|
||||
logo_dark_show: 'Показать настройки логотипа для темного режима',
|
||||
target: 'Имя поставщика идентификации',
|
||||
target_placeholder: 'Введите имя поставщика идентификации коннектора',
|
||||
target_tip:
|
||||
'Значение «Название поставщика идентификации» может быть строкой уникального идентификатора, чтобы отличать ваших социальных пользователей. Эта настройка не может быть изменена после создания коннектора.',
|
||||
target_tooltip:
|
||||
'"Название поставщика идентификации" в социальных коннекторах Logto относится к "источнику" ваших социальных пользователей. В дизайне Logto мы не принимаем то же самое "название поставщика идентификации" для определенной платформы, чтобы избежать конфликтов. Вы должны быть очень внимательны, прежде чем добавлять коннектор, так как вы НЕ МОЖЕТЕ изменить его значение после создания. <a>Узнать больше.</a>',
|
||||
target_conflict:
|
||||
'Введенное имя поставщика идентификации совпадает с существующим коннектором <span>name</span>. Использование того же имени поставщика идентификации может вызвать неожиданное поведение входа в систему, когда пользователи могут получить доступ к одной учетной записи через два разных коннектора.',
|
||||
target_conflict_line2:
|
||||
'Если вы хотите заменить текущий коннектор на тот же поставщик идентификации и разрешить предыдущим пользователям войти без регистрации заново, удалите коннектор <span>name</span> и создайте новый с тем же «Названием поставщика идентификации».',
|
||||
target_conflict_line3:
|
||||
'Если вы хотите подключиться к другому поставщику идентификации, измените «Название поставщика идентификации» и продолжайте.',
|
||||
config: 'Введите свой JSON-конфиг',
|
||||
sync_profile: 'Синхронизировать информацию профиля',
|
||||
sync_profile_only_at_sign_up: 'Синхронизировать только при регистрации',
|
||||
sync_profile_each_sign_in: 'Всегда синхронизировать при каждом входе',
|
||||
sync_profile_tip:
|
||||
'Синхронизируйте базовый профиль из социального провайдера, такой как имена пользователей и их аватары.',
|
||||
callback_uri: 'URI обратного вызова',
|
||||
callback_uri_description:
|
||||
'Также называется URI перенаправления, это URI в Logto, на который пользователи будут отправлены после социальной авторизации. Скопируйте и вставьте его на странице настройки социального провайдера.',
|
||||
},
|
||||
platform: {
|
||||
universal: 'Универсальная',
|
||||
web: 'Web',
|
||||
native: 'Мобильное приложение',
|
||||
},
|
||||
add_multi_platform: 'поддерживает несколько платформ, выберите платформу для продолжения',
|
||||
drawer_title: 'Руководство Коннектора',
|
||||
drawer_subtitle: 'Следуйте инструкциям, чтобы интегрировать свой коннектор',
|
||||
unknown: 'Неизвестный коннектор',
|
||||
};
|
||||
|
||||
export default connectors;
|
|
@ -0,0 +1,24 @@
|
|||
const contact = {
|
||||
title: 'Связаться с нами',
|
||||
description:
|
||||
'Присоединяйтесь к нашему сообществу, чтобы оставлять отзывы, задавать вопросы и делиться своими мыслями с другими разработчиками',
|
||||
discord: {
|
||||
title: 'Канал Discord',
|
||||
description:
|
||||
'Присоединяйтесь к нашему общественному каналу, чтобы общаться с другими разработчиками',
|
||||
button: 'Присоединиться',
|
||||
},
|
||||
github: {
|
||||
title: 'GitHub',
|
||||
description: 'Создайте проблему и отправьте на GitHub',
|
||||
button: 'Открыть',
|
||||
},
|
||||
email: {
|
||||
title: 'Отправить электронное письмо',
|
||||
description:
|
||||
'Отправьте нам электронное письмо для получения дополнительной информации и помощи',
|
||||
button: 'Отправить',
|
||||
},
|
||||
};
|
||||
|
||||
export default contact;
|
|
@ -0,0 +1,24 @@
|
|||
const dashboard = {
|
||||
page_title: 'Dashboard',
|
||||
title: 'Dashboard',
|
||||
description: 'Получите обзор о производительности вашего приложения',
|
||||
total_users: 'Всего пользователей',
|
||||
total_users_tip: 'Всего пользователей',
|
||||
new_users_today: 'Новые пользователи сегодня',
|
||||
new_users_today_tip:
|
||||
'Количество новых пользователей, зарегистрировавшихся сегодня в вашем приложении',
|
||||
new_users_7_days: 'Новые пользователи за последние 7 дней',
|
||||
new_users_7_days_tip:
|
||||
'Количество новых пользователей, зарегистрировавшихся за последние 7 дней в вашем приложении',
|
||||
daily_active_users: 'Ежедневные активные пользователи',
|
||||
daily_active_users_tip:
|
||||
'Количество уникальных пользователей, обменивающих токены в вашем приложении сегодня',
|
||||
weekly_active_users: 'Еженедельные активные пользователи',
|
||||
weekly_active_users_tip:
|
||||
'Количество уникальных пользователей, обменивающих токены в вашем приложении за последние 7 дней',
|
||||
monthly_active_users: 'Ежемесячные активные пользователи',
|
||||
monthly_active_users_tip:
|
||||
'Количество уникальных пользователей, обменивающих токены в вашем приложении за последние 30 дней',
|
||||
};
|
||||
|
||||
export default dashboard;
|
|
@ -0,0 +1,25 @@
|
|||
const errors = {
|
||||
something_went_wrong: 'Упс! Что-то пошло не так.',
|
||||
page_not_found: 'Страница не найдена',
|
||||
unknown_server_error: 'Произошла неизвестная ошибка сервера',
|
||||
empty: 'Нет данных',
|
||||
missing_total_number: 'Не удалось найти Total-Number в заголовках ответа',
|
||||
invalid_uri_format: 'Неверный формат URI',
|
||||
invalid_origin_format: 'Неверный формат URI-оригинала',
|
||||
invalid_json_format: 'Неверный формат JSON',
|
||||
invalid_error_message_format: 'Неверный формат сообщения об ошибке.',
|
||||
required_field_missing: 'Пожалуйста, введите {{field}}',
|
||||
required_field_missing_plural: 'Вы должны ввести хотя бы одно {{field}}',
|
||||
more_details: 'Больше информации',
|
||||
username_pattern_error:
|
||||
'Имя пользователя должно состоять только из букв, цифр или подчеркивания и не должно начинаться с цифры.',
|
||||
password_pattern_error:
|
||||
'Пароль должен содержать не менее {{min}} символов и состоять из букв, цифр и символов.',
|
||||
insecure_contexts: 'Небезопасные контексты (нет HTTPS) не поддерживаются.',
|
||||
unexpected_error: 'Произошла непредвиденная ошибка.',
|
||||
not_found: '404 не найдено',
|
||||
create_internal_role_violation:
|
||||
'Вы создаете новую внутреннюю роль, что запрещено Logto. Попробуйте другое имя, которое не начинается с "#internal:".',
|
||||
};
|
||||
|
||||
export default errors;
|
|
@ -0,0 +1,55 @@
|
|||
const general = {
|
||||
placeholder: 'Заполнитель',
|
||||
skip: 'Пропустить',
|
||||
next: 'Следующий',
|
||||
back: 'Назад',
|
||||
retry: 'Попробуйте снова',
|
||||
done: 'Готово',
|
||||
search: 'Поиск',
|
||||
search_placeholder: 'Поиск',
|
||||
clear_result: 'Очистить результаты',
|
||||
save: 'Сохранить',
|
||||
save_changes: 'Сохранить изменения',
|
||||
saved: 'Сохранено!',
|
||||
discard: 'Отказаться',
|
||||
loading: 'Загрузка...',
|
||||
redirecting: 'Перенаправление...',
|
||||
add: 'Добавить',
|
||||
added: 'Добавлено',
|
||||
cancel: 'Отмена',
|
||||
confirm: 'Подтверждение',
|
||||
check_out: 'Оформить',
|
||||
create: 'Создать',
|
||||
set_up: 'Настройка',
|
||||
customize: 'Настроить',
|
||||
enable: 'Включить',
|
||||
reminder: 'Напоминание',
|
||||
delete: 'Удалить',
|
||||
more_options: 'ДОПОЛНИТЕЛЬНЫЕ ОПЦИИ',
|
||||
close: 'Закрыть',
|
||||
copy: 'Копировать',
|
||||
copying: 'Копирование',
|
||||
copied: 'Скопировано',
|
||||
required: 'Обязательное',
|
||||
add_another: 'Добавить еще',
|
||||
deletion_confirmation: 'Вы точно хотите удалить этот {{title}}?',
|
||||
settings_nav: 'Настройки',
|
||||
unsaved_changes_warning: 'Вы внесли изменения. Вы точно хотите покинуть эту страницу?',
|
||||
leave_page: 'Покинуть страницу',
|
||||
stay_on_page: 'Остаться на странице',
|
||||
type_to_search: 'Поиск по названию',
|
||||
got_it: 'Понятно',
|
||||
continue: 'Продолжить',
|
||||
page_info: '{{min, number}}-{{max, number}} из {{total, number}}',
|
||||
learn_more: 'Узнать больше',
|
||||
tab_errors: '{{count, number}} ошибок',
|
||||
skip_for_now: 'Пропустить',
|
||||
remove: 'Удалить',
|
||||
visit: 'Перейти',
|
||||
join: 'Присоединиться',
|
||||
try_now: 'Попробуйте сейчас',
|
||||
multiple_form_field: '(Несколько)',
|
||||
demo: 'Демо',
|
||||
};
|
||||
|
||||
export default general;
|
|
@ -0,0 +1,36 @@
|
|||
const get_started = {
|
||||
page_title: 'Начало работы',
|
||||
progress: 'Руководство: {{completed}}/{{total}}',
|
||||
progress_dropdown_title: 'Несколько вещей, которые вы можете сделать ...',
|
||||
title: 'Что-то, что поможет вам добиться успеха',
|
||||
subtitle_part1:
|
||||
'Несколько вещей, которые вы можете сделать, чтобы быстро получить ценность от Logto',
|
||||
subtitle_part2: 'Я профессионал и прошел все шаги.',
|
||||
hide_this: 'Скрыть это',
|
||||
confirm_message: 'Вы уверены, что хотите скрыть эту страницу? Это действие нельзя отменить.',
|
||||
check_preview_title: 'Проверьте живой просмотр',
|
||||
check_preview_subtitle:
|
||||
'Попробуйте опыт входа в систему Logto сейчас, чтобы увидеть, как это работает',
|
||||
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;
|
|
@ -0,0 +1,62 @@
|
|||
import api_resource_details from './api-resource-details.js';
|
||||
import api_resources from './api-resources.js';
|
||||
import application_details from './application-details.js';
|
||||
import applications from './applications.js';
|
||||
import cloud from './cloud.js';
|
||||
import components from './components.js';
|
||||
import connector_details from './connector-details.js';
|
||||
import connectors from './connectors.js';
|
||||
import contact from './contact.js';
|
||||
import dashboard from './dashboard.js';
|
||||
import errors from './errors.js';
|
||||
import general from './general.js';
|
||||
import get_started from './get-started.js';
|
||||
import log_details from './log-details.js';
|
||||
import logs from './logs.js';
|
||||
import menu from './menu.js';
|
||||
import permissions from './permissions.js';
|
||||
import profile from './profile.js';
|
||||
import role_details from './role-details.js';
|
||||
import roles from './roles.js';
|
||||
import session_expired from './session-expired.js';
|
||||
import sign_in_exp from './sign-in-exp/index.js';
|
||||
import tab_sections from './tab-sections.js';
|
||||
import tabs from './tabs.js';
|
||||
import user_details from './user-details.js';
|
||||
import users from './users.js';
|
||||
import welcome from './welcome.js';
|
||||
|
||||
const admin_console = {
|
||||
title: 'Консоль администратора',
|
||||
admin_user: 'Администратор',
|
||||
system_app: 'Система',
|
||||
menu,
|
||||
general,
|
||||
errors,
|
||||
tab_sections,
|
||||
tabs,
|
||||
applications,
|
||||
application_details,
|
||||
api_resources,
|
||||
api_resource_details,
|
||||
connectors,
|
||||
connector_details,
|
||||
get_started,
|
||||
users,
|
||||
user_details,
|
||||
contact,
|
||||
sign_in_exp,
|
||||
dashboard,
|
||||
logs,
|
||||
log_details,
|
||||
session_expired,
|
||||
welcome,
|
||||
roles,
|
||||
role_details,
|
||||
permissions,
|
||||
cloud,
|
||||
profile,
|
||||
components,
|
||||
};
|
||||
|
||||
export default admin_console;
|
|
@ -0,0 +1,18 @@
|
|||
const log_details = {
|
||||
page_title: 'Детали журнала аудита',
|
||||
back_to_logs: 'Назад к журналу аудита',
|
||||
back_to_user: 'Назад к {{name}}',
|
||||
success: 'Успешно',
|
||||
failed: 'Не удалось',
|
||||
event_key: 'Ключ события',
|
||||
application: 'Приложение',
|
||||
ip_address: 'IP адрес',
|
||||
user: 'Пользователь',
|
||||
log_id: 'ID журнала',
|
||||
time: 'Время',
|
||||
user_agent: 'User agent',
|
||||
tab_details: 'Детали',
|
||||
raw_data: 'Raw data',
|
||||
};
|
||||
|
||||
export default log_details;
|
|
@ -0,0 +1,12 @@
|
|||
const logs = {
|
||||
page_title: 'Записи аудита',
|
||||
title: 'Записи аудита',
|
||||
subtitle: 'Просмотр данных журнала событий аутентификации, сделанных вашими пользователями',
|
||||
event: 'Событие',
|
||||
user: 'Пользователь',
|
||||
application: 'Приложение',
|
||||
time: 'Время',
|
||||
filter_by: 'Фильтр по',
|
||||
};
|
||||
|
||||
export default logs;
|
|
@ -0,0 +1,13 @@
|
|||
const menu = {
|
||||
profile: 'Профиль',
|
||||
language: 'Язык',
|
||||
appearance: {
|
||||
label: 'Внешний вид',
|
||||
light: 'Светлый режим',
|
||||
dark: 'Темный режим',
|
||||
system: 'Синхронизация с системой',
|
||||
},
|
||||
sign_out: 'Выйти',
|
||||
};
|
||||
|
||||
export default menu;
|
|
@ -0,0 +1,12 @@
|
|||
const permissions = {
|
||||
search_placeholder: 'Поиск по имени API или разрешению',
|
||||
search_placeholder_without_api: 'Поиск по наименованию разрешения',
|
||||
name_column: 'Разрешение',
|
||||
description_column: 'Описание',
|
||||
api_column: 'API',
|
||||
placeholder_title: 'Разрешение',
|
||||
placeholder_description:
|
||||
'Разрешение относится к авторизации доступа к ресурсу (мы называем это ресурсом API).',
|
||||
};
|
||||
|
||||
export default permissions;
|
|
@ -0,0 +1,83 @@
|
|||
const profile = {
|
||||
page_title: 'Настройки аккаунта',
|
||||
title: 'Настройки аккаунта',
|
||||
description:
|
||||
'Измените настройки своего аккаунта и управляйте своей личной информацией здесь, чтобы обеспечить безопасность своего аккаунта.',
|
||||
settings: {
|
||||
title: 'Настройки профиля',
|
||||
profile_information: 'Информация профиля',
|
||||
avatar: 'Аватар',
|
||||
name: 'Имя',
|
||||
username: 'Имя пользователя',
|
||||
},
|
||||
link_account: {
|
||||
title: 'СВЯЗАТЬ АККАУНТ',
|
||||
email_sign_in: 'Войти по электронной почте',
|
||||
email: 'Электронная почта',
|
||||
social_sign_in: 'Войти через социальные сети',
|
||||
link_email: 'Связать адрес электронной почты',
|
||||
link_email_subtitle:
|
||||
'Свяжите свою электронную почту для входа или помощи в восстановлении аккаунта.',
|
||||
email_required: 'Адрес электронной почты обязателен',
|
||||
invalid_email: 'Неправильный адрес электронной почты',
|
||||
identical_email_address: 'Введенный адрес электронной почты идентичен текущему',
|
||||
anonymous: 'Анонимный',
|
||||
},
|
||||
password: {
|
||||
title: 'ПАРОЛЬ И БЕЗОПАСНОСТЬ',
|
||||
password: 'Пароль',
|
||||
password_setting: 'Настройка пароля',
|
||||
new_password: 'Новый пароль',
|
||||
confirm_password: 'Подтвердите пароль',
|
||||
enter_password: 'Введите пароль',
|
||||
enter_password_subtitle: 'Убедитесь, что это вы, для защиты безопасности своего аккаунта.',
|
||||
set_password: 'Установить пароль',
|
||||
verify_via_password: 'Проверить через пароль',
|
||||
show_password: 'Показать пароль',
|
||||
required: 'Пароль обязателен',
|
||||
min_length: 'Пароль должен содержать не менее {{min}} символов',
|
||||
do_not_match: 'Пароли не совпадают. Попробуйте еще раз.',
|
||||
},
|
||||
code: {
|
||||
enter_verification_code: 'Введите код подтверждения',
|
||||
enter_verification_code_subtitle:
|
||||
'Код подтверждения был отправлен на <strong>{{target}}</strong>',
|
||||
verify_via_code: 'Проверить через код подтверждения',
|
||||
resend: 'Повторно отправить код подтверждения',
|
||||
resend_countdown: 'Отправить повторно через {{countdown}} секунд',
|
||||
},
|
||||
delete_account: {
|
||||
title: 'УДАЛИТЬ АККАУНТ',
|
||||
label: 'Удалить аккаунт',
|
||||
description:
|
||||
'Удаление вашего аккаунта приведет к удалению всей вашей личной информации, пользовательских данных и конфигураций. Это действие нельзя будет отменить.',
|
||||
button: 'Удалить аккаунт',
|
||||
dialog_paragraph_1:
|
||||
'Мы сожалеем, что вы хотите удалить свой аккаунт. Удаление вашего аккаунта навсегда удалит всю информацию, включая данные пользователя, журналы и настройки, и это действие нельзя будет отменить. Пожалуйста, сделайте резервную копию важных данных перед продолжением.',
|
||||
dialog_paragraph_2:
|
||||
'Чтобы продолжить процесс удаления аккаунта, отправьте электронное письмо в нашу службу поддержки на адрес <a>{{mail}}</a> с темой «Запрос на удаление аккаунта». Мы поможем и убедимся в правильном удалении всех ваших данных из нашей системы.',
|
||||
dialog_paragraph_3:
|
||||
'Благодарим вас за выбор облачного сервиса Logto. Если у вас есть какие-либо дополнительные вопросы или проблемы, не стесняйтесь обращаться к нам.',
|
||||
},
|
||||
set: 'Установить',
|
||||
change: 'Изменить',
|
||||
link: 'Связать',
|
||||
unlink: 'Разъединить',
|
||||
not_set: 'Не установлено',
|
||||
change_avatar: 'Изменить аватар',
|
||||
change_name: 'Изменить имя',
|
||||
change_username: 'Изменить имя пользователя',
|
||||
set_name: 'Установить имя',
|
||||
email_changed: 'Адрес электронной почты изменен!',
|
||||
password_changed: 'Пароль изменен!',
|
||||
updated: '{{target}} обновлен!',
|
||||
linked: '{{target}} связан!',
|
||||
unlinked: '{{target}} разъединен!',
|
||||
email_exists_reminder:
|
||||
'Этот адрес электронной почты {{email}} связан с существующим аккаунтом. Свяжите другой адрес электронной почты здесь.',
|
||||
unlink_confirm_text: 'Да, разъединить',
|
||||
unlink_reminder:
|
||||
'Пользователи не смогут войти в аккаунт с помощью <span></span> , если вы его отсоедините. Вы уверены, что хотите продолжить?',
|
||||
};
|
||||
|
||||
export default profile;
|
|
@ -0,0 +1,50 @@
|
|||
const role_details = {
|
||||
back_to_roles: 'Назад к Ролям',
|
||||
identifier: 'Идентификатор',
|
||||
delete_description:
|
||||
'Это действие удалит все соответствующие разрешения данной роли у затронутых пользователей и удалит отображение между ролями, пользователями и разрешениями.',
|
||||
role_deleted: '{{name}} был успешно удален!',
|
||||
settings_tab: 'Настройки',
|
||||
users_tab: 'Пользователи',
|
||||
permissions_tab: 'Разрешения',
|
||||
settings: 'Настройки',
|
||||
settings_description:
|
||||
'Роли - это группировка разрешений, которые могут быть назначены пользователям. Они также обеспечивают способ объединения разрешений, определенных для разных API, что делает более эффективным добавление, удаление или корректировку разрешений по сравнению с назначением их отдельно пользователям.',
|
||||
field_name: 'Имя',
|
||||
field_description: 'Описание',
|
||||
permission: {
|
||||
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: 'Назначить Пользователей',
|
||||
name_column: 'Пользователь',
|
||||
app_column: 'Приложение',
|
||||
latest_sign_in_column: 'Последняя авторизация',
|
||||
delete_description:
|
||||
'Это действие приведет к потере авторизации на эту роль, но пользователь останется в вашем пуле пользователей.',
|
||||
deleted: '{{name}} был успешно удален из этой роли',
|
||||
assign_title: 'Назначить пользователей',
|
||||
assign_subtitle:
|
||||
'Назначить пользователей на эту роль. Найдите подходящих пользователей, используя поиск по имени, электронной почте, номеру телефона или идентификатору пользователя.',
|
||||
assign_users_field: 'Назначить пользователей',
|
||||
confirm_assign: 'Назначить пользователей',
|
||||
users_assigned: 'Выбранные пользователи были успешно назначены на эту роль',
|
||||
empty: 'Нет доступных пользователей',
|
||||
},
|
||||
};
|
||||
|
||||
export default role_details;
|
|
@ -0,0 +1,24 @@
|
|||
const roles = {
|
||||
page_title: 'Roles',
|
||||
title: 'Roles',
|
||||
subtitle:
|
||||
'Роли включают права доступа, которые определяют, что может делать пользователь. 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;
|
|
@ -0,0 +1,8 @@
|
|||
const session_expired = {
|
||||
title: 'Истекло время сеанса',
|
||||
subtitle:
|
||||
'Ваш сеанс, возможно, истек и вы были отключены. Нажмите кнопку ниже, чтобы снова войти в консоль администратора.',
|
||||
button: 'Войти снова',
|
||||
};
|
||||
|
||||
export default session_expired;
|
|
@ -0,0 +1,87 @@
|
|||
import others from './others.js';
|
||||
import sign_up_and_sign_in from './sign-up-and-sign-in.js';
|
||||
|
||||
const sign_in_exp = {
|
||||
page_title: 'Опыт входа в систему',
|
||||
title: 'Опыт входа в систему',
|
||||
description:
|
||||
'Настройте пользовательский интерфейс входа в систему в соответствии с вашим брендом и просматривайте в режиме реального времени',
|
||||
tabs: {
|
||||
branding: 'Брендирование',
|
||||
sign_up_and_sign_in: 'Регистрация и вход в систему',
|
||||
others: 'Другое',
|
||||
},
|
||||
welcome: {
|
||||
title: 'Настройка входа в систему',
|
||||
description:
|
||||
'Начните быстро с настройки первого входа в систему. Это руководство поможет вам пройти все необходимые настройки.',
|
||||
get_started: 'Начать',
|
||||
apply_remind:
|
||||
'Обратите внимание, что опыт входа в систему будет применяться для всех приложений в этой учетной записи.',
|
||||
},
|
||||
color: {
|
||||
title: 'ЦВЕТ',
|
||||
primary_color: 'Цвет бренда',
|
||||
dark_primary_color: 'Цвет бренда (темный)',
|
||||
dark_mode: 'Включить темный режим',
|
||||
dark_mode_description:
|
||||
'Ваше приложение будет иметь автоматически созданную темную тему на основе цвета вашего бренда и алгоритма Logto. Вы можете настроить ее по своему вкусу.',
|
||||
dark_mode_reset_tip: 'Пересчитать цвет темного режима на основе цвета бренда.',
|
||||
reset: 'Пересчитать',
|
||||
},
|
||||
branding: {
|
||||
title: 'ЗОНА БРЕНДИНГА',
|
||||
ui_style: 'Стиль',
|
||||
favicon: 'Фавикон',
|
||||
logo_image_url: 'URL изображения логотипа приложения',
|
||||
logo_image_url_placeholder: 'https://your.cdn.domain/logo.png',
|
||||
dark_logo_image_url: 'URL изображения логотипа приложения (темный)',
|
||||
dark_logo_image_url_placeholder: 'https://your.cdn.domain/logo-dark.png',
|
||||
logo_image: 'Логотип приложения',
|
||||
dark_logo_image: 'Логотип приложения (темный)',
|
||||
logo_image_error: 'Ошибка логотипа приложения: {{error}}',
|
||||
favicon_error: 'Ошибка фавикона: {{error}}',
|
||||
},
|
||||
custom_css: {
|
||||
title: 'Пользовательский CSS',
|
||||
css_code_editor_title:
|
||||
'Настройте ваш пользовательский интерфейс с помощью пользовательского CSS',
|
||||
css_code_editor_description1: 'Смотрите пример пользовательского CSS.',
|
||||
css_code_editor_description2: '<a>{{link}}</a>',
|
||||
css_code_editor_description_link_content: 'Подробнее',
|
||||
css_code_editor_content_placeholder:
|
||||
'Введите ваш пользовательский CSS, чтобы настроить стили для чего-угодно в соответствии с вашими требованиями. Выражайте свою креативность и выделяйте свой пользовательский интерфейс.',
|
||||
},
|
||||
sign_up_and_sign_in,
|
||||
others,
|
||||
setup_warning: {
|
||||
no_connector_sms:
|
||||
'Еще не настроен коннектор SMS. Пока не завершено настройка, пользователи не смогут войти с помощью этого метода. <a>{{link}}</a> в «Коннекторах»',
|
||||
no_connector_email:
|
||||
'Еще не настроен коннектор по электронной почте. Пока не завершено настройка, пользователи не смогут войти с помощью этого метода. <a>{{link}}</a> в «Коннекторах»',
|
||||
no_connector_social:
|
||||
'Еще не настроен социальный коннектор. Пока не завершено настройка, пользователи не смогут войти с помощью этого метода. <a>{{link}}</a> в «Коннекторах»',
|
||||
no_added_social_connector:
|
||||
'Вы уже настроили несколько социальных коннекторов. Убедитесь, что вы добавили их в настройки входа в систему.',
|
||||
setup_link: 'Настройка',
|
||||
},
|
||||
save_alert: {
|
||||
description:
|
||||
'Вы внедряете новые процедуры входа и регистрации. Все ваши пользователи могут быть затронуты новой настройкой. Вы точно хотите внести изменения?',
|
||||
before: 'До',
|
||||
after: 'После',
|
||||
sign_up: 'Регистрация',
|
||||
sign_in: 'Вход',
|
||||
social: 'Социальный',
|
||||
},
|
||||
preview: {
|
||||
title: 'Предварительный просмотр входа в систему',
|
||||
live_preview: 'Прямой эфир',
|
||||
live_preview_tip: 'Сохранить для просмотра изменений',
|
||||
native: 'Нативный',
|
||||
desktop_web: 'Веб на рабочем столе',
|
||||
mobile_web: 'Мобильный веб',
|
||||
},
|
||||
};
|
||||
|
||||
export default sign_in_exp;
|
|
@ -0,0 +1,49 @@
|
|||
const others = {
|
||||
terms_of_use: {
|
||||
title: 'TERMS',
|
||||
terms_of_use: 'URL ПОЛЬЗОВАТЕЛЬСКОГО СОГЛАШЕНИЯ',
|
||||
terms_of_use_placeholder: 'https://your.terms.of.use/',
|
||||
privacy_policy: 'URL ПОЛИТИКИ КОНФИДЕНЦИАЛЬНОСТИ',
|
||||
privacy_policy_placeholder: 'https://your.privacy.policy/',
|
||||
},
|
||||
languages: {
|
||||
title: 'ЯЗЫКИ',
|
||||
enable_auto_detect: 'Включить автоопределение языка',
|
||||
description:
|
||||
'Ваше программное обеспечение определяет настройки локали пользователя и переключается на локальный язык. Вы можете добавлять новые языки, переводя интерфейс с английского на другой язык.',
|
||||
manage_language: 'Управление языком',
|
||||
default_language: 'Язык по умолчанию',
|
||||
default_language_description_auto:
|
||||
'По умолчанию будет использоваться выбранный язык, только если окружение пользователя не содержит соответствующей локали.',
|
||||
default_language_description_fixed:
|
||||
'Если автоопределение отключено, в приложении будет отображаться только один язык – язык по умолчанию. Включите автоопределение для расширения списка доступных языков.',
|
||||
},
|
||||
manage_language: {
|
||||
title: 'Управление языком',
|
||||
subtitle:
|
||||
'Локализуйте продукт, добавляя языки и переводы. Ваш вклад может быть установлен как язык по умолчанию.',
|
||||
add_language: 'Добавить язык',
|
||||
logto_provided: 'Logto предоставил',
|
||||
key: 'Ключ',
|
||||
logto_source_values: 'Исходные значения Logto',
|
||||
custom_values: 'Произвольные значения',
|
||||
clear_all_tip: 'Очистить все значения',
|
||||
unsaved_description:
|
||||
'Изменения не будут сохранены, если вы покинете эту страницу без сохранения.',
|
||||
deletion_tip: 'Удалить язык',
|
||||
deletion_title: 'Хотите удалить добавленный язык?',
|
||||
deletion_description:
|
||||
'После удаления пользователи не смогут более просматривать информацию на этом языке.',
|
||||
default_language_deletion_title: 'Язык по умолчанию не может быть удален.',
|
||||
default_language_deletion_description:
|
||||
'{{language}} установлен как язык по умолчанию и не может быть удален. ',
|
||||
},
|
||||
advanced_options: {
|
||||
title: 'ДОПОЛНИТЕЛЬНЫЕ НАСТРОЙКИ',
|
||||
enable_user_registration: 'Включить регистрацию пользователей',
|
||||
enable_user_registration_description:
|
||||
'Разрешить или запретить регистрацию пользователей. После отключения пользователи могут быть добавлены через админ-консоль, но пользователи больше не могут создавать учетные записи через интерфейс входа в систему.',
|
||||
},
|
||||
};
|
||||
|
||||
export default others;
|
|
@ -0,0 +1,58 @@
|
|||
const sign_up_and_sign_in = {
|
||||
identifiers_email: 'Адрес электронной почты',
|
||||
identifiers_phone: 'Номер телефона',
|
||||
identifiers_username: 'Имя пользователя',
|
||||
identifiers_email_or_sms: 'Адрес электронной почты или номер телефона',
|
||||
identifiers_none: 'Не применимо',
|
||||
and: 'и',
|
||||
or: 'или',
|
||||
sign_up: {
|
||||
title: 'РЕГИСТРАЦИЯ',
|
||||
sign_up_identifier: 'Идентификатор регистрации',
|
||||
identifier_description:
|
||||
'Идентификатор регистрации необходим для создания учетной записи и должен быть включен на экране входа в систему.',
|
||||
sign_up_authentication: 'Настройки аутентификации для регистрации',
|
||||
authentication_description:
|
||||
'Все выбранные действия будут обязательны для выполнения пользователем.',
|
||||
set_a_password_option: 'Создайте пароль',
|
||||
verify_at_sign_up_option: 'Подтвердить при регистрации',
|
||||
social_only_creation_description:
|
||||
'(Применяется только к созданию учетной записи в социальных сетях)',
|
||||
},
|
||||
sign_in: {
|
||||
title: 'ВХОД',
|
||||
sign_in_identifier_and_auth: 'Идентификатор и настройки аутентификации для входа',
|
||||
description:
|
||||
'Пользователи могут войти, используя любой из доступных вариантов. Настройте расположение, перетаскивая ниже указанные опции.',
|
||||
add_sign_in_method: 'Добавить способ входа',
|
||||
password_auth: 'Пароль',
|
||||
verification_code_auth: 'Код подтверждения',
|
||||
auth_swap_tip: 'Переставьте варианты ниже, чтобы определить, какой появится первым в потоке.',
|
||||
require_auth_factor: 'Вы должны выбрать хотя бы один фактор аутентификации.',
|
||||
},
|
||||
social_sign_in: {
|
||||
title: 'ВХОД С ПОМОЩЬЮ СОЦИАЛЬНЫХ СЕТЕЙ',
|
||||
social_sign_in: 'Вход через социальные сети',
|
||||
description:
|
||||
'В зависимости от обязательного идентификатора, который вы настроили, ваш пользователь может быть попрошен предоставить идентификатор при регистрации через социальный коннектор.',
|
||||
add_social_connector: 'Добавить социальный коннектор',
|
||||
set_up_hint: {
|
||||
not_in_list: 'Не найден в списке?',
|
||||
set_up_more: 'Настроить',
|
||||
go_to: 'другие социальные коннекторы.',
|
||||
},
|
||||
},
|
||||
tip: {
|
||||
set_a_password: 'Уникальный пароль для вашего имени пользователя является обязательным.',
|
||||
verify_at_sign_up:
|
||||
'В настоящее время мы поддерживаем только подтвержденный электронный адрес. Ваша база пользователей может содержать большое количество адресов электронной почты низкого качества, если не производится проверка.',
|
||||
password_auth:
|
||||
'Это необходимо, так как вы включили опцию установки пароля в процессе регистрации.',
|
||||
verification_code_auth:
|
||||
'Это необходимо, так как вы включили только опцию предоставления кода подтверждения при регистрации. Вы можете снять флажок, когда установка пароля разрешена в процессе регистрации.',
|
||||
delete_sign_in_method:
|
||||
'Это необходимо, так как вы выбрали {{identifier}} в качестве обязательного идентификатора.',
|
||||
},
|
||||
};
|
||||
|
||||
export default sign_up_and_sign_in;
|
|
@ -0,0 +1,9 @@
|
|||
const tab_sections = {
|
||||
overview: 'Обзор',
|
||||
resource_management: 'Управление ресурсами',
|
||||
user_management: 'Управление пользователями',
|
||||
access_control: 'Управление доступом',
|
||||
help_and_support: 'Помощь и поддержка',
|
||||
};
|
||||
|
||||
export default tab_sections;
|
|
@ -0,0 +1,16 @@
|
|||
const tabs = {
|
||||
get_started: 'Начало',
|
||||
dashboard: 'Панель управления',
|
||||
applications: 'Приложения',
|
||||
api_resources: 'Ресурсы API',
|
||||
sign_in_experience: 'Опыт входа в систему',
|
||||
connectors: 'Коннекторы',
|
||||
users: 'Управление пользователями',
|
||||
audit_logs: 'Журналы аудита',
|
||||
roles: 'Роли',
|
||||
docs: 'Документация',
|
||||
contact_us: 'Свяжитесь с нами',
|
||||
settings: 'Настройки',
|
||||
};
|
||||
|
||||
export default tabs;
|
|
@ -0,0 +1,64 @@
|
|||
const user_details = {
|
||||
page_title: 'Детали пользователя',
|
||||
back_to_users: 'Вернуться к управлению пользователями',
|
||||
created_title: 'Этот пользователь был успешно создан',
|
||||
created_guide: 'Вы можете отправить следующую информацию для входа пользователю',
|
||||
created_username: 'Имя пользователя:',
|
||||
created_password: 'Пароль:',
|
||||
menu_delete: 'Удалить',
|
||||
delete_description: 'Это действие нельзя отменить. Оно окончательно удалит пользователя.',
|
||||
deleted: 'Пользователь был успешно удален',
|
||||
reset_password: {
|
||||
reset_password: 'Сбросить пароль',
|
||||
title: 'Вы уверены, что хотите сбросить пароль?',
|
||||
content: 'Это действие нельзя отменить. Это сбросит информацию для входа пользователя.',
|
||||
congratulations: 'Пользователь был сброшен',
|
||||
new_password: 'Новый пароль:',
|
||||
},
|
||||
tab_settings: 'Настройки',
|
||||
tab_roles: 'Роли',
|
||||
tab_logs: 'Журналы пользователя',
|
||||
settings: 'Настройки',
|
||||
settings_description:
|
||||
'У каждого пользователя есть профиль, содержащий всю информацию о пользователе. Он состоит из основных данных, социальных идентификаторов и пользовательских данных.',
|
||||
field_email: 'Основной адрес электронной почты',
|
||||
field_phone: 'Основной телефон',
|
||||
field_username: 'Имя пользователя',
|
||||
field_name: 'Имя',
|
||||
field_avatar: 'URL изображения аватара',
|
||||
field_avatar_placeholder: 'https://your.cdn.domain/avatar.png',
|
||||
field_custom_data: 'Пользовательские данные',
|
||||
field_custom_data_tip:
|
||||
'Дополнительная информация о пользователе, не указанная в заранее определенных свойствах пользователя, таких как предпочтительный цвет и язык пользователя.',
|
||||
field_connectors: 'Социальные подключения',
|
||||
custom_data_invalid: 'Пользовательские данные должны быть допустимым JSON-объектом',
|
||||
connectors: {
|
||||
connectors: 'Подключения',
|
||||
user_id: 'ID пользователя',
|
||||
remove: 'Удалить',
|
||||
not_connected: 'Пользователь не подключен к социальным подключениям',
|
||||
deletion_confirmation:
|
||||
'Вы удаляете существующий идентификатор <name/>. Вы уверены, что хотите это сделать?',
|
||||
},
|
||||
suspended: 'Приостановлен',
|
||||
roles: {
|
||||
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: 'Нет доступных ролей',
|
||||
},
|
||||
};
|
||||
|
||||
export default user_details;
|
|
@ -0,0 +1,21 @@
|
|||
const users = {
|
||||
page_title: 'Управление пользователями',
|
||||
title: 'Управление пользователями',
|
||||
subtitle:
|
||||
'Управление идентификацией пользователей, включая создание пользователей, редактирование информации о пользователях, просмотр журналов пользователей, сброс пароля и удаление пользователей',
|
||||
create: 'Добавить пользователя',
|
||||
user_name: 'Пользователь',
|
||||
application_name: 'От приложения',
|
||||
latest_sign_in: 'Последний вход',
|
||||
create_form_username: 'Имя пользователя',
|
||||
create_form_password: 'Пароль',
|
||||
create_form_name: 'Полное имя',
|
||||
unnamed: 'Без имени',
|
||||
search: 'Поиск по имени, электронной почте, телефону или имени пользователя',
|
||||
check_user_detail: 'Просмотреть информацию о пользователе',
|
||||
placeholder_title: 'Управление пользователями',
|
||||
placeholder_description:
|
||||
'Каждый пользователь имеет профиль, содержащий всю информацию о пользователе. Он состоит из базовых данных, социальных идентификаторов и настраиваемых данных.',
|
||||
};
|
||||
|
||||
export default users;
|
|
@ -0,0 +1,8 @@
|
|||
const welcome = {
|
||||
title: 'Добро пожаловать в административную консоль',
|
||||
description:
|
||||
'Административная консоль - это веб-приложение для управления Logto без требований к кодированию. Давайте сначала создадим учетную запись. С этой учетной записью вы можете управлять Logto самостоятельно или от имени вашей компании.',
|
||||
create_account: 'Создать учетную запись',
|
||||
};
|
||||
|
||||
export default welcome;
|
13
packages/phrases/src/locales/ru/translation/demo-app.ts
Normal file
13
packages/phrases/src/locales/ru/translation/demo-app.ts
Normal file
|
@ -0,0 +1,13 @@
|
|||
const demo_app = {
|
||||
title: 'Вы успешно вошли в живой просмотр!',
|
||||
subtitle: 'Вот ваши данные для входа:',
|
||||
username: 'Имя пользователя: ',
|
||||
user_id: 'Идентификатор пользователя: ',
|
||||
sign_out: 'Выйти из живого просмотра',
|
||||
continue_explore: 'Или продолжить исследование',
|
||||
customize_sign_in_experience: 'Настройте опыт входа в систему',
|
||||
enable_passwordless: 'Включить безпарольный вход',
|
||||
add_social_connector: 'Добавить социальный коннектор',
|
||||
};
|
||||
|
||||
export default demo_app;
|
11
packages/phrases/src/locales/ru/translation/index.ts
Normal file
11
packages/phrases/src/locales/ru/translation/index.ts
Normal file
|
@ -0,0 +1,11 @@
|
|||
import admin_console from './admin-console/index.js';
|
||||
import demo_app from './demo-app.js';
|
||||
import oidc from './oidc.js';
|
||||
|
||||
const translation = {
|
||||
admin_console,
|
||||
demo_app,
|
||||
oidc,
|
||||
};
|
||||
|
||||
export default translation;
|
5
packages/phrases/src/locales/ru/translation/oidc.ts
Normal file
5
packages/phrases/src/locales/ru/translation/oidc.ts
Normal file
|
@ -0,0 +1,5 @@
|
|||
const oidc = {
|
||||
logout_success: 'Вы успешно вышли из системы.',
|
||||
};
|
||||
|
||||
export default oidc;
|
Loading…
Add table
Reference in a new issue