Compare commits

...

6 Commits

Author SHA1 Message Date
Yaodong Yu
d12117324c feat: support admin to enable MFA for other users (#2221)
* feat: support admin enable user sms and email mfa

* chore: update ci

* chore: update ci
2023-08-17 17:19:24 +08:00
hsluoyz
1a6c9fbf69 Fix typo in README 2023-08-17 14:47:09 +08:00
hsluoyz
dd60d79af9 Fix typo in README 2023-08-17 14:46:10 +08:00
Yang Luo
73d314c7fe Add MfaTotpPeriodInSeconds param 2023-08-16 21:48:54 +08:00
Yaodong Yu
27959e0f6f fix: fix crash in UserEditPage.js 2023-08-16 15:57:48 +08:00
Baihhh
47f40c5b24 feat: support 3 more UI languages (#2218)
Signed-off-by: baihhh <2542274498@qq.com>
2023-08-16 15:54:34 +08:00
29 changed files with 3892 additions and 75 deletions

View File

@@ -110,7 +110,7 @@ jobs:
with:
start: yarn start
wait-on: 'http://localhost:7001'
wait-on-timeout: 180
wait-on-timeout: 210
working-directory: ./web
- uses: actions/upload-artifact@v3

View File

@@ -11,7 +11,7 @@
<img alt="GitHub Workflow Status (branch)" src="https://github.com/casdoor/casdoor/workflows/Build/badge.svg?style=flat-square">
</a>
<a href="https://github.com/casdoor/casdoor/releases/latest">
<img alt="GitHub Release" src="https://img.shields.io/github/v/release/casbin/casdoor.svg">
<img alt="GitHub Release" src="https://img.shields.io/github/v/release/casdoor/casdoor.svg">
</a>
<a href="https://hub.docker.com/repository/docker/casbin/casdoor">
<img alt="Docker Image Version (latest semver)" src="https://img.shields.io/badge/Docker%20Hub-latest-brightgreen">
@@ -23,16 +23,16 @@
<img alt="Go Report Card" src="https://goreportcard.com/badge/github.com/casdoor/casdoor?style=flat-square">
</a>
<a href="https://github.com/casdoor/casdoor/blob/master/LICENSE">
<img src="https://img.shields.io/github/license/casbin/casdoor?style=flat-square" alt="license">
<img src="https://img.shields.io/github/license/casdoor/casdoor?style=flat-square" alt="license">
</a>
<a href="https://github.com/casdoor/casdoor/issues">
<img alt="GitHub issues" src="https://img.shields.io/github/issues/casbin/casdoor?style=flat-square">
<img alt="GitHub issues" src="https://img.shields.io/github/issues/casdoor/casdoor?style=flat-square">
</a>
<a href="#">
<img alt="GitHub stars" src="https://img.shields.io/github/stars/casbin/casdoor?style=flat-square">
<img alt="GitHub stars" src="https://img.shields.io/github/stars/casdoor/casdoor?style=flat-square">
</a>
<a href="https://github.com/casdoor/casdoor/network">
<img alt="GitHub forks" src="https://img.shields.io/github/forks/casbin/casdoor?style=flat-square">
<img alt="GitHub forks" src="https://img.shields.io/github/forks/casdoor/casdoor?style=flat-square">
</a>
<a href="https://crowdin.com/project/casdoor-site">
<img alt="Crowdin" src="https://badges.crowdin.net/casdoor-site/localized.svg">

View File

@@ -36,6 +36,9 @@ func TestGenerateI18nFrontend(t *testing.T) {
applyToOtherLanguage("frontend", "it", data)
applyToOtherLanguage("frontend", "ms", data)
applyToOtherLanguage("frontend", "tr", data)
applyToOtherLanguage("frontend", "ar", data)
applyToOtherLanguage("frontend", "he", data)
applyToOtherLanguage("frontend", "fi", data)
}
func TestGenerateI18nBackend(t *testing.T) {
@@ -55,4 +58,7 @@ func TestGenerateI18nBackend(t *testing.T) {
applyToOtherLanguage("backend", "it", data)
applyToOtherLanguage("backend", "ms", data)
applyToOtherLanguage("backend", "tr", data)
applyToOtherLanguage("backend", "ar", data)
applyToOtherLanguage("backend", "he", data)
applyToOtherLanguage("backend", "fi", data)
}

142
i18n/locales/ar/data.json Normal file
View File

@@ -0,0 +1,142 @@
{
"account": {
"Failed to add user": "Failed to add user",
"Get init score failed, error: %w": "Get init score failed, error: %w",
"Please sign out first": "Please sign out first",
"The application does not allow to sign up new account": "The application does not allow to sign up new account"
},
"auth": {
"Challenge method should be S256": "Challenge method should be S256",
"Failed to create user, user information is invalid: %s": "Failed to create user, user information is invalid: %s",
"Failed to login in: %s": "Failed to login in: %s",
"Invalid token": "Invalid token",
"State expected: %s, but got: %s": "State expected: %s, but got: %s",
"The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up": "The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up",
"The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support": "The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support",
"The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)",
"The application: %s does not exist": "The application: %s does not exist",
"The login method: login with password is not enabled for the application": "The login method: login with password is not enabled for the application",
"The provider: %s is not enabled for the application": "The provider: %s is not enabled for the application",
"Unauthorized operation": "Unauthorized operation",
"Unknown authentication type (not password or provider), form = %s": "Unknown authentication type (not password or provider), form = %s",
"User's tag: %s is not listed in the application's tags": "User's tag: %s is not listed in the application's tags"
},
"cas": {
"Service %s and %s do not match": "Service %s and %s do not match"
},
"check": {
"Affiliation cannot be blank": "Affiliation cannot be blank",
"DisplayName cannot be blank": "DisplayName cannot be blank",
"DisplayName is not valid real name": "DisplayName is not valid real name",
"Email already exists": "Email already exists",
"Email cannot be empty": "Email cannot be empty",
"Email is invalid": "Email is invalid",
"Empty username.": "Empty username.",
"FirstName cannot be blank": "FirstName cannot be blank",
"LDAP user name or password incorrect": "LDAP user name or password incorrect",
"LastName cannot be blank": "LastName cannot be blank",
"Multiple accounts with same uid, please check your ldap server": "Multiple accounts with same uid, please check your ldap server",
"Organization does not exist": "Organization does not exist",
"Password must have at least 6 characters": "Password must have at least 6 characters",
"Phone already exists": "Phone already exists",
"Phone cannot be empty": "Phone cannot be empty",
"Phone number is invalid": "Phone number is invalid",
"Session outdated, please login again": "Session outdated, please login again",
"The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
"The user: %s doesn't exist in LDAP server": "The user: %s doesn't exist in LDAP server",
"The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.": "The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.",
"Username already exists": "Username already exists",
"Username cannot be an email address": "Username cannot be an email address",
"Username cannot contain white spaces": "Username cannot contain white spaces",
"Username cannot start with a digit": "Username cannot start with a digit",
"Username is too long (maximum is 39 characters).": "Username is too long (maximum is 39 characters).",
"Username must have at least 2 characters": "Username must have at least 2 characters",
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "You have entered the wrong password or code too many times, please wait for %d minutes and try again",
"Your region is not allow to signup by phone": "Your region is not allow to signup by phone",
"password or code is incorrect": "password or code is incorrect",
"password or code is incorrect, you have %d remaining chances": "password or code is incorrect, you have %d remaining chances",
"unsupported password type: %s": "unsupported password type: %s"
},
"general": {
"Missing parameter": "Missing parameter",
"Please login first": "Please login first",
"The user: %s doesn't exist": "The user: %s doesn't exist",
"don't support captchaProvider: ": "don't support captchaProvider: ",
"this operation is not allowed in demo mode": "this operation is not allowed in demo mode"
},
"ldap": {
"Ldap server exist": "Ldap server exist"
},
"link": {
"Please link first": "Please link first",
"This application has no providers": "This application has no providers",
"This application has no providers of type": "This application has no providers of type",
"This provider can't be unlinked": "This provider can't be unlinked",
"You are not the global admin, you can't unlink other users": "You are not the global admin, you can't unlink other users",
"You can't unlink yourself, you are not a member of any application": "You can't unlink yourself, you are not a member of any application"
},
"organization": {
"Only admin can modify the %s.": "Only admin can modify the %s.",
"The %s is immutable.": "The %s is immutable.",
"Unknown modify rule %s.": "Unknown modify rule %s."
},
"provider": {
"Invalid application id": "Invalid application id",
"the provider: %s does not exist": "the provider: %s does not exist"
},
"resource": {
"User is nil for tag: avatar": "User is nil for tag: avatar",
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Username or fullFilePath is empty: username = %s, fullFilePath = %s"
},
"saml": {
"Application %s not found": "Application %s not found"
},
"saml_sp": {
"provider %s's category is not SAML": "provider %s's category is not SAML"
},
"service": {
"Empty parameters for emailForm: %v": "Empty parameters for emailForm: %v",
"Invalid Email receivers: %s": "Invalid Email receivers: %s",
"Invalid phone receivers: %s": "Invalid phone receivers: %s"
},
"storage": {
"The objectKey: %s is not allowed": "The objectKey: %s is not allowed",
"The provider type: %s is not supported": "The provider type: %s is not supported"
},
"token": {
"Empty clientId or clientSecret": "Empty clientId or clientSecret",
"Grant_type: %s is not supported in this application": "Grant_type: %s is not supported in this application",
"Invalid application or wrong clientSecret": "Invalid application or wrong clientSecret",
"Invalid client_id": "Invalid client_id",
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "Redirect URI: %s doesn't exist in the allowed Redirect URI list",
"Token not found, invalid accessToken": "Token not found, invalid accessToken"
},
"user": {
"Display name cannot be empty": "Display name cannot be empty",
"New password cannot contain blank space.": "New password cannot contain blank space."
},
"user_upload": {
"Failed to import users": "Failed to import users"
},
"util": {
"No application is found for userId: %s": "No application is found for userId: %s",
"No provider for category: %s is found for application: %s": "No provider for category: %s is found for application: %s",
"The provider: %s is not found": "The provider: %s is not found"
},
"verification": {
"Code has not been sent yet!": "Code has not been sent yet!",
"Invalid captcha provider.": "Invalid captcha provider.",
"Phone number is invalid in your region %s": "Phone number is invalid in your region %s",
"Turing test failed.": "Turing test failed.",
"Unable to get the email modify rule.": "Unable to get the email modify rule.",
"Unable to get the phone modify rule.": "Unable to get the phone modify rule.",
"Unknown type": "Unknown type",
"Wrong verification code!": "Wrong verification code!",
"You should verify your code in %d min!": "You should verify your code in %d min!",
"the user does not exist, please sign up first": "the user does not exist, please sign up first"
},
"webauthn": {
"Found no credentials for this user": "Found no credentials for this user",
"Please call WebAuthnSigninBegin first": "Please call WebAuthnSigninBegin first"
}
}

142
i18n/locales/fi/data.json Normal file
View File

@@ -0,0 +1,142 @@
{
"account": {
"Failed to add user": "Failed to add user",
"Get init score failed, error: %w": "Get init score failed, error: %w",
"Please sign out first": "Please sign out first",
"The application does not allow to sign up new account": "The application does not allow to sign up new account"
},
"auth": {
"Challenge method should be S256": "Challenge method should be S256",
"Failed to create user, user information is invalid: %s": "Failed to create user, user information is invalid: %s",
"Failed to login in: %s": "Failed to login in: %s",
"Invalid token": "Invalid token",
"State expected: %s, but got: %s": "State expected: %s, but got: %s",
"The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up": "The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up",
"The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support": "The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support",
"The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)",
"The application: %s does not exist": "The application: %s does not exist",
"The login method: login with password is not enabled for the application": "The login method: login with password is not enabled for the application",
"The provider: %s is not enabled for the application": "The provider: %s is not enabled for the application",
"Unauthorized operation": "Unauthorized operation",
"Unknown authentication type (not password or provider), form = %s": "Unknown authentication type (not password or provider), form = %s",
"User's tag: %s is not listed in the application's tags": "User's tag: %s is not listed in the application's tags"
},
"cas": {
"Service %s and %s do not match": "Service %s and %s do not match"
},
"check": {
"Affiliation cannot be blank": "Affiliation cannot be blank",
"DisplayName cannot be blank": "DisplayName cannot be blank",
"DisplayName is not valid real name": "DisplayName is not valid real name",
"Email already exists": "Email already exists",
"Email cannot be empty": "Email cannot be empty",
"Email is invalid": "Email is invalid",
"Empty username.": "Empty username.",
"FirstName cannot be blank": "FirstName cannot be blank",
"LDAP user name or password incorrect": "LDAP user name or password incorrect",
"LastName cannot be blank": "LastName cannot be blank",
"Multiple accounts with same uid, please check your ldap server": "Multiple accounts with same uid, please check your ldap server",
"Organization does not exist": "Organization does not exist",
"Password must have at least 6 characters": "Password must have at least 6 characters",
"Phone already exists": "Phone already exists",
"Phone cannot be empty": "Phone cannot be empty",
"Phone number is invalid": "Phone number is invalid",
"Session outdated, please login again": "Session outdated, please login again",
"The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
"The user: %s doesn't exist in LDAP server": "The user: %s doesn't exist in LDAP server",
"The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.": "The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.",
"Username already exists": "Username already exists",
"Username cannot be an email address": "Username cannot be an email address",
"Username cannot contain white spaces": "Username cannot contain white spaces",
"Username cannot start with a digit": "Username cannot start with a digit",
"Username is too long (maximum is 39 characters).": "Username is too long (maximum is 39 characters).",
"Username must have at least 2 characters": "Username must have at least 2 characters",
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "You have entered the wrong password or code too many times, please wait for %d minutes and try again",
"Your region is not allow to signup by phone": "Your region is not allow to signup by phone",
"password or code is incorrect": "password or code is incorrect",
"password or code is incorrect, you have %d remaining chances": "password or code is incorrect, you have %d remaining chances",
"unsupported password type: %s": "unsupported password type: %s"
},
"general": {
"Missing parameter": "Missing parameter",
"Please login first": "Please login first",
"The user: %s doesn't exist": "The user: %s doesn't exist",
"don't support captchaProvider: ": "don't support captchaProvider: ",
"this operation is not allowed in demo mode": "this operation is not allowed in demo mode"
},
"ldap": {
"Ldap server exist": "Ldap server exist"
},
"link": {
"Please link first": "Please link first",
"This application has no providers": "This application has no providers",
"This application has no providers of type": "This application has no providers of type",
"This provider can't be unlinked": "This provider can't be unlinked",
"You are not the global admin, you can't unlink other users": "You are not the global admin, you can't unlink other users",
"You can't unlink yourself, you are not a member of any application": "You can't unlink yourself, you are not a member of any application"
},
"organization": {
"Only admin can modify the %s.": "Only admin can modify the %s.",
"The %s is immutable.": "The %s is immutable.",
"Unknown modify rule %s.": "Unknown modify rule %s."
},
"provider": {
"Invalid application id": "Invalid application id",
"the provider: %s does not exist": "the provider: %s does not exist"
},
"resource": {
"User is nil for tag: avatar": "User is nil for tag: avatar",
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Username or fullFilePath is empty: username = %s, fullFilePath = %s"
},
"saml": {
"Application %s not found": "Application %s not found"
},
"saml_sp": {
"provider %s's category is not SAML": "provider %s's category is not SAML"
},
"service": {
"Empty parameters for emailForm: %v": "Empty parameters for emailForm: %v",
"Invalid Email receivers: %s": "Invalid Email receivers: %s",
"Invalid phone receivers: %s": "Invalid phone receivers: %s"
},
"storage": {
"The objectKey: %s is not allowed": "The objectKey: %s is not allowed",
"The provider type: %s is not supported": "The provider type: %s is not supported"
},
"token": {
"Empty clientId or clientSecret": "Empty clientId or clientSecret",
"Grant_type: %s is not supported in this application": "Grant_type: %s is not supported in this application",
"Invalid application or wrong clientSecret": "Invalid application or wrong clientSecret",
"Invalid client_id": "Invalid client_id",
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "Redirect URI: %s doesn't exist in the allowed Redirect URI list",
"Token not found, invalid accessToken": "Token not found, invalid accessToken"
},
"user": {
"Display name cannot be empty": "Display name cannot be empty",
"New password cannot contain blank space.": "New password cannot contain blank space."
},
"user_upload": {
"Failed to import users": "Failed to import users"
},
"util": {
"No application is found for userId: %s": "No application is found for userId: %s",
"No provider for category: %s is found for application: %s": "No provider for category: %s is found for application: %s",
"The provider: %s is not found": "The provider: %s is not found"
},
"verification": {
"Code has not been sent yet!": "Code has not been sent yet!",
"Invalid captcha provider.": "Invalid captcha provider.",
"Phone number is invalid in your region %s": "Phone number is invalid in your region %s",
"Turing test failed.": "Turing test failed.",
"Unable to get the email modify rule.": "Unable to get the email modify rule.",
"Unable to get the phone modify rule.": "Unable to get the phone modify rule.",
"Unknown type": "Unknown type",
"Wrong verification code!": "Wrong verification code!",
"You should verify your code in %d min!": "You should verify your code in %d min!",
"the user does not exist, please sign up first": "the user does not exist, please sign up first"
},
"webauthn": {
"Found no credentials for this user": "Found no credentials for this user",
"Please call WebAuthnSigninBegin first": "Please call WebAuthnSigninBegin first"
}
}

142
i18n/locales/he/data.json Normal file
View File

@@ -0,0 +1,142 @@
{
"account": {
"Failed to add user": "Failed to add user",
"Get init score failed, error: %w": "Get init score failed, error: %w",
"Please sign out first": "Please sign out first",
"The application does not allow to sign up new account": "The application does not allow to sign up new account"
},
"auth": {
"Challenge method should be S256": "Challenge method should be S256",
"Failed to create user, user information is invalid: %s": "Failed to create user, user information is invalid: %s",
"Failed to login in: %s": "Failed to login in: %s",
"Invalid token": "Invalid token",
"State expected: %s, but got: %s": "State expected: %s, but got: %s",
"The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up": "The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up",
"The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support": "The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support",
"The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)",
"The application: %s does not exist": "The application: %s does not exist",
"The login method: login with password is not enabled for the application": "The login method: login with password is not enabled for the application",
"The provider: %s is not enabled for the application": "The provider: %s is not enabled for the application",
"Unauthorized operation": "Unauthorized operation",
"Unknown authentication type (not password or provider), form = %s": "Unknown authentication type (not password or provider), form = %s",
"User's tag: %s is not listed in the application's tags": "User's tag: %s is not listed in the application's tags"
},
"cas": {
"Service %s and %s do not match": "Service %s and %s do not match"
},
"check": {
"Affiliation cannot be blank": "Affiliation cannot be blank",
"DisplayName cannot be blank": "DisplayName cannot be blank",
"DisplayName is not valid real name": "DisplayName is not valid real name",
"Email already exists": "Email already exists",
"Email cannot be empty": "Email cannot be empty",
"Email is invalid": "Email is invalid",
"Empty username.": "Empty username.",
"FirstName cannot be blank": "FirstName cannot be blank",
"LDAP user name or password incorrect": "LDAP user name or password incorrect",
"LastName cannot be blank": "LastName cannot be blank",
"Multiple accounts with same uid, please check your ldap server": "Multiple accounts with same uid, please check your ldap server",
"Organization does not exist": "Organization does not exist",
"Password must have at least 6 characters": "Password must have at least 6 characters",
"Phone already exists": "Phone already exists",
"Phone cannot be empty": "Phone cannot be empty",
"Phone number is invalid": "Phone number is invalid",
"Session outdated, please login again": "Session outdated, please login again",
"The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
"The user: %s doesn't exist in LDAP server": "The user: %s doesn't exist in LDAP server",
"The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.": "The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.",
"Username already exists": "Username already exists",
"Username cannot be an email address": "Username cannot be an email address",
"Username cannot contain white spaces": "Username cannot contain white spaces",
"Username cannot start with a digit": "Username cannot start with a digit",
"Username is too long (maximum is 39 characters).": "Username is too long (maximum is 39 characters).",
"Username must have at least 2 characters": "Username must have at least 2 characters",
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "You have entered the wrong password or code too many times, please wait for %d minutes and try again",
"Your region is not allow to signup by phone": "Your region is not allow to signup by phone",
"password or code is incorrect": "password or code is incorrect",
"password or code is incorrect, you have %d remaining chances": "password or code is incorrect, you have %d remaining chances",
"unsupported password type: %s": "unsupported password type: %s"
},
"general": {
"Missing parameter": "Missing parameter",
"Please login first": "Please login first",
"The user: %s doesn't exist": "The user: %s doesn't exist",
"don't support captchaProvider: ": "don't support captchaProvider: ",
"this operation is not allowed in demo mode": "this operation is not allowed in demo mode"
},
"ldap": {
"Ldap server exist": "Ldap server exist"
},
"link": {
"Please link first": "Please link first",
"This application has no providers": "This application has no providers",
"This application has no providers of type": "This application has no providers of type",
"This provider can't be unlinked": "This provider can't be unlinked",
"You are not the global admin, you can't unlink other users": "You are not the global admin, you can't unlink other users",
"You can't unlink yourself, you are not a member of any application": "You can't unlink yourself, you are not a member of any application"
},
"organization": {
"Only admin can modify the %s.": "Only admin can modify the %s.",
"The %s is immutable.": "The %s is immutable.",
"Unknown modify rule %s.": "Unknown modify rule %s."
},
"provider": {
"Invalid application id": "Invalid application id",
"the provider: %s does not exist": "the provider: %s does not exist"
},
"resource": {
"User is nil for tag: avatar": "User is nil for tag: avatar",
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Username or fullFilePath is empty: username = %s, fullFilePath = %s"
},
"saml": {
"Application %s not found": "Application %s not found"
},
"saml_sp": {
"provider %s's category is not SAML": "provider %s's category is not SAML"
},
"service": {
"Empty parameters for emailForm: %v": "Empty parameters for emailForm: %v",
"Invalid Email receivers: %s": "Invalid Email receivers: %s",
"Invalid phone receivers: %s": "Invalid phone receivers: %s"
},
"storage": {
"The objectKey: %s is not allowed": "The objectKey: %s is not allowed",
"The provider type: %s is not supported": "The provider type: %s is not supported"
},
"token": {
"Empty clientId or clientSecret": "Empty clientId or clientSecret",
"Grant_type: %s is not supported in this application": "Grant_type: %s is not supported in this application",
"Invalid application or wrong clientSecret": "Invalid application or wrong clientSecret",
"Invalid client_id": "Invalid client_id",
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "Redirect URI: %s doesn't exist in the allowed Redirect URI list",
"Token not found, invalid accessToken": "Token not found, invalid accessToken"
},
"user": {
"Display name cannot be empty": "Display name cannot be empty",
"New password cannot contain blank space.": "New password cannot contain blank space."
},
"user_upload": {
"Failed to import users": "Failed to import users"
},
"util": {
"No application is found for userId: %s": "No application is found for userId: %s",
"No provider for category: %s is found for application: %s": "No provider for category: %s is found for application: %s",
"The provider: %s is not found": "The provider: %s is not found"
},
"verification": {
"Code has not been sent yet!": "Code has not been sent yet!",
"Invalid captcha provider.": "Invalid captcha provider.",
"Phone number is invalid in your region %s": "Phone number is invalid in your region %s",
"Turing test failed.": "Turing test failed.",
"Unable to get the email modify rule.": "Unable to get the email modify rule.",
"Unable to get the phone modify rule.": "Unable to get the phone modify rule.",
"Unknown type": "Unknown type",
"Wrong verification code!": "Wrong verification code!",
"You should verify your code in %d min!": "You should verify your code in %d min!",
"the user does not exist, please sign up first": "the user does not exist, please sign up first"
},
"webauthn": {
"Found no credentials for this user": "Found no credentials for this user",
"Please call WebAuthnSigninBegin first": "Please call WebAuthnSigninBegin first"
}
}

View File

@@ -9,11 +9,11 @@
"passwordType": "plain",
"passwordSalt": "",
"passwordOptions": ["AtLeast6"],
"countryCodes": ["US", "ES", "CN", "FR", "DE", "GB", "JP", "KR", "VN", "ID", "SG", "IN", "IT", "MY", "TR"],
"countryCodes": ["US", "ES", "CN", "FR", "DE", "GB", "JP", "KR", "VN", "ID", "SG", "IN", "IT", "MY", "TR", "DZ", "IL", "PH"],
"defaultAvatar": "",
"defaultApplication": "",
"tags": [],
"languages": ["en", "zh", "es", "fr", "de", "id", "ja", "ko", "ru", "vi", "it", "ms", "tr"],
"languages": ["en", "zh", "es", "fr", "de", "id", "ja", "ko", "ru", "vi", "it", "ms", "tr","ar", "he", "fi"],
"masterPassword": "",
"initScore": 2000,
"enableSoftDeletion": false,

View File

@@ -17,6 +17,7 @@ package object
import (
"errors"
"fmt"
"time"
"github.com/beego/beego"
"github.com/beego/beego/context"
@@ -25,7 +26,10 @@ import (
"github.com/pquerna/otp/totp"
)
const MfaTotpSecretSession = "mfa_totp_secret"
const (
MfaTotpSecretSession = "mfa_totp_secret"
MfaTotpPeriodInSeconds = 30
)
type TotpMfa struct {
Config *MfaProps
@@ -76,7 +80,13 @@ func (mfa *TotpMfa) SetupVerify(ctx *context.Context, passcode string) error {
if secret == nil {
return errors.New("totp secret is missing")
}
result := totp.Validate(passcode, secret.(string))
result, _ := totp.ValidateCustom(passcode, secret.(string), time.Now().UTC(), totp.ValidateOpts{
Period: MfaTotpPeriodInSeconds,
Skew: 1,
Digits: otp.DigitsSix,
Algorithm: otp.AlgorithmSHA1,
})
if result {
return nil
@@ -133,7 +143,7 @@ func NewTotpMfaUtil(config *MfaProps) *TotpMfa {
return &TotpMfa{
Config: config,
period: 30,
period: MfaTotpPeriodInSeconds,
secretSize: 20,
digits: otp.DigitsSix,
}

View File

@@ -46,6 +46,9 @@ export const Countries = [{label: "English", key: "en", country: "US", alt: "Eng
{label: "Itariano", key: "it", country: "IT", alt: "Itariano"},
{label: "Marley", key: "ms", country: "MY", alt: "Marley"},
{label: "Tkiš", key: "tr", country: "TR", alt: "Tkiš"},
{label: "لغة عربية", key: "ar", country: "DZ", alt: "لغة عربية"},
{label: "עִבְרִית", key: "he", country: "IL", alt: "עִבְרִית"},
{label: "Filipino", key: "fi", country: "PH", alt: "Filipino"},
];
export function getThemeData(organization, application) {

View File

@@ -15,9 +15,11 @@
import React from "react";
import {Button, Card, Col, Input, InputNumber, List, Result, Row, Select, Space, Spin, Switch, Tag} from "antd";
import {withRouter} from "react-router-dom";
import {TotpMfaType} from "./auth/MfaSetupPage";
import * as GroupBackend from "./backend/GroupBackend";
import * as UserBackend from "./backend/UserBackend";
import * as OrganizationBackend from "./backend/OrganizationBackend";
import EnableMfaModal from "./common/modal/EnableMfaModal";
import * as Setting from "./Setting";
import i18next from "i18next";
import CropperDivModal from "./common/modal/CropperDivModal.js";
@@ -138,6 +140,10 @@ class UserEditPage extends React.Component {
}
getUserOrganization() {
if (this.state.user === null || this.state.organizations.length === 0) {
return null;
}
return this.state.organizations.filter(organization => organization.name === this.state.user.owner)[0];
}
@@ -206,23 +212,6 @@ class UserEditPage extends React.Component {
return this.props.account.countryCode;
}
loadMore = (table, type) => {
return <div
style={{
textAlign: "center",
marginTop: 12,
height: 32,
lineHeight: "32px",
}}
>
<Button onClick={() => {
this.setState({
multiFactorAuths: Setting.addRow(table, {"type": type}),
});
}}>{i18next.t("general:Add")}</Button>
</div>;
};
deleteMfa = () => {
this.setState({
RemoveMfaLoading: true,
@@ -947,11 +936,18 @@ class UserEditPage extends React.Component {
</Button>
}
</Space>
) : <Button type={"default"} onClick={() => {
this.props.history.push(`/mfa/setup?mfaType=${item.mfaType}`);
}}>
{i18next.t("mfa:Setup")}
</Button>}
) :
<Space>
{item.mfaType !== TotpMfaType && Setting.isAdminUser(this.props.account) && window.location.href.indexOf("/users") !== -1 ?
<EnableMfaModal user={this.state.user} mfaType={item.mfaType} onSuccess={() => {
this.getUser();
}} /> : null}
<Button type={"default"} onClick={() => {
this.props.history.push(`/mfa/setup?mfaType=${item.mfaType}`);
}}>
{i18next.t("mfa:Setup")}
</Button>
</Space>}
</List.Item>
)}
/>

View File

@@ -0,0 +1,113 @@
// Copyright 2023 The Casdoor Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
import {Button, Modal} from "antd";
import i18next from "i18next";
import React from "react";
import {useEffect, useState} from "react";
import {EmailMfaType} from "../../auth/MfaSetupPage";
import * as MfaBackend from "../../backend/MfaBackend";
import * as Setting from "../../Setting";
const EnableMfaModal = ({user, mfaType, onSuccess}) => {
const [open, setOpen] = useState(false);
const [loading, setLoading] = useState(false);
useEffect(() => {
if (!open || !user) {
return;
}
MfaBackend.MfaSetupInitiate({
mfaType,
...user,
}).then((res) => {
if (res.status === "error") {
Setting.showMessage("error", i18next.t("mfa:Failed to initiate MFA"));
}
});
}, [open]);
const handleOk = () => {
setLoading(true);
MfaBackend.MfaSetupEnable({
mfaType,
...user,
}).then(res => {
if (res.status === "ok") {
Setting.showMessage("success", i18next.t("general:Enabled successfully"));
setOpen(false);
onSuccess();
} else {
Setting.showMessage("error", `${i18next.t("general:Failed to enable")}: ${res.msg}`);
}
}
).finally(() => {
setLoading(false);
});
};
const handleCancel = () => {
setOpen(false);
};
const showModal = () => {
if (!isValid()) {
if (mfaType === EmailMfaType) {
Setting.showMessage("error", i18next.t("signup:Please input your Email!"));
} else {
Setting.showMessage("error", i18next.t("signup:Please input your phone number!"));
}
return;
}
setOpen(true);
};
const renderText = () => {
return (
<p>{i18next.t("mfa:Please confirm the information below")}<br />
<b>{i18next.t("general:User")}</b>: {`${user.owner}/${user.name}`}<br />
{mfaType === EmailMfaType ?
<><b>{i18next.t("general:Email")}</b> : {user.email}</> :
<><b>{i18next.t("general:Phone")}</b> : {user.phone}</>}
</p>
);
};
const isValid = () => {
if (mfaType === EmailMfaType) {
return user.email !== "";
} else {
return user.phone !== "";
}
};
return (
<React.Fragment>
<Button type="primary" onClick={showModal}>
{i18next.t("general:Enable")}
</Button>
<Modal
title={i18next.t("mfa:Enable multi-factor authentication")}
open={open}
onOk={handleOk}
onCancel={handleCancel}
confirmLoading={loading}
>
{renderText()}
</Modal>
</React.Fragment>
);
};
export default EnableMfaModal;

View File

@@ -27,6 +27,9 @@ import pt from "./locales/pt/data.json";
import it from "./locales/it/data.json";
import ms from "./locales/ms/data.json";
import tr from "./locales/tr/data.json";
import ar from "./locales/ar/data.json";
import he from "./locales/he/data.json";
import fi from "./locales/fi/data.json";
import * as Conf from "./Conf";
import {initReactI18next} from "react-i18next";
@@ -45,6 +48,9 @@ const resources = {
it: it,
ms: ms,
tr: tr,
ar: ar,
he: he,
fi: fi,
};
function initLanguage() {
@@ -103,6 +109,15 @@ function initLanguage() {
case "tr":
language = "tr";
break;
case "ar":
language = "ar";
break;
case "he":
language = "he";
break;
case "fi":
language = "fi";
break;
default:
language = Conf.DefaultLanguage;
}

1008
web/src/locales/ar/data.json Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -11,6 +11,7 @@
"New Adapter": "Neuer Adapter",
"Policies": "Richtlinien",
"Policies - Tooltip": "Casbin Richtlinienregeln",
"Rule type": "Rule type",
"Sync policies successfully": "Richtlinien synchronisiert"
},
"application": {
@@ -353,6 +354,13 @@
"Show all": "Show all",
"Virtual": "Virtual"
},
"home": {
"New users past 30 days": "New users past 30 days",
"New users past 7 days": "New users past 7 days",
"New users today": "New users today",
"Past 30 Days": "Past 30 Days",
"Total users": "Total users"
},
"ldap": {
"Admin": "Admin",
"Admin - Tooltip": "CN oder ID des LDAP-Serveradministrators",
@@ -388,6 +396,7 @@
"Continue with": "Weitermachen mit",
"Email or phone": "E-Mail oder Telefon",
"Failed to obtain MetaMask authorization": "Failed to obtain MetaMask authorization",
"Failed to obtain Web3-Onboard authorization": "Failed to obtain Web3-Onboard authorization",
"Forgot password?": "Passwort vergessen?",
"Loading": "Laden",
"Logging out...": "Ausloggen...",
@@ -431,6 +440,7 @@
"Passcode": "Passcode",
"Please bind your email first, the system will automatically uses the mail for multi-factor authentication": "Please bind your email first, the system will automatically uses the mail for multi-factor authentication",
"Please bind your phone first, the system automatically uses the phone for multi-factor authentication": "Please bind your phone first, the system automatically uses the phone for multi-factor authentication",
"Please confirm the information below": "Please confirm the information below",
"Please save this recovery code. Once your device cannot provide an authentication code, you can reset mfa authentication by this recovery code": "Please save this recovery code. Once your device cannot provide an authentication code, you can reset mfa authentication by this recovery code",
"Protect your account with Multi-factor authentication": "Protect your account with Multi-factor authentication",
"Recovery code": "Recovery code",
@@ -523,6 +533,7 @@
"Return to Website": "Zurück zur Website",
"The payment has been canceled": "The payment has been canceled",
"The payment has failed": "Die Zahlung ist fehlgeschlagen",
"The payment has time out": "The payment has time out",
"The payment is still under processing": "Die Zahlung wird immer noch bearbeitet",
"Type - Tooltip": "Zahlungsmethode, die beim Kauf des Produkts verwendet wurde",
"You have successfully completed the payment": "Sie haben die Zahlung erfolgreich abgeschlossen",
@@ -604,6 +615,7 @@
"SKU": "SKU",
"Sold": "Verkauft",
"Sold - Tooltip": "Menge verkauft",
"Stripe": "Stripe",
"Tag - Tooltip": "Tag des Produkts",
"Test buy page..": "Testkaufseite.",
"There is no payment channel for this product.": "Es gibt keinen Zahlungskanal für dieses Produkt.",
@@ -648,6 +660,8 @@
"Client secret - Tooltip": "Client-Geheimnis",
"Client secret 2": "Client-Secret 2",
"Client secret 2 - Tooltip": "Der zweite Client-Secret-Key",
"Content": "Content",
"Content - Tooltip": "Content - Tooltip",
"Copy": "Kopieren",
"Disable SSL": "SSL deaktivieren",
"Disable SSL - Tooltip": "Ob die Deaktivierung des SSL-Protokolls bei der Kommunikation mit dem STMP-Server erfolgen soll",
@@ -682,6 +696,8 @@
"Method - Tooltip": "Anmeldeverfahren, QR-Code oder Silent-Login",
"New Provider": "Neuer Provider",
"Normal": "Normal",
"Parameter name": "Parameter name",
"Parameter name - Tooltip": "Parameter name - Tooltip",
"Parse": "parsen",
"Parse metadata successfully": "Metadaten erfolgreich analysiert",
"Path prefix": "Pfadpräfix",
@@ -758,6 +774,8 @@
"User mapping - Tooltip": "User mapping - Tooltip",
"UserInfo URL": "UserInfo-URL",
"UserInfo URL - Tooltip": "UserInfo-URL",
"Wallets": "Wallets",
"Wallets - Tooltip": "Wallets - Tooltip",
"admin (Shared)": "admin (Shared)"
},
"record": {
@@ -849,9 +867,7 @@
"Table": "Tabelle",
"Table - Tooltip": "Name der Datenbanktabelle",
"Table columns": "Tabellenspalten",
"Table columns - Tooltip": "Spalten in der Tabelle, die an der Datensynchronisierung beteiligt sind. Spalten, die nicht an der Synchronisierung beteiligt sind, müssen nicht hinzugefügt werden",
"Table primary key": "Primärschlüssel der Tabelle",
"Table primary key - Tooltip": "Primärschlüssel in einer Tabelle, wie beispielsweise eine ID"
"Table columns - Tooltip": "Spalten in der Tabelle, die an der Datensynchronisierung beteiligt sind. Spalten, die nicht an der Synchronisierung beteiligt sind, müssen nicht hinzugefügt werden"
},
"system": {
"API Latency": "API Latenz",

View File

@@ -11,6 +11,7 @@
"New Adapter": "New Adapter",
"Policies": "Policies",
"Policies - Tooltip": "Casbin policy rules",
"Rule type": "Rule type",
"Sync policies successfully": "Sync policies successfully"
},
"application": {
@@ -353,6 +354,13 @@
"Show all": "Show all",
"Virtual": "Virtual"
},
"home": {
"New users past 30 days": "New users past 30 days",
"New users past 7 days": "New users past 7 days",
"New users today": "New users today",
"Past 30 Days": "Past 30 Days",
"Total users": "Total users"
},
"ldap": {
"Admin": "Admin",
"Admin - Tooltip": "CN or ID of the LDAP server administrator",
@@ -388,6 +396,7 @@
"Continue with": "Continue with",
"Email or phone": "Email or phone",
"Failed to obtain MetaMask authorization": "Failed to obtain MetaMask authorization",
"Failed to obtain Web3-Onboard authorization": "Failed to obtain Web3-Onboard authorization",
"Forgot password?": "Forgot password?",
"Loading": "Loading",
"Logging out...": "Logging out...",
@@ -431,6 +440,7 @@
"Passcode": "Passcode",
"Please bind your email first, the system will automatically uses the mail for multi-factor authentication": "Please bind your email first, the system will automatically uses the mail for multi-factor authentication",
"Please bind your phone first, the system automatically uses the phone for multi-factor authentication": "Please bind your phone first, the system automatically uses the phone for multi-factor authentication",
"Please confirm the information below": "Please confirm the information below",
"Please save this recovery code. Once your device cannot provide an authentication code, you can reset mfa authentication by this recovery code": "Please save this recovery code. Once your device cannot provide an authentication code, you can reset mfa authentication by this recovery code",
"Protect your account with Multi-factor authentication": "Protect your account with Multi-factor authentication",
"Recovery code": "Recovery code",
@@ -523,6 +533,7 @@
"Return to Website": "Return to Website",
"The payment has been canceled": "The payment has been canceled",
"The payment has failed": "The payment has failed",
"The payment has time out": "The payment has time out",
"The payment is still under processing": "The payment is still under processing",
"Type - Tooltip": "Payment method used when purchasing the product",
"You have successfully completed the payment": "You have successfully completed the payment",
@@ -604,6 +615,7 @@
"SKU": "SKU",
"Sold": "Sold",
"Sold - Tooltip": "Quantity sold",
"Stripe": "Stripe",
"Tag - Tooltip": "Tag of product",
"Test buy page..": "Test buy page..",
"There is no payment channel for this product.": "There is no payment channel for this product.",
@@ -648,6 +660,8 @@
"Client secret - Tooltip": "Client secret",
"Client secret 2": "Client secret 2",
"Client secret 2 - Tooltip": "The second client secret key",
"Content": "Content",
"Content - Tooltip": "Content - Tooltip",
"Copy": "Copy",
"Disable SSL": "Disable SSL",
"Disable SSL - Tooltip": "Whether to disable SSL protocol when communicating with STMP server",
@@ -682,6 +696,8 @@
"Method - Tooltip": "Login method, QR code or silent login",
"New Provider": "New Provider",
"Normal": "Normal",
"Parameter name": "Parameter name",
"Parameter name - Tooltip": "Parameter name - Tooltip",
"Parse": "Parse",
"Parse metadata successfully": "Parse metadata successfully",
"Path prefix": "Path prefix",
@@ -758,6 +774,8 @@
"User mapping - Tooltip": "User mapping - Tooltip",
"UserInfo URL": "UserInfo URL",
"UserInfo URL - Tooltip": "UserInfo URL",
"Wallets": "Wallets",
"Wallets - Tooltip": "Wallets - Tooltip",
"admin (Shared)": "admin (Shared)"
},
"record": {
@@ -849,9 +867,7 @@
"Table": "Table",
"Table - Tooltip": "Name of database table",
"Table columns": "Table columns",
"Table columns - Tooltip": "Columns in the table involved in data synchronization. Columns that are not involved in synchronization do not need to be added",
"Table primary key": "Table primary key",
"Table primary key - Tooltip": "Table primary key, such as id"
"Table columns - Tooltip": "Columns in the table involved in data synchronization. Columns that are not involved in synchronization do not need to be added"
},
"system": {
"API Latency": "API Latency",

View File

@@ -11,6 +11,7 @@
"New Adapter": "Nuevo adaptador",
"Policies": "Políticas",
"Policies - Tooltip": "Reglas de política de Casbin",
"Rule type": "Rule type",
"Sync policies successfully": "Sincronizar políticas correctamente"
},
"application": {
@@ -353,6 +354,13 @@
"Show all": "Show all",
"Virtual": "Virtual"
},
"home": {
"New users past 30 days": "New users past 30 days",
"New users past 7 days": "New users past 7 days",
"New users today": "New users today",
"Past 30 Days": "Past 30 Days",
"Total users": "Total users"
},
"ldap": {
"Admin": "Administrador",
"Admin - Tooltip": "CN o ID del administrador del servidor LDAP",
@@ -388,6 +396,7 @@
"Continue with": "Continúe con",
"Email or phone": "Correo electrónico o teléfono",
"Failed to obtain MetaMask authorization": "Failed to obtain MetaMask authorization",
"Failed to obtain Web3-Onboard authorization": "Failed to obtain Web3-Onboard authorization",
"Forgot password?": "¿Olvidaste tu contraseña?",
"Loading": "Cargando",
"Logging out...": "Cerrando sesión...",
@@ -431,6 +440,7 @@
"Passcode": "Passcode",
"Please bind your email first, the system will automatically uses the mail for multi-factor authentication": "Please bind your email first, the system will automatically uses the mail for multi-factor authentication",
"Please bind your phone first, the system automatically uses the phone for multi-factor authentication": "Please bind your phone first, the system automatically uses the phone for multi-factor authentication",
"Please confirm the information below": "Please confirm the information below",
"Please save this recovery code. Once your device cannot provide an authentication code, you can reset mfa authentication by this recovery code": "Please save this recovery code. Once your device cannot provide an authentication code, you can reset mfa authentication by this recovery code",
"Protect your account with Multi-factor authentication": "Protect your account with Multi-factor authentication",
"Recovery code": "Recovery code",
@@ -523,6 +533,7 @@
"Return to Website": "Regresar al sitio web",
"The payment has been canceled": "The payment has been canceled",
"The payment has failed": "El pago ha fallado",
"The payment has time out": "The payment has time out",
"The payment is still under processing": "El pago aún está en proceso",
"Type - Tooltip": "Método de pago utilizado al comprar el producto",
"You have successfully completed the payment": "Has completado el pago exitosamente",
@@ -604,6 +615,7 @@
"SKU": "SKU",
"Sold": "Vendido",
"Sold - Tooltip": "Cantidad vendida",
"Stripe": "Stripe",
"Tag - Tooltip": "Etiqueta de producto",
"Test buy page..": "Página de compra de prueba.",
"There is no payment channel for this product.": "No hay canal de pago para este producto.",
@@ -648,6 +660,8 @@
"Client secret - Tooltip": "Secreto del cliente",
"Client secret 2": "Secreto del cliente 2",
"Client secret 2 - Tooltip": "La segunda clave secreta del cliente",
"Content": "Content",
"Content - Tooltip": "Content - Tooltip",
"Copy": "Copiar",
"Disable SSL": "Desactivar SSL",
"Disable SSL - Tooltip": "¿Hay que desactivar el protocolo SSL al comunicarse con el servidor STMP?",
@@ -682,6 +696,8 @@
"Method - Tooltip": "Método de inicio de sesión, código QR o inicio de sesión silencioso",
"New Provider": "Nuevo proveedor",
"Normal": "Normal",
"Parameter name": "Parameter name",
"Parameter name - Tooltip": "Parameter name - Tooltip",
"Parse": "Analizar",
"Parse metadata successfully": "Analizar los metadatos con éxito",
"Path prefix": "Prefijo de ruta",
@@ -758,6 +774,8 @@
"User mapping - Tooltip": "User mapping - Tooltip",
"UserInfo URL": "URL de información del usuario",
"UserInfo URL - Tooltip": "URL de información de usuario",
"Wallets": "Wallets",
"Wallets - Tooltip": "Wallets - Tooltip",
"admin (Shared)": "administrador (compartido)"
},
"record": {
@@ -849,9 +867,7 @@
"Table": "Mesa",
"Table - Tooltip": "Nombre de la tabla de la base de datos",
"Table columns": "Columnas de tabla",
"Table columns - Tooltip": "Columnas en la tabla involucradas en la sincronización de datos. Las columnas que no estén involucradas en la sincronización no necesitan ser añadidas",
"Table primary key": "Clave primaria de la tabla",
"Table primary key - Tooltip": "Clave primaria de la tabla, como id"
"Table columns - Tooltip": "Columnas en la tabla involucradas en la sincronización de datos. Las columnas que no estén involucradas en la sincronización no necesitan ser añadidas"
},
"system": {
"API Latency": "Retraso API",

1008
web/src/locales/fi/data.json Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -11,6 +11,7 @@
"New Adapter": "Nouvel adaptateur",
"Policies": "Politiques",
"Policies - Tooltip": "Règles de politique Casbin",
"Rule type": "Rule type",
"Sync policies successfully": "Synchronisation des politiques réussie"
},
"application": {
@@ -353,6 +354,13 @@
"Show all": "Show all",
"Virtual": "Virtual"
},
"home": {
"New users past 30 days": "New users past 30 days",
"New users past 7 days": "New users past 7 days",
"New users today": "New users today",
"Past 30 Days": "Past 30 Days",
"Total users": "Total users"
},
"ldap": {
"Admin": "Admin",
"Admin - Tooltip": "CN ou ID de l'administrateur du serveur LDAP",
@@ -388,6 +396,7 @@
"Continue with": "Continuer avec",
"Email or phone": "Email ou téléphone",
"Failed to obtain MetaMask authorization": "Failed to obtain MetaMask authorization",
"Failed to obtain Web3-Onboard authorization": "Failed to obtain Web3-Onboard authorization",
"Forgot password?": "Mot de passe oublié ?",
"Loading": "Chargement",
"Logging out...": "Déconnexion...",
@@ -431,6 +440,7 @@
"Passcode": "Passcode",
"Please bind your email first, the system will automatically uses the mail for multi-factor authentication": "Please bind your email first, the system will automatically uses the mail for multi-factor authentication",
"Please bind your phone first, the system automatically uses the phone for multi-factor authentication": "Please bind your phone first, the system automatically uses the phone for multi-factor authentication",
"Please confirm the information below": "Please confirm the information below",
"Please save this recovery code. Once your device cannot provide an authentication code, you can reset mfa authentication by this recovery code": "Please save this recovery code. Once your device cannot provide an authentication code, you can reset mfa authentication by this recovery code",
"Protect your account with Multi-factor authentication": "Protect your account with Multi-factor authentication",
"Recovery code": "Recovery code",
@@ -523,6 +533,7 @@
"Return to Website": "Retourner sur le site web",
"The payment has been canceled": "The payment has been canceled",
"The payment has failed": "Le paiement a échoué",
"The payment has time out": "The payment has time out",
"The payment is still under processing": "Le paiement est encore en cours de traitement",
"Type - Tooltip": "Méthode de paiement utilisée lors de l'achat du produit",
"You have successfully completed the payment": "Vous avez effectué le paiement avec succès",
@@ -604,6 +615,7 @@
"SKU": "SKU",
"Sold": "Vendu",
"Sold - Tooltip": "Quantité vendue",
"Stripe": "Stripe",
"Tag - Tooltip": "Étiquette de produit",
"Test buy page..": "Page d'achat de test.",
"There is no payment channel for this product.": "Il n'y a aucun canal de paiement pour ce produit.",
@@ -648,6 +660,8 @@
"Client secret - Tooltip": "Secret client",
"Client secret 2": "Secret client 2",
"Client secret 2 - Tooltip": "La deuxième clé secrète du client",
"Content": "Content",
"Content - Tooltip": "Content - Tooltip",
"Copy": "Copie",
"Disable SSL": "Désactiver SSL",
"Disable SSL - Tooltip": "Doit-on désactiver le protocole SSL lors de la communication avec le serveur STMP ?",
@@ -682,6 +696,8 @@
"Method - Tooltip": "Méthode de connexion, code QR ou connexion silencieuse",
"New Provider": "Nouveau fournisseur",
"Normal": "Normal",
"Parameter name": "Parameter name",
"Parameter name - Tooltip": "Parameter name - Tooltip",
"Parse": "Parser",
"Parse metadata successfully": "Parcourir les métadonnées avec succès",
"Path prefix": "Préfixe de chemin",
@@ -758,6 +774,8 @@
"User mapping - Tooltip": "User mapping - Tooltip",
"UserInfo URL": "URL d'informations utilisateur",
"UserInfo URL - Tooltip": "URL d'informations sur l'utilisateur",
"Wallets": "Wallets",
"Wallets - Tooltip": "Wallets - Tooltip",
"admin (Shared)": "admin (Partagé)"
},
"record": {
@@ -849,9 +867,7 @@
"Table": "Table",
"Table - Tooltip": "Nom de la table de base de données",
"Table columns": "Colonnes de table",
"Table columns - Tooltip": "Colonnes dans la table impliquées dans la synchronisation des données. Les colonnes qui ne sont pas impliquées dans la synchronisation n'ont pas besoin d'être ajoutées",
"Table primary key": "Clé primaire de table",
"Table primary key - Tooltip": "Clé primaire de la table, telle que l'id"
"Table columns - Tooltip": "Colonnes dans la table impliquées dans la synchronisation des données. Les colonnes qui ne sont pas impliquées dans la synchronisation n'ont pas besoin d'être ajoutées"
},
"system": {
"API Latency": "Retard API",

1008
web/src/locales/he/data.json Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -11,6 +11,7 @@
"New Adapter": "Adapter Baru",
"Policies": "Kebijakan",
"Policies - Tooltip": "Kebijakan aturan Casbin",
"Rule type": "Rule type",
"Sync policies successfully": "Sinkronisasi kebijakan berhasil dilakukan"
},
"application": {
@@ -353,6 +354,13 @@
"Show all": "Show all",
"Virtual": "Virtual"
},
"home": {
"New users past 30 days": "New users past 30 days",
"New users past 7 days": "New users past 7 days",
"New users today": "New users today",
"Past 30 Days": "Past 30 Days",
"Total users": "Total users"
},
"ldap": {
"Admin": "Admin",
"Admin - Tooltip": "CN atau ID dari administrator server LDAP",
@@ -388,6 +396,7 @@
"Continue with": "Lanjutkan dengan",
"Email or phone": "Email atau telepon",
"Failed to obtain MetaMask authorization": "Failed to obtain MetaMask authorization",
"Failed to obtain Web3-Onboard authorization": "Failed to obtain Web3-Onboard authorization",
"Forgot password?": "Lupa kata sandi?",
"Loading": "Memuat",
"Logging out...": "Keluar...",
@@ -431,6 +440,7 @@
"Passcode": "Passcode",
"Please bind your email first, the system will automatically uses the mail for multi-factor authentication": "Please bind your email first, the system will automatically uses the mail for multi-factor authentication",
"Please bind your phone first, the system automatically uses the phone for multi-factor authentication": "Please bind your phone first, the system automatically uses the phone for multi-factor authentication",
"Please confirm the information below": "Please confirm the information below",
"Please save this recovery code. Once your device cannot provide an authentication code, you can reset mfa authentication by this recovery code": "Please save this recovery code. Once your device cannot provide an authentication code, you can reset mfa authentication by this recovery code",
"Protect your account with Multi-factor authentication": "Protect your account with Multi-factor authentication",
"Recovery code": "Recovery code",
@@ -523,6 +533,7 @@
"Return to Website": "Kembali ke Situs Web",
"The payment has been canceled": "The payment has been canceled",
"The payment has failed": "Pembayaran gagal",
"The payment has time out": "The payment has time out",
"The payment is still under processing": "Pembayaran masih dalam proses",
"Type - Tooltip": "Metode pembayaran yang digunakan saat membeli produk",
"You have successfully completed the payment": "Anda telah berhasil menyelesaikan pembayaran",
@@ -604,6 +615,7 @@
"SKU": "SKU",
"Sold": "Terjual",
"Sold - Tooltip": "Jumlah terjual",
"Stripe": "Stripe",
"Tag - Tooltip": "Tag produk",
"Test buy page..": "Halaman pembelian uji coba.",
"There is no payment channel for this product.": "Tidak ada saluran pembayaran untuk produk ini.",
@@ -648,6 +660,8 @@
"Client secret - Tooltip": "Rahasia klien",
"Client secret 2": "Rahasia klien 2",
"Client secret 2 - Tooltip": "Kunci rahasia klien kedua",
"Content": "Content",
"Content - Tooltip": "Content - Tooltip",
"Copy": "Salin",
"Disable SSL": "Menonaktifkan SSL",
"Disable SSL - Tooltip": "Apakah perlu menonaktifkan protokol SSL saat berkomunikasi dengan server STMP?",
@@ -682,6 +696,8 @@
"Method - Tooltip": "Metode login, kode QR atau login tanpa suara",
"New Provider": "Penyedia Baru",
"Normal": "Normal",
"Parameter name": "Parameter name",
"Parameter name - Tooltip": "Parameter name - Tooltip",
"Parse": "Parse: Memecah atau mengurai data atau teks menjadi bagian-bagian yang lebih kecil dan lebih mudah dipahami atau dimanipulasi",
"Parse metadata successfully": "Berhasil mem-parse metadata",
"Path prefix": "Awalan jalur",
@@ -758,6 +774,8 @@
"User mapping - Tooltip": "User mapping - Tooltip",
"UserInfo URL": "URL UserInfo",
"UserInfo URL - Tooltip": "URL Informasi Pengguna",
"Wallets": "Wallets",
"Wallets - Tooltip": "Wallets - Tooltip",
"admin (Shared)": "Admin (Berbagi)"
},
"record": {
@@ -849,9 +867,7 @@
"Table": "Tabel",
"Table - Tooltip": "Nama tabel database",
"Table columns": "Kolom tabel",
"Table columns - Tooltip": "Kolom pada tabel yang terlibat dalam sinkronisasi data. Kolom yang tidak terlibat dalam sinkronisasi tidak perlu ditambahkan",
"Table primary key": "Kunci utama tabel",
"Table primary key - Tooltip": "Kunci primer tabel, seperti id"
"Table columns - Tooltip": "Kolom pada tabel yang terlibat dalam sinkronisasi data. Kolom yang tidak terlibat dalam sinkronisasi tidak perlu ditambahkan"
},
"system": {
"API Latency": "API Latency",

View File

@@ -11,6 +11,7 @@
"New Adapter": "New Adapter",
"Policies": "Policies",
"Policies - Tooltip": "Casbin policy rules",
"Rule type": "Rule type",
"Sync policies successfully": "Sync policies successfully"
},
"application": {
@@ -353,6 +354,13 @@
"Show all": "Show all",
"Virtual": "Virtual"
},
"home": {
"New users past 30 days": "New users past 30 days",
"New users past 7 days": "New users past 7 days",
"New users today": "New users today",
"Past 30 Days": "Past 30 Days",
"Total users": "Total users"
},
"ldap": {
"Admin": "Admin",
"Admin - Tooltip": "CN or ID of the LDAP server administrator",
@@ -388,6 +396,7 @@
"Continue with": "Continue with",
"Email or phone": "Email or phone",
"Failed to obtain MetaMask authorization": "Failed to obtain MetaMask authorization",
"Failed to obtain Web3-Onboard authorization": "Failed to obtain Web3-Onboard authorization",
"Forgot password?": "Forgot password?",
"Loading": "Loading",
"Logging out...": "Logging out...",
@@ -431,6 +440,7 @@
"Passcode": "Passcode",
"Please bind your email first, the system will automatically uses the mail for multi-factor authentication": "Please bind your email first, the system will automatically uses the mail for multi-factor authentication",
"Please bind your phone first, the system automatically uses the phone for multi-factor authentication": "Please bind your phone first, the system automatically uses the phone for multi-factor authentication",
"Please confirm the information below": "Please confirm the information below",
"Please save this recovery code. Once your device cannot provide an authentication code, you can reset mfa authentication by this recovery code": "Please save this recovery code. Once your device cannot provide an authentication code, you can reset mfa authentication by this recovery code",
"Protect your account with Multi-factor authentication": "Protect your account with Multi-factor authentication",
"Recovery code": "Recovery code",
@@ -523,6 +533,7 @@
"Return to Website": "Return to Website",
"The payment has been canceled": "The payment has been canceled",
"The payment has failed": "The payment has failed",
"The payment has time out": "The payment has time out",
"The payment is still under processing": "The payment is still under processing",
"Type - Tooltip": "Payment method used when purchasing the product",
"You have successfully completed the payment": "You have successfully completed the payment",
@@ -604,6 +615,7 @@
"SKU": "SKU",
"Sold": "Sold",
"Sold - Tooltip": "Quantity sold",
"Stripe": "Stripe",
"Tag - Tooltip": "Tag of product",
"Test buy page..": "Test buy page..",
"There is no payment channel for this product.": "There is no payment channel for this product.",
@@ -648,6 +660,8 @@
"Client secret - Tooltip": "Client secret",
"Client secret 2": "Client secret 2",
"Client secret 2 - Tooltip": "The second client secret key",
"Content": "Content",
"Content - Tooltip": "Content - Tooltip",
"Copy": "Copy",
"Disable SSL": "Disable SSL",
"Disable SSL - Tooltip": "Whether to disable SSL protocol when communicating with STMP server",
@@ -682,6 +696,8 @@
"Method - Tooltip": "Login method, QR code or silent login",
"New Provider": "New Provider",
"Normal": "Normal",
"Parameter name": "Parameter name",
"Parameter name - Tooltip": "Parameter name - Tooltip",
"Parse": "Parse",
"Parse metadata successfully": "Parse metadata successfully",
"Path prefix": "Path prefix",
@@ -758,6 +774,8 @@
"User mapping - Tooltip": "User mapping - Tooltip",
"UserInfo URL": "UserInfo URL",
"UserInfo URL - Tooltip": "UserInfo URL",
"Wallets": "Wallets",
"Wallets - Tooltip": "Wallets - Tooltip",
"admin (Shared)": "admin (Shared)"
},
"record": {
@@ -849,9 +867,7 @@
"Table": "Table",
"Table - Tooltip": "Name of database table",
"Table columns": "Table columns",
"Table columns - Tooltip": "Columns in the table involved in data synchronization. Columns that are not involved in synchronization do not need to be added",
"Table primary key": "Table primary key",
"Table primary key - Tooltip": "Table primary key, such as id"
"Table columns - Tooltip": "Columns in the table involved in data synchronization. Columns that are not involved in synchronization do not need to be added"
},
"system": {
"API Latency": "API Latency",

View File

@@ -11,6 +11,7 @@
"New Adapter": "新しいアダプター",
"Policies": "政策",
"Policies - Tooltip": "Casbinのポリシールール",
"Rule type": "Rule type",
"Sync policies successfully": "ポリシーを同期できました"
},
"application": {
@@ -353,6 +354,13 @@
"Show all": "Show all",
"Virtual": "Virtual"
},
"home": {
"New users past 30 days": "New users past 30 days",
"New users past 7 days": "New users past 7 days",
"New users today": "New users today",
"Past 30 Days": "Past 30 Days",
"Total users": "Total users"
},
"ldap": {
"Admin": "Admin",
"Admin - Tooltip": "LDAPサーバー管理者のCNまたはID",
@@ -388,6 +396,7 @@
"Continue with": "続ける",
"Email or phone": "メールまたは電話",
"Failed to obtain MetaMask authorization": "Failed to obtain MetaMask authorization",
"Failed to obtain Web3-Onboard authorization": "Failed to obtain Web3-Onboard authorization",
"Forgot password?": "パスワードを忘れましたか?",
"Loading": "ローディング",
"Logging out...": "ログアウト中...",
@@ -431,6 +440,7 @@
"Passcode": "Passcode",
"Please bind your email first, the system will automatically uses the mail for multi-factor authentication": "Please bind your email first, the system will automatically uses the mail for multi-factor authentication",
"Please bind your phone first, the system automatically uses the phone for multi-factor authentication": "Please bind your phone first, the system automatically uses the phone for multi-factor authentication",
"Please confirm the information below": "Please confirm the information below",
"Please save this recovery code. Once your device cannot provide an authentication code, you can reset mfa authentication by this recovery code": "Please save this recovery code. Once your device cannot provide an authentication code, you can reset mfa authentication by this recovery code",
"Protect your account with Multi-factor authentication": "Protect your account with Multi-factor authentication",
"Recovery code": "Recovery code",
@@ -523,6 +533,7 @@
"Return to Website": "ウェブサイトに戻る",
"The payment has been canceled": "The payment has been canceled",
"The payment has failed": "支払いに失敗しました",
"The payment has time out": "The payment has time out",
"The payment is still under processing": "支払いはまだ処理中です",
"Type - Tooltip": "製品を購入する際に使用される支払方法",
"You have successfully completed the payment": "あなたは支払いを正常に完了しました",
@@ -604,6 +615,7 @@
"SKU": "SKU",
"Sold": "売れました",
"Sold - Tooltip": "販売数量",
"Stripe": "Stripe",
"Tag - Tooltip": "製品のタグ",
"Test buy page..": "テスト購入ページ。",
"There is no payment channel for this product.": "この製品には支払いチャネルがありません。",
@@ -648,6 +660,8 @@
"Client secret - Tooltip": "クライアント秘密鍵",
"Client secret 2": "クライアントシークレット2",
"Client secret 2 - Tooltip": "第二クライアント秘密鍵",
"Content": "Content",
"Content - Tooltip": "Content - Tooltip",
"Copy": "コピー",
"Disable SSL": "SSLを無効にする",
"Disable SSL - Tooltip": "SMTPサーバーと通信する場合にSSLプロトコルを無効にするかどうか",
@@ -682,6 +696,8 @@
"Method - Tooltip": "ログイン方法、QRコードまたはサイレントログイン",
"New Provider": "新しい提供者",
"Normal": "Normal",
"Parameter name": "Parameter name",
"Parameter name - Tooltip": "Parameter name - Tooltip",
"Parse": "パースする",
"Parse metadata successfully": "メタデータを正常に解析しました",
"Path prefix": "パスプレフィックス",
@@ -758,6 +774,8 @@
"User mapping - Tooltip": "User mapping - Tooltip",
"UserInfo URL": "UserInfo URLを日本語に翻訳すると、「ユーザー情報のURL」となります",
"UserInfo URL - Tooltip": "ユーザー情報URL",
"Wallets": "Wallets",
"Wallets - Tooltip": "Wallets - Tooltip",
"admin (Shared)": "管理者(共有)"
},
"record": {
@@ -849,9 +867,7 @@
"Table": "テーブル",
"Table - Tooltip": "データベーステーブル名",
"Table columns": "テーブルの列",
"Table columns - Tooltip": "テーブルで同期データに関与する列。同期に関係のない列は追加する必要はありません",
"Table primary key": "テーブルの主キー",
"Table primary key - Tooltip": "テーブルのプライマリキー、例えばid"
"Table columns - Tooltip": "テーブルで同期データに関与する列。同期に関係のない列は追加する必要はありません"
},
"system": {
"API Latency": "API遅延",

View File

@@ -11,6 +11,7 @@
"New Adapter": "새로운 어댑터",
"Policies": "정책",
"Policies - Tooltip": "Casbin 정책 규칙",
"Rule type": "Rule type",
"Sync policies successfully": "정책을 성공적으로 동기화했습니다"
},
"application": {
@@ -353,6 +354,13 @@
"Show all": "Show all",
"Virtual": "Virtual"
},
"home": {
"New users past 30 days": "New users past 30 days",
"New users past 7 days": "New users past 7 days",
"New users today": "New users today",
"Past 30 Days": "Past 30 Days",
"Total users": "Total users"
},
"ldap": {
"Admin": "Admin",
"Admin - Tooltip": "LDAP 서버 관리자의 CN 또는 ID",
@@ -388,6 +396,7 @@
"Continue with": "계속하다",
"Email or phone": "이메일 또는 전화",
"Failed to obtain MetaMask authorization": "Failed to obtain MetaMask authorization",
"Failed to obtain Web3-Onboard authorization": "Failed to obtain Web3-Onboard authorization",
"Forgot password?": "비밀번호를 잊으셨나요?",
"Loading": "로딩 중입니다",
"Logging out...": "로그아웃 중...",
@@ -431,6 +440,7 @@
"Passcode": "Passcode",
"Please bind your email first, the system will automatically uses the mail for multi-factor authentication": "Please bind your email first, the system will automatically uses the mail for multi-factor authentication",
"Please bind your phone first, the system automatically uses the phone for multi-factor authentication": "Please bind your phone first, the system automatically uses the phone for multi-factor authentication",
"Please confirm the information below": "Please confirm the information below",
"Please save this recovery code. Once your device cannot provide an authentication code, you can reset mfa authentication by this recovery code": "Please save this recovery code. Once your device cannot provide an authentication code, you can reset mfa authentication by this recovery code",
"Protect your account with Multi-factor authentication": "Protect your account with Multi-factor authentication",
"Recovery code": "Recovery code",
@@ -523,6 +533,7 @@
"Return to Website": "웹 사이트로 돌아가기",
"The payment has been canceled": "The payment has been canceled",
"The payment has failed": "결제가 실패했습니다",
"The payment has time out": "The payment has time out",
"The payment is still under processing": "지불은 아직 처리 중입니다",
"Type - Tooltip": "제품을 구매할 때 사용되는 결제 방법",
"You have successfully completed the payment": "당신은 결제를 성공적으로 완료하셨습니다",
@@ -604,6 +615,7 @@
"SKU": "SKU",
"Sold": "팔렸습니다",
"Sold - Tooltip": "판매량",
"Stripe": "Stripe",
"Tag - Tooltip": "제품 태그",
"Test buy page..": "시험 구매 페이지.",
"There is no payment channel for this product.": "이 제품에 대한 결제 채널이 없습니다.",
@@ -648,6 +660,8 @@
"Client secret - Tooltip": "클라이언트 비밀키",
"Client secret 2": "클라이언트 비밀번호 2",
"Client secret 2 - Tooltip": "두 번째 클라이언트 비밀 키",
"Content": "Content",
"Content - Tooltip": "Content - Tooltip",
"Copy": "복사하다",
"Disable SSL": "SSL을 사용하지 않도록 설정하십시오",
"Disable SSL - Tooltip": "STMP 서버와 통신할 때 SSL 프로토콜을 비활성화할지 여부",
@@ -682,6 +696,8 @@
"Method - Tooltip": "로그인 방법, QR 코드 또는 음성 로그인",
"New Provider": "새로운 공급 업체",
"Normal": "Normal",
"Parameter name": "Parameter name",
"Parameter name - Tooltip": "Parameter name - Tooltip",
"Parse": "파싱",
"Parse metadata successfully": "메타데이터를 성공적으로 분석했습니다",
"Path prefix": "경로 접두어",
@@ -758,6 +774,8 @@
"User mapping - Tooltip": "User mapping - Tooltip",
"UserInfo URL": "사용자 정보 URL",
"UserInfo URL - Tooltip": "UserInfo URL: 사용자 정보 URL",
"Wallets": "Wallets",
"Wallets - Tooltip": "Wallets - Tooltip",
"admin (Shared)": "관리자 (공유)"
},
"record": {
@@ -849,9 +867,7 @@
"Table": "테이블",
"Table - Tooltip": "데이터베이스 테이블 이름",
"Table columns": "테이블 열",
"Table columns - Tooltip": "데이터 동기화에 관련된 테이블의 열들입니다. 동기화에 관련되지 않은 열은 추가할 필요가 없습니다",
"Table primary key": "테이블 기본키",
"Table primary key - Tooltip": "테이블의 기본 키, 예를 들어 id"
"Table columns - Tooltip": "데이터 동기화에 관련된 테이블의 열들입니다. 동기화에 관련되지 않은 열은 추가할 필요가 없습니다"
},
"system": {
"API Latency": "API 지연",

View File

@@ -11,6 +11,7 @@
"New Adapter": "New Adapter",
"Policies": "Policies",
"Policies - Tooltip": "Casbin policy rules",
"Rule type": "Rule type",
"Sync policies successfully": "Sync policies successfully"
},
"application": {
@@ -353,6 +354,13 @@
"Show all": "Show all",
"Virtual": "Virtual"
},
"home": {
"New users past 30 days": "New users past 30 days",
"New users past 7 days": "New users past 7 days",
"New users today": "New users today",
"Past 30 Days": "Past 30 Days",
"Total users": "Total users"
},
"ldap": {
"Admin": "Admin",
"Admin - Tooltip": "CN or ID of the LDAP server administrator",
@@ -388,6 +396,7 @@
"Continue with": "Continue with",
"Email or phone": "Email or phone",
"Failed to obtain MetaMask authorization": "Failed to obtain MetaMask authorization",
"Failed to obtain Web3-Onboard authorization": "Failed to obtain Web3-Onboard authorization",
"Forgot password?": "Forgot password?",
"Loading": "Loading",
"Logging out...": "Logging out...",
@@ -431,6 +440,7 @@
"Passcode": "Passcode",
"Please bind your email first, the system will automatically uses the mail for multi-factor authentication": "Please bind your email first, the system will automatically uses the mail for multi-factor authentication",
"Please bind your phone first, the system automatically uses the phone for multi-factor authentication": "Please bind your phone first, the system automatically uses the phone for multi-factor authentication",
"Please confirm the information below": "Please confirm the information below",
"Please save this recovery code. Once your device cannot provide an authentication code, you can reset mfa authentication by this recovery code": "Please save this recovery code. Once your device cannot provide an authentication code, you can reset mfa authentication by this recovery code",
"Protect your account with Multi-factor authentication": "Protect your account with Multi-factor authentication",
"Recovery code": "Recovery code",
@@ -523,6 +533,7 @@
"Return to Website": "Return to Website",
"The payment has been canceled": "The payment has been canceled",
"The payment has failed": "The payment has failed",
"The payment has time out": "The payment has time out",
"The payment is still under processing": "The payment is still under processing",
"Type - Tooltip": "Payment method used when purchasing the product",
"You have successfully completed the payment": "You have successfully completed the payment",
@@ -604,6 +615,7 @@
"SKU": "SKU",
"Sold": "Sold",
"Sold - Tooltip": "Quantity sold",
"Stripe": "Stripe",
"Tag - Tooltip": "Tag of product",
"Test buy page..": "Test buy page..",
"There is no payment channel for this product.": "There is no payment channel for this product.",
@@ -648,6 +660,8 @@
"Client secret - Tooltip": "Client secret",
"Client secret 2": "Client secret 2",
"Client secret 2 - Tooltip": "The second client secret key",
"Content": "Content",
"Content - Tooltip": "Content - Tooltip",
"Copy": "Copy",
"Disable SSL": "Disable SSL",
"Disable SSL - Tooltip": "Whether to disable SSL protocol when communicating with STMP server",
@@ -682,6 +696,8 @@
"Method - Tooltip": "Login method, QR code or silent login",
"New Provider": "New Provider",
"Normal": "Normal",
"Parameter name": "Parameter name",
"Parameter name - Tooltip": "Parameter name - Tooltip",
"Parse": "Parse",
"Parse metadata successfully": "Parse metadata successfully",
"Path prefix": "Path prefix",
@@ -758,6 +774,8 @@
"User mapping - Tooltip": "User mapping - Tooltip",
"UserInfo URL": "UserInfo URL",
"UserInfo URL - Tooltip": "UserInfo URL",
"Wallets": "Wallets",
"Wallets - Tooltip": "Wallets - Tooltip",
"admin (Shared)": "admin (Shared)"
},
"record": {
@@ -849,9 +867,7 @@
"Table": "Table",
"Table - Tooltip": "Name of database table",
"Table columns": "Table columns",
"Table columns - Tooltip": "Columns in the table involved in data synchronization. Columns that are not involved in synchronization do not need to be added",
"Table primary key": "Table primary key",
"Table primary key - Tooltip": "Table primary key, such as id"
"Table columns - Tooltip": "Columns in the table involved in data synchronization. Columns that are not involved in synchronization do not need to be added"
},
"system": {
"API Latency": "API Latency",

View File

@@ -11,6 +11,7 @@
"New Adapter": "Novo Adaptador",
"Policies": "Políticas",
"Policies - Tooltip": "Regras de política do Casbin",
"Rule type": "Rule type",
"Sync policies successfully": "Políticas sincronizadas com sucesso"
},
"application": {
@@ -353,6 +354,13 @@
"Show all": "Show all",
"Virtual": "Virtual"
},
"home": {
"New users past 30 days": "New users past 30 days",
"New users past 7 days": "New users past 7 days",
"New users today": "New users today",
"Past 30 Days": "Past 30 Days",
"Total users": "Total users"
},
"ldap": {
"Admin": "Administrador",
"Admin - Tooltip": "CN ou ID do administrador do servidor LDAP",
@@ -388,6 +396,7 @@
"Continue with": "Continuar com",
"Email or phone": "Email ou telefone",
"Failed to obtain MetaMask authorization": "Failed to obtain MetaMask authorization",
"Failed to obtain Web3-Onboard authorization": "Failed to obtain Web3-Onboard authorization",
"Forgot password?": "Esqueceu a senha?",
"Loading": "Carregando",
"Logging out...": "Saindo...",
@@ -431,6 +440,7 @@
"Passcode": "Passcode",
"Please bind your email first, the system will automatically uses the mail for multi-factor authentication": "Please bind your email first, the system will automatically uses the mail for multi-factor authentication",
"Please bind your phone first, the system automatically uses the phone for multi-factor authentication": "Please bind your phone first, the system automatically uses the phone for multi-factor authentication",
"Please confirm the information below": "Please confirm the information below",
"Please save this recovery code. Once your device cannot provide an authentication code, you can reset mfa authentication by this recovery code": "Please save this recovery code. Once your device cannot provide an authentication code, you can reset mfa authentication by this recovery code",
"Protect your account with Multi-factor authentication": "Protect your account with Multi-factor authentication",
"Recovery code": "Recovery code",
@@ -523,6 +533,7 @@
"Return to Website": "Retornar ao Website",
"The payment has been canceled": "The payment has been canceled",
"The payment has failed": "O pagamento falhou",
"The payment has time out": "The payment has time out",
"The payment is still under processing": "O pagamento ainda está sendo processado",
"Type - Tooltip": "Método de pagamento utilizado ao comprar o produto",
"You have successfully completed the payment": "Você concluiu o pagamento com sucesso",
@@ -604,6 +615,7 @@
"SKU": "SKU",
"Sold": "Vendido",
"Sold - Tooltip": "Quantidade vendida",
"Stripe": "Stripe",
"Tag - Tooltip": "Tag do produto",
"Test buy page..": "Página de teste de compra...",
"There is no payment channel for this product.": "Não há canal de pagamento disponível para este produto.",
@@ -648,6 +660,8 @@
"Client secret - Tooltip": "Segredo do cliente",
"Client secret 2": "Segredo do cliente 2",
"Client secret 2 - Tooltip": "A segunda chave secreta do cliente",
"Content": "Content",
"Content - Tooltip": "Content - Tooltip",
"Copy": "Copiar",
"Disable SSL": "Desabilitar SSL",
"Disable SSL - Tooltip": "Se deve desabilitar o protocolo SSL ao comunicar com o servidor SMTP",
@@ -682,6 +696,8 @@
"Method - Tooltip": "Método de login, código QR ou login silencioso",
"New Provider": "Novo Provedor",
"Normal": "Normal",
"Parameter name": "Parameter name",
"Parameter name - Tooltip": "Parameter name - Tooltip",
"Parse": "Analisar",
"Parse metadata successfully": "Metadados analisados com sucesso",
"Path prefix": "Prefixo do caminho",
@@ -758,6 +774,8 @@
"User mapping - Tooltip": "User mapping - Tooltip",
"UserInfo URL": "URL do UserInfo",
"UserInfo URL - Tooltip": "URL do UserInfo",
"Wallets": "Wallets",
"Wallets - Tooltip": "Wallets - Tooltip",
"admin (Shared)": "admin (Compartilhado)"
},
"record": {
@@ -849,9 +867,7 @@
"Table": "Tabela",
"Table - Tooltip": "Nome da tabela no banco de dados",
"Table columns": "Colunas da tabela",
"Table columns - Tooltip": "Colunas na tabela envolvidas na sincronização de dados. Colunas que não estão envolvidas na sincronização não precisam ser adicionadas",
"Table primary key": "Chave primária da tabela",
"Table primary key - Tooltip": "Chave primária da tabela, como id"
"Table columns - Tooltip": "Colunas na tabela envolvidas na sincronização de dados. Colunas que não estão envolvidas na sincronização não precisam ser adicionadas"
},
"system": {
"API Latency": "Latência da API",

View File

@@ -11,6 +11,7 @@
"New Adapter": "Новый адаптер",
"Policies": "Политика",
"Policies - Tooltip": "Правила политики Casbin",
"Rule type": "Rule type",
"Sync policies successfully": "Успешно синхронизированы политики"
},
"application": {
@@ -353,6 +354,13 @@
"Show all": "Show all",
"Virtual": "Virtual"
},
"home": {
"New users past 30 days": "New users past 30 days",
"New users past 7 days": "New users past 7 days",
"New users today": "New users today",
"Past 30 Days": "Past 30 Days",
"Total users": "Total users"
},
"ldap": {
"Admin": "Admin",
"Admin - Tooltip": "CN или ID администратора сервера LDAP",
@@ -388,6 +396,7 @@
"Continue with": "Продолжайте с",
"Email or phone": "Электронная почта или телефон",
"Failed to obtain MetaMask authorization": "Failed to obtain MetaMask authorization",
"Failed to obtain Web3-Onboard authorization": "Failed to obtain Web3-Onboard authorization",
"Forgot password?": "Забыли пароль?",
"Loading": "Загрузка",
"Logging out...": "Выход...",
@@ -431,6 +440,7 @@
"Passcode": "Passcode",
"Please bind your email first, the system will automatically uses the mail for multi-factor authentication": "Please bind your email first, the system will automatically uses the mail for multi-factor authentication",
"Please bind your phone first, the system automatically uses the phone for multi-factor authentication": "Please bind your phone first, the system automatically uses the phone for multi-factor authentication",
"Please confirm the information below": "Please confirm the information below",
"Please save this recovery code. Once your device cannot provide an authentication code, you can reset mfa authentication by this recovery code": "Please save this recovery code. Once your device cannot provide an authentication code, you can reset mfa authentication by this recovery code",
"Protect your account with Multi-factor authentication": "Protect your account with Multi-factor authentication",
"Recovery code": "Recovery code",
@@ -523,6 +533,7 @@
"Return to Website": "Вернуться на веб-сайт",
"The payment has been canceled": "The payment has been canceled",
"The payment has failed": "Оплата не удалась",
"The payment has time out": "The payment has time out",
"The payment is still under processing": "Оплата все еще обрабатывается",
"Type - Tooltip": "Способ оплаты, используемый при покупке товара",
"You have successfully completed the payment": "Вы успешно произвели платеж",
@@ -604,6 +615,7 @@
"SKU": "SKU",
"Sold": "Продано",
"Sold - Tooltip": "Количество проданных",
"Stripe": "Stripe",
"Tag - Tooltip": "Метка продукта",
"Test buy page..": "Страница для тестовой покупки.",
"There is no payment channel for this product.": "Для этого продукта нет канала оплаты.",
@@ -648,6 +660,8 @@
"Client secret - Tooltip": "Клиентский секрет",
"Client secret 2": "Секрет клиента 2",
"Client secret 2 - Tooltip": "Второй секретный ключ клиента",
"Content": "Content",
"Content - Tooltip": "Content - Tooltip",
"Copy": "Копировать",
"Disable SSL": "Отключить SSL",
"Disable SSL - Tooltip": "Нужно ли отключать протокол SSL при общении с SMTP сервером?",
@@ -682,6 +696,8 @@
"Method - Tooltip": "Метод входа, QR-код или беззвучный вход",
"New Provider": "Новый провайдер",
"Normal": "Normal",
"Parameter name": "Parameter name",
"Parameter name - Tooltip": "Parameter name - Tooltip",
"Parse": "Спарсить",
"Parse metadata successfully": "Успешно обработана метаданные",
"Path prefix": "Префикс пути",
@@ -758,6 +774,8 @@
"User mapping - Tooltip": "User mapping - Tooltip",
"UserInfo URL": "URL информации о пользователе",
"UserInfo URL - Tooltip": "URL пользовательской информации (URL информации о пользователе)",
"Wallets": "Wallets",
"Wallets - Tooltip": "Wallets - Tooltip",
"admin (Shared)": "администратор (общий)"
},
"record": {
@@ -849,9 +867,7 @@
"Table": "Стол",
"Table - Tooltip": "Название таблицы базы данных",
"Table columns": "Столбцы таблицы",
"Table columns - Tooltip": "Столбцы в таблице, участвующие в синхронизации данных. Столбцы, не участвующие в синхронизации, не нужно добавлять",
"Table primary key": "Первичный ключ таблицы",
"Table primary key - Tooltip": "Идентификатор (id) - основной ключ таблицы"
"Table columns - Tooltip": "Столбцы в таблице, участвующие в синхронизации данных. Столбцы, не участвующие в синхронизации, не нужно добавлять"
},
"system": {
"API Latency": "Задержка API",

View File

@@ -11,6 +11,7 @@
"New Adapter": "New Adapter",
"Policies": "Policies",
"Policies - Tooltip": "Casbin policy rules",
"Rule type": "Rule type",
"Sync policies successfully": "Sync policies successfully"
},
"application": {
@@ -353,6 +354,13 @@
"Show all": "Show all",
"Virtual": "Virtual"
},
"home": {
"New users past 30 days": "New users past 30 days",
"New users past 7 days": "New users past 7 days",
"New users today": "New users today",
"Past 30 Days": "Past 30 Days",
"Total users": "Total users"
},
"ldap": {
"Admin": "Admin",
"Admin - Tooltip": "CN or ID of the LDAP server administrator",
@@ -388,6 +396,7 @@
"Continue with": "Continue with",
"Email or phone": "Email or phone",
"Failed to obtain MetaMask authorization": "Failed to obtain MetaMask authorization",
"Failed to obtain Web3-Onboard authorization": "Failed to obtain Web3-Onboard authorization",
"Forgot password?": "Forgot password?",
"Loading": "Loading",
"Logging out...": "Logging out...",
@@ -431,6 +440,7 @@
"Passcode": "Passcode",
"Please bind your email first, the system will automatically uses the mail for multi-factor authentication": "Please bind your email first, the system will automatically uses the mail for multi-factor authentication",
"Please bind your phone first, the system automatically uses the phone for multi-factor authentication": "Please bind your phone first, the system automatically uses the phone for multi-factor authentication",
"Please confirm the information below": "Please confirm the information below",
"Please save this recovery code. Once your device cannot provide an authentication code, you can reset mfa authentication by this recovery code": "Please save this recovery code. Once your device cannot provide an authentication code, you can reset mfa authentication by this recovery code",
"Protect your account with Multi-factor authentication": "Protect your account with Multi-factor authentication",
"Recovery code": "Recovery code",
@@ -523,6 +533,7 @@
"Return to Website": "Return to Website",
"The payment has been canceled": "The payment has been canceled",
"The payment has failed": "The payment has failed",
"The payment has time out": "The payment has time out",
"The payment is still under processing": "The payment is still under processing",
"Type - Tooltip": "Payment method used when purchasing the product",
"You have successfully completed the payment": "You have successfully completed the payment",
@@ -604,6 +615,7 @@
"SKU": "SKU",
"Sold": "Sold",
"Sold - Tooltip": "Quantity sold",
"Stripe": "Stripe",
"Tag - Tooltip": "Tag of product",
"Test buy page..": "Test buy page..",
"There is no payment channel for this product.": "There is no payment channel for this product.",
@@ -648,6 +660,8 @@
"Client secret - Tooltip": "Client secret",
"Client secret 2": "Client secret 2",
"Client secret 2 - Tooltip": "The second client secret key",
"Content": "Content",
"Content - Tooltip": "Content - Tooltip",
"Copy": "Copy",
"Disable SSL": "Disable SSL",
"Disable SSL - Tooltip": "Whether to disable SSL protocol when communicating with STMP server",
@@ -682,6 +696,8 @@
"Method - Tooltip": "Login method, QR code or silent login",
"New Provider": "New Provider",
"Normal": "Normal",
"Parameter name": "Parameter name",
"Parameter name - Tooltip": "Parameter name - Tooltip",
"Parse": "Parse",
"Parse metadata successfully": "Parse metadata successfully",
"Path prefix": "Path prefix",
@@ -758,6 +774,8 @@
"User mapping - Tooltip": "User mapping - Tooltip",
"UserInfo URL": "UserInfo URL",
"UserInfo URL - Tooltip": "UserInfo URL",
"Wallets": "Wallets",
"Wallets - Tooltip": "Wallets - Tooltip",
"admin (Shared)": "admin (Shared)"
},
"record": {
@@ -849,9 +867,7 @@
"Table": "Table",
"Table - Tooltip": "Name of database table",
"Table columns": "Table columns",
"Table columns - Tooltip": "Columns in the table involved in data synchronization. Columns that are not involved in synchronization do not need to be added",
"Table primary key": "Table primary key",
"Table primary key - Tooltip": "Table primary key, such as id"
"Table columns - Tooltip": "Columns in the table involved in data synchronization. Columns that are not involved in synchronization do not need to be added"
},
"system": {
"API Latency": "API Latency",

View File

@@ -11,6 +11,7 @@
"New Adapter": "Bộ chuyển đổi mới",
"Policies": "Chính sách",
"Policies - Tooltip": "Quy tắc chính sách Casbin",
"Rule type": "Rule type",
"Sync policies successfully": "Đồng bộ chính sách thành công"
},
"application": {
@@ -353,6 +354,13 @@
"Show all": "Show all",
"Virtual": "Virtual"
},
"home": {
"New users past 30 days": "New users past 30 days",
"New users past 7 days": "New users past 7 days",
"New users today": "New users today",
"Past 30 Days": "Past 30 Days",
"Total users": "Total users"
},
"ldap": {
"Admin": "Admin",
"Admin - Tooltip": "CN hoặc ID của quản trị viên máy chủ LDAP",
@@ -388,6 +396,7 @@
"Continue with": "Tiếp tục với",
"Email or phone": "Email hoặc điện thoại",
"Failed to obtain MetaMask authorization": "Failed to obtain MetaMask authorization",
"Failed to obtain Web3-Onboard authorization": "Failed to obtain Web3-Onboard authorization",
"Forgot password?": "Quên mật khẩu?",
"Loading": "Đang tải",
"Logging out...": "Đăng xuất ...",
@@ -431,6 +440,7 @@
"Passcode": "Passcode",
"Please bind your email first, the system will automatically uses the mail for multi-factor authentication": "Please bind your email first, the system will automatically uses the mail for multi-factor authentication",
"Please bind your phone first, the system automatically uses the phone for multi-factor authentication": "Please bind your phone first, the system automatically uses the phone for multi-factor authentication",
"Please confirm the information below": "Please confirm the information below",
"Please save this recovery code. Once your device cannot provide an authentication code, you can reset mfa authentication by this recovery code": "Please save this recovery code. Once your device cannot provide an authentication code, you can reset mfa authentication by this recovery code",
"Protect your account with Multi-factor authentication": "Protect your account with Multi-factor authentication",
"Recovery code": "Recovery code",
@@ -523,6 +533,7 @@
"Return to Website": "Trở lại trang web",
"The payment has been canceled": "The payment has been canceled",
"The payment has failed": "Thanh toán đã thất bại",
"The payment has time out": "The payment has time out",
"The payment is still under processing": "Thanh toán vẫn đang được xử lý",
"Type - Tooltip": "Phương thức thanh toán được sử dụng khi mua sản phẩm",
"You have successfully completed the payment": "Bạn đã hoàn thành thanh toán thành công",
@@ -604,6 +615,7 @@
"SKU": "SKU",
"Sold": "Đã bán",
"Sold - Tooltip": "Số lượng bán ra",
"Stripe": "Stripe",
"Tag - Tooltip": "Nhãn sản phẩm",
"Test buy page..": "Trang mua thử.",
"There is no payment channel for this product.": "Không có kênh thanh toán cho sản phẩm này.",
@@ -648,6 +660,8 @@
"Client secret - Tooltip": "Mã bí mật khách hàng",
"Client secret 2": "Khóa bí mật của khách hàng 2",
"Client secret 2 - Tooltip": "Khóa bí mật thứ hai của khách hàng",
"Content": "Content",
"Content - Tooltip": "Content - Tooltip",
"Copy": "Sao chép",
"Disable SSL": "Vô hiệu hóa SSL",
"Disable SSL - Tooltip": "Có nên vô hiệu hóa giao thức SSL khi giao tiếp với máy chủ STMP hay không?",
@@ -682,6 +696,8 @@
"Method - Tooltip": "Phương thức đăng nhập, mã QR hoặc đăng nhập im lặng",
"New Provider": "Nhà cung cấp mới",
"Normal": "Normal",
"Parameter name": "Parameter name",
"Parameter name - Tooltip": "Parameter name - Tooltip",
"Parse": "Phân tích cú pháp",
"Parse metadata successfully": "Phân tích siêu dữ liệu thành công",
"Path prefix": "Tiền tố đường dẫn",
@@ -758,6 +774,8 @@
"User mapping - Tooltip": "User mapping - Tooltip",
"UserInfo URL": "Đường dẫn UserInfo",
"UserInfo URL - Tooltip": "Địa chỉ URL của Thông tin người dùng",
"Wallets": "Wallets",
"Wallets - Tooltip": "Wallets - Tooltip",
"admin (Shared)": "quản trị viên (Chung)"
},
"record": {
@@ -849,9 +867,7 @@
"Table": "Bàn",
"Table - Tooltip": "Tên của bảng cơ sở dữ liệu",
"Table columns": "Các cột bảng",
"Table columns - Tooltip": "Cột trong bảng liên quan đến đồng bộ dữ liệu. Các cột không liên quan đến đồng bộ hóa không cần được thêm vào",
"Table primary key": "Khóa chính của bảng",
"Table primary key - Tooltip": "Khóa chính của bảng, ví dụ như id"
"Table columns - Tooltip": "Cột trong bảng liên quan đến đồng bộ dữ liệu. Các cột không liên quan đến đồng bộ hóa không cần được thêm vào"
},
"system": {
"API Latency": "Độ trễ API",

View File

@@ -11,6 +11,7 @@
"New Adapter": "添加适配器",
"Policies": "策略",
"Policies - Tooltip": "Casbin策略规则",
"Rule type": "策略类型",
"Sync policies successfully": "同步策略成功"
},
"application": {
@@ -353,6 +354,13 @@
"Show all": "显示全部",
"Virtual": "虚拟组"
},
"home": {
"New users past 30 days": "New users past 30 days",
"New users past 7 days": "New users past 7 days",
"New users today": "New users today",
"Past 30 Days": "Past 30 Days",
"Total users": "Total users"
},
"ldap": {
"Admin": "管理员",
"Admin - Tooltip": "LDAP服务器管理员的CN或ID",
@@ -388,6 +396,7 @@
"Continue with": "使用以下账号继续",
"Email or phone": "Email或手机号",
"Failed to obtain MetaMask authorization": "获取MetaMask授权失败",
"Failed to obtain Web3-Onboard authorization": "Failed to obtain Web3-Onboard authorization",
"Forgot password?": "忘记密码?",
"Loading": "加载中",
"Logging out...": "正在退出登录...",
@@ -431,6 +440,7 @@
"Passcode": "认证码",
"Please bind your email first, the system will automatically uses the mail for multi-factor authentication": "请先绑定邮箱,之后会自动使用该邮箱作为多因素认证的方式",
"Please bind your phone first, the system automatically uses the phone for multi-factor authentication": "请先绑定手机号,之后会自动使用该手机号作为多因素认证的方式",
"Please confirm the information below": "请确认以下信息",
"Please save this recovery code. Once your device cannot provide an authentication code, you can reset mfa authentication by this recovery code": "请保存此恢复代码。一旦您的设备无法提供身份验证码,您可以通过此恢复码重置多因素认证",
"Protect your account with Multi-factor authentication": "通过多因素认证保护您的帐户",
"Recovery code": "恢复码",
@@ -523,6 +533,7 @@
"Return to Website": "返回原网站",
"The payment has been canceled": "付款已取消",
"The payment has failed": "支付失败",
"The payment has time out": "The payment has time out",
"The payment is still under processing": "支付正在处理",
"Type - Tooltip": "商品购买时的支付方式",
"You have successfully completed the payment": "支付成功",
@@ -604,6 +615,7 @@
"SKU": "货号",
"Sold": "售出",
"Sold - Tooltip": "已售出的数量",
"Stripe": "Stripe",
"Tag - Tooltip": "商品类别",
"Test buy page..": "测试购买页面..",
"There is no payment channel for this product.": "该商品没有付款方式。",
@@ -648,6 +660,8 @@
"Client secret - Tooltip": "Client secret",
"Client secret 2": "Client secret 2",
"Client secret 2 - Tooltip": "第二个Client secret",
"Content": "Content",
"Content - Tooltip": "Content - Tooltip",
"Copy": "复制",
"Disable SSL": "禁用SSL",
"Disable SSL - Tooltip": "与STMP服务器通信时是否禁用SSL协议",
@@ -682,6 +696,8 @@
"Method - Tooltip": "登录方法,二维码或者静默授权登录",
"New Provider": "添加提供商",
"Normal": "标准",
"Parameter name": "Parameter name",
"Parameter name - Tooltip": "Parameter name - Tooltip",
"Parse": "解析",
"Parse metadata successfully": "解析元数据成功",
"Path prefix": "路径前缀",
@@ -758,6 +774,8 @@
"User mapping - Tooltip": "User mapping - Tooltip",
"UserInfo URL": "UserInfo URL",
"UserInfo URL - Tooltip": "自定义OAuth的UserInfo URL",
"Wallets": "Wallets",
"Wallets - Tooltip": "Wallets - Tooltip",
"admin (Shared)": "admin共享"
},
"record": {
@@ -849,9 +867,7 @@
"Table": "表名",
"Table - Tooltip": "数据库表名",
"Table columns": "表格列",
"Table columns - Tooltip": "参与数据同步的表格列,不参与同步的列不需要添加",
"Table primary key": "表主键",
"Table primary key - Tooltip": "表主键如id等"
"Table columns - Tooltip": "参与数据同步的表格列,不参与同步的列不需要添加"
},
"system": {
"API Latency": "API 延迟",