Compare commits

..

1 Commits

Author SHA1 Message Date
Yang Luo
93e9975acc Revert "feat: fix Beego session delete concurrent issue (#3103)"
This reverts commit f21aa9c0d2.
2024-08-07 16:51:29 +08:00
325 changed files with 23441 additions and 36908 deletions

8
.gitattributes vendored
View File

@@ -1,5 +1,5 @@
*.go linguist-detectable=true *.go linguist-detectable=true
*.js linguist-detectable=false *.js linguist-detectable=false
# Declare files that will always have LF line endings on checkout. # Declare files that will always have LF line endings on checkout.
# Git will always convert line endings to LF on checkout. You should use this for files that must keep LF endings, even on Windows. # Git will always convert line endings to LF on checkout. You should use this for files that must keep LF endings, even on Windows.
*.sh text eol=lf *.sh text eol=lf

View File

@@ -114,12 +114,12 @@ jobs:
wait-on-timeout: 210 wait-on-timeout: 210
working-directory: ./web working-directory: ./web
- uses: actions/upload-artifact@v4 - uses: actions/upload-artifact@v3
if: failure() if: failure()
with: with:
name: cypress-screenshots name: cypress-screenshots
path: ./web/cypress/screenshots path: ./web/cypress/screenshots
- uses: actions/upload-artifact@v4 - uses: actions/upload-artifact@v3
if: always() if: always()
with: with:
name: cypress-videos name: cypress-videos
@@ -147,7 +147,7 @@ jobs:
- name: Release - name: Release
run: yarn global add semantic-release@17.4.4 && semantic-release run: yarn global add semantic-release@17.4.4 && semantic-release
env: env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GH_BOT_TOKEN }}
- name: Fetch Current version - name: Fetch Current version
id: get-current-tag id: get-current-tag

View File

@@ -1,10 +1,10 @@
FROM --platform=$BUILDPLATFORM node:18.19.0 AS FRONT FROM --platform=$BUILDPLATFORM node:18.19.0 AS FRONT
WORKDIR /web WORKDIR /web
COPY ./web . COPY ./web .
RUN yarn install --frozen-lockfile --network-timeout 1000000 && NODE_OPTIONS="--max-old-space-size=4096" yarn run build RUN yarn install --frozen-lockfile --network-timeout 1000000 && yarn run build
FROM --platform=$BUILDPLATFORM golang:1.21.13 AS BACK FROM --platform=$BUILDPLATFORM golang:1.20.12 AS BACK
WORKDIR /go/src/casdoor WORKDIR /go/src/casdoor
COPY . . COPY . .
RUN ./build.sh RUN ./build.sh

204
README.md
View File

@@ -1,102 +1,102 @@
<h1 align="center" style="border-bottom: none;">📦⚡️ Casdoor</h1> <h1 align="center" style="border-bottom: none;">📦⚡️ Casdoor</h1>
<h3 align="center">An open-source UI-first Identity and Access Management (IAM) / Single-Sign-On (SSO) platform with web UI supporting OAuth 2.0, OIDC, SAML, CAS, LDAP, SCIM, WebAuthn, TOTP, MFA and RADIUS</h3> <h3 align="center">An open-source UI-first Identity and Access Management (IAM) / Single-Sign-On (SSO) platform with web UI supporting OAuth 2.0, OIDC, SAML, CAS, LDAP, SCIM, WebAuthn, TOTP, MFA and RADIUS</h3>
<p align="center"> <p align="center">
<a href="#badge"> <a href="#badge">
<img alt="semantic-release" src="https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg"> <img alt="semantic-release" src="https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg">
</a> </a>
<a href="https://hub.docker.com/r/casbin/casdoor"> <a href="https://hub.docker.com/r/casbin/casdoor">
<img alt="docker pull casbin/casdoor" src="https://img.shields.io/docker/pulls/casbin/casdoor.svg"> <img alt="docker pull casbin/casdoor" src="https://img.shields.io/docker/pulls/casbin/casdoor.svg">
</a> </a>
<a href="https://github.com/casdoor/casdoor/actions/workflows/build.yml"> <a href="https://github.com/casdoor/casdoor/actions/workflows/build.yml">
<img alt="GitHub Workflow Status (branch)" src="https://github.com/casdoor/casdoor/workflows/Build/badge.svg?style=flat-square"> <img alt="GitHub Workflow Status (branch)" src="https://github.com/casdoor/casdoor/workflows/Build/badge.svg?style=flat-square">
</a> </a>
<a href="https://github.com/casdoor/casdoor/releases/latest"> <a href="https://github.com/casdoor/casdoor/releases/latest">
<img alt="GitHub Release" src="https://img.shields.io/github/v/release/casdoor/casdoor.svg"> <img alt="GitHub Release" src="https://img.shields.io/github/v/release/casdoor/casdoor.svg">
</a> </a>
<a href="https://hub.docker.com/r/casbin/casdoor"> <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"> <img alt="Docker Image Version (latest semver)" src="https://img.shields.io/badge/Docker%20Hub-latest-brightgreen">
</a> </a>
</p> </p>
<p align="center"> <p align="center">
<a href="https://goreportcard.com/report/github.com/casdoor/casdoor"> <a href="https://goreportcard.com/report/github.com/casdoor/casdoor">
<img alt="Go Report Card" src="https://goreportcard.com/badge/github.com/casdoor/casdoor?style=flat-square"> <img alt="Go Report Card" src="https://goreportcard.com/badge/github.com/casdoor/casdoor?style=flat-square">
</a> </a>
<a href="https://github.com/casdoor/casdoor/blob/master/LICENSE"> <a href="https://github.com/casdoor/casdoor/blob/master/LICENSE">
<img src="https://img.shields.io/github/license/casdoor/casdoor?style=flat-square" alt="license"> <img src="https://img.shields.io/github/license/casdoor/casdoor?style=flat-square" alt="license">
</a> </a>
<a href="https://github.com/casdoor/casdoor/issues"> <a href="https://github.com/casdoor/casdoor/issues">
<img alt="GitHub issues" src="https://img.shields.io/github/issues/casdoor/casdoor?style=flat-square"> <img alt="GitHub issues" src="https://img.shields.io/github/issues/casdoor/casdoor?style=flat-square">
</a> </a>
<a href="#"> <a href="#">
<img alt="GitHub stars" src="https://img.shields.io/github/stars/casdoor/casdoor?style=flat-square"> <img alt="GitHub stars" src="https://img.shields.io/github/stars/casdoor/casdoor?style=flat-square">
</a> </a>
<a href="https://github.com/casdoor/casdoor/network"> <a href="https://github.com/casdoor/casdoor/network">
<img alt="GitHub forks" src="https://img.shields.io/github/forks/casdoor/casdoor?style=flat-square"> <img alt="GitHub forks" src="https://img.shields.io/github/forks/casdoor/casdoor?style=flat-square">
</a> </a>
<a href="https://crowdin.com/project/casdoor-site"> <a href="https://crowdin.com/project/casdoor-site">
<img alt="Crowdin" src="https://badges.crowdin.net/casdoor-site/localized.svg"> <img alt="Crowdin" src="https://badges.crowdin.net/casdoor-site/localized.svg">
</a> </a>
<a href="https://discord.gg/5rPsrAzK7S"> <a href="https://discord.gg/5rPsrAzK7S">
<img alt="Discord" src="https://img.shields.io/discord/1022748306096537660?style=flat-square&logo=discord&label=discord&color=5865F2"> <img alt="Discord" src="https://img.shields.io/discord/1022748306096537660?style=flat-square&logo=discord&label=discord&color=5865F2">
</a> </a>
</p> </p>
<p align="center"> <p align="center">
<sup>Sponsored by</sup> <sup>Sponsored by</sup>
<br> <br>
<a href="https://stytch.com/docs?utm_source=oss-sponsorship&utm_medium=paid_sponsorship&utm_campaign=casbin"> <a href="https://stytch.com/docs?utm_source=oss-sponsorship&utm_medium=paid_sponsorship&utm_campaign=casbin">
<picture> <picture>
<source media="(prefers-color-scheme: dark)" srcset="https://cdn.casbin.org/img/stytch-white.png"> <source media="(prefers-color-scheme: dark)" srcset="https://cdn.casbin.org/img/stytch-white.png">
<source media="(prefers-color-scheme: light)" srcset="https://cdn.casbin.org/img/stytch-charcoal.png"> <source media="(prefers-color-scheme: light)" srcset="https://cdn.casbin.org/img/stytch-charcoal.png">
<img src="https://cdn.casbin.org/img/stytch-charcoal.png" width="275"> <img src="https://cdn.casbin.org/img/stytch-charcoal.png" width="275">
</picture> </picture>
</a><br/> </a><br/>
<a href="https://stytch.com/docs?utm_source=oss-sponsorship&utm_medium=paid_sponsorship&utm_campaign=casbin"><b>Build auth with fraud prevention, faster.</b><br/> Try Stytch for API-first authentication, user & org management, multi-tenant SSO, MFA, device fingerprinting, and more.</a> <a href="https://stytch.com/docs?utm_source=oss-sponsorship&utm_medium=paid_sponsorship&utm_campaign=casbin"><b>Build auth with fraud prevention, faster.</b><br/> Try Stytch for API-first authentication, user & org management, multi-tenant SSO, MFA, device fingerprinting, and more.</a>
<br> <br>
</p> </p>
## Online demo ## Online demo
- Read-only site: https://door.casdoor.com (any modification operation will fail) - Read-only site: https://door.casdoor.com (any modification operation will fail)
- Writable site: https://demo.casdoor.com (original data will be restored for every 5 minutes) - Writable site: https://demo.casdoor.com (original data will be restored for every 5 minutes)
## Documentation ## Documentation
https://casdoor.org https://casdoor.org
## Install ## Install
- By source code: https://casdoor.org/docs/basic/server-installation - By source code: https://casdoor.org/docs/basic/server-installation
- By Docker: https://casdoor.org/docs/basic/try-with-docker - By Docker: https://casdoor.org/docs/basic/try-with-docker
- By Kubernetes Helm: https://casdoor.org/docs/basic/try-with-helm - By Kubernetes Helm: https://casdoor.org/docs/basic/try-with-helm
## How to connect to Casdoor? ## How to connect to Casdoor?
https://casdoor.org/docs/how-to-connect/overview https://casdoor.org/docs/how-to-connect/overview
## Casdoor Public API ## Casdoor Public API
- Docs: https://casdoor.org/docs/basic/public-api - Docs: https://casdoor.org/docs/basic/public-api
- Swagger: https://door.casdoor.com/swagger - Swagger: https://door.casdoor.com/swagger
## Integrations ## Integrations
https://casdoor.org/docs/category/integrations https://casdoor.org/docs/category/integrations
## How to contact? ## How to contact?
- Discord: https://discord.gg/5rPsrAzK7S - Discord: https://discord.gg/5rPsrAzK7S
- Contact: https://casdoor.org/help - Contact: https://casdoor.org/help
## Contribute ## Contribute
For casdoor, if you have any questions, you can give Issues, or you can also directly start Pull Requests(but we recommend giving issues first to communicate with the community). For casdoor, if you have any questions, you can give Issues, or you can also directly start Pull Requests(but we recommend giving issues first to communicate with the community).
### I18n translation ### I18n translation
If you are contributing to casdoor, please note that we use [Crowdin](https://crowdin.com/project/casdoor-site) as translating platform and i18next as translating tool. When you add some words using i18next in the `web/` directory, please remember to add what you have added to the `web/src/locales/en/data.json` file. If you are contributing to casdoor, please note that we use [Crowdin](https://crowdin.com/project/casdoor-site) as translating platform and i18next as translating tool. When you add some words using i18next in the `web/` directory, please remember to add what you have added to the `web/src/locales/en/data.json` file.
## License ## License
[Apache-2.0](https://github.com/casdoor/casdoor/blob/master/LICENSE) [Apache-2.0](https://github.com/casdoor/casdoor/blob/master/LICENSE)

View File

@@ -47,7 +47,6 @@ p, *, *, GET, /api/get-app-login, *, *
p, *, *, POST, /api/logout, *, * p, *, *, POST, /api/logout, *, *
p, *, *, GET, /api/logout, *, * p, *, *, GET, /api/logout, *, *
p, *, *, POST, /api/callback, *, * p, *, *, POST, /api/callback, *, *
p, *, *, POST, /api/device-auth, *, *
p, *, *, GET, /api/get-account, *, * p, *, *, GET, /api/get-account, *, *
p, *, *, GET, /api/userinfo, *, * p, *, *, GET, /api/userinfo, *, *
p, *, *, GET, /api/user, *, * p, *, *, GET, /api/user, *, *
@@ -78,7 +77,6 @@ p, *, *, POST, /api/verify-code, *, *
p, *, *, POST, /api/reset-email-or-phone, *, * p, *, *, POST, /api/reset-email-or-phone, *, *
p, *, *, POST, /api/upload-resource, *, * p, *, *, POST, /api/upload-resource, *, *
p, *, *, GET, /.well-known/openid-configuration, *, * p, *, *, GET, /.well-known/openid-configuration, *, *
p, *, *, GET, /.well-known/webfinger, *, *
p, *, *, *, /.well-known/jwks, *, * p, *, *, *, /.well-known/jwks, *, *
p, *, *, GET, /api/get-saml-login, *, * p, *, *, GET, /api/get-saml-login, *, *
p, *, *, POST, /api/acs, *, * p, *, *, POST, /api/acs, *, *
@@ -99,8 +97,6 @@ p, *, *, GET, /api/get-organization-names, *, *
p, *, *, GET, /api/get-all-objects, *, * p, *, *, GET, /api/get-all-objects, *, *
p, *, *, GET, /api/get-all-actions, *, * p, *, *, GET, /api/get-all-actions, *, *
p, *, *, GET, /api/get-all-roles, *, * p, *, *, GET, /api/get-all-roles, *, *
p, *, *, GET, /api/run-casbin-command, *, *
p, *, *, POST, /api/refresh-engines, *, *
p, *, *, GET, /api/get-invitation-info, *, * p, *, *, GET, /api/get-invitation-info, *, *
p, *, *, GET, /api/faceid-signin-begin, *, * p, *, *, GET, /api/faceid-signin-begin, *, *
` `
@@ -158,7 +154,7 @@ func IsAllowed(subOwner string, subName string, method string, urlPath string, o
func isAllowedInDemoMode(subOwner string, subName string, method string, urlPath string, objOwner string, objName string) bool { func isAllowedInDemoMode(subOwner string, subName string, method string, urlPath string, objOwner string, objName string) bool {
if method == "POST" { if method == "POST" {
if strings.HasPrefix(urlPath, "/api/login") || urlPath == "/api/logout" || urlPath == "/api/signup" || urlPath == "/api/callback" || urlPath == "/api/send-verification-code" || urlPath == "/api/send-email" || urlPath == "/api/verify-captcha" || urlPath == "/api/verify-code" || urlPath == "/api/check-user-password" || strings.HasPrefix(urlPath, "/api/mfa/") || urlPath == "/api/webhook" || urlPath == "/api/get-qrcode" || urlPath == "/api/refresh-engines" { if strings.HasPrefix(urlPath, "/api/login") || urlPath == "/api/logout" || urlPath == "/api/signup" || urlPath == "/api/callback" || urlPath == "/api/send-verification-code" || urlPath == "/api/send-email" || urlPath == "/api/verify-captcha" || urlPath == "/api/verify-code" || urlPath == "/api/check-user-password" || strings.HasPrefix(urlPath, "/api/mfa/") || urlPath == "/api/webhook" || urlPath == "/api/get-qrcode" {
return true return true
} else if urlPath == "/api/update-user" { } else if urlPath == "/api/update-user" {
// Allow ordinary users to update their own information // Allow ordinary users to update their own information

View File

@@ -15,51 +15,32 @@
package captcha package captcha
import ( import (
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" "encoding/json"
openapiutil "github.com/alibabacloud-go/openapi-util/service" "errors"
teaUtil "github.com/alibabacloud-go/tea-utils/v2/service" "fmt"
"github.com/alibabacloud-go/tea/tea" "io"
"net/http"
"net/url"
"sort"
"strconv"
"strings"
"time"
"github.com/casdoor/casdoor/util"
) )
const AliyunCaptchaVerifyUrl = "captcha.cn-shanghai.aliyuncs.com" const AliyunCaptchaVerifyUrl = "http://afs.aliyuncs.com"
type VerifyCaptchaRequest struct { type captchaSuccessResponse struct {
CaptchaVerifyParam *string `json:"CaptchaVerifyParam,omitempty" xml:"CaptchaVerifyParam,omitempty"` Code int `json:"Code"`
SceneId *string `json:"SceneId,omitempty" xml:"SceneId,omitempty"` Msg string `json:"Msg"`
} }
type VerifyCaptchaResponseBodyResult struct { type captchaFailResponse struct {
VerifyResult *bool `json:"VerifyResult,omitempty" xml:"VerifyResult,omitempty"` Code string `json:"Code"`
Message string `json:"Message"`
} }
type VerifyCaptchaResponseBody struct {
Code *string `json:"Code,omitempty" xml:"Code,omitempty"`
Message *string `json:"Message,omitempty" xml:"Message,omitempty"`
// Id of the request
RequestId *string `json:"RequestId,omitempty" xml:"RequestId,omitempty"`
Result *VerifyCaptchaResponseBodyResult `json:"Result,omitempty" xml:"Result,omitempty" type:"Struct"`
Success *bool `json:"Success,omitempty" xml:"Success,omitempty"`
}
type VerifyIntelligentCaptchaResponseBodyResult struct {
VerifyCode *string `json:"VerifyCode,omitempty" xml:"VerifyCode,omitempty"`
VerifyResult *bool `json:"VerifyResult,omitempty" xml:"VerifyResult,omitempty"`
}
type VerifyIntelligentCaptchaResponseBody struct {
Code *string `json:"Code,omitempty" xml:"Code,omitempty"`
Message *string `json:"Message,omitempty" xml:"Message,omitempty"`
// Id of the request
RequestId *string `json:"RequestId,omitempty" xml:"RequestId,omitempty"`
Result *VerifyIntelligentCaptchaResponseBodyResult `json:"Result,omitempty" xml:"Result,omitempty" type:"Struct"`
Success *bool `json:"Success,omitempty" xml:"Success,omitempty"`
}
type VerifyIntelligentCaptchaResponse struct {
Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"`
StatusCode *int32 `json:"statusCode,omitempty" xml:"statusCode,omitempty" require:"true"`
Body *VerifyIntelligentCaptchaResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"`
}
type AliyunCaptchaProvider struct{} type AliyunCaptchaProvider struct{}
func NewAliyunCaptchaProvider() *AliyunCaptchaProvider { func NewAliyunCaptchaProvider() *AliyunCaptchaProvider {
@@ -67,69 +48,68 @@ func NewAliyunCaptchaProvider() *AliyunCaptchaProvider {
return captcha return captcha
} }
func (captcha *AliyunCaptchaProvider) VerifyCaptcha(token, clientId, clientSecret, clientId2 string) (bool, error) { func contentEscape(str string) string {
config := &openapi.Config{} str = strings.Replace(str, " ", "%20", -1)
str = url.QueryEscape(str)
config.Endpoint = tea.String(AliyunCaptchaVerifyUrl) return str
config.ConnectTimeout = tea.Int(5000) }
config.ReadTimeout = tea.Int(5000)
config.AccessKeyId = tea.String(clientId) func (captcha *AliyunCaptchaProvider) VerifyCaptcha(token, clientSecret string) (bool, error) {
config.AccessKeySecret = tea.String(clientSecret) pathData, err := url.ParseQuery(token)
if err != nil {
client := new(openapi.Client) return false, err
err := client.Init(config) }
if err != nil {
return false, err pathData["Action"] = []string{"AuthenticateSig"}
} pathData["Format"] = []string{"json"}
pathData["SignatureMethod"] = []string{"HMAC-SHA1"}
request := VerifyCaptchaRequest{CaptchaVerifyParam: tea.String(token), SceneId: tea.String(clientId2)} pathData["SignatureNonce"] = []string{strconv.FormatInt(time.Now().UnixNano(), 10)}
pathData["SignatureVersion"] = []string{"1.0"}
err = teaUtil.ValidateModel(&request) pathData["Timestamp"] = []string{time.Now().UTC().Format("2006-01-02T15:04:05Z")}
if err != nil { pathData["Version"] = []string{"2018-01-12"}
return false, err
} var keys []string
for k := range pathData {
runtime := &teaUtil.RuntimeOptions{} keys = append(keys, k)
}
body := map[string]interface{}{} sort.Strings(keys)
if !tea.BoolValue(teaUtil.IsUnset(request.CaptchaVerifyParam)) {
body["CaptchaVerifyParam"] = request.CaptchaVerifyParam sortQuery := ""
} for _, k := range keys {
sortQuery += k + "=" + contentEscape(pathData[k][0]) + "&"
if !tea.BoolValue(teaUtil.IsUnset(request.SceneId)) { }
body["SceneId"] = request.SceneId sortQuery = strings.TrimSuffix(sortQuery, "&")
}
stringToSign := fmt.Sprintf("GET&%s&%s", url.QueryEscape("/"), url.QueryEscape(sortQuery))
req := &openapi.OpenApiRequest{
Body: openapiutil.ParseToMap(body), signature := util.GetHmacSha1(clientSecret+"&", stringToSign)
}
params := &openapi.Params{ resp, err := http.Get(fmt.Sprintf("%s?%s&Signature=%s", AliyunCaptchaVerifyUrl, sortQuery, url.QueryEscape(signature)))
Action: tea.String("VerifyIntelligentCaptcha"), if err != nil {
Version: tea.String("2023-03-05"), return false, err
Protocol: tea.String("HTTPS"), }
Pathname: tea.String("/"),
Method: tea.String("POST"), defer resp.Body.Close()
AuthType: tea.String("AK"), body, err := io.ReadAll(resp.Body)
Style: tea.String("RPC"), if err != nil {
ReqBodyType: tea.String("formData"), return false, err
BodyType: tea.String("json"), }
}
return handleCaptchaResponse(body)
res := &VerifyIntelligentCaptchaResponse{} }
resBody, err := client.CallApi(params, req, runtime) func handleCaptchaResponse(body []byte) (bool, error) {
if err != nil { captchaResp := &captchaSuccessResponse{}
return false, err err := json.Unmarshal(body, captchaResp)
} if err != nil {
captchaFailResp := &captchaFailResponse{}
err = tea.Convert(resBody, &res) err = json.Unmarshal(body, captchaFailResp)
if err != nil { if err != nil {
return false, err return false, err
} }
if res.Body.Result.VerifyResult != nil && *res.Body.Result.VerifyResult { return false, errors.New(captchaFailResp.Message)
return true, nil }
}
return true, nil
return false, nil
} }

View File

@@ -23,6 +23,6 @@ func NewDefaultCaptchaProvider() *DefaultCaptchaProvider {
return captcha return captcha
} }
func (captcha *DefaultCaptchaProvider) VerifyCaptcha(token, clientId, clientSecret, clientId2 string) (bool, error) { func (captcha *DefaultCaptchaProvider) VerifyCaptcha(token, clientSecret string) (bool, error) {
return object.VerifyCaptcha(clientSecret, token), nil return object.VerifyCaptcha(clientSecret, token), nil
} }

View File

@@ -35,7 +35,7 @@ func NewGEETESTCaptchaProvider() *GEETESTCaptchaProvider {
return captcha return captcha
} }
func (captcha *GEETESTCaptchaProvider) VerifyCaptcha(token, clientId, clientSecret, clientId2 string) (bool, error) { func (captcha *GEETESTCaptchaProvider) VerifyCaptcha(token, clientSecret string) (bool, error) {
pathData, err := url.ParseQuery(token) pathData, err := url.ParseQuery(token)
if err != nil { if err != nil {
return false, err return false, err

View File

@@ -32,7 +32,7 @@ func NewHCaptchaProvider() *HCaptchaProvider {
return captcha return captcha
} }
func (captcha *HCaptchaProvider) VerifyCaptcha(token, clientId, clientSecret, clientId2 string) (bool, error) { func (captcha *HCaptchaProvider) VerifyCaptcha(token, clientSecret string) (bool, error) {
reqData := url.Values{ reqData := url.Values{
"secret": {clientSecret}, "secret": {clientSecret},
"response": {token}, "response": {token},

View File

@@ -17,7 +17,7 @@ package captcha
import "fmt" import "fmt"
type CaptchaProvider interface { type CaptchaProvider interface {
VerifyCaptcha(token, clientId, clientSecret, clientId2 string) (bool, error) VerifyCaptcha(token, clientSecret string) (bool, error)
} }
func GetCaptchaProvider(captchaType string) CaptchaProvider { func GetCaptchaProvider(captchaType string) CaptchaProvider {
@@ -26,10 +26,6 @@ func GetCaptchaProvider(captchaType string) CaptchaProvider {
return NewDefaultCaptchaProvider() return NewDefaultCaptchaProvider()
case "reCAPTCHA": case "reCAPTCHA":
return NewReCaptchaProvider() return NewReCaptchaProvider()
case "reCAPTCHA v2":
return NewReCaptchaProvider()
case "reCAPTCHA v3":
return NewReCaptchaProvider()
case "Aliyun Captcha": case "Aliyun Captcha":
return NewAliyunCaptchaProvider() return NewAliyunCaptchaProvider()
case "hCaptcha": case "hCaptcha":
@@ -43,11 +39,11 @@ func GetCaptchaProvider(captchaType string) CaptchaProvider {
return nil return nil
} }
func VerifyCaptchaByCaptchaType(captchaType, token, clientId, clientSecret, clientId2 string) (bool, error) { func VerifyCaptchaByCaptchaType(captchaType, token, clientSecret string) (bool, error) {
provider := GetCaptchaProvider(captchaType) provider := GetCaptchaProvider(captchaType)
if provider == nil { if provider == nil {
return false, fmt.Errorf("invalid captcha provider: %s", captchaType) return false, fmt.Errorf("invalid captcha provider: %s", captchaType)
} }
return provider.VerifyCaptcha(token, clientId, clientSecret, clientId2) return provider.VerifyCaptcha(token, clientSecret)
} }

View File

@@ -32,7 +32,7 @@ func NewReCaptchaProvider() *ReCaptchaProvider {
return captcha return captcha
} }
func (captcha *ReCaptchaProvider) VerifyCaptcha(token, clientId, clientSecret, clientId2 string) (bool, error) { func (captcha *ReCaptchaProvider) VerifyCaptcha(token, clientSecret string) (bool, error) {
reqData := url.Values{ reqData := url.Values{
"secret": {clientSecret}, "secret": {clientSecret},
"response": {token}, "response": {token},

View File

@@ -32,7 +32,7 @@ func NewCloudflareTurnstileProvider() *CloudflareTurnstileProvider {
return captcha return captcha
} }
func (captcha *CloudflareTurnstileProvider) VerifyCaptcha(token, clientId, clientSecret, clientId2 string) (bool, error) { func (captcha *CloudflareTurnstileProvider) VerifyCaptcha(token, clientSecret string) (bool, error) {
reqData := url.Values{ reqData := url.Values{
"secret": {clientSecret}, "secret": {clientSecret},
"response": {token}, "response": {token},

View File

@@ -21,17 +21,11 @@ originFrontend =
staticBaseUrl = "https://cdn.casbin.org" staticBaseUrl = "https://cdn.casbin.org"
isDemoMode = false isDemoMode = false
batchSize = 100 batchSize = 100
enableErrorMask = false
enableGzip = true enableGzip = true
inactiveTimeoutMinutes =
ldapServerPort = 389 ldapServerPort = 389
ldapsCertId = ""
ldapsServerPort = 636
radiusServerPort = 1812 radiusServerPort = 1812
radiusDefaultOrganization = "built-in"
radiusSecret = "secret" radiusSecret = "secret"
quota = {"organization": -1, "user": -1, "application": -1, "provider": -1} quota = {"organization": -1, "user": -1, "application": -1, "provider": -1}
logConfig = {"adapter":"file", "filename": "logs/casdoor.log", "maxdays":99999, "perm":"0770"} logConfig = {"filename": "logs/casdoor.log", "maxdays":99999, "perm":"0770"}
initDataNewOnly = false
initDataFile = "./init_data.json" initDataFile = "./init_data.json"
frontendBaseDir = "../cc_0" frontendBaseDir = "../casdoor"

View File

@@ -66,11 +66,7 @@ func GetConfigBool(key string) bool {
func GetConfigInt64(key string) (int64, error) { func GetConfigInt64(key string) (int64, error) {
value := GetConfigString(key) value := GetConfigString(key)
num, err := strconv.ParseInt(value, 10, 64) num, err := strconv.ParseInt(value, 10, 64)
if err != nil { return num, err
return 0, fmt.Errorf("GetConfigInt64(%s) error, %s", key, err.Error())
}
return num, nil
} }
func GetConfigDataSourceName() string { func GetConfigDataSourceName() string {

View File

@@ -115,7 +115,7 @@ func TestGetConfigLogs(t *testing.T) {
description string description string
expected string expected string
}{ }{
{"Default log config", `{"adapter":"file", "filename": "logs/casdoor.log", "maxdays":99999, "perm":"0770"}`}, {"Default log config", `{"filename": "logs/casdoor.log", "maxdays":99999, "perm":"0770"}`},
} }
err := beego.LoadAppConfig("ini", "app.conf") err := beego.LoadAppConfig("ini", "app.conf")

View File

@@ -32,7 +32,6 @@ const (
ResponseTypeIdToken = "id_token" ResponseTypeIdToken = "id_token"
ResponseTypeSaml = "saml" ResponseTypeSaml = "saml"
ResponseTypeCas = "cas" ResponseTypeCas = "cas"
ResponseTypeDevice = "device"
) )
type Response struct { type Response struct {
@@ -42,7 +41,6 @@ type Response struct {
Name string `json:"name"` Name string `json:"name"`
Data interface{} `json:"data"` Data interface{} `json:"data"`
Data2 interface{} `json:"data2"` Data2 interface{} `json:"data2"`
Data3 interface{} `json:"data3"`
} }
type Captcha struct { type Captcha struct {
@@ -118,13 +116,6 @@ func (c *ApiController) Signup() {
return return
} }
clientIp := util.GetClientIpFromRequest(c.Ctx.Request)
err = object.CheckEntryIp(clientIp, nil, application, organization, c.GetAcceptLanguage())
if err != nil {
c.ResponseError(err.Error())
return
}
msg := object.CheckUserSignup(application, organization, &authForm, c.GetAcceptLanguage()) msg := object.CheckUserSignup(application, organization, &authForm, c.GetAcceptLanguage())
if msg != "" { if msg != "" {
c.ResponseError(msg) c.ResponseError(msg)
@@ -141,8 +132,6 @@ func (c *ApiController) Signup() {
invitationName = invitation.Name invitationName = invitation.Name
} }
userEmailVerified := false
if application.IsSignupItemVisible("Email") && application.GetSignupItemRule("Email") != "No verification" && authForm.Email != "" { if application.IsSignupItemVisible("Email") && application.GetSignupItemRule("Email") != "No verification" && authForm.Email != "" {
var checkResult *object.VerifyResult var checkResult *object.VerifyResult
checkResult, err = object.CheckVerificationCode(authForm.Email, authForm.EmailCode, c.GetAcceptLanguage()) checkResult, err = object.CheckVerificationCode(authForm.Email, authForm.EmailCode, c.GetAcceptLanguage())
@@ -154,8 +143,6 @@ func (c *ApiController) Signup() {
c.ResponseError(checkResult.Msg) c.ResponseError(checkResult.Msg)
return return
} }
userEmailVerified = true
} }
var checkPhone string var checkPhone string
@@ -213,10 +200,6 @@ func (c *ApiController) Signup() {
Type: userType, Type: userType,
Password: authForm.Password, Password: authForm.Password,
DisplayName: authForm.Name, DisplayName: authForm.Name,
Gender: authForm.Gender,
Bio: authForm.Bio,
Tag: authForm.Tag,
Education: authForm.Education,
Avatar: organization.DefaultAvatar, Avatar: organization.DefaultAvatar,
Email: authForm.Email, Email: authForm.Email,
Phone: authForm.Phone, Phone: authForm.Phone,
@@ -234,7 +217,6 @@ func (c *ApiController) Signup() {
Karma: 0, Karma: 0,
Invitation: invitationName, Invitation: invitationName,
InvitationCode: authForm.InvitationCode, InvitationCode: authForm.InvitationCode,
EmailVerified: userEmailVerified,
} }
if len(organization.Tags) > 0 { if len(organization.Tags) > 0 {
@@ -252,15 +234,7 @@ func (c *ApiController) Signup() {
} }
} }
if invitation != nil && invitation.SignupGroup != "" { affected, err := object.AddUser(user)
user.Groups = []string{invitation.SignupGroup}
}
if application.DefaultGroup != "" && user.Groups == nil {
user.Groups = []string{application.DefaultGroup}
}
affected, err := object.AddUser(user, c.GetAcceptLanguage())
if err != nil { if err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return
@@ -286,7 +260,8 @@ func (c *ApiController) Signup() {
} }
} }
if user.Type == "normal-user" { if application.HasPromptPage() && user.Type == "normal-user" {
// The prompt page needs the user to be signed in
c.SetSessionUsername(user.GetId()) c.SetSessionUsername(user.GetId())
} }
@@ -468,10 +443,6 @@ func (c *ApiController) GetAccount() {
return return
} }
if organization != nil && len(organization.CountryCodes) == 1 && u != nil && u.CountryCode == "" {
u.CountryCode = organization.CountryCodes[0]
}
accessToken := c.GetSessionToken() accessToken := c.GetSessionToken()
if accessToken == "" { if accessToken == "" {
accessToken, err = object.GetAccessTokenByUser(user, c.Ctx.Request.Host) accessToken, err = object.GetAccessTokenByUser(user, c.Ctx.Request.Host)

View File

@@ -110,9 +110,6 @@ func (c *ApiController) GetApplication() {
} }
} }
clientIp := util.GetClientIpFromRequest(c.Ctx.Request)
object.CheckEntryIp(clientIp, nil, application, nil, c.GetAcceptLanguage())
c.ResponseOk(object.GetMaskedApplication(application, userId)) c.ResponseOk(object.GetMaskedApplication(application, userId))
} }
@@ -232,11 +229,6 @@ func (c *ApiController) UpdateApplication() {
return return
} }
if err = object.CheckIpWhitelist(application.IpWhitelist, c.GetAcceptLanguage()); err != nil {
c.ResponseError(err.Error())
return
}
c.Data["json"] = wrapActionResponse(object.UpdateApplication(id, &application)) c.Data["json"] = wrapActionResponse(object.UpdateApplication(id, &application))
c.ServeJSON() c.ServeJSON()
} }
@@ -267,11 +259,6 @@ func (c *ApiController) AddApplication() {
return return
} }
if err = object.CheckIpWhitelist(application.IpWhitelist, c.GetAcceptLanguage()); err != nil {
c.ResponseError(err.Error())
return
}
c.Data["json"] = wrapActionResponse(object.AddApplication(&application)) c.Data["json"] = wrapActionResponse(object.AddApplication(&application))
c.ServeJSON() c.ServeJSON()
} }

View File

@@ -22,15 +22,12 @@ import (
"io" "io"
"net/http" "net/http"
"net/url" "net/url"
"regexp"
"strconv" "strconv"
"strings" "strings"
"time"
"github.com/casdoor/casdoor/captcha" "github.com/casdoor/casdoor/captcha"
"github.com/casdoor/casdoor/conf" "github.com/casdoor/casdoor/conf"
"github.com/casdoor/casdoor/form" "github.com/casdoor/casdoor/form"
"github.com/casdoor/casdoor/i18n"
"github.com/casdoor/casdoor/idp" "github.com/casdoor/casdoor/idp"
"github.com/casdoor/casdoor/object" "github.com/casdoor/casdoor/object"
"github.com/casdoor/casdoor/proxy" "github.com/casdoor/casdoor/proxy"
@@ -56,30 +53,8 @@ func tokenToResponse(token *object.Token) *Response {
// HandleLoggedIn ... // HandleLoggedIn ...
func (c *ApiController) HandleLoggedIn(application *object.Application, user *object.User, form *form.AuthForm) (resp *Response) { func (c *ApiController) HandleLoggedIn(application *object.Application, user *object.User, form *form.AuthForm) (resp *Response) {
if user.IsForbidden {
c.ResponseError(c.T("check:The user is forbidden to sign in, please contact the administrator"))
return
}
userId := user.GetId() userId := user.GetId()
clientIp := util.GetClientIpFromRequest(c.Ctx.Request)
err := object.CheckEntryIp(clientIp, user, application, application.OrganizationObj, c.GetAcceptLanguage())
if err != nil {
c.ResponseError(err.Error())
return
}
if application.DisableSignin {
c.ResponseError(fmt.Sprintf(c.T("auth:The application: %s has disabled users to signin"), application.Name))
return
}
if application.OrganizationObj != nil && application.OrganizationObj.DisableSignin {
c.ResponseError(fmt.Sprintf(c.T("auth:The organization: %s has disabled users to signin"), application.Organization))
return
}
allowed, err := object.CheckLoginPermission(userId, application) allowed, err := object.CheckLoginPermission(userId, application)
if err != nil { if err != nil {
c.ResponseError(err.Error(), nil) c.ResponseError(err.Error(), nil)
@@ -142,7 +117,7 @@ func (c *ApiController) HandleLoggedIn(application *object.Application, user *ob
if form.Type == ResponseTypeLogin { if form.Type == ResponseTypeLogin {
c.SetSessionUsername(userId) c.SetSessionUsername(userId)
util.LogInfo(c.Ctx, "API: [%s] signed in", userId) util.LogInfo(c.Ctx, "API: [%s] signed in", userId)
resp = &Response{Status: "ok", Msg: "", Data: userId, Data3: user.NeedUpdatePassword} resp = &Response{Status: "ok", Msg: "", Data: userId, Data2: user.NeedUpdatePassword}
} else if form.Type == ResponseTypeCode { } else if form.Type == ResponseTypeCode {
clientId := c.Input().Get("clientId") clientId := c.Input().Get("clientId")
responseType := c.Input().Get("responseType") responseType := c.Input().Get("responseType")
@@ -157,14 +132,14 @@ func (c *ApiController) HandleLoggedIn(application *object.Application, user *ob
c.ResponseError(c.T("auth:Challenge method should be S256")) c.ResponseError(c.T("auth:Challenge method should be S256"))
return return
} }
code, err := object.GetOAuthCode(userId, clientId, form.Provider, responseType, redirectUri, scope, state, nonce, codeChallenge, c.Ctx.Request.Host, c.GetAcceptLanguage()) code, err := object.GetOAuthCode(userId, clientId, responseType, redirectUri, scope, state, nonce, codeChallenge, c.Ctx.Request.Host, c.GetAcceptLanguage())
if err != nil { if err != nil {
c.ResponseError(err.Error(), nil) c.ResponseError(err.Error(), nil)
return return
} }
resp = codeToResponse(code) resp = codeToResponse(code)
resp.Data3 = user.NeedUpdatePassword resp.Data2 = user.NeedUpdatePassword
if application.EnableSigninSession || application.HasPromptPage() { if application.EnableSigninSession || application.HasPromptPage() {
// The prompt page needs the user to be signed in // The prompt page needs the user to be signed in
c.SetSessionUsername(userId) c.SetSessionUsername(userId)
@@ -178,41 +153,15 @@ func (c *ApiController) HandleLoggedIn(application *object.Application, user *ob
token, _ := object.GetTokenByUser(application, user, scope, nonce, c.Ctx.Request.Host) token, _ := object.GetTokenByUser(application, user, scope, nonce, c.Ctx.Request.Host)
resp = tokenToResponse(token) resp = tokenToResponse(token)
resp.Data3 = user.NeedUpdatePassword resp.Data2 = user.NeedUpdatePassword
} }
} else if form.Type == ResponseTypeDevice {
authCache, ok := object.DeviceAuthMap.LoadAndDelete(form.UserCode)
if !ok {
c.ResponseError(c.T("auth:UserCode Expired"))
return
}
authCacheCast := authCache.(object.DeviceAuthCache)
if authCacheCast.RequestAt.Add(time.Second * 120).Before(time.Now()) {
c.ResponseError(c.T("auth:UserCode Expired"))
return
}
deviceAuthCacheDeviceCode, ok := object.DeviceAuthMap.Load(authCacheCast.UserName)
if !ok {
c.ResponseError(c.T("auth:DeviceCode Invalid"))
return
}
deviceAuthCacheDeviceCodeCast := deviceAuthCacheDeviceCode.(object.DeviceAuthCache)
deviceAuthCacheDeviceCodeCast.UserName = user.Name
deviceAuthCacheDeviceCodeCast.UserSignIn = true
object.DeviceAuthMap.Store(authCacheCast.UserName, deviceAuthCacheDeviceCodeCast)
resp = &Response{Status: "ok", Msg: "", Data: userId, Data3: user.NeedUpdatePassword}
} else if form.Type == ResponseTypeSaml { // saml flow } else if form.Type == ResponseTypeSaml { // saml flow
res, redirectUrl, method, err := object.GetSamlResponse(application, user, form.SamlRequest, c.Ctx.Request.Host) res, redirectUrl, method, err := object.GetSamlResponse(application, user, form.SamlRequest, c.Ctx.Request.Host)
if err != nil { if err != nil {
c.ResponseError(err.Error(), nil) c.ResponseError(err.Error(), nil)
return return
} }
resp = &Response{Status: "ok", Msg: "", Data: res, Data2: map[string]interface{}{"redirectUrl": redirectUrl, "method": method}, Data3: user.NeedUpdatePassword} resp = &Response{Status: "ok", Msg: "", Data: res, Data2: map[string]interface{}{"redirectUrl": redirectUrl, "method": method, "needUpdatePassword": user.NeedUpdatePassword}}
if application.EnableSigninSession || application.HasPromptPage() { if application.EnableSigninSession || application.HasPromptPage() {
// The prompt page needs the user to be signed in // The prompt page needs the user to be signed in
@@ -279,7 +228,6 @@ func (c *ApiController) GetApplicationLogin() {
state := c.Input().Get("state") state := c.Input().Get("state")
id := c.Input().Get("id") id := c.Input().Get("id")
loginType := c.Input().Get("type") loginType := c.Input().Get("type")
userCode := c.Input().Get("userCode")
var application *object.Application var application *object.Application
var msg string var msg string
@@ -306,24 +254,8 @@ func (c *ApiController) GetApplicationLogin() {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return
} }
} else if loginType == "device" {
deviceAuthCache, ok := object.DeviceAuthMap.Load(userCode)
if !ok {
c.ResponseError(c.T("auth:UserCode Invalid"))
return
}
deviceAuthCacheCast := deviceAuthCache.(object.DeviceAuthCache)
application, err = object.GetApplication(deviceAuthCacheCast.ApplicationId)
if err != nil {
c.ResponseError(err.Error())
return
}
} }
clientIp := util.GetClientIpFromRequest(c.Ctx.Request)
object.CheckEntryIp(clientIp, nil, application, nil, c.GetAcceptLanguage())
application = object.GetMaskedApplication(application, "") application = object.GetMaskedApplication(application, "")
if msg != "" { if msg != "" {
c.ResponseError(msg, application) c.ResponseError(msg, application)
@@ -363,42 +295,6 @@ func isProxyProviderType(providerType string) bool {
return false return false
} }
func checkMfaEnable(c *ApiController, user *object.User, organization *object.Organization, verificationType string) bool {
if object.IsNeedPromptMfa(organization, user) {
// The prompt page needs the user to be signed in
c.SetSessionUsername(user.GetId())
c.ResponseOk(object.RequiredMfa)
return true
}
if user.IsMfaEnabled() {
currentTime := util.String2Time(util.GetCurrentTime())
mfaRememberDeadline := util.String2Time(user.MfaRememberDeadline)
if user.MfaRememberDeadline != "" && mfaRememberDeadline.After(currentTime) {
return false
}
c.setMfaUserSession(user.GetId())
mfaList := object.GetAllMfaProps(user, true)
mfaAllowList := []*object.MfaProps{}
mfaRememberInHours := organization.MfaRememberInHours
for _, prop := range mfaList {
if prop.MfaType == verificationType || !prop.Enabled {
continue
}
prop.MfaRememberInHours = mfaRememberInHours
mfaAllowList = append(mfaAllowList, prop)
}
if len(mfaAllowList) >= 1 {
c.SetSession("verificationCodeType", verificationType)
c.Ctx.Input.CruSession.SessionRelease(c.Ctx.ResponseWriter)
c.ResponseOk(object.NextMfa, mfaAllowList)
return true
}
}
return false
}
// Login ... // Login ...
// @Title Login // @Title Login
// @Tag Login API // @Tag Login API
@@ -424,8 +320,6 @@ func (c *ApiController) Login() {
return return
} }
verificationType := ""
if authForm.Username != "" { if authForm.Username != "" {
if authForm.Type == ResponseTypeLogin { if authForm.Type == ResponseTypeLogin {
if c.GetSessionUsername() != "" { if c.GetSessionUsername() != "" {
@@ -461,27 +355,11 @@ func (c *ApiController) Login() {
return return
} }
faceIdProvider, err := object.GetFaceIdProviderByApplication(util.GetId(application.Owner, application.Name), "false", c.GetAcceptLanguage()) if err := object.CheckFaceId(user, authForm.FaceId, c.GetAcceptLanguage()); err != nil {
if err != nil { c.ResponseError(err.Error(), nil)
c.ResponseError(err.Error()) return
} }
if faceIdProvider == nil {
if err := object.CheckFaceId(user, authForm.FaceId, c.GetAcceptLanguage()); err != nil {
c.ResponseError(err.Error(), nil)
return
}
} else {
ok, err := user.CheckUserFace(authForm.FaceIdImage, faceIdProvider)
if err != nil {
c.ResponseError(err.Error(), nil)
}
if !ok {
c.ResponseError(i18n.Translate(c.GetAcceptLanguage(), "check:Face data does not exist, cannot log in"))
return
}
}
} else if authForm.Password == "" { } else if authForm.Password == "" {
if user, err = object.GetUserByFields(authForm.Organization, authForm.Username); err != nil { if user, err = object.GetUserByFields(authForm.Organization, authForm.Username); err != nil {
c.ResponseError(err.Error(), nil) c.ResponseError(err.Error(), nil)
@@ -521,8 +399,6 @@ func (c *ApiController) Login() {
c.ResponseError(fmt.Sprintf(c.T("verification:Phone number is invalid in your region %s"), authForm.CountryCode)) c.ResponseError(fmt.Sprintf(c.T("verification:Phone number is invalid in your region %s"), authForm.CountryCode))
return return
} }
} else if verificationCodeType == object.VerifyTypeEmail {
checkDest = authForm.Username
} }
// check result through Email or Phone // check result through Email or Phone
@@ -538,20 +414,6 @@ func (c *ApiController) Login() {
c.ResponseError(err.Error(), nil) c.ResponseError(err.Error(), nil)
return return
} }
if verificationCodeType == object.VerifyTypePhone {
verificationType = "sms"
} else {
verificationType = "email"
if !user.EmailVerified {
user.EmailVerified = true
_, err = object.UpdateUser(user.GetId(), user, []string{"email_verified"}, false)
if err != nil {
c.ResponseError(err.Error(), nil)
return
}
}
}
} else { } else {
var application *object.Application var application *object.Application
application, err = object.GetApplication(fmt.Sprintf("admin/%s", authForm.Application)) application, err = object.GetApplication(fmt.Sprintf("admin/%s", authForm.Application))
@@ -572,11 +434,8 @@ func (c *ApiController) Login() {
c.ResponseError(c.T("auth:The login method: login with LDAP is not enabled for the application")) c.ResponseError(c.T("auth:The login method: login with LDAP is not enabled for the application"))
return return
} }
clientIp := util.GetClientIpFromRequest(c.Ctx.Request)
var enableCaptcha bool var enableCaptcha bool
if enableCaptcha, err = object.CheckToEnableCaptcha(application, authForm.Organization, authForm.Username, clientIp); err != nil { if enableCaptcha, err = object.CheckToEnableCaptcha(application, authForm.Organization, authForm.Username); err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return
} else if enableCaptcha { } else if enableCaptcha {
@@ -591,7 +450,7 @@ func (c *ApiController) Login() {
} }
var isHuman bool var isHuman bool
isHuman, err = captcha.VerifyCaptchaByCaptchaType(authForm.CaptchaType, authForm.CaptchaToken, captchaProvider.ClientId, authForm.ClientSecret, captchaProvider.ClientId2) isHuman, err = captcha.VerifyCaptchaByCaptchaType(authForm.CaptchaType, authForm.CaptchaToken, authForm.ClientSecret)
if err != nil { if err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return
@@ -604,15 +463,6 @@ func (c *ApiController) Login() {
} }
password := authForm.Password password := authForm.Password
if application.OrganizationObj != nil {
password, err = util.GetUnobfuscatedPassword(application.OrganizationObj.PasswordObfuscatorType, application.OrganizationObj.PasswordObfuscatorKey, authForm.Password)
if err != nil {
c.ResponseError(err.Error())
return
}
}
isSigninViaLdap := authForm.SigninMethod == "LDAP" isSigninViaLdap := authForm.SigninMethod == "LDAP"
var isPasswordWithLdapEnabled bool var isPasswordWithLdapEnabled bool
if authForm.SigninMethod == "Password" { if authForm.SigninMethod == "Password" {
@@ -645,7 +495,16 @@ func (c *ApiController) Login() {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
} }
if checkMfaEnable(c, user, organization, verificationType) { if object.IsNeedPromptMfa(organization, user) {
// The prompt page needs the user to be signed in
c.SetSessionUsername(user.GetId())
c.ResponseOk(object.RequiredMfa)
return
}
if user.IsMfaEnabled() {
c.setMfaUserSession(user.GetId())
c.ResponseOk(object.NextMfa, user.GetPreferredMfaProps(true))
return return
} }
@@ -686,9 +545,6 @@ func (c *ApiController) Login() {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return
} }
if provider == nil {
c.ResponseError(fmt.Sprintf(c.T("auth:The provider: %s does not exist"), authForm.Provider))
}
providerItem := application.GetProviderItem(provider.Name) providerItem := application.GetProviderItem(provider.Name)
if !providerItem.IsProviderVisible() { if !providerItem.IsProviderVisible() {
@@ -742,17 +598,6 @@ func (c *ApiController) Login() {
c.ResponseError(fmt.Sprintf(c.T("auth:Failed to login in: %s"), err.Error())) c.ResponseError(fmt.Sprintf(c.T("auth:Failed to login in: %s"), err.Error()))
return return
} }
if provider.EmailRegex != "" {
reg, err := regexp.Compile(provider.EmailRegex)
if err != nil {
c.ResponseError(fmt.Sprintf(c.T("auth:Failed to login in: %s"), err.Error()))
return
}
if !reg.MatchString(userInfo.Email) {
c.ResponseError(fmt.Sprintf(c.T("check:Email is invalid")))
}
}
} }
if authForm.Method == "signup" { if authForm.Method == "signup" {
@@ -774,17 +619,16 @@ func (c *ApiController) Login() {
if user != nil && !user.IsDeleted { if user != nil && !user.IsDeleted {
// Sign in via OAuth (want to sign up but already have account) // Sign in via OAuth (want to sign up but already have account)
if user.IsForbidden {
c.ResponseError(c.T("check:The user is forbidden to sign in, please contact the administrator"))
}
// sync info from 3rd-party if possible // sync info from 3rd-party if possible
_, err = object.SetUserOAuthProperties(organization, user, provider.Type, userInfo) _, err = object.SetUserOAuthProperties(organization, user, provider.Type, userInfo)
if err != nil { if err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return
} }
if checkMfaEnable(c, user, organization, verificationType) {
return
}
resp = c.HandleLoggedIn(application, user, &authForm) resp = c.HandleLoggedIn(application, user, &authForm)
c.Ctx.Input.SetParam("recordUserId", user.GetId()) c.Ctx.Input.SetParam("recordUserId", user.GetId())
@@ -889,7 +733,7 @@ func (c *ApiController) Login() {
} }
var affected bool var affected bool
affected, err = object.AddUser(user, c.GetAcceptLanguage()) affected, err = object.AddUser(user)
if err != nil { if err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return
@@ -990,66 +834,18 @@ func (c *ApiController) Login() {
return return
} }
var application *object.Application
if authForm.ClientId == "" {
application, err = object.GetApplication(fmt.Sprintf("admin/%s", authForm.Application))
} else {
application, err = object.GetApplicationByClientId(authForm.ClientId)
}
if err != nil {
c.ResponseError(err.Error())
return
}
if application == nil {
c.ResponseError(fmt.Sprintf(c.T("auth:The application: %s does not exist"), authForm.Application))
return
}
var organization *object.Organization
organization, err = object.GetOrganization(util.GetId("admin", application.Organization))
if err != nil {
c.ResponseError(c.T(err.Error()))
}
if authForm.Passcode != "" { if authForm.Passcode != "" {
if authForm.MfaType == c.GetSession("verificationCodeType") { mfaUtil := object.GetMfaUtil(authForm.MfaType, user.GetPreferredMfaProps(false))
c.ResponseError("Invalid multi-factor authentication type")
return
}
user.CountryCode = user.GetCountryCode(user.CountryCode)
mfaUtil := object.GetMfaUtil(authForm.MfaType, user.GetMfaProps(authForm.MfaType, false))
if mfaUtil == nil { if mfaUtil == nil {
c.ResponseError("Invalid multi-factor authentication type") c.ResponseError("Invalid multi-factor authentication type")
return return
} }
passed, err := c.checkOrgMasterVerificationCode(user, authForm.Passcode) err = mfaUtil.Verify(authForm.Passcode)
if err != nil { if err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return
} }
if !passed {
err = mfaUtil.Verify(authForm.Passcode)
if err != nil {
c.ResponseError(err.Error())
return
}
}
if authForm.EnableMfaRemember {
mfaRememberInSeconds := organization.MfaRememberInHours * 3600
currentTime := util.String2Time(util.GetCurrentTime())
duration := time.Duration(mfaRememberInSeconds) * time.Second
user.MfaRememberDeadline = util.Time2String(currentTime.Add(duration))
_, err = object.UpdateUser(user.GetId(), user, []string{"mfa_remember_deadline"}, user.IsAdmin)
if err != nil {
c.ResponseError(err.Error())
return
}
}
c.SetSession("verificationCodeType", "")
} else if authForm.RecoveryCode != "" { } else if authForm.RecoveryCode != "" {
err = object.MfaRecover(user, authForm.RecoveryCode) err = object.MfaRecover(user, authForm.RecoveryCode)
if err != nil { if err != nil {
@@ -1061,6 +857,18 @@ func (c *ApiController) Login() {
return return
} }
var application *object.Application
application, err = object.GetApplication(fmt.Sprintf("admin/%s", authForm.Application))
if err != nil {
c.ResponseError(err.Error())
return
}
if application == nil {
c.ResponseError(fmt.Sprintf(c.T("auth:The application: %s does not exist"), authForm.Application))
return
}
resp = c.HandleLoggedIn(application, user, &authForm) resp = c.HandleLoggedIn(application, user, &authForm)
c.setMfaUserSession("") c.setMfaUserSession("")
@@ -1080,10 +888,6 @@ func (c *ApiController) Login() {
return return
} }
if authForm.Provider == "" {
authForm.Provider = authForm.ProviderBack
}
user := c.getCurrentUser() user := c.getCurrentUser()
resp = c.HandleLoggedIn(application, user, &authForm) resp = c.HandleLoggedIn(application, user, &authForm)
@@ -1094,18 +898,6 @@ func (c *ApiController) Login() {
} }
} }
if authForm.Language != "" {
user := c.getCurrentUser()
if user != nil {
user.Language = authForm.Language
_, err = object.UpdateUser(user.GetId(), user, []string{"language"}, user.IsAdmin)
if err != nil {
c.ResponseError(err.Error())
return
}
}
}
c.Data["json"] = resp c.Data["json"] = resp
c.ServeJSON() c.ServeJSON()
} }
@@ -1259,26 +1051,27 @@ func (c *ApiController) GetQRCode() {
func (c *ApiController) GetCaptchaStatus() { func (c *ApiController) GetCaptchaStatus() {
organization := c.Input().Get("organization") organization := c.Input().Get("organization")
userId := c.Input().Get("userId") userId := c.Input().Get("userId")
applicationName := c.Input().Get("application") user, err := object.GetUserByFields(organization, userId)
application, err := object.GetApplication(fmt.Sprintf("admin/%s", applicationName))
if err != nil { if err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return
} }
if application == nil {
c.ResponseError("application not found") captchaEnabled := false
return if user != nil {
var failedSigninLimit int
failedSigninLimit, _, err = object.GetFailedSigninConfigByUser(user)
if err != nil {
c.ResponseError(err.Error())
return
}
if user.SigninWrongTimes >= failedSigninLimit {
captchaEnabled = true
}
} }
clientIp := util.GetClientIpFromRequest(c.Ctx.Request)
captchaEnabled, err := object.CheckToEnableCaptcha(application, organization, userId, clientIp)
if err != nil {
c.ResponseError(err.Error())
return
}
c.ResponseOk(captchaEnabled) c.ResponseOk(captchaEnabled)
return
} }
// Callback // Callback
@@ -1294,75 +1087,3 @@ func (c *ApiController) Callback() {
frontendCallbackUrl := fmt.Sprintf("/callback?code=%s&state=%s", code, state) frontendCallbackUrl := fmt.Sprintf("/callback?code=%s&state=%s", code, state)
c.Ctx.Redirect(http.StatusFound, frontendCallbackUrl) c.Ctx.Redirect(http.StatusFound, frontendCallbackUrl)
} }
// DeviceAuth
// @Title DeviceAuth
// @Tag Device Authorization Endpoint
// @Description Endpoint for the device authorization flow
// @router /device-auth [post]
// @Success 200 {object} object.DeviceAuthResponse The Response object
func (c *ApiController) DeviceAuth() {
clientId := c.Input().Get("client_id")
scope := c.Input().Get("scope")
application, err := object.GetApplicationByClientId(clientId)
if err != nil {
c.Data["json"] = object.TokenError{
Error: err.Error(),
ErrorDescription: err.Error(),
}
c.ServeJSON()
return
}
if application == nil {
c.Data["json"] = object.TokenError{
Error: c.T("token:Invalid client_id"),
ErrorDescription: c.T("token:Invalid client_id"),
}
c.ServeJSON()
return
}
deviceCode := util.GenerateId()
userCode := util.GetRandomName()
generateTime := 0
for {
if generateTime > 5 {
c.Data["json"] = object.TokenError{
Error: "userCode gen",
ErrorDescription: c.T("token:Invalid client_id"),
}
c.ServeJSON()
return
}
_, ok := object.DeviceAuthMap.Load(userCode)
if !ok {
break
}
generateTime++
}
deviceAuthCache := object.DeviceAuthCache{
UserSignIn: false,
UserName: "",
Scope: scope,
ApplicationId: application.GetId(),
RequestAt: time.Now(),
}
userAuthCache := object.DeviceAuthCache{
UserSignIn: false,
UserName: deviceCode,
Scope: scope,
ApplicationId: application.GetId(),
RequestAt: time.Now(),
}
object.DeviceAuthMap.Store(deviceCode, deviceAuthCache)
object.DeviceAuthMap.Store(userCode, userAuthCache)
c.Data["json"] = object.GetDeviceAuthResponse(deviceCode, userCode, c.Ctx.Request.Host)
c.ServeJSON()
}

View File

@@ -40,18 +40,6 @@ func (c *ApiController) Enforce() {
enforcerId := c.Input().Get("enforcerId") enforcerId := c.Input().Get("enforcerId")
owner := c.Input().Get("owner") owner := c.Input().Get("owner")
params := []string{permissionId, modelId, resourceId, enforcerId, owner}
nonEmpty := 0
for _, param := range params {
if param != "" {
nonEmpty++
}
}
if nonEmpty > 1 {
c.ResponseError("Only one of the parameters (permissionId, modelId, resourceId, enforcerId, owner) should be provided")
return
}
if len(c.Ctx.Input.RequestBody) == 0 { if len(c.Ctx.Input.RequestBody) == 0 {
c.ResponseError("The request body should not be empty") c.ResponseError("The request body should not be empty")
return return
@@ -181,18 +169,6 @@ func (c *ApiController) BatchEnforce() {
enforcerId := c.Input().Get("enforcerId") enforcerId := c.Input().Get("enforcerId")
owner := c.Input().Get("owner") owner := c.Input().Get("owner")
params := []string{permissionId, modelId, enforcerId, owner}
nonEmpty := 0
for _, param := range params {
if param != "" {
nonEmpty++
}
}
if nonEmpty > 1 {
c.ResponseError("Only one of the parameters (permissionId, modelId, enforcerId, owner) should be provided")
return
}
var requests [][]string var requests [][]string
err := json.Unmarshal(c.Ctx.Input.RequestBody, &requests) err := json.Unmarshal(c.Ctx.Input.RequestBody, &requests)
if err != nil { if err != nil {

View File

@@ -1,247 +0,0 @@
// Copyright 2024 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.
package controllers
import (
"crypto/sha256"
"encoding/hex"
"encoding/json"
"fmt"
"os"
"os/exec"
"sort"
"strings"
"sync"
"time"
)
type CLIVersionInfo struct {
Version string
BinaryPath string
BinaryTime time.Time
}
var (
cliVersionCache = make(map[string]*CLIVersionInfo)
cliVersionMutex sync.RWMutex
)
// getCLIVersion
// @Title getCLIVersion
// @Description Get CLI version with cache mechanism
// @Param language string The language of CLI (go/java/rust etc.)
// @Return string The version string of CLI
// @Return error Error if CLI execution fails
func getCLIVersion(language string) (string, error) {
binaryName := fmt.Sprintf("casbin-%s-cli", language)
binaryPath, err := exec.LookPath(binaryName)
if err != nil {
return "", fmt.Errorf("executable file not found: %v", err)
}
fileInfo, err := os.Stat(binaryPath)
if err != nil {
return "", fmt.Errorf("failed to get binary info: %v", err)
}
cliVersionMutex.RLock()
if info, exists := cliVersionCache[language]; exists {
if info.BinaryPath == binaryPath && info.BinaryTime == fileInfo.ModTime() {
cliVersionMutex.RUnlock()
return info.Version, nil
}
}
cliVersionMutex.RUnlock()
cmd := exec.Command(binaryName, "--version")
output, err := cmd.CombinedOutput()
if err != nil {
return "", fmt.Errorf("failed to get CLI version: %v", err)
}
version := strings.TrimSpace(string(output))
cliVersionMutex.Lock()
cliVersionCache[language] = &CLIVersionInfo{
Version: version,
BinaryPath: binaryPath,
BinaryTime: fileInfo.ModTime(),
}
cliVersionMutex.Unlock()
return version, nil
}
func processArgsToTempFiles(args []string) ([]string, []string, error) {
tempFiles := []string{}
newArgs := []string{}
for i := 0; i < len(args); i++ {
if (args[i] == "-m" || args[i] == "-p") && i+1 < len(args) {
pattern := fmt.Sprintf("casbin_temp_%s_*.conf", args[i])
tempFile, err := os.CreateTemp("", pattern)
if err != nil {
return nil, nil, fmt.Errorf("failed to create temp file: %v", err)
}
_, err = tempFile.WriteString(args[i+1])
if err != nil {
tempFile.Close()
return nil, nil, fmt.Errorf("failed to write to temp file: %v", err)
}
tempFile.Close()
tempFiles = append(tempFiles, tempFile.Name())
newArgs = append(newArgs, args[i], tempFile.Name())
i++
} else {
newArgs = append(newArgs, args[i])
}
}
return tempFiles, newArgs, nil
}
// RunCasbinCommand
// @Title RunCasbinCommand
// @Tag Enforcer API
// @Description Call Casbin CLI commands
// @Success 200 {object} controllers.Response The Response object
// @router /run-casbin-command [get]
func (c *ApiController) RunCasbinCommand() {
if err := validateIdentifier(c); err != nil {
c.ResponseError(err.Error())
return
}
language := c.Input().Get("language")
argString := c.Input().Get("args")
if language == "" {
language = "go"
}
// use "casbin-go-cli" by default, can be also "casbin-java-cli", "casbin-node-cli", etc.
// the pre-built binary of "casbin-go-cli" can be found at: https://github.com/casbin/casbin-go-cli/releases
binaryName := fmt.Sprintf("casbin-%s-cli", language)
_, err := exec.LookPath(binaryName)
if err != nil {
c.ResponseError(fmt.Sprintf("executable file: %s not found in PATH", binaryName))
return
}
// RBAC model & policy example:
// https://door.casdoor.com/api/run-casbin-command?language=go&args=["enforce", "-m", "[request_definition]\nr = sub, obj, act\n\n[policy_definition]\np = sub, obj, act\n\n[role_definition]\ng = _, _\n\n[policy_effect]\ne = some(where (p.eft == allow))\n\n[matchers]\nm = g(r.sub, p.sub) %26%26 r.obj == p.obj %26%26 r.act == p.act", "-p", "p, alice, data1, read\np, bob, data2, write\np, data2_admin, data2, read\np, data2_admin, data2, write\ng, alice, data2_admin", "alice", "data1", "read"]
// Casbin CLI usage:
// https://github.com/jcasbin/casbin-java-cli?tab=readme-ov-file#get-started
var args []string
err = json.Unmarshal([]byte(argString), &args)
if err != nil {
c.ResponseError(err.Error())
return
}
if len(args) > 0 && args[0] == "--version" {
version, err := getCLIVersion(language)
if err != nil {
c.ResponseError(err.Error())
return
}
c.ResponseOk(version)
return
}
tempFiles, processedArgs, err := processArgsToTempFiles(args)
defer func() {
for _, file := range tempFiles {
os.Remove(file)
}
}()
if err != nil {
c.ResponseError(err.Error())
return
}
command := exec.Command(binaryName, processedArgs...)
outputBytes, err := command.CombinedOutput()
if err != nil {
errorString := err.Error()
if outputBytes != nil {
output := string(outputBytes)
errorString = fmt.Sprintf("%s, error: %s", output, err.Error())
}
c.ResponseError(errorString)
return
}
output := string(outputBytes)
output = strings.TrimSuffix(output, "\n")
c.ResponseOk(output)
}
// validateIdentifier
// @Title validateIdentifier
// @Description Validate the request hash and timestamp
// @Param hash string The SHA-256 hash string
// @Return error Returns error if validation fails, nil if successful
func validateIdentifier(c *ApiController) error {
language := c.Input().Get("language")
args := c.Input().Get("args")
hash := c.Input().Get("m")
timestamp := c.Input().Get("t")
if hash == "" || timestamp == "" || language == "" || args == "" {
return fmt.Errorf("invalid identifier")
}
requestTime, err := time.Parse(time.RFC3339, timestamp)
if err != nil {
return fmt.Errorf("invalid identifier")
}
timeDiff := time.Since(requestTime)
if timeDiff > 5*time.Minute || timeDiff < -5*time.Minute {
return fmt.Errorf("invalid identifier")
}
params := map[string]string{
"language": language,
"args": args,
}
keys := make([]string, 0, len(params))
for k := range params {
keys = append(keys, k)
}
sort.Strings(keys)
var paramParts []string
for _, k := range keys {
paramParts = append(paramParts, fmt.Sprintf("%s=%s", k, params[k]))
}
paramString := strings.Join(paramParts, "&")
version := "casbin-editor-v1"
rawString := fmt.Sprintf("%s|%s|%s", version, timestamp, paramString)
hasher := sha256.New()
hasher.Write([]byte(rawString))
calculatedHash := strings.ToLower(hex.EncodeToString(hasher.Sum(nil)))
if calculatedHash != strings.ToLower(hash) {
return fmt.Errorf("invalid identifier")
}
return nil
}

View File

@@ -1,530 +0,0 @@
package controllers
import (
"archive/tar"
"archive/zip"
"compress/gzip"
"crypto/sha256"
"encoding/hex"
"encoding/json"
"fmt"
"io"
"os"
"path/filepath"
"runtime"
"strings"
"time"
"github.com/beego/beego"
"github.com/casdoor/casdoor/proxy"
"github.com/casdoor/casdoor/util"
)
const (
javaCliRepo = "https://api.github.com/repos/jcasbin/casbin-java-cli/releases/latest"
goCliRepo = "https://api.github.com/repos/casbin/casbin-go-cli/releases/latest"
rustCliRepo = "https://api.github.com/repos/casbin-rs/casbin-rust-cli/releases/latest"
pythonCliRepo = "https://api.github.com/repos/casbin/casbin-python-cli/releases/latest"
downloadFolder = "bin"
)
type ReleaseInfo struct {
TagName string `json:"tag_name"`
Assets []struct {
Name string `json:"name"`
URL string `json:"browser_download_url"`
} `json:"assets"`
}
// @Title getBinaryNames
// @Description Get binary names for different platforms and architectures
// @Success 200 {map[string]string} map[string]string "Binary names map"
func getBinaryNames() map[string]string {
const (
golang = "go"
java = "java"
rust = "rust"
python = "python"
)
arch := runtime.GOARCH
archMap := map[string]struct{ goArch, rustArch string }{
"amd64": {"x86_64", "x86_64"},
"arm64": {"arm64", "aarch64"},
}
archNames, ok := archMap[arch]
if !ok {
archNames = struct{ goArch, rustArch string }{arch, arch}
}
switch runtime.GOOS {
case "windows":
return map[string]string{
golang: fmt.Sprintf("casbin-go-cli_Windows_%s.zip", archNames.goArch),
java: "casbin-java-cli.jar",
rust: fmt.Sprintf("casbin-rust-cli-%s-pc-windows-gnu", archNames.rustArch),
python: fmt.Sprintf("casbin-python-cli-windows-%s.exe", archNames.goArch),
}
case "darwin":
return map[string]string{
golang: fmt.Sprintf("casbin-go-cli_Darwin_%s.tar.gz", archNames.goArch),
java: "casbin-java-cli.jar",
rust: fmt.Sprintf("casbin-rust-cli-%s-apple-darwin", archNames.rustArch),
python: fmt.Sprintf("casbin-python-cli-darwin-%s", archNames.goArch),
}
case "linux":
return map[string]string{
golang: fmt.Sprintf("casbin-go-cli_Linux_%s.tar.gz", archNames.goArch),
java: "casbin-java-cli.jar",
rust: fmt.Sprintf("casbin-rust-cli-%s-unknown-linux-gnu", archNames.rustArch),
python: fmt.Sprintf("casbin-python-cli-linux-%s", archNames.goArch),
}
default:
return nil
}
}
// @Title getFinalBinaryName
// @Description Get final binary name for specific language
// @Param lang string true "Language type (go/java/rust)"
// @Success 200 {string} string "Final binary name"
func getFinalBinaryName(lang string) string {
switch lang {
case "go":
if runtime.GOOS == "windows" {
return "casbin-go-cli.exe"
}
return "casbin-go-cli"
case "java":
return "casbin-java-cli.jar"
case "rust":
if runtime.GOOS == "windows" {
return "casbin-rust-cli.exe"
}
return "casbin-rust-cli"
case "python":
if runtime.GOOS == "windows" {
return "casbin-python-cli.exe"
}
return "casbin-python-cli"
default:
return ""
}
}
// @Title getLatestCLIURL
// @Description Get latest CLI download URL from GitHub
// @Param repoURL string true "GitHub repository URL"
// @Param language string true "Language type"
// @Success 200 {string} string "Download URL and version"
func getLatestCLIURL(repoURL string, language string) (string, string, error) {
client := proxy.GetHttpClient(repoURL)
resp, err := client.Get(repoURL)
if err != nil {
return "", "", fmt.Errorf("failed to fetch release info: %v", err)
}
defer resp.Body.Close()
var release ReleaseInfo
if err := json.NewDecoder(resp.Body).Decode(&release); err != nil {
return "", "", err
}
binaryNames := getBinaryNames()
if binaryNames == nil {
return "", "", fmt.Errorf("unsupported OS: %s", runtime.GOOS)
}
binaryName := binaryNames[language]
for _, asset := range release.Assets {
if asset.Name == binaryName {
return asset.URL, release.TagName, nil
}
}
return "", "", fmt.Errorf("no suitable binary found for OS: %s, language: %s", runtime.GOOS, language)
}
// @Title extractGoCliFile
// @Description Extract the Go CLI file
// @Param filePath string true "The file path"
// @Success 200 {string} string "The extracted file path"
// @router /extractGoCliFile [post]
func extractGoCliFile(filePath string) error {
tempDir := filepath.Join(downloadFolder, "temp")
if err := os.MkdirAll(tempDir, 0o755); err != nil {
return err
}
defer os.RemoveAll(tempDir)
if runtime.GOOS == "windows" {
if err := unzipFile(filePath, tempDir); err != nil {
return err
}
} else {
if err := untarFile(filePath, tempDir); err != nil {
return err
}
}
execName := "casbin-go-cli"
if runtime.GOOS == "windows" {
execName += ".exe"
}
var execPath string
err := filepath.Walk(tempDir, func(path string, info os.FileInfo, err error) error {
if info.Name() == execName {
execPath = path
return nil
}
return nil
})
if err != nil {
return err
}
finalPath := filepath.Join(downloadFolder, execName)
if err := os.Rename(execPath, finalPath); err != nil {
return err
}
return os.Remove(filePath)
}
// @Title unzipFile
// @Description Unzip the file
// @Param zipPath string true "The zip file path"
// @Param destDir string true "The destination directory"
// @Success 200 {string} string "The extracted file path"
// @router /unzipFile [post]
func unzipFile(zipPath, destDir string) error {
r, err := zip.OpenReader(zipPath)
if err != nil {
return err
}
defer r.Close()
for _, f := range r.File {
fpath := filepath.Join(destDir, f.Name)
if f.FileInfo().IsDir() {
os.MkdirAll(fpath, os.ModePerm)
continue
}
if err = os.MkdirAll(filepath.Dir(fpath), os.ModePerm); err != nil {
return err
}
outFile, err := os.OpenFile(fpath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, f.Mode())
if err != nil {
return err
}
rc, err := f.Open()
if err != nil {
outFile.Close()
return err
}
_, err = io.Copy(outFile, rc)
outFile.Close()
rc.Close()
if err != nil {
return err
}
}
return nil
}
// @Title untarFile
// @Description Untar the file
// @Param tarPath string true "The tar file path"
// @Param destDir string true "The destination directory"
// @Success 200 {string} string "The extracted file path"
// @router /untarFile [post]
func untarFile(tarPath, destDir string) error {
file, err := os.Open(tarPath)
if err != nil {
return err
}
defer file.Close()
gzr, err := gzip.NewReader(file)
if err != nil {
return err
}
defer gzr.Close()
tr := tar.NewReader(gzr)
for {
header, err := tr.Next()
if err == io.EOF {
break
}
if err != nil {
return err
}
path := filepath.Join(destDir, header.Name)
switch header.Typeflag {
case tar.TypeDir:
if err := os.MkdirAll(path, 0o755); err != nil {
return err
}
case tar.TypeReg:
outFile, err := os.Create(path)
if err != nil {
return err
}
if _, err := io.Copy(outFile, tr); err != nil {
outFile.Close()
return err
}
outFile.Close()
}
}
return nil
}
// @Title createJavaCliWrapper
// @Description Create the Java CLI wrapper
// @Param binPath string true "The binary path"
// @Success 200 {string} string "The created file path"
// @router /createJavaCliWrapper [post]
func createJavaCliWrapper(binPath string) error {
if runtime.GOOS == "windows" {
// Create a Windows CMD file
cmdPath := filepath.Join(binPath, "casbin-java-cli.cmd")
cmdContent := fmt.Sprintf(`@echo off
java -jar "%s\casbin-java-cli.jar" %%*`, binPath)
err := os.WriteFile(cmdPath, []byte(cmdContent), 0o755)
if err != nil {
return fmt.Errorf("failed to create Java CLI wrapper: %v", err)
}
} else {
// Create Unix shell script
shPath := filepath.Join(binPath, "casbin-java-cli")
shContent := fmt.Sprintf(`#!/bin/sh
java -jar "%s/casbin-java-cli.jar" "$@"`, binPath)
err := os.WriteFile(shPath, []byte(shContent), 0o755)
if err != nil {
return fmt.Errorf("failed to create Java CLI wrapper: %v", err)
}
}
return nil
}
// @Title downloadCLI
// @Description Download and setup CLI tools
// @Success 200 {error} error "Error if any"
func downloadCLI() error {
pathEnv := os.Getenv("PATH")
binPath, err := filepath.Abs(downloadFolder)
if err != nil {
return fmt.Errorf("failed to get absolute path to download directory: %v", err)
}
if !strings.Contains(pathEnv, binPath) {
newPath := fmt.Sprintf("%s%s%s", binPath, string(os.PathListSeparator), pathEnv)
if err := os.Setenv("PATH", newPath); err != nil {
return fmt.Errorf("failed to update PATH environment variable: %v", err)
}
}
if err := os.MkdirAll(downloadFolder, 0o755); err != nil {
return fmt.Errorf("failed to create download directory: %v", err)
}
repos := map[string]string{
"java": javaCliRepo,
"go": goCliRepo,
"rust": rustCliRepo,
"python": pythonCliRepo,
}
for lang, repo := range repos {
cliURL, version, err := getLatestCLIURL(repo, lang)
if err != nil {
fmt.Printf("failed to get %s CLI URL: %v\n", lang, err)
continue
}
originalPath := filepath.Join(downloadFolder, getBinaryNames()[lang])
fmt.Printf("downloading %s CLI: %s\n", lang, cliURL)
client := proxy.GetHttpClient(cliURL)
resp, err := client.Get(cliURL)
if err != nil {
fmt.Printf("failed to download %s CLI: %v\n", lang, err)
continue
}
func() {
defer resp.Body.Close()
if err := os.MkdirAll(filepath.Dir(originalPath), 0o755); err != nil {
fmt.Printf("failed to create directory for %s CLI: %v\n", lang, err)
return
}
tmpFile := originalPath + ".tmp"
out, err := os.Create(tmpFile)
if err != nil {
fmt.Printf("failed to create or write %s CLI: %v\n", lang, err)
return
}
defer func() {
out.Close()
os.Remove(tmpFile)
}()
if _, err = io.Copy(out, resp.Body); err != nil ||
out.Close() != nil ||
os.Rename(tmpFile, originalPath) != nil {
fmt.Printf("failed to download %s CLI: %v\n", lang, err)
return
}
}()
if lang == "go" {
if err := extractGoCliFile(originalPath); err != nil {
fmt.Printf("failed to extract Go CLI: %v\n", err)
continue
}
} else {
finalPath := filepath.Join(downloadFolder, getFinalBinaryName(lang))
if err := os.Rename(originalPath, finalPath); err != nil {
fmt.Printf("failed to rename %s CLI: %v\n", lang, err)
continue
}
}
if runtime.GOOS != "windows" {
execPath := filepath.Join(downloadFolder, getFinalBinaryName(lang))
if err := os.Chmod(execPath, 0o755); err != nil {
fmt.Printf("failed to set %s CLI execution permission: %v\n", lang, err)
continue
}
}
fmt.Printf("downloaded %s CLI version: %s\n", lang, version)
if lang == "java" {
if err := createJavaCliWrapper(binPath); err != nil {
fmt.Printf("failed to create Java CLI wrapper: %v\n", err)
continue
}
}
}
return nil
}
// @Title RefreshEngines
// @Tag CLI API
// @Description Refresh all CLI engines
// @Param m query string true "Hash for request validation"
// @Param t query string true "Timestamp for request validation"
// @Success 200 {object} controllers.Response The Response object
// @router /refresh-engines [post]
func (c *ApiController) RefreshEngines() {
if !beego.AppConfig.DefaultBool("isDemoMode", false) {
c.ResponseError("refresh engines is only available in demo mode")
return
}
hash := c.Input().Get("m")
timestamp := c.Input().Get("t")
if hash == "" || timestamp == "" {
c.ResponseError("invalid identifier")
return
}
requestTime, err := time.Parse(time.RFC3339, timestamp)
if err != nil {
c.ResponseError("invalid identifier")
return
}
timeDiff := time.Since(requestTime)
if timeDiff > 5*time.Minute || timeDiff < -5*time.Minute {
c.ResponseError("invalid identifier")
return
}
version := "casbin-editor-v1"
rawString := fmt.Sprintf("%s|%s", version, timestamp)
hasher := sha256.New()
hasher.Write([]byte(rawString))
calculatedHash := strings.ToLower(hex.EncodeToString(hasher.Sum(nil)))
if calculatedHash != strings.ToLower(hash) {
c.ResponseError("invalid identifier")
return
}
err = downloadCLI()
if err != nil {
c.ResponseError(fmt.Sprintf("failed to refresh engines: %v", err))
return
}
c.ResponseOk(map[string]string{
"status": "success",
"message": "CLI engines updated successfully",
})
}
// @Title ScheduleCLIUpdater
// @Description Start periodic CLI update scheduler
func ScheduleCLIUpdater() {
if !beego.AppConfig.DefaultBool("isDemoMode", false) {
return
}
ticker := time.NewTicker(1 * time.Hour)
defer ticker.Stop()
for range ticker.C {
err := downloadCLI()
if err != nil {
fmt.Printf("failed to update CLI: %v\n", err)
} else {
fmt.Println("CLI updated successfully")
}
}
}
// @Title DownloadCLI
// @Description Download the CLI
// @Success 200 {string} string "The downloaded file path"
// @router /downloadCLI [post]
func DownloadCLI() error {
return downloadCLI()
}
// @Title InitCLIDownloader
// @Description Initialize CLI downloader and start update scheduler
func InitCLIDownloader() {
if !beego.AppConfig.DefaultBool("isDemoMode", false) {
return
}
util.SafeGoroutine(func() {
err := DownloadCLI()
if err != nil {
fmt.Printf("failed to initialize CLI downloader: %v\n", err)
}
ScheduleCLIUpdater()
})
}

View File

@@ -154,14 +154,6 @@ func (c *ApiController) DeleteEnforcer() {
c.ServeJSON() c.ServeJSON()
} }
// GetPolicies
// @Title GetPolicies
// @Tag Enforcer API
// @Description get policies
// @Param id query string true "The id ( owner/name ) of enforcer"
// @Param adapterId query string false "The adapter id"
// @Success 200 {array} xormadapter.CasbinRule
// @router /get-policies [get]
func (c *ApiController) GetPolicies() { func (c *ApiController) GetPolicies() {
id := c.Input().Get("id") id := c.Input().Get("id")
adapterId := c.Input().Get("adapterId") adapterId := c.Input().Get("adapterId")
@@ -173,7 +165,7 @@ func (c *ApiController) GetPolicies() {
return return
} }
if adapter == nil { if adapter == nil {
c.ResponseError(fmt.Sprintf(c.T("enforcer:the adapter: %s is not found"), adapterId)) c.ResponseError(fmt.Sprintf(c.T("the adapter: %s is not found"), adapterId))
return return
} }
@@ -196,41 +188,6 @@ func (c *ApiController) GetPolicies() {
c.ResponseOk(policies) c.ResponseOk(policies)
} }
// GetFilteredPolicies
// @Title GetFilteredPolicies
// @Tag Enforcer API
// @Description get filtered policies with support for multiple filters via POST body
// @Param id query string true "The id ( owner/name ) of enforcer"
// @Param body body []object.Filter true "Array of filter objects for multiple filters"
// @Success 200 {array} xormadapter.CasbinRule
// @router /get-filtered-policies [post]
func (c *ApiController) GetFilteredPolicies() {
id := c.Input().Get("id")
var filters []object.Filter
err := json.Unmarshal(c.Ctx.Input.RequestBody, &filters)
if err != nil {
c.ResponseError(err.Error())
return
}
filteredPolicies, err := object.GetFilteredPoliciesMulti(id, filters)
if err != nil {
c.ResponseError(err.Error())
return
}
c.ResponseOk(filteredPolicies)
}
// UpdatePolicy
// @Title UpdatePolicy
// @Tag Enforcer API
// @Description update policy
// @Param id query string true "The id ( owner/name ) of enforcer"
// @Param body body []xormadapter.CasbinRule true "Array containing old and new policy"
// @Success 200 {object} Response
// @router /update-policy [post]
func (c *ApiController) UpdatePolicy() { func (c *ApiController) UpdatePolicy() {
id := c.Input().Get("id") id := c.Input().Get("id")
@@ -250,14 +207,6 @@ func (c *ApiController) UpdatePolicy() {
c.ServeJSON() c.ServeJSON()
} }
// AddPolicy
// @Title AddPolicy
// @Tag Enforcer API
// @Description add policy
// @Param id query string true "The id ( owner/name ) of enforcer"
// @Param body body xormadapter.CasbinRule true "The policy to add"
// @Success 200 {object} Response
// @router /add-policy [post]
func (c *ApiController) AddPolicy() { func (c *ApiController) AddPolicy() {
id := c.Input().Get("id") id := c.Input().Get("id")
@@ -277,14 +226,6 @@ func (c *ApiController) AddPolicy() {
c.ServeJSON() c.ServeJSON()
} }
// RemovePolicy
// @Title RemovePolicy
// @Tag Enforcer API
// @Description remove policy
// @Param id query string true "The id ( owner/name ) of enforcer"
// @Param body body xormadapter.CasbinRule true "The policy to remove"
// @Success 200 {object} Response
// @router /remove-policy [post]
func (c *ApiController) RemovePolicy() { func (c *ApiController) RemovePolicy() {
id := c.Input().Get("id") id := c.Input().Get("id")

View File

@@ -15,7 +15,6 @@ package controllers
import ( import (
"encoding/json" "encoding/json"
"fmt"
"github.com/beego/beego/utils/pagination" "github.com/beego/beego/utils/pagination"
"github.com/casdoor/casdoor/object" "github.com/casdoor/casdoor/object"
@@ -71,33 +70,15 @@ func (c *ApiController) GetGroups() {
if err != nil { if err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return
} } else {
groupsHaveChildrenMap, err := object.GetGroupsHaveChildrenMap(groups) err = object.ExtendGroupsWithUsers(groups)
if err != nil { if err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return
}
for _, group := range groups {
_, ok := groupsHaveChildrenMap[group.GetId()]
if ok {
group.HaveChildren = true
} }
parent, ok := groupsHaveChildrenMap[fmt.Sprintf("%s/%s", group.Owner, group.ParentId)] c.ResponseOk(groups, paginator.Nums())
if ok {
group.ParentName = parent.DisplayName
}
} }
err = object.ExtendGroupsWithUsers(groups)
if err != nil {
c.ResponseError(err.Error())
return
}
c.ResponseOk(groups, paginator.Nums())
} }
} }

View File

@@ -1,56 +0,0 @@
// Copyright 2025 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.
package controllers
import (
"fmt"
"os"
"github.com/casdoor/casdoor/object"
"github.com/casdoor/casdoor/util"
)
func (c *ApiController) UploadGroups() {
userId := c.GetSessionUsername()
owner, user := util.GetOwnerAndNameFromId(userId)
file, header, err := c.Ctx.Request.FormFile("file")
if err != nil {
c.ResponseError(err.Error())
return
}
fileId := fmt.Sprintf("%s_%s_%s", owner, user, util.RemoveExt(header.Filename))
path := util.GetUploadXlsxPath(fileId)
defer os.Remove(path)
err = saveFile(path, &file)
if err != nil {
c.ResponseError(err.Error())
return
}
affected, err := object.UploadGroups(owner, path)
if err != nil {
c.ResponseError(err.Error())
return
}
if affected {
c.ResponseOk()
} else {
c.ResponseError(c.T("general:Failed to import groups"))
}
}

View File

@@ -27,10 +27,10 @@ type LdapResp struct {
ExistUuids []string `json:"existUuids"` ExistUuids []string `json:"existUuids"`
} }
// type LdapRespGroup struct { //type LdapRespGroup struct {
// GroupId string // GroupId string
// GroupName string // GroupName string
// } //}
type LdapSyncResp struct { type LdapSyncResp struct {
Exist []object.LdapUser `json:"exist"` Exist []object.LdapUser `json:"exist"`
@@ -61,18 +61,18 @@ func (c *ApiController) GetLdapUsers() {
} }
defer conn.Close() defer conn.Close()
// groupsMap, err := conn.GetLdapGroups(ldapServer.BaseDn) //groupsMap, err := conn.GetLdapGroups(ldapServer.BaseDn)
// if err != nil { //if err != nil {
// c.ResponseError(err.Error()) // c.ResponseError(err.Error())
// return // return
// } //}
// for _, group := range groupsMap { //for _, group := range groupsMap {
// resp.Groups = append(resp.Groups, LdapRespGroup{ // resp.Groups = append(resp.Groups, LdapRespGroup{
// GroupId: group.GidNumber, // GroupId: group.GidNumber,
// GroupName: group.Cn, // GroupName: group.Cn,
// }) // })
// } //}
users, err := conn.GetLdapUsers(ldapServer) users, err := conn.GetLdapUsers(ldapServer)
if err != nil { if err != nil {
@@ -269,11 +269,7 @@ func (c *ApiController) SyncLdapUsers() {
return return
} }
exist, failed, err := object.SyncLdapUsers(owner, users, ldapId) exist, failed, _ := object.SyncLdapUsers(owner, users, ldapId)
if err != nil {
c.ResponseError(err.Error())
return
}
c.ResponseOk(&LdapSyncResp{ c.ResponseOk(&LdapSyncResp{
Exist: exist, Exist: exist,

View File

@@ -60,6 +60,7 @@ func (c *ApiController) Unlink() {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return
} }
if application == nil { if application == nil {
c.ResponseError(c.T("link:You can't unlink yourself, you are not a member of any application")) c.ResponseError(c.T("link:You can't unlink yourself, you are not a member of any application"))
return return

View File

@@ -22,6 +22,13 @@ import (
"github.com/google/uuid" "github.com/google/uuid"
) )
const (
MfaRecoveryCodesSession = "mfa_recovery_codes"
MfaCountryCodeSession = "mfa_country_code"
MfaDestSession = "mfa_dest"
MfaTotpSecretSession = "mfa_totp_secret"
)
// MfaSetupInitiate // MfaSetupInitiate
// @Title MfaSetupInitiate // @Title MfaSetupInitiate
// @Tag MFA API // @Tag MFA API
@@ -58,12 +65,6 @@ func (c *ApiController) MfaSetupInitiate() {
return return
} }
organization, err := object.GetOrganizationByUser(user)
if err != nil {
c.ResponseError(err.Error())
return
}
mfaProps, err := MfaUtil.Initiate(user.GetId()) mfaProps, err := MfaUtil.Initiate(user.GetId())
if err != nil { if err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
@@ -71,8 +72,12 @@ func (c *ApiController) MfaSetupInitiate() {
} }
recoveryCode := uuid.NewString() recoveryCode := uuid.NewString()
c.SetSession(MfaRecoveryCodesSession, recoveryCode)
if mfaType == object.TotpType {
c.SetSession(MfaTotpSecretSession, mfaProps.Secret)
}
mfaProps.RecoveryCodes = []string{recoveryCode} mfaProps.RecoveryCodes = []string{recoveryCode}
mfaProps.MfaRememberInHours = organization.MfaRememberInHours
resp := mfaProps resp := mfaProps
c.ResponseOk(resp) c.ResponseOk(resp)
@@ -89,9 +94,6 @@ func (c *ApiController) MfaSetupInitiate() {
func (c *ApiController) MfaSetupVerify() { func (c *ApiController) MfaSetupVerify() {
mfaType := c.Ctx.Request.Form.Get("mfaType") mfaType := c.Ctx.Request.Form.Get("mfaType")
passcode := c.Ctx.Request.Form.Get("passcode") passcode := c.Ctx.Request.Form.Get("passcode")
secret := c.Ctx.Request.Form.Get("secret")
dest := c.Ctx.Request.Form.Get("dest")
countryCode := c.Ctx.Request.Form.Get("countryCode")
if mfaType == "" || passcode == "" { if mfaType == "" || passcode == "" {
c.ResponseError("missing auth type or passcode") c.ResponseError("missing auth type or passcode")
@@ -102,28 +104,32 @@ func (c *ApiController) MfaSetupVerify() {
MfaType: mfaType, MfaType: mfaType,
} }
if mfaType == object.TotpType { if mfaType == object.TotpType {
if secret == "" { secret := c.GetSession(MfaTotpSecretSession)
if secret == nil {
c.ResponseError("totp secret is missing") c.ResponseError("totp secret is missing")
return return
} }
config.Secret = secret config.Secret = secret.(string)
} else if mfaType == object.SmsType { } else if mfaType == object.SmsType {
if dest == "" { dest := c.GetSession(MfaDestSession)
if dest == nil {
c.ResponseError("destination is missing") c.ResponseError("destination is missing")
return return
} }
config.Secret = dest config.Secret = dest.(string)
if countryCode == "" { countryCode := c.GetSession(MfaCountryCodeSession)
if countryCode == nil {
c.ResponseError("country code is missing") c.ResponseError("country code is missing")
return return
} }
config.CountryCode = countryCode config.CountryCode = countryCode.(string)
} else if mfaType == object.EmailType { } else if mfaType == object.EmailType {
if dest == "" { dest := c.GetSession(MfaDestSession)
if dest == nil {
c.ResponseError("destination is missing") c.ResponseError("destination is missing")
return return
} }
config.Secret = dest config.Secret = dest.(string)
} }
mfaUtil := object.GetMfaUtil(mfaType, config) mfaUtil := object.GetMfaUtil(mfaType, config)
@@ -153,10 +159,6 @@ func (c *ApiController) MfaSetupEnable() {
owner := c.Ctx.Request.Form.Get("owner") owner := c.Ctx.Request.Form.Get("owner")
name := c.Ctx.Request.Form.Get("name") name := c.Ctx.Request.Form.Get("name")
mfaType := c.Ctx.Request.Form.Get("mfaType") mfaType := c.Ctx.Request.Form.Get("mfaType")
secret := c.Ctx.Request.Form.Get("secret")
dest := c.Ctx.Request.Form.Get("dest")
countryCode := c.Ctx.Request.Form.Get("secret")
recoveryCodes := c.Ctx.Request.Form.Get("recoveryCodes")
user, err := object.GetUser(util.GetId(owner, name)) user, err := object.GetUser(util.GetId(owner, name))
if err != nil { if err != nil {
@@ -174,39 +176,43 @@ func (c *ApiController) MfaSetupEnable() {
} }
if mfaType == object.TotpType { if mfaType == object.TotpType {
if secret == "" { secret := c.GetSession(MfaTotpSecretSession)
if secret == nil {
c.ResponseError("totp secret is missing") c.ResponseError("totp secret is missing")
return return
} }
config.Secret = secret config.Secret = secret.(string)
} else if mfaType == object.EmailType { } else if mfaType == object.EmailType {
if user.Email == "" { if user.Email == "" {
if dest == "" { dest := c.GetSession(MfaDestSession)
if dest == nil {
c.ResponseError("destination is missing") c.ResponseError("destination is missing")
return return
} }
user.Email = dest user.Email = dest.(string)
} }
} else if mfaType == object.SmsType { } else if mfaType == object.SmsType {
if user.Phone == "" { if user.Phone == "" {
if dest == "" { dest := c.GetSession(MfaDestSession)
if dest == nil {
c.ResponseError("destination is missing") c.ResponseError("destination is missing")
return return
} }
user.Phone = dest user.Phone = dest.(string)
if countryCode == "" { countryCode := c.GetSession(MfaCountryCodeSession)
if countryCode == nil {
c.ResponseError("country code is missing") c.ResponseError("country code is missing")
return return
} }
user.CountryCode = countryCode user.CountryCode = countryCode.(string)
} }
} }
recoveryCodes := c.GetSession(MfaRecoveryCodesSession)
if recoveryCodes == "" { if recoveryCodes == nil {
c.ResponseError("recovery codes is missing") c.ResponseError("recovery codes is missing")
return return
} }
config.RecoveryCodes = []string{recoveryCodes} config.RecoveryCodes = []string{recoveryCodes.(string)}
mfaUtil := object.GetMfaUtil(mfaType, config) mfaUtil := object.GetMfaUtil(mfaType, config)
if mfaUtil == nil { if mfaUtil == nil {
@@ -220,6 +226,14 @@ func (c *ApiController) MfaSetupEnable() {
return return
} }
c.DelSession(MfaRecoveryCodesSession)
if mfaType == object.TotpType {
c.DelSession(MfaTotpSecretSession)
} else {
c.DelSession(MfaCountryCodeSession)
c.DelSession(MfaDestSession)
}
c.ResponseOk(http.StatusText(http.StatusOK)) c.ResponseOk(http.StatusText(http.StatusOK))
} }

View File

@@ -14,11 +14,7 @@
package controllers package controllers
import ( import "github.com/casdoor/casdoor/object"
"strings"
"github.com/casdoor/casdoor/object"
)
// GetOidcDiscovery // GetOidcDiscovery
// @Title GetOidcDiscovery // @Title GetOidcDiscovery
@@ -46,31 +42,3 @@ func (c *RootController) GetJwks() {
c.Data["json"] = jwks c.Data["json"] = jwks
c.ServeJSON() c.ServeJSON()
} }
// GetWebFinger
// @Title GetWebFinger
// @Tag OIDC API
// @Param resource query string true "resource"
// @Success 200 {object} object.WebFinger
// @router /.well-known/webfinger [get]
func (c *RootController) GetWebFinger() {
resource := c.Input().Get("resource")
rels := []string{}
host := c.Ctx.Request.Host
for key, value := range c.Input() {
if strings.HasPrefix(key, "rel") {
rels = append(rels, value...)
}
}
webfinger, err := object.GetWebFinger(resource, rels, host)
if err != nil {
c.ResponseError(err.Error())
return
}
c.Data["json"] = webfinger
c.Ctx.Output.ContentType("application/jrd+json")
c.ServeJSON()
}

View File

@@ -65,7 +65,7 @@ func (c *ApiController) GetOrganizations() {
c.ResponseOk(organizations) c.ResponseOk(organizations)
} else { } else {
limit := util.ParseInt(limit) limit := util.ParseInt(limit)
count, err := object.GetOrganizationCount(owner, organizationName, field, value) count, err := object.GetOrganizationCount(owner, field, value)
if err != nil { if err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return
@@ -98,10 +98,6 @@ func (c *ApiController) GetOrganization() {
return return
} }
if organization != nil && organization.MfaRememberInHours == 0 {
organization.MfaRememberInHours = 12
}
c.ResponseOk(organization) c.ResponseOk(organization)
} }
@@ -123,14 +119,7 @@ func (c *ApiController) UpdateOrganization() {
return return
} }
if err = object.CheckIpWhitelist(organization.IpWhitelist, c.GetAcceptLanguage()); err != nil { c.Data["json"] = wrapActionResponse(object.UpdateOrganization(id, &organization))
c.ResponseError(err.Error())
return
}
isGlobalAdmin, _ := c.isGlobalAdmin()
c.Data["json"] = wrapActionResponse(object.UpdateOrganization(id, &organization, isGlobalAdmin))
c.ServeJSON() c.ServeJSON()
} }
@@ -149,7 +138,7 @@ func (c *ApiController) AddOrganization() {
return return
} }
count, err := object.GetOrganizationCount("", "", "", "") count, err := object.GetOrganizationCount("", "", "")
if err != nil { if err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return
@@ -160,11 +149,6 @@ func (c *ApiController) AddOrganization() {
return return
} }
if err = object.CheckIpWhitelist(organization.IpWhitelist, c.GetAcceptLanguage()); err != nil {
c.ResponseError(err.Error())
return
}
c.Data["json"] = wrapActionResponse(object.AddOrganization(&organization)) c.Data["json"] = wrapActionResponse(object.AddOrganization(&organization))
c.ServeJSON() c.ServeJSON()
} }

View File

@@ -49,6 +49,6 @@ func (c *ApiController) UploadPermissions() {
if affected { if affected {
c.ResponseOk() c.ResponseOk()
} else { } else {
c.ResponseError(c.T("general:Failed to import users")) c.ResponseError(c.T("user_upload:Failed to import users"))
} }
} }

View File

@@ -182,10 +182,6 @@ func (c *ApiController) BuyProduct() {
paidUserName := c.Input().Get("userName") paidUserName := c.Input().Get("userName")
owner, _ := util.GetOwnerAndNameFromId(id) owner, _ := util.GetOwnerAndNameFromId(id)
userId := util.GetId(owner, paidUserName) userId := util.GetId(owner, paidUserName)
if paidUserName != "" && paidUserName != c.GetSessionUsername() && !c.IsAdmin() {
c.ResponseError(c.T("general:Only admin user can specify user"))
return
}
if paidUserName == "" { if paidUserName == "" {
userId = c.GetSessionUsername() userId = c.GetSessionUsername()
} }

View File

@@ -257,7 +257,7 @@ func (c *ApiController) UploadResource() {
fileType, _ = util.GetOwnerAndNameFromIdNoCheck(mimeType + "/") fileType, _ = util.GetOwnerAndNameFromIdNoCheck(mimeType + "/")
} }
fullFilePath = object.GetTruncatedPath(provider, fullFilePath, 450) fullFilePath = object.GetTruncatedPath(provider, fullFilePath, 175)
if tag != "avatar" && tag != "termsOfUse" && !strings.HasPrefix(tag, "idCard") { if tag != "avatar" && tag != "termsOfUse" && !strings.HasPrefix(tag, "idCard") {
ext := filepath.Ext(filepath.Base(fullFilePath)) ext := filepath.Ext(filepath.Base(fullFilePath))
index := len(fullFilePath) - len(ext) index := len(fullFilePath) - len(ext)

View File

@@ -49,6 +49,6 @@ func (c *ApiController) UploadRoles() {
if affected { if affected {
c.ResponseOk() c.ResponseOk()
} else { } else {
c.ResponseError(c.T("general:Failed to import users")) c.ResponseError(c.T("user_upload:Failed to import users"))
} }
} }

View File

@@ -21,11 +21,6 @@ import (
) )
func (c *RootController) HandleScim() { func (c *RootController) HandleScim() {
_, ok := c.RequireAdmin()
if !ok {
return
}
path := c.Ctx.Request.URL.Path path := c.Ctx.Request.URL.Path
c.Ctx.Request.URL.Path = strings.TrimPrefix(path, "/scim") c.Ctx.Request.URL.Path = strings.TrimPrefix(path, "/scim")
scim.Server.ServeHTTP(c.Ctx.ResponseWriter, c.Ctx.Request) scim.Server.ServeHTTP(c.Ctx.ResponseWriter, c.Ctx.Request)

View File

@@ -93,7 +93,7 @@ func (c *ApiController) SendEmail() {
// when receiver is the reserved keyword: "TestSmtpServer", it means to test the SMTP server instead of sending a real Email // when receiver is the reserved keyword: "TestSmtpServer", it means to test the SMTP server instead of sending a real Email
if len(emailForm.Receivers) == 1 && emailForm.Receivers[0] == "TestSmtpServer" { if len(emailForm.Receivers) == 1 && emailForm.Receivers[0] == "TestSmtpServer" {
err = object.TestSmtpServer(provider) err = object.DailSmtpServer(provider)
if err != nil { if err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return
@@ -140,9 +140,6 @@ func (c *ApiController) SendEmail() {
} }
content = strings.Replace(content, "%{user.friendlyName}", userString, 1) content = strings.Replace(content, "%{user.friendlyName}", userString, 1)
matchContent := object.ResetLinkReg.Find([]byte(content))
content = strings.Replace(content, string(matchContent), "", -1)
for _, receiver := range emailForm.Receivers { for _, receiver := range emailForm.Receivers {
err = object.SendEmail(provider, emailForm.Title, content, receiver, emailForm.Sender) err = object.SendEmail(provider, emailForm.Title, content, receiver, emailForm.Sender)
if err != nil { if err != nil {

View File

@@ -16,8 +16,6 @@ package controllers
import ( import (
"encoding/json" "encoding/json"
"fmt"
"time"
"github.com/beego/beego/utils/pagination" "github.com/beego/beego/utils/pagination"
"github.com/casdoor/casdoor/object" "github.com/casdoor/casdoor/object"
@@ -172,13 +170,12 @@ func (c *ApiController) GetOAuthToken() {
tag := c.Input().Get("tag") tag := c.Input().Get("tag")
avatar := c.Input().Get("avatar") avatar := c.Input().Get("avatar")
refreshToken := c.Input().Get("refresh_token") refreshToken := c.Input().Get("refresh_token")
deviceCode := c.Input().Get("device_code")
if clientId == "" && clientSecret == "" { if clientId == "" && clientSecret == "" {
clientId, clientSecret, _ = c.Ctx.Request.BasicAuth() clientId, clientSecret, _ = c.Ctx.Request.BasicAuth()
} }
if len(c.Ctx.Input.RequestBody) != 0 && grantType != "urn:ietf:params:oauth:grant-type:device_code" { if len(c.Ctx.Input.RequestBody) != 0 {
// If clientId is empty, try to read data from RequestBody // If clientId is empty, try to read data from RequestBody
var tokenRequest TokenRequest var tokenRequest TokenRequest
err := json.Unmarshal(c.Ctx.Input.RequestBody, &tokenRequest) err := json.Unmarshal(c.Ctx.Input.RequestBody, &tokenRequest)
@@ -222,46 +219,6 @@ func (c *ApiController) GetOAuthToken() {
} }
} }
if deviceCode != "" {
deviceAuthCache, ok := object.DeviceAuthMap.Load(deviceCode)
if !ok {
c.Data["json"] = &object.TokenError{
Error: "expired_token",
ErrorDescription: "token is expired",
}
c.SetTokenErrorHttpStatus()
c.ServeJSON()
c.SetTokenErrorHttpStatus()
return
}
deviceAuthCacheCast := deviceAuthCache.(object.DeviceAuthCache)
if !deviceAuthCacheCast.UserSignIn {
c.Data["json"] = &object.TokenError{
Error: "authorization_pending",
ErrorDescription: "authorization pending",
}
c.SetTokenErrorHttpStatus()
c.ServeJSON()
c.SetTokenErrorHttpStatus()
return
}
if deviceAuthCacheCast.RequestAt.Add(time.Second * 120).Before(time.Now()) {
c.Data["json"] = &object.TokenError{
Error: "expired_token",
ErrorDescription: "token is expired",
}
c.SetTokenErrorHttpStatus()
c.ServeJSON()
c.SetTokenErrorHttpStatus()
return
}
object.DeviceAuthMap.Delete(deviceCode)
username = deviceAuthCacheCast.UserName
}
host := c.Ctx.Request.Host host := c.Ctx.Request.Host
token, err := object.GetOAuthToken(grantType, clientId, clientSecret, code, verifier, scope, nonce, username, password, host, refreshToken, tag, avatar, c.GetAcceptLanguage()) token, err := object.GetOAuthToken(grantType, clientId, clientSecret, code, verifier, scope, nonce, username, password, host, refreshToken, tag, avatar, c.GetAcceptLanguage())
if err != nil { if err != nil {
@@ -364,49 +321,35 @@ func (c *ApiController) IntrospectToken() {
return return
} }
respondWithInactiveToken := func() { tokenTypeHint := c.Input().Get("token_type_hint")
token, err := object.GetTokenByTokenValue(tokenValue, tokenTypeHint)
if err != nil {
c.ResponseTokenError(err.Error())
return
}
if token == nil {
c.Data["json"] = &object.IntrospectionResponse{Active: false} c.Data["json"] = &object.IntrospectionResponse{Active: false}
c.ServeJSON() c.ServeJSON()
return
} }
tokenTypeHint := c.Input().Get("token_type_hint") if application.TokenFormat == "JWT-Standard" {
var token *object.Token jwtToken, err := object.ParseStandardJwtTokenByApplication(tokenValue, application)
if tokenTypeHint != "" { if err != nil || jwtToken.Valid() != nil {
token, err = object.GetTokenByTokenValue(tokenValue, tokenTypeHint) // and token revoked case. but we not implement
if err != nil { // TODO: 2022-03-03 add token revoked check, when we implemented the Token Revocation(rfc7009) Specs.
c.ResponseTokenError(err.Error()) // refs: https://tools.ietf.org/html/rfc7009
return
}
if token == nil || token.ExpiresIn <= 0 {
respondWithInactiveToken()
return
}
if token.ExpiresIn <= 0 {
c.Data["json"] = &object.IntrospectionResponse{Active: false} c.Data["json"] = &object.IntrospectionResponse{Active: false}
c.ServeJSON() c.ServeJSON()
return return
} }
}
var introspectionResponse object.IntrospectionResponse c.Data["json"] = &object.IntrospectionResponse{
if application.TokenFormat == "JWT-Standard" {
jwtToken, err := object.ParseStandardJwtTokenByApplication(tokenValue, application)
if err != nil {
// and token revoked case. but we not implement
// TODO: 2022-03-03 add token revoked check, when we implemented the Token Revocation(rfc7009) Specs.
// refs: https://tools.ietf.org/html/rfc7009
respondWithInactiveToken()
return
}
introspectionResponse = object.IntrospectionResponse{
Active: true, Active: true,
Scope: jwtToken.Scope, Scope: jwtToken.Scope,
ClientId: clientId, ClientId: clientId,
Username: jwtToken.Name, Username: token.User,
TokenType: jwtToken.TokenType, TokenType: token.TokenType,
Exp: jwtToken.ExpiresAt.Unix(), Exp: jwtToken.ExpiresAt.Unix(),
Iat: jwtToken.IssuedAt.Unix(), Iat: jwtToken.IssuedAt.Unix(),
Nbf: jwtToken.NotBefore.Unix(), Nbf: jwtToken.NotBefore.Unix(),
@@ -415,66 +358,33 @@ func (c *ApiController) IntrospectToken() {
Iss: jwtToken.Issuer, Iss: jwtToken.Issuer,
Jti: jwtToken.ID, Jti: jwtToken.ID,
} }
} else { c.ServeJSON()
jwtToken, err := object.ParseJwtTokenByApplication(tokenValue, application) return
if err != nil {
// and token revoked case. but we not implement
// TODO: 2022-03-03 add token revoked check, when we implemented the Token Revocation(rfc7009) Specs.
// refs: https://tools.ietf.org/html/rfc7009
respondWithInactiveToken()
return
}
introspectionResponse = object.IntrospectionResponse{
Active: true,
ClientId: clientId,
Exp: jwtToken.ExpiresAt.Unix(),
Iat: jwtToken.IssuedAt.Unix(),
Nbf: jwtToken.NotBefore.Unix(),
Sub: jwtToken.Subject,
Aud: jwtToken.Audience,
Iss: jwtToken.Issuer,
Jti: jwtToken.ID,
}
if jwtToken.Scope != "" {
introspectionResponse.Scope = jwtToken.Scope
}
if jwtToken.Name != "" {
introspectionResponse.Username = jwtToken.Name
}
if jwtToken.TokenType != "" {
introspectionResponse.TokenType = jwtToken.TokenType
}
} }
if tokenTypeHint == "" { jwtToken, err := object.ParseJwtTokenByApplication(tokenValue, application)
token, err = object.GetTokenByTokenValue(tokenValue, introspectionResponse.TokenType) if err != nil || jwtToken.Valid() != nil {
if err != nil { // and token revoked case. but we not implement
c.ResponseTokenError(err.Error()) // TODO: 2022-03-03 add token revoked check, when we implemented the Token Revocation(rfc7009) Specs.
return // refs: https://tools.ietf.org/html/rfc7009
} c.Data["json"] = &object.IntrospectionResponse{Active: false}
if token == nil || token.ExpiresIn <= 0 { c.ServeJSON()
respondWithInactiveToken() return
return
}
} }
if token != nil { c.Data["json"] = &object.IntrospectionResponse{
application, err = object.GetApplication(fmt.Sprintf("%s/%s", token.Owner, token.Application)) Active: true,
if err != nil { Scope: jwtToken.Scope,
c.ResponseTokenError(err.Error()) ClientId: clientId,
return Username: token.User,
} TokenType: token.TokenType,
if application == nil { Exp: jwtToken.ExpiresAt.Unix(),
c.ResponseError(fmt.Sprintf(c.T("auth:The application: %s does not exist"), token.Application)) Iat: jwtToken.IssuedAt.Unix(),
return Nbf: jwtToken.NotBefore.Unix(),
} Sub: jwtToken.Subject,
Aud: jwtToken.Audience,
introspectionResponse.TokenType = token.TokenType Iss: jwtToken.Issuer,
introspectionResponse.ClientId = application.ClientId Jti: jwtToken.ID,
} }
c.Data["json"] = introspectionResponse
c.ServeJSON() c.ServeJSON()
} }

View File

@@ -197,8 +197,8 @@ func (c *ApiController) GetUser() {
return return
} }
var organization *object.Organization
if user != nil { if user != nil {
var organization *object.Organization
organization, err = object.GetOrganizationByUser(user) organization, err = object.GetOrganizationByUser(user)
if err != nil { if err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
@@ -237,14 +237,6 @@ func (c *ApiController) GetUser() {
return return
} }
if organization != nil && user != nil {
user, err = object.GetFilteredUser(user, c.IsAdmin(), c.IsAdminOrSelf(user), organization.AccountItems)
if err != nil {
c.ResponseError(err.Error())
return
}
}
c.ResponseOk(user) c.ResponseOk(user)
} }
@@ -290,14 +282,11 @@ func (c *ApiController) UpdateUser() {
return return
} }
if user.MfaEmailEnabled && user.Email == "" { if c.Input().Get("allowEmpty") == "" {
c.ResponseError(c.T("user:MFA email is enabled but email is empty")) if user.DisplayName == "" {
return c.ResponseError(c.T("user:Display name cannot be empty"))
} return
}
if user.MfaPhoneEnabled && user.Phone == "" {
c.ResponseError(c.T("user:MFA phone is enabled but phone number is empty"))
return
} }
if msg := object.CheckUpdateUser(oldUser, &user, c.GetAcceptLanguage()); msg != "" { if msg := object.CheckUpdateUser(oldUser, &user, c.GetAcceptLanguage()); msg != "" {
@@ -311,8 +300,7 @@ func (c *ApiController) UpdateUser() {
} }
isAdmin := c.IsAdmin() isAdmin := c.IsAdmin()
allowDisplayNameEmpty := c.Input().Get("allowEmpty") != "" if pass, err := object.CheckPermissionForUpdateUser(oldUser, &user, isAdmin, c.GetAcceptLanguage()); !pass {
if pass, err := object.CheckPermissionForUpdateUser(oldUser, &user, isAdmin, allowDisplayNameEmpty, c.GetAcceptLanguage()); !pass {
c.ResponseError(err) c.ResponseError(err)
return return
} }
@@ -355,19 +343,24 @@ func (c *ApiController) AddUser() {
return return
} }
if err := checkQuotaForUser(); err != nil { count, err := object.GetUserCount("", "", "", "")
if err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return
} }
emptyUser := object.User{} if err := checkQuotaForUser(int(count)); err != nil {
msg := object.CheckUpdateUser(&emptyUser, &user, c.GetAcceptLanguage()) c.ResponseError(err.Error())
return
}
msg := object.CheckUsername(user.Name, c.GetAcceptLanguage())
if msg != "" { if msg != "" {
c.ResponseError(msg) c.ResponseError(msg)
return return
} }
c.Data["json"] = wrapActionResponse(object.AddUser(&user, c.GetAcceptLanguage())) c.Data["json"] = wrapActionResponse(object.AddUser(&user))
c.ServeJSON() c.ServeJSON()
} }
@@ -407,12 +400,6 @@ func (c *ApiController) GetEmailAndPhone() {
organization := c.Ctx.Request.Form.Get("organization") organization := c.Ctx.Request.Form.Get("organization")
username := c.Ctx.Request.Form.Get("username") username := c.Ctx.Request.Form.Get("username")
enableErrorMask2 := conf.GetConfigBool("enableErrorMask2")
if enableErrorMask2 {
c.ResponseError("Error")
return
}
user, err := object.GetUserByFields(organization, username) user, err := object.GetUserByFields(organization, username)
if err != nil { if err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
@@ -459,10 +446,10 @@ func (c *ApiController) SetPassword() {
newPassword := c.Ctx.Request.Form.Get("newPassword") newPassword := c.Ctx.Request.Form.Get("newPassword")
code := c.Ctx.Request.Form.Get("code") code := c.Ctx.Request.Form.Get("code")
// if userOwner == "built-in" && userName == "admin" { //if userOwner == "built-in" && userName == "admin" {
// c.ResponseError(c.T("auth:Unauthorized operation")) // c.ResponseError(c.T("auth:Unauthorized operation"))
// return // return
// } //}
if strings.Contains(newPassword, " ") { if strings.Contains(newPassword, " ") {
c.ResponseError(c.T("user:New password cannot contain blank space.")) c.ResponseError(c.T("user:New password cannot contain blank space."))
@@ -471,16 +458,6 @@ func (c *ApiController) SetPassword() {
userId := util.GetId(userOwner, userName) userId := util.GetId(userOwner, userName)
user, err := object.GetUser(userId)
if err != nil {
c.ResponseError(err.Error())
return
}
if user == nil {
c.ResponseError(fmt.Sprintf(c.T("general:The user: %s doesn't exist"), userId))
return
}
requestUserId := c.GetSessionUsername() requestUserId := c.GetSessionUsername()
if requestUserId == "" && code == "" { if requestUserId == "" && code == "" {
c.ResponseError(c.T("general:Please login first"), "Please login first") c.ResponseError(c.T("general:Please login first"), "Please login first")
@@ -496,12 +473,7 @@ func (c *ApiController) SetPassword() {
c.ResponseError(c.T("general:Missing parameter")) c.ResponseError(c.T("general:Missing parameter"))
return return
} }
if userId != c.GetSession("verifiedUserId") {
c.ResponseError(c.T("general:Wrong userId"))
return
}
c.SetSession("verifiedCode", "") c.SetSession("verifiedCode", "")
c.SetSession("verifiedUserId", "")
} }
targetUser, err := object.GetUser(userId) targetUser, err := object.GetUser(userId)
@@ -524,11 +496,7 @@ func (c *ApiController) SetPassword() {
} }
} }
} else if code == "" { } else if code == "" {
if user.Ldap == "" { err = object.CheckPassword(targetUser, oldPassword, c.GetAcceptLanguage())
err = object.CheckPassword(targetUser, oldPassword, c.GetAcceptLanguage())
} else {
err = object.CheckLdapUserPassword(targetUser, oldPassword, c.GetAcceptLanguage())
}
if err != nil { if err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return
@@ -547,42 +515,15 @@ func (c *ApiController) SetPassword() {
return return
} }
if organization == nil { if organization == nil {
c.ResponseError(fmt.Sprintf(c.T("auth:the organization: %s is not found"), targetUser.Owner)) c.ResponseError(fmt.Sprintf(c.T("the organization: %s is not found"), targetUser.Owner))
return
}
application, err := object.GetApplicationByUser(targetUser)
if err != nil {
c.ResponseError(err.Error())
return
}
if application == nil {
c.ResponseError(fmt.Sprintf(c.T("auth:the application for user %s is not found"), userId))
return
}
clientIp := util.GetClientIpFromRequest(c.Ctx.Request)
err = object.CheckEntryIp(clientIp, targetUser, application, organization, c.GetAcceptLanguage())
if err != nil {
c.ResponseError(err.Error())
return return
} }
targetUser.Password = newPassword targetUser.Password = newPassword
targetUser.UpdateUserPassword(organization) targetUser.UpdateUserPassword(organization)
targetUser.NeedUpdatePassword = false targetUser.NeedUpdatePassword = false
targetUser.LastChangePasswordTime = util.GetCurrentTime()
if user.Ldap == "" {
_, err = object.UpdateUser(userId, targetUser, []string{"password", "password_salt", "need_update_password", "password_type", "last_change_password_time"}, false)
} else {
if isAdmin {
err = object.ResetLdapPassword(targetUser, "", newPassword, c.GetAcceptLanguage())
} else {
err = object.ResetLdapPassword(targetUser, oldPassword, newPassword, c.GetAcceptLanguage())
}
}
_, err = object.UpdateUser(userId, targetUser, []string{"password", "need_update_password", "password_type"}, false)
if err != nil { if err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return
@@ -604,11 +545,7 @@ func (c *ApiController) CheckUserPassword() {
return return
} }
/* _, err = object.CheckUserPassword(user.Owner, user.Name, user.Password, c.GetAcceptLanguage())
* Verified password with user as subject, if field ldap not empty,
* then `isPasswordWithLdapEnabled` is true
*/
_, err = object.CheckUserPassword(user.Owner, user.Name, user.Password, c.GetAcceptLanguage(), false, false, user.Ldap != "")
if err != nil { if err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
} else { } else {
@@ -705,7 +642,7 @@ func (c *ApiController) RemoveUserFromGroup() {
return return
} }
affected, err := object.DeleteGroupForUser(util.GetId(owner, name), util.GetId(owner, groupName)) affected, err := object.DeleteGroupForUser(util.GetId(owner, name), groupName)
if err != nil { if err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return

View File

@@ -67,6 +67,6 @@ func (c *ApiController) UploadUsers() {
if affected { if affected {
c.ResponseOk() c.ResponseOk()
} else { } else {
c.ResponseError(c.T("general:Failed to import users")) c.ResponseError(c.T("user_upload:Failed to import users"))
} }
} }

View File

@@ -45,15 +45,6 @@ func (c *ApiController) ResponseOk(data ...interface{}) {
// ResponseError ... // ResponseError ...
func (c *ApiController) ResponseError(error string, data ...interface{}) { func (c *ApiController) ResponseError(error string, data ...interface{}) {
enableErrorMask2 := conf.GetConfigBool("enableErrorMask2")
if enableErrorMask2 {
error = c.T("subscription:Error")
resp := &Response{Status: "error", Msg: error}
c.ResponseJsonData(resp, data...)
return
}
resp := &Response{Status: "error", Msg: error} resp := &Response{Status: "error", Msg: error}
c.ResponseJsonData(resp, data...) c.ResponseJsonData(resp, data...)
} }
@@ -287,18 +278,12 @@ func checkQuotaForProvider(count int) error {
return nil return nil
} }
func checkQuotaForUser() error { func checkQuotaForUser(count int) error {
quota := conf.GetConfigQuota().User quota := conf.GetConfigQuota().User
if quota == -1 { if quota == -1 {
return nil return nil
} }
if count >= quota {
count, err := object.GetUserCount("", "", "", "")
if err != nil {
return err
}
if int(count) >= quota {
return fmt.Errorf("user quota is exceeded") return fmt.Errorf("user quota is exceeded")
} }
return nil return nil

View File

@@ -132,8 +132,7 @@ func (c *ApiController) SendVerificationCode() {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return
} }
remoteAddr := util.GetIPFromRequest(c.Ctx.Request)
clientIp := util.GetClientIpFromRequest(c.Ctx.Request)
if msg := vform.CheckParameter(form.SendVerifyCode, c.GetAcceptLanguage()); msg != "" { if msg := vform.CheckParameter(form.SendVerifyCode, c.GetAcceptLanguage()); msg != "" {
c.ResponseError(msg) c.ResponseError(msg)
@@ -160,7 +159,7 @@ func (c *ApiController) SendVerificationCode() {
if captchaProvider := captcha.GetCaptchaProvider(vform.CaptchaType); captchaProvider == nil { if captchaProvider := captcha.GetCaptchaProvider(vform.CaptchaType); captchaProvider == nil {
c.ResponseError(c.T("general:don't support captchaProvider: ") + vform.CaptchaType) c.ResponseError(c.T("general:don't support captchaProvider: ") + vform.CaptchaType)
return return
} else if isHuman, err := captchaProvider.VerifyCaptcha(vform.CaptchaToken, provider.ClientId, vform.ClientSecret, provider.ClientId2); err != nil { } else if isHuman, err := captchaProvider.VerifyCaptcha(vform.CaptchaToken, vform.ClientSecret); err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return
} else if !isHuman { } else if !isHuman {
@@ -242,10 +241,12 @@ func (c *ApiController) SendVerificationCode() {
} else if vform.Method == ResetVerification { } else if vform.Method == ResetVerification {
user = c.getCurrentUser() user = c.getCurrentUser()
} else if vform.Method == MfaAuthVerification { } else if vform.Method == MfaAuthVerification {
mfaProps := user.GetMfaProps(object.EmailType, false) mfaProps := user.GetPreferredMfaProps(false)
if user != nil && util.GetMaskedEmail(mfaProps.Secret) == vform.Dest { if user != nil && util.GetMaskedEmail(mfaProps.Secret) == vform.Dest {
vform.Dest = mfaProps.Secret vform.Dest = mfaProps.Secret
} }
} else if vform.Method == MfaSetupVerification {
c.SetSession(MfaDestSession, vform.Dest)
} }
provider, err = application.GetEmailProvider(vform.Method) provider, err = application.GetEmailProvider(vform.Method)
@@ -258,7 +259,7 @@ func (c *ApiController) SendVerificationCode() {
return return
} }
sendResp = object.SendVerificationCodeToEmail(organization, user, provider, clientIp, vform.Dest, vform.Method, c.Ctx.Request.Host, application.Name) sendResp = object.SendVerificationCodeToEmail(organization, user, provider, remoteAddr, vform.Dest)
case object.VerifyTypePhone: case object.VerifyTypePhone:
if vform.Method == LoginVerification || vform.Method == ForgetVerification { if vform.Method == LoginVerification || vform.Method == ForgetVerification {
if user != nil && util.GetMaskedPhone(user.Phone) == vform.Dest { if user != nil && util.GetMaskedPhone(user.Phone) == vform.Dest {
@@ -280,14 +281,18 @@ func (c *ApiController) SendVerificationCode() {
vform.CountryCode = user.GetCountryCode(vform.CountryCode) vform.CountryCode = user.GetCountryCode(vform.CountryCode)
} }
} }
if vform.Method == MfaSetupVerification {
c.SetSession(MfaCountryCodeSession, vform.CountryCode)
c.SetSession(MfaDestSession, vform.Dest)
}
} else if vform.Method == MfaAuthVerification { } else if vform.Method == MfaAuthVerification {
mfaProps := user.GetMfaProps(object.SmsType, false) mfaProps := user.GetPreferredMfaProps(false)
if user != nil && util.GetMaskedPhone(mfaProps.Secret) == vform.Dest { if user != nil && util.GetMaskedPhone(mfaProps.Secret) == vform.Dest {
vform.Dest = mfaProps.Secret vform.Dest = mfaProps.Secret
} }
vform.CountryCode = mfaProps.CountryCode vform.CountryCode = mfaProps.CountryCode
vform.CountryCode = user.GetCountryCode(vform.CountryCode)
} }
provider, err = application.GetSmsProvider(vform.Method, vform.CountryCode) provider, err = application.GetSmsProvider(vform.Method, vform.CountryCode)
@@ -304,7 +309,7 @@ func (c *ApiController) SendVerificationCode() {
c.ResponseError(fmt.Sprintf(c.T("verification:Phone number is invalid in your region %s"), vform.CountryCode)) c.ResponseError(fmt.Sprintf(c.T("verification:Phone number is invalid in your region %s"), vform.CountryCode))
return return
} else { } else {
sendResp = object.SendVerificationCodeToPhone(organization, user, provider, clientIp, phone) sendResp = object.SendVerificationCodeToPhone(organization, user, provider, remoteAddr, phone)
} }
} }
@@ -349,7 +354,7 @@ func (c *ApiController) VerifyCaptcha() {
return return
} }
isValid, err := provider.VerifyCaptcha(vform.CaptchaToken, captchaProvider.ClientId, vform.ClientSecret, captchaProvider.ClientId2) isValid, err := provider.VerifyCaptcha(vform.CaptchaToken, vform.ClientSecret)
if err != nil { if err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return
@@ -436,8 +441,7 @@ func (c *ApiController) ResetEmailOrPhone() {
switch destType { switch destType {
case object.VerifyTypeEmail: case object.VerifyTypeEmail:
user.Email = dest user.Email = dest
user.EmailVerified = true _, err = object.SetUserField(user, "email", user.Email)
_, err = object.UpdateUser(user.GetId(), user, []string{"email", "email_verified"}, false)
case object.VerifyTypePhone: case object.VerifyTypePhone:
user.Phone = dest user.Phone = dest
_, err = object.SetUserField(user, "phone", user.Phone) _, err = object.SetUserField(user, "phone", user.Phone)
@@ -511,31 +515,22 @@ func (c *ApiController) VerifyCode() {
} }
} }
passed, err := c.checkOrgMasterVerificationCode(user, authForm.Code) result, err := object.CheckVerificationCode(checkDest, authForm.Code, c.GetAcceptLanguage())
if err != nil { if err != nil {
c.ResponseError(c.T(err.Error())) c.ResponseError(c.T(err.Error()))
return return
} }
if result.Code != object.VerificationSuccess {
c.ResponseError(result.Msg)
return
}
if !passed { err = object.DisableVerificationCode(checkDest)
result, err := object.CheckVerificationCode(checkDest, authForm.Code, c.GetAcceptLanguage()) if err != nil {
if err != nil { c.ResponseError(err.Error())
c.ResponseError(err.Error()) return
return
}
if result.Code != object.VerificationSuccess {
c.ResponseError(result.Msg)
return
}
err = object.DisableVerificationCode(checkDest)
if err != nil {
c.ResponseError(err.Error())
return
}
} }
c.SetSession("verifiedCode", authForm.Code) c.SetSession("verifiedCode", authForm.Code)
c.SetSession("verifiedUserId", user.GetId())
c.ResponseOk() c.ResponseOk()
} }

View File

@@ -1,36 +0,0 @@
// Copyright 2025 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.
package controllers
import (
"fmt"
"github.com/casdoor/casdoor/object"
)
func (c *ApiController) checkOrgMasterVerificationCode(user *object.User, code string) (bool, error) {
organization, err := object.GetOrganizationByUser(user)
if err != nil {
return false, err
}
if organization == nil {
return false, fmt.Errorf("The organization: %s does not exist", user.Owner)
}
if organization.MasterVerificationCode != "" && organization.MasterVerificationCode == code {
return true, nil
}
return false, nil
}

View File

@@ -16,7 +16,6 @@ package controllers
import ( import (
"bytes" "bytes"
"encoding/base64"
"fmt" "fmt"
"io" "io"
@@ -48,13 +47,6 @@ func (c *ApiController) WebAuthnSignupBegin() {
registerOptions := func(credCreationOpts *protocol.PublicKeyCredentialCreationOptions) { registerOptions := func(credCreationOpts *protocol.PublicKeyCredentialCreationOptions) {
credCreationOpts.CredentialExcludeList = user.CredentialExcludeList() credCreationOpts.CredentialExcludeList = user.CredentialExcludeList()
credCreationOpts.AuthenticatorSelection.ResidentKey = "preferred"
credCreationOpts.Attestation = "none"
ext := map[string]interface{}{
"credProps": true,
}
credCreationOpts.Extensions = ext
} }
options, sessionData, err := webauthnObj.BeginRegistration( options, sessionData, err := webauthnObj.BeginRegistration(
user, user,
@@ -128,32 +120,22 @@ func (c *ApiController) WebAuthnSigninBegin() {
userOwner := c.Input().Get("owner") userOwner := c.Input().Get("owner")
userName := c.Input().Get("name") userName := c.Input().Get("name")
user, err := object.GetUserByFields(userOwner, userName)
var options *protocol.CredentialAssertion if err != nil {
var sessionData *webauthn.SessionData c.ResponseError(err.Error())
return
if userName == "" {
options, sessionData, err = webauthnObj.BeginDiscoverableLogin()
} else {
var user *object.User
user, err = object.GetUserByFields(userOwner, userName)
if err != nil {
c.ResponseError(err.Error())
return
}
if user == nil {
c.ResponseError(fmt.Sprintf(c.T("general:The user: %s doesn't exist"), util.GetId(userOwner, userName)))
return
}
if len(user.WebauthnCredentials) == 0 {
c.ResponseError(c.T("webauthn:Found no credentials for this user"))
return
}
options, sessionData, err = webauthnObj.BeginLogin(user)
} }
if user == nil {
c.ResponseError(fmt.Sprintf(c.T("general:The user: %s doesn't exist"), util.GetId(userOwner, userName)))
return
}
if len(user.WebauthnCredentials) == 0 {
c.ResponseError(c.T("webauthn:Found no credentials for this user"))
return
}
options, sessionData, err := webauthnObj.BeginLogin(user)
if err != nil { if err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return
@@ -186,35 +168,20 @@ func (c *ApiController) WebAuthnSigninFinish() {
return return
} }
c.Ctx.Request.Body = io.NopCloser(bytes.NewBuffer(c.Ctx.Input.RequestBody)) c.Ctx.Request.Body = io.NopCloser(bytes.NewBuffer(c.Ctx.Input.RequestBody))
userId := string(sessionData.UserID)
var user *object.User user, err := object.GetUser(userId)
if sessionData.UserID != nil {
userId := string(sessionData.UserID)
user, err = object.GetUser(userId)
if err != nil {
c.ResponseError(err.Error())
return
}
_, err = webauthnObj.FinishLogin(user, sessionData, c.Ctx.Request)
} else {
handler := func(rawID, userHandle []byte) (webauthn.User, error) {
user, err = object.GetUserByWebauthID(base64.StdEncoding.EncodeToString(rawID))
if err != nil {
return nil, err
}
return user, nil
}
_, err = webauthnObj.FinishDiscoverableLogin(handler, sessionData, c.Ctx.Request)
}
if err != nil { if err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return
} }
c.SetSessionUsername(user.GetId())
util.LogInfo(c.Ctx, "API: [%s] signed in", user.GetId()) _, err = webauthnObj.FinishLogin(user, sessionData, c.Ctx.Request)
if err != nil {
c.ResponseError(err.Error())
return
}
c.SetSessionUsername(userId)
util.LogInfo(c.Ctx, "API: [%s] signed in", userId)
var application *object.Application var application *object.Application

View File

@@ -23,7 +23,7 @@ func NewArgon2idCredManager() *Argon2idCredManager {
return cm return cm
} }
func (cm *Argon2idCredManager) GetHashedPassword(password string, salt string) string { func (cm *Argon2idCredManager) GetHashedPassword(password string, userSalt string, organizationSalt string) string {
hash, err := argon2id.CreateHash(password, argon2id.DefaultParams) hash, err := argon2id.CreateHash(password, argon2id.DefaultParams)
if err != nil { if err != nil {
return "" return ""
@@ -31,7 +31,7 @@ func (cm *Argon2idCredManager) GetHashedPassword(password string, salt string) s
return hash return hash
} }
func (cm *Argon2idCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, salt string) bool { func (cm *Argon2idCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, userSalt string, organizationSalt string) bool {
match, _ := argon2id.ComparePasswordAndHash(plainPwd, hashedPwd) match, _ := argon2id.ComparePasswordAndHash(plainPwd, hashedPwd)
return match return match
} }

View File

@@ -9,7 +9,7 @@ func NewBcryptCredManager() *BcryptCredManager {
return cm return cm
} }
func (cm *BcryptCredManager) GetHashedPassword(password string, salt string) string { func (cm *BcryptCredManager) GetHashedPassword(password string, userSalt string, organizationSalt string) string {
bytes, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost) bytes, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
if err != nil { if err != nil {
return "" return ""
@@ -17,7 +17,7 @@ func (cm *BcryptCredManager) GetHashedPassword(password string, salt string) str
return string(bytes) return string(bytes)
} }
func (cm *BcryptCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, salt string) bool { func (cm *BcryptCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, userSalt string, organizationSalt string) bool {
err := bcrypt.CompareHashAndPassword([]byte(hashedPwd), []byte(plainPwd)) err := bcrypt.CompareHashAndPassword([]byte(hashedPwd), []byte(plainPwd))
return err == nil return err == nil
} }

View File

@@ -15,8 +15,8 @@
package cred package cred
type CredManager interface { type CredManager interface {
GetHashedPassword(password string, salt string) string GetHashedPassword(password string, userSalt string, organizationSalt string) string
IsPasswordCorrect(password string, passwordHash string, salt string) bool IsPasswordCorrect(password string, passwordHash string, userSalt string, organizationSalt string) bool
} }
func GetCredManager(passwordType string) CredManager { func GetCredManager(passwordType string) CredManager {
@@ -34,8 +34,6 @@ func GetCredManager(passwordType string) CredManager {
return NewPbkdf2SaltCredManager() return NewPbkdf2SaltCredManager()
} else if passwordType == "argon2id" { } else if passwordType == "argon2id" {
return NewArgon2idCredManager() return NewArgon2idCredManager()
} else if passwordType == "pbkdf2-django" {
return NewPbkdf2DjangoCredManager()
} }
return nil return nil
} }

View File

@@ -37,21 +37,14 @@ func NewMd5UserSaltCredManager() *Md5UserSaltCredManager {
return cm return cm
} }
func (cm *Md5UserSaltCredManager) GetHashedPassword(password string, salt string) string { func (cm *Md5UserSaltCredManager) GetHashedPassword(password string, userSalt string, organizationSalt string) string {
if salt == "" { res := getMd5HexDigest(password)
return getMd5HexDigest(password) if userSalt != "" {
res = getMd5HexDigest(res + userSalt)
} }
return res
return getMd5HexDigest(getMd5HexDigest(password) + salt)
} }
func (cm *Md5UserSaltCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, salt string) bool { func (cm *Md5UserSaltCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, userSalt string, organizationSalt string) bool {
// For backward-compatibility return hashedPwd == cm.GetHashedPassword(plainPwd, userSalt, organizationSalt)
if salt == "" {
if hashedPwd == cm.GetHashedPassword(getMd5HexDigest(plainPwd), salt) {
return true
}
}
return hashedPwd == cm.GetHashedPassword(plainPwd, salt)
} }

View File

@@ -28,13 +28,13 @@ func NewPbkdf2SaltCredManager() *Pbkdf2SaltCredManager {
return cm return cm
} }
func (cm *Pbkdf2SaltCredManager) GetHashedPassword(password string, salt string) string { func (cm *Pbkdf2SaltCredManager) GetHashedPassword(password string, userSalt string, organizationSalt string) string {
// https://www.keycloak.org/docs/latest/server_admin/index.html#password-database-compromised // https://www.keycloak.org/docs/latest/server_admin/index.html#password-database-compromised
decodedSalt, _ := base64.StdEncoding.DecodeString(salt) decodedSalt, _ := base64.StdEncoding.DecodeString(userSalt)
res := pbkdf2.Key([]byte(password), decodedSalt, 27500, 64, sha256.New) res := pbkdf2.Key([]byte(password), decodedSalt, 27500, 64, sha256.New)
return base64.StdEncoding.EncodeToString(res) return base64.StdEncoding.EncodeToString(res)
} }
func (cm *Pbkdf2SaltCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, salt string) bool { func (cm *Pbkdf2SaltCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, userSalt string, organizationSalt string) bool {
return hashedPwd == cm.GetHashedPassword(plainPwd, salt) return hashedPwd == cm.GetHashedPassword(plainPwd, userSalt, organizationSalt)
} }

View File

@@ -1,67 +0,0 @@
// Copyright 2025 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.
package cred
import (
"crypto/sha256"
"encoding/base64"
"strconv"
"strings"
"golang.org/x/crypto/pbkdf2"
)
// password type: pbkdf2-django
type Pbkdf2DjangoCredManager struct{}
func NewPbkdf2DjangoCredManager() *Pbkdf2DjangoCredManager {
cm := &Pbkdf2DjangoCredManager{}
return cm
}
func (m *Pbkdf2DjangoCredManager) GetHashedPassword(password string, salt string) string {
iterations := 260000
saltBytes := []byte(salt)
passwordBytes := []byte(password)
computedHash := pbkdf2.Key(passwordBytes, saltBytes, iterations, sha256.Size, sha256.New)
hashBase64 := base64.StdEncoding.EncodeToString(computedHash)
return "pbkdf2_sha256$" + strconv.Itoa(iterations) + "$" + salt + "$" + hashBase64
}
func (m *Pbkdf2DjangoCredManager) IsPasswordCorrect(password string, passwordHash string, _salt string) bool {
parts := strings.Split(passwordHash, "$")
if len(parts) != 4 {
return false
}
algorithm, iterations, salt, hash := parts[0], parts[1], parts[2], parts[3]
if algorithm != "pbkdf2_sha256" {
return false
}
iter, err := strconv.Atoi(iterations)
if err != nil {
return false
}
saltBytes := []byte(salt)
passwordBytes := []byte(password)
computedHash := pbkdf2.Key(passwordBytes, saltBytes, iter, sha256.Size, sha256.New)
computedHashBase64 := base64.StdEncoding.EncodeToString(computedHash)
return computedHashBase64 == hash
}

View File

@@ -21,10 +21,10 @@ func NewPlainCredManager() *PlainCredManager {
return cm return cm
} }
func (cm *PlainCredManager) GetHashedPassword(password string, salt string) string { func (cm *PlainCredManager) GetHashedPassword(password string, userSalt string, organizationSalt string) string {
return password return password
} }
func (cm *PlainCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, salt string) bool { func (cm *PlainCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, userSalt string, organizationSalt string) bool {
return hashedPwd == plainPwd return hashedPwd == plainPwd
} }

View File

@@ -37,21 +37,14 @@ func NewSha256SaltCredManager() *Sha256SaltCredManager {
return cm return cm
} }
func (cm *Sha256SaltCredManager) GetHashedPassword(password string, salt string) string { func (cm *Sha256SaltCredManager) GetHashedPassword(password string, userSalt string, organizationSalt string) string {
if salt == "" { res := getSha256HexDigest(password)
return getSha256HexDigest(password) if organizationSalt != "" {
res = getSha256HexDigest(res + organizationSalt)
} }
return res
return getSha256HexDigest(getSha256HexDigest(password) + salt)
} }
func (cm *Sha256SaltCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, salt string) bool { func (cm *Sha256SaltCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, userSalt string, organizationSalt string) bool {
// For backward-compatibility return hashedPwd == cm.GetHashedPassword(plainPwd, userSalt, organizationSalt)
if salt == "" {
if hashedPwd == cm.GetHashedPassword(getSha256HexDigest(plainPwd), salt) {
return true
}
}
return hashedPwd == cm.GetHashedPassword(plainPwd, salt)
} }

View File

@@ -23,12 +23,12 @@ func TestGetSaltedPassword(t *testing.T) {
password := "123456" password := "123456"
salt := "123" salt := "123"
cm := NewSha256SaltCredManager() cm := NewSha256SaltCredManager()
fmt.Printf("%s -> %s\n", password, cm.GetHashedPassword(password, salt)) fmt.Printf("%s -> %s\n", password, cm.GetHashedPassword(password, "", salt))
} }
func TestGetPassword(t *testing.T) { func TestGetPassword(t *testing.T) {
password := "123456" password := "123456"
cm := NewSha256SaltCredManager() cm := NewSha256SaltCredManager()
// https://passwordsgenerator.net/sha256-hash-generator/ // https://passwordsgenerator.net/sha256-hash-generator/
fmt.Printf("%s -> %s\n", "8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92", cm.GetHashedPassword(password, "")) fmt.Printf("%s -> %s\n", "8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92", cm.GetHashedPassword(password, "", ""))
} }

View File

@@ -37,21 +37,14 @@ func NewSha512SaltCredManager() *Sha512SaltCredManager {
return cm return cm
} }
func (cm *Sha512SaltCredManager) GetHashedPassword(password string, salt string) string { func (cm *Sha512SaltCredManager) GetHashedPassword(password string, userSalt string, organizationSalt string) string {
if salt == "" { res := getSha512HexDigest(password)
return getSha512HexDigest(password) if organizationSalt != "" {
res = getSha512HexDigest(res + organizationSalt)
} }
return res
return getSha512HexDigest(getSha512HexDigest(password) + salt)
} }
func (cm *Sha512SaltCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, salt string) bool { func (cm *Sha512SaltCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, userSalt string, organizationSalt string) bool {
// For backward-compatibility return hashedPwd == cm.GetHashedPassword(plainPwd, userSalt, organizationSalt)
if salt == "" {
if hashedPwd == cm.GetHashedPassword(getSha512HexDigest(plainPwd), salt) {
return true
}
}
return hashedPwd == cm.GetHashedPassword(plainPwd, salt)
} }

View File

@@ -27,18 +27,7 @@ import (
) )
func deployStaticFiles(provider *object.Provider) { func deployStaticFiles(provider *object.Provider) {
certificate := "" storageProvider, err := storage.GetStorageProvider(provider.Type, provider.ClientId, provider.ClientSecret, provider.RegionId, provider.Bucket, provider.Endpoint)
if provider.Category == "Storage" && provider.Type == "Casdoor" {
cert, err := object.GetCert(util.GetId(provider.Owner, provider.Cert))
if err != nil {
panic(err)
}
if cert == nil {
panic(err)
}
certificate = cert.Certificate
}
storageProvider, err := storage.GetStorageProvider(provider.Type, provider.ClientId, provider.ClientSecret, provider.RegionId, provider.Bucket, provider.Endpoint, certificate, provider.Content)
if err != nil { if err != nil {
panic(err) panic(err)
} }

View File

@@ -15,8 +15,6 @@
package email package email
import ( import (
"bytes"
"encoding/json"
"fmt" "fmt"
"net/http" "net/http"
"net/url" "net/url"
@@ -26,24 +24,14 @@ import (
) )
type HttpEmailProvider struct { type HttpEmailProvider struct {
endpoint string endpoint string
method string method string
httpHeaders map[string]string
bodyMapping map[string]string
contentType string
} }
func NewHttpEmailProvider(endpoint string, method string, httpHeaders map[string]string, bodyMapping map[string]string, contentType string) *HttpEmailProvider { func NewHttpEmailProvider(endpoint string, method string) *HttpEmailProvider {
if contentType == "" {
contentType = "application/x-www-form-urlencoded"
}
client := &HttpEmailProvider{ client := &HttpEmailProvider{
endpoint: endpoint, endpoint: endpoint,
method: method, method: method,
httpHeaders: httpHeaders,
bodyMapping: bodyMapping,
contentType: contentType,
} }
return client return client
} }
@@ -51,52 +39,18 @@ func NewHttpEmailProvider(endpoint string, method string, httpHeaders map[string
func (c *HttpEmailProvider) Send(fromAddress string, fromName string, toAddress string, subject string, content string) error { func (c *HttpEmailProvider) Send(fromAddress string, fromName string, toAddress string, subject string, content string) error {
var req *http.Request var req *http.Request
var err error var err error
if c.method == "POST" {
fromNameField := "fromName" formValues := url.Values{}
toAddressField := "toAddress" formValues.Set("fromName", fromName)
subjectField := "subject" formValues.Set("toAddress", toAddress)
contentField := "content" formValues.Set("subject", subject)
formValues.Set("content", content)
for k, v := range c.bodyMapping { req, err = http.NewRequest(c.method, c.endpoint, strings.NewReader(formValues.Encode()))
switch k {
case "fromName":
fromNameField = v
case "toAddress":
toAddressField = v
case "subject":
subjectField = v
case "content":
contentField = v
}
}
if c.method == "POST" || c.method == "PUT" || c.method == "DELETE" {
bodyMap := make(map[string]string)
bodyMap[fromNameField] = fromName
bodyMap[toAddressField] = toAddress
bodyMap[subjectField] = subject
bodyMap[contentField] = content
var fromValueBytes []byte
if c.contentType == "application/json" {
fromValueBytes, err = json.Marshal(bodyMap)
if err != nil {
return err
}
req, err = http.NewRequest(c.method, c.endpoint, bytes.NewBuffer(fromValueBytes))
} else {
formValues := url.Values{}
for k, v := range bodyMap {
formValues.Add(k, v)
}
req, err = http.NewRequest(c.method, c.endpoint, strings.NewReader(formValues.Encode()))
}
if err != nil { if err != nil {
return err return err
} }
req.Header.Set("Content-Type", c.contentType) req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
} else if c.method == "GET" { } else if c.method == "GET" {
req, err = http.NewRequest(c.method, c.endpoint, nil) req, err = http.NewRequest(c.method, c.endpoint, nil)
if err != nil { if err != nil {
@@ -104,19 +58,15 @@ func (c *HttpEmailProvider) Send(fromAddress string, fromName string, toAddress
} }
q := req.URL.Query() q := req.URL.Query()
q.Add(fromNameField, fromName) q.Add("fromName", fromName)
q.Add(toAddressField, toAddress) q.Add("toAddress", toAddress)
q.Add(subjectField, subject) q.Add("subject", subject)
q.Add(contentField, content) q.Add("content", content)
req.URL.RawQuery = q.Encode() req.URL.RawQuery = q.Encode()
} else { } else {
return fmt.Errorf("HttpEmailProvider's Send() error, unsupported method: %s", c.method) return fmt.Errorf("HttpEmailProvider's Send() error, unsupported method: %s", c.method)
} }
for k, v := range c.httpHeaders {
req.Header.Set(k, v)
}
httpClient := proxy.DefaultHttpClient httpClient := proxy.DefaultHttpClient
resp, err := httpClient.Do(req) resp, err := httpClient.Do(req)
if err != nil { if err != nil {

View File

@@ -18,13 +18,13 @@ type EmailProvider interface {
Send(fromAddress string, fromName, toAddress string, subject string, content string) error Send(fromAddress string, fromName, toAddress string, subject string, content string) error
} }
func GetEmailProvider(typ string, clientId string, clientSecret string, host string, port int, disableSsl bool, endpoint string, method string, httpHeaders map[string]string, bodyMapping map[string]string, contentType string) EmailProvider { func GetEmailProvider(typ string, clientId string, clientSecret string, host string, port int, disableSsl bool, endpoint string, method string) EmailProvider {
if typ == "Azure ACS" { if typ == "Azure ACS" {
return NewAzureACSEmailProvider(clientSecret, host) return NewAzureACSEmailProvider(clientSecret, host)
} else if typ == "Custom HTTP Email" { } else if typ == "Custom HTTP Email" {
return NewHttpEmailProvider(endpoint, method, httpHeaders, bodyMapping, contentType) return NewHttpEmailProvider(endpoint, method)
} else if typ == "SendGrid" { } else if typ == "SendGrid" {
return NewSendgridEmailProvider(clientSecret, host, endpoint) return NewSendgridEmailProvider(clientSecret)
} else { } else {
return NewSmtpEmailProvider(clientId, clientSecret, host, port, typ, disableSsl) return NewSmtpEmailProvider(clientId, clientSecret, host, port, typ, disableSsl)
} }

View File

@@ -17,16 +17,14 @@ package email
import ( import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"net/http" "strings"
"github.com/sendgrid/sendgrid-go" "github.com/sendgrid/sendgrid-go"
"github.com/sendgrid/sendgrid-go/helpers/mail" "github.com/sendgrid/sendgrid-go/helpers/mail"
) )
type SendgridEmailProvider struct { type SendgridEmailProvider struct {
ApiKey string ApiKey string
Host string
Endpoint string
} }
type SendgridResponseBody struct { type SendgridResponseBody struct {
@@ -37,25 +35,23 @@ type SendgridResponseBody struct {
} `json:"errors"` } `json:"errors"`
} }
func NewSendgridEmailProvider(apiKey string, host string, endpoint string) *SendgridEmailProvider { func NewSendgridEmailProvider(apiKey string) *SendgridEmailProvider {
return &SendgridEmailProvider{ApiKey: apiKey, Host: host, Endpoint: endpoint} return &SendgridEmailProvider{ApiKey: apiKey}
} }
func (s *SendgridEmailProvider) Send(fromAddress string, fromName string, toAddress string, subject string, content string) error { func (s *SendgridEmailProvider) Send(fromAddress string, fromName, toAddress string, subject string, content string) error {
client := s.initSendgridClient()
from := mail.NewEmail(fromName, fromAddress) from := mail.NewEmail(fromName, fromAddress)
to := mail.NewEmail("", toAddress) to := mail.NewEmail("", toAddress)
message := mail.NewSingleEmail(from, subject, to, "", content) message := mail.NewSingleEmail(from, subject, to, "", content)
client := sendgrid.NewSendClient(s.ApiKey)
resp, err := client.Send(message) response, err := client.Send(message)
if err != nil { if err != nil {
return err return err
} }
if resp.StatusCode >= 300 { if response.StatusCode >= 300 {
var responseBody SendgridResponseBody var responseBody SendgridResponseBody
err = json.Unmarshal([]byte(resp.Body), &responseBody) err = json.Unmarshal([]byte(response.Body), &responseBody)
if err != nil { if err != nil {
return err return err
} }
@@ -65,23 +61,8 @@ func (s *SendgridEmailProvider) Send(fromAddress string, fromName string, toAddr
messages = append(messages, sendgridError.Message) messages = append(messages, sendgridError.Message)
} }
return fmt.Errorf("status code: %d, error message: %s", resp.StatusCode, messages) return fmt.Errorf("SendGrid status code: %d, error message: %s", response.StatusCode, strings.Join(messages, " | "))
}
if resp.StatusCode != http.StatusAccepted {
return fmt.Errorf("status code: %d", resp.StatusCode)
} }
return nil return nil
} }
func (s *SendgridEmailProvider) initSendgridClient() *sendgrid.Client {
if s.Host == "" || s.Endpoint == "" {
return sendgrid.NewSendClient(s.ApiKey)
}
request := sendgrid.GetRequest(s.ApiKey, s.Endpoint, s.Host)
request.Method = "POST"
return &sendgrid.Client{Request: request}
}

View File

@@ -16,9 +16,7 @@ package email
import ( import (
"crypto/tls" "crypto/tls"
"strings"
"github.com/casdoor/casdoor/conf"
"github.com/casdoor/gomail/v2" "github.com/casdoor/gomail/v2"
) )
@@ -27,20 +25,14 @@ type SmtpEmailProvider struct {
} }
func NewSmtpEmailProvider(userName string, password string, host string, port int, typ string, disableSsl bool) *SmtpEmailProvider { func NewSmtpEmailProvider(userName string, password string, host string, port int, typ string, disableSsl bool) *SmtpEmailProvider {
dialer := gomail.NewDialer(host, port, userName, password) dialer := &gomail.Dialer{}
dialer = gomail.NewDialer(host, port, userName, password)
if typ == "SUBMAIL" { if typ == "SUBMAIL" {
dialer.TLSConfig = &tls.Config{InsecureSkipVerify: true} dialer.TLSConfig = &tls.Config{InsecureSkipVerify: true}
} }
dialer.SSL = !disableSsl dialer.SSL = !disableSsl
if strings.HasSuffix(host, ".amazonaws.com") {
socks5Proxy := conf.GetConfigString("socks5Proxy")
if socks5Proxy != "" {
dialer.SetSocks5Proxy(socks5Proxy)
}
}
return &SmtpEmailProvider{Dialer: dialer} return &SmtpEmailProvider{Dialer: dialer}
} }

View File

@@ -1,81 +0,0 @@
// Copyright 2025 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.
package faceId
import (
"strings"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
facebody20191230 "github.com/alibabacloud-go/facebody-20191230/v5/client"
util "github.com/alibabacloud-go/tea-utils/v2/service"
"github.com/alibabacloud-go/tea/tea"
)
type AliyunFaceIdProvider struct {
AccessKey string
AccessSecret string
Endpoint string
QualityScoreThreshold float32
}
func NewAliyunFaceIdProvider(accessKey string, accessSecret string, endPoint string) *AliyunFaceIdProvider {
return &AliyunFaceIdProvider{
AccessKey: accessKey,
AccessSecret: accessSecret,
Endpoint: endPoint,
QualityScoreThreshold: 0.65,
}
}
func (provider *AliyunFaceIdProvider) Check(base64ImageA string, base64ImageB string) (bool, error) {
config := openapi.Config{
AccessKeyId: tea.String(provider.AccessKey),
AccessKeySecret: tea.String(provider.AccessSecret),
}
config.Endpoint = tea.String(provider.Endpoint)
client, err := facebody20191230.NewClient(&config)
if err != nil {
return false, err
}
compareFaceRequest := &facebody20191230.CompareFaceRequest{
QualityScoreThreshold: tea.Float32(provider.QualityScoreThreshold),
ImageDataA: tea.String(strings.Replace(base64ImageA, "data:image/png;base64,", "", -1)),
ImageDataB: tea.String(strings.Replace(base64ImageB, "data:image/png;base64,", "", -1)),
}
runtime := &util.RuntimeOptions{}
defer func() {
if r := tea.Recover(recover()); r != nil {
err = r
}
}()
result, err := client.CompareFaceWithOptions(compareFaceRequest, runtime)
if err != nil {
return false, err
}
if result == nil {
return false, nil
}
if *result.Body.Data.Thresholds[0] < *result.Body.Data.Confidence {
return true, nil
}
return false, nil
}

View File

@@ -1,23 +0,0 @@
// Copyright 2025 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.
package faceId
type FaceIdProvider interface {
Check(base64ImageA string, base64ImageB string) (bool, error)
}
func GetFaceIdProvider(typ string, clientId string, clientSecret string, endPoint string) FaceIdProvider {
return NewAliyunFaceIdProvider(clientId, clientSecret, endPoint)
}

View File

@@ -26,26 +26,20 @@ type AuthForm struct {
Name string `json:"name"` Name string `json:"name"`
FirstName string `json:"firstName"` FirstName string `json:"firstName"`
LastName string `json:"lastName"` LastName string `json:"lastName"`
Gender string `json:"gender"`
Bio string `json:"bio"`
Tag string `json:"tag"`
Education string `json:"education"`
Email string `json:"email"` Email string `json:"email"`
Phone string `json:"phone"` Phone string `json:"phone"`
Affiliation string `json:"affiliation"` Affiliation string `json:"affiliation"`
IdCard string `json:"idCard"` IdCard string `json:"idCard"`
Language string `json:"language"`
Region string `json:"region"` Region string `json:"region"`
InvitationCode string `json:"invitationCode"` InvitationCode string `json:"invitationCode"`
Application string `json:"application"` Application string `json:"application"`
ClientId string `json:"clientId"` ClientId string `json:"clientId"`
Provider string `json:"provider"` Provider string `json:"provider"`
ProviderBack string `json:"providerBack"` Code string `json:"code"`
Code string `json:"code"` State string `json:"state"`
State string `json:"state"` RedirectUri string `json:"redirectUri"`
RedirectUri string `json:"redirectUri"` Method string `json:"method"`
Method string `json:"method"`
EmailCode string `json:"emailCode"` EmailCode string `json:"emailCode"`
PhoneCode string `json:"phoneCode"` PhoneCode string `json:"phoneCode"`
@@ -61,17 +55,14 @@ type AuthForm struct {
CaptchaToken string `json:"captchaToken"` CaptchaToken string `json:"captchaToken"`
ClientSecret string `json:"clientSecret"` ClientSecret string `json:"clientSecret"`
MfaType string `json:"mfaType"` MfaType string `json:"mfaType"`
Passcode string `json:"passcode"` Passcode string `json:"passcode"`
RecoveryCode string `json:"recoveryCode"` RecoveryCode string `json:"recoveryCode"`
EnableMfaRemember bool `json:"enableMfaRemember"`
Plan string `json:"plan"` Plan string `json:"plan"`
Pricing string `json:"pricing"` Pricing string `json:"pricing"`
FaceId []float64 `json:"faceId"` FaceId []float64 `json:"faceId"`
FaceIdImage []string `json:"faceIdImage"`
UserCode string `json:"userCode"`
} }
func GetAuthFormFieldValue(form *AuthForm, fieldName string) (bool, string) { func GetAuthFormFieldValue(form *AuthForm, fieldName string) (bool, string) {

216
go.mod
View File

@@ -1,40 +1,36 @@
module github.com/casdoor/casdoor module github.com/casdoor/casdoor
go 1.21 go 1.16
require ( require (
github.com/Masterminds/squirrel v1.5.3 github.com/Masterminds/squirrel v1.5.3
github.com/alexedwards/argon2id v0.0.0-20211130144151-3585854a6387 github.com/alexedwards/argon2id v0.0.0-20211130144151-3585854a6387
github.com/alibabacloud-go/darabonba-openapi/v2 v2.1.4
github.com/alibabacloud-go/facebody-20191230/v5 v5.1.2
github.com/alibabacloud-go/openapi-util v0.1.0
github.com/alibabacloud-go/tea v1.3.2
github.com/alibabacloud-go/tea-utils/v2 v2.0.7
github.com/aws/aws-sdk-go v1.45.5 github.com/aws/aws-sdk-go v1.45.5
github.com/beego/beego v1.12.12 github.com/beego/beego v1.12.12
github.com/beevik/etree v1.1.0 github.com/beevik/etree v1.1.0
github.com/casbin/casbin/v2 v2.77.2 github.com/casbin/casbin/v2 v2.77.2
github.com/casdoor/go-sms-sender v0.25.0 github.com/casdoor/go-sms-sender v0.24.0
github.com/casdoor/gomail/v2 v2.1.0 github.com/casdoor/gomail/v2 v2.0.1
github.com/casdoor/ldapserver v1.2.0 github.com/casdoor/notify v0.45.0
github.com/casdoor/notify v1.0.1 github.com/casdoor/oss v1.6.0
github.com/casdoor/oss v1.8.0
github.com/casdoor/xorm-adapter/v3 v3.1.0 github.com/casdoor/xorm-adapter/v3 v3.1.0
github.com/casvisor/casvisor-go-sdk v1.4.0 github.com/casvisor/casvisor-go-sdk v1.4.0
github.com/dchest/captcha v0.0.0-20200903113550-03f5f0333e1f github.com/dchest/captcha v0.0.0-20200903113550-03f5f0333e1f
github.com/denisenkom/go-mssqldb v0.9.0 github.com/denisenkom/go-mssqldb v0.9.0
github.com/elazarl/go-bindata-assetfs v1.0.1 // indirect
github.com/elimity-com/scim v0.0.0-20230426070224-941a5eac92f3 github.com/elimity-com/scim v0.0.0-20230426070224-941a5eac92f3
github.com/fogleman/gg v1.3.0 github.com/fogleman/gg v1.3.0
github.com/forestmgy/ldapserver v1.1.0
github.com/go-asn1-ber/asn1-ber v1.5.5 github.com/go-asn1-ber/asn1-ber v1.5.5
github.com/go-git/go-git/v5 v5.13.0 github.com/go-git/go-git/v5 v5.11.0
github.com/go-ldap/ldap/v3 v3.4.6 github.com/go-ldap/ldap/v3 v3.4.6
github.com/go-mysql-org/go-mysql v1.7.0 github.com/go-mysql-org/go-mysql v1.7.0
github.com/go-pay/gopay v1.5.72 github.com/go-pay/gopay v1.5.72
github.com/go-sql-driver/mysql v1.6.0 github.com/go-sql-driver/mysql v1.6.0
github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible
github.com/go-webauthn/webauthn v0.10.2 github.com/go-webauthn/webauthn v0.6.0
github.com/golang-jwt/jwt/v5 v5.2.2 github.com/golang-jwt/jwt/v4 v4.5.0
github.com/google/uuid v1.6.0 github.com/google/uuid v1.4.0
github.com/json-iterator/go v1.1.12 github.com/json-iterator/go v1.1.12
github.com/lestrrat-go/jwx v1.2.29 github.com/lestrrat-go/jwx v1.2.29
github.com/lib/pq v1.10.9 github.com/lib/pq v1.10.9
@@ -50,199 +46,27 @@ require (
github.com/russellhaering/gosaml2 v0.9.0 github.com/russellhaering/gosaml2 v0.9.0
github.com/russellhaering/goxmldsig v1.2.0 github.com/russellhaering/goxmldsig v1.2.0
github.com/sendgrid/sendgrid-go v3.14.0+incompatible github.com/sendgrid/sendgrid-go v3.14.0+incompatible
github.com/shiena/ansicolor v0.0.0-20200904210342-c7312218db18 // indirect
github.com/shirou/gopsutil v3.21.11+incompatible github.com/shirou/gopsutil v3.21.11+incompatible
github.com/siddontang/go-log v0.0.0-20190221022429-1e957dd83bed github.com/siddontang/go-log v0.0.0-20190221022429-1e957dd83bed
github.com/stretchr/testify v1.10.0 github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e
github.com/stretchr/testify v1.9.0
github.com/stripe/stripe-go/v74 v74.29.0 github.com/stripe/stripe-go/v74 v74.29.0
github.com/tealeg/xlsx v1.0.5 github.com/tealeg/xlsx v1.0.5
github.com/thanhpk/randstr v1.0.4 github.com/thanhpk/randstr v1.0.4
github.com/tidwall/pretty v1.2.1 // indirect
github.com/tklauser/go-sysconf v0.3.10 // indirect
github.com/xorm-io/builder v0.3.13 github.com/xorm-io/builder v0.3.13
github.com/xorm-io/core v0.7.4 github.com/xorm-io/core v0.7.4
github.com/xorm-io/xorm v1.1.6 github.com/xorm-io/xorm v1.1.6
golang.org/x/crypto v0.32.0 github.com/yusufpapurcu/wmi v1.2.2 // indirect
golang.org/x/net v0.34.0 golang.org/x/crypto v0.21.0
golang.org/x/net v0.21.0
golang.org/x/oauth2 v0.17.0 golang.org/x/oauth2 v0.17.0
golang.org/x/text v0.21.0
google.golang.org/api v0.150.0 google.golang.org/api v0.150.0
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/square/go-jose.v2 v2.6.0 gopkg.in/square/go-jose.v2 v2.6.0
layeh.com/radius v0.0.0-20221205141417-e7fbddd11d68 layeh.com/radius v0.0.0-20221205141417-e7fbddd11d68
maunium.net/go/mautrix v0.16.0 maunium.net/go/mautrix v0.16.0
modernc.org/sqlite v1.18.2 modernc.org/sqlite v1.18.2
) )
require (
cloud.google.com/go v0.110.8 // indirect
cloud.google.com/go/compute v1.23.1 // indirect
cloud.google.com/go/compute/metadata v0.2.3 // indirect
cloud.google.com/go/iam v1.1.3 // indirect
cloud.google.com/go/storage v1.35.1 // indirect
dario.cat/mergo v1.0.0 // indirect
github.com/Azure/azure-pipeline-go v0.2.3 // indirect
github.com/Azure/azure-storage-blob-go v0.15.0 // indirect
github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358 // indirect
github.com/BurntSushi/toml v0.3.1 // indirect
github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible // indirect
github.com/Microsoft/go-winio v0.6.1 // indirect
github.com/ProtonMail/go-crypto v1.1.3 // indirect
github.com/RocketChat/Rocket.Chat.Go.SDK v0.0.0-20221121042443-a3fd332d56d9 // indirect
github.com/SherClockHolmes/webpush-go v1.2.0 // indirect
github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.5 // indirect
github.com/alibabacloud-go/darabonba-number v1.0.4 // indirect
github.com/alibabacloud-go/debug v1.0.1 // indirect
github.com/alibabacloud-go/endpoint-util v1.1.0 // indirect
github.com/alibabacloud-go/openplatform-20191219/v2 v2.0.1 // indirect
github.com/alibabacloud-go/tea-fileform v1.1.1 // indirect
github.com/alibabacloud-go/tea-oss-sdk v1.1.3 // indirect
github.com/alibabacloud-go/tea-oss-utils v1.1.0 // indirect
github.com/alibabacloud-go/tea-utils v1.3.6 // indirect
github.com/alibabacloud-go/tea-xml v1.1.3 // indirect
github.com/aliyun/alibaba-cloud-sdk-go v1.62.545 // indirect
github.com/aliyun/aliyun-oss-go-sdk v2.2.2+incompatible // indirect
github.com/aliyun/credentials-go v1.3.10 // indirect
github.com/apistd/uni-go-sdk v0.0.2 // indirect
github.com/atc0005/go-teams-notify/v2 v2.13.0 // indirect
github.com/baidubce/bce-sdk-go v0.9.156 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/blinkbean/dingtalk v0.0.0-20210905093040-7d935c0f7e19 // indirect
github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc // indirect
github.com/bwmarrin/discordgo v0.27.1 // indirect
github.com/casdoor/casdoor-go-sdk v0.50.0 // indirect
github.com/casdoor/go-reddit/v2 v2.1.0 // indirect
github.com/cenkalti/backoff/v4 v4.1.3 // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/clbanning/mxj/v2 v2.7.0 // indirect
github.com/cloudflare/circl v1.3.7 // indirect
github.com/cschomburg/go-pushbullet v0.0.0-20171206132031-67759df45fbb // indirect
github.com/cyphar/filepath-securejoin v0.2.5 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect
github.com/dghubble/oauth1 v0.7.2 // indirect
github.com/dghubble/sling v1.4.0 // indirect
github.com/di-wu/parser v0.2.2 // indirect
github.com/di-wu/xsd-datetime v1.0.0 // indirect
github.com/drswork/go-twitter v0.0.0-20221107160839-dea1b6ed53d7 // indirect
github.com/elazarl/go-bindata-assetfs v1.0.1 // indirect
github.com/emirpasic/gods v1.18.1 // indirect
github.com/fxamacker/cbor/v2 v2.6.0 // indirect
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
github.com/go-git/go-billy/v5 v5.6.0 // indirect
github.com/go-lark/lark v1.9.0 // indirect
github.com/go-ole/go-ole v1.2.6 // indirect
github.com/go-webauthn/x v0.1.9 // indirect
github.com/goccy/go-json v0.10.2 // indirect
github.com/golang-jwt/jwt v3.2.2+incompatible // indirect
github.com/golang-jwt/jwt/v4 v4.5.0 // indirect
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe // indirect
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/mock v1.6.0 // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/gomodule/redigo v2.0.0+incompatible // indirect
github.com/google/go-querystring v1.1.0 // indirect
github.com/google/go-tpm v0.9.0 // indirect
github.com/google/s2a-go v0.1.7 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
github.com/googleapis/gax-go/v2 v2.12.0 // indirect
github.com/gorilla/websocket v1.5.0 // indirect
github.com/gregdel/pushover v1.2.1 // indirect
github.com/hashicorp/golang-lru v0.5.4 // indirect
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/jonboulle/clockwork v0.2.2 // indirect
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
github.com/kevinburke/ssh_config v1.2.0 // indirect
github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect
github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect
github.com/lestrrat-go/backoff/v2 v2.0.8 // indirect
github.com/lestrrat-go/blackmagic v1.0.2 // indirect
github.com/lestrrat-go/httpcc v1.0.1 // indirect
github.com/lestrrat-go/iter v1.0.2 // indirect
github.com/lestrrat-go/option v1.0.1 // indirect
github.com/line/line-bot-sdk-go v7.8.0+incompatible // indirect
github.com/markbates/going v1.0.0 // indirect
github.com/mattermost/xml-roundtrip-validator v0.1.0 // indirect
github.com/mattn/go-colorable v0.1.12 // indirect
github.com/mattn/go-ieproxy v0.0.1 // indirect
github.com/mattn/go-isatty v0.0.16 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
github.com/mileusna/viber v1.0.1 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/mrjones/oauth v0.0.0-20180629183705-f4e24b6d100c // indirect
github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b // indirect
github.com/pingcap/errors v0.11.5-0.20210425183316-da1aaba5fb63 // indirect
github.com/pingcap/log v0.0.0-20210625125904-98ed8e2eb1c7 // indirect
github.com/pingcap/tidb/parser v0.0.0-20221126021158-6b02a5d8ba7d // indirect
github.com/pjbgf/sha1cd v0.3.0 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/prometheus/common v0.30.0 // indirect
github.com/prometheus/procfs v0.7.3 // indirect
github.com/qiniu/go-sdk/v7 v7.12.1 // indirect
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect
github.com/rs/zerolog v1.30.0 // indirect
github.com/scim2/filter-parser/v2 v2.2.0 // indirect
github.com/sendgrid/rest v2.6.9+incompatible // indirect
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect
github.com/shiena/ansicolor v0.0.0-20200904210342-c7312218db18 // indirect
github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24 // indirect
github.com/siddontang/go v0.0.0-20180604090527-bdc77568d726 // indirect
github.com/sirupsen/logrus v1.9.0 // indirect
github.com/skeema/knownhosts v1.3.0 // indirect
github.com/slack-go/slack v0.12.3 // indirect
github.com/stretchr/objx v0.5.2 // indirect
github.com/syndtr/goleveldb v1.0.0 // indirect
github.com/technoweenie/multipartstreamer v1.0.1 // indirect
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.744 // indirect
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms v1.0.744 // indirect
github.com/tidwall/gjson v1.16.0 // indirect
github.com/tidwall/match v1.1.1 // indirect
github.com/tidwall/pretty v1.2.1 // indirect
github.com/tidwall/sjson v1.2.5 // indirect
github.com/tjfoc/gmsm v1.4.1 // indirect
github.com/tklauser/go-sysconf v0.3.10 // indirect
github.com/tklauser/numcpus v0.4.0 // indirect
github.com/twilio/twilio-go v1.13.0 // indirect
github.com/ucloud/ucloud-sdk-go v0.22.5 // indirect
github.com/utahta/go-linenotify v0.5.0 // indirect
github.com/volcengine/volc-sdk-golang v1.0.117 // indirect
github.com/x448/float16 v0.8.4 // indirect
github.com/xanzy/ssh-agent v0.3.3 // indirect
github.com/yusufpapurcu/wmi v1.2.2 // indirect
go.mau.fi/util v0.0.0-20230805171708-199bf3eec776 // indirect
go.opencensus.io v0.24.0 // indirect
go.uber.org/atomic v1.9.0 // indirect
go.uber.org/multierr v1.7.0 // indirect
go.uber.org/zap v1.19.1 // indirect
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
golang.org/x/image v0.0.0-20190802002840-cff245a6509b // indirect
golang.org/x/mod v0.19.0 // indirect
golang.org/x/sync v0.10.0 // indirect
golang.org/x/sys v0.29.0 // indirect
golang.org/x/time v0.3.0 // indirect
golang.org/x/tools v0.23.0 // indirect
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
google.golang.org/appengine v1.6.8 // indirect
google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405 // indirect
google.golang.org/grpc v1.59.0 // indirect
google.golang.org/protobuf v1.32.0 // indirect
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
lukechampine.com/uint128 v1.1.1 // indirect
maunium.net/go/maulogger/v2 v2.4.1 // indirect
modernc.org/cc/v3 v3.37.0 // indirect
modernc.org/ccgo/v3 v3.16.9 // indirect
modernc.org/libc v1.18.0 // indirect
modernc.org/mathutil v1.5.0 // indirect
modernc.org/memory v1.3.0 // indirect
modernc.org/opt v0.1.1 // indirect
modernc.org/strutil v1.1.3 // indirect
modernc.org/token v1.0.1 // indirect
)

1904
go.sum

File diff suppressed because it is too large Load Diff

View File

@@ -84,10 +84,6 @@ func getAllFilePathsInFolder(folder string, fileSuffix string) []string {
return err return err
} }
if strings.HasSuffix(path, "node_modules") {
return filepath.SkipDir
}
if !strings.HasSuffix(info.Name(), fileSuffix) { if !strings.HasSuffix(info.Name(), fileSuffix) {
return nil return nil
} }

View File

@@ -1,193 +1,167 @@
{ {
"account": { "account": {
"Failed to add user": "فشل إضافة المستخدم", "Failed to add user": "Failed to add user",
"Get init score failed, error: %w": "فشل الحصول على النتيجة الأولية، الخطأ: %w", "Get init score failed, error: %w": "Get init score failed, error: %w",
"Please sign out first": "يرجى تسجيل الخروج أولاً", "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": "The application does not allow to sign up new account"
}, },
"auth": { "auth": {
"Challenge method should be S256": "يجب أن تكون طريقة التحدي S256", "Challenge method should be S256": "Challenge method should be S256",
"DeviceCode Invalid": "رمز الجهاز غير صالح", "Failed to create user, user information is invalid: %s": "Failed to create user, user information is invalid: %s",
"Failed to create user, user information is invalid: %s": "فشل إنشاء المستخدم، معلومات المستخدم غير صالحة: %s", "Failed to login in: %s": "Failed to login in: %s",
"Failed to login in: %s": "فشل تسجيل الدخول: %s", "Invalid token": "Invalid token",
"Invalid token": "الرمز غير صالح", "State expected: %s, but got: %s": "State expected: %s, but got: %s",
"State expected: %s, but got: %s": "كان من المتوقع الحالة: %s، لكن حصلنا على: %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 via %%s, please use another way to sign up": "الحساب الخاص بالمزود: %s واسم المستخدم: %s (%s) غير موجود ولا يُسمح بالتسجيل كحساب جديد عبر %%s، يرجى استخدام طريقة أخرى للتسجيل", "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) does not exist and is not allowed to sign up as new account, please contact your IT support": "الحساب الخاص بالمزود: %s واسم المستخدم: %s (%s) غير موجود ولا يُسمح بالتسجيل كحساب جديد، يرجى الاتصال بدعم تكنولوجيا المعلومات", "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 account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "الحساب الخاص بالمزود: %s واسم المستخدم: %s (%s) مرتبط بالفعل بحساب آخر: %s (%s)", "The application: %s does not exist": "The application: %s does not exist",
"The application: %s does not exist": "التطبيق: %s غير موجود", "The login method: login with LDAP is not enabled for the application": "The login method: login with LDAP is not enabled for the application",
"The application: %s has disabled users to signin": "The application: %s has disabled users to signin", "The login method: login with SMS is not enabled for the application": "The login method: login with SMS is not enabled for the application",
"The login method: login with LDAP is not enabled for the application": "طريقة تسجيل الدخول: تسجيل الدخول باستخدام LDAP غير مفعّلة لهذا التطبيق", "The login method: login with email is not enabled for the application": "The login method: login with email is not enabled for the application",
"The login method: login with SMS is not enabled for the application": "طريقة تسجيل الدخول: تسجيل الدخول باستخدام الرسائل النصية غير مفعّلة لهذا التطبيق", "The login method: login with face is not enabled for the application": "The login method: login with face is not enabled for the application",
"The login method: login with email is not enabled for the application": "طريقة تسجيل الدخول: تسجيل الدخول باستخدام البريد الإلكتروني غير مفعّلة لهذا التطبيق", "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 login method: login with face is not enabled for the application": "طريقة تسجيل الدخول: تسجيل الدخول باستخدام الوجه غير مفعّلة لهذا التطبيق", "The organization: %s does not exist": "The organization: %s does not exist",
"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",
"The organization: %s does not exist": "المنظمة: %s غير موجودة", "Unauthorized operation": "Unauthorized operation",
"The organization: %s has disabled users to signin": "The organization: %s has disabled users to signin", "Unknown authentication type (not password or provider), form = %s": "Unknown authentication type (not password or provider), form = %s",
"The provider: %s does not exist": "المزود: %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",
"The provider: %s is not enabled for the application": "المزود: %s غير مفعّل لهذا التطبيق", "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing"
"Unauthorized operation": "عملية غير مصرح بها",
"Unknown authentication type (not password or provider), form = %s": "نوع مصادقة غير معروف (ليس كلمة مرور أو مزود)، النموذج = %s",
"User's tag: %s is not listed in the application's tags": "وسم المستخدم: %s غير مدرج في وسوم التطبيق",
"UserCode Expired": "رمز المستخدم منتهي الصلاحية",
"UserCode Invalid": "رمز المستخدم غير صالح",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "المستخدم المدفوع %s ليس لديه اشتراك نشط أو معلق والتطبيق: %s ليس لديه تسعير افتراضي",
"the application for user %s is not found": "لم يتم العثور على التطبيق الخاص بالمستخدم %s",
"the organization: %s is not found": "لم يتم العثور على المنظمة: %s"
}, },
"cas": { "cas": {
"Service %s and %s do not match": "الخدمة %s و %s غير متطابقتين" "Service %s and %s do not match": "Service %s and %s do not match"
}, },
"check": { "check": {
"%s does not meet the CIDR format requirements: %s": "%s لا تلبي متطلبات تنسيق CIDR: %s", "Affiliation cannot be blank": "Affiliation cannot be blank",
"Affiliation cannot be blank": "الانتماء لا يمكن أن يكون فارغاً", "Default code does not match the code's matching rules": "Default code does not match the code's matching rules",
"CIDR for IP: %s should not be empty": "CIDR لعنوان IP: %s لا يجب أن يكون فارغاً", "DisplayName cannot be blank": "DisplayName cannot be blank",
"Default code does not match the code's matching rules": "الرمز الافتراضي لا يتطابق مع قواعد المطابقة", "DisplayName is not valid real name": "DisplayName is not valid real name",
"DisplayName cannot be blank": "اسم العرض لا يمكن أن يكون فارغاً", "Email already exists": "Email already exists",
"DisplayName is not valid real name": "اسم العرض ليس اسمًا حقيقيًا صالحًا", "Email cannot be empty": "Email cannot be empty",
"Email already exists": "البريد الإلكتروني موجود بالفعل", "Email is invalid": "Email is invalid",
"Email cannot be empty": "البريد الإلكتروني لا يمكن أن يكون فارغاً", "Empty username.": "Empty username.",
"Email is invalid": "البريد الإلكتروني غير صالح", "Face data does not exist, cannot log in": "Face data does not exist, cannot log in",
"Empty username.": "اسم المستخدم فارغ.", "Face data mismatch": "Face data mismatch",
"Face data does not exist, cannot log in": "بيانات الوجه غير موجودة، لا يمكن تسجيل الدخول", "FirstName cannot be blank": "FirstName cannot be blank",
"Face data mismatch": "عدم تطابق بيانات الوجه", "Invitation code cannot be blank": "Invitation code cannot be blank",
"Failed to parse client IP: %s": "فشل تحليل IP العميل: %s", "Invitation code exhausted": "Invitation code exhausted",
"FirstName cannot be blank": "الاسم الأول لا يمكن أن يكون فارغاً", "Invitation code is invalid": "Invitation code is invalid",
"Invitation code cannot be blank": "رمز الدعوة لا يمكن أن يكون فارغاً", "Invitation code suspended": "Invitation code suspended",
"Invitation code exhausted": "رمز الدعوة استُنفِد", "LDAP user name or password incorrect": "LDAP user name or password incorrect",
"Invitation code is invalid": "رمز الدعوة غير صالح", "LastName cannot be blank": "LastName cannot be blank",
"Invitation code suspended": "رمز الدعوة موقوف", "Multiple accounts with same uid, please check your ldap server": "Multiple accounts with same uid, please check your ldap server",
"LDAP user name or password incorrect": "اسم مستخدم LDAP أو كلمة المرور غير صحيحة", "Organization does not exist": "Organization does not exist",
"LastName cannot be blank": "الاسم الأخير لا يمكن أن يكون فارغاً", "Phone already exists": "Phone already exists",
"Multiple accounts with same uid, please check your ldap server": "حسابات متعددة بنفس uid، يرجى التحقق من خادم ldap الخاص بك", "Phone cannot be empty": "Phone cannot be empty",
"Organization does not exist": "المنظمة غير موجودة", "Phone number is invalid": "Phone number is invalid",
"Password cannot be empty": "كلمة المرور لا يمكن أن تكون فارغة", "Please register using the email corresponding to the invitation code": "Please register using the email corresponding to the invitation code",
"Phone already exists": "الهاتف موجود بالفعل", "Please register using the phone corresponding to the invitation code": "Please register using the phone corresponding to the invitation code",
"Phone cannot be empty": "الهاتف لا يمكن أن يكون فارغاً", "Please register using the username corresponding to the invitation code": "Please register using the username corresponding to the invitation code",
"Phone number is invalid": "رقم الهاتف غير صالح", "Session outdated, please login again": "Session outdated, please login again",
"Please register using the email corresponding to the invitation code": "يرجى التسجيل باستخدام البريد الإلكتروني المطابق لرمز الدعوة", "The invitation code has already been used": "The invitation code has already been used",
"Please register using the phone corresponding to the invitation code": "يرجى التسجيل باستخدام الهاتف المطابق لرمز الدعوة", "The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
"Please register using the username corresponding to the invitation code": "يرجى التسجيل باستخدام اسم المستخدم المطابق لرمز الدعوة", "The user: %s doesn't exist in LDAP server": "The user: %s doesn't exist in LDAP server",
"Session outdated, please login again": "الجلسة منتهية الصلاحية، يرجى تسجيل الدخول مرة أخرى", "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.",
"The invitation code has already been used": "رمز الدعوة تم استخدامه بالفعل", "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex",
"The user is forbidden to sign in, please contact the administrator": "المستخدم ممنوع من تسجيل الدخول، يرجى الاتصال بالمسؤول", "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"",
"The user: %s doesn't exist in LDAP server": "المستخدم: %s غير موجود في خادم LDAP", "Username already exists": "Username already exists",
"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 cannot be an email address": "Username cannot be an email address",
"The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "Hesap alanı \\\"%s\\\" için \\\"%s\\\" değeri, hesap öğesi regex'iyle eşleşmiyor", "Username cannot contain white spaces": "Username cannot contain white spaces",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "Kayıt alanı \\\"%s\\\" için \\\"%s\\\" değeri, \\\"%s\\\" uygulamasının kayıt öğesi regex'iyle eşleşmiyor", "Username cannot start with a digit": "Username cannot start with a digit",
"Username already exists": "اسم المستخدم موجود بالفعل", "Username is too long (maximum is 39 characters).": "Username is too long (maximum is 39 characters).",
"Username cannot be an email address": "اسم المستخدم لا يمكن أن يكون عنوان بريد إلكتروني", "Username must have at least 2 characters": "Username must have at least 2 characters",
"Username cannot contain white spaces": "اسم المستخدم لا يمكن أن يحتوي على مسافات", "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",
"Username cannot start with a digit": "اسم المستخدم لا يمكن أن يبدأ برقم", "Your region is not allow to signup by phone": "Your region is not allow to signup by phone",
"Username is too long (maximum is 255 characters).": "اسم المستخدم طويل جداً (الحد الأقصى 255 حرفاً).", "password or code is incorrect": "password or code is incorrect",
"Username must have at least 2 characters": "اسم المستخدم يجب أن يحتوي على حرفين على الأقل", "password or code is incorrect, you have %d remaining chances": "password or code is incorrect, you have %d remaining chances",
"Username supports email format. Also 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. Also pay attention to the email format.": "اسم المستخدم يدعم تنسيق البريد الإلكتروني. كما أن اسم المستخدم يمكن أن يحتوي فقط على أحرف وأرقام، شرطات سفلية أو علوية، لا يمكن أن تحتوي على شرطات متتالية، ولا يمكن أن يبدأ أو ينتهي بشرطة. انتبه أيضًا لتنسيق البريد الإلكتروني.", "unsupported password type: %s": "unsupported password type: %s"
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "لقد قمت بإدخال كلمة المرور أو الرمز الخطأ عدة مرات، يرجى الانتظار %d دقائق ثم المحاولة مرة أخرى",
"Your IP address: %s has been banned according to the configuration of: ": "عنوان IP الخاص بك: %s تم حظره وفقًا لتكوين: ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "Şifrenizin süresi doldu. Lütfen \\\"Şifremi unuttum\\\"a tıklayarak şifrenizi sıfırlayın",
"Your region is not allow to signup by phone": "منطقتك لا تسمح بالتسجيل عبر الهاتف",
"password or code is incorrect": "كلمة المرور أو الرمز غير صحيح",
"password or code is incorrect, you have %s remaining chances": "كلمة المرور أو الرمز غير صحيح، لديك %s فرصة متبقية",
"unsupported password type: %s": "نوع كلمة المرور غير مدعوم: %s"
},
"enforcer": {
"the adapter: %s is not found": "المحول: %s غير موجود"
}, },
"general": { "general": {
"Failed to import groups": "فشل استيراد المجموعات", "Missing parameter": "Missing parameter",
"Failed to import users": "فشل استيراد المستخدمين", "Please login first": "Please login first",
"Missing parameter": "المعلمة مفقودة", "The organization: %s should have one application at least": "The organization: %s should have one application at least",
"Only admin user can specify user": "فقط المسؤول يمكنه تحديد المستخدم", "The user: %s doesn't exist": "The user: %s doesn't exist",
"Please login first": "يرجى تسجيل الدخول أولاً", "don't support captchaProvider: ": "don't support captchaProvider: ",
"The organization: %s should have one application at least": "المنظمة: %s يجب أن تحتوي على تطبيق واحد على الأقل", "this operation is not allowed in demo mode": "this operation is not allowed in demo mode",
"The user: %s doesn't exist": "المستخدم: %s غير موجود", "this operation requires administrator to perform": "this operation requires administrator to perform"
"Wrong userId": "معرف المستخدم غير صحيح",
"don't support captchaProvider: ": "لا يدعم captchaProvider: ",
"this operation is not allowed in demo mode": "هذه العملية غير مسموح بها في وضع العرض التوضيحي",
"this operation requires administrator to perform": "هذه العملية تتطلب مسؤولاً لتنفيذها"
}, },
"ldap": { "ldap": {
"Ldap server exist": "خادم LDAP موجود" "Ldap server exist": "Ldap server exist"
}, },
"link": { "link": {
"Please link first": "يرجى الربط أولاً", "Please link first": "Please link first",
"This application has no providers": "هذا التطبيق لا يحتوي على مزودين", "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 application has no providers of type",
"This provider can't be unlinked": "لا يمكن فصل هذا المزود", "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 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": "You can't unlink yourself, you are not a member of any application"
}, },
"organization": { "organization": {
"Only admin can modify the %s.": "فقط المسؤول يمكنه تعديل %s.", "Only admin can modify the %s.": "Only admin can modify the %s.",
"The %s is immutable.": "%s غير قابل للتعديل.", "The %s is immutable.": "The %s is immutable.",
"Unknown modify rule %s.": "قاعدة تعديل غير معروفة %s.", "Unknown modify rule %s.": "Unknown modify rule %s."
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "إضافة مستخدم جديد إلى المنظمة \"المدمجة\" غير متوفر حاليًا. يرجى ملاحظة: جميع المستخدمين في المنظمة \"المدمجة\" هم مسؤولون عالميون في Casdoor. يرجى الرجوع إلى الوثائق: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. إذا كنت لا تزال ترغب في إنشاء مستخدم للمنظمة \"المدمجة\"، اไป إلى صفحة إعدادات المنظمة وقم بتمكين خيار \"لديه موافقة صلاحية\"."
}, },
"permission": { "permission": {
"The permission: \\\"%s\\\" doesn't exist": "İzin: \\\"%s\\\" mevcut değil" "The permission: \\\"%s\\\" doesn't exist": "The permission: \\\"%s\\\" doesn't exist"
}, },
"provider": { "provider": {
"Invalid application id": "معرف التطبيق غير صالح", "Invalid application id": "Invalid application id",
"the provider: %s does not exist": "المزود: %s غير موجود" "the provider: %s does not exist": "the provider: %s does not exist"
}, },
"resource": { "resource": {
"User is nil for tag: avatar": "المستخدم nil للوسم: avatar", "User is nil for tag: avatar": "User is nil for tag: avatar",
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "اسم المستخدم أو fullFilePath فارغ: username = %s، fullFilePath = %s" "Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Username or fullFilePath is empty: username = %s, fullFilePath = %s"
}, },
"saml": { "saml": {
"Application %s not found": "التطبيق %s غير موجود" "Application %s not found": "Application %s not found"
}, },
"saml_sp": { "saml_sp": {
"provider %s's category is not SAML": "فئة المزود %s ليست SAML" "provider %s's category is not SAML": "provider %s's category is not SAML"
}, },
"service": { "service": {
"Empty parameters for emailForm: %v": "معلمات فارغة لـ emailForm: %v", "Empty parameters for emailForm: %v": "Empty parameters for emailForm: %v",
"Invalid Email receivers: %s": "مستقبلو البريد الإلكتروني غير صالحين: %s", "Invalid Email receivers: %s": "Invalid Email receivers: %s",
"Invalid phone receivers: %s": "مستقلو الهاتف غير صالحين: %s" "Invalid phone receivers: %s": "Invalid phone receivers: %s"
}, },
"storage": { "storage": {
"The objectKey: %s is not allowed": "مفتاح الكائن: %s غير مسموح به", "The objectKey: %s is not allowed": "The objectKey: %s is not allowed",
"The provider type: %s is not supported": "نوع المزود: %s غير مدعوم" "The provider type: %s is not supported": "The provider type: %s is not supported"
},
"subscription": {
"Error": "خطأ"
}, },
"token": { "token": {
"Grant_type: %s is not supported in this application": "Grant_type: %s غير مدعوم في هذا التطبيق", "Grant_type: %s is not supported in this application": "Grant_type: %s is not supported in this application",
"Invalid application or wrong clientSecret": "تطبيق غير صالح أو clientSecret خاطئ", "Invalid application or wrong clientSecret": "Invalid application or wrong clientSecret",
"Invalid client_id": "client_id غير صالح", "Invalid client_id": "Invalid client_id",
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "Redirect URI: %s غير موجود في قائمة Redirect URI المسموح بها", "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": "الرمز غير موجود، accessToken غير صالح" "Token not found, invalid accessToken": "Token not found, invalid accessToken"
}, },
"user": { "user": {
"Display name cannot be empty": "اسم العرض لا يمكن أن يكون فارغاً", "Display name cannot be empty": "Display name cannot be empty",
"MFA email is enabled but email is empty": "تم تمكين MFA للبريد الإلكتروني لكن البريد الإلكتروني فارغ", "New password cannot contain blank space.": "New password cannot contain blank space."
"MFA phone is enabled but phone number is empty": "تم تمكين MFA للهاتف لكن رقم الهاتف فارغ", },
"New password cannot contain blank space.": "كلمة المرور الجديدة لا يمكن أن تحتوي على مسافات.", "user_upload": {
"the user's owner and name should not be empty": "مالك المستخدم واسمه لا يجب أن يكونا فارغين" "Failed to import users": "Failed to import users"
}, },
"util": { "util": {
"No application is found for userId: %s": "لم يتم العثور على تطبيق لـ userId: %s", "No application is found for userId: %s": "No application is found for userId: %s",
"No provider for category: %s is found for application: %s": "لم يتم العثور على مزود للفئة: %s للتطبيق: %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": "المزود: %s غير موجود" "The provider: %s is not found": "The provider: %s is not found"
}, },
"verification": { "verification": {
"Invalid captcha provider.": "مزود captcha غير صالح.", "Invalid captcha provider.": "Invalid captcha provider.",
"Phone number is invalid in your region %s": "رقم الهاتف غير صالح في منطقتك %s", "Phone number is invalid in your region %s": "Phone number is invalid in your region %s",
"The verification code has already been used!": "رمز التحقق تم استخدامه بالفعل!", "The verification code has not been sent yet!": "The verification code has not been sent yet!",
"The verification code has not been sent yet!": "رمز التحقق لم يُرسل بعد!", "The verification code has not been sent yet, or has already been used!": "The verification code has not been sent yet, or has already been used!",
"Turing test failed.": "فشل اختبار تورينغ.", "Turing test failed.": "Turing test failed.",
"Unable to get the email modify rule.": "غير قادر على الحصول على قاعدة تعديل البريد الإلكتروني.", "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.": "Unable to get the phone modify rule.",
"Unknown type": "نوع غير معروف", "Unknown type": "Unknown type",
"Wrong verification code!": "رمز التحقق خاطئ!", "Wrong verification code!": "Wrong verification code!",
"You should verify your code in %d min!": "يجب عليك التحقق من الرمز خلال %d دقيقة!", "You should verify your code in %d min!": "You should verify your code in %d min!",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "lütfen uygulama için \\\"Sağlayıcılar\\\" listesine bir SMS sağlayıcı ekleyin: %s", "please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "please add a SMS provider to the \\\"Providers\\\" list for the application: %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "lütfen uygulama için \\\"Sağlayıcılar\\\" listesine bir E-posta sağlayıcı ekleyin: %s", "please add an Email provider to the \\\"Providers\\\" list for the application: %s": "please add an Email provider to the \\\"Providers\\\" list for the application: %s",
"the user does not exist, please sign up first": "المستخدم غير موجود، يرجى التسجيل أولاً" "the user does not exist, please sign up first": "the user does not exist, please sign up first"
}, },
"webauthn": { "webauthn": {
"Found no credentials for this user": "Found no credentials for this user", "Found no credentials for this user": "Found no credentials for this user",
"Please call WebAuthnSigninBegin first": "يرجى استدعاء WebAuthnSigninBegin أولاً" "Please call WebAuthnSigninBegin first": "Please call WebAuthnSigninBegin first"
} }
} }

View File

@@ -7,7 +7,6 @@
}, },
"auth": { "auth": {
"Challenge method should be S256": "Metoda výzvy by měla být S256", "Challenge method should be S256": "Metoda výzvy by měla být S256",
"DeviceCode Invalid": "DeviceCode je neplatný",
"Failed to create user, user information is invalid: %s": "Nepodařilo se vytvořit uživatele, informace o uživateli jsou neplatné: %s", "Failed to create user, user information is invalid: %s": "Nepodařilo se vytvořit uživatele, informace o uživateli jsou neplatné: %s",
"Failed to login in: %s": "Nepodařilo se přihlásit: %s", "Failed to login in: %s": "Nepodařilo se přihlásit: %s",
"Invalid token": "Neplatný token", "Invalid token": "Neplatný token",
@@ -16,33 +15,24 @@
"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": "Účet pro poskytovatele: %s a uživatelské jméno: %s (%s) neexistuje a není povoleno se registrovat jako nový účet, prosím kontaktujte svou IT podporu", "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": "Účet pro poskytovatele: %s a uživatelské jméno: %s (%s) neexistuje a není povoleno se registrovat jako nový účet, prosím kontaktujte svou IT podporu",
"The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "Účet pro poskytovatele: %s a uživatelské jméno: %s (%s) je již propojen s jiným účtem: %s (%s)", "The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "Účet pro poskytovatele: %s a uživatelské jméno: %s (%s) je již propojen s jiným účtem: %s (%s)",
"The application: %s does not exist": "Aplikace: %s neexistuje", "The application: %s does not exist": "Aplikace: %s neexistuje",
"The application: %s has disabled users to signin": "The application: %s has disabled users to signin", "The login method: login with LDAP is not enabled for the application": "Metoda přihlášení: přihlášení pomocí LDAP není pro aplikaci povolena",
"The login method: login with LDAP is not enabled for the application": "Přihlašovací metoda: přihlášení pomocí LDAP není pro aplikaci povolena", "The login method: login with SMS is not enabled for the application": "Metoda přihlášení: přihlášení pomocí SMS není pro aplikaci povolena",
"The login method: login with SMS is not enabled for the application": "Přihlašovací metoda: přihlášení pomocí SMS není pro aplikaci povolena", "The login method: login with email is not enabled for the application": "Metoda přihlášení: přihlášení pomocí emailu není pro aplikaci povolena",
"The login method: login with email is not enabled for the application": "Přihlašovací metoda: přihlášení pomocí e-mailu není pro aplikaci povolena", "The login method: login with face is not enabled for the application": "Metoda přihlášení: přihlášení pomocí obličeje není pro aplikaci povolena",
"The login method: login with face is not enabled for the application": "Přihlašovací metoda: přihlášení pomocí obličeje není pro aplikaci povolena",
"The login method: login with password is not enabled for the application": "Metoda přihlášení: přihlášení pomocí hesla není pro aplikaci povolena", "The login method: login with password is not enabled for the application": "Metoda přihlášení: přihlášení pomocí hesla není pro aplikaci povolena",
"The organization: %s does not exist": "Organizace: %s neexistuje", "The organization: %s does not exist": "Organizace: %s neexistuje",
"The organization: %s has disabled users to signin": "The organization: %s has disabled users to signin",
"The provider: %s does not exist": "Poskytovatel: %s neexistuje",
"The provider: %s is not enabled for the application": "Poskytovatel: %s není pro aplikaci povolen", "The provider: %s is not enabled for the application": "Poskytovatel: %s není pro aplikaci povolen",
"Unauthorized operation": "Neoprávněná operace", "Unauthorized operation": "Neoprávněná operace",
"Unknown authentication type (not password or provider), form = %s": "Neznámý typ autentizace (není heslo nebo poskytovatel), formulář = %s", "Unknown authentication type (not password or provider), form = %s": "Neznámý typ autentizace (není heslo nebo poskytovatel), formulář = %s",
"User's tag: %s is not listed in the application's tags": "Uživatelův tag: %s není uveden v tagech aplikace", "User's tag: %s is not listed in the application's tags": "Štítek uživatele: %s není uveden v štítcích aplikace",
"UserCode Expired": "UserCode vypršel", "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "Placený uživatel %s nemá aktivní nebo čekající předplatné a aplikace: %s nemá výchozí ceny"
"UserCode Invalid": "UserCode je neplatný",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "Placený uživatel %s nemá aktivní ani čekající předplatné a aplikace: %s nemá výchozí ceny",
"the application for user %s is not found": "Aplikace pro uživatele %s nebyla nalezena",
"the organization: %s is not found": "Organizace: %s nebyla nalezena"
}, },
"cas": { "cas": {
"Service %s and %s do not match": "Služba %s a %s se neshodují" "Service %s and %s do not match": "Služba %s a %s se neshodují"
}, },
"check": { "check": {
"%s does not meet the CIDR format requirements: %s": "%s nesplňuje požadavky formátu CIDR: %s",
"Affiliation cannot be blank": "Příslušnost nemůže být prázdná", "Affiliation cannot be blank": "Příslušnost nemůže být prázdná",
"CIDR for IP: %s should not be empty": "CIDR pro IP: %s by neměl být prázdný", "Default code does not match the code's matching rules": "Výchozí kód neodpovídá pravidlům pro shodu kódů",
"Default code does not match the code's matching rules": "Výchozí kód neodpovídá pravidlům shody kódu",
"DisplayName cannot be blank": "Zobrazované jméno nemůže být prázdné", "DisplayName cannot be blank": "Zobrazované jméno nemůže být prázdné",
"DisplayName is not valid real name": "Zobrazované jméno není platné skutečné jméno", "DisplayName is not valid real name": "Zobrazované jméno není platné skutečné jméno",
"Email already exists": "Email již existuje", "Email already exists": "Email již existuje",
@@ -51,60 +41,48 @@
"Empty username.": "Prázdné uživatelské jméno.", "Empty username.": "Prázdné uživatelské jméno.",
"Face data does not exist, cannot log in": "Data obličeje neexistují, nelze se přihlásit", "Face data does not exist, cannot log in": "Data obličeje neexistují, nelze se přihlásit",
"Face data mismatch": "Neshoda dat obličeje", "Face data mismatch": "Neshoda dat obličeje",
"Failed to parse client IP: %s": "Nepodařilo se parsovat IP klienta: %s",
"FirstName cannot be blank": "Křestní jméno nemůže být prázdné", "FirstName cannot be blank": "Křestní jméno nemůže být prázdné",
"Invitation code cannot be blank": "Pozvánkový kód nemůže být prázdný", "Invitation code cannot be blank": "Pozvánkový kód nemůže být prázdný",
"Invitation code exhausted": "Pozvánkový kód je vyčerpán", "Invitation code exhausted": "Pozvánkový kód vyčerpán",
"Invitation code is invalid": "Pozvánkový kód je neplatný", "Invitation code is invalid": "Pozvánkový kód je neplatný",
"Invitation code suspended": "Pozvánkový kód je pozastaven", "Invitation code suspended": "Pozvánkový kód pozastaven",
"LDAP user name or password incorrect": "Uživatelské jméno nebo heslo LDAP je nesprávné", "LDAP user name or password incorrect": "Uživatelské jméno nebo heslo LDAP je nesprávné",
"LastName cannot be blank": "Příjmení nemůže být prázdné", "LastName cannot be blank": "Příjmení nemůže být prázdné",
"Multiple accounts with same uid, please check your ldap server": "Více účtů se stejným uid, prosím zkontrolujte svůj ldap server", "Multiple accounts with same uid, please check your ldap server": "Více účtů se stejným uid, prosím zkontrolujte svůj ldap server",
"Organization does not exist": "Organizace neexistuje", "Organization does not exist": "Organizace neexistuje",
"Password cannot be empty": "Heslo nemůže být prázdné",
"Phone already exists": "Telefon již existuje", "Phone already exists": "Telefon již existuje",
"Phone cannot be empty": "Telefon nemůže být prázdný", "Phone cannot be empty": "Telefon nemůže být prázdný",
"Phone number is invalid": "Telefonní číslo je neplatné", "Phone number is invalid": "Telefonní číslo je neplatné",
"Please register using the email corresponding to the invitation code": "Prosím registrujte se pomocí e-mailu odpovídajícího pozvánkovému kódu", "Please register using the email corresponding to the invitation code": "Prosím zaregistrujte se pomocí emailu odpovídajícího pozvánkovému kódu",
"Please register using the phone corresponding to the invitation code": "Prosím registrujte se pomocí telefonu odpovídajícího pozvánkovému kódu", "Please register using the phone corresponding to the invitation code": "Prosím zaregistrujte se pomocí telefonu odpovídajícího pozvánkovému kódu",
"Please register using the username corresponding to the invitation code": "Prosím registrujte se pomocí uživatelského jména odpovídajícího pozvánkovému kódu", "Please register using the username corresponding to the invitation code": "Prosím zaregistrujte se pomocí uživatelského jména odpovídajícího pozvánkovému kódu",
"Session outdated, please login again": "Relace je zastaralá, prosím přihlaste se znovu", "Session outdated, please login again": "Relace je zastaralá, prosím přihlaste se znovu",
"The invitation code has already been used": "Pozvánkový kód již byl použit", "The invitation code has already been used": "Pozvánkový kód již byl použit",
"The user is forbidden to sign in, please contact the administrator": "Uživatel má zakázáno se přihlásit, prosím kontaktujte administrátora", "The user is forbidden to sign in, please contact the administrator": "Uživatel má zakázáno se přihlásit, prosím kontaktujte administrátora",
"The user: %s doesn't exist in LDAP server": "Uživatel: %s neexistuje na LDAP serveru", "The user: %s doesn't exist in LDAP server": "Uživatel: %s neexistuje na LDAP serveru",
"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.": "Uživatelské jméno může obsahovat pouze alfanumerické znaky, podtržítka nebo pomlčky, nemůže mít po sobě jdoucí pomlčky nebo podtržítka a nemůže začínat nebo končit pomlčkou nebo podtržítkem.", "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.": "Uživatelské jméno může obsahovat pouze alfanumerické znaky, podtržítka nebo pomlčky, nemůže mít po sobě jdoucí pomlčky nebo podtržítka a nemůže začínat nebo končit pomlčkou nebo podtržítkem.",
"The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "Hodnota \\\"%s\\\" pro pole účtu \\\"%s\\\" neodpovídá regexu položky účtu", "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "Hodnota \\\"%s\\\" pro pole účtu \\\"%s\\\" neodpovídá regulárnímu výrazu položky účtu",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "Hodnota \\\"%s\\\" pro pole registrace \\\"%s\\\" neodpovídá regexu položky registrace aplikace \\\"%s\\\"", "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "Hodnota \\\"%s\\\" pro pole registrace \\\"%s\\\" neodpovídá regulárnímu výrazu položky registrace aplikace \\\"%s\\\"",
"Username already exists": "Uživatelské jméno již existuje", "Username already exists": "Uživatelské jméno již existuje",
"Username cannot be an email address": "Uživatelské jméno nemůže být emailová adresa", "Username cannot be an email address": "Uživatelské jméno nemůže být emailová adresa",
"Username cannot contain white spaces": "Uživatelské jméno nemůže obsahovat mezery", "Username cannot contain white spaces": "Uživatelské jméno nemůže obsahovat mezery",
"Username cannot start with a digit": "Uživatelské jméno nemůže začínat číslicí", "Username cannot start with a digit": "Uživatelské jméno nemůže začínat číslicí",
"Username is too long (maximum is 255 characters).": "Uživatelské jméno je příliš dlouhé (maximálně 255 znaků).", "Username is too long (maximum is 39 characters).": "Uživatelské jméno je příliš dlouhé (maximálně 39 znaků).",
"Username must have at least 2 characters": "Uživatelské jméno musí mít alespoň 2 znaky", "Username must have at least 2 characters": "Uživatelské jméno musí mít alespoň 2 znaky",
"Username supports email format. Also 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. Also pay attention to the email format.": "Uživatelské jméno podporuje formát e-mailu. Také uživatelské jméno může obsahovat pouze alfanumerické znaky, podtržítka nebo pomlčky, nemůže mít souvislé pomlčky nebo podtržítka a nemůže začínat nebo končit pomlčkou nebo podtržítkem. Také dbejte na formát e-mailu.",
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Zadali jste špatné heslo nebo kód příliš mnohokrát, prosím počkejte %d minut a zkuste to znovu", "You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Zadali jste špatné heslo nebo kód příliš mnohokrát, prosím počkejte %d minut a zkuste to znovu",
"Your IP address: %s has been banned according to the configuration of: ": "Vaše IP adresa: %s byla zablokována podle konfigurace: ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "Vaše heslo vypršelo. Prosím resetujte si heslo kliknutím na \\\"Zapomněl jsem heslo\\\"",
"Your region is not allow to signup by phone": "Vaše oblast neumožňuje registraci pomocí telefonu", "Your region is not allow to signup by phone": "Vaše oblast neumožňuje registraci pomocí telefonu",
"password or code is incorrect": "heslo nebo kód je nesprávný", "password or code is incorrect": "heslo nebo kód je nesprávné",
"password or code is incorrect, you have %s remaining chances": "heslo nebo kód je nesprávné, máte %s zbývajících pokusů", "password or code is incorrect, you have %d remaining chances": "heslo nebo kód je nesprávné, máte %d zbývajících pokusů",
"unsupported password type: %s": "nepodporovaný typ hesla: %s" "unsupported password type: %s": "nepodporovaný typ hesla: %s"
}, },
"enforcer": {
"the adapter: %s is not found": "adaptér: %s nebyl nalezen"
},
"general": { "general": {
"Failed to import groups": "Nepodařilo se importovat skupiny",
"Failed to import users": "Nepodařilo se importovat uživatele",
"Missing parameter": "Chybějící parametr", "Missing parameter": "Chybějící parametr",
"Only admin user can specify user": "Pouze administrátor může určit uživatele",
"Please login first": "Prosím, přihlaste se nejprve", "Please login first": "Prosím, přihlaste se nejprve",
"The organization: %s should have one application at least": "Organizace: %s by měla mít alespoň jednu aplikaci", "The organization: %s should have one application at least": "Organizace: %s by měla mít alespoň jednu aplikaci",
"The user: %s doesn't exist": "Uživatel: %s neexistuje", "The user: %s doesn't exist": "Uživatel: %s neexistuje",
"Wrong userId": "Nesprávné uživatelské ID",
"don't support captchaProvider: ": "nepodporuje captchaProvider: ", "don't support captchaProvider: ": "nepodporuje captchaProvider: ",
"this operation is not allowed in demo mode": "tato operace není povolena v demo režimu", "this operation is not allowed in demo mode": "tato operace není povolena v demo režimu",
"this operation requires administrator to perform": "tato operace vyžaduje administrátora k provedení" "this operation requires administrator to perform": "tato operace vyžaduje administrátora"
}, },
"ldap": { "ldap": {
"Ldap server exist": "Ldap server existuje" "Ldap server exist": "Ldap server existuje"
@@ -120,8 +98,7 @@
"organization": { "organization": {
"Only admin can modify the %s.": "Pouze administrátor může upravit %s.", "Only admin can modify the %s.": "Pouze administrátor může upravit %s.",
"The %s is immutable.": "%s je neměnný.", "The %s is immutable.": "%s je neměnný.",
"Unknown modify rule %s.": "Neznámé pravidlo úpravy %s.", "Unknown modify rule %s.": "Neznámé pravidlo úpravy %s."
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "Přidání nového uživatele do 'vestavěné' organizace je momentálně zakázáno. Poznámka: všichni uživatelé v 'vestavěné' organizaci jsou globálními správci v Casdooru. Viz docs: https://casdoor.org/docs/basic/core-concepts#how -dělá-casdoor-spravovat-sám. Pokud stále chcete vytvořit uživatele pro 'vestavěnou' organizaci, přejděte na stránku nastavení organizace a aktivujte možnost 'Má souhlas s oprávněními'."
}, },
"permission": { "permission": {
"The permission: \\\"%s\\\" doesn't exist": "Oprávnění: \\\"%s\\\" neexistuje" "The permission: \\\"%s\\\" doesn't exist": "Oprávnění: \\\"%s\\\" neexistuje"
@@ -149,9 +126,6 @@
"The objectKey: %s is not allowed": "objectKey: %s není povolen", "The objectKey: %s is not allowed": "objectKey: %s není povolen",
"The provider type: %s is not supported": "typ poskytovatele: %s není podporován" "The provider type: %s is not supported": "typ poskytovatele: %s není podporován"
}, },
"subscription": {
"Error": "Chyba"
},
"token": { "token": {
"Grant_type: %s is not supported in this application": "Grant_type: %s není v této aplikaci podporován", "Grant_type: %s is not supported in this application": "Grant_type: %s není v této aplikaci podporován",
"Invalid application or wrong clientSecret": "Neplatná aplikace nebo špatný clientSecret", "Invalid application or wrong clientSecret": "Neplatná aplikace nebo špatný clientSecret",
@@ -161,10 +135,10 @@
}, },
"user": { "user": {
"Display name cannot be empty": "Zobrazované jméno nemůže být prázdné", "Display name cannot be empty": "Zobrazované jméno nemůže být prázdné",
"MFA email is enabled but email is empty": "MFA e-mail je povolen, ale e-mail je prázdný", "New password cannot contain blank space.": "Nové heslo nemůže obsahovat prázdné místo."
"MFA phone is enabled but phone number is empty": "MFA telefon je povolen, ale telefonní číslo je prázdné", },
"New password cannot contain blank space.": "Nové heslo nemůže obsahovat prázdné místo.", "user_upload": {
"the user's owner and name should not be empty": "vlastník a jméno uživatele by neměly být prázdné" "Failed to import users": "Nepodařilo se importovat uživatele"
}, },
"util": { "util": {
"No application is found for userId: %s": "Pro userId: %s nebyla nalezena žádná aplikace", "No application is found for userId: %s": "Pro userId: %s nebyla nalezena žádná aplikace",
@@ -174,20 +148,20 @@
"verification": { "verification": {
"Invalid captcha provider.": "Neplatný poskytovatel captcha.", "Invalid captcha provider.": "Neplatný poskytovatel captcha.",
"Phone number is invalid in your region %s": "Telefonní číslo je ve vaší oblasti %s neplatné", "Phone number is invalid in your region %s": "Telefonní číslo je ve vaší oblasti %s neplatné",
"The verification code has already been used!": "Ověřovací kód již byl použit!",
"The verification code has not been sent yet!": "Ověřovací kód ještě nebyl odeslán!", "The verification code has not been sent yet!": "Ověřovací kód ještě nebyl odeslán!",
"The verification code has not been sent yet, or has already been used!": "Ověřovací kód ještě nebyl odeslán, nebo již byl použit!",
"Turing test failed.": "Turingův test selhal.", "Turing test failed.": "Turingův test selhal.",
"Unable to get the email modify rule.": "Nelze získat pravidlo pro úpravu emailu.", "Unable to get the email modify rule.": "Nelze získat pravidlo pro úpravu emailu.",
"Unable to get the phone modify rule.": "Nelze získat pravidlo pro úpravu telefonu.", "Unable to get the phone modify rule.": "Nelze získat pravidlo pro úpravu telefonu.",
"Unknown type": "Neznámý typ", "Unknown type": "Neznámý typ",
"Wrong verification code!": "Špatný ověřovací kód!", "Wrong verification code!": "Špatný ověřovací kód!",
"You should verify your code in %d min!": "Měli byste ověřit svůj kód do %d minut!", "You should verify your code in %d min!": "Měli byste ověřit svůj kód do %d minut!",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "prosím přidejte SMS poskytovatele do seznamu \\\"Providers\\\" pro aplikaci: %s", "please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "prosím přidejte poskytovatele SMS do seznamu \\\"Providers\\\" pro aplikaci: %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "prosím přidejte e-mailového poskytovatele do seznamu \\\"Providers\\\" pro aplikaci: %s", "please add an Email provider to the \\\"Providers\\\" list for the application: %s": "prosím přidejte poskytovatele emailu do seznamu \\\"Providers\\\" pro aplikaci: %s",
"the user does not exist, please sign up first": "uživatel neexistuje, prosím nejprve se zaregistrujte" "the user does not exist, please sign up first": "uživatel neexistuje, prosím nejprve se zaregistrujte"
}, },
"webauthn": { "webauthn": {
"Found no credentials for this user": "Found no credentials for this user", "Found no credentials for this user": "Nebyly nalezeny žádné přihlašovací údaje pro tohoto uživatele",
"Please call WebAuthnSigninBegin first": "Prosím, nejprve zavolejte WebAuthnSigninBegin" "Please call WebAuthnSigninBegin first": "Prosím, nejprve zavolejte WebAuthnSigninBegin"
} }
} }

View File

@@ -7,7 +7,6 @@
}, },
"auth": { "auth": {
"Challenge method should be S256": "Die Challenge-Methode sollte S256 sein", "Challenge method should be S256": "Die Challenge-Methode sollte S256 sein",
"DeviceCode Invalid": "Gerätecode ungültig",
"Failed to create user, user information is invalid: %s": "Es konnte kein Benutzer erstellt werden, da die Benutzerinformationen ungültig sind: %s", "Failed to create user, user information is invalid: %s": "Es konnte kein Benutzer erstellt werden, da die Benutzerinformationen ungültig sind: %s",
"Failed to login in: %s": "Konnte nicht anmelden: %s", "Failed to login in: %s": "Konnte nicht anmelden: %s",
"Invalid token": "Ungültiges Token", "Invalid token": "Ungültiges Token",
@@ -16,95 +15,74 @@
"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": "Das Konto für den Anbieter %s und Benutzernamen %s (%s) existiert nicht und es ist nicht erlaubt, ein neues Konto anzumelden. Bitte wenden Sie sich an Ihren 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": "Das Konto für den Anbieter %s und Benutzernamen %s (%s) existiert nicht und es ist nicht erlaubt, ein neues Konto anzumelden. Bitte wenden Sie sich an Ihren IT-Support",
"The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "Das Konto für den Anbieter %s und Benutzernamen %s (%s) ist bereits mit einem anderen Konto verknüpft: %s (%s)", "The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "Das Konto für den Anbieter %s und Benutzernamen %s (%s) ist bereits mit einem anderen Konto verknüpft: %s (%s)",
"The application: %s does not exist": "Die Anwendung: %s existiert nicht", "The application: %s does not exist": "Die Anwendung: %s existiert nicht",
"The application: %s has disabled users to signin": "The application: %s has disabled users to signin", "The login method: login with LDAP is not enabled for the application": "The login method: login with LDAP is not enabled for the application",
"The login method: login with LDAP is not enabled for the application": "Die Anmeldemethode: Anmeldung mit LDAP ist für die Anwendung nicht aktiviert", "The login method: login with SMS is not enabled for the application": "The login method: login with SMS is not enabled for the application",
"The login method: login with SMS is not enabled for the application": "Die Anmeldemethode: Anmeldung per SMS ist für die Anwendung nicht aktiviert", "The login method: login with email is not enabled for the application": "The login method: login with email is not enabled for the application",
"The login method: login with email is not enabled for the application": "Die Anmeldemethode: Anmeldung per E-Mail ist für die Anwendung nicht aktiviert", "The login method: login with face is not enabled for the application": "The login method: login with face is not enabled for the application",
"The login method: login with face is not enabled for the application": "Die Anmeldemethode: Anmeldung per Gesicht ist für die Anwendung nicht aktiviert",
"The login method: login with password is not enabled for the application": "Die Anmeldeart \"Anmeldung mit Passwort\" ist für die Anwendung nicht aktiviert", "The login method: login with password is not enabled for the application": "Die Anmeldeart \"Anmeldung mit Passwort\" ist für die Anwendung nicht aktiviert",
"The organization: %s does not exist": "Die Organisation: %s existiert nicht", "The organization: %s does not exist": "The organization: %s does not exist",
"The organization: %s has disabled users to signin": "The organization: %s has disabled users to signin",
"The provider: %s does not exist": "Der Anbieter: %s existiert nicht",
"The provider: %s is not enabled for the application": "Der Anbieter: %s ist nicht für die Anwendung aktiviert", "The provider: %s is not enabled for the application": "Der Anbieter: %s ist nicht für die Anwendung aktiviert",
"Unauthorized operation": "Nicht autorisierte Operation", "Unauthorized operation": "Nicht autorisierte Operation",
"Unknown authentication type (not password or provider), form = %s": "Unbekannter Authentifizierungstyp (nicht Passwort oder Anbieter), Formular = %s", "Unknown authentication type (not password or provider), form = %s": "Unbekannter Authentifizierungstyp (nicht Passwort oder Anbieter), Formular = %s",
"User's tag: %s is not listed in the application's tags": "Benutzer-Tag: %s ist nicht in den Tags der Anwendung aufgeführt", "User's tag: %s is not listed in the application's tags": "User's tag: %s is not listed in the application's tags",
"UserCode Expired": "Benutzercode abgelaufen", "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing"
"UserCode Invalid": "Benutzercode ungültig",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "Bezahlter Benutzer %s hat kein aktives oder ausstehendes Abonnement und die Anwendung: %s hat keine Standardpreisgestaltung",
"the application for user %s is not found": "Die Anwendung für Benutzer %s wurde nicht gefunden",
"the organization: %s is not found": "Die Organisation: %s wurde nicht gefunden"
}, },
"cas": { "cas": {
"Service %s and %s do not match": "Service %s und %s stimmen nicht überein" "Service %s and %s do not match": "Service %s und %s stimmen nicht überein"
}, },
"check": { "check": {
"%s does not meet the CIDR format requirements: %s": "%s erfüllt nicht die CIDR-Formatanforderungen: %s",
"Affiliation cannot be blank": "Zugehörigkeit darf nicht leer sein", "Affiliation cannot be blank": "Zugehörigkeit darf nicht leer sein",
"CIDR for IP: %s should not be empty": "CIDR für IP: %s darf nicht leer sein", "Default code does not match the code's matching rules": "Default code does not match the code's matching rules",
"Default code does not match the code's matching rules": "Standardcode entspricht nicht den Übereinstimmungsregeln des Codes",
"DisplayName cannot be blank": "Anzeigename kann nicht leer sein", "DisplayName cannot be blank": "Anzeigename kann nicht leer sein",
"DisplayName is not valid real name": "DisplayName ist kein gültiger Vorname", "DisplayName is not valid real name": "DisplayName ist kein gültiger Vorname",
"Email already exists": "E-Mail existiert bereits", "Email already exists": "E-Mail existiert bereits",
"Email cannot be empty": "E-Mail darf nicht leer sein", "Email cannot be empty": "E-Mail darf nicht leer sein",
"Email is invalid": "E-Mail ist ungültig", "Email is invalid": "E-Mail ist ungültig",
"Empty username.": "Leerer Benutzername.", "Empty username.": "Leerer Benutzername.",
"Face data does not exist, cannot log in": "Gesichtsdaten existieren nicht, Anmeldung nicht möglich", "Face data does not exist, cannot log in": "Face data does not exist, cannot log in",
"Face data mismatch": "Gesichtsdaten stimmen nicht überein", "Face data mismatch": "Face data mismatch",
"Failed to parse client IP: %s": "Fehler beim Parsen der Client-IP: %s",
"FirstName cannot be blank": "Vorname darf nicht leer sein", "FirstName cannot be blank": "Vorname darf nicht leer sein",
"Invitation code cannot be blank": "Einladungscode darf nicht leer sein", "Invitation code cannot be blank": "Invitation code cannot be blank",
"Invitation code exhausted": "Einladungscode aufgebraucht", "Invitation code exhausted": "Invitation code exhausted",
"Invitation code is invalid": "Einladungscode ist ungültig", "Invitation code is invalid": "Invitation code is invalid",
"Invitation code suspended": "Einladungscode ausgesetzt", "Invitation code suspended": "Invitation code suspended",
"LDAP user name or password incorrect": "Ldap Benutzername oder Passwort falsch", "LDAP user name or password incorrect": "Ldap Benutzername oder Passwort falsch",
"LastName cannot be blank": "Nachname darf nicht leer sein", "LastName cannot be blank": "Nachname darf nicht leer sein",
"Multiple accounts with same uid, please check your ldap server": "Mehrere Konten mit derselben uid, bitte überprüfen Sie Ihren LDAP-Server", "Multiple accounts with same uid, please check your ldap server": "Mehrere Konten mit derselben uid, bitte überprüfen Sie Ihren LDAP-Server",
"Organization does not exist": "Organisation existiert nicht", "Organization does not exist": "Organisation existiert nicht",
"Password cannot be empty": "Passwort darf nicht leer sein",
"Phone already exists": "Telefon existiert bereits", "Phone already exists": "Telefon existiert bereits",
"Phone cannot be empty": "Das Telefon darf nicht leer sein", "Phone cannot be empty": "Das Telefon darf nicht leer sein",
"Phone number is invalid": "Die Telefonnummer ist ungültig", "Phone number is invalid": "Die Telefonnummer ist ungültig",
"Please register using the email corresponding to the invitation code": "Bitte registrieren Sie sich mit der E-Mail, die zum Einladungscode gehört", "Please register using the email corresponding to the invitation code": "Please register using the email corresponding to the invitation code",
"Please register using the phone corresponding to the invitation code": "Bitte registrieren Sie sich mit der Telefonnummer, die zum Einladungscode gehört", "Please register using the phone corresponding to the invitation code": "Please register using the phone corresponding to the invitation code",
"Please register using the username corresponding to the invitation code": "Bitte registrieren Sie sich mit dem Benutzernamen, der zum Einladungscode gehört", "Please register using the username corresponding to the invitation code": "Please register using the username corresponding to the invitation code",
"Session outdated, please login again": "Sitzung abgelaufen, bitte erneut anmelden", "Session outdated, please login again": "Sitzung abgelaufen, bitte erneut anmelden",
"The invitation code has already been used": "Der Einladungscode wurde bereits verwendet", "The invitation code has already been used": "The invitation code has already been used",
"The user is forbidden to sign in, please contact the administrator": "Dem Benutzer ist der Zugang verboten, bitte kontaktieren Sie den Administrator", "The user is forbidden to sign in, please contact the administrator": "Dem Benutzer ist der Zugang verboten, bitte kontaktieren Sie den Administrator",
"The user: %s doesn't exist in LDAP server": "Der Benutzer: %s existiert nicht im LDAP-Server", "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.": "Der Benutzername darf nur alphanumerische Zeichen, Unterstriche oder Bindestriche enthalten, keine aufeinanderfolgenden Bindestriche oder Unterstriche haben und darf nicht mit einem Bindestrich oder Unterstrich beginnen oder enden.", "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.": "Der Benutzername darf nur alphanumerische Zeichen, Unterstriche oder Bindestriche enthalten, keine aufeinanderfolgenden Bindestriche oder Unterstriche haben und darf nicht mit einem Bindestrich oder Unterstrich beginnen oder enden.",
"The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "Der Wert \\\"%s\\\" für das Kontenfeld \\\"%s\\\" stimmt nicht mit dem Kontenelement-Regex überein", "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "Der Wert \\\"%s\\\" für das Registrierungsfeld \\\"%s\\\" stimmt nicht mit dem Registrierungselement-Regex der Anwendung \\\"%s\\\" überein", "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"",
"Username already exists": "Benutzername existiert bereits", "Username already exists": "Benutzername existiert bereits",
"Username cannot be an email address": "Benutzername kann keine E-Mail-Adresse sein", "Username cannot be an email address": "Benutzername kann keine E-Mail-Adresse sein",
"Username cannot contain white spaces": "Benutzername darf keine Leerzeichen enthalten", "Username cannot contain white spaces": "Benutzername darf keine Leerzeichen enthalten",
"Username cannot start with a digit": "Benutzername darf nicht mit einer Ziffer beginnen", "Username cannot start with a digit": "Benutzername darf nicht mit einer Ziffer beginnen",
"Username is too long (maximum is 255 characters).": "Benutzername ist zu lang (das Maximum beträgt 255 Zeichen).", "Username is too long (maximum is 39 characters).": "Benutzername ist zu lang (das Maximum beträgt 39 Zeichen).",
"Username must have at least 2 characters": "Benutzername muss mindestens 2 Zeichen lang sein", "Username must have at least 2 characters": "Benutzername muss mindestens 2 Zeichen lang sein",
"Username supports email format. Also 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. Also pay attention to the email format.": "Benutzername unterstützt E-Mail-Format. Der Benutzername darf nur alphanumerische Zeichen, Unterstriche oder Bindestriche enthalten, keine aufeinanderfolgenden Bindestriche oder Unterstriche haben und darf nicht mit einem Bindestrich oder Unterstrich beginnen oder enden. Achten Sie auch auf das E-Mail-Format.",
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Sie haben zu oft das falsche Passwort oder den falschen Code eingegeben. Bitte warten Sie %d Minuten und versuchen Sie es erneut", "You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Sie haben zu oft das falsche Passwort oder den falschen Code eingegeben. Bitte warten Sie %d Minuten und versuchen Sie es erneut",
"Your IP address: %s has been banned according to the configuration of: ": "Ihre IP-Adresse: %s wurde laut Konfiguration gesperrt von: ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "Ihr Passwort ist abgelaufen. Bitte setzen Sie Ihr Passwort zurück, indem Sie auf \\\"Passwort vergessen\\\" klicken",
"Your region is not allow to signup by phone": "Ihre Region ist nicht berechtigt, sich telefonisch anzumelden", "Your region is not allow to signup by phone": "Ihre Region ist nicht berechtigt, sich telefonisch anzumelden",
"password or code is incorrect": "Passwort oder Code ist falsch", "password or code is incorrect": "password or code is incorrect",
"password or code is incorrect, you have %s remaining chances": "Das Passwort oder der Code ist falsch. Du hast noch %s Versuche übrig", "password or code is incorrect, you have %d remaining chances": "Das Passwort oder der Code ist falsch. Du hast noch %d Versuche übrig",
"unsupported password type: %s": "Nicht unterstützter Passworttyp: %s" "unsupported password type: %s": "Nicht unterstützter Passworttyp: %s"
}, },
"enforcer": {
"the adapter: %s is not found": "Der Adapter: %s wurde nicht gefunden"
},
"general": { "general": {
"Failed to import groups": "Gruppen importieren fehlgeschlagen",
"Failed to import users": "Fehler beim Importieren von Benutzern",
"Missing parameter": "Fehlender Parameter", "Missing parameter": "Fehlender Parameter",
"Only admin user can specify user": "Nur Administrator kann Benutzer angeben",
"Please login first": "Bitte zuerst einloggen", "Please login first": "Bitte zuerst einloggen",
"The organization: %s should have one application at least": "Die Organisation: %s sollte mindestens eine Anwendung haben", "The organization: %s should have one application at least": "The organization: %s should have one application at least",
"The user: %s doesn't exist": "Der Benutzer %s existiert nicht", "The user: %s doesn't exist": "Der Benutzer %s existiert nicht",
"Wrong userId": "Falsche Benutzer-ID",
"don't support captchaProvider: ": "Unterstütze captchaProvider nicht:", "don't support captchaProvider: ": "Unterstütze captchaProvider nicht:",
"this operation is not allowed in demo mode": "Dieser Vorgang ist im Demo-Modus nicht erlaubt", "this operation is not allowed in demo mode": "this operation is not allowed in demo mode",
"this operation requires administrator to perform": "Dieser Vorgang erfordert einen Administrator zur Ausführung" "this operation requires administrator to perform": "this operation requires administrator to perform"
}, },
"ldap": { "ldap": {
"Ldap server exist": "Es gibt einen LDAP-Server" "Ldap server exist": "Es gibt einen LDAP-Server"
@@ -120,11 +98,10 @@
"organization": { "organization": {
"Only admin can modify the %s.": "Nur der Administrator kann das %s ändern.", "Only admin can modify the %s.": "Nur der Administrator kann das %s ändern.",
"The %s is immutable.": "Das %s ist unveränderlich.", "The %s is immutable.": "Das %s ist unveränderlich.",
"Unknown modify rule %s.": "Unbekannte Änderungsregel %s.", "Unknown modify rule %s.": "Unbekannte Änderungsregel %s."
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "Das Hinzufügen eines neuen Benutzers zur 'eingebauten' Organisation ist derzeit deaktiviert. Bitte beachten Sie: Alle Benutzer in der 'eingebauten' Organisation sind globale Administratoren in Casdoor. Siehe die Docs: https://casdoor.org/docs/basic/core-concepts#how -does-casdoor-manage-sich selbst. Wenn Sie immer noch einen Benutzer für die 'eingebaute' Organisation erstellen möchten, gehen Sie auf die Einstellungsseite der Organisation und aktivieren Sie die Option 'Habt Berechtigungszustimmung'."
}, },
"permission": { "permission": {
"The permission: \\\"%s\\\" doesn't exist": "Die Berechtigung: \\\"%s\\\" existiert nicht" "The permission: \\\"%s\\\" doesn't exist": "The permission: \\\"%s\\\" doesn't exist"
}, },
"provider": { "provider": {
"Invalid application id": "Ungültige Anwendungs-ID", "Invalid application id": "Ungültige Anwendungs-ID",
@@ -149,9 +126,6 @@
"The objectKey: %s is not allowed": "Der Objektschlüssel %s ist nicht erlaubt", "The objectKey: %s is not allowed": "Der Objektschlüssel %s ist nicht erlaubt",
"The provider type: %s is not supported": "Der Anbieter-Typ %s wird nicht unterstützt" "The provider type: %s is not supported": "Der Anbieter-Typ %s wird nicht unterstützt"
}, },
"subscription": {
"Error": "Fehler"
},
"token": { "token": {
"Grant_type: %s is not supported in this application": "Grant_type: %s wird von dieser Anwendung nicht unterstützt", "Grant_type: %s is not supported in this application": "Grant_type: %s wird von dieser Anwendung nicht unterstützt",
"Invalid application or wrong clientSecret": "Ungültige Anwendung oder falsches clientSecret", "Invalid application or wrong clientSecret": "Ungültige Anwendung oder falsches clientSecret",
@@ -161,10 +135,10 @@
}, },
"user": { "user": {
"Display name cannot be empty": "Anzeigename darf nicht leer sein", "Display name cannot be empty": "Anzeigename darf nicht leer sein",
"MFA email is enabled but email is empty": "MFA-E-Mail ist aktiviert, aber E-Mail ist leer", "New password cannot contain blank space.": "Das neue Passwort darf keine Leerzeichen enthalten."
"MFA phone is enabled but phone number is empty": "MFA-Telefon ist aktiviert, aber Telefonnummer ist leer", },
"New password cannot contain blank space.": "Das neue Passwort darf keine Leerzeichen enthalten.", "user_upload": {
"the user's owner and name should not be empty": "Eigentümer und Name des Benutzers dürfen nicht leer sein" "Failed to import users": "Fehler beim Importieren von Benutzern"
}, },
"util": { "util": {
"No application is found for userId: %s": "Es wurde keine Anwendung für die Benutzer-ID gefunden: %s", "No application is found for userId: %s": "Es wurde keine Anwendung für die Benutzer-ID gefunden: %s",
@@ -174,20 +148,20 @@
"verification": { "verification": {
"Invalid captcha provider.": "Ungültiger Captcha-Anbieter.", "Invalid captcha provider.": "Ungültiger Captcha-Anbieter.",
"Phone number is invalid in your region %s": "Die Telefonnummer ist in Ihrer Region %s ungültig", "Phone number is invalid in your region %s": "Die Telefonnummer ist in Ihrer Region %s ungültig",
"The verification code has already been used!": "Der Verifizierungscode wurde bereits verwendet!", "The verification code has not been sent yet!": "The verification code has not been sent yet!",
"The verification code has not been sent yet!": "Der Verifizierungscode wurde noch nicht gesendet!", "The verification code has not been sent yet, or has already been used!": "The verification code has not been sent yet, or has already been used!",
"Turing test failed.": "Turing-Test fehlgeschlagen.", "Turing test failed.": "Turing-Test fehlgeschlagen.",
"Unable to get the email modify rule.": "Nicht in der Lage, die E-Mail-Änderungsregel zu erhalten.", "Unable to get the email modify rule.": "Nicht in der Lage, die E-Mail-Änderungsregel zu erhalten.",
"Unable to get the phone modify rule.": "Nicht in der Lage, die Telefon-Änderungsregel zu erhalten.", "Unable to get the phone modify rule.": "Nicht in der Lage, die Telefon-Änderungsregel zu erhalten.",
"Unknown type": "Unbekannter Typ", "Unknown type": "Unbekannter Typ",
"Wrong verification code!": "Falscher Bestätigungscode!", "Wrong verification code!": "Falscher Bestätigungscode!",
"You should verify your code in %d min!": "Du solltest deinen Code in %d Minuten verifizieren!", "You should verify your code in %d min!": "Du solltest deinen Code in %d Minuten verifizieren!",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "Bitte fügen Sie einen SMS-Anbieter zur \\\"Providers\\\"-Liste für die Anwendung hinzu: %s", "please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "please add a SMS provider to the \\\"Providers\\\" list for the application: %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "Bitte fügen Sie einen E-Mail-Anbieter zur \\\"Providers\\\"-Liste für die Anwendung hinzu: %s", "please add an Email provider to the \\\"Providers\\\" list for the application: %s": "please add an Email provider to the \\\"Providers\\\" list for the application: %s",
"the user does not exist, please sign up first": "Der Benutzer existiert nicht, bitte zuerst anmelden" "the user does not exist, please sign up first": "Der Benutzer existiert nicht, bitte zuerst anmelden"
}, },
"webauthn": { "webauthn": {
"Found no credentials for this user": "Found no credentials for this user", "Found no credentials for this user": "Es wurden keine Anmeldeinformationen für diesen Benutzer gefunden",
"Please call WebAuthnSigninBegin first": "Bitte rufen Sie zuerst WebAuthnSigninBegin auf" "Please call WebAuthnSigninBegin first": "Bitte rufen Sie zuerst WebAuthnSigninBegin auf"
} }
} }

View File

@@ -7,7 +7,6 @@
}, },
"auth": { "auth": {
"Challenge method should be S256": "Challenge method should be S256", "Challenge method should be S256": "Challenge method should be S256",
"DeviceCode Invalid": "DeviceCode Invalid",
"Failed to create user, user information is invalid: %s": "Failed to create user, user information is invalid: %s", "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", "Failed to login in: %s": "Failed to login in: %s",
"Invalid token": "Invalid token", "Invalid token": "Invalid token",
@@ -16,32 +15,23 @@
"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) 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 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 application: %s does not exist": "The application: %s does not exist",
"The application: %s has disabled users to signin": "The application: %s has disabled users to signin",
"The login method: login with LDAP is not enabled for the application": "The login method: login with LDAP is not enabled for the application", "The login method: login with LDAP is not enabled for the application": "The login method: login with LDAP is not enabled for the application",
"The login method: login with SMS is not enabled for the application": "The login method: login with SMS is not enabled for the application", "The login method: login with SMS is not enabled for the application": "The login method: login with SMS is not enabled for the application",
"The login method: login with email is not enabled for the application": "The login method: login with email is not enabled for the application", "The login method: login with email is not enabled for the application": "The login method: login with email is not enabled for the application",
"The login method: login with face is not enabled for the application": "The login method: login with face is not enabled for the application", "The login method: login with face is not enabled for the application": "The login method: login with face is not enabled for the application",
"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 login method: login with password is not enabled for the application": "The login method: login with password is not enabled for the application",
"The organization: %s does not exist": "The organization: %s does not exist", "The organization: %s does not exist": "The organization: %s does not exist",
"The organization: %s has disabled users to signin": "The organization: %s has disabled users to signin",
"The provider: %s does not exist": "The provider: %s does not exist",
"The provider: %s is not enabled for the application": "The provider: %s 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", "Unauthorized operation": "Unauthorized operation",
"Unknown authentication type (not password or provider), form = %s": "Unknown authentication type (not password or provider), form = %s", "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", "User's tag: %s is not listed in the application's tags": "User's tag: %s is not listed in the application's tags",
"UserCode Expired": "UserCode Expired", "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing"
"UserCode Invalid": "UserCode Invalid",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing",
"the application for user %s is not found": "the application for user %s is not found",
"the organization: %s is not found": "the organization: %s is not found"
}, },
"cas": { "cas": {
"Service %s and %s do not match": "Service %s and %s do not match" "Service %s and %s do not match": "Service %s and %s do not match"
}, },
"check": { "check": {
"%s does not meet the CIDR format requirements: %s": "%s does not meet the CIDR format requirements: %s",
"Affiliation cannot be blank": "Affiliation cannot be blank", "Affiliation cannot be blank": "Affiliation cannot be blank",
"CIDR for IP: %s should not be empty": "CIDR for IP: %s should not be empty",
"Default code does not match the code's matching rules": "Default code does not match the code's matching rules", "Default code does not match the code's matching rules": "Default code does not match the code's matching rules",
"DisplayName cannot be blank": "DisplayName cannot be blank", "DisplayName cannot be blank": "DisplayName cannot be blank",
"DisplayName is not valid real name": "DisplayName is not valid real name", "DisplayName is not valid real name": "DisplayName is not valid real name",
@@ -51,7 +41,6 @@
"Empty username.": "Empty username.", "Empty username.": "Empty username.",
"Face data does not exist, cannot log in": "Face data does not exist, cannot log in", "Face data does not exist, cannot log in": "Face data does not exist, cannot log in",
"Face data mismatch": "Face data mismatch", "Face data mismatch": "Face data mismatch",
"Failed to parse client IP: %s": "Failed to parse client IP: %s",
"FirstName cannot be blank": "FirstName cannot be blank", "FirstName cannot be blank": "FirstName cannot be blank",
"Invitation code cannot be blank": "Invitation code cannot be blank", "Invitation code cannot be blank": "Invitation code cannot be blank",
"Invitation code exhausted": "Invitation code exhausted", "Invitation code exhausted": "Invitation code exhausted",
@@ -61,7 +50,6 @@
"LastName cannot be blank": "LastName cannot be blank", "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", "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", "Organization does not exist": "Organization does not exist",
"Password cannot be empty": "Password cannot be empty",
"Phone already exists": "Phone already exists", "Phone already exists": "Phone already exists",
"Phone cannot be empty": "Phone cannot be empty", "Phone cannot be empty": "Phone cannot be empty",
"Phone number is invalid": "Phone number is invalid", "Phone number is invalid": "Phone number is invalid",
@@ -79,29 +67,19 @@
"Username cannot be an email address": "Username cannot be an email address", "Username cannot be an email address": "Username cannot be an email address",
"Username cannot contain white spaces": "Username cannot contain white spaces", "Username cannot contain white spaces": "Username cannot contain white spaces",
"Username cannot start with a digit": "Username cannot start with a digit", "Username cannot start with a digit": "Username cannot start with a digit",
"Username is too long (maximum is 255 characters).": "Username is too long (maximum is 255 characters).", "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", "Username must have at least 2 characters": "Username must have at least 2 characters",
"Username supports email format. Also 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. Also pay attention to the email format.": "Username supports email format. Also 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. Also pay attention to the email format.",
"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", "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 IP address: %s has been banned according to the configuration of: ": "Your IP address: %s has been banned according to the configuration of: ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"",
"Your region is not allow to signup by phone": "Your region is not allow to signup by phone", "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": "password or code is incorrect",
"password or code is incorrect, you have %s remaining chances": "password or code is incorrect, you have %s remaining chances", "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" "unsupported password type: %s": "unsupported password type: %s"
}, },
"enforcer": {
"the adapter: %s is not found": "the adapter: %s is not found"
},
"general": { "general": {
"Failed to import groups": "Failed to import groups",
"Failed to import users": "Failed to import users",
"Missing parameter": "Missing parameter", "Missing parameter": "Missing parameter",
"Only admin user can specify user": "Only admin user can specify user",
"Please login first": "Please login first", "Please login first": "Please login first",
"The organization: %s should have one application at least": "The organization: %s should have one application at least", "The organization: %s should have one application at least": "The organization: %s should have one application at least",
"The user: %s doesn't exist": "The user: %s doesn't exist", "The user: %s doesn't exist": "The user: %s doesn't exist",
"Wrong userId": "Wrong userId",
"don't support captchaProvider: ": "don't support captchaProvider: ", "don't support captchaProvider: ": "don't support captchaProvider: ",
"this operation is not allowed in demo mode": "this operation is not allowed in demo mode", "this operation is not allowed in demo mode": "this operation is not allowed in demo mode",
"this operation requires administrator to perform": "this operation requires administrator to perform" "this operation requires administrator to perform": "this operation requires administrator to perform"
@@ -120,8 +98,7 @@
"organization": { "organization": {
"Only admin can modify the %s.": "Only admin can modify the %s.", "Only admin can modify the %s.": "Only admin can modify the %s.",
"The %s is immutable.": "The %s is immutable.", "The %s is immutable.": "The %s is immutable.",
"Unknown modify rule %s.": "Unknown modify rule %s.", "Unknown modify rule %s.": "Unknown modify rule %s."
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option."
}, },
"permission": { "permission": {
"The permission: \\\"%s\\\" doesn't exist": "The permission: \\\"%s\\\" doesn't exist" "The permission: \\\"%s\\\" doesn't exist": "The permission: \\\"%s\\\" doesn't exist"
@@ -149,9 +126,6 @@
"The objectKey: %s is not allowed": "The objectKey: %s is not allowed", "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" "The provider type: %s is not supported": "The provider type: %s is not supported"
}, },
"subscription": {
"Error": "Error"
},
"token": { "token": {
"Grant_type: %s is not supported in this application": "Grant_type: %s is not supported in this application", "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 application or wrong clientSecret": "Invalid application or wrong clientSecret",
@@ -161,10 +135,10 @@
}, },
"user": { "user": {
"Display name cannot be empty": "Display name cannot be empty", "Display name cannot be empty": "Display name cannot be empty",
"MFA email is enabled but email is empty": "MFA email is enabled but email is empty", "New password cannot contain blank space.": "New password cannot contain blank space."
"MFA phone is enabled but phone number is empty": "MFA phone is enabled but phone number is empty", },
"New password cannot contain blank space.": "New password cannot contain blank space.", "user_upload": {
"the user's owner and name should not be empty": "the user's owner and name should not be empty" "Failed to import users": "Failed to import users"
}, },
"util": { "util": {
"No application is found for userId: %s": "No application is found for userId: %s", "No application is found for userId: %s": "No application is found for userId: %s",
@@ -174,8 +148,8 @@
"verification": { "verification": {
"Invalid captcha provider.": "Invalid captcha provider.", "Invalid captcha provider.": "Invalid captcha provider.",
"Phone number is invalid in your region %s": "Phone number is invalid in your region %s", "Phone number is invalid in your region %s": "Phone number is invalid in your region %s",
"The verification code has already been used!": "The verification code has already been used!",
"The verification code has not been sent yet!": "The verification code has not been sent yet!", "The verification code has not been sent yet!": "The verification code has not been sent yet!",
"The verification code has not been sent yet, or has already been used!": "The verification code has not been sent yet, or has already been used!",
"Turing test failed.": "Turing test failed.", "Turing test failed.": "Turing test failed.",
"Unable to get the email modify rule.": "Unable to get the email modify rule.", "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.", "Unable to get the phone modify rule.": "Unable to get the phone modify rule.",

View File

@@ -7,7 +7,6 @@
}, },
"auth": { "auth": {
"Challenge method should be S256": "El método de desafío debe ser S256", "Challenge method should be S256": "El método de desafío debe ser S256",
"DeviceCode Invalid": "Código de dispositivo inválido",
"Failed to create user, user information is invalid: %s": "No se pudo crear el usuario, la información del usuario es inválida: %s", "Failed to create user, user information is invalid: %s": "No se pudo crear el usuario, la información del usuario es inválida: %s",
"Failed to login in: %s": "No se ha podido iniciar sesión en: %s", "Failed to login in: %s": "No se ha podido iniciar sesión en: %s",
"Invalid token": "Token inválido", "Invalid token": "Token inválido",
@@ -16,95 +15,74 @@
"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": "La cuenta para el proveedor: %s y el nombre de usuario: %s (%s) no existe y no se permite registrarse como una nueva cuenta, por favor contacte a su soporte de TI", "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": "La cuenta para el proveedor: %s y el nombre de usuario: %s (%s) no existe y no se permite registrarse como una nueva cuenta, por favor contacte a su soporte de TI",
"The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "La cuenta para proveedor: %s y nombre de usuario: %s (%s) ya está vinculada a otra cuenta: %s (%s)", "The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "La cuenta para proveedor: %s y nombre de usuario: %s (%s) ya está vinculada a otra cuenta: %s (%s)",
"The application: %s does not exist": "La aplicación: %s no existe", "The application: %s does not exist": "La aplicación: %s no existe",
"The application: %s has disabled users to signin": "The application: %s has disabled users to signin", "The login method: login with LDAP is not enabled for the application": "The login method: login with LDAP is not enabled for the application",
"The login method: login with LDAP is not enabled for the application": "El método de inicio de sesión: inicio de sesión con LDAP no está habilitado para la aplicación", "The login method: login with SMS is not enabled for the application": "The login method: login with SMS is not enabled for the application",
"The login method: login with SMS is not enabled for the application": "El método de inicio de sesión: inicio de sesión con SMS no está habilitado para la aplicación", "The login method: login with email is not enabled for the application": "The login method: login with email is not enabled for the application",
"The login method: login with email is not enabled for the application": "El método de inicio de sesión: inicio de sesión con correo electrónico no está habilitado para la aplicación", "The login method: login with face is not enabled for the application": "The login method: login with face is not enabled for the application",
"The login method: login with face is not enabled for the application": "El método de inicio de sesión: inicio de sesión con reconocimiento facial no está habilitado para la aplicación",
"The login method: login with password is not enabled for the application": "El método de inicio de sesión: inicio de sesión con contraseña no está habilitado para la aplicación", "The login method: login with password is not enabled for the application": "El método de inicio de sesión: inicio de sesión con contraseña no está habilitado para la aplicación",
"The organization: %s does not exist": "La organización: %s no existe", "The organization: %s does not exist": "The organization: %s does not exist",
"The organization: %s has disabled users to signin": "The organization: %s has disabled users to signin",
"The provider: %s does not exist": "El proveedor: %s no existe",
"The provider: %s is not enabled for the application": "El proveedor: %s no está habilitado para la aplicación", "The provider: %s is not enabled for the application": "El proveedor: %s no está habilitado para la aplicación",
"Unauthorized operation": "Operación no autorizada", "Unauthorized operation": "Operación no autorizada",
"Unknown authentication type (not password or provider), form = %s": "Tipo de autenticación desconocido (no es contraseña o proveedor), formulario = %s", "Unknown authentication type (not password or provider), form = %s": "Tipo de autenticación desconocido (no es contraseña o proveedor), formulario = %s",
"User's tag: %s is not listed in the application's tags": "La etiqueta del usuario: %s no está incluida en las etiquetas de la aplicación", "User's tag: %s is not listed in the application's tags": "User's tag: %s is not listed in the application's tags",
"UserCode Expired": "Código de usuario expirado", "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing"
"UserCode Invalid": "Código de usuario inválido",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "El usuario de pago %s no tiene una suscripción activa o pendiente y la aplicación: %s no tiene precio predeterminado",
"the application for user %s is not found": "no se encontró la aplicación para el usuario %s",
"the organization: %s is not found": "no se encontró la organización: %s"
}, },
"cas": { "cas": {
"Service %s and %s do not match": "Los servicios %s y %s no coinciden" "Service %s and %s do not match": "Los servicios %s y %s no coinciden"
}, },
"check": { "check": {
"%s does not meet the CIDR format requirements: %s": "%s no cumple con los requisitos del formato CIDR: %s",
"Affiliation cannot be blank": "Afiliación no puede estar en blanco", "Affiliation cannot be blank": "Afiliación no puede estar en blanco",
"CIDR for IP: %s should not be empty": "El CIDR para la IP: %s no debe estar vacío", "Default code does not match the code's matching rules": "Default code does not match the code's matching rules",
"Default code does not match the code's matching rules": "El código predeterminado no coincide con las reglas de coincidencia de códigos",
"DisplayName cannot be blank": "El nombre de visualización no puede estar en blanco", "DisplayName cannot be blank": "El nombre de visualización no puede estar en blanco",
"DisplayName is not valid real name": "El nombre de pantalla no es un nombre real válido", "DisplayName is not valid real name": "El nombre de pantalla no es un nombre real válido",
"Email already exists": "El correo electrónico ya existe", "Email already exists": "El correo electrónico ya existe",
"Email cannot be empty": "El correo electrónico no puede estar vacío", "Email cannot be empty": "El correo electrónico no puede estar vacío",
"Email is invalid": "El correo electrónico no es válido", "Email is invalid": "El correo electrónico no es válido",
"Empty username.": "Nombre de usuario vacío.", "Empty username.": "Nombre de usuario vacío.",
"Face data does not exist, cannot log in": "No existen datos faciales, no se puede iniciar sesión", "Face data does not exist, cannot log in": "Face data does not exist, cannot log in",
"Face data mismatch": "Los datos faciales no coinciden", "Face data mismatch": "Face data mismatch",
"Failed to parse client IP: %s": "Error al analizar la IP del cliente: %s",
"FirstName cannot be blank": "El nombre no puede estar en blanco", "FirstName cannot be blank": "El nombre no puede estar en blanco",
"Invitation code cannot be blank": "El código de invitación no puede estar vacío", "Invitation code cannot be blank": "Invitation code cannot be blank",
"Invitation code exhausted": "Código de invitación agotado", "Invitation code exhausted": "Invitation code exhausted",
"Invitation code is invalid": "Código de invitación inválido", "Invitation code is invalid": "Invitation code is invalid",
"Invitation code suspended": "Código de invitación suspendido", "Invitation code suspended": "Invitation code suspended",
"LDAP user name or password incorrect": "Nombre de usuario o contraseña de Ldap incorrectos", "LDAP user name or password incorrect": "Nombre de usuario o contraseña de Ldap incorrectos",
"LastName cannot be blank": "El apellido no puede estar en blanco", "LastName cannot be blank": "El apellido no puede estar en blanco",
"Multiple accounts with same uid, please check your ldap server": "Cuentas múltiples con el mismo uid, por favor revise su servidor ldap", "Multiple accounts with same uid, please check your ldap server": "Cuentas múltiples con el mismo uid, por favor revise su servidor ldap",
"Organization does not exist": "La organización no existe", "Organization does not exist": "La organización no existe",
"Password cannot be empty": "La contraseña no puede estar vacía",
"Phone already exists": "El teléfono ya existe", "Phone already exists": "El teléfono ya existe",
"Phone cannot be empty": "Teléfono no puede estar vacío", "Phone cannot be empty": "Teléfono no puede estar vacío",
"Phone number is invalid": "El número de teléfono no es válido", "Phone number is invalid": "El número de teléfono no es válido",
"Please register using the email corresponding to the invitation code": "Regístrese usando el correo electrónico correspondiente al código de invitación", "Please register using the email corresponding to the invitation code": "Please register using the email corresponding to the invitation code",
"Please register using the phone corresponding to the invitation code": "Regístrese usando el número de teléfono correspondiente al código de invitación", "Please register using the phone corresponding to the invitation code": "Please register using the phone corresponding to the invitation code",
"Please register using the username corresponding to the invitation code": "Regístrese usando el nombre de usuario correspondiente al código de invitación", "Please register using the username corresponding to the invitation code": "Please register using the username corresponding to the invitation code",
"Session outdated, please login again": "Sesión expirada, por favor vuelva a iniciar sesión", "Session outdated, please login again": "Sesión expirada, por favor vuelva a iniciar sesión",
"The invitation code has already been used": "El código de invitación ya ha sido utilizado", "The invitation code has already been used": "The invitation code has already been used",
"The user is forbidden to sign in, please contact the administrator": "El usuario no está autorizado a iniciar sesión, por favor contacte al administrador", "The user is forbidden to sign in, please contact the administrator": "El usuario no está autorizado a iniciar sesión, por favor contacte al administrador",
"The user: %s doesn't exist in LDAP server": "El usuario: %s no existe en el servidor LDAP", "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.": "El nombre de usuario solo puede contener caracteres alfanuméricos, guiones bajos o guiones, no puede tener guiones o subrayados consecutivos, y no puede comenzar ni terminar con un guión o subrayado.", "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.": "El nombre de usuario solo puede contener caracteres alfanuméricos, guiones bajos o guiones, no puede tener guiones o subrayados consecutivos, y no puede comenzar ni terminar con un guión o subrayado.",
"The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "El valor \\\"%s\\\" para el campo de cuenta \\\"%s\\\" no coincide con la expresión regular del elemento de cuenta", "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "El valor \\\"%s\\\" para el campo de registro \\\"%s\\\" no coincide con la expresión regular del elemento de registro de la aplicación \\\"%s\\\"", "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"",
"Username already exists": "El nombre de usuario ya existe", "Username already exists": "El nombre de usuario ya existe",
"Username cannot be an email address": "Nombre de usuario no puede ser una dirección de correo electrónico", "Username cannot be an email address": "Nombre de usuario no puede ser una dirección de correo electrónico",
"Username cannot contain white spaces": "Nombre de usuario no puede contener espacios en blanco", "Username cannot contain white spaces": "Nombre de usuario no puede contener espacios en blanco",
"Username cannot start with a digit": "El nombre de usuario no puede empezar con un dígito", "Username cannot start with a digit": "El nombre de usuario no puede empezar con un dígito",
"Username is too long (maximum is 255 characters).": "El nombre de usuario es demasiado largo (el máximo es de 255 caracteres).", "Username is too long (maximum is 39 characters).": "El nombre de usuario es demasiado largo (el máximo es de 39 caracteres).",
"Username must have at least 2 characters": "Nombre de usuario debe tener al menos 2 caracteres", "Username must have at least 2 characters": "Nombre de usuario debe tener al menos 2 caracteres",
"Username supports email format. Also 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. Also pay attention to the email format.": "El nombre de usuario admite formato de correo electrónico. Además, el nombre de usuario solo puede contener caracteres alfanuméricos, guiones bajos o guiones, no puede tener guiones bajos o guiones consecutivos y no puede comenzar ni terminar con un guión o guión bajo. También preste atención al formato del correo electrónico.",
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Has ingresado la contraseña o código incorrecto demasiadas veces, por favor espera %d minutos e intenta de nuevo", "You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Has ingresado la contraseña o código incorrecto demasiadas veces, por favor espera %d minutos e intenta de nuevo",
"Your IP address: %s has been banned according to the configuration of: ": "Su dirección IP: %s ha sido bloqueada según la configuración de: ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "Su contraseña ha expirado. Restablezca su contraseña haciendo clic en \\\"Olvidé mi contraseña\\\"",
"Your region is not allow to signup by phone": "Tu región no está permitida para registrarse por teléfono", "Your region is not allow to signup by phone": "Tu región no está permitida para registrarse por teléfono",
"password or code is incorrect": "contraseña o código incorrecto", "password or code is incorrect": "password or code is incorrect",
"password or code is incorrect, you have %s remaining chances": "Contraseña o código incorrecto, tienes %s intentos restantes", "password or code is incorrect, you have %d remaining chances": "Contraseña o código incorrecto, tienes %d intentos restantes",
"unsupported password type: %s": "Tipo de contraseña no compatible: %s" "unsupported password type: %s": "Tipo de contraseña no compatible: %s"
}, },
"enforcer": {
"the adapter: %s is not found": "no se encontró el adaptador: %s"
},
"general": { "general": {
"Failed to import groups": "Error al importar grupos",
"Failed to import users": "Error al importar usuarios",
"Missing parameter": "Parámetro faltante", "Missing parameter": "Parámetro faltante",
"Only admin user can specify user": "Solo el usuario administrador puede especificar usuario",
"Please login first": "Por favor, inicia sesión primero", "Please login first": "Por favor, inicia sesión primero",
"The organization: %s should have one application at least": "La organización: %s debe tener al menos una aplicación", "The organization: %s should have one application at least": "The organization: %s should have one application at least",
"The user: %s doesn't exist": "El usuario: %s no existe", "The user: %s doesn't exist": "El usuario: %s no existe",
"Wrong userId": "ID de usuario incorrecto",
"don't support captchaProvider: ": "No apoyo a captchaProvider", "don't support captchaProvider: ": "No apoyo a captchaProvider",
"this operation is not allowed in demo mode": "esta operación no está permitida en modo de demostración", "this operation is not allowed in demo mode": "this operation is not allowed in demo mode",
"this operation requires administrator to perform": "esta operación requiere que el administrador la realice" "this operation requires administrator to perform": "this operation requires administrator to perform"
}, },
"ldap": { "ldap": {
"Ldap server exist": "El servidor LDAP existe" "Ldap server exist": "El servidor LDAP existe"
@@ -120,11 +98,10 @@
"organization": { "organization": {
"Only admin can modify the %s.": "Solo el administrador puede modificar los %s.", "Only admin can modify the %s.": "Solo el administrador puede modificar los %s.",
"The %s is immutable.": "El %s es inmutable.", "The %s is immutable.": "El %s es inmutable.",
"Unknown modify rule %s.": "Regla de modificación desconocida %s.", "Unknown modify rule %s.": "Regla de modificación desconocida %s."
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "La adición de un nuevo usuario a la organización 'integrada' está actualmente deshabilitada. Tenga en cuenta: todos los usuarios de la organización 'integrada' son administradores globales en Casdoor. Consulte los docs: https://casdoor.org/docs/basic/core-concepts#how -does-casdoor-manage-itself. Si todavía desea crear un usuario para la organización 'integrada', vaya a la página de configuración de la organización y habilite la opción 'Tiene consentimiento de privilegios'."
}, },
"permission": { "permission": {
"The permission: \\\"%s\\\" doesn't exist": "El permiso: \\\"%s\\\" no existe" "The permission: \\\"%s\\\" doesn't exist": "The permission: \\\"%s\\\" doesn't exist"
}, },
"provider": { "provider": {
"Invalid application id": "Identificación de aplicación no válida", "Invalid application id": "Identificación de aplicación no válida",
@@ -149,9 +126,6 @@
"The objectKey: %s is not allowed": "El objectKey: %s no está permitido", "The objectKey: %s is not allowed": "El objectKey: %s no está permitido",
"The provider type: %s is not supported": "El tipo de proveedor: %s no es compatible" "The provider type: %s is not supported": "El tipo de proveedor: %s no es compatible"
}, },
"subscription": {
"Error": "Error"
},
"token": { "token": {
"Grant_type: %s is not supported in this application": "El tipo de subvención: %s no es compatible con esta aplicación", "Grant_type: %s is not supported in this application": "El tipo de subvención: %s no es compatible con esta aplicación",
"Invalid application or wrong clientSecret": "Solicitud inválida o clientSecret incorrecto", "Invalid application or wrong clientSecret": "Solicitud inválida o clientSecret incorrecto",
@@ -161,10 +135,10 @@
}, },
"user": { "user": {
"Display name cannot be empty": "El nombre de pantalla no puede estar vacío", "Display name cannot be empty": "El nombre de pantalla no puede estar vacío",
"MFA email is enabled but email is empty": "El correo electrónico MFA está habilitado pero el correo está vacío", "New password cannot contain blank space.": "La nueva contraseña no puede contener espacios en blanco."
"MFA phone is enabled but phone number is empty": "El teléfono MFA está habilitado pero el número de teléfono está vacío", },
"New password cannot contain blank space.": "La nueva contraseña no puede contener espacios en blanco.", "user_upload": {
"the user's owner and name should not be empty": "el propietario y el nombre del usuario no deben estar vacíos" "Failed to import users": "Error al importar usuarios"
}, },
"util": { "util": {
"No application is found for userId: %s": "No se encuentra ninguna aplicación para el Id de usuario: %s", "No application is found for userId: %s": "No se encuentra ninguna aplicación para el Id de usuario: %s",
@@ -174,20 +148,20 @@
"verification": { "verification": {
"Invalid captcha provider.": "Proveedor de captcha no válido.", "Invalid captcha provider.": "Proveedor de captcha no válido.",
"Phone number is invalid in your region %s": "El número de teléfono es inválido en tu región %s", "Phone number is invalid in your region %s": "El número de teléfono es inválido en tu región %s",
"The verification code has already been used!": "¡El código de verificación ya ha sido utilizado!", "The verification code has not been sent yet!": "The verification code has not been sent yet!",
"The verification code has not been sent yet!": "¡El código de verificación aún no ha sido enviado!", "The verification code has not been sent yet, or has already been used!": "The verification code has not been sent yet, or has already been used!",
"Turing test failed.": "El test de Turing falló.", "Turing test failed.": "El test de Turing falló.",
"Unable to get the email modify rule.": "No se puede obtener la regla de modificación de correo electrónico.", "Unable to get the email modify rule.": "No se puede obtener la regla de modificación de correo electrónico.",
"Unable to get the phone modify rule.": "No se pudo obtener la regla de modificación del teléfono.", "Unable to get the phone modify rule.": "No se pudo obtener la regla de modificación del teléfono.",
"Unknown type": "Tipo desconocido", "Unknown type": "Tipo desconocido",
"Wrong verification code!": "¡Código de verificación incorrecto!", "Wrong verification code!": "¡Código de verificación incorrecto!",
"You should verify your code in %d min!": "¡Deberías verificar tu código en %d minutos!", "You should verify your code in %d min!": "¡Deberías verificar tu código en %d minutos!",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "agregue un proveedor de SMS a la lista \\\"Proveedores\\\" para la aplicación: %s", "please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "please add a SMS provider to the \\\"Providers\\\" list for the application: %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "agregue un proveedor de correo electrónico a la lista \\\"Proveedores\\\" para la aplicación: %s", "please add an Email provider to the \\\"Providers\\\" list for the application: %s": "please add an Email provider to the \\\"Providers\\\" list for the application: %s",
"the user does not exist, please sign up first": "El usuario no existe, por favor regístrese primero" "the user does not exist, please sign up first": "El usuario no existe, por favor regístrese primero"
}, },
"webauthn": { "webauthn": {
"Found no credentials for this user": "Found no credentials for this user", "Found no credentials for this user": "No se encontraron credenciales para este usuario",
"Please call WebAuthnSigninBegin first": "Por favor, llama primero a WebAuthnSigninBegin" "Please call WebAuthnSigninBegin first": "Por favor, llama primero a WebAuthnSigninBegin"
} }
} }

View File

@@ -1,193 +1,167 @@
{ {
"account": { "account": {
"Failed to add user": "عدم موفقیت در افزودن کاربر", "Failed to add user": "Failed to add user",
"Get init score failed, error: %w": "عدم موفقیت در دریافت امتیاز اولیه، خطا: %w", "Get init score failed, error: %w": "Get init score failed, error: %w",
"Please sign out first": "لطفاً ابتدا خارج شوید", "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": "The application does not allow to sign up new account"
}, },
"auth": { "auth": {
"Challenge method should be S256": "روش چالش باید S256 باشد", "Challenge method should be S256": "Challenge method should be S256",
"DeviceCode Invalid": "کد دستگاه نامعتبر است", "Failed to create user, user information is invalid: %s": "Failed to create user, user information is invalid: %s",
"Failed to create user, user information is invalid: %s": "عدم موفقیت در ایجاد کاربر، اطلاعات کاربر نامعتبر است: %s", "Failed to login in: %s": "Failed to login in: %s",
"Failed to login in: %s": "عدم موفقیت در ورود: %s", "Invalid token": "Invalid token",
"Invalid token": "توکن نامعتبر", "State expected: %s, but got: %s": "State expected: %s, but got: %s",
"State expected: %s, but got: %s": "وضعیت مورد انتظار: %s، اما دریافت شد: %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 via %%s, please use another way to sign up": "حساب برای ارائه‌دهنده: %s و نام کاربری: %s (%s) وجود ندارد و مجاز به ثبت‌نام به‌عنوان حساب جدید از طریق %%s نیست، لطفاً از روش دیگری برای ثبت‌نام استفاده کنید", "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) does not exist and is not allowed to sign up as new account, please contact your IT support": "حساب برای ارائه‌دهنده: %s و نام کاربری: %s (%s) وجود ندارد و مجاز به ثبت‌نام به‌عنوان حساب جدید نیست، لطفاً با پشتیبانی IT خود تماس بگیرید", "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 account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "حساب برای ارائه‌دهنده: %s و نام کاربری: %s (%s) در حال حاضر به حساب دیگری مرتبط است: %s (%s)", "The application: %s does not exist": "The application: %s does not exist",
"The application: %s does not exist": "برنامه: %s وجود ندارد", "The login method: login with LDAP is not enabled for the application": "The login method: login with LDAP is not enabled for the application",
"The application: %s has disabled users to signin": "The application: %s has disabled users to signin", "The login method: login with SMS is not enabled for the application": "The login method: login with SMS is not enabled for the application",
"The login method: login with LDAP is not enabled for the application": "روش ورود: ورود با LDAP برای برنامه فعال نیست", "The login method: login with email is not enabled for the application": "The login method: login with email is not enabled for the application",
"The login method: login with SMS is not enabled for the application": "روش ورود: ورود با پیامک برای برنامه فعال نیست", "The login method: login with face is not enabled for the application": "The login method: login with face is not enabled for the application",
"The login method: login with email is not enabled for the application": "روش ورود: ورود با ایمیل برای برنامه فعال نیست", "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 login method: login with face is not enabled for the application": "روش ورود: ورود با چهره برای برنامه فعال نیست", "The organization: %s does not exist": "The organization: %s does not exist",
"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",
"The organization: %s does not exist": "سازمان: %s وجود ندارد", "Unauthorized operation": "Unauthorized operation",
"The organization: %s has disabled users to signin": "The organization: %s has disabled users to signin", "Unknown authentication type (not password or provider), form = %s": "Unknown authentication type (not password or provider), form = %s",
"The provider: %s does not exist": "ارائه‌کننده: %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",
"The provider: %s is not enabled for the application": "ارائه‌دهنده: %s برای برنامه فعال نیست", "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing"
"Unauthorized operation": "عملیات غیرمجاز",
"Unknown authentication type (not password or provider), form = %s": "نوع احراز هویت ناشناخته (نه رمز عبور و نه ارائه‌دهنده)، فرم = %s",
"User's tag: %s is not listed in the application's tags": "برچسب کاربر: %s در برچسب‌های برنامه فهرست نشده است",
"UserCode Expired": "کد کاربر منقضی شده است",
"UserCode Invalid": "کد کاربر نامعتبر است",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "کاربر پرداختی %s اشتراک فعال یا در انتظار ندارد و برنامه: %s قیمت‌گذاری پیش‌فرض ندارد",
"the application for user %s is not found": " برنامه برای کاربر %s پیدا نشد",
"the organization: %s is not found": "سازمان: %s پیدا نشد"
}, },
"cas": { "cas": {
"Service %s and %s do not match": "سرویس %s و %s مطابقت ندارند" "Service %s and %s do not match": "Service %s and %s do not match"
}, },
"check": { "check": {
"%s does not meet the CIDR format requirements: %s": "%s با نیازهای فرمت CIDR مطابقت ندارد: %s", "Affiliation cannot be blank": "Affiliation cannot be blank",
"Affiliation cannot be blank": "وابستگی نمی‌تواند خالی باشد", "Default code does not match the code's matching rules": "Default code does not match the code's matching rules",
"CIDR for IP: %s should not be empty": "CIDR برای IP: %s نباید خالی باشد", "DisplayName cannot be blank": "DisplayName cannot be blank",
"Default code does not match the code's matching rules": "کد پیش‌فرض با قوانین تطبیق کد مطابقت ندارد", "DisplayName is not valid real name": "DisplayName is not valid real name",
"DisplayName cannot be blank": "نام نمایشی نمی‌تواند خالی باشد", "Email already exists": "Email already exists",
"DisplayName is not valid real name": "نام نمایشی یک نام واقعی معتبر نیست", "Email cannot be empty": "Email cannot be empty",
"Email already exists": "ایمیل قبلاً وجود دارد", "Email is invalid": "Email is invalid",
"Email cannot be empty": "ایمیل نمی‌تواند خالی باشد", "Empty username.": "Empty username.",
"Email is invalid": "ایمیل نامعتبر است", "Face data does not exist, cannot log in": "Face data does not exist, cannot log in",
"Empty username.": "نام کاربری خالی است.", "Face data mismatch": "Face data mismatch",
"Face data does not exist, cannot log in": "داده‌های چهره وجود ندارد، نمی‌توان وارد شد", "FirstName cannot be blank": "FirstName cannot be blank",
"Face data mismatch": "عدم تطابق داده‌های چهره", "Invitation code cannot be blank": "Invitation code cannot be blank",
"Failed to parse client IP: %s": "پارس کردن IP مشتری ناموفق بود: %s", "Invitation code exhausted": "Invitation code exhausted",
"FirstName cannot be blank": "نام نمی‌تواند خالی باشد", "Invitation code is invalid": "Invitation code is invalid",
"Invitation code cannot be blank": "کد دعوت نمی‌تواند خالی باشد", "Invitation code suspended": "Invitation code suspended",
"Invitation code exhausted": "کد دعوت استفاده شده است", "LDAP user name or password incorrect": "LDAP user name or password incorrect",
"Invitation code is invalid": "کد دعوت نامعتبر است", "LastName cannot be blank": "LastName cannot be blank",
"Invitation code suspended": "کد دعوت معلق است", "Multiple accounts with same uid, please check your ldap server": "Multiple accounts with same uid, please check your ldap server",
"LDAP user name or password incorrect": "نام کاربری یا رمز عبور LDAP نادرست است", "Organization does not exist": "Organization does not exist",
"LastName cannot be blank": "نام خانوادگی نمی‌تواند خالی باشد", "Phone already exists": "Phone already exists",
"Multiple accounts with same uid, please check your ldap server": "چندین حساب با uid یکسان، لطفاً سرور LDAP خود را بررسی کنید", "Phone cannot be empty": "Phone cannot be empty",
"Organization does not exist": "سازمان وجود ندارد", "Phone number is invalid": "Phone number is invalid",
"Password cannot be empty": "رمز عبور نمی‌تواند خالی باشد", "Please register using the email corresponding to the invitation code": "Please register using the email corresponding to the invitation code",
"Phone already exists": "تلفن قبلاً وجود دارد", "Please register using the phone corresponding to the invitation code": "Please register using the phone corresponding to the invitation code",
"Phone cannot be empty": "تلفن نمی‌تواند خالی باشد", "Please register using the username corresponding to the invitation code": "Please register using the username corresponding to the invitation code",
"Phone number is invalid": "شماره تلفن نامعتبر است", "Session outdated, please login again": "Session outdated, please login again",
"Please register using the email corresponding to the invitation code": "لطفاً با استفاده از ایمیل مربوط به کد دعوت ثبت‌نام کنید", "The invitation code has already been used": "The invitation code has already been used",
"Please register using the phone corresponding to the invitation code": "لطفاً با استفاده از تلفن مربوط به کد دعوت ثبت‌نام کنید", "The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
"Please register using the username corresponding to the invitation code": "لطفاً با استفاده از نام کاربری مربوط به کد دعوت ثبت‌نام کنید", "The user: %s doesn't exist in LDAP server": "The user: %s doesn't exist in LDAP server",
"Session outdated, please login again": "جلسه منقضی شده است، لطفاً دوباره وارد شوید", "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.",
"The invitation code has already been used": "کد دعوت قبلاً استفاده شده است", "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex",
"The user is forbidden to sign in, please contact the administrator": "ورود کاربر ممنوع است، لطفاً با مدیر تماس بگیرید", "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"",
"The user: %s doesn't exist in LDAP server": "کاربر: %s در سرور LDAP وجود ندارد", "Username already exists": "Username already exists",
"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 cannot be an email address": "Username cannot be an email address",
"The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "مقدار \\\"%s\\\" برای فیلد حساب \\\"%s\\\" با regex مورد نظر مطابقت ندارد", "Username cannot contain white spaces": "Username cannot contain white spaces",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "مقدار \\\"%s\\\" برای فیلد ثبت‌نام \\\"%s\\\" با regex مورد نظر برنامه \\\"%s\\\" مطابقت ندارد", "Username cannot start with a digit": "Username cannot start with a digit",
"Username already exists": "نام کاربری قبلاً وجود دارد", "Username is too long (maximum is 39 characters).": "Username is too long (maximum is 39 characters).",
"Username cannot be an email address": "نام کاربری نمی‌تواند یک آدرس ایمیل باشد", "Username must have at least 2 characters": "Username must have at least 2 characters",
"Username cannot contain white spaces": "نام کاربری نمی‌تواند حاوی فاصله باشد", "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",
"Username cannot start with a digit": "نام کاربری نمی‌تواند با یک رقم شروع شود", "Your region is not allow to signup by phone": "Your region is not allow to signup by phone",
"Username is too long (maximum is 255 characters).": "نام کاربری بیش از حد طولانی است (حداکثر ۳۹ کاراکتر).", "password or code is incorrect": "password or code is incorrect",
"Username must have at least 2 characters": "نام کاربری باید حداقل ۲ کاراکتر داشته باشد", "password or code is incorrect, you have %d remaining chances": "password or code is incorrect, you have %d remaining chances",
"Username supports email format. Also 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. Also pay attention to the email format.": "نام کاربری از فرمت ایمیل پشتیبانی می‌کند. همچنین نام کاربری تنها می‌تواند شامل کاراکترهای الفبایی-عددی، زیرخط یا خط تیره باشد، نمی‌تواند دارای خطوط تیره یا زیرخطوط متوالی باشد و نمی‌تواند با خط تیره یا زیرخط شروع یا پایان یابد. همچنین به فرمت ایمیل توجه کنید.", "unsupported password type: %s": "unsupported password type: %s"
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "شما رمز عبور یا کد اشتباه را بیش از حد وارد کرده‌اید، لطفاً %d دقیقه صبر کنید و دوباره تلاش کنید",
"Your IP address: %s has been banned according to the configuration of: ": "آدرس IP شما: %s طبق تنظیمات بلاک شده است: ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "رمز عبور شما منقضی شده است. لطفاً با کلیک بر روی \\\"فراموشی رمز عبور\\\" رمز عبور خود را بازنشانی کنید",
"Your region is not allow to signup by phone": "منطقه شما اجازه ثبت‌نام با تلفن را ندارد",
"password or code is incorrect": "رمز عبور یا کد نادرست است",
"password or code is incorrect, you have %s remaining chances": "رمز عبور یا کد نادرست است، شما %s فرصت باقی‌مانده دارید",
"unsupported password type: %s": "نوع رمز عبور پشتیبانی نشده: %s"
},
"enforcer": {
"the adapter: %s is not found": "آداپتر: %s پیدا نشد"
}, },
"general": { "general": {
"Failed to import groups": "ورود گروه‌ها ناموفق بود", "Missing parameter": "Missing parameter",
"Failed to import users": "عدم موفقیت در وارد کردن کاربران", "Please login first": "Please login first",
"Missing parameter": "پارامتر گمشده", "The organization: %s should have one application at least": "The organization: %s should have one application at least",
"Only admin user can specify user": "فقط کاربر مدیر می‌تواند کاربر را مشخص کند", "The user: %s doesn't exist": "The user: %s doesn't exist",
"Please login first": "لطفاً ابتدا وارد شوید", "don't support captchaProvider: ": "don't support captchaProvider: ",
"The organization: %s should have one application at least": "سازمان: %s باید حداقل یک برنامه داشته باشد", "this operation is not allowed in demo mode": "this operation is not allowed in demo mode",
"The user: %s doesn't exist": "کاربر: %s وجود ندارد", "this operation requires administrator to perform": "this operation requires administrator to perform"
"Wrong userId": "شناسه کاربر اشتباه است",
"don't support captchaProvider: ": "از captchaProvider پشتیبانی نمی‌شود: ",
"this operation is not allowed in demo mode": "این عملیات در حالت دمو مجاز نیست",
"this operation requires administrator to perform": "این عملیات نیاز به مدیر برای انجام دارد"
}, },
"ldap": { "ldap": {
"Ldap server exist": "سرور LDAP وجود دارد" "Ldap server exist": "Ldap server exist"
}, },
"link": { "link": {
"Please link first": "لطفاً ابتدا پیوند دهید", "Please link first": "Please link first",
"This application has no providers": "این برنامه ارائه‌دهنده‌ای ندارد", "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 application has no providers of type",
"This provider can't be unlinked": "این ارائه‌دهنده نمی‌تواند لغو پیوند شود", "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 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": "You can't unlink yourself, you are not a member of any application"
}, },
"organization": { "organization": {
"Only admin can modify the %s.": "فقط مدیر می‌تواند %s را تغییر دهد.", "Only admin can modify the %s.": "Only admin can modify the %s.",
"The %s is immutable.": "%s غیرقابل تغییر است.", "The %s is immutable.": "The %s is immutable.",
"Unknown modify rule %s.": "قانون تغییر ناشناخته %s.", "Unknown modify rule %s.": "Unknown modify rule %s."
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "افزودن کاربر جدید به سازمان «built-in» (درونی) در حال حاضر غیرفعال است. توجه داشته باشید: همه کاربران در سازمان «built-in» مدیران جهانی در Casdoor هستند. به مستندات مراجعه کنید: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. اگر همچنان می‌خواهید یک کاربر برای سازمان «built-in» ایجاد کنید، به صفحه تنظیمات سازمان بروید و گزینه «مجوز موافقت با امتیازات» را فعال کنید."
}, },
"permission": { "permission": {
"The permission: \\\"%s\\\" doesn't exist": "مجوز: \\\"%s\\\" وجود ندارد" "The permission: \\\"%s\\\" doesn't exist": "The permission: \\\"%s\\\" doesn't exist"
}, },
"provider": { "provider": {
"Invalid application id": "شناسه برنامه نامعتبر", "Invalid application id": "Invalid application id",
"the provider: %s does not exist": "ارائه‌دهنده: %s وجود ندارد" "the provider: %s does not exist": "the provider: %s does not exist"
}, },
"resource": { "resource": {
"User is nil for tag: avatar": "کاربر برای برچسب: آواتار تهی است", "User is nil for tag: avatar": "User is nil for tag: avatar",
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "نام کاربری یا مسیر کامل فایل خالی است: نام کاربری = %s، مسیر کامل فایل = %s" "Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Username or fullFilePath is empty: username = %s, fullFilePath = %s"
}, },
"saml": { "saml": {
"Application %s not found": "برنامه %s یافت نشد" "Application %s not found": "Application %s not found"
}, },
"saml_sp": { "saml_sp": {
"provider %s's category is not SAML": "دسته‌بندی ارائه‌دهنده %s SAML نیست" "provider %s's category is not SAML": "provider %s's category is not SAML"
}, },
"service": { "service": {
"Empty parameters for emailForm: %v": "پارامترهای خالی برای emailForm: %v", "Empty parameters for emailForm: %v": "Empty parameters for emailForm: %v",
"Invalid Email receivers: %s": "گیرندگان ایمیل نامعتبر: %s", "Invalid Email receivers: %s": "Invalid Email receivers: %s",
"Invalid phone receivers: %s": "گیرندگان تلفن نامعتبر: %s" "Invalid phone receivers: %s": "Invalid phone receivers: %s"
}, },
"storage": { "storage": {
"The objectKey: %s is not allowed": "objectKey: %s مجاز نیست", "The objectKey: %s is not allowed": "The objectKey: %s is not allowed",
"The provider type: %s is not supported": "نوع ارائه‌دهنده: %s پشتیبانی نمی‌شود" "The provider type: %s is not supported": "The provider type: %s is not supported"
},
"subscription": {
"Error": "خطا"
}, },
"token": { "token": {
"Grant_type: %s is not supported in this application": "grant_type: %s در این برنامه پشتیبانی نمی‌شود", "Grant_type: %s is not supported in this application": "Grant_type: %s is not supported in this application",
"Invalid application or wrong clientSecret": "برنامه نامعتبر یا clientSecret نادرست", "Invalid application or wrong clientSecret": "Invalid application or wrong clientSecret",
"Invalid client_id": "client_id نامعتبر", "Invalid client_id": "Invalid client_id",
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "آدرس بازگشت: %s در لیست آدرس‌های بازگشت مجاز وجود ندارد", "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": "توکن یافت نشد، accessToken نامعتبر" "Token not found, invalid accessToken": "Token not found, invalid accessToken"
}, },
"user": { "user": {
"Display name cannot be empty": "نام نمایشی نمی‌تواند خالی باشد", "Display name cannot be empty": "Display name cannot be empty",
"MFA email is enabled but email is empty": "ایمیل MFA فعال است اما ایمیل خالی است", "New password cannot contain blank space.": "New password cannot contain blank space."
"MFA phone is enabled but phone number is empty": "تلفن MFA فعال است اما شماره تلفن خالی است", },
"New password cannot contain blank space.": "رمز عبور جدید نمی‌تواند حاوی فاصله خالی باشد.", "user_upload": {
"the user's owner and name should not be empty": "مالک و نام کاربر نباید خالی باشند" "Failed to import users": "Failed to import users"
}, },
"util": { "util": {
"No application is found for userId: %s": "هیچ برنامه‌ای برای userId: %s یافت نشد", "No application is found for userId: %s": "No application is found for userId: %s",
"No provider for category: %s is found for application: %s": "هیچ ارائه‌دهنده‌ای برای دسته‌بندی: %s برای برنامه: %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": "ارائه‌دهنده: %s یافت نشد" "The provider: %s is not found": "The provider: %s is not found"
}, },
"verification": { "verification": {
"Invalid captcha provider.": "ارائه‌دهنده کپچا نامعتبر.", "Invalid captcha provider.": "Invalid captcha provider.",
"Phone number is invalid in your region %s": "شماره تلفن در منطقه شما نامعتبر است %s", "Phone number is invalid in your region %s": "Phone number is invalid in your region %s",
"The verification code has already been used!": "کد تایید قبلاً استفاده شده است!", "The verification code has not been sent yet!": "The verification code has not been sent yet!",
"The verification code has not been sent yet!": "کد تأیید هنوز ارسال نشده است!", "The verification code has not been sent yet, or has already been used!": "The verification code has not been sent yet, or has already been used!",
"Turing test failed.": "تست تورینگ ناموفق بود.", "Turing test failed.": "Turing test failed.",
"Unable to get the email modify rule.": "عدم توانایی در دریافت قانون تغییر ایمیل.", "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.": "Unable to get the phone modify rule.",
"Unknown type": "نوع ناشناخته", "Unknown type": "Unknown type",
"Wrong verification code!": "کد تأیید اشتباه!", "Wrong verification code!": "Wrong verification code!",
"You should verify your code in %d min!": "شما باید کد خود را در %d دقیقه تأیید کنید!", "You should verify your code in %d min!": "You should verify your code in %d min!",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "لطفاً یک ارائه‌کننده SMS به لیست \\\"ارائه‌کنندگان\\\" برای برنامه اضافه کنید: %s", "please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "please add a SMS provider to the \\\"Providers\\\" list for the application: %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "لطفاً یک ارائه‌کننده ایمیل به لیست \\\"ارائه‌کنندگان\\\" برای برنامه اضافه کنید: %s", "please add an Email provider to the \\\"Providers\\\" list for the application: %s": "please add an Email provider to the \\\"Providers\\\" list for the application: %s",
"the user does not exist, please sign up first": "کاربر وجود ندارد، لطفاً ابتدا ثبت‌نام کنید" "the user does not exist, please sign up first": "the user does not exist, please sign up first"
}, },
"webauthn": { "webauthn": {
"Found no credentials for this user": "Found no credentials for this user", "Found no credentials for this user": "Found no credentials for this user",
"Please call WebAuthnSigninBegin first": "لطفاً ابتدا WebAuthnSigninBegin را فراخوانی کنید" "Please call WebAuthnSigninBegin first": "Please call WebAuthnSigninBegin first"
} }
} }

View File

@@ -1,193 +1,167 @@
{ {
"account": { "account": {
"Failed to add user": "Käyttäjän lisäys epäonnistui", "Failed to add user": "Failed to add user",
"Get init score failed, error: %w": "Alkupisteen haku epäonnistui, virhe: %w", "Get init score failed, error: %w": "Get init score failed, error: %w",
"Please sign out first": "Kirjaudu ensin ulos", "Please sign out first": "Please sign out first",
"The application does not allow to sign up new account": "Sovellus ei salli uuden tilin luomista" "The application does not allow to sign up new account": "The application does not allow to sign up new account"
}, },
"auth": { "auth": {
"Challenge method should be S256": "Haasteen metodin tulee olla S256", "Challenge method should be S256": "Challenge method should be S256",
"DeviceCode Invalid": "DeviceCode virheellinen", "Failed to create user, user information is invalid: %s": "Failed to create user, user information is invalid: %s",
"Failed to create user, user information is invalid: %s": "Käyttäjän luonti epäonnistui, käyttäjätiedot ovat virheelliset: %s", "Failed to login in: %s": "Failed to login in: %s",
"Failed to login in: %s": "Sisäänkirjautuminen epäonnistui: %s", "Invalid token": "Invalid token",
"Invalid token": "Virheellinen token", "State expected: %s, but got: %s": "State expected: %s, but got: %s",
"State expected: %s, but got: %s": "Odotettiin tilaa: %s, mutta saatiin: %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 via %%s, please use another way to sign up": "Tiliä providerille: %s ja käyttäjälle: %s (%s) ei ole olemassa, eikä sitä voi rekisteröidä uutena tilinä kautta %%s, käytä toista tapaa rekisteröityä", "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) does not exist and is not allowed to sign up as new account, please contact your IT support": "Tiliä providerille: %s ja käyttäjälle: %s (%s) ei ole olemassa, eikä sitä voi rekisteröidä uutena tilinä, ota yhteyttä IT-tukeen", "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 account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "Tili providerille: %s ja käyttäjälle: %s (%s) on jo linkitetty toiseen tiliin: %s (%s)", "The application: %s does not exist": "The application: %s does not exist",
"The application: %s does not exist": "Sovellus: %s ei ole olemassa", "The login method: login with LDAP is not enabled for the application": "The login method: login with LDAP is not enabled for the application",
"The application: %s has disabled users to signin": "The application: %s has disabled users to signin", "The login method: login with SMS is not enabled for the application": "The login method: login with SMS is not enabled for the application",
"The login method: login with LDAP is not enabled for the application": "Kirjautumistapa: kirjautuminen LDAP:n kautta ei ole käytössä sovelluksessa", "The login method: login with email is not enabled for the application": "The login method: login with email is not enabled for the application",
"The login method: login with SMS is not enabled for the application": "Kirjautumistapa: kirjautuminen SMS:n kautta ei ole käytössä sovelluksessa", "The login method: login with face is not enabled for the application": "The login method: login with face is not enabled for the application",
"The login method: login with email is not enabled for the application": "Kirjautumistapa: kirjautuminen sähköpostin kautta ei ole käytössä sovelluksessa", "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 login method: login with face is not enabled for the application": "Kirjautumistapa: kirjautuminen kasvotunnistuksella ei ole käytössä sovelluksessa", "The organization: %s does not exist": "The organization: %s does not exist",
"The login method: login with password is not enabled for the application": "Kirjautumistapa: kirjautuminen salasanalla ei ole käytössä sovelluksessa", "The provider: %s is not enabled for the application": "The provider: %s is not enabled for the application",
"The organization: %s does not exist": "Organisaatio: %s ei ole olemassa", "Unauthorized operation": "Unauthorized operation",
"The organization: %s has disabled users to signin": "The organization: %s has disabled users to signin", "Unknown authentication type (not password or provider), form = %s": "Unknown authentication type (not password or provider), form = %s",
"The provider: %s does not exist": "Provider: %s ei ole olemassa", "User's tag: %s is not listed in the application's tags": "User's tag: %s is not listed in the application's tags",
"The provider: %s is not enabled for the application": "Provider: %s ei ole käytössä sovelluksessa", "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing"
"Unauthorized operation": "Luvaton toiminto",
"Unknown authentication type (not password or provider), form = %s": "Tuntematon todennustyyppi (ei salasana tai provider), form = %s",
"User's tag: %s is not listed in the application's tags": "Käyttäjän tagi: %s ei ole listattu sovelluksen tageissa",
"UserCode Expired": "UserCode vanhentunut",
"UserCode Invalid": "UserCode virheellinen",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "maksettu-käyttäjä %s ei ole aktiivista tai odottavaa tilausta ja sovellus: %s ei ole oletushinnoittelua",
"the application for user %s is not found": "sovellusta käyttäjälle %s ei löydy",
"the organization: %s is not found": "organisaatiota: %s ei löydy"
}, },
"cas": { "cas": {
"Service %s and %s do not match": "Palvelu %s ja %s eivät täsmää" "Service %s and %s do not match": "Service %s and %s do not match"
}, },
"check": { "check": {
"%s does not meet the CIDR format requirements: %s": "%s ei täytä CIDR-muodon vaatimuksia: %s", "Affiliation cannot be blank": "Affiliation cannot be blank",
"Affiliation cannot be blank": "Affiliaatio ei voi olla tyhjä", "Default code does not match the code's matching rules": "Default code does not match the code's matching rules",
"CIDR for IP: %s should not be empty": "CIDR IP:lle: %s ei saa olla tyhjä", "DisplayName cannot be blank": "DisplayName cannot be blank",
"Default code does not match the code's matching rules": "Oletuskoodi ei täsmää koodin täsmäyssääntöihin", "DisplayName is not valid real name": "DisplayName is not valid real name",
"DisplayName cannot be blank": "Näyttönimi ei voi olla tyhjä", "Email already exists": "Email already exists",
"DisplayName is not valid real name": "Näyttönimi ei ole kelvollinen oikea nimi", "Email cannot be empty": "Email cannot be empty",
"Email already exists": "Sähköposti on jo olemassa", "Email is invalid": "Email is invalid",
"Email cannot be empty": "Sähköposti ei voi olla tyhjä", "Empty username.": "Empty username.",
"Email is invalid": "Sähköposti on virheellinen", "Face data does not exist, cannot log in": "Face data does not exist, cannot log in",
"Empty username.": "Tyhjä käyttäjänimi.", "Face data mismatch": "Face data mismatch",
"Face data does not exist, cannot log in": "Kasvodataa ei ole olemassa, ei voi kirjautua", "FirstName cannot be blank": "FirstName cannot be blank",
"Face data mismatch": "Kasvodata ei täsmää", "Invitation code cannot be blank": "Invitation code cannot be blank",
"Failed to parse client IP: %s": "Client IP:n jäsentäminen epäonnistui: %s", "Invitation code exhausted": "Invitation code exhausted",
"FirstName cannot be blank": "Etunimi ei voi olla tyhjä", "Invitation code is invalid": "Invitation code is invalid",
"Invitation code cannot be blank": "Kutsukoodi ei voi olla tyhjä", "Invitation code suspended": "Invitation code suspended",
"Invitation code exhausted": "Kutsukoodi on käytetty loppuun", "LDAP user name or password incorrect": "LDAP user name or password incorrect",
"Invitation code is invalid": "Kutsukoodi on virheellinen", "LastName cannot be blank": "LastName cannot be blank",
"Invitation code suspended": "Kutsukoodi on keskeytetty", "Multiple accounts with same uid, please check your ldap server": "Multiple accounts with same uid, please check your ldap server",
"LDAP user name or password incorrect": "LDAP-käyttäjänimi tai salasana on virheellinen", "Organization does not exist": "Organization does not exist",
"LastName cannot be blank": "Sukunimi ei voi olla tyhjä", "Phone already exists": "Phone already exists",
"Multiple accounts with same uid, please check your ldap server": "Useita tilejä samalla uid:llä, tarkista ldap-palvelimesi", "Phone cannot be empty": "Phone cannot be empty",
"Organization does not exist": "Organisaatiota ei ole olemassa", "Phone number is invalid": "Phone number is invalid",
"Password cannot be empty": "Salasana ei voi olla tyhjä", "Please register using the email corresponding to the invitation code": "Please register using the email corresponding to the invitation code",
"Phone already exists": "Puhelinnumero on jo olemassa", "Please register using the phone corresponding to the invitation code": "Please register using the phone corresponding to the invitation code",
"Phone cannot be empty": "Puhelinnumero ei voi olla tyhjä", "Please register using the username corresponding to the invitation code": "Please register using the username corresponding to the invitation code",
"Phone number is invalid": "Puhelinnumero on virheellinen", "Session outdated, please login again": "Session outdated, please login again",
"Please register using the email corresponding to the invitation code": "Rekisteröidy käyttämällä kutsukoodiin vastaavaa sähköpostia", "The invitation code has already been used": "The invitation code has already been used",
"Please register using the phone corresponding to the invitation code": "Rekisteröidy käyttämällä kutsukoodiin vastaavaa puhelinnumeroa", "The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
"Please register using the username corresponding to the invitation code": "Rekisteröidy käyttämällä kutsukoodiin vastaavaa käyttäjänimeä", "The user: %s doesn't exist in LDAP server": "The user: %s doesn't exist in LDAP server",
"Session outdated, please login again": "Istunto vanhentunut, kirjaudu uudelleen", "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.",
"The invitation code has already been used": "Kutsukoodi on jo käytetty", "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex",
"The user is forbidden to sign in, please contact the administrator": "Käyttäjän kirjautuminen on estetty, ota yhteyttä ylläpitäjään", "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"",
"The user: %s doesn't exist in LDAP server": "Käyttäjä: %s ei ole olemassa LDAP-palvelimessa", "Username already exists": "Username already exists",
"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.": "Käyttäjänimi voi sisältää vain alfanumeerisia merkkejä, alaviivoja tai tavuviivoja, ei voi sisältää peräkkäisiä tavuviivoja tai alaviivoja, eikä voi alkaa tai loppua tavuviivalla tai alaviivalla.", "Username cannot be an email address": "Username cannot be an email address",
"The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "Arvo \\\"%s\\\" tili-kentälle \\\"%s\\\" ei täsmää tili-alkion regexiin", "Username cannot contain white spaces": "Username cannot contain white spaces",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "Arvo \\\"%s\\\" rekisteröitymiskentälle \\\"%s\\\" ei täsmää sovelluksen \\\"%s\\\" rekisteröitymiskentän regexiin", "Username cannot start with a digit": "Username cannot start with a digit",
"Username already exists": "Käyttäjänimi on jo olemassa", "Username is too long (maximum is 39 characters).": "Username is too long (maximum is 39 characters).",
"Username cannot be an email address": "Käyttäjänimi ei voi olla sähköpostiosoite", "Username must have at least 2 characters": "Username must have at least 2 characters",
"Username cannot contain white spaces": "Käyttäjänimi ei voi sisältää välilyöntejä", "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",
"Username cannot start with a digit": "Käyttäjänimi ei voi alkaa numerolla", "Your region is not allow to signup by phone": "Your region is not allow to signup by phone",
"Username is too long (maximum is 255 characters).": "Käyttäjänimi on liian pitkä (enintään 255 merkkiä).", "password or code is incorrect": "password or code is incorrect",
"Username must have at least 2 characters": "Käyttäjänimessä on oltava vähintään 2 merkkiä", "password or code is incorrect, you have %d remaining chances": "password or code is incorrect, you have %d remaining chances",
"Username supports email format. Also 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. Also pay attention to the email format.": "Käyttäjänimi tukee sähköpostimuotoa. Lisäksi käyttäjänimi voi sisältää vain alfanumeerisia merkkejä, alaviivoja tai tavuviivoja, ei voi sisältää peräkkäisiä tavuviivoja tai alaviivoja, eikä voi alkaa tai loppua tavuviivalla tai alaviivalla. Huomioi myös sähköpostimuoto.", "unsupported password type: %s": "unsupported password type: %s"
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Olet syöttänyt väärän salasanan tai koodin liian monta kertaa, odota %d minuuttia ja yritä uudelleen",
"Your IP address: %s has been banned according to the configuration of: ": "IP-osoitteesi: %s on estetty asetuksen mukaan: ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "Salasanasi on vanhentunut. Nollaa salasanasi klikkaamalla \\\"Unohdin salasanan\\\"",
"Your region is not allow to signup by phone": "Alueellasi ei ole sallittua rekisteröityä puhelimella",
"password or code is incorrect": "salasana tai koodi on virheellinen",
"password or code is incorrect, you have %s remaining chances": "salasana tai koodi on virheellinen, sinulla on %s yritystä jäljellä",
"unsupported password type: %s": "ei-tuettu salasanatyyppi: %s"
},
"enforcer": {
"the adapter: %s is not found": "adapteria: %s ei löydy"
}, },
"general": { "general": {
"Failed to import groups": "Ryhmien tuonti epäonnistui", "Missing parameter": "Missing parameter",
"Failed to import users": "Käyttäjien tuonti epäonnistui", "Please login first": "Please login first",
"Missing parameter": "Parametri puuttuu", "The organization: %s should have one application at least": "The organization: %s should have one application at least",
"Only admin user can specify user": "Vain ylläpitäjä voi määrittää käyttäjän", "The user: %s doesn't exist": "The user: %s doesn't exist",
"Please login first": "Kirjaudu ensin sisään", "don't support captchaProvider: ": "don't support captchaProvider: ",
"The organization: %s should have one application at least": "Organisaatiolla: %s on oltava vähintään yksi sovellus", "this operation is not allowed in demo mode": "this operation is not allowed in demo mode",
"The user: %s doesn't exist": "Käyttäjää: %s ei ole olemassa", "this operation requires administrator to perform": "this operation requires administrator to perform"
"Wrong userId": "Väärä userId",
"don't support captchaProvider: ": "ei tueta captchaProvider: ",
"this operation is not allowed in demo mode": "tämä toiminto ei ole sallittu demo-tilassa",
"this operation requires administrator to perform": "tämä toiminto vaatii ylläpitäjän suorittamista"
}, },
"ldap": { "ldap": {
"Ldap server exist": "LDAP-palvelin on olemassa" "Ldap server exist": "Ldap server exist"
}, },
"link": { "link": {
"Please link first": "Linkitä ensin", "Please link first": "Please link first",
"This application has no providers": "Tällä sovelluksella ei ole providereita", "This application has no providers": "This application has no providers",
"This application has no providers of type": "Tällä sovelluksella ei ole tämän tyyppisiä providereita", "This application has no providers of type": "This application has no providers of type",
"This provider can't be unlinked": "Tätä provideria ei voi irrottaa", "This provider can't be unlinked": "This provider can't be unlinked",
"You are not the global admin, you can't unlink other users": "Et ole globaali ylläpitäjä, et voi irrottaa muita käyttäjiä", "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": "Et voi irrottaa itseäsi, et ole minkään sovelluksen jäsen" "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": { "organization": {
"Only admin can modify the %s.": "Vain ylläpitäjä voi muokata %s.", "Only admin can modify the %s.": "Only admin can modify the %s.",
"The %s is immutable.": "%s on muuttumaton.", "The %s is immutable.": "The %s is immutable.",
"Unknown modify rule %s.": "Tuntematon muokkaussääntö %s.", "Unknown modify rule %s.": "Unknown modify rule %s."
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "Uuden käyttäjän lisääminen 'built-in'-organisaatioon on tällä hetkellä poistettu käytöstä. Huomioi: Kaikki 'built-in'-organisaation käyttäjät ovat Casdoorin globaaleja ylläpitäjiä. Katso dokumentaatio: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. Jos haluat silti luoda käyttäjän 'built-in'-organisaatiolle, siirry organisaation asetussivulle ja käytä käyttöön vaihtoehdon 'On oikeuksien suostumus'."
}, },
"permission": { "permission": {
"The permission: \\\"%s\\\" doesn't exist": "Oikeutta: \\\"%s\\\" ei ole olemassa" "The permission: \\\"%s\\\" doesn't exist": "The permission: \\\"%s\\\" doesn't exist"
}, },
"provider": { "provider": {
"Invalid application id": "Virheellinen sovelluksen id", "Invalid application id": "Invalid application id",
"the provider: %s does not exist": "provideria: %s ei ole olemassa" "the provider: %s does not exist": "the provider: %s does not exist"
}, },
"resource": { "resource": {
"User is nil for tag: avatar": "Käyttäjä on nil tagille: avatar", "User is nil for tag: avatar": "User is nil for tag: avatar",
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Käyttäjänimi tai fullFilePath on tyhjä: username = %s, fullFilePath = %s" "Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Username or fullFilePath is empty: username = %s, fullFilePath = %s"
}, },
"saml": { "saml": {
"Application %s not found": "Sovellusta %s ei löydy" "Application %s not found": "Application %s not found"
}, },
"saml_sp": { "saml_sp": {
"provider %s's category is not SAML": "provider %s:n kategoria ei ole SAML" "provider %s's category is not SAML": "provider %s's category is not SAML"
}, },
"service": { "service": {
"Empty parameters for emailForm: %v": "Tyhjät parametrit emailFormille: %v", "Empty parameters for emailForm: %v": "Empty parameters for emailForm: %v",
"Invalid Email receivers: %s": "Virheelliset sähköpostivastaanottajat: %s", "Invalid Email receivers: %s": "Invalid Email receivers: %s",
"Invalid phone receivers: %s": "Virheelliset puhelinvastaanottajat: %s" "Invalid phone receivers: %s": "Invalid phone receivers: %s"
}, },
"storage": { "storage": {
"The objectKey: %s is not allowed": "objectKey: %s ei ole sallittu", "The objectKey: %s is not allowed": "The objectKey: %s is not allowed",
"The provider type: %s is not supported": "Provider-tyyppiä: %s ei tueta" "The provider type: %s is not supported": "The provider type: %s is not supported"
},
"subscription": {
"Error": "Virhe"
}, },
"token": { "token": {
"Grant_type: %s is not supported in this application": "Grant_type: %s ei ole tuettu tässä sovelluksessa", "Grant_type: %s is not supported in this application": "Grant_type: %s is not supported in this application",
"Invalid application or wrong clientSecret": "Virheellinen sovellus tai väärä clientSecret", "Invalid application or wrong clientSecret": "Invalid application or wrong clientSecret",
"Invalid client_id": "Virheellinen client_id", "Invalid client_id": "Invalid client_id",
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "Uudelleenohjaus-URI: %s ei ole sallittujen uudelleenohjaus-URI-listassa", "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": "Tokenia ei löydy, virheellinen accessToken" "Token not found, invalid accessToken": "Token not found, invalid accessToken"
}, },
"user": { "user": {
"Display name cannot be empty": "Näyttönimi ei voi olla tyhjä", "Display name cannot be empty": "Display name cannot be empty",
"MFA email is enabled but email is empty": "MFA-sähköposti on käytössä, mutta sähköposti on tyhjä", "New password cannot contain blank space.": "New password cannot contain blank space."
"MFA phone is enabled but phone number is empty": "MFA-puhelin on käytössä, mutta puhelinnumero on tyhjä", },
"New password cannot contain blank space.": "Uusi salasana ei voi sisältää välilyöntejä.", "user_upload": {
"the user's owner and name should not be empty": "käyttäjän omistaja ja nimi eivät saa olla tyhjiä" "Failed to import users": "Failed to import users"
}, },
"util": { "util": {
"No application is found for userId: %s": "Sovellusta ei löydy userId:lle: %s", "No application is found for userId: %s": "No application is found for userId: %s",
"No provider for category: %s is found for application: %s": "Provideria kategorialle: %s ei löydy sovellukselle: %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": "Provideria: %s ei löydy" "The provider: %s is not found": "The provider: %s is not found"
}, },
"verification": { "verification": {
"Invalid captcha provider.": "Virheellinen captcha-provider.", "Invalid captcha provider.": "Invalid captcha provider.",
"Phone number is invalid in your region %s": "Puhelinnumero on virheellinen alueellasi %s", "Phone number is invalid in your region %s": "Phone number is invalid in your region %s",
"The verification code has already been used!": "Vahvistuskoodi on jo käytetty!", "The verification code has not been sent yet!": "The verification code has not been sent yet!",
"The verification code has not been sent yet!": "Vahvistuskoodia ei ole vielä lähetetty!", "The verification code has not been sent yet, or has already been used!": "The verification code has not been sent yet, or has already been used!",
"Turing test failed.": "Turing-testi epäonnistui.", "Turing test failed.": "Turing test failed.",
"Unable to get the email modify rule.": "Sähköpostin muokkaussääntöä ei saada.", "Unable to get the email modify rule.": "Unable to get the email modify rule.",
"Unable to get the phone modify rule.": "Puhelimen muokkaussääntöä ei saada.", "Unable to get the phone modify rule.": "Unable to get the phone modify rule.",
"Unknown type": "Tuntematon tyyppi", "Unknown type": "Unknown type",
"Wrong verification code!": "Väärä vahvistuskoodi!", "Wrong verification code!": "Wrong verification code!",
"You should verify your code in %d min!": "Sinun tulee vahvistaa koodisi %d minuutissa!", "You should verify your code in %d min!": "You should verify your code in %d min!",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "lisää SMS-provider \"Providers\"-listalle sovellukselle: %s", "please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "please add a SMS provider to the \\\"Providers\\\" list for the application: %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "lisää sähköposti-provider \"Providers\"-listalle sovellukselle: %s", "please add an Email provider to the \\\"Providers\\\" list for the application: %s": "please add an Email provider to the \\\"Providers\\\" list for the application: %s",
"the user does not exist, please sign up first": "käyttäjää ei ole olemassa, rekisteröidy ensin" "the user does not exist, please sign up first": "the user does not exist, please sign up first"
}, },
"webauthn": { "webauthn": {
"Found no credentials for this user": "Found no credentials for this user", "Found no credentials for this user": "Found no credentials for this user",
"Please call WebAuthnSigninBegin first": "Kutsu ensin WebAuthnSigninBegin" "Please call WebAuthnSigninBegin first": "Please call WebAuthnSigninBegin first"
} }
} }

View File

@@ -7,7 +7,6 @@
}, },
"auth": { "auth": {
"Challenge method should be S256": "La méthode de défi doit être S256", "Challenge method should be S256": "La méthode de défi doit être S256",
"DeviceCode Invalid": "Code appareil invalide",
"Failed to create user, user information is invalid: %s": "Échec de la création de l'utilisateur, les informations utilisateur sont invalides : %s", "Failed to create user, user information is invalid: %s": "Échec de la création de l'utilisateur, les informations utilisateur sont invalides : %s",
"Failed to login in: %s": "Échec de la connexion : %s", "Failed to login in: %s": "Échec de la connexion : %s",
"Invalid token": "Jeton invalide", "Invalid token": "Jeton invalide",
@@ -16,95 +15,74 @@
"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": "Le compte pour le fournisseur : %s et le nom d'utilisateur : %s (%s) n'existe pas et n'est pas autorisé à s'inscrire comme nouveau compte, veuillez contacter votre support informatique", "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": "Le compte pour le fournisseur : %s et le nom d'utilisateur : %s (%s) n'existe pas et n'est pas autorisé à s'inscrire comme nouveau compte, veuillez contacter votre support informatique",
"The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "Le compte du fournisseur : %s et le nom d'utilisateur : %s (%s) sont déjà liés à un autre compte : %s (%s)", "The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "Le compte du fournisseur : %s et le nom d'utilisateur : %s (%s) sont déjà liés à un autre compte : %s (%s)",
"The application: %s does not exist": "L'application : %s n'existe pas", "The application: %s does not exist": "L'application : %s n'existe pas",
"The application: %s has disabled users to signin": "The application: %s has disabled users to signin", "The login method: login with LDAP is not enabled for the application": "The login method: login with LDAP is not enabled for the application",
"The login method: login with LDAP is not enabled for the application": "La méthode de connexion : connexion LDAP n'est pas activée pour l'application", "The login method: login with SMS is not enabled for the application": "The login method: login with SMS is not enabled for the application",
"The login method: login with SMS is not enabled for the application": "La méthode de connexion : connexion par SMS n'est pas activée pour l'application", "The login method: login with email is not enabled for the application": "The login method: login with email is not enabled for the application",
"The login method: login with email is not enabled for the application": "La méthode de connexion : connexion par e-mail n'est pas activée pour l'application", "The login method: login with face is not enabled for the application": "The login method: login with face is not enabled for the application",
"The login method: login with face is not enabled for the application": "La méthode de connexion : connexion par visage n'est pas activée pour l'application",
"The login method: login with password is not enabled for the application": "La méthode de connexion : connexion avec mot de passe n'est pas activée pour l'application", "The login method: login with password is not enabled for the application": "La méthode de connexion : connexion avec mot de passe n'est pas activée pour l'application",
"The organization: %s does not exist": "L'organisation : %s n'existe pas", "The organization: %s does not exist": "The organization: %s does not exist",
"The organization: %s has disabled users to signin": "The organization: %s has disabled users to signin",
"The provider: %s does not exist": "Le fournisseur : %s n'existe pas",
"The provider: %s is not enabled for the application": "Le fournisseur :%s n'est pas activé pour l'application", "The provider: %s is not enabled for the application": "Le fournisseur :%s n'est pas activé pour l'application",
"Unauthorized operation": "Opération non autorisée", "Unauthorized operation": "Opération non autorisée",
"Unknown authentication type (not password or provider), form = %s": "Type d'authentification inconnu (pas de mot de passe ou de fournisseur), formulaire = %s", "Unknown authentication type (not password or provider), form = %s": "Type d'authentification inconnu (pas de mot de passe ou de fournisseur), formulaire = %s",
"User's tag: %s is not listed in the application's tags": "Le tag de l'utilisateur : %s n'est pas répertorié dans les tags de l'application", "User's tag: %s is not listed in the application's tags": "Le tag de lutilisateur %s nest pas répertorié dans les tags de lapplication",
"UserCode Expired": "Code utilisateur expiré", "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing"
"UserCode Invalid": "Code utilisateur invalide",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "L'utilisateur payant %s n'a pas d'abonnement actif ou en attente et l'application : %s n'a pas de tarification par défaut",
"the application for user %s is not found": "L'application pour l'utilisateur %s est introuvable",
"the organization: %s is not found": "L'organisation : %s est introuvable"
}, },
"cas": { "cas": {
"Service %s and %s do not match": "Les services %s et %s ne correspondent pas" "Service %s and %s do not match": "Les services %s et %s ne correspondent pas"
}, },
"check": { "check": {
"%s does not meet the CIDR format requirements: %s": "%s ne respecte pas les exigences du format CIDR : %s",
"Affiliation cannot be blank": "Affiliation ne peut pas être vide", "Affiliation cannot be blank": "Affiliation ne peut pas être vide",
"CIDR for IP: %s should not be empty": "Le CIDR pour l'IP : %s ne doit pas être vide", "Default code does not match the code's matching rules": "Default code does not match the code's matching rules",
"Default code does not match the code's matching rules": "Le code par défaut ne correspond pas aux règles de correspondance du code",
"DisplayName cannot be blank": "Le nom d'affichage ne peut pas être vide", "DisplayName cannot be blank": "Le nom d'affichage ne peut pas être vide",
"DisplayName is not valid real name": "DisplayName n'est pas un nom réel valide", "DisplayName is not valid real name": "DisplayName n'est pas un nom réel valide",
"Email already exists": "E-mail déjà existant", "Email already exists": "E-mail déjà existant",
"Email cannot be empty": "L'e-mail ne peut pas être vide", "Email cannot be empty": "L'e-mail ne peut pas être vide",
"Email is invalid": "L'adresse e-mail est invalide", "Email is invalid": "L'adresse e-mail est invalide",
"Empty username.": "Nom d'utilisateur vide.", "Empty username.": "Nom d'utilisateur vide.",
"Face data does not exist, cannot log in": "Les données faciales n'existent pas, connexion impossible", "Face data does not exist, cannot log in": "Face data does not exist, cannot log in",
"Face data mismatch": "Données faciales incorrectes", "Face data mismatch": "Face data mismatch",
"Failed to parse client IP: %s": "Échec de l'analyse de l'IP client : %s",
"FirstName cannot be blank": "Le prénom ne peut pas être laissé vide", "FirstName cannot be blank": "Le prénom ne peut pas être laissé vide",
"Invitation code cannot be blank": "Le code d'invitation ne peut pas être vide", "Invitation code cannot be blank": "Invitation code cannot be blank",
"Invitation code exhausted": "Code d'invitation épuisé", "Invitation code exhausted": "Invitation code exhausted",
"Invitation code is invalid": "Code d'invitation invalide", "Invitation code is invalid": "Invitation code is invalid",
"Invitation code suspended": "Code d'invitation suspendu", "Invitation code suspended": "Invitation code suspended",
"LDAP user name or password incorrect": "Nom d'utilisateur ou mot de passe LDAP incorrect", "LDAP user name or password incorrect": "Nom d'utilisateur ou mot de passe LDAP incorrect",
"LastName cannot be blank": "Le nom de famille ne peut pas être vide", "LastName cannot be blank": "Le nom de famille ne peut pas être vide",
"Multiple accounts with same uid, please check your ldap server": "Plusieurs comptes avec le même identifiant d'utilisateur, veuillez vérifier votre serveur LDAP", "Multiple accounts with same uid, please check your ldap server": "Plusieurs comptes avec le même identifiant d'utilisateur, veuillez vérifier votre serveur LDAP",
"Organization does not exist": "L'organisation n'existe pas", "Organization does not exist": "L'organisation n'existe pas",
"Password cannot be empty": "Le mot de passe ne peut pas être vide",
"Phone already exists": "Le téléphone existe déjà", "Phone already exists": "Le téléphone existe déjà",
"Phone cannot be empty": "Le téléphone ne peut pas être vide", "Phone cannot be empty": "Le téléphone ne peut pas être vide",
"Phone number is invalid": "Le numéro de téléphone est invalide", "Phone number is invalid": "Le numéro de téléphone est invalide",
"Please register using the email corresponding to the invitation code": "Veuillez vous inscrire avec l'e-mail correspondant au code d'invitation", "Please register using the email corresponding to the invitation code": "Please register using the email corresponding to the invitation code",
"Please register using the phone corresponding to the invitation code": "Veuillez vous inscrire avec le téléphone correspondant au code d'invitation", "Please register using the phone corresponding to the invitation code": "Please register using the phone corresponding to the invitation code",
"Please register using the username corresponding to the invitation code": "Veuillez vous inscrire avec le nom d'utilisateur correspondant au code d'invitation", "Please register using the username corresponding to the invitation code": "Please register using the username corresponding to the invitation code",
"Session outdated, please login again": "Session expirée, veuillez vous connecter à nouveau", "Session outdated, please login again": "Session expirée, veuillez vous connecter à nouveau",
"The invitation code has already been used": "Le code d'invitation a déjà été utilisé", "The invitation code has already been used": "The invitation code has already been used",
"The user is forbidden to sign in, please contact the administrator": "L'utilisateur est interdit de se connecter, veuillez contacter l'administrateur", "The user is forbidden to sign in, please contact the administrator": "L'utilisateur est interdit de se connecter, veuillez contacter l'administrateur",
"The user: %s doesn't exist in LDAP server": "L'utilisateur : %s n'existe pas sur le serveur LDAP", "The user: %s doesn't exist in LDAP server": "L'utilisateur %s n'existe pas sur le serveur LDAP",
"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.": "Le nom d'utilisateur ne peut contenir que des caractères alphanumériques, des traits soulignés ou des tirets, ne peut pas avoir de tirets ou de traits soulignés consécutifs et ne peut pas commencer ou se terminer par un tiret ou un trait souligné.", "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.": "Le nom d'utilisateur ne peut contenir que des caractères alphanumériques, des traits soulignés ou des tirets, ne peut pas avoir de tirets ou de traits soulignés consécutifs et ne peut pas commencer ou se terminer par un tiret ou un trait souligné.",
"The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "La valeur \\\"%s\\\" pour le champ de compte \\\"%s\\\" ne correspond pas à l'expression régulière de l'élément de compte", "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "La valeur \\\"%s\\\" pour le champ d'inscription \\\"%s\\\" ne correspond pas à l'expression régulière de l'élément d'inscription de l'application \\\"%s\\\"", "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"",
"Username already exists": "Nom d'utilisateur existe déjà", "Username already exists": "Nom d'utilisateur existe déjà",
"Username cannot be an email address": "Nom d'utilisateur ne peut pas être une adresse e-mail", "Username cannot be an email address": "Nom d'utilisateur ne peut pas être une adresse e-mail",
"Username cannot contain white spaces": "Nom d'utilisateur ne peut pas contenir d'espaces blancs", "Username cannot contain white spaces": "Nom d'utilisateur ne peut pas contenir d'espaces blancs",
"Username cannot start with a digit": "Nom d'utilisateur ne peut pas commencer par un chiffre", "Username cannot start with a digit": "Nom d'utilisateur ne peut pas commencer par un chiffre",
"Username is too long (maximum is 255 characters).": "Nom d'utilisateur est trop long (maximum de 255 caractères).", "Username is too long (maximum is 39 characters).": "Nom d'utilisateur est trop long (maximum de 39 caractères).",
"Username must have at least 2 characters": "Le nom d'utilisateur doit comporter au moins 2 caractères", "Username must have at least 2 characters": "Le nom d'utilisateur doit comporter au moins 2 caractères",
"Username supports email format. Also 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. Also pay attention to the email format.": "Le nom d'utilisateur prend en charge le format e-mail. De plus, il ne peut contenir que des caractères alphanumériques, des tirets bas ou des traits d'union, ne peut pas avoir de traits d'union ou de tirets bas consécutifs, et ne peut pas commencer ou se terminer par un trait d'union ou un tiret bas. Faites également attention au format de l'e-mail.",
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Vous avez entré le mauvais mot de passe ou code plusieurs fois, veuillez attendre %d minutes et réessayer", "You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Vous avez entré le mauvais mot de passe ou code plusieurs fois, veuillez attendre %d minutes et réessayer",
"Your IP address: %s has been banned according to the configuration of: ": "Votre adresse IP : %s a été bannie selon la configuration de : ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "Votre mot de passe a expiré. Veuillez le réinitialiser en cliquant sur \\\"Mot de passe oublié\\\"",
"Your region is not allow to signup by phone": "Votre région n'est pas autorisée à s'inscrire par téléphone", "Your region is not allow to signup by phone": "Votre région n'est pas autorisée à s'inscrire par téléphone",
"password or code is incorrect": "mot de passe ou code incorrect", "password or code is incorrect": "mot de passe ou code invalide",
"password or code is incorrect, you have %s remaining chances": "Le mot de passe ou le code est incorrect, il vous reste %s chances", "password or code is incorrect, you have %d remaining chances": "Le mot de passe ou le code est incorrect, il vous reste %d chances",
"unsupported password type: %s": "Type de mot de passe non pris en charge : %s" "unsupported password type: %s": "Type de mot de passe non pris en charge : %s"
}, },
"enforcer": {
"the adapter: %s is not found": "l'adaptateur : %s est introuvable"
},
"general": { "general": {
"Failed to import groups": "Échec de l'importation des groupes",
"Failed to import users": "Échec de l'importation des utilisateurs",
"Missing parameter": "Paramètre manquant", "Missing parameter": "Paramètre manquant",
"Only admin user can specify user": "Seul un administrateur peut désigner un utilisateur",
"Please login first": "Veuillez d'abord vous connecter", "Please login first": "Veuillez d'abord vous connecter",
"The organization: %s should have one application at least": "L'organisation : %s doit avoir au moins une application", "The organization: %s should have one application at least": "The organization: %s should have one application at least",
"The user: %s doesn't exist": "L'utilisateur : %s n'existe pas", "The user: %s doesn't exist": "L'utilisateur : %s n'existe pas",
"Wrong userId": "ID utilisateur incorrect",
"don't support captchaProvider: ": "ne prend pas en charge captchaProvider: ", "don't support captchaProvider: ": "ne prend pas en charge captchaProvider: ",
"this operation is not allowed in demo mode": "cette opération n'est pas autorisée en mode démo", "this operation is not allowed in demo mode": "cette opération nest pas autorisée en mode démo",
"this operation requires administrator to perform": "cette opération nécessite un administrateur pour être effectuée" "this operation requires administrator to perform": "this operation requires administrator to perform"
}, },
"ldap": { "ldap": {
"Ldap server exist": "Le serveur LDAP existe" "Ldap server exist": "Le serveur LDAP existe"
@@ -120,11 +98,10 @@
"organization": { "organization": {
"Only admin can modify the %s.": "Seul l'administrateur peut modifier le %s.", "Only admin can modify the %s.": "Seul l'administrateur peut modifier le %s.",
"The %s is immutable.": "Le %s est immuable.", "The %s is immutable.": "Le %s est immuable.",
"Unknown modify rule %s.": "Règle de modification inconnue %s.", "Unknown modify rule %s.": "Règle de modification inconnue %s."
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "L'ajout d'un nouvel utilisateur à l'organisation « built-in » (intégrée) est actuellement désactivé. Veuillez noter : Tous les utilisateurs de l'organisation « built-in » sont des administrateurs globaux dans Casdoor. Consulter la documentation : https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. Si vous souhaitez encore créer un utilisateur pour l'organisation « built-in », accédez à la page des paramètres de l'organisation et activez l'option « A le consentement aux privilèges »."
}, },
"permission": { "permission": {
"The permission: \\\"%s\\\" doesn't exist": "La permission : \\\"%s\\\" n'existe pas" "The permission: \\\"%s\\\" doesn't exist": "The permission: \\\"%s\\\" doesn't exist"
}, },
"provider": { "provider": {
"Invalid application id": "Identifiant d'application invalide", "Invalid application id": "Identifiant d'application invalide",
@@ -149,9 +126,6 @@
"The objectKey: %s is not allowed": "La clé d'objet : %s n'est pas autorisée", "The objectKey: %s is not allowed": "La clé d'objet : %s n'est pas autorisée",
"The provider type: %s is not supported": "Le type de fournisseur : %s n'est pas pris en charge" "The provider type: %s is not supported": "Le type de fournisseur : %s n'est pas pris en charge"
}, },
"subscription": {
"Error": "Erreur"
},
"token": { "token": {
"Grant_type: %s is not supported in this application": "Type_de_subvention : %s n'est pas pris en charge dans cette application", "Grant_type: %s is not supported in this application": "Type_de_subvention : %s n'est pas pris en charge dans cette application",
"Invalid application or wrong clientSecret": "Application invalide ou clientSecret incorrect", "Invalid application or wrong clientSecret": "Application invalide ou clientSecret incorrect",
@@ -161,10 +135,10 @@
}, },
"user": { "user": {
"Display name cannot be empty": "Le nom d'affichage ne peut pas être vide", "Display name cannot be empty": "Le nom d'affichage ne peut pas être vide",
"MFA email is enabled but email is empty": "L'authentification MFA par e-mail est activée mais l'e-mail est vide", "New password cannot contain blank space.": "Le nouveau mot de passe ne peut pas contenir d'espace."
"MFA phone is enabled but phone number is empty": "L'authentification MFA par téléphone est activée mais le numéro de téléphone est vide", },
"New password cannot contain blank space.": "Le nouveau mot de passe ne peut pas contenir d'espace.", "user_upload": {
"the user's owner and name should not be empty": "le propriétaire et le nom de l'utilisateur ne doivent pas être vides" "Failed to import users": "Échec de l'importation des utilisateurs"
}, },
"util": { "util": {
"No application is found for userId: %s": "Aucune application n'a été trouvée pour l'identifiant d'utilisateur : %s", "No application is found for userId: %s": "Aucune application n'a été trouvée pour l'identifiant d'utilisateur : %s",
@@ -174,20 +148,20 @@
"verification": { "verification": {
"Invalid captcha provider.": "Fournisseur de captcha invalide.", "Invalid captcha provider.": "Fournisseur de captcha invalide.",
"Phone number is invalid in your region %s": "Le numéro de téléphone n'est pas valide dans votre région %s", "Phone number is invalid in your region %s": "Le numéro de téléphone n'est pas valide dans votre région %s",
"The verification code has already been used!": "Le code de vérification a déjà été utilisé !", "The verification code has not been sent yet!": "The verification code has not been sent yet!",
"The verification code has not been sent yet!": "Le code de vérification n'a pas encore été envoyé !", "The verification code has not been sent yet, or has already been used!": "The verification code has not been sent yet, or has already been used!",
"Turing test failed.": "Le test de Turing a échoué.", "Turing test failed.": "Le test de Turing a échoué.",
"Unable to get the email modify rule.": "Incapable d'obtenir la règle de modification de courriel.", "Unable to get the email modify rule.": "Incapable d'obtenir la règle de modification de courriel.",
"Unable to get the phone modify rule.": "Impossible d'obtenir la règle de modification de téléphone.", "Unable to get the phone modify rule.": "Impossible d'obtenir la règle de modification de téléphone.",
"Unknown type": "Type inconnu", "Unknown type": "Type inconnu",
"Wrong verification code!": "Mauvais code de vérification !", "Wrong verification code!": "Mauvais code de vérification !",
"You should verify your code in %d min!": "Vous devriez vérifier votre code en %d min !", "You should verify your code in %d min!": "Vous devriez vérifier votre code en %d min !",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "veuillez ajouter un fournisseur SMS à la liste \\\"Providers\\\" pour l'application : %s", "please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "please add a SMS provider to the \\\"Providers\\\" list for the application: %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "veuillez ajouter un fournisseur d'e-mail à la liste \\\"Providers\\\" pour l'application : %s", "please add an Email provider to the \\\"Providers\\\" list for the application: %s": "please add an Email provider to the \\\"Providers\\\" list for the application: %s",
"the user does not exist, please sign up first": "L'utilisateur n'existe pas, veuillez vous inscrire d'abord" "the user does not exist, please sign up first": "L'utilisateur n'existe pas, veuillez vous inscrire d'abord"
}, },
"webauthn": { "webauthn": {
"Found no credentials for this user": "Found no credentials for this user", "Found no credentials for this user": "Aucune référence trouvée pour cet utilisateur",
"Please call WebAuthnSigninBegin first": "Veuillez d'abord appeler WebAuthnSigninBegin" "Please call WebAuthnSigninBegin first": "Veuillez d'abord appeler WebAuthnSigninBegin"
} }
} }

View File

@@ -1,193 +1,167 @@
{ {
"account": { "account": {
"Failed to add user": "הוספת משתמש נכשלה", "Failed to add user": "Failed to add user",
"Get init score failed, error: %w": "קבלת ניקוד התחלתי נכשלה, שגיאה: %w", "Get init score failed, error: %w": "Get init score failed, error: %w",
"Please sign out first": "אנא התנתק תחילה", "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": "The application does not allow to sign up new account"
}, },
"auth": { "auth": {
"Challenge method should be S256": "שיטת האתגר חייבת להיות S256", "Challenge method should be S256": "Challenge method should be S256",
"DeviceCode Invalid": "קוד מכשיר שגוי", "Failed to create user, user information is invalid: %s": "Failed to create user, user information is invalid: %s",
"Failed to create user, user information is invalid: %s": "יצירת משתמש נכשלה, פרטי המשתמש שגויים: %s", "Failed to login in: %s": "Failed to login in: %s",
"Failed to login in: %s": "כניסה נכשלה: %s", "Invalid token": "Invalid token",
"Invalid token": "אסימון שגוי", "State expected: %s, but got: %s": "State expected: %s, but got: %s",
"State expected: %s, but got: %s": "מצב צפוי: %s, אך התקבל: %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 via %%s, please use another way to sign up": "החשבון עבור ספק: %s ושם משתמש: %s (%s) אינו קיים ואינו מאופשר להרשמה כחשבון חדש דרך %%s, אנא השתמש בדרך אחרת להרשמה", "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) does not exist and is not allowed to sign up as new account, please contact your IT support": "החשבון עבור ספק: %s ושם משתמש: %s (%s) אינו קיים ואינו מאופשר להרשמה כחשבון חדש, אנא צור קשר עם התמיכה הטכנית", "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 account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "החשבון עבור ספק: %s ושם משתמש: %s (%s) כבר מקושר לחשבון אחר: %s (%s)", "The application: %s does not exist": "The application: %s does not exist",
"The application: %s does not exist": "האפליקציה: %s אינה קיימת", "The login method: login with LDAP is not enabled for the application": "The login method: login with LDAP is not enabled for the application",
"The application: %s has disabled users to signin": "The application: %s has disabled users to signin", "The login method: login with SMS is not enabled for the application": "The login method: login with SMS is not enabled for the application",
"The login method: login with LDAP is not enabled for the application": "שיטת הכניסה: כניסה עם LDAP אינה מאופשרת לאפליקציה", "The login method: login with email is not enabled for the application": "The login method: login with email is not enabled for the application",
"The login method: login with SMS is not enabled for the application": "שיטת הכניסה: כניסה עם SMS אינה מאופשרת לאפליקציה", "The login method: login with face is not enabled for the application": "The login method: login with face is not enabled for the application",
"The login method: login with email is not enabled for the application": "שיטת הכניסה: כניסה עם אימייל אינה מאופשרת לאפליקציה", "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 login method: login with face is not enabled for the application": "שיטת הכניסה: כניסה עם פנים אינה מאופשרת לאפליקציה", "The organization: %s does not exist": "The organization: %s does not exist",
"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",
"The organization: %s does not exist": "הארגון: %s אינו קיים", "Unauthorized operation": "Unauthorized operation",
"The organization: %s has disabled users to signin": "The organization: %s has disabled users to signin", "Unknown authentication type (not password or provider), form = %s": "Unknown authentication type (not password or provider), form = %s",
"The provider: %s does not exist": "הספק: %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",
"The provider: %s is not enabled for the application": "הספק: %s אינו מאופשר לאפליקציה", "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing"
"Unauthorized operation": "פעולה לא מורשית",
"Unknown authentication type (not password or provider), form = %s": "סוג אימות לא ידוע (לא סיסמה או ספק), טופס = %s",
"User's tag: %s is not listed in the application's tags": "תגית המשתמש: %s אינה רשומה בתגיות האפליקציה",
"UserCode Expired": "קוד משתמש פג תוקף",
"UserCode Invalid": "קוד משתמש שגוי",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "משתמש בתשלום %s אין לו מנוי פעיל או ממתין והאפליקציה: %s אין לה תמחור ברירת מחדל",
"the application for user %s is not found": "האפליקציה עבור המשתמש %s לא נמצאה",
"the organization: %s is not found": "הארגון: %s לא נמצא"
}, },
"cas": { "cas": {
"Service %s and %s do not match": "השירות %s ו-%s אינם תואמים" "Service %s and %s do not match": "Service %s and %s do not match"
}, },
"check": { "check": {
"%s does not meet the CIDR format requirements: %s": "%s אינו עומד בדרישות התבנית CIDR: %s", "Affiliation cannot be blank": "Affiliation cannot be blank",
"Affiliation cannot be blank": "השתייכות אינה יכולה להיות ריקה", "Default code does not match the code's matching rules": "Default code does not match the code's matching rules",
"CIDR for IP: %s should not be empty": "CIDR עבור IP: %s לא צריך להיות ריק", "DisplayName cannot be blank": "DisplayName cannot be blank",
"Default code does not match the code's matching rules": "קוד ברירת המחדל אינו תואם לכללי ההתאמה של הקוד", "DisplayName is not valid real name": "DisplayName is not valid real name",
"DisplayName cannot be blank": "שם התצוגה אינו יכול להיות ריק", "Email already exists": "Email already exists",
"DisplayName is not valid real name": "שם התצוגה אינו שם אמיתי תקף", "Email cannot be empty": "Email cannot be empty",
"Email already exists": "האימייל כבר קיים", "Email is invalid": "Email is invalid",
"Email cannot be empty": "האימייל אינו יכול להיות ריק", "Empty username.": "Empty username.",
"Email is invalid": "האימייל אינו תקף", "Face data does not exist, cannot log in": "Face data does not exist, cannot log in",
"Empty username.": "שם משתמש ריק.", "Face data mismatch": "Face data mismatch",
"Face data does not exist, cannot log in": "נתוני פנים אינם קיימים, לא ניתן להיכנס", "FirstName cannot be blank": "FirstName cannot be blank",
"Face data mismatch": "אי התאמת נתוני פנים", "Invitation code cannot be blank": "Invitation code cannot be blank",
"Failed to parse client IP: %s": "ניתוח כתובת ה-IP של הלקוח נכשל: %s", "Invitation code exhausted": "Invitation code exhausted",
"FirstName cannot be blank": "שם פרטי אינו יכול להיות ריק", "Invitation code is invalid": "Invitation code is invalid",
"Invitation code cannot be blank": "קוד הזמנה אינו יכול להיות ריק", "Invitation code suspended": "Invitation code suspended",
"Invitation code exhausted": "קוד ההזמנה נוצל", "LDAP user name or password incorrect": "LDAP user name or password incorrect",
"Invitation code is invalid": "קוד ההזמנה שגוי", "LastName cannot be blank": "LastName cannot be blank",
"Invitation code suspended": "קוד ההזמנה הושעה", "Multiple accounts with same uid, please check your ldap server": "Multiple accounts with same uid, please check your ldap server",
"LDAP user name or password incorrect": "שם משתמש או סיסמה של LDAP שגויים", "Organization does not exist": "Organization does not exist",
"LastName cannot be blank": "שם משפחה אינו יכול להיות ריק", "Phone already exists": "Phone already exists",
"Multiple accounts with same uid, please check your ldap server": "מספר חשבונות עם אותו uid, אנא בדוק את שרת ה-LDAP שלך", "Phone cannot be empty": "Phone cannot be empty",
"Organization does not exist": "הארגון אינו קיים", "Phone number is invalid": "Phone number is invalid",
"Password cannot be empty": "הסיסמה אינה יכולה להיות ריקה", "Please register using the email corresponding to the invitation code": "Please register using the email corresponding to the invitation code",
"Phone already exists": "הטלפון כבר קיים", "Please register using the phone corresponding to the invitation code": "Please register using the phone corresponding to the invitation code",
"Phone cannot be empty": "הטלפון אינו יכול להיות ריק", "Please register using the username corresponding to the invitation code": "Please register using the username corresponding to the invitation code",
"Phone number is invalid": "מספר הטלפון אינו תקף", "Session outdated, please login again": "Session outdated, please login again",
"Please register using the email corresponding to the invitation code": "אנא הרשם באמצעות האימייל התואם לקוד ההזמנה", "The invitation code has already been used": "The invitation code has already been used",
"Please register using the phone corresponding to the invitation code": "אנא הרשם באמצעות הטלפון המתאים לקוד ההזמנה", "The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
"Please register using the username corresponding to the invitation code": "אנא הרשם באמצעות שם המשתמש התואם לקוד ההזמנה", "The user: %s doesn't exist in LDAP server": "The user: %s doesn't exist in LDAP server",
"Session outdated, please login again": "הסשן פג תוקף, אנא התחבר שוב", "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.",
"The invitation code has already been used": "קוד ההזמנה כבר נוצל", "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex",
"The user is forbidden to sign in, please contact the administrator": "המשתמש אסור להיכנס, אנא צור קשר עם המנהל", "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"",
"The user: %s doesn't exist in LDAP server": "המשתמש: %s אינו קיים בשרת ה-LDAP", "Username already exists": "Username already exists",
"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 cannot be an email address": "Username cannot be an email address",
"The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "הערך \\\"%s\\\" עבור שדה החשבון \\\"%s\\\" אינו תואם ל-regex של פריט החשבון", "Username cannot contain white spaces": "Username cannot contain white spaces",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "הערך \\\"%s\\\" עבור שדה ההרשמה \\\"%s\\\" אינו תואם ל-regex של פריט ההרשמה של האפליקציה \\\"%s\\\"", "Username cannot start with a digit": "Username cannot start with a digit",
"Username already exists": "שם המשתמש כבר קיים", "Username is too long (maximum is 39 characters).": "Username is too long (maximum is 39 characters).",
"Username cannot be an email address": "שם המשתמש לא יכול להיות כתובת אימייל", "Username must have at least 2 characters": "Username must have at least 2 characters",
"Username cannot contain white spaces": "שם המשתמש לא יכול להכיל רווחים", "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",
"Username cannot start with a digit": "שם המשתמש לא יכול להתחיל בספרה", "Your region is not allow to signup by phone": "Your region is not allow to signup by phone",
"Username is too long (maximum is 255 characters).": "שם המשתמש ארוך מדי (מקסימום 255 תווים).", "password or code is incorrect": "password or code is incorrect",
"Username must have at least 2 characters": "שם המשתמש חייב להכיל לפחות 2 תווים", "password or code is incorrect, you have %d remaining chances": "password or code is incorrect, you have %d remaining chances",
"Username supports email format. Also 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. Also pay attention to the email format.": "שם המשתמש תומך בתבנית אימייל. כמו כן, שם המשתמש יכול להכיל רק תווים אלפאנומריים, קווים תחתונים או מקפים, לא יכול להכיל מקפים או קווים תחתונים רצופים, ולא יכול להתחיל או להסתיים עם מקף או קו תחתון. שים לב גם לתבנית האימייל.", "unsupported password type: %s": "unsupported password type: %s"
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "הזנת סיסמה או קוד שגוי יותר מדי פעמים, אנא המתן %d דקות ונסה שוב",
"Your IP address: %s has been banned according to the configuration of: ": "כתובת ה-IP שלך: %s נחסמה לפי התצורה של: ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "הסיסמה שלך פגה. אנא אפס את הסיסמה שלך על ידי לחיצה על \\\"שכחתי סיסמה\\\"",
"Your region is not allow to signup by phone": "האזור שלך אינו מאפשר הרשמה באמצעות טלפון",
"password or code is incorrect": "סיסמה או קוד שגויים",
"password or code is incorrect, you have %s remaining chances": "סיסמה או קוד שגויים, יש לך %s ניסיונות נותרים",
"unsupported password type: %s": "סוג סיסמה לא נתמך: %s"
},
"enforcer": {
"the adapter: %s is not found": "המתאם: %s לא נמצא"
}, },
"general": { "general": {
"Failed to import groups": "יבוא קבוצות נכשל", "Missing parameter": "Missing parameter",
"Failed to import users": "יבוא משתמשים נכשל", "Please login first": "Please login first",
"Missing parameter": "חסר פרמטר", "The organization: %s should have one application at least": "The organization: %s should have one application at least",
"Only admin user can specify user": "רק משתמש מנהל יכול לציין משתמש", "The user: %s doesn't exist": "The user: %s doesn't exist",
"Please login first": "אנא התחבר תחילה", "don't support captchaProvider: ": "don't support captchaProvider: ",
"The organization: %s should have one application at least": "הארגון: %s צריך להכיל לפחות אפליקציה אחת", "this operation is not allowed in demo mode": "this operation is not allowed in demo mode",
"The user: %s doesn't exist": "המשתמש: %s לא קיים", "this operation requires administrator to perform": "this operation requires administrator to perform"
"Wrong userId": "מזהה משתמש שגוי",
"don't support captchaProvider: ": "לא נתמך captchaProvider: ",
"this operation is not allowed in demo mode": "פעולה זו אינה מותרת במצב הדגמה",
"this operation requires administrator to perform": "פעולה זו דורשת מנהל לביצוע"
}, },
"ldap": { "ldap": {
"Ldap server exist": "שרת LDAP קיים" "Ldap server exist": "Ldap server exist"
}, },
"link": { "link": {
"Please link first": "אנא קשר תחילה", "Please link first": "Please link first",
"This application has no providers": "לאפליקציה זו אין ספקים", "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 application has no providers of type",
"This provider can't be unlinked": "ספק זה לא יכול להיות מנותק", "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 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": "You can't unlink yourself, you are not a member of any application"
}, },
"organization": { "organization": {
"Only admin can modify the %s.": "רק מנהל יכול לשנות את %s.", "Only admin can modify the %s.": "Only admin can modify the %s.",
"The %s is immutable.": "%s הוא בלתי ניתן לשינוי.", "The %s is immutable.": "The %s is immutable.",
"Unknown modify rule %s.": "כלל שינוי לא ידוע %s.", "Unknown modify rule %s.": "Unknown modify rule %s."
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "הוספת משתמש חדש לארגון 'מובנה' מושבת כעת. שימו לב: כל המשתמשים בארגון 'מובנה' הם מנהלים גלובליים ב-Casdoor. ראו את המסמכים: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. אם עדיין תרצו ליצור משתמש לארגון 'מובנה', עברו לדף הגדרות הארגון והפעילו את האפשרות 'יש הסכמה לזכויות'."
}, },
"permission": { "permission": {
"The permission: \\\"%s\\\" doesn't exist": "ההרשאה: \\\"%s\\\" אינה קיימת" "The permission: \\\"%s\\\" doesn't exist": "The permission: \\\"%s\\\" doesn't exist"
}, },
"provider": { "provider": {
"Invalid application id": "מזהה אפליקציה שגוי", "Invalid application id": "Invalid application id",
"the provider: %s does not exist": "הספק: %s אינו קיים" "the provider: %s does not exist": "the provider: %s does not exist"
}, },
"resource": { "resource": {
"User is nil for tag: avatar": "המשתמש הוא nil עבור התג: avatar", "User is nil for tag: avatar": "User is nil for tag: avatar",
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "שם המשתמש או fullFilePath ריקים: username = %s, fullFilePath = %s" "Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Username or fullFilePath is empty: username = %s, fullFilePath = %s"
}, },
"saml": { "saml": {
"Application %s not found": "אפליקציה %s לא נמצאה" "Application %s not found": "Application %s not found"
}, },
"saml_sp": { "saml_sp": {
"provider %s's category is not SAML": "הקטגוריה של הספק %s אינה SAML" "provider %s's category is not SAML": "provider %s's category is not SAML"
}, },
"service": { "service": {
"Empty parameters for emailForm: %v": "פרמטרים ריקים עבור emailForm: %v", "Empty parameters for emailForm: %v": "Empty parameters for emailForm: %v",
"Invalid Email receivers: %s": "מקבלי אימייל שגויים: %s", "Invalid Email receivers: %s": "Invalid Email receivers: %s",
"Invalid phone receivers: %s": "מקבלי SMS שגויים: %s" "Invalid phone receivers: %s": "Invalid phone receivers: %s"
}, },
"storage": { "storage": {
"The objectKey: %s is not allowed": "המפתח objectKey: %s אינו מורשה", "The objectKey: %s is not allowed": "The objectKey: %s is not allowed",
"The provider type: %s is not supported": "סוג הספק: %s אינו נתמך" "The provider type: %s is not supported": "The provider type: %s is not supported"
},
"subscription": {
"Error": "שגיאה"
}, },
"token": { "token": {
"Grant_type: %s is not supported in this application": "סוג ההרשאה: %s אינו נתמך באפליקציה זו", "Grant_type: %s is not supported in this application": "Grant_type: %s is not supported in this application",
"Invalid application or wrong clientSecret": "אפליקציה שגויה או clientSecret שגוי", "Invalid application or wrong clientSecret": "Invalid application or wrong clientSecret",
"Invalid client_id": "client_id שגוי", "Invalid client_id": "Invalid client_id",
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "כתובת הפניה: %s לא קיימת ברשימת כתובות הפניה המורשות", "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": "אסימון לא נמצא, accessToken שגוי" "Token not found, invalid accessToken": "Token not found, invalid accessToken"
}, },
"user": { "user": {
"Display name cannot be empty": "שם התצוגה אינו יכול להיות ריק", "Display name cannot be empty": "Display name cannot be empty",
"MFA email is enabled but email is empty": "MFA דוא\"ל מופעל אך הדוא\"ל ריק", "New password cannot contain blank space.": "New password cannot contain blank space."
"MFA phone is enabled but phone number is empty": "MFA טלפון מופעל אך מספר הטלפון ריק", },
"New password cannot contain blank space.": "הסיסמה החדשה אינה יכולה להכיל רווחים.", "user_upload": {
"the user's owner and name should not be empty": "הבעלים והשם של המשתמש אינם יכולים להיות ריקים" "Failed to import users": "Failed to import users"
}, },
"util": { "util": {
"No application is found for userId: %s": "לא נמצאה אפליקציה עבור userId: %s", "No application is found for userId: %s": "No application is found for userId: %s",
"No provider for category: %s is found for application: %s": "לא נמצא ספק עבור הקטגוריה: %s עבור האפליקציה: %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": "הספק: %s לא נמצא" "The provider: %s is not found": "The provider: %s is not found"
}, },
"verification": { "verification": {
"Invalid captcha provider.": "ספק captcha שגוי.", "Invalid captcha provider.": "Invalid captcha provider.",
"Phone number is invalid in your region %s": "מספר הטלפון אינו תקף באזורך %s", "Phone number is invalid in your region %s": "Phone number is invalid in your region %s",
"The verification code has already been used!": "קוד האימות כבר נוצל!", "The verification code has not been sent yet!": "The verification code has not been sent yet!",
"The verification code has not been sent yet!": "קוד האימות טרם נשלח!", "The verification code has not been sent yet, or has already been used!": "The verification code has not been sent yet, or has already been used!",
"Turing test failed.": "מבחן טיורינג נכשל.", "Turing test failed.": "Turing test failed.",
"Unable to get the email modify rule.": "לא ניתן לקבל את כלל שינוי האימייל.", "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.": "Unable to get the phone modify rule.",
"Unknown type": "סוג לא ידוע", "Unknown type": "Unknown type",
"Wrong verification code!": "קוד אימות שגוי!", "Wrong verification code!": "Wrong verification code!",
"You should verify your code in %d min!": "עליך לאמת את הקוד שלך תוך %d דקות!", "You should verify your code in %d min!": "You should verify your code in %d min!",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "אנא הוסף ספק SMS לרשימת \\\"ספקים\\\" עבור האפליקציה: %s", "please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "please add a SMS provider to the \\\"Providers\\\" list for the application: %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "אנא הוסף ספק אימייל לרשימת \\\"ספקים\\\" עבור האפליקציה: %s", "please add an Email provider to the \\\"Providers\\\" list for the application: %s": "please add an Email provider to the \\\"Providers\\\" list for the application: %s",
"the user does not exist, please sign up first": "המשתמש אינו קיים, אנא הרשם תחילה" "the user does not exist, please sign up first": "the user does not exist, please sign up first"
}, },
"webauthn": { "webauthn": {
"Found no credentials for this user": "Found no credentials for this user", "Found no credentials for this user": "Found no credentials for this user",
"Please call WebAuthnSigninBegin first": "אנא קרא ל-WebAuthnSigninBegin תחילה" "Please call WebAuthnSigninBegin first": "Please call WebAuthnSigninBegin first"
} }
} }

View File

@@ -1,134 +1,111 @@
{ {
"account": { "account": {
"Failed to add user": "Gagal menambahkan pengguna", "Failed to add user": "Gagal menambahkan pengguna",
"Get init score failed, error: %w": "Gagal mendapatkan nilai inisiasi, kesalahan: %w", "Get init score failed, error: %w": "Gagal mendapatkan nilai init, kesalahan: %w",
"Please sign out first": "Silakan keluar terlebih dahulu", "Please sign out first": "Silakan keluar terlebih dahulu",
"The application does not allow to sign up new account": "Aplikasi tidak memperbolehkan pendaftaran akun baru" "The application does not allow to sign up new account": "Aplikasi tidak memperbolehkan untuk mendaftar akun baru"
}, },
"auth": { "auth": {
"Challenge method should be S256": "Metode tantangan harus S256", "Challenge method should be S256": "Metode tantangan harus S256",
"DeviceCode Invalid": "Kode perangkat tidak valid",
"Failed to create user, user information is invalid: %s": "Gagal membuat pengguna, informasi pengguna tidak valid: %s", "Failed to create user, user information is invalid: %s": "Gagal membuat pengguna, informasi pengguna tidak valid: %s",
"Failed to login in: %s": "Gagal masuk: %s", "Failed to login in: %s": "Gagal masuk: %s",
"Invalid token": "Token tidak valid", "Invalid token": "Token tidak valid",
"State expected: %s, but got: %s": "Diharapkan: %s, tapi diperoleh: %s", "State expected: %s, but got: %s": "Diharapkan: %s, tapi diperoleh: %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": "Akun untuk penyedia: %s dan nama pengguna: %s (%s) tidak ada dan tidak diizinkan untuk mendaftar sebagai akun baru melalui %%s, silakan gunakan cara lain untuk mendaftar", "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": "Akun untuk penyedia: %s dan nama pengguna: %s (%s) tidak ada dan tidak diizinkan untuk mendaftar sebagai akun baru melalui %%s, silakan gunakan cara lain untuk mendaftar",
"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": "Akun untuk penyedia: %s dan nama pengguna: %s (%s) tidak ada dan tidak diizinkan untuk mendaftar sebagai akun baru, silakan hubungi dukungan IT Anda", "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": "Akun untuk penyedia: %s dan nama pengguna: %s (%s) tidak ada dan tidak diizinkan untuk mendaftar sebagai akun baru, silakan hubungi dukungan IT Anda",
"The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "Akun untuk penyedia: %s dan username: %s (%s) sudah terhubung dengan akun lain: %s (%s)", "The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "Akun untuk provider: %s dan username: %s (%s) sudah terhubung dengan akun lain: %s (%s)",
"The application: %s does not exist": "Aplikasi: %s tidak ada", "The application: %s does not exist": "Aplikasi: %s tidak ada",
"The application: %s has disabled users to signin": "The application: %s has disabled users to signin", "The login method: login with LDAP is not enabled for the application": "The login method: login with LDAP is not enabled for the application",
"The login method: login with LDAP is not enabled for the application": "Metode masuk: masuk dengan LDAP tidak diaktifkan untuk aplikasi ini", "The login method: login with SMS is not enabled for the application": "The login method: login with SMS is not enabled for the application",
"The login method: login with SMS is not enabled for the application": "Metode masuk: masuk dengan SMS tidak diaktifkan untuk aplikasi ini", "The login method: login with email is not enabled for the application": "The login method: login with email is not enabled for the application",
"The login method: login with email is not enabled for the application": "Metode masuk: masuk dengan email tidak diaktifkan untuk aplikasi ini", "The login method: login with face is not enabled for the application": "The login method: login with face is not enabled for the application",
"The login method: login with face is not enabled for the application": "Metode masuk: masuk dengan wajah tidak diaktifkan untuk aplikasi ini", "The login method: login with password is not enabled for the application": "Metode login: login dengan kata sandi tidak diaktifkan untuk aplikasi tersebut",
"The login method: login with password is not enabled for the application": "Metode login: login dengan sandi tidak diaktifkan untuk aplikasi tersebut", "The organization: %s does not exist": "The organization: %s does not exist",
"The organization: %s does not exist": "Organisasi: %s tidak ada",
"The organization: %s has disabled users to signin": "The organization: %s has disabled users to signin",
"The provider: %s does not exist": "Penyedia: %s tidak ada",
"The provider: %s is not enabled for the application": "Penyedia: %s tidak diaktifkan untuk aplikasi ini", "The provider: %s is not enabled for the application": "Penyedia: %s tidak diaktifkan untuk aplikasi ini",
"Unauthorized operation": "Operasi tidak sah", "Unauthorized operation": "Operasi tidak sah",
"Unknown authentication type (not password or provider), form = %s": "Jenis otentikasi tidak diketahui (bukan sandi atau penyedia), formulir = %s", "Unknown authentication type (not password or provider), form = %s": "Jenis otentikasi tidak diketahui (bukan kata sandi atau pemberi), formulir = %s",
"User's tag: %s is not listed in the application's tags": "Tag pengguna: %s tidak terdaftar dalam tag aplikasi", "User's tag: %s is not listed in the application's tags": "User's tag: %s is not listed in the application's tags",
"UserCode Expired": "Kode pengguna kedaluwarsa", "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing"
"UserCode Invalid": "Kode pengguna tidak valid",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "pengguna berbayar %s tidak memiliki langganan aktif atau tertunda dan aplikasi: %s tidak memiliki harga default",
"the application for user %s is not found": "aplikasi untuk pengguna %s tidak ditemukan",
"the organization: %s is not found": "organisasi: %s tidak ditemukan"
}, },
"cas": { "cas": {
"Service %s and %s do not match": "Layanan %s dan %s tidak cocok" "Service %s and %s do not match": "Layanan %s dan %s tidak cocok"
}, },
"check": { "check": {
"%s does not meet the CIDR format requirements: %s": "%s tidak memenuhi persyaratan format CIDR: %s",
"Affiliation cannot be blank": "Keterkaitan tidak boleh kosong", "Affiliation cannot be blank": "Keterkaitan tidak boleh kosong",
"CIDR for IP: %s should not be empty": "CIDR untuk IP: %s tidak boleh kosong", "Default code does not match the code's matching rules": "Default code does not match the code's matching rules",
"Default code does not match the code's matching rules": "Kode default tidak cocok dengan aturan pencocokan kode",
"DisplayName cannot be blank": "Nama Pengguna tidak boleh kosong", "DisplayName cannot be blank": "Nama Pengguna tidak boleh kosong",
"DisplayName is not valid real name": "DisplayName bukanlah nama asli yang valid", "DisplayName is not valid real name": "DisplayName bukanlah nama asli yang valid",
"Email already exists": "Email sudah ada", "Email already exists": "Email sudah ada",
"Email cannot be empty": "Email tidak boleh kosong", "Email cannot be empty": "Email tidak boleh kosong",
"Email is invalid": "Email tidak valid", "Email is invalid": "Email tidak valid",
"Empty username.": "Nama pengguna kosong.", "Empty username.": "Nama pengguna kosong.",
"Face data does not exist, cannot log in": "Data wajah tidak ada, tidak dapat masuk", "Face data does not exist, cannot log in": "Face data does not exist, cannot log in",
"Face data mismatch": "Ketidakcocokan data wajah", "Face data mismatch": "Face data mismatch",
"Failed to parse client IP: %s": "Gagal mengurai IP klien: %s",
"FirstName cannot be blank": "Nama depan tidak boleh kosong", "FirstName cannot be blank": "Nama depan tidak boleh kosong",
"Invitation code cannot be blank": "Kode undangan tidak boleh kosong", "Invitation code cannot be blank": "Invitation code cannot be blank",
"Invitation code exhausted": "Kode undangan habis", "Invitation code exhausted": "Invitation code exhausted",
"Invitation code is invalid": "Kode undangan tidak valid", "Invitation code is invalid": "Invitation code is invalid",
"Invitation code suspended": "Kode undangan ditangguhkan", "Invitation code suspended": "Invitation code suspended",
"LDAP user name or password incorrect": "Nama pengguna atau sandi LDAP salah", "LDAP user name or password incorrect": "Nama pengguna atau kata sandi Ldap salah",
"LastName cannot be blank": "Nama belakang tidak boleh kosong", "LastName cannot be blank": "Nama belakang tidak boleh kosong",
"Multiple accounts with same uid, please check your ldap server": "Beberapa akun dengan uid yang sama, harap periksa server LDAP Anda", "Multiple accounts with same uid, please check your ldap server": "Beberapa akun dengan uid yang sama, harap periksa server ldap Anda",
"Organization does not exist": "Organisasi tidak ada", "Organization does not exist": "Organisasi tidak ada",
"Password cannot be empty": "Kata sandi tidak boleh kosong",
"Phone already exists": "Telepon sudah ada", "Phone already exists": "Telepon sudah ada",
"Phone cannot be empty": "Telepon tidak boleh kosong", "Phone cannot be empty": "Telepon tidak boleh kosong",
"Phone number is invalid": "Nomor telepon tidak valid", "Phone number is invalid": "Nomor telepon tidak valid",
"Please register using the email corresponding to the invitation code": "Silakan daftar menggunakan email yang sesuai dengan kode undangan", "Please register using the email corresponding to the invitation code": "Please register using the email corresponding to the invitation code",
"Please register using the phone corresponding to the invitation code": "Silakan daftar menggunakan nomor telepon yang sesuai dengan kode undangan", "Please register using the phone corresponding to the invitation code": "Please register using the phone corresponding to the invitation code",
"Please register using the username corresponding to the invitation code": "Silakan daftar menggunakan nama pengguna yang sesuai dengan kode undangan", "Please register using the username corresponding to the invitation code": "Please register using the username corresponding to the invitation code",
"Session outdated, please login again": "Sesi kadaluwarsa, silakan masuk lagi", "Session outdated, please login again": "Sesi kedaluwarsa, silakan masuk lagi",
"The invitation code has already been used": "Kode undangan sudah digunakan", "The invitation code has already been used": "The invitation code has already been used",
"The user is forbidden to sign in, please contact the administrator": "Pengguna dilarang masuk, silakan hubungi administrator", "The user is forbidden to sign in, please contact the administrator": "Pengguna dilarang masuk, silakan hubungi administrator",
"The user: %s doesn't exist in LDAP server": "Pengguna: %s tidak ada di server LDAP", "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.": "Nama pengguna hanya bisa menggunakan karakter alfanumerik, garis bawah atau tanda hubung, tidak boleh memiliki dua tanda hubung atau garis bawah berurutan, dan tidak boleh diawali atau diakhiri dengan tanda hubung atau garis bawah.", "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.": "Nama pengguna hanya bisa menggunakan karakter alfanumerik, garis bawah atau tanda hubung, tidak boleh memiliki dua tanda hubung atau garis bawah berurutan, dan tidak boleh diawali atau diakhiri dengan tanda hubung atau garis bawah.",
"The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "Nilai \\\"%s\\\" untuk bidang akun \\\"%s\\\" tidak cocok dengan regex item akun", "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "Nilai \\\"%s\\\" untuk bidang pendaftaran \\\"%s\\\" tidak cocok dengan regex item pendaftaran aplikasi \\\"%s\\\"", "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"",
"Username already exists": "Nama pengguna sudah ada", "Username already exists": "Nama pengguna sudah ada",
"Username cannot be an email address": "Username tidak bisa menjadi alamat email", "Username cannot be an email address": "Username tidak bisa menjadi alamat email",
"Username cannot contain white spaces": "Username tidak boleh mengandung spasi", "Username cannot contain white spaces": "Username tidak boleh mengandung spasi",
"Username cannot start with a digit": "Username tidak dapat dimulai dengan angka", "Username cannot start with a digit": "Username tidak dapat dimulai dengan angka",
"Username is too long (maximum is 255 characters).": "Nama pengguna terlalu panjang (maksimum 255 karakter).", "Username is too long (maximum is 39 characters).": "Nama pengguna terlalu panjang (maksimum 39 karakter).",
"Username must have at least 2 characters": "Nama pengguna harus memiliki setidaknya 2 karakter", "Username must have at least 2 characters": "Nama pengguna harus memiliki setidaknya 2 karakter",
"Username supports email format. Also 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. Also pay attention to the email format.": "Nama pengguna mendukung format email. Nama pengguna hanya boleh berisi karakter alfanumerik, garis bawah atau tanda hubung, tidak boleh memiliki garis bawah atau tanda hubung berturut-turut, dan tidak boleh diawali atau diakhiri dengan garis bawah atau tanda hubung. Perhatikan juga format email.", "You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Anda telah memasukkan kata sandi atau kode yang salah terlalu banyak kali, mohon tunggu selama %d menit dan coba lagi",
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Anda telah memasukkan sandi atau kode yang salah terlalu sering, mohon tunggu selama %d menit lalu coba kembali",
"Your IP address: %s has been banned according to the configuration of: ": "Alamat IP Anda: %s telah diblokir sesuai konfigurasi: ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "Kata sandi Anda telah kedaluwarsa. Silakan atur ulang kata sandi dengan mengklik \\\"Lupa kata sandi\\\"",
"Your region is not allow to signup by phone": "Wilayah Anda tidak diizinkan untuk mendaftar melalui telepon", "Your region is not allow to signup by phone": "Wilayah Anda tidak diizinkan untuk mendaftar melalui telepon",
"password or code is incorrect": "kata sandi atau kode salah", "password or code is incorrect": "password or code is incorrect",
"password or code is incorrect, you have %s remaining chances": "Sandi atau kode salah, Anda memiliki %s kesempatan tersisa", "password or code is incorrect, you have %d remaining chances": "Kata sandi atau kode salah, Anda memiliki %d kesempatan tersisa",
"unsupported password type: %s": "jenis sandi tidak didukung: %s" "unsupported password type: %s": "jenis sandi tidak didukung: %s"
}, },
"enforcer": {
"the adapter: %s is not found": "adapter: %s tidak ditemukan"
},
"general": { "general": {
"Failed to import groups": "Gagal mengimpor grup",
"Failed to import users": "Gagal mengimpor pengguna",
"Missing parameter": "Parameter hilang", "Missing parameter": "Parameter hilang",
"Only admin user can specify user": "Hanya pengguna admin yang dapat menentukan pengguna",
"Please login first": "Silahkan login terlebih dahulu", "Please login first": "Silahkan login terlebih dahulu",
"The organization: %s should have one application at least": "Organisasi: %s harus memiliki setidaknya satu aplikasi", "The organization: %s should have one application at least": "The organization: %s should have one application at least",
"The user: %s doesn't exist": "Pengguna: %s tidak ada", "The user: %s doesn't exist": "Pengguna: %s tidak ada",
"Wrong userId": "userId salah",
"don't support captchaProvider: ": "Jangan mendukung captchaProvider:", "don't support captchaProvider: ": "Jangan mendukung captchaProvider:",
"this operation is not allowed in demo mode": "operasi ini tidak diizinkan dalam mode demo", "this operation is not allowed in demo mode": "this operation is not allowed in demo mode",
"this operation requires administrator to perform": "operasi ini memerlukan administrator untuk melakukannya" "this operation requires administrator to perform": "this operation requires administrator to perform"
}, },
"ldap": { "ldap": {
"Ldap server exist": "Server ldap ada" "Ldap server exist": "Server ldap ada"
}, },
"link": { "link": {
"Please link first": "Silahkan tautkan terlebih dahulu", "Please link first": "Tolong tautkan terlebih dahulu",
"This application has no providers": "Aplikasi ini tidak memiliki penyedia", "This application has no providers": "Aplikasi ini tidak memiliki penyedia",
"This application has no providers of type": " Aplikasi ini tidak memiliki penyedia tipe ", "This application has no providers of type": " Aplikasi ini tidak memiliki penyedia tipe ",
"This provider can't be unlinked": "Penyedia layanan ini tidak dapat dipisahkan", "This provider can't be unlinked": "Pemberi layanan ini tidak dapat dipisahkan",
"You are not the global admin, you can't unlink other users": "Anda bukan admin global, Anda tidak dapat memutuskan tautan pengguna lain", "You are not the global admin, you can't unlink other users": "Anda bukan admin global, Anda tidak dapat memutuskan tautan pengguna lain",
"You can't unlink yourself, you are not a member of any application": "Anda tidak dapat memutuskan tautan diri sendiri, karena Anda bukan anggota dari aplikasi apa pun" "You can't unlink yourself, you are not a member of any application": "Anda tidak dapat memutuskan tautan diri sendiri, karena Anda bukan anggota dari aplikasi apa pun"
}, },
"organization": { "organization": {
"Only admin can modify the %s.": "Hanya admin yang dapat memodifikasi %s.", "Only admin can modify the %s.": "Hanya admin yang dapat memodifikasi %s.",
"The %s is immutable.": "%s tidak dapat diubah.", "The %s is immutable.": "%s tidak dapat diubah.",
"Unknown modify rule %s.": "Aturan modifikasi tidak diketahui %s.", "Unknown modify rule %s.": "Aturan modifikasi tidak diketahui %s."
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "Penambahan pengguna baru ke organisasi 'built-in' (terintegrasi) saat ini dinonaktifkan. Perhatikan: Semua pengguna di organisasi 'built-in' adalah administrator global di Casdoor. Lihat dokumentasi: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. Jika Anda masih ingin membuat pengguna untuk organisasi 'built-in', buka halaman pengaturan organisasi dan aktifkan opsi 'Memiliki persetujuan hak istimewa'."
}, },
"permission": { "permission": {
"The permission: \\\"%s\\\" doesn't exist": "Izin: \\\"%s\\\" tidak ada" "The permission: \\\"%s\\\" doesn't exist": "The permission: \\\"%s\\\" doesn't exist"
}, },
"provider": { "provider": {
"Invalid application id": "ID aplikasi tidak valid", "Invalid application id": "ID aplikasi tidak valid",
"the provider: %s does not exist": "penyedia: %s tidak ada" "the provider: %s does not exist": "provider: %s tidak ada"
}, },
"resource": { "resource": {
"User is nil for tag: avatar": "Pengguna kosong untuk tag: avatar", "User is nil for tag: avatar": "Pengguna kosong untuk tag: avatar",
@@ -149,22 +126,19 @@
"The objectKey: %s is not allowed": "Kunci objek: %s tidak diizinkan", "The objectKey: %s is not allowed": "Kunci objek: %s tidak diizinkan",
"The provider type: %s is not supported": "Jenis penyedia: %s tidak didukung" "The provider type: %s is not supported": "Jenis penyedia: %s tidak didukung"
}, },
"subscription": {
"Error": "Kesalahan"
},
"token": { "token": {
"Grant_type: %s is not supported in this application": "Jenis grant (grant_type) %s tidak didukung dalam aplikasi ini", "Grant_type: %s is not supported in this application": "Jenis grant (grant_type) %s tidak didukung dalam aplikasi ini",
"Invalid application or wrong clientSecret": "Aplikasi tidak valid atau clientSecret salah", "Invalid application or wrong clientSecret": "Aplikasi tidak valid atau clientSecret salah",
"Invalid client_id": "ID klien tidak valid", "Invalid client_id": "Invalid client_id = ID klien tidak valid",
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "URI pengalihan: %s tidak ada dalam daftar URI Pengalihan yang diizinkan", "Redirect URI: %s doesn't exist in the allowed Redirect URI list": "URI pengalihan: %s tidak ada dalam daftar URI Pengalihan yang diizinkan",
"Token not found, invalid accessToken": "Token tidak ditemukan, accessToken tidak valid" "Token not found, invalid accessToken": "Token tidak ditemukan, accessToken tidak valid"
}, },
"user": { "user": {
"Display name cannot be empty": "Nama tampilan tidak boleh kosong", "Display name cannot be empty": "Nama tampilan tidak boleh kosong",
"MFA email is enabled but email is empty": "Email MFA diaktifkan tetapi email kosong", "New password cannot contain blank space.": "Kata sandi baru tidak boleh mengandung spasi kosong."
"MFA phone is enabled but phone number is empty": "Telepon MFA diaktifkan tetapi nomor telepon kosong", },
"New password cannot contain blank space.": "Sandi baru tidak boleh mengandung spasi kosong.", "user_upload": {
"the user's owner and name should not be empty": "pemilik dan nama pengguna tidak boleh kosong" "Failed to import users": "Gagal mengimpor pengguna"
}, },
"util": { "util": {
"No application is found for userId: %s": "Tidak ditemukan aplikasi untuk userId: %s", "No application is found for userId: %s": "Tidak ditemukan aplikasi untuk userId: %s",
@@ -174,20 +148,20 @@
"verification": { "verification": {
"Invalid captcha provider.": "Penyedia captcha tidak valid.", "Invalid captcha provider.": "Penyedia captcha tidak valid.",
"Phone number is invalid in your region %s": "Nomor telepon tidak valid di wilayah anda %s", "Phone number is invalid in your region %s": "Nomor telepon tidak valid di wilayah anda %s",
"The verification code has already been used!": "Kode verifikasi sudah digunakan!", "The verification code has not been sent yet!": "The verification code has not been sent yet!",
"The verification code has not been sent yet!": "Kode verifikasi belum dikirim!", "The verification code has not been sent yet, or has already been used!": "The verification code has not been sent yet, or has already been used!",
"Turing test failed.": "Tes Turing gagal.", "Turing test failed.": "Tes Turing gagal.",
"Unable to get the email modify rule.": "Tidak dapat memperoleh aturan modifikasi email.", "Unable to get the email modify rule.": "Tidak dapat memperoleh aturan modifikasi email.",
"Unable to get the phone modify rule.": "Tidak dapat memodifikasi aturan telepon.", "Unable to get the phone modify rule.": "Tidak dapat memodifikasi aturan telepon.",
"Unknown type": "Tipe tidak diketahui", "Unknown type": "Tipe tidak diketahui",
"Wrong verification code!": "Kode verifikasi salah!", "Wrong verification code!": "Kode verifikasi salah!",
"You should verify your code in %d min!": "Anda harus memverifikasi kode Anda dalam %d menit!", "You should verify your code in %d min!": "Anda harus memverifikasi kode Anda dalam %d menit!",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "silakan tambahkan penyedia SMS ke daftar \\\"Providers\\\" untuk aplikasi: %s", "please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "please add a SMS provider to the \\\"Providers\\\" list for the application: %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "silakan tambahkan penyedia Email ke daftar \\\"Providers\\\" untuk aplikasi: %s", "please add an Email provider to the \\\"Providers\\\" list for the application: %s": "please add an Email provider to the \\\"Providers\\\" list for the application: %s",
"the user does not exist, please sign up first": "Pengguna tidak ada, silakan daftar terlebih dahulu" "the user does not exist, please sign up first": "Pengguna tidak ada, silakan daftar terlebih dahulu"
}, },
"webauthn": { "webauthn": {
"Found no credentials for this user": "Found no credentials for this user", "Found no credentials for this user": "Tidak ditemukan kredensial untuk pengguna ini",
"Please call WebAuthnSigninBegin first": "Harap panggil WebAuthnSigninBegin terlebih dahulu" "Please call WebAuthnSigninBegin first": "Harap panggil WebAuthnSigninBegin terlebih dahulu"
} }
} }

View File

@@ -1,193 +1,167 @@
{ {
"account": { "account": {
"Failed to add user": "Aggiunta utente fallita", "Failed to add user": "Failed to add user",
"Get init score failed, error: %w": "Errore iniziale punteggio: %w", "Get init score failed, error: %w": "Get init score failed, error: %w",
"Please sign out first": "Esegui prima il logout", "Please sign out first": "Please sign out first",
"The application does not allow to sign up new account": "L'app non consente registrazione" "The application does not allow to sign up new account": "The application does not allow to sign up new account"
}, },
"auth": { "auth": {
"Challenge method should be S256": "Metodo challenge deve essere S256", "Challenge method should be S256": "Challenge method should be S256",
"DeviceCode Invalid": "Codice dispositivo non valido", "Failed to create user, user information is invalid: %s": "Failed to create user, user information is invalid: %s",
"Failed to create user, user information is invalid: %s": "Creazione utente fallita: dati non validi: %s", "Failed to login in: %s": "Failed to login in: %s",
"Failed to login in: %s": "Login fallito: %s", "Invalid token": "Invalid token",
"Invalid token": "Token non valido", "State expected: %s, but got: %s": "State expected: %s, but got: %s",
"State expected: %s, but got: %s": "Stato atteso: %s, ricevuto: %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 via %%s, please use another way to sign up": "Account per provider: %s e utente: %s (%s) non esiste, registrazione tramite %%s non consentita", "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) does not exist and is not allowed to sign up as new account, please contact your IT support": "Account per provider: %s e utente: %s (%s) non esiste, registrazione non consentita: contatta l'assistenza IT", "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 account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "Account per provider: %s e utente: %s (%s) già collegato a un altro account: %s (%s)", "The application: %s does not exist": "The application: %s does not exist",
"The application: %s does not exist": "L'app: %s non esiste", "The login method: login with LDAP is not enabled for the application": "The login method: login with LDAP is not enabled for the application",
"The application: %s has disabled users to signin": "The application: %s has disabled users to signin", "The login method: login with SMS is not enabled for the application": "The login method: login with SMS is not enabled for the application",
"The login method: login with LDAP is not enabled for the application": "Metodo di accesso: login con LDAP non abilitato per l'applicazione", "The login method: login with email is not enabled for the application": "The login method: login with email is not enabled for the application",
"The login method: login with SMS is not enabled for the application": "Metodo di accesso: login con SMS non abilitato per l'applicazione", "The login method: login with face is not enabled for the application": "The login method: login with face is not enabled for the application",
"The login method: login with email is not enabled for the application": "Metodo di accesso: login con email non abilitato per l'applicazione", "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 login method: login with face is not enabled for the application": "Metodo di accesso: login con riconoscimento facciale non abilitato per l'applicazione", "The organization: %s does not exist": "The organization: %s does not exist",
"The login method: login with password is not enabled for the application": "Login con password non abilitato per questa app", "The provider: %s is not enabled for the application": "The provider: %s is not enabled for the application",
"The organization: %s does not exist": "L'organizzazione: %s non esiste", "Unauthorized operation": "Unauthorized operation",
"The organization: %s has disabled users to signin": "The organization: %s has disabled users to signin", "Unknown authentication type (not password or provider), form = %s": "Unknown authentication type (not password or provider), form = %s",
"The provider: %s does not exist": "Il provider: %s non esiste", "User's tag: %s is not listed in the application's tags": "User's tag: %s is not listed in the application's tags",
"The provider: %s is not enabled for the application": "Il provider: %s non è abilitato per l'app", "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing"
"Unauthorized operation": "Operazione non autorizzata",
"Unknown authentication type (not password or provider), form = %s": "Tipo di autenticazione sconosciuto (non password o provider), form = %s",
"User's tag: %s is not listed in the application's tags": "Il tag dell'utente: %s non è presente nei tag dell'applicazione",
"UserCode Expired": "Codice utente scaduto",
"UserCode Invalid": "Codice utente non valido",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "L'utente a pagamento %s non ha una sottoscrizione attiva o in attesa e l'applicazione: %s non ha una tariffazione predefinita",
"the application for user %s is not found": "applicazione per l'utente %s non trovata",
"the organization: %s is not found": "organizzazione: %s non trovata"
}, },
"cas": { "cas": {
"Service %s and %s do not match": "Servizi %s e %s non corrispondono" "Service %s and %s do not match": "Service %s and %s do not match"
}, },
"check": { "check": {
"%s does not meet the CIDR format requirements: %s": "%s non soddisfa i requisiti di formato CIDR: %s", "Affiliation cannot be blank": "Affiliation cannot be blank",
"Affiliation cannot be blank": "Affiliazione obbligatoria", "Default code does not match the code's matching rules": "Default code does not match the code's matching rules",
"CIDR for IP: %s should not be empty": "Il CIDR per l'IP: %s non deve essere vuoto", "DisplayName cannot be blank": "DisplayName cannot be blank",
"Default code does not match the code's matching rules": "Il codice predefinito non rispetta le regole di corrispondenza del codice", "DisplayName is not valid real name": "DisplayName is not valid real name",
"DisplayName cannot be blank": "Nome visualizzato obbligatorio", "Email already exists": "Email already exists",
"DisplayName is not valid real name": "Nome visualizzato non valido", "Email cannot be empty": "Email cannot be empty",
"Email already exists": "Email già esistente", "Email is invalid": "Email is invalid",
"Email cannot be empty": "Email obbligatoria", "Empty username.": "Empty username.",
"Email is invalid": "Email non valida", "Face data does not exist, cannot log in": "Face data does not exist, cannot log in",
"Empty username.": "Username vuoto", "Face data mismatch": "Face data mismatch",
"Face data does not exist, cannot log in": "Dati facciali assenti, impossibile effettuare il login", "FirstName cannot be blank": "FirstName cannot be blank",
"Face data mismatch": "Mancata corrispondenza dei dati facciali", "Invitation code cannot be blank": "Invitation code cannot be blank",
"Failed to parse client IP: %s": "Impossibile analizzare l'IP del client: %s", "Invitation code exhausted": "Invitation code exhausted",
"FirstName cannot be blank": "Nome obbligatorio", "Invitation code is invalid": "Invitation code is invalid",
"Invitation code cannot be blank": "Il codice di invito non può essere vuoto", "Invitation code suspended": "Invitation code suspended",
"Invitation code exhausted": "Codice di invito esaurito", "LDAP user name or password incorrect": "LDAP user name or password incorrect",
"Invitation code is invalid": "Codice di invito non valido", "LastName cannot be blank": "LastName cannot be blank",
"Invitation code suspended": "Codice di invito sospeso", "Multiple accounts with same uid, please check your ldap server": "Multiple accounts with same uid, please check your ldap server",
"LDAP user name or password incorrect": "LDAP username o password errati", "Organization does not exist": "Organization does not exist",
"LastName cannot be blank": "Cognome obbligatorio", "Phone already exists": "Phone already exists",
"Multiple accounts with same uid, please check your ldap server": "UID duplicato, verifica il server LDAP", "Phone cannot be empty": "Phone cannot be empty",
"Organization does not exist": "Organizzazione inesistente", "Phone number is invalid": "Phone number is invalid",
"Password cannot be empty": "La password non può essere vuota", "Please register using the email corresponding to the invitation code": "Please register using the email corresponding to the invitation code",
"Phone already exists": "Telefono già esistente", "Please register using the phone corresponding to the invitation code": "Please register using the phone corresponding to the invitation code",
"Phone cannot be empty": "Telefono obbligatorio", "Please register using the username corresponding to the invitation code": "Please register using the username corresponding to the invitation code",
"Phone number is invalid": "Numero telefono non valido", "Session outdated, please login again": "Session outdated, please login again",
"Please register using the email corresponding to the invitation code": "Registrati con l'email corrispondente al codice di invito", "The invitation code has already been used": "The invitation code has already been used",
"Please register using the phone corresponding to the invitation code": "Registrati con il numero di telefono corrispondente al codice di invito", "The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
"Please register using the username corresponding to the invitation code": "Registrati con il nome utente corrispondente al codice di invito", "The user: %s doesn't exist in LDAP server": "The user: %s doesn't exist in LDAP server",
"Session outdated, please login again": "Sessione scaduta, rieffettua il login", "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.",
"The invitation code has already been used": "Il codice di invito è già stato utilizzato", "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex",
"The user is forbidden to sign in, please contact the administrator": "Utente bloccato, contatta l'amministratore", "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"",
"The user: %s doesn't exist in LDAP server": "L'utente: %s non esiste nel server LDAP", "Username already exists": "Username already exists",
"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 solo caratteri alfanumerici, underscore o trattini. Non può iniziare/finire con trattino o underscore.", "Username cannot be an email address": "Username cannot be an email address",
"The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "Il valore \\\"%s\\\" per il campo account \\\"%s\\\" non corrisponde alla regex dell'elemento account", "Username cannot contain white spaces": "Username cannot contain white spaces",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "Il valore \\\"%s\\\" per il campo registrazione \\\"%s\\\" non corrisponde alla regex dell'elemento registrazione dell'applicazione \\\"%s\\\"", "Username cannot start with a digit": "Username cannot start with a digit",
"Username already exists": "Username già esistente", "Username is too long (maximum is 39 characters).": "Username is too long (maximum is 39 characters).",
"Username cannot be an email address": "Username non può essere un'email", "Username must have at least 2 characters": "Username must have at least 2 characters",
"Username cannot contain white spaces": "Username non può contenere spazi", "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",
"Username cannot start with a digit": "Username non può iniziare con un numero", "Your region is not allow to signup by phone": "Your region is not allow to signup by phone",
"Username is too long (maximum is 255 characters).": "Username troppo lungo (max 255 caratteri)", "password or code is incorrect": "password or code is incorrect",
"Username must have at least 2 characters": "Username minimo 2 caratteri", "password or code is incorrect, you have %d remaining chances": "password or code is incorrect, you have %d remaining chances",
"Username supports email format. Also 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. Also pay attention to the email format.": "Il nome utente supporta il formato email. Inoltre il nome utente può contenere solo caratteri alfanumerici, underscore o trattini, non può avere trattini o underscore consecutivi e non può iniziare o terminare con un trattino o underscore. Presta attenzione al formato email.", "unsupported password type: %s": "unsupported password type: %s"
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Troppi tentativi errati, attendi %d minuti",
"Your IP address: %s has been banned according to the configuration of: ": "Il tuo indirizzo IP: %s è stato bannato secondo la configurazione di: ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "La tua password è scaduta. Reimposta la password cliccando \\\"Password dimenticata\\\"",
"Your region is not allow to signup by phone": "Registrazione via telefono non consentita nella tua regione",
"password or code is incorrect": "password o codice errati",
"password or code is incorrect, you have %s remaining chances": "password o codice errati, %s tentativi rimasti",
"unsupported password type: %s": "tipo password non supportato: %s"
},
"enforcer": {
"the adapter: %s is not found": "l'adapter: %s non è stato trovato"
}, },
"general": { "general": {
"Failed to import groups": "Impossibile importare i gruppi", "Missing parameter": "Missing parameter",
"Failed to import users": "Importazione utenti fallita", "Please login first": "Please login first",
"Missing parameter": "Parametro mancante", "The organization: %s should have one application at least": "The organization: %s should have one application at least",
"Only admin user can specify user": "Solo un utente amministratore può specificare l'utente", "The user: %s doesn't exist": "The user: %s doesn't exist",
"Please login first": "Effettua prima il login", "don't support captchaProvider: ": "don't support captchaProvider: ",
"The organization: %s should have one application at least": "L'organizzazione: %s deve avere almeno un'applicazione", "this operation is not allowed in demo mode": "this operation is not allowed in demo mode",
"The user: %s doesn't exist": "Utente: %s non esiste", "this operation requires administrator to perform": "this operation requires administrator to perform"
"Wrong userId": "ID utente errato",
"don't support captchaProvider: ": "captchaProvider non supportato: ",
"this operation is not allowed in demo mode": "questa operazione non è consentita in modalità demo",
"this operation requires administrator to perform": "questa operazione richiede un amministratore"
}, },
"ldap": { "ldap": {
"Ldap server exist": "Server LDAP esistente" "Ldap server exist": "Ldap server exist"
}, },
"link": { "link": {
"Please link first": "Collega prima", "Please link first": "Please link first",
"This application has no providers": "L'app non ha provider", "This application has no providers": "This application has no providers",
"This application has no providers of type": "L'app non ha provider di tipo", "This application has no providers of type": "This application has no providers of type",
"This provider can't be unlinked": "Questo provider non può essere scollegato", "This provider can't be unlinked": "This provider can't be unlinked",
"You are not the global admin, you can't unlink other users": "Non sei admin globale, non puoi scollegare altri utenti", "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": "Non puoi scollegarti, non sei membro di alcuna app" "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": { "organization": {
"Only admin can modify the %s.": "Solo admin può modificare %s.", "Only admin can modify the %s.": "Only admin can modify the %s.",
"The %s is immutable.": "%s è immutabile.", "The %s is immutable.": "The %s is immutable.",
"Unknown modify rule %s.": "Regola modifica %s sconosciuta.", "Unknown modify rule %s.": "Unknown modify rule %s."
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "L'aggiunta di un nuovo utente all'organizzazione 'built-in' (integrata) è attualmente disabilitata. Si noti che tutti gli utenti nell'organizzazione 'built-in' sono amministratori globali in Casdoor. Consultare la documentazione: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. Se si desidera comunque creare un utente per l'organizzazione 'built-in', andare alla pagina delle impostazioni dell'organizzazione e abilitare l'opzione 'Ha il consenso ai privilegi'."
}, },
"permission": { "permission": {
"The permission: \\\"%s\\\" doesn't exist": "Il permesso: \\\"%s\\\" non esiste" "The permission: \\\"%s\\\" doesn't exist": "The permission: \\\"%s\\\" doesn't exist"
}, },
"provider": { "provider": {
"Invalid application id": "ID app non valido", "Invalid application id": "Invalid application id",
"the provider: %s does not exist": "provider: %s non esiste" "the provider: %s does not exist": "the provider: %s does not exist"
}, },
"resource": { "resource": {
"User is nil for tag: avatar": "Utente nullo per tag: avatar", "User is nil for tag: avatar": "User is nil for tag: avatar",
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Username o percorso file vuoti: username = %s, fullFilePath = %s" "Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Username or fullFilePath is empty: username = %s, fullFilePath = %s"
}, },
"saml": { "saml": {
"Application %s not found": "App %s non trovata" "Application %s not found": "Application %s not found"
}, },
"saml_sp": { "saml_sp": {
"provider %s's category is not SAML": "Provider %s non è di tipo SAML" "provider %s's category is not SAML": "provider %s's category is not SAML"
}, },
"service": { "service": {
"Empty parameters for emailForm: %v": "Parametri emailForm vuoti: %v", "Empty parameters for emailForm: %v": "Empty parameters for emailForm: %v",
"Invalid Email receivers: %s": "Destinatari email non validi: %s", "Invalid Email receivers: %s": "Invalid Email receivers: %s",
"Invalid phone receivers: %s": "Destinatari SMS non validi: %s" "Invalid phone receivers: %s": "Invalid phone receivers: %s"
}, },
"storage": { "storage": {
"The objectKey: %s is not allowed": "Chiave oggetto: %s non consentita", "The objectKey: %s is not allowed": "The objectKey: %s is not allowed",
"The provider type: %s is not supported": "Tipo provider: %s non supportato" "The provider type: %s is not supported": "The provider type: %s is not supported"
},
"subscription": {
"Error": "Errore"
}, },
"token": { "token": {
"Grant_type: %s is not supported in this application": "Grant_type: %s non supportato in questa app", "Grant_type: %s is not supported in this application": "Grant_type: %s is not supported in this application",
"Invalid application or wrong clientSecret": "App non valida o clientSecret errato", "Invalid application or wrong clientSecret": "Invalid application or wrong clientSecret",
"Invalid client_id": "client_id non valido", "Invalid client_id": "Invalid client_id",
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "URI di redirect: %s non consentito", "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 non trovato, accessToken non valido" "Token not found, invalid accessToken": "Token not found, invalid accessToken"
}, },
"user": { "user": {
"Display name cannot be empty": "Nome visualizzato obbligatorio", "Display name cannot be empty": "Display name cannot be empty",
"MFA email is enabled but email is empty": "L'email MFA è abilitata ma l'email è vuota", "New password cannot contain blank space.": "New password cannot contain blank space."
"MFA phone is enabled but phone number is empty": "Il telefono MFA è abilitato ma il numero di telefono è vuoto", },
"New password cannot contain blank space.": "Nuova password non può contenere spazi", "user_upload": {
"the user's owner and name should not be empty": "il proprietario e il nome dell'utente non devono essere vuoti" "Failed to import users": "Failed to import users"
}, },
"util": { "util": {
"No application is found for userId: %s": "Nessuna app trovata per userId: %s", "No application is found for userId: %s": "No application is found for userId: %s",
"No provider for category: %s is found for application: %s": "Nessun provider per categoria: %s nell'app: %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": "Provider: %s non trovato" "The provider: %s is not found": "The provider: %s is not found"
}, },
"verification": { "verification": {
"Invalid captcha provider.": "Provider captcha non valido", "Invalid captcha provider.": "Invalid captcha provider.",
"Phone number is invalid in your region %s": "Numero telefono non valido nella regione %s", "Phone number is invalid in your region %s": "Phone number is invalid in your region %s",
"The verification code has already been used!": "Il codice di verifica è già stato utilizzato!", "The verification code has not been sent yet!": "The verification code has not been sent yet!",
"The verification code has not been sent yet!": "Il codice di verifica non è ancora stato inviato!", "The verification code has not been sent yet, or has already been used!": "The verification code has not been sent yet, or has already been used!",
"Turing test failed.": "Test Turing fallito", "Turing test failed.": "Turing test failed.",
"Unable to get the email modify rule.": "Impossibile ottenere regola modifica email", "Unable to get the email modify rule.": "Unable to get the email modify rule.",
"Unable to get the phone modify rule.": "Impossibile ottenere regola modifica telefono", "Unable to get the phone modify rule.": "Unable to get the phone modify rule.",
"Unknown type": "Tipo sconosciuto", "Unknown type": "Unknown type",
"Wrong verification code!": "Codice verifica errato!", "Wrong verification code!": "Wrong verification code!",
"You should verify your code in %d min!": "Verifica codice entro %d min!", "You should verify your code in %d min!": "You should verify your code in %d min!",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "aggiungi un provider SMS all'elenco \\\"Providers\\\" per l'applicazione: %s", "please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "please add a SMS provider to the \\\"Providers\\\" list for the application: %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "aggiungi un provider Email all'elenco \\\"Providers\\\" per l'applicazione: %s", "please add an Email provider to the \\\"Providers\\\" list for the application: %s": "please add an Email provider to the \\\"Providers\\\" list for the application: %s",
"the user does not exist, please sign up first": "Utente inesistente, registrati prima" "the user does not exist, please sign up first": "the user does not exist, please sign up first"
}, },
"webauthn": { "webauthn": {
"Found no credentials for this user": "Found no credentials for this user", "Found no credentials for this user": "Found no credentials for this user",
"Please call WebAuthnSigninBegin first": "Chiamare prima WebAuthnSigninBegin" "Please call WebAuthnSigninBegin first": "Please call WebAuthnSigninBegin first"
} }
} }

View File

@@ -7,7 +7,6 @@
}, },
"auth": { "auth": {
"Challenge method should be S256": "チャレンジメソッドはS256である必要があります", "Challenge method should be S256": "チャレンジメソッドはS256である必要があります",
"DeviceCode Invalid": "デバイスコードが無効です",
"Failed to create user, user information is invalid: %s": "ユーザーの作成に失敗しました。ユーザー情報が無効です:%s", "Failed to create user, user information is invalid: %s": "ユーザーの作成に失敗しました。ユーザー情報が無効です:%s",
"Failed to login in: %s": "ログインできませんでした:%s", "Failed to login in: %s": "ログインできませんでした:%s",
"Invalid token": "無効なトークン", "Invalid token": "無効なトークン",
@@ -16,95 +15,74 @@
"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": "プロバイダー名:%sとユーザー名%s%sのアカウントは存在しません。新しいアカウントとしてサインアップすることはできません。 ITサポートに連絡してください", "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": "プロバイダー名:%sとユーザー名%s%sのアカウントは存在しません。新しいアカウントとしてサインアップすることはできません。 ITサポートに連絡してください",
"The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "プロバイダのアカウント:%s とユーザー名:%s (%s) は既に別のアカウント:%s (%s) にリンクされています", "The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "プロバイダのアカウント:%s とユーザー名:%s (%s) は既に別のアカウント:%s (%s) にリンクされています",
"The application: %s does not exist": "アプリケーション: %sは存在しません", "The application: %s does not exist": "アプリケーション: %sは存在しません",
"The application: %s has disabled users to signin": "The application: %s has disabled users to signin", "The login method: login with LDAP is not enabled for the application": "The login method: login with LDAP is not enabled for the application",
"The login method: login with LDAP is not enabled for the application": "このアプリケーションでは LDAP ログインは有効になっていません", "The login method: login with SMS is not enabled for the application": "The login method: login with SMS is not enabled for the application",
"The login method: login with SMS is not enabled for the application": "このアプリケーションでは SMS ログインは有効になっていません", "The login method: login with email is not enabled for the application": "The login method: login with email is not enabled for the application",
"The login method: login with email is not enabled for the application": "このアプリケーションではメールログインは有効になっていません", "The login method: login with face is not enabled for the application": "The login method: login with face is not enabled for the application",
"The login method: login with face is not enabled for the application": "このアプリケーションでは顔認証ログインは有効になっていません",
"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 organization: %s does not exist": "組織「%s」は存在しません", "The organization: %s does not exist": "The organization: %s does not exist",
"The organization: %s has disabled users to signin": "The organization: %s has disabled users to signin",
"The provider: %s does not exist": "プロバイダ「%s」は存在しません",
"The provider: %s is not enabled for the application": "プロバイダー:%sはアプリケーションでは有効化されていません", "The provider: %s is not enabled for the application": "プロバイダー:%sはアプリケーションでは有効化されていません",
"Unauthorized operation": "不正操作", "Unauthorized operation": "不正操作",
"Unknown authentication type (not password or provider), form = %s": "不明な認証タイプ(パスワードまたはプロバイダーではない)フォーム=%s", "Unknown authentication type (not password or provider), form = %s": "不明な認証タイプ(パスワードまたはプロバイダーではない)フォーム=%s",
"User's tag: %s is not listed in the application's tags": "ユーザータグ「%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",
"UserCode Expired": "ユーザーコードの有効期限が切れています", "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing"
"UserCode Invalid": "ユーザーコードが無効です",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "有料ユーザー「%s」には有効または保留中のサブスクリプションがなく、アプリケーション「%s」にはデフォルトの価格設定がありません",
"the application for user %s is not found": "ユーザー「%s」のアプリケーションが見つかりません",
"the organization: %s is not found": "組織「%s」が見つかりません"
}, },
"cas": { "cas": {
"Service %s and %s do not match": "サービス%sと%sは一致しません" "Service %s and %s do not match": "サービス%sと%sは一致しません"
}, },
"check": { "check": {
"%s does not meet the CIDR format requirements: %s": "%s は CIDR フォーマットの要件を満たしていません: %s",
"Affiliation cannot be blank": "所属は空白にできません", "Affiliation cannot be blank": "所属は空白にできません",
"CIDR for IP: %s should not be empty": "IP「%s」の CIDR は空にできません", "Default code does not match the code's matching rules": "Default code does not match the code's matching rules",
"Default code does not match the code's matching rules": "デフォルトコードがコードの一致ルールに一致しません",
"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.": "空のユーザー名。",
"Face data does not exist, cannot log in": "顔認証データが存在しないため、ログインできません", "Face data does not exist, cannot log in": "Face data does not exist, cannot log in",
"Face data mismatch": "顔認証データが一致しません", "Face data mismatch": "Face data mismatch",
"Failed to parse client IP: %s": "クライアント IP「%s」の解析に失敗しました",
"FirstName cannot be blank": "ファーストネームは空白にできません", "FirstName cannot be blank": "ファーストネームは空白にできません",
"Invitation code cannot be blank": "招待コードは空にできません", "Invitation code cannot be blank": "Invitation code cannot be blank",
"Invitation code exhausted": "招待コードの使用回数が上限に達しました", "Invitation code exhausted": "Invitation code exhausted",
"Invitation code is invalid": "招待コードが無効です", "Invitation code is invalid": "Invitation code is invalid",
"Invitation code suspended": "招待コードは一時的に無効化されています", "Invitation code suspended": "Invitation code suspended",
"LDAP user name or password incorrect": "Ldapのユーザー名またはパスワードが間違っています", "LDAP user name or password incorrect": "Ldapのユーザー名またはパスワードが間違っています",
"LastName cannot be blank": "姓は空白にできません", "LastName cannot be blank": "姓は空白にできません",
"Multiple accounts with same uid, please check your ldap server": "同じuidを持つ複数のアカウントがあります。あなたのLDAPサーバーを確認してください", "Multiple accounts with same uid, please check your ldap server": "同じuidを持つ複数のアカウントがあります。あなたのLDAPサーバーを確認してください",
"Organization does not exist": "組織は存在しません", "Organization does not exist": "組織は存在しません",
"Password cannot be empty": "パスワードは空にできません",
"Phone already exists": "電話はすでに存在しています", "Phone already exists": "電話はすでに存在しています",
"Phone cannot be empty": "電話は空っぽにできません", "Phone cannot be empty": "電話は空っぽにできません",
"Phone number is invalid": "電話番号が無効です", "Phone number is invalid": "電話番号が無効です",
"Please register using the email corresponding to the invitation code": "招待コードに対応するメールアドレスで登録してください", "Please register using the email corresponding to the invitation code": "Please register using the email corresponding to the invitation code",
"Please register using the phone corresponding to the invitation code": "招待コードに対応する電話番号で登録してください", "Please register using the phone corresponding to the invitation code": "Please register using the phone corresponding to the invitation code",
"Please register using the username corresponding to the invitation code": "招待コードに対応するユーザー名で登録してください", "Please register using the username corresponding to the invitation code": "Please register using the username corresponding to the invitation code",
"Session outdated, please login again": "セッションが期限切れになりました。再度ログインしてください", "Session outdated, please login again": "セッションが期限切れになりました。再度ログインしてください",
"The invitation code has already been used": "この招待コードは既に使用されています", "The invitation code has already been used": "The invitation code has already been used",
"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": "ユーザー「%s」は LDAP サーバーに存在しません", "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.": "ユーザー名には英数字、アンダースコア、ハイフンしか含めることができません。連続したハイフンまたはアンダースコアは不可であり、ハイフンまたはアンダースコアで始まるまたは終わることもできません。",
"The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "アカウントフィールド「%s」の値「%s」がアカウント項目の正規表現に一致しません", "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "アプリケーション「%s」のサインアップ項目「%s」の値「%s」が正規表現に一致しません", "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"",
"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 255 characters).": "ユーザー名が長すぎます(最大255文字)。", "Username is too long (maximum is 39 characters).": "ユーザー名が長すぎます(最大39文字)。",
"Username must have at least 2 characters": "ユーザー名は少なくとも2文字必要です", "Username must have at least 2 characters": "ユーザー名は少なくとも2文字必要です",
"Username supports email format. Also 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. Also pay attention to the email format.": "ユーザー名はメール形式もサポートします。ユーザー名は英数字、アンダースコア、またはハイフンのみを含め、連続するハイフンやアンダースコアは使用できません。また、ハイフンまたはアンダースコアで始まったり終わったりすることもできません。メール形式にも注意してください。",
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "あなたは間違ったパスワードまたはコードを何度も入力しました。%d 分間待ってから再度お試しください", "You have entered the wrong password or code too many times, please wait for %d minutes and try again": "あなたは間違ったパスワードまたはコードを何度も入力しました。%d 分間待ってから再度お試しください",
"Your IP address: %s has been banned according to the configuration of: ": "あなたの IP アドレス「%s」は設定によりアクセスが禁止されています: ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "パスワードの有効期限が切れています。「パスワードを忘れた方はこちら」をクリックしてリセットしてください",
"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",
"password or code is incorrect, you have %s remaining chances": "パスワードまたはコードが間違っています。あと %s 回の試行機会があります", "password or code is incorrect, you have %d remaining chances": "パスワードまたはコードが間違っています。あと%d回の試行機会があります",
"unsupported password type: %s": "サポートされていないパスワードタイプ:%s" "unsupported password type: %s": "サポートされていないパスワードタイプ:%s"
}, },
"enforcer": {
"the adapter: %s is not found": "アダプタ「%s」が見つかりません"
},
"general": { "general": {
"Failed to import groups": "グループのインポートに失敗しました",
"Failed to import users": "ユーザーのインポートに失敗しました",
"Missing parameter": "不足しているパラメーター", "Missing parameter": "不足しているパラメーター",
"Only admin user can specify user": "管理者ユーザーのみがユーザーを指定できます",
"Please login first": "最初にログインしてください", "Please login first": "最初にログインしてください",
"The organization: %s should have one application at least": "組織「%s」は少なくとも1つのアプリケーションを持っている必要があります", "The organization: %s should have one application at least": "The organization: %s should have one application at least",
"The user: %s doesn't exist": "そのユーザー:%sは存在しません", "The user: %s doesn't exist": "そのユーザー:%sは存在しません",
"Wrong userId": "無効なユーザーIDです",
"don't support captchaProvider: ": "captchaProviderをサポートしないでください", "don't support captchaProvider: ": "captchaProviderをサポートしないでください",
"this operation is not allowed in demo mode": "この操作はデモモードでは許可されていません", "this operation is not allowed in demo mode": "this operation is not allowed in demo mode",
"this operation requires administrator to perform": "この操作は管理者権限が必要です" "this operation requires administrator to perform": "this operation requires administrator to perform"
}, },
"ldap": { "ldap": {
"Ldap server exist": "LDAPサーバーは存在します" "Ldap server exist": "LDAPサーバーは存在します"
@@ -120,11 +98,10 @@
"organization": { "organization": {
"Only admin can modify the %s.": "管理者のみが%sを変更できます。", "Only admin can modify the %s.": "管理者のみが%sを変更できます。",
"The %s is immutable.": "%sは不変です。", "The %s is immutable.": "%sは不変です。",
"Unknown modify rule %s.": "未知の変更ルール%s。", "Unknown modify rule %s.": "未知の変更ルール%s。"
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "「built-in」組み込み組織への新しいユーザーの追加は現在無効になっています。注意「built-in」組織のすべてのユーザーは、Casdoor のグローバル管理者です。ドキュメントを参照してくださいhttps://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself。「built-in」組織のユーザーを作成したい場合は、組織の設定ページに移動し、「特権同意を持つ」オプションを有効にしてください。"
}, },
"permission": { "permission": {
"The permission: \\\"%s\\\" doesn't exist": "権限「%s」は存在しません" "The permission: \\\"%s\\\" doesn't exist": "The permission: \\\"%s\\\" doesn't exist"
}, },
"provider": { "provider": {
"Invalid application id": "アプリケーションIDが無効です", "Invalid application id": "アプリケーションIDが無効です",
@@ -149,9 +126,6 @@
"The objectKey: %s is not allowed": "オブジェクトキー %s は許可されていません", "The objectKey: %s is not allowed": "オブジェクトキー %s は許可されていません",
"The provider type: %s is not supported": "プロバイダータイプ:%sはサポートされていません" "The provider type: %s is not supported": "プロバイダータイプ:%sはサポートされていません"
}, },
"subscription": {
"Error": "エラー"
},
"token": { "token": {
"Grant_type: %s is not supported in this application": "grant_type%sはこのアプリケーションでサポートされていません", "Grant_type: %s is not supported in this application": "grant_type%sはこのアプリケーションでサポートされていません",
"Invalid application or wrong clientSecret": "無効なアプリケーションまたは誤ったクライアントシークレットです", "Invalid application or wrong clientSecret": "無効なアプリケーションまたは誤ったクライアントシークレットです",
@@ -161,10 +135,10 @@
}, },
"user": { "user": {
"Display name cannot be empty": "表示名は空にできません", "Display name cannot be empty": "表示名は空にできません",
"MFA email is enabled but email is empty": "MFA メールが有効になっていますが、メールアドレスが空です", "New password cannot contain blank space.": "新しいパスワードにはスペースを含めることはできません。"
"MFA phone is enabled but phone number is empty": "MFA 電話番号が有効になっていますが、電話番号が空です", },
"New password cannot contain blank space.": "新しいパスワードにはスペースを含めることはできません。", "user_upload": {
"the user's owner and name should not be empty": "ユーザーのオーナーと名前は空にできません" "Failed to import users": "ユーザーのインポートに失敗しました"
}, },
"util": { "util": {
"No application is found for userId: %s": "ユーザーIDに対するアプリケーションが見つかりません %s", "No application is found for userId: %s": "ユーザーIDに対するアプリケーションが見つかりません %s",
@@ -174,20 +148,20 @@
"verification": { "verification": {
"Invalid captcha provider.": "無効なCAPTCHAプロバイダー。", "Invalid captcha provider.": "無効なCAPTCHAプロバイダー。",
"Phone number is invalid in your region %s": "電話番号はあなたの地域で無効です %s", "Phone number is invalid in your region %s": "電話番号はあなたの地域で無効です %s",
"The verification code has already been used!": "この検証コードは既に使用されています!", "The verification code has not been sent yet!": "The verification code has not been sent yet!",
"The verification code has not been sent yet!": "検証コードはまだ送信されていません!", "The verification code has not been sent yet, or has already been used!": "The verification code has not been sent yet, or has already been used!",
"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!": "あなたは%d分であなたのコードを確認する必要があります", "You should verify your code in %d min!": "あなたは%d分であなたのコードを確認する必要があります",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "アプリケーション「%s」の「Providers」リストに SMS プロバイダを追加してください", "please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "please add a SMS provider to the \\\"Providers\\\" list for the application: %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "アプリケーション「%s」の「Providers」リストにメールプロバイダを追加してください", "please add an Email provider to the \\\"Providers\\\" list for the application: %s": "please add an Email provider to the \\\"Providers\\\" list for the application: %s",
"the user does not exist, please sign up first": "ユーザーは存在しません。まず登録してください" "the user does not exist, please sign up first": "ユーザーは存在しません。まず登録してください"
}, },
"webauthn": { "webauthn": {
"Found no credentials for this user": "Found no credentials for this user", "Found no credentials for this user": "このユーザーの資格情報が見つかりませんでした",
"Please call WebAuthnSigninBegin first": "最初にWebAuthnSigninBeginを呼び出してください" "Please call WebAuthnSigninBegin first": "最初にWebAuthnSigninBeginを呼び出してください"
} }
} }

View File

@@ -1,193 +1,167 @@
{ {
"account": { "account": {
"Failed to add user": "Gebruiker toevoegen mislukt", "Failed to add user": "Failed to add user",
"Get init score failed, error: %w": "Initiële score ophalen mislukt, fout: %w", "Get init score failed, error: %w": "Get init score failed, error: %w",
"Please sign out first": "Gelieve eerst uit te loggen", "Please sign out first": "Please sign out first",
"The application does not allow to sign up new account": "De applicatie staat geen nieuwe registraties toe" "The application does not allow to sign up new account": "The application does not allow to sign up new account"
}, },
"auth": { "auth": {
"Challenge method should be S256": "Challenge-methode moet S256 zijn", "Challenge method should be S256": "Challenge method should be S256",
"DeviceCode Invalid": "DeviceCode ongeldig", "Failed to create user, user information is invalid: %s": "Failed to create user, user information is invalid: %s",
"Failed to create user, user information is invalid: %s": "Gebruiker aanmaken mislukt, gebruikersinformatie ongeldig: %s", "Failed to login in: %s": "Failed to login in: %s",
"Failed to login in: %s": "Inloggen mislukt: %s", "Invalid token": "Invalid token",
"Invalid token": "Ongeldige token", "State expected: %s, but got: %s": "State expected: %s, but got: %s",
"State expected: %s, but got: %s": "Verwachte state: %s, maar kreeg: %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 via %%s, please use another way to sign up": "Account voor provider: %s en gebruikersnaam: %s (%s) bestaat niet en mag niet registreren via %%s, gebruik een andere methode", "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) does not exist and is not allowed to sign up as new account, please contact your IT support": "Account voor provider: %s en gebruikersnaam: %s (%s) bestaat niet en mag niet registreren, contacteer 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 account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "Account voor provider: %s en gebruikersnaam: %s (%s) is al gelinkt aan ander account: %s (%s)", "The application: %s does not exist": "The application: %s does not exist",
"The application: %s does not exist": "Applicatie: %s bestaat niet", "The login method: login with LDAP is not enabled for the application": "The login method: login with LDAP is not enabled for the application",
"The application: %s has disabled users to signin": "The application: %s has disabled users to signin", "The login method: login with SMS is not enabled for the application": "The login method: login with SMS is not enabled for the application",
"The login method: login with LDAP is not enabled for the application": "Inloggen via LDAP is niet ingeschakeld voor deze applicatie", "The login method: login with email is not enabled for the application": "The login method: login with email is not enabled for the application",
"The login method: login with SMS is not enabled for the application": "Inloggen via SMS is niet ingeschakeld voor deze applicatie", "The login method: login with face is not enabled for the application": "The login method: login with face is not enabled for the application",
"The login method: login with email is not enabled for the application": "Inloggen via e-mail is niet ingeschakeld voor deze applicatie", "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 login method: login with face is not enabled for the application": "Inloggen via gezichtsherkenning is niet ingeschakeld voor deze applicatie", "The organization: %s does not exist": "The organization: %s does not exist",
"The login method: login with password is not enabled for the application": "Inloggen via wachtwoord is niet ingeschakeld voor deze applicatie", "The provider: %s is not enabled for the application": "The provider: %s is not enabled for the application",
"The organization: %s does not exist": "Organisatie: %s bestaat niet", "Unauthorized operation": "Unauthorized operation",
"The organization: %s has disabled users to signin": "The organization: %s has disabled users to signin", "Unknown authentication type (not password or provider), form = %s": "Unknown authentication type (not password or provider), form = %s",
"The provider: %s does not exist": "Provider: %s bestaat niet", "User's tag: %s is not listed in the application's tags": "User's tag: %s is not listed in the application's tags",
"The provider: %s is not enabled for the application": "Provider: %s is niet ingeschakeld voor de applicatie", "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing"
"Unauthorized operation": "Ongeautoriseerde handeling",
"Unknown authentication type (not password or provider), form = %s": "Onbekend authenticatietype (geen wachtwoord of provider), formulier = %s",
"User's tag: %s is not listed in the application's tags": "Gebruikerstag: %s staat niet in de applicatietags",
"UserCode Expired": "UserCode verlopen",
"UserCode Invalid": "UserCode ongeldig",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "Betaalde gebruiker %s heeft geen actief of lopend abonnement en applicatie: %s heeft geen standaardprijzen",
"the application for user %s is not found": "Applicatie voor gebruiker %s niet gevonden",
"the organization: %s is not found": "Organisatie: %s niet gevonden"
}, },
"cas": { "cas": {
"Service %s and %s do not match": "Service %s en %s komen niet overeen" "Service %s and %s do not match": "Service %s and %s do not match"
}, },
"check": { "check": {
"%s does not meet the CIDR format requirements: %s": "%s voldoet niet aan CIDR-formaat: %s", "Affiliation cannot be blank": "Affiliation cannot be blank",
"Affiliation cannot be blank": "Organisatie mag niet leeg zijn", "Default code does not match the code's matching rules": "Default code does not match the code's matching rules",
"CIDR for IP: %s should not be empty": "CIDR voor IP: %s mag niet leeg zijn", "DisplayName cannot be blank": "DisplayName cannot be blank",
"Default code does not match the code's matching rules": "Standaardcode komt niet overeen met matching rules", "DisplayName is not valid real name": "DisplayName is not valid real name",
"DisplayName cannot be blank": "Weergavenaam mag niet leeg zijn", "Email already exists": "Email already exists",
"DisplayName is not valid real name": "Weergavenaam is geen geldige echte naam", "Email cannot be empty": "Email cannot be empty",
"Email already exists": "E-mailadres bestaat al", "Email is invalid": "Email is invalid",
"Email cannot be empty": "E-mailadres mag niet leeg zijn", "Empty username.": "Empty username.",
"Email is invalid": "Ongeldig e-mailadres", "Face data does not exist, cannot log in": "Face data does not exist, cannot log in",
"Empty username.": "Lege gebruikersnaam.", "Face data mismatch": "Face data mismatch",
"Face data does not exist, cannot log in": "Gezichtsgegevens ontbreken, inloggen niet mogelijk", "FirstName cannot be blank": "FirstName cannot be blank",
"Face data mismatch": "Gezichtsgegevens komen niet overeen", "Invitation code cannot be blank": "Invitation code cannot be blank",
"Failed to parse client IP: %s": "Client-IP parsen mislukt: %s", "Invitation code exhausted": "Invitation code exhausted",
"FirstName cannot be blank": "Voornaam mag niet leeg zijn", "Invitation code is invalid": "Invitation code is invalid",
"Invitation code cannot be blank": "Uitnodigingscode mag niet leeg zijn", "Invitation code suspended": "Invitation code suspended",
"Invitation code exhausted": "Uitnodigingscode uitgeput", "LDAP user name or password incorrect": "LDAP user name or password incorrect",
"Invitation code is invalid": "Uitnodigingscode ongeldig", "LastName cannot be blank": "LastName cannot be blank",
"Invitation code suspended": "Uitnodigingscode opgeschort", "Multiple accounts with same uid, please check your ldap server": "Multiple accounts with same uid, please check your ldap server",
"LDAP user name or password incorrect": "LDAP-gebruikersnaam of wachtwoord onjuist", "Organization does not exist": "Organization does not exist",
"LastName cannot be blank": "Achternaam mag niet leeg zijn", "Phone already exists": "Phone already exists",
"Multiple accounts with same uid, please check your ldap server": "Meerdere accounts met zelfde uid, controleer LDAP-server", "Phone cannot be empty": "Phone cannot be empty",
"Organization does not exist": "Organisatie bestaat niet", "Phone number is invalid": "Phone number is invalid",
"Password cannot be empty": "Wachtwoord mag niet leeg zijn", "Please register using the email corresponding to the invitation code": "Please register using the email corresponding to the invitation code",
"Phone already exists": "Telefoonnummer bestaat al", "Please register using the phone corresponding to the invitation code": "Please register using the phone corresponding to the invitation code",
"Phone cannot be empty": "Telefoonnummer mag niet leeg zijn", "Please register using the username corresponding to the invitation code": "Please register using the username corresponding to the invitation code",
"Phone number is invalid": "Ongeldig telefoonnummer", "Session outdated, please login again": "Session outdated, please login again",
"Please register using the email corresponding to the invitation code": "Registreer met het e-mailadres dat hoort bij de uitnodigingscode", "The invitation code has already been used": "The invitation code has already been used",
"Please register using the phone corresponding to the invitation code": "Registreer met het telefoonnummer dat hoort bij de uitnodigingscode", "The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
"Please register using the username corresponding to the invitation code": "Registreer met de gebruikersnaam die hoort bij de uitnodigingscode", "The user: %s doesn't exist in LDAP server": "The user: %s doesn't exist in LDAP server",
"Session outdated, please login again": "Sessie verlopen, gelieve opnieuw in te loggen", "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.",
"The invitation code has already been used": "Uitnodigingscode is al gebruikt", "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex",
"The user is forbidden to sign in, please contact the administrator": "Gebruiker mag niet inloggen, contacteer beheerder", "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"",
"The user: %s doesn't exist in LDAP server": "Gebruiker: %s bestaat niet in LDAP-server", "Username already exists": "Username already exists",
"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.": "Gebruikersnaam mag alleen alfanumerieke tekens, underscores of koppeltekens bevatten, geen opeenvolgende koppeltekens/underscores, en mag niet beginnen of eindigen met koppelteken of underscore.", "Username cannot be an email address": "Username cannot be an email address",
"The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "Хадгаламалық өрісі \\\"%s\\\" үшін мәні \\\"%s\\\" хадгаламалық элементінің регекспімен сәйкес келмейді", "Username cannot contain white spaces": "Username cannot contain white spaces",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "Тіркелу өрісі \\\"%s\\\" үшін мәні \\\"%s\\\" қолданба \\\"%s\\\"-нің тіркелу элементінің регекспімен сәйкес келмейді", "Username cannot start with a digit": "Username cannot start with a digit",
"Username already exists": "Gebruikersnaam bestaat al", "Username is too long (maximum is 39 characters).": "Username is too long (maximum is 39 characters).",
"Username cannot be an email address": "Gebruikersnaam mag geen e-mailadres zijn", "Username must have at least 2 characters": "Username must have at least 2 characters",
"Username cannot contain white spaces": "Gebruikersnaam mag geen spaties bevatten", "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",
"Username cannot start with a digit": "Gebruikersnaam mag niet met cijfer beginnen", "Your region is not allow to signup by phone": "Your region is not allow to signup by phone",
"Username is too long (maximum is 255 characters).": "Gebruikersnaam te lang (maximaal 255 tekens).", "password or code is incorrect": "password or code is incorrect",
"Username must have at least 2 characters": "Gebruikersnaam moet minstens 2 tekens hebben", "password or code is incorrect, you have %d remaining chances": "password or code is incorrect, you have %d remaining chances",
"Username supports email format. Also 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. Also pay attention to the email format.": "Gebruikersnaam ondersteunt e-mailformaat. Mag alleen alfanumerieke tekens, underscores of koppeltekens bevatten, geen opeenvolgende koppeltekens/underscores, en mag niet beginnen of eindigen met koppelteken of underscore. Let op e-mailformaat.", "unsupported password type: %s": "unsupported password type: %s"
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Te vaak verkeerd wachtwoord of code ingevoerd, wacht %d minuten en probeer opnieuw",
"Your IP address: %s has been banned according to the configuration of: ": "Je IP-adres: %s is verbannen volgens configuratie van: ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "Сіздің пароліңіз мерзімі аяқталды. Кликтап \\\"Парольді ұмытып қалдым\\\" нұсқасын қалпына келтіріңіз",
"Your region is not allow to signup by phone": "Registratie per telefoon niet toegestaan in jouw regio",
"password or code is incorrect": "wachtwoord of code onjuist",
"password or code is incorrect, you have %s remaining chances": "wachtwoord of code onjuist, nog %s pogingen over",
"unsupported password type: %s": "niet-ondersteund wachtwoordtype: %s"
},
"enforcer": {
"the adapter: %s is not found": "adapter: %s niet gevonden"
}, },
"general": { "general": {
"Failed to import groups": "Importeren groepen mislukt", "Missing parameter": "Missing parameter",
"Failed to import users": "Importeren gebruikers mislukt", "Please login first": "Please login first",
"Missing parameter": "Ontbrekende parameter", "The organization: %s should have one application at least": "The organization: %s should have one application at least",
"Only admin user can specify user": "Alleen beheerder mag gebruiker specificeren", "The user: %s doesn't exist": "The user: %s doesn't exist",
"Please login first": "Gelieve eerst in te loggen", "don't support captchaProvider: ": "don't support captchaProvider: ",
"The organization: %s should have one application at least": "Organisatie: %s moet minstens één applicatie hebben", "this operation is not allowed in demo mode": "this operation is not allowed in demo mode",
"The user: %s doesn't exist": "Gebruiker: %s bestaat niet", "this operation requires administrator to perform": "this operation requires administrator to perform"
"Wrong userId": "Verkeerde userId",
"don't support captchaProvider: ": "captchaProvider niet ondersteund: ",
"this operation is not allowed in demo mode": "deze handeling is niet toegestaan in demo-modus",
"this operation requires administrator to perform": "deze handeling vereist beheerder"
}, },
"ldap": { "ldap": {
"Ldap server exist": "LDAP-server bestaat al" "Ldap server exist": "Ldap server exist"
}, },
"link": { "link": {
"Please link first": "Gelieve eerst te linken", "Please link first": "Please link first",
"This application has no providers": "Deze applicatie heeft geen providers", "This application has no providers": "This application has no providers",
"This application has no providers of type": "Deze applicatie heeft geen providers van type", "This application has no providers of type": "This application has no providers of type",
"This provider can't be unlinked": "Deze provider kan niet ontkoppeld worden", "This provider can't be unlinked": "This provider can't be unlinked",
"You are not the global admin, you can't unlink other users": "Je bent geen globale beheerder, je kunt andere gebruikers niet ontkoppelen", "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": "Je kunt jezelf niet ontkoppelen, je bent geen lid van enige applicatie" "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": { "organization": {
"Only admin can modify the %s.": "Alleen beheerder kan %s wijzigen.", "Only admin can modify the %s.": "Only admin can modify the %s.",
"The %s is immutable.": "%s is onveranderlijk.", "The %s is immutable.": "The %s is immutable.",
"Unknown modify rule %s.": "Onbekende wijzigingsregel %s.", "Unknown modify rule %s.": "Unknown modify rule %s."
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "'Built-in' (құрылымдық) ұйымға жаңа пайдаланушы қосу әзірге өшірілген. Ескеріңіз: 'Built-in' ұйымдағы барлық пайдаланушылар Casdoor дөгел әкімдері болып табылады. Документацияға қараңыз: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. Егер сіз әлі де 'Built-in' ұйымы үшін пайдаланушы жасауын қаласаңыз, ұйымның баптаулар бетinə оралыңыз және 'Рұқсатларға растау бар' опциясын қосу іске ашыңыз."
}, },
"permission": { "permission": {
"The permission: \\\"%s\\\" doesn't exist": "Рұқсат: \\\"%s\\\" жоқ" "The permission: \\\"%s\\\" doesn't exist": "The permission: \\\"%s\\\" doesn't exist"
}, },
"provider": { "provider": {
"Invalid application id": "Ongeldige applicatie-ID", "Invalid application id": "Invalid application id",
"the provider: %s does not exist": "provider: %s bestaat niet" "the provider: %s does not exist": "the provider: %s does not exist"
}, },
"resource": { "resource": {
"User is nil for tag: avatar": "Gebruiker is nil voor tag: avatar", "User is nil for tag: avatar": "User is nil for tag: avatar",
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Gebruikersnaam of fullFilePath is leeg: username = %s, fullFilePath = %s" "Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Username or fullFilePath is empty: username = %s, fullFilePath = %s"
}, },
"saml": { "saml": {
"Application %s not found": "Applicatie %s niet gevonden" "Application %s not found": "Application %s not found"
}, },
"saml_sp": { "saml_sp": {
"provider %s's category is not SAML": "provider %s is niet van categorie SAML" "provider %s's category is not SAML": "provider %s's category is not SAML"
}, },
"service": { "service": {
"Empty parameters for emailForm: %v": "Lege parameters voor emailForm: %v", "Empty parameters for emailForm: %v": "Empty parameters for emailForm: %v",
"Invalid Email receivers: %s": "Ongeldige e-mailontvangers: %s", "Invalid Email receivers: %s": "Invalid Email receivers: %s",
"Invalid phone receivers: %s": "Ongeldige telefoonontvangers: %s" "Invalid phone receivers: %s": "Invalid phone receivers: %s"
}, },
"storage": { "storage": {
"The objectKey: %s is not allowed": "objectKey: %s is niet toegestaan", "The objectKey: %s is not allowed": "The objectKey: %s is not allowed",
"The provider type: %s is not supported": "Providertype: %s wordt niet ondersteund" "The provider type: %s is not supported": "The provider type: %s is not supported"
},
"subscription": {
"Error": "Fout"
}, },
"token": { "token": {
"Grant_type: %s is not supported in this application": "Grant_type: %s wordt niet ondersteund in deze applicatie", "Grant_type: %s is not supported in this application": "Grant_type: %s is not supported in this application",
"Invalid application or wrong clientSecret": "Ongeldige applicatie of verkeerde clientSecret", "Invalid application or wrong clientSecret": "Invalid application or wrong clientSecret",
"Invalid client_id": "Ongeldige client_id", "Invalid client_id": "Invalid client_id",
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "Redirect URI: %s staat niet in toegestane lijst", "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 niet gevonden, ongeldige accessToken" "Token not found, invalid accessToken": "Token not found, invalid accessToken"
}, },
"user": { "user": {
"Display name cannot be empty": "Weergavenaam mag niet leeg zijn", "Display name cannot be empty": "Display name cannot be empty",
"MFA email is enabled but email is empty": "MFA-e-mail is ingeschakeld maar e-mailadres is leeg", "New password cannot contain blank space.": "New password cannot contain blank space."
"MFA phone is enabled but phone number is empty": "MFA-telefoon is ingeschakeld maar telefoonnummer is leeg", },
"New password cannot contain blank space.": "Nieuw wachtwoord mag geen spaties bevatten.", "user_upload": {
"the user's owner and name should not be empty": "eigenaar en naam van gebruiker mogen niet leeg zijn" "Failed to import users": "Failed to import users"
}, },
"util": { "util": {
"No application is found for userId: %s": "Geen applicatie gevonden voor userId: %s", "No application is found for userId: %s": "No application is found for userId: %s",
"No provider for category: %s is found for application: %s": "Geen provider voor categorie: %s gevonden voor applicatie: %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": "Provider: %s niet gevonden" "The provider: %s is not found": "The provider: %s is not found"
}, },
"verification": { "verification": {
"Invalid captcha provider.": "Ongeldige captcha-provider.", "Invalid captcha provider.": "Invalid captcha provider.",
"Phone number is invalid in your region %s": "Telefoonnummer ongeldig in regio %s", "Phone number is invalid in your region %s": "Phone number is invalid in your region %s",
"The verification code has already been used!": "Verificatiecode is al gebruikt!", "The verification code has not been sent yet!": "The verification code has not been sent yet!",
"The verification code has not been sent yet!": "Verificatiecode is nog niet verstuurd!", "The verification code has not been sent yet, or has already been used!": "The verification code has not been sent yet, or has already been used!",
"Turing test failed.": "Turing-test mislukt.", "Turing test failed.": "Turing test failed.",
"Unable to get the email modify rule.": "Kan e-mail-wijzigingsregel niet ophalen.", "Unable to get the email modify rule.": "Unable to get the email modify rule.",
"Unable to get the phone modify rule.": "Kan telefoon-wijzigingsregel niet ophalen.", "Unable to get the phone modify rule.": "Unable to get the phone modify rule.",
"Unknown type": "Onbekend type", "Unknown type": "Unknown type",
"Wrong verification code!": "Verkeerde verificatiecode!", "Wrong verification code!": "Wrong verification code!",
"You should verify your code in %d min!": "Verifieer je code binnen %d min!", "You should verify your code in %d min!": "You should verify your code in %d min!",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "Күріспе: %s қолданбасының \\\"Провайдерлер\\\" тізіміне SMS провайдерін қосыңыз", "please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "please add a SMS provider to the \\\"Providers\\\" list for the application: %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "Күріспе: %s қолданбасының \\\"Провайдерлер\\\" тізіміне Электрондық пошта провайдерін қосыңыз", "please add an Email provider to the \\\"Providers\\\" list for the application: %s": "please add an Email provider to the \\\"Providers\\\" list for the application: %s",
"the user does not exist, please sign up first": "gebruiker bestaat niet, registreer eerst" "the user does not exist, please sign up first": "the user does not exist, please sign up first"
}, },
"webauthn": { "webauthn": {
"Found no credentials for this user": "Found no credentials for this user", "Found no credentials for this user": "Found no credentials for this user",
"Please call WebAuthnSigninBegin first": "Roep eerst WebAuthnSigninBegin aan" "Please call WebAuthnSigninBegin first": "Please call WebAuthnSigninBegin first"
} }
} }

View File

@@ -7,7 +7,6 @@
}, },
"auth": { "auth": {
"Challenge method should be S256": "도전 방식은 S256이어야 합니다", "Challenge method should be S256": "도전 방식은 S256이어야 합니다",
"DeviceCode Invalid": "장치 코드가 유효하지 않습니다",
"Failed to create user, user information is invalid: %s": "사용자를 만들지 못했습니다. 사용자 정보가 잘못되었습니다: %s", "Failed to create user, user information is invalid: %s": "사용자를 만들지 못했습니다. 사용자 정보가 잘못되었습니다: %s",
"Failed to login in: %s": "로그인에 실패했습니다.: %s", "Failed to login in: %s": "로그인에 실패했습니다.: %s",
"Invalid token": "유효하지 않은 토큰", "Invalid token": "유효하지 않은 토큰",
@@ -16,95 +15,74 @@
"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": "공급자 계정 %s과 사용자 이름 %s (%s)는 존재하지 않으며 새 계정으로 등록할 수 없습니다. IT 지원팀에 문의하십시오", "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": "공급자 계정 %s과 사용자 이름 %s (%s)는 존재하지 않으며 새 계정으로 등록할 수 없습니다. IT 지원팀에 문의하십시오",
"The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "공급자 계정 %s과 사용자 이름 %s(%s)는 이미 다른 계정 %s(%s)에 연결되어 있습니다", "The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "공급자 계정 %s과 사용자 이름 %s(%s)는 이미 다른 계정 %s(%s)에 연결되어 있습니다",
"The application: %s does not exist": "해당 애플리케이션(%s)이 존재하지 않습니다", "The application: %s does not exist": "해당 애플리케이션(%s)이 존재하지 않습니다",
"The application: %s has disabled users to signin": "The application: %s has disabled users to signin", "The login method: login with LDAP is not enabled for the application": "The login method: login with LDAP is not enabled for the application",
"The login method: login with LDAP is not enabled for the application": "LDAP를 이용한 로그인 방식이 이 애플리케이션에 활성화되어 있지 않습니다", "The login method: login with SMS is not enabled for the application": "The login method: login with SMS is not enabled for the application",
"The login method: login with SMS is not enabled for the application": "SMS를 이용한 로그인 방식이 이 애플리케이션에 활성화되어 있지 않습니다", "The login method: login with email is not enabled for the application": "The login method: login with email is not enabled for the application",
"The login method: login with email is not enabled for the application": "이메일을 이용한 로그인 방식이 이 애플리케이션에 활성화되어 있지 않습니다", "The login method: login with face is not enabled for the application": "The login method: login with face is not enabled for the application",
"The login method: login with face is not enabled for the application": "얼굴 인식을 이용한 로그인 방식이 이 애플리케이션에 활성화되어 있지 않습니다",
"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 organization: %s does not exist": "조직 %s이(가) 존재하지 않습니다", "The organization: %s does not exist": "The organization: %s does not exist",
"The organization: %s has disabled users to signin": "The organization: %s has disabled users to signin",
"The provider: %s does not exist": "제공자 %s이(가) 존재하지 않습니다",
"The provider: %s is not enabled for the application": "제공자 %s은(는) 응용 프로그램에서 활성화되어 있지 않습니다", "The provider: %s is not enabled for the application": "제공자 %s은(는) 응용 프로그램에서 활성화되어 있지 않습니다",
"Unauthorized operation": "무단 조작", "Unauthorized operation": "무단 조작",
"Unknown authentication type (not password or provider), form = %s": "알 수 없는 인증 유형(암호 또는 공급자가 아님), 폼 = %s", "Unknown authentication type (not password or provider), form = %s": "알 수 없는 인증 유형(암호 또는 공급자가 아님), 폼 = %s",
"User's tag: %s is not listed in the application's tags": "사용자의 태그 %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",
"UserCode Expired": "사용자 코드가 만료되었습니다", "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing"
"UserCode Invalid": "사용자 코드가 유효하지 않습니다",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "유료 사용자 %s에게 활성 또는 대기 중인 구독이 없으며, 애플리케이션 %s에 기본 가격 책정이 설정되어 있지 않습니다",
"the application for user %s is not found": "사용자 %s의 애플리케이션을 찾을 수 없습니다",
"the organization: %s is not found": "조직 %s을(를) 찾을 수 없습니다"
}, },
"cas": { "cas": {
"Service %s and %s do not match": "서비스 %s와 %s는 일치하지 않습니다" "Service %s and %s do not match": "서비스 %s와 %s는 일치하지 않습니다"
}, },
"check": { "check": {
"%s does not meet the CIDR format requirements: %s": "%s이(가) CIDR 형식 요구사항을 충족하지 않습니다: %s",
"Affiliation cannot be blank": "소속은 비워 둘 수 없습니다", "Affiliation cannot be blank": "소속은 비워 둘 수 없습니다",
"CIDR for IP: %s should not be empty": "IP %s의 CIDR은 비어 있을 수 없습니다", "Default code does not match the code's matching rules": "Default code does not match the code's matching rules",
"Default code does not match the code's matching rules": "기본 코드가 코드 일치 규칙과 맞지 않습니다",
"DisplayName cannot be blank": "DisplayName는 비어 있을 수 없습니다", "DisplayName cannot be blank": "DisplayName는 비어 있을 수 없습니다",
"DisplayName is not valid real name": "DisplayName는 유효한 실제 이름이 아닙니다", "DisplayName is not valid real name": "DisplayName는 유효한 실제 이름이 아닙니다",
"Email already exists": "이메일이 이미 존재합니다", "Email already exists": "이메일이 이미 존재합니다",
"Email cannot be empty": "이메일은 비어 있을 수 없습니다", "Email cannot be empty": "이메일은 비어 있을 수 없습니다",
"Email is invalid": "이메일이 유효하지 않습니다", "Email is invalid": "이메일이 유효하지 않습니다",
"Empty username.": "빈 사용자 이름.", "Empty username.": "빈 사용자 이름.",
"Face data does not exist, cannot log in": "얼굴 데이터가 존재하지 않아 로그인할 수 없습니다", "Face data does not exist, cannot log in": "Face data does not exist, cannot log in",
"Face data mismatch": "얼굴 데이터가 일치하지 않습니다", "Face data mismatch": "Face data mismatch",
"Failed to parse client IP: %s": "클라이언트 IP %s을(를) 파싱하는 데 실패했습니다",
"FirstName cannot be blank": "이름은 공백일 수 없습니다", "FirstName cannot be blank": "이름은 공백일 수 없습니다",
"Invitation code cannot be blank": "초대 코드는 비워둘 수 없습니다", "Invitation code cannot be blank": "Invitation code cannot be blank",
"Invitation code exhausted": "초대 코드가 모두 사용되었습니다", "Invitation code exhausted": "Invitation code exhausted",
"Invitation code is invalid": "초대 코드가 유효하지 않습니다", "Invitation code is invalid": "Invitation code is invalid",
"Invitation code suspended": "초대 코드가 일시 중지되었습니다", "Invitation code suspended": "Invitation code suspended",
"LDAP user name or password incorrect": "LDAP 사용자 이름 또는 암호가 잘못되었습니다", "LDAP user name or password incorrect": "LDAP 사용자 이름 또는 암호가 잘못되었습니다",
"LastName cannot be blank": "성은 비어 있을 수 없습니다", "LastName cannot be blank": "성은 비어 있을 수 없습니다",
"Multiple accounts with same uid, please check your ldap server": "동일한 UID를 가진 여러 계정이 있습니다. LDAP 서버를 확인해주세요", "Multiple accounts with same uid, please check your ldap server": "동일한 UID를 가진 여러 계정이 있습니다. LDAP 서버를 확인해주세요",
"Organization does not exist": "조직은 존재하지 않습니다", "Organization does not exist": "조직은 존재하지 않습니다",
"Password cannot be empty": "비밀번호는 비워둘 수 없습니다",
"Phone already exists": "전화기는 이미 존재합니다", "Phone already exists": "전화기는 이미 존재합니다",
"Phone cannot be empty": "전화는 비워 둘 수 없습니다", "Phone cannot be empty": "전화는 비워 둘 수 없습니다",
"Phone number is invalid": "전화번호가 유효하지 않습니다", "Phone number is invalid": "전화번호가 유효하지 않습니다",
"Please register using the email corresponding to the invitation code": "초대 코드에 해당하는 이메일로 가입해 주세요", "Please register using the email corresponding to the invitation code": "Please register using the email corresponding to the invitation code",
"Please register using the phone corresponding to the invitation code": "초대 코드에 해당하는 전화번호로 가입해 주세요", "Please register using the phone corresponding to the invitation code": "Please register using the phone corresponding to the invitation code",
"Please register using the username corresponding to the invitation code": "초대 코드에 해당하는 사용자 이름으로 가입해 주세요", "Please register using the username corresponding to the invitation code": "Please register using the username corresponding to the invitation code",
"Session outdated, please login again": "세션이 만료되었습니다. 다시 로그인해주세요", "Session outdated, please login again": "세션이 만료되었습니다. 다시 로그인해주세요",
"The invitation code has already been used": "초대 코드는 이미 사용되었습니다", "The invitation code has already been used": "The invitation code has already been used",
"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": "LDAP 서버에 사용자 %s이(가) 존재하지 않습니다", "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.": "사용자 이름은 알파벳, 숫자, 밑줄 또는 하이픈만 포함할 수 있으며, 연속된 하이픈 또는 밑줄을 가질 수 없으며, 하이픈 또는 밑줄로 시작하거나 끝날 수 없습니다.",
"The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "계정 필드 \\\"%s\\\"에 대한 값 \\\"%s\\\"이(가) 계정 항목 정규식과 일치하지 않습니다", "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "가입 필드 \\\"%s\\\"에 대한 값 \\\"%s\\\"이(가) 애플리케이션 \\\"%s\\\"의 가입 항목 정규식과 일치하지 않습니다", "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"",
"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 255 characters).": "사용자 이름이 너무 깁니다 (최대 255자).", "Username is too long (maximum is 39 characters).": "사용자 이름이 너무 깁니다 (최대 39자).",
"Username must have at least 2 characters": "사용자 이름은 적어도 2개의 문자가 있어야 합니다", "Username must have at least 2 characters": "사용자 이름은 적어도 2개의 문자가 있어야 합니다",
"Username supports email format. Also 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. Also pay attention to the email format.": "사용자 이름은 이메일 형식을 지원합니다. 또한 사용자 이름은 영숫자, 밑줄 또는 하이픈만 포함할 수 있으며, 연속된 하이픈이나 밑줄은 불가능하며 하이픈이나 밑줄로 시작하거나 끝날 수 없습니다. 이메일 형식에도 주의하세요.",
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "올바르지 않은 비밀번호나 코드를 여러 번 입력했습니다. %d분 동안 기다리신 후 다시 시도해주세요", "You have entered the wrong password or code too many times, please wait for %d minutes and try again": "올바르지 않은 비밀번호나 코드를 여러 번 입력했습니다. %d분 동안 기다리신 후 다시 시도해주세요",
"Your IP address: %s has been banned according to the configuration of: ": "IP 주소 %s이(가) 설정에 따라 차단되었습니다: ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "비밀번호가 만료되었습니다. \\\"비밀번호 찾기\\\"를 클릭하여 비밀번호를 재설정하세요",
"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",
"password or code is incorrect, you have %s remaining chances": "암호 또는 코드가 올바르지 않습니다. %s 번의 기회가 남아 있습니다", "password or code is incorrect, you have %d remaining chances": "암호 또는 코드가 올바르지 않습니다. %d번의 기회가 남아 있습니다",
"unsupported password type: %s": "지원되지 않는 암호 유형: %s" "unsupported password type: %s": "지원되지 않는 암호 유형: %s"
}, },
"enforcer": {
"the adapter: %s is not found": "어댑터 %s을(를) 찾을 수 없습니다"
},
"general": { "general": {
"Failed to import groups": "그룹 가져오기 실패",
"Failed to import users": "사용자 가져오기를 실패했습니다",
"Missing parameter": "누락된 매개변수", "Missing parameter": "누락된 매개변수",
"Only admin user can specify user": "관리자만 사용자를 지정할 수 있습니다",
"Please login first": "먼저 로그인 하십시오", "Please login first": "먼저 로그인 하십시오",
"The organization: %s should have one application at least": "조직 %s에는 최소 하나의 애플리케이션이 있어야 합니다", "The organization: %s should have one application at least": "The organization: %s should have one application at least",
"The user: %s doesn't exist": "사용자 %s는 존재하지 않습니다", "The user: %s doesn't exist": "사용자 %s는 존재하지 않습니다",
"Wrong userId": "잘못된 사용자 ID입니다",
"don't support captchaProvider: ": "CaptchaProvider를 지원하지 마세요", "don't support captchaProvider: ": "CaptchaProvider를 지원하지 마세요",
"this operation is not allowed in demo mode": "이 작업은 데모 모드에서 허용되지 않습니다", "this operation is not allowed in demo mode": "this operation is not allowed in demo mode",
"this operation requires administrator to perform": "이 작업은 관리자 권한이 필요합니다" "this operation requires administrator to perform": "this operation requires administrator to perform"
}, },
"ldap": { "ldap": {
"Ldap server exist": "LDAP 서버가 존재합니다" "Ldap server exist": "LDAP 서버가 존재합니다"
@@ -120,11 +98,10 @@
"organization": { "organization": {
"Only admin can modify the %s.": "관리자만 %s을(를) 수정할 수 있습니다.", "Only admin can modify the %s.": "관리자만 %s을(를) 수정할 수 있습니다.",
"The %s is immutable.": "%s 는 변경할 수 없습니다.", "The %s is immutable.": "%s 는 변경할 수 없습니다.",
"Unknown modify rule %s.": "미확인 수정 규칙 %s.", "Unknown modify rule %s.": "미확인 수정 규칙 %s."
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "「built-in」組み込み組織への新しいユーザーの追加は現在無効になっています。注意「built-in」組織のすべてのユーザーは、Casdoor のグローバル管理者です。ドキュメントを参照してくださいhttps://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself。「built-in」組織のユーザーを作成したい場合は、組織の設定ページに移動し、「特権同意を持つ」オプションを有効にしてください。"
}, },
"permission": { "permission": {
"The permission: \\\"%s\\\" doesn't exist": "권한 \\\"%s\\\"이(가) 존재하지 않습니다" "The permission: \\\"%s\\\" doesn't exist": "The permission: \\\"%s\\\" doesn't exist"
}, },
"provider": { "provider": {
"Invalid application id": "잘못된 애플리케이션 ID입니다", "Invalid application id": "잘못된 애플리케이션 ID입니다",
@@ -149,9 +126,6 @@
"The objectKey: %s is not allowed": "객체 키 : %s 는 허용되지 않습니다", "The objectKey: %s is not allowed": "객체 키 : %s 는 허용되지 않습니다",
"The provider type: %s is not supported": "제공자 유형: %s은/는 지원되지 않습니다" "The provider type: %s is not supported": "제공자 유형: %s은/는 지원되지 않습니다"
}, },
"subscription": {
"Error": "오류"
},
"token": { "token": {
"Grant_type: %s is not supported in this application": "그랜트 유형: %s은(는) 이 어플리케이션에서 지원되지 않습니다", "Grant_type: %s is not supported in this application": "그랜트 유형: %s은(는) 이 어플리케이션에서 지원되지 않습니다",
"Invalid application or wrong clientSecret": "잘못된 어플리케이션 또는 올바르지 않은 클라이언트 시크릿입니다", "Invalid application or wrong clientSecret": "잘못된 어플리케이션 또는 올바르지 않은 클라이언트 시크릿입니다",
@@ -161,10 +135,10 @@
}, },
"user": { "user": {
"Display name cannot be empty": "디스플레이 이름은 비어 있을 수 없습니다", "Display name cannot be empty": "디스플레이 이름은 비어 있을 수 없습니다",
"MFA email is enabled but email is empty": "MFA 이메일이 활성화되었지만 이메일이 비어 있습니다", "New password cannot contain blank space.": "새 비밀번호에는 공백이 포함될 수 없습니다."
"MFA phone is enabled but phone number is empty": "MFA 전화번호가 활성화되었지만 전화번호가 비어 있습니다", },
"New password cannot contain blank space.": "새 비밀번호에는 공백이 포함될 수 없습니다.", "user_upload": {
"the user's owner and name should not be empty": "사용자의 소유자와 이름은 비워둘 수 없습니다" "Failed to import users": "사용자 가져오기를 실패했습니다"
}, },
"util": { "util": {
"No application is found for userId: %s": "어플리케이션을 찾을 수 없습니다. userId: %s", "No application is found for userId: %s": "어플리케이션을 찾을 수 없습니다. userId: %s",
@@ -174,20 +148,20 @@
"verification": { "verification": {
"Invalid captcha provider.": "잘못된 captcha 제공자입니다.", "Invalid captcha provider.": "잘못된 captcha 제공자입니다.",
"Phone number is invalid in your region %s": "전화 번호가 당신의 지역 %s에서 유효하지 않습니다", "Phone number is invalid in your region %s": "전화 번호가 당신의 지역 %s에서 유효하지 않습니다",
"The verification code has already been used!": "인증 코드는 이미 사용되었습니다!", "The verification code has not been sent yet!": "The verification code has not been sent yet!",
"The verification code has not been sent yet!": "인증 코드가 아직 전송되지 않았습니다!", "The verification code has not been sent yet, or has already been used!": "The verification code has not been sent yet, or has already been used!",
"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!": "당신은 %d분 안에 코드를 검증해야 합니다!", "You should verify your code in %d min!": "당신은 %d분 안에 코드를 검증해야 합니다!",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "애플리케이션 %s의 \\\"제공자\\\" 목록에 SMS 제공자를 추가해 주세요", "please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "please add a SMS provider to the \\\"Providers\\\" list for the application: %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "애플리케이션 %s의 \\\"제공자\\\" 목록에 이메일 제공자를 추가해 주세요", "please add an Email provider to the \\\"Providers\\\" list for the application: %s": "please add an Email provider to the \\\"Providers\\\" list for the application: %s",
"the user does not exist, please sign up first": "사용자가 존재하지 않습니다. 먼저 회원 가입 해주세요" "the user does not exist, please sign up first": "사용자가 존재하지 않습니다. 먼저 회원 가입 해주세요"
}, },
"webauthn": { "webauthn": {
"Found no credentials for this user": "Found no credentials for this user", "Found no credentials for this user": "이 사용자의 자격 증명을 찾을 수 없습니다",
"Please call WebAuthnSigninBegin first": "WebAuthnSigninBegin을 먼저 호출해주세요" "Please call WebAuthnSigninBegin first": "WebAuthnSigninBegin을 먼저 호출해주세요"
} }
} }

View File

@@ -1,193 +1,167 @@
{ {
"account": { "account": {
"Failed to add user": "Gagal tambah pengguna", "Failed to add user": "Failed to add user",
"Get init score failed, error: %w": "Gagal dapatkan skor awal, ralat: %w", "Get init score failed, error: %w": "Get init score failed, error: %w",
"Please sign out first": "Sila log keluar dahulu", "Please sign out first": "Please sign out first",
"The application does not allow to sign up new account": "Aplikasi tidak benarkan pendaftaran akaun baharu" "The application does not allow to sign up new account": "The application does not allow to sign up new account"
}, },
"auth": { "auth": {
"Challenge method should be S256": "Kaedah cabaran mesti S256", "Challenge method should be S256": "Challenge method should be S256",
"DeviceCode Invalid": "Kod Peranti Tidak Sah", "Failed to create user, user information is invalid: %s": "Failed to create user, user information is invalid: %s",
"Failed to create user, user information is invalid: %s": "Gagal cipta pengguna, maklumat tidak sah: %s", "Failed to login in: %s": "Failed to login in: %s",
"Failed to login in: %s": "Gagal log masuk: %s", "Invalid token": "Invalid token",
"Invalid token": "Token tidak sah", "State expected: %s, but got: %s": "State expected: %s, but got: %s",
"State expected: %s, but got: %s": "Jangkaan keadaan: %s, tetapi dapat: %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 via %%s, please use another way to sign up": "Akaun untuk pembekal: %s dan nama pengguna: %s (%s) tidak wujud dan tidak dibenarkan daftar melalui %%s, sila guna cara lain", "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) does not exist and is not allowed to sign up as new account, please contact your IT support": "Akaun untuk pembekal: %s dan nama pengguna: %s (%s) tidak wujud dan tidak dibenarkan daftar, sila hubungi sokongan IT", "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 account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "Akaun untuk pembekal: %s dan nama pengguna: %s (%s) sudah dipautkan kepada akaun lain: %s (%s)", "The application: %s does not exist": "The application: %s does not exist",
"The application: %s does not exist": "Aplikasi: %s tidak wujud", "The login method: login with LDAP is not enabled for the application": "The login method: login with LDAP is not enabled for the application",
"The application: %s has disabled users to signin": "The application: %s has disabled users to signin", "The login method: login with SMS is not enabled for the application": "The login method: login with SMS is not enabled for the application",
"The login method: login with LDAP is not enabled for the application": "Kaedah log masuk LDAP tidak dibenarkan untuk aplikasi ini", "The login method: login with email is not enabled for the application": "The login method: login with email is not enabled for the application",
"The login method: login with SMS is not enabled for the application": "Kaedah log masuk SMS tidak dibenarkan untuk aplikasi ini", "The login method: login with face is not enabled for the application": "The login method: login with face is not enabled for the application",
"The login method: login with email is not enabled for the application": "Kaedah log masuk emel tidak dibenarkan untuk aplikasi ini", "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 login method: login with face is not enabled for the application": "Kaedah log masuk muka tidak dibenarkan untuk aplikasi ini", "The organization: %s does not exist": "The organization: %s does not exist",
"The login method: login with password is not enabled for the application": "Kaedah log masuk kata laluan tidak dibenarkan untuk aplikasi ini", "The provider: %s is not enabled for the application": "The provider: %s is not enabled for the application",
"The organization: %s does not exist": "Organisasi: %s tidak wujud", "Unauthorized operation": "Unauthorized operation",
"The organization: %s has disabled users to signin": "The organization: %s has disabled users to signin", "Unknown authentication type (not password or provider), form = %s": "Unknown authentication type (not password or provider), form = %s",
"The provider: %s does not exist": "Pembekal: %s tidak wujud", "User's tag: %s is not listed in the application's tags": "User's tag: %s is not listed in the application's tags",
"The provider: %s is not enabled for the application": "Pembekal: %s tidak dibenarkan untuk aplikasi ini", "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing"
"Unauthorized operation": "Operasi tidak dibenarkan",
"Unknown authentication type (not password or provider), form = %s": "Jenis pengesahan tidak diketahui (bukan kata laluan atau pembekal), borang = %s",
"User's tag: %s is not listed in the application's tags": "Tag pengguna: %s tidak tersenarai dalam tag aplikasi",
"UserCode Expired": "Kod Pengguna Tamat",
"UserCode Invalid": "Kod Pengguna Tidak Sah",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "Pengguna berbayar %s tiada langganan aktif atau tertunda dan aplikasi: %s tiada harga lalai",
"the application for user %s is not found": "Aplikasi untuk pengguna %s tidak ditemui",
"the organization: %s is not found": "Organisasi: %s tidak ditemui"
}, },
"cas": { "cas": {
"Service %s and %s do not match": "Perkhidmatan %s dan %s tidak sepadan" "Service %s and %s do not match": "Service %s and %s do not match"
}, },
"check": { "check": {
"%s does not meet the CIDR format requirements: %s": "%s tidak memenuhi format CIDR: %s", "Affiliation cannot be blank": "Affiliation cannot be blank",
"Affiliation cannot be blank": "Afiliasi tidak boleh kosong", "Default code does not match the code's matching rules": "Default code does not match the code's matching rules",
"CIDR for IP: %s should not be empty": "CIDR untuk IP: %s tidak boleh kosong", "DisplayName cannot be blank": "DisplayName cannot be blank",
"Default code does not match the code's matching rules": "Kod lalai tidak sepadan dengan peraturan padanan", "DisplayName is not valid real name": "DisplayName is not valid real name",
"DisplayName cannot be blank": "Nama paparan tidak boleh kosong", "Email already exists": "Email already exists",
"DisplayName is not valid real name": "Nama paparan bukan nama sebenar yang sah", "Email cannot be empty": "Email cannot be empty",
"Email already exists": "Emel sudah wujud", "Email is invalid": "Email is invalid",
"Email cannot be empty": "Emel tidak boleh kosong", "Empty username.": "Empty username.",
"Email is invalid": "Emel tidak sah", "Face data does not exist, cannot log in": "Face data does not exist, cannot log in",
"Empty username.": "Nama pengguna kosong.", "Face data mismatch": "Face data mismatch",
"Face data does not exist, cannot log in": "Data muka tiada, tidak boleh log masuk", "FirstName cannot be blank": "FirstName cannot be blank",
"Face data mismatch": "Data muka tidak sepadan", "Invitation code cannot be blank": "Invitation code cannot be blank",
"Failed to parse client IP: %s": "Gagal huraikan IP klien: %s", "Invitation code exhausted": "Invitation code exhausted",
"FirstName cannot be blank": "Nama pertama tidak boleh kosong", "Invitation code is invalid": "Invitation code is invalid",
"Invitation code cannot be blank": "Kod jemputan tidak boleh kosong", "Invitation code suspended": "Invitation code suspended",
"Invitation code exhausted": "Kod jemputan habis", "LDAP user name or password incorrect": "LDAP user name or password incorrect",
"Invitation code is invalid": "Kod jemputan tidak sah", "LastName cannot be blank": "LastName cannot be blank",
"Invitation code suspended": "Kod jemputan digantung", "Multiple accounts with same uid, please check your ldap server": "Multiple accounts with same uid, please check your ldap server",
"LDAP user name or password incorrect": "Nama pengguna atau kata laluan LDAP salah", "Organization does not exist": "Organization does not exist",
"LastName cannot be blank": "Nama terakhir tidak boleh kosong", "Phone already exists": "Phone already exists",
"Multiple accounts with same uid, please check your ldap server": "Beberapa akaun dengan uid sama, sila semak pelayan ldap anda", "Phone cannot be empty": "Phone cannot be empty",
"Organization does not exist": "Organisasi tidak wujud", "Phone number is invalid": "Phone number is invalid",
"Password cannot be empty": "Kata laluan tidak boleh kosong", "Please register using the email corresponding to the invitation code": "Please register using the email corresponding to the invitation code",
"Phone already exists": "Telefon sudah wujud", "Please register using the phone corresponding to the invitation code": "Please register using the phone corresponding to the invitation code",
"Phone cannot be empty": "Telefon tidak boleh kosong", "Please register using the username corresponding to the invitation code": "Please register using the username corresponding to the invitation code",
"Phone number is invalid": "Nombor telefon tidak sah", "Session outdated, please login again": "Session outdated, please login again",
"Please register using the email corresponding to the invitation code": "Sila daftar dengan emel yang sepadan dengan kod jemputan", "The invitation code has already been used": "The invitation code has already been used",
"Please register using the phone corresponding to the invitation code": "Sila daftar dengan telefon yang sepadan dengan kod jemputan", "The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
"Please register using the username corresponding to the invitation code": "Sila daftar dengan nama pengguna yang sepadan dengan kod jemputan", "The user: %s doesn't exist in LDAP server": "The user: %s doesn't exist in LDAP server",
"Session outdated, please login again": "Sesi tamat, sila log masuk semula", "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.",
"The invitation code has already been used": "Kod jemputan sudah digunakan", "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex",
"The user is forbidden to sign in, please contact the administrator": "Pengguna dilarang log masuk, sila hubungi pentadbir", "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"",
"The user: %s doesn't exist in LDAP server": "Pengguna: %s tidak wujud dalam pelayan LDAP", "Username already exists": "Username already exists",
"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.": "Nama pengguna hanya boleh mengandungi alfanumerik, garis bawah atau sengkang, tidak boleh ada sengkang atau garis bawah berturutan, dan tidak boleh bermula atau berakhir dengan sengkang atau garis bawah.", "Username cannot be an email address": "Username cannot be an email address",
"The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "Nilai \\\"%s\\\" untuk medan akaun \\\"%s\\\" tidak sepadan dengan regex", "Username cannot contain white spaces": "Username cannot contain white spaces",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "Nilai \\\"%s\\\" untuk medan pendaftaran \\\"%s\\\" tidak sepadan dengan regex aplikasi \\\"%s\\\"", "Username cannot start with a digit": "Username cannot start with a digit",
"Username already exists": "Nama pengguna sudah wujud", "Username is too long (maximum is 39 characters).": "Username is too long (maximum is 39 characters).",
"Username cannot be an email address": "Nama pengguna tidak boleh jadi alamat emel", "Username must have at least 2 characters": "Username must have at least 2 characters",
"Username cannot contain white spaces": "Nama pengguna tidak boleh ada ruang putih", "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",
"Username cannot start with a digit": "Nama pengguna tidak boleh bermula dengan nombor", "Your region is not allow to signup by phone": "Your region is not allow to signup by phone",
"Username is too long (maximum is 255 characters).": "Nama pengguna terlalu panjang (maksimum 255 aksara).", "password or code is incorrect": "password or code is incorrect",
"Username must have at least 2 characters": "Nama pengguna mesti sekurang-kurangnya 2 aksara", "password or code is incorrect, you have %d remaining chances": "password or code is incorrect, you have %d remaining chances",
"Username supports email format. Also 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. Also pay attention to the email format.": "Nama pengguna menyokong format emel. Juga, nama hanya boleh alfanumerik, garis bawah atau sengkang, tanpa berturutan, tidak bermula atau berakhir dengan sengkang atau garis bawah.", "unsupported password type: %s": "unsupported password type: %s"
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Anda masukkan kata laluan atau kod salah terlalu banyak kali, sila tunggu %d minit dan cuba lagi",
"Your IP address: %s has been banned according to the configuration of: ": "Alamat IP anda: %s telah disekat mengikut konfigurasi: ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "Kata laluan anda tamat. Sila tetapkan semula dengan klik \\\"Lupa kata laluan\\\"",
"Your region is not allow to signup by phone": "Wilayah anda tidak dibenarkan daftar melalui telefon",
"password or code is incorrect": "kata laluan atau kod salah",
"password or code is incorrect, you have %s remaining chances": "kata laluan atau kod salah, anda ada %s peluang lagi",
"unsupported password type: %s": "jenis kata laluan tidak disokong: %s"
},
"enforcer": {
"the adapter: %s is not found": "penyesuai: %s tidak ditemui"
}, },
"general": { "general": {
"Failed to import groups": "Gagal import kumpulan", "Missing parameter": "Missing parameter",
"Failed to import users": "Gagal import pengguna", "Please login first": "Please login first",
"Missing parameter": "Parameter hilang", "The organization: %s should have one application at least": "The organization: %s should have one application at least",
"Only admin user can specify user": "Hanya pentadbir boleh tetapkan pengguna", "The user: %s doesn't exist": "The user: %s doesn't exist",
"Please login first": "Sila log masuk dahulu", "don't support captchaProvider: ": "don't support captchaProvider: ",
"The organization: %s should have one application at least": "Organisasi: %s mesti ada sekurang-kurangnya satu aplikasi", "this operation is not allowed in demo mode": "this operation is not allowed in demo mode",
"The user: %s doesn't exist": "Pengguna: %s tidak wujud", "this operation requires administrator to perform": "this operation requires administrator to perform"
"Wrong userId": "ID pengguna salah",
"don't support captchaProvider: ": "tidak sokong penyedia captcha: ",
"this operation is not allowed in demo mode": "operasi ini tidak dibenarkan dalam mod demo",
"this operation requires administrator to perform": "operasi ini perlukan pentadbir untuk jalankan"
}, },
"ldap": { "ldap": {
"Ldap server exist": "Pelayan LDAP sudah wujud" "Ldap server exist": "Ldap server exist"
}, },
"link": { "link": {
"Please link first": "Sila pautkan dahulu", "Please link first": "Please link first",
"This application has no providers": "Aplikasi ini tiada pembekal", "This application has no providers": "This application has no providers",
"This application has no providers of type": "Aplikasi ini tiada pembekal jenis", "This application has no providers of type": "This application has no providers of type",
"This provider can't be unlinked": "Pembekal ini tidak boleh diputuskan", "This provider can't be unlinked": "This provider can't be unlinked",
"You are not the global admin, you can't unlink other users": "Anda bukan pentadbir global, anda tidak boleh putuskan pengguna lain", "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": "Anda tidak boleh putuskan diri sendiri, anda bukan ahli mana-mana aplikasi" "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": { "organization": {
"Only admin can modify the %s.": "Hanya pentadbir boleh ubah %s.", "Only admin can modify the %s.": "Only admin can modify the %s.",
"The %s is immutable.": "%s tidak boleh diubah.", "The %s is immutable.": "The %s is immutable.",
"Unknown modify rule %s.": "Peraturan ubah %s tidak diketahui.", "Unknown modify rule %s.": "Unknown modify rule %s."
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "Penambahan pengguna baru ke organisasi 'built-in' (terdalam) kini dinyahdayakan. Ambil perhatian: Semua pengguna dalam organisasi 'built-in' adalah pentadbir global dalam Casdoor. Rujuk dokumen: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. Jika anda masih ingin mencipta pengguna untuk organisasi 'built-in', pergi ke halaman tetapan organisasi dan aktifkan pilihan 'Mempunyai kebenaran keistimewaan'."
}, },
"permission": { "permission": {
"The permission: \\\"%s\\\" doesn't exist": "Kebenaran: \\\"%s\\\" tidak wujud" "The permission: \\\"%s\\\" doesn't exist": "The permission: \\\"%s\\\" doesn't exist"
}, },
"provider": { "provider": {
"Invalid application id": "ID aplikasi tidak sah", "Invalid application id": "Invalid application id",
"the provider: %s does not exist": "pembekal: %s tidak wujud" "the provider: %s does not exist": "the provider: %s does not exist"
}, },
"resource": { "resource": {
"User is nil for tag: avatar": "Pengguna kosong untuk tag: avatar", "User is nil for tag: avatar": "User is nil for tag: avatar",
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Nama pengguna atau laluan fail kosong: nama = %s, laluan = %s" "Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Username or fullFilePath is empty: username = %s, fullFilePath = %s"
}, },
"saml": { "saml": {
"Application %s not found": "Aplikasi %s tidak ditemui" "Application %s not found": "Application %s not found"
}, },
"saml_sp": { "saml_sp": {
"provider %s's category is not SAML": "kategori pembekal %s bukan SAML" "provider %s's category is not SAML": "provider %s's category is not SAML"
}, },
"service": { "service": {
"Empty parameters for emailForm: %v": "Parameter kosong untuk borang emel: %v", "Empty parameters for emailForm: %v": "Empty parameters for emailForm: %v",
"Invalid Email receivers: %s": "Penerima emel tidak sah: %s", "Invalid Email receivers: %s": "Invalid Email receivers: %s",
"Invalid phone receivers: %s": "Penerima telefon tidak sah: %s" "Invalid phone receivers: %s": "Invalid phone receivers: %s"
}, },
"storage": { "storage": {
"The objectKey: %s is not allowed": "Kunci objek: %s tidak dibenarkan", "The objectKey: %s is not allowed": "The objectKey: %s is not allowed",
"The provider type: %s is not supported": "Jenis pembekal: %s tidak disokong" "The provider type: %s is not supported": "The provider type: %s is not supported"
},
"subscription": {
"Error": "Ralat"
}, },
"token": { "token": {
"Grant_type: %s is not supported in this application": "Jenis pemberian: %s tidak disokong dalam aplikasi ini", "Grant_type: %s is not supported in this application": "Grant_type: %s is not supported in this application",
"Invalid application or wrong clientSecret": "Aplikasi tidak sah atau rahsia klien salah", "Invalid application or wrong clientSecret": "Invalid application or wrong clientSecret",
"Invalid client_id": "ID klien tidak sah", "Invalid client_id": "Invalid client_id",
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "URI alih: %s tiada dalam senarai URI dibenarkan", "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 tidak ditemui, token akses tidak sah" "Token not found, invalid accessToken": "Token not found, invalid accessToken"
}, },
"user": { "user": {
"Display name cannot be empty": "Nama paparan tidak boleh kosong", "Display name cannot be empty": "Display name cannot be empty",
"MFA email is enabled but email is empty": "MFA emel dibenarkan tetapi emel kosong", "New password cannot contain blank space.": "New password cannot contain blank space."
"MFA phone is enabled but phone number is empty": "MFA telefon dibenarkan tetapi nombor telefon kosong", },
"New password cannot contain blank space.": "Kata laluan baharu tidak boleh ada ruang kosong.", "user_upload": {
"the user's owner and name should not be empty": "pemilik dan nama pengguna tidak boleh kosong" "Failed to import users": "Failed to import users"
}, },
"util": { "util": {
"No application is found for userId: %s": "Tiada aplikasi ditemui untuk ID pengguna: %s", "No application is found for userId: %s": "No application is found for userId: %s",
"No provider for category: %s is found for application: %s": "Tiada pembekal untuk kategori: %s dalam aplikasi: %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": "Pembekal: %s tidak ditemui" "The provider: %s is not found": "The provider: %s is not found"
}, },
"verification": { "verification": {
"Invalid captcha provider.": "Penyedia captcha tidak sah.", "Invalid captcha provider.": "Invalid captcha provider.",
"Phone number is invalid in your region %s": "Nombor telefon tidak sah dalam wilayah %s", "Phone number is invalid in your region %s": "Phone number is invalid in your region %s",
"The verification code has already been used!": "Kod pengesahan sudah digunakan!", "The verification code has not been sent yet!": "The verification code has not been sent yet!",
"The verification code has not been sent yet!": "Kod pengesahan belum dihantar!", "The verification code has not been sent yet, or has already been used!": "The verification code has not been sent yet, or has already been used!",
"Turing test failed.": "Ujian Turing gagal.", "Turing test failed.": "Turing test failed.",
"Unable to get the email modify rule.": "Tidak dapat peraturan ubah emel.", "Unable to get the email modify rule.": "Unable to get the email modify rule.",
"Unable to get the phone modify rule.": "Tidak dapat peraturan ubah telefon.", "Unable to get the phone modify rule.": "Unable to get the phone modify rule.",
"Unknown type": "Jenis tidak diketahui", "Unknown type": "Unknown type",
"Wrong verification code!": "Kod pengesahan salah!", "Wrong verification code!": "Wrong verification code!",
"You should verify your code in %d min!": "Sila sahkan kod anda dalam %d minit!", "You should verify your code in %d min!": "You should verify your code in %d min!",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "sila tambah pembekal SMS ke senarai \"Providers\" untuk aplikasi: %s", "please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "please add a SMS provider to the \\\"Providers\\\" list for the application: %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "sila tambah pembekal Emel ke senarai \"Providers\" untuk aplikasi: %s", "please add an Email provider to the \\\"Providers\\\" list for the application: %s": "please add an Email provider to the \\\"Providers\\\" list for the application: %s",
"the user does not exist, please sign up first": "pengguna tidak wujud, sila daftar dahulu" "the user does not exist, please sign up first": "the user does not exist, please sign up first"
}, },
"webauthn": { "webauthn": {
"Found no credentials for this user": "Found no credentials for this user", "Found no credentials for this user": "Found no credentials for this user",
"Please call WebAuthnSigninBegin first": "Sila panggil WebAuthnSigninBegin dahulu" "Please call WebAuthnSigninBegin first": "Please call WebAuthnSigninBegin first"
} }
} }

View File

@@ -1,193 +1,167 @@
{ {
"account": { "account": {
"Failed to add user": "Gebruiker toevoegen mislukt", "Failed to add user": "Failed to add user",
"Get init score failed, error: %w": "Initiële score ophalen mislukt, fout: %w", "Get init score failed, error: %w": "Get init score failed, error: %w",
"Please sign out first": "Log eerst uit", "Please sign out first": "Please sign out first",
"The application does not allow to sign up new account": "Aanmelden is niet toegestaan" "The application does not allow to sign up new account": "The application does not allow to sign up new account"
}, },
"auth": { "auth": {
"Challenge method should be S256": "Challenge-methode moet S256 zijn", "Challenge method should be S256": "Challenge method should be S256",
"DeviceCode Invalid": "Ongeldige apparaatcode", "Failed to create user, user information is invalid: %s": "Failed to create user, user information is invalid: %s",
"Failed to create user, user information is invalid: %s": "Aanmaken gebruiker mislukt, gegevens ongeldig: %s", "Failed to login in: %s": "Failed to login in: %s",
"Failed to login in: %s": "Inloggen mislukt: %s", "Invalid token": "Invalid token",
"Invalid token": "Ongeldige token", "State expected: %s, but got: %s": "State expected: %s, but got: %s",
"State expected: %s, but got: %s": "Verwachtte state: %s, gekregen: %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 via %%s, please use another way to sign up": "Gebruiker bestaat niet; aanmelden via %%s niet toegestaan, kies andere methode", "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) does not exist and is not allowed to sign up as new account, please contact your IT support": "Gebruiker bestaat niet; aanmelden niet toegestaan, neem contact op met IT", "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 account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "Account al gekoppeld aan andere gebruiker: %s (%s)", "The application: %s does not exist": "The application: %s does not exist",
"The application: %s does not exist": "Applicatie %s bestaat niet", "The login method: login with LDAP is not enabled for the application": "The login method: login with LDAP is not enabled for the application",
"The application: %s has disabled users to signin": "The application: %s has disabled users to signin", "The login method: login with SMS is not enabled for the application": "The login method: login with SMS is not enabled for the application",
"The login method: login with LDAP is not enabled for the application": "LDAP-login uitgeschakeld voor deze app", "The login method: login with email is not enabled for the application": "The login method: login with email is not enabled for the application",
"The login method: login with SMS is not enabled for the application": "SMS-login uitgeschakeld voor deze app", "The login method: login with face is not enabled for the application": "The login method: login with face is not enabled for the application",
"The login method: login with email is not enabled for the application": "E-mail-login uitgeschakeld voor deze app", "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 login method: login with face is not enabled for the application": "Face-login uitgeschakeld voor deze app", "The organization: %s does not exist": "The organization: %s does not exist",
"The login method: login with password is not enabled for the application": "Wachtwoord-login uitgeschakeld voor deze app", "The provider: %s is not enabled for the application": "The provider: %s is not enabled for the application",
"The organization: %s does not exist": "Organisatie %s bestaat niet", "Unauthorized operation": "Unauthorized operation",
"The organization: %s has disabled users to signin": "The organization: %s has disabled users to signin", "Unknown authentication type (not password or provider), form = %s": "Unknown authentication type (not password or provider), form = %s",
"The provider: %s does not exist": "Provider %s bestaat niet", "User's tag: %s is not listed in the application's tags": "User's tag: %s is not listed in the application's tags",
"The provider: %s is not enabled for the application": "Provider %s uitgeschakeld voor deze app", "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing"
"Unauthorized operation": "Niet toegestane handeling",
"Unknown authentication type (not password or provider), form = %s": "Onbekend authenticatietype, form = %s",
"User's tag: %s is not listed in the application's tags": "Tag %s ontbreekt in app-tags",
"UserCode Expired": "Gebruikerscode verlopen",
"UserCode Invalid": "Ongeldige gebruikerscode",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "Betaald lid %s zonder actief abonnement en app %s heeft geen standaardprijs",
"the application for user %s is not found": "App voor gebruiker %s niet gevonden",
"the organization: %s is not found": "Organisatie %s niet gevonden"
}, },
"cas": { "cas": {
"Service %s and %s do not match": "Services %s en %s komen niet overeen" "Service %s and %s do not match": "Service %s and %s do not match"
}, },
"check": { "check": {
"%s does not meet the CIDR format requirements: %s": "%s voldoet niet aan CIDR-formaat: %s", "Affiliation cannot be blank": "Affiliation cannot be blank",
"Affiliation cannot be blank": "Affiliatie is verplicht", "Default code does not match the code's matching rules": "Default code does not match the code's matching rules",
"CIDR for IP: %s should not be empty": "CIDR voor IP %s mag niet leeg zijn", "DisplayName cannot be blank": "DisplayName cannot be blank",
"Default code does not match the code's matching rules": "Standaardcode komt niet overeen met regels", "DisplayName is not valid real name": "DisplayName is not valid real name",
"DisplayName cannot be blank": "Weergavenaam is verplicht", "Email already exists": "Email already exists",
"DisplayName is not valid real name": "Geen geldige echte naam", "Email cannot be empty": "Email cannot be empty",
"Email already exists": "E-mail bestaat al", "Email is invalid": "Email is invalid",
"Email cannot be empty": "E-mail is verplicht", "Empty username.": "Empty username.",
"Email is invalid": "Ongeldig e-mailadres", "Face data does not exist, cannot log in": "Face data does not exist, cannot log in",
"Empty username.": "Gebruikersnaam ontbreekt", "Face data mismatch": "Face data mismatch",
"Face data does not exist, cannot log in": "Geen face-gegevens, inloggen niet mogelijk", "FirstName cannot be blank": "FirstName cannot be blank",
"Face data mismatch": "Face-gegevens komen niet overeen", "Invitation code cannot be blank": "Invitation code cannot be blank",
"Failed to parse client IP: %s": "IP parsen mislukt: %s", "Invitation code exhausted": "Invitation code exhausted",
"FirstName cannot be blank": "Voornaam is verplicht", "Invitation code is invalid": "Invitation code is invalid",
"Invitation code cannot be blank": "Uitnodigingscode is verplicht", "Invitation code suspended": "Invitation code suspended",
"Invitation code exhausted": "Uitnodigingscode volledig gebruikt", "LDAP user name or password incorrect": "LDAP user name or password incorrect",
"Invitation code is invalid": "Ongeldige uitnodigingscode", "LastName cannot be blank": "LastName cannot be blank",
"Invitation code suspended": "Uitnodigingscode opgeschort", "Multiple accounts with same uid, please check your ldap server": "Multiple accounts with same uid, please check your ldap server",
"LDAP user name or password incorrect": "LDAP-gebruikersnaam of wachtwoord onjuist", "Organization does not exist": "Organization does not exist",
"LastName cannot be blank": "Achternaam is verplicht", "Phone already exists": "Phone already exists",
"Multiple accounts with same uid, please check your ldap server": "Meerdere accounts met zelfde uid, controleer LDAP-server", "Phone cannot be empty": "Phone cannot be empty",
"Organization does not exist": "Organisatie bestaat niet", "Phone number is invalid": "Phone number is invalid",
"Password cannot be empty": "Wachtwoord is verplicht", "Please register using the email corresponding to the invitation code": "Please register using the email corresponding to the invitation code",
"Phone already exists": "Telefoonnummer bestaat al", "Please register using the phone corresponding to the invitation code": "Please register using the phone corresponding to the invitation code",
"Phone cannot be empty": "Telefoonnummer is verplicht", "Please register using the username corresponding to the invitation code": "Please register using the username corresponding to the invitation code",
"Phone number is invalid": "Ongeldig telefoonnummer", "Session outdated, please login again": "Session outdated, please login again",
"Please register using the email corresponding to the invitation code": "Registreer met het e-mailadres dat bij de code hoort", "The invitation code has already been used": "The invitation code has already been used",
"Please register using the phone corresponding to the invitation code": "Registreer met het nummer dat bij de code hoort", "The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
"Please register using the username corresponding to the invitation code": "Registreer met de gebruikersnaam die bij de code hoort", "The user: %s doesn't exist in LDAP server": "The user: %s doesn't exist in LDAP server",
"Session outdated, please login again": "Sessie verlopen, log opnieuw in", "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.",
"The invitation code has already been used": "Code al gebruikt", "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex",
"The user is forbidden to sign in, please contact the administrator": "Inloggen verboden, neem contact op met beheerder", "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"",
"The user: %s doesn't exist in LDAP server": "Gebruiker %s ontbreekt in LDAP", "Username already exists": "Username already exists",
"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.": "Gebruikersnaam: alleen letters, cijfers, _ of -; geen dubbele streepjes/underscores; mag niet beginnen/eindigen met streepje of underscore.", "Username cannot be an email address": "Username cannot be an email address",
"The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "Waarde \"%s\" voor veld \"%s\" voldoet niet aan regex", "Username cannot contain white spaces": "Username cannot contain white spaces",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "Waarde \"%s\" voor aanmeldveld \"%s\" voldoet niet aan regex van app \"%s\"", "Username cannot start with a digit": "Username cannot start with a digit",
"Username already exists": "Gebruikersnaam bestaat al", "Username is too long (maximum is 39 characters).": "Username is too long (maximum is 39 characters).",
"Username cannot be an email address": "Gebruikersnaam mag geen e-mailadres zijn", "Username must have at least 2 characters": "Username must have at least 2 characters",
"Username cannot contain white spaces": "Gebruikersnaam mag geen spaties bevatten", "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",
"Username cannot start with a digit": "Gebruikersnaam mag niet met cijfer beginnen", "Your region is not allow to signup by phone": "Your region is not allow to signup by phone",
"Username is too long (maximum is 255 characters).": "Gebruikersnaam te lang (max 255 tekens)", "password or code is incorrect": "password or code is incorrect",
"Username must have at least 2 characters": "Minimaal 2 tekens", "password or code is incorrect, you have %d remaining chances": "password or code is incorrect, you have %d remaining chances",
"Username supports email format. Also 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. Also pay attention to the email format.": "Gebruikersnaam kan e-mail zijn; alleen letters, cijfers, _ of -; geen dubbele streepjes/underscores; mag niet beginnen/eindigen met streepje of underscore.", "unsupported password type: %s": "unsupported password type: %s"
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Te vaak fout wachtwoord/code, wacht %d minuten",
"Your IP address: %s has been banned according to the configuration of: ": "IP-adres %s geblokkeerd volgens configuratie: ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "Wachtwoord verlopen; klik op \"Wachtwoord vergeten\"",
"Your region is not allow to signup by phone": "Registratie per telefoon niet toegestaan in jouw regio",
"password or code is incorrect": "Verkeerd wachtwoord of code",
"password or code is incorrect, you have %s remaining chances": "Verkeerd wachtwoord/code, nog %s pogingen",
"unsupported password type: %s": "Niet-ondersteund wachtwoordtype: %s"
},
"enforcer": {
"the adapter: %s is not found": "Adapter %s niet gevonden"
}, },
"general": { "general": {
"Failed to import groups": "Groepen importeren mislukt", "Missing parameter": "Missing parameter",
"Failed to import users": "Gebruikers importeren mislukt", "Please login first": "Please login first",
"Missing parameter": "Parameter ontbreekt", "The organization: %s should have one application at least": "The organization: %s should have one application at least",
"Only admin user can specify user": "Alleen beheerder mag gebruiker opgeven", "The user: %s doesn't exist": "The user: %s doesn't exist",
"Please login first": "Log eerst in", "don't support captchaProvider: ": "don't support captchaProvider: ",
"The organization: %s should have one application at least": "Organisatie %s moet minstens één app hebben", "this operation is not allowed in demo mode": "this operation is not allowed in demo mode",
"The user: %s doesn't exist": "Gebruiker %s bestaat niet", "this operation requires administrator to perform": "this operation requires administrator to perform"
"Wrong userId": "Verkeerde userId",
"don't support captchaProvider: ": "Captcha-provider niet ondersteund: ",
"this operation is not allowed in demo mode": "Handeling niet toegestaan in demo-modus",
"this operation requires administrator to perform": "Alleen beheerder kan deze handeling uitvoeren"
}, },
"ldap": { "ldap": {
"Ldap server exist": "LDAP-server bestaat al" "Ldap server exist": "Ldap server exist"
}, },
"link": { "link": {
"Please link first": "Koppel eerst", "Please link first": "Please link first",
"This application has no providers": "App heeft geen providers", "This application has no providers": "This application has no providers",
"This application has no providers of type": "App heeft geen providers van dit type", "This application has no providers of type": "This application has no providers of type",
"This provider can't be unlinked": "Provider kan niet ontkoppeld worden", "This provider can't be unlinked": "This provider can't be unlinked",
"You are not the global admin, you can't unlink other users": "Je bent geen globale beheerder, kunt anderen niet ontkoppelen", "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": "Kan jezelf niet ontkoppelen; geen lid van een app" "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": { "organization": {
"Only admin can modify the %s.": "Alleen beheerder kan %s wijzigen.", "Only admin can modify the %s.": "Only admin can modify the %s.",
"The %s is immutable.": "%s kan niet gewijzigd worden.", "The %s is immutable.": "The %s is immutable.",
"Unknown modify rule %s.": "Onbekende wijzigingsregel %s.", "Unknown modify rule %s.": "Unknown modify rule %s."
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "Het toevoegen van een nieuwe gebruiker aan de 'built-in' (ingebouwde) organisatie is momenteel uitgeschakeld. Let op: Alle gebruikers in de 'built-in' organisatie zijn globale beheerders in Casdoor. Raadpleeg de documentatie: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. Als u toch een gebruiker wilt maken voor de 'built-in' organisatie, ga naar de instellingenpagina van de organisatie en schakel de optie 'Heeft bevoegdheidsgoedkeuring' in."
}, },
"permission": { "permission": {
"The permission: \\\"%s\\\" doesn't exist": "Permissie \"%s\" bestaat niet" "The permission: \\\"%s\\\" doesn't exist": "The permission: \\\"%s\\\" doesn't exist"
}, },
"provider": { "provider": {
"Invalid application id": "Ongeldige app-id", "Invalid application id": "Invalid application id",
"the provider: %s does not exist": "Provider %s bestaat niet" "the provider: %s does not exist": "the provider: %s does not exist"
}, },
"resource": { "resource": {
"User is nil for tag: avatar": "Gebruiker ontbreekt voor avatar-tag", "User is nil for tag: avatar": "User is nil for tag: avatar",
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Gebruikersnaam of bestandspad leeg: %s / %s" "Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Username or fullFilePath is empty: username = %s, fullFilePath = %s"
}, },
"saml": { "saml": {
"Application %s not found": "App %s niet gevonden" "Application %s not found": "Application %s not found"
}, },
"saml_sp": { "saml_sp": {
"provider %s's category is not SAML": "Provider %s is geen SAML-type" "provider %s's category is not SAML": "provider %s's category is not SAML"
}, },
"service": { "service": {
"Empty parameters for emailForm: %v": "Lege parameters voor e-mailformulier: %v", "Empty parameters for emailForm: %v": "Empty parameters for emailForm: %v",
"Invalid Email receivers: %s": "Ongeldige e-mailontvangers: %s", "Invalid Email receivers: %s": "Invalid Email receivers: %s",
"Invalid phone receivers: %s": "Ongeldige telefoonontvangers: %s" "Invalid phone receivers: %s": "Invalid phone receivers: %s"
}, },
"storage": { "storage": {
"The objectKey: %s is not allowed": "ObjectKey %s niet toegestaan", "The objectKey: %s is not allowed": "The objectKey: %s is not allowed",
"The provider type: %s is not supported": "Providertype %s niet ondersteund" "The provider type: %s is not supported": "The provider type: %s is not supported"
},
"subscription": {
"Error": "Fout"
}, },
"token": { "token": {
"Grant_type: %s is not supported in this application": "Grant_type %s wordt niet ondersteund", "Grant_type: %s is not supported in this application": "Grant_type: %s is not supported in this application",
"Invalid application or wrong clientSecret": "Ongeldige app of verkeerde clientSecret", "Invalid application or wrong clientSecret": "Invalid application or wrong clientSecret",
"Invalid client_id": "Ongeldige client_id", "Invalid client_id": "Invalid client_id",
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "Redirect-URI %s staat niet op de toegestane lijst", "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 niet gevonden; ongeldige accessToken" "Token not found, invalid accessToken": "Token not found, invalid accessToken"
}, },
"user": { "user": {
"Display name cannot be empty": "Weergavenaam is verplicht", "Display name cannot be empty": "Display name cannot be empty",
"MFA email is enabled but email is empty": "MFA-e-mail ingeschakeld maar e-mailadres leeg", "New password cannot contain blank space.": "New password cannot contain blank space."
"MFA phone is enabled but phone number is empty": "MFA-telefoon ingeschakeld maar nummer leeg", },
"New password cannot contain blank space.": "Nieuw wachtwoord mag geen spaties bevatten", "user_upload": {
"the user's owner and name should not be empty": "Eigenaar en naam van gebruiker mogen niet leeg zijn" "Failed to import users": "Failed to import users"
}, },
"util": { "util": {
"No application is found for userId: %s": "Geen app gevonden voor userId %s", "No application is found for userId: %s": "No application is found for userId: %s",
"No provider for category: %s is found for application: %s": "Geen provider voor categorie %s in app %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": "Provider %s niet gevonden" "The provider: %s is not found": "The provider: %s is not found"
}, },
"verification": { "verification": {
"Invalid captcha provider.": "Ongeldige captcha-provider", "Invalid captcha provider.": "Invalid captcha provider.",
"Phone number is invalid in your region %s": "Telefoonnummer ongeldig in regio %s", "Phone number is invalid in your region %s": "Phone number is invalid in your region %s",
"The verification code has already been used!": "Verificatiecode al gebruikt!", "The verification code has not been sent yet!": "The verification code has not been sent yet!",
"The verification code has not been sent yet!": "Verificatiecode nog niet verzonden!", "The verification code has not been sent yet, or has already been used!": "The verification code has not been sent yet, or has already been used!",
"Turing test failed.": "Turing-test mislukt", "Turing test failed.": "Turing test failed.",
"Unable to get the email modify rule.": "Kan e-mail-wijzigingsregel niet ophalen", "Unable to get the email modify rule.": "Unable to get the email modify rule.",
"Unable to get the phone modify rule.": "Kan telefoon-wijzigingsregel niet ophalen", "Unable to get the phone modify rule.": "Unable to get the phone modify rule.",
"Unknown type": "Onbekend type", "Unknown type": "Unknown type",
"Wrong verification code!": "Verkeerde verificatiecode!", "Wrong verification code!": "Wrong verification code!",
"You should verify your code in %d min!": "Verifieer binnen %d min!", "You should verify your code in %d min!": "You should verify your code in %d min!",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "Voeg een SMS-provider toe aan de Providers-lijst van app %s", "please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "please add a SMS provider to the \\\"Providers\\\" list for the application: %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "Voeg een e-mailprovider toe aan de Providers-lijst van app %s", "please add an Email provider to the \\\"Providers\\\" list for the application: %s": "please add an Email provider to the \\\"Providers\\\" list for the application: %s",
"the user does not exist, please sign up first": "Gebruiker bestaat niet; meld je eerst aan" "the user does not exist, please sign up first": "the user does not exist, please sign up first"
}, },
"webauthn": { "webauthn": {
"Found no credentials for this user": "Found no credentials for this user", "Found no credentials for this user": "Found no credentials for this user",
"Please call WebAuthnSigninBegin first": "Roep eerst WebAuthnSigninBegin aan" "Please call WebAuthnSigninBegin first": "Please call WebAuthnSigninBegin first"
} }
} }

View File

@@ -1,193 +1,167 @@
{ {
"account": { "account": {
"Failed to add user": "Nie udało się dodać użytkownika", "Failed to add user": "Failed to add user",
"Get init score failed, error: %w": "Pobranie początkowego wyniku nie powiodło się, błąd: %w", "Get init score failed, error: %w": "Get init score failed, error: %w",
"Please sign out first": "Najpierw się wyloguj", "Please sign out first": "Please sign out first",
"The application does not allow to sign up new account": "Aplikacja nie pozwala na rejestrację nowego konta" "The application does not allow to sign up new account": "The application does not allow to sign up new account"
}, },
"auth": { "auth": {
"Challenge method should be S256": "Metoda wyzwania powinna być S256", "Challenge method should be S256": "Challenge method should be S256",
"DeviceCode Invalid": "Nieprawidłowy kod urządzenia", "Failed to create user, user information is invalid: %s": "Failed to create user, user information is invalid: %s",
"Failed to create user, user information is invalid: %s": "Nie udało się utworzyć użytkownika, dane użytkownika są nieprawidłowe: %s", "Failed to login in: %s": "Failed to login in: %s",
"Failed to login in: %s": "Logowanie nie powiodło się: %s", "Invalid token": "Invalid token",
"Invalid token": "Nieprawidłowy token", "State expected: %s, but got: %s": "State expected: %s, but got: %s",
"State expected: %s, but got: %s": "Oczekiwano stanu: %s, ale otrzymano: %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 via %%s, please use another way to sign up": "Konto dla dostawcy: %s i nazwy użytkownika: %s (%s) nie istnieje i nie można się zarejestrować jako nowe konto przez %%s, użyj innej metody rejestracji", "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) does not exist and is not allowed to sign up as new account, please contact your IT support": "Konto dla dostawcy: %s i nazwy użytkownika: %s (%s) nie istnieje i nie można się zarejestrować jako nowe konto, skontaktuj się z pomocą IT", "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 account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "Konto dla dostawcy: %s i nazwy użytkownika: %s (%s) jest już powiązane z innym kontem: %s (%s)", "The application: %s does not exist": "The application: %s does not exist",
"The application: %s does not exist": "Aplikacja: %s nie istnieje", "The login method: login with LDAP is not enabled for the application": "The login method: login with LDAP is not enabled for the application",
"The application: %s has disabled users to signin": "The application: %s has disabled users to signin", "The login method: login with SMS is not enabled for the application": "The login method: login with SMS is not enabled for the application",
"The login method: login with LDAP is not enabled for the application": "Metoda logowania: logowanie przez LDAP nie jest włączone dla aplikacji", "The login method: login with email is not enabled for the application": "The login method: login with email is not enabled for the application",
"The login method: login with SMS is not enabled for the application": "Metoda logowania: logowanie przez SMS nie jest włączona dla aplikacji", "The login method: login with face is not enabled for the application": "The login method: login with face is not enabled for the application",
"The login method: login with email is not enabled for the application": "Metoda logowania: logowanie przez email nie jest włączona dla aplikacji", "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 login method: login with face is not enabled for the application": "Metoda logowania: logowanie przez twarz nie jest włączona dla aplikacji", "The organization: %s does not exist": "The organization: %s does not exist",
"The login method: login with password is not enabled for the application": "Metoda logowania: logowanie przez hasło nie jest włączone dla aplikacji", "The provider: %s is not enabled for the application": "The provider: %s is not enabled for the application",
"The organization: %s does not exist": "Organizacja: %s nie istnieje", "Unauthorized operation": "Unauthorized operation",
"The organization: %s has disabled users to signin": "The organization: %s has disabled users to signin", "Unknown authentication type (not password or provider), form = %s": "Unknown authentication type (not password or provider), form = %s",
"The provider: %s does not exist": "Dostawca: %s nie istnieje", "User's tag: %s is not listed in the application's tags": "User's tag: %s is not listed in the application's tags",
"The provider: %s is not enabled for the application": "Dostawca: %s nie jest włączony dla aplikacji", "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing"
"Unauthorized operation": "Nieautoryzowana operacja",
"Unknown authentication type (not password or provider), form = %s": "Nieznany typ uwierzytelnienia (nie hasło ani dostawca), formularz = %s",
"User's tag: %s is not listed in the application's tags": "Tag użytkownika: %s nie znajduje się na liście tagów aplikacji",
"UserCode Expired": "Kod użytkownika wygasł",
"UserCode Invalid": "Nieprawidłowy kod użytkownika",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "płatny użytkownik %s nie ma aktywnej lub oczekującej subskrypcji, a aplikacja: %s nie ma domyślnego cennika",
"the application for user %s is not found": "aplikacja dla użytkownika %s nie została znaleziona",
"the organization: %s is not found": "organizacja: %s nie została znaleziona"
}, },
"cas": { "cas": {
"Service %s and %s do not match": "Usługa %s i %s nie pasują do siebie" "Service %s and %s do not match": "Service %s and %s do not match"
}, },
"check": { "check": {
"%s does not meet the CIDR format requirements: %s": "%s nie spełnia wymagań formatu CIDR: %s", "Affiliation cannot be blank": "Affiliation cannot be blank",
"Affiliation cannot be blank": "Przynależność nie może być pusta", "Default code does not match the code's matching rules": "Default code does not match the code's matching rules",
"CIDR for IP: %s should not be empty": "CIDR dla IP: %s nie powinno być puste", "DisplayName cannot be blank": "DisplayName cannot be blank",
"Default code does not match the code's matching rules": "Domyślny kod nie pasuje do reguł dopasowania kodu", "DisplayName is not valid real name": "DisplayName is not valid real name",
"DisplayName cannot be blank": "Nazwa wyświetlana nie może być pusta", "Email already exists": "Email already exists",
"DisplayName is not valid real name": "Nazwa wyświetlana nie jest prawdziwym imieniem", "Email cannot be empty": "Email cannot be empty",
"Email already exists": "Email już istnieje", "Email is invalid": "Email is invalid",
"Email cannot be empty": "Email nie może być pusty", "Empty username.": "Empty username.",
"Email is invalid": "Email jest nieprawidłowy", "Face data does not exist, cannot log in": "Face data does not exist, cannot log in",
"Empty username.": "Pusta nazwa użytkownika.", "Face data mismatch": "Face data mismatch",
"Face data does not exist, cannot log in": "Dane twarzy nie istnieją, nie można się zalogować", "FirstName cannot be blank": "FirstName cannot be blank",
"Face data mismatch": "Niezgodność danych twarzy", "Invitation code cannot be blank": "Invitation code cannot be blank",
"Failed to parse client IP: %s": "Nie udało się przeanalizować IP klienta: %s", "Invitation code exhausted": "Invitation code exhausted",
"FirstName cannot be blank": "Imię nie może być puste", "Invitation code is invalid": "Invitation code is invalid",
"Invitation code cannot be blank": "Kod zaproszenia nie może być pusty", "Invitation code suspended": "Invitation code suspended",
"Invitation code exhausted": "Kod zaproszenia został wykorzystany", "LDAP user name or password incorrect": "LDAP user name or password incorrect",
"Invitation code is invalid": "Kod zaproszenia jest nieprawidłowy", "LastName cannot be blank": "LastName cannot be blank",
"Invitation code suspended": "Kod zaproszenia został zawieszony", "Multiple accounts with same uid, please check your ldap server": "Multiple accounts with same uid, please check your ldap server",
"LDAP user name or password incorrect": "Nazwa użytkownika LDAP lub hasło jest nieprawidłowe", "Organization does not exist": "Organization does not exist",
"LastName cannot be blank": "Nazwisko nie może być puste", "Phone already exists": "Phone already exists",
"Multiple accounts with same uid, please check your ldap server": "Wiele kont z tym samym uid, sprawdź swój serwer ldap", "Phone cannot be empty": "Phone cannot be empty",
"Organization does not exist": "Organizacja nie istnieje", "Phone number is invalid": "Phone number is invalid",
"Password cannot be empty": "Hasło nie może być puste", "Please register using the email corresponding to the invitation code": "Please register using the email corresponding to the invitation code",
"Phone already exists": "Telefon już istnieje", "Please register using the phone corresponding to the invitation code": "Please register using the phone corresponding to the invitation code",
"Phone cannot be empty": "Telefon nie może być pusty", "Please register using the username corresponding to the invitation code": "Please register using the username corresponding to the invitation code",
"Phone number is invalid": "Numer telefonu jest nieprawidłowy", "Session outdated, please login again": "Session outdated, please login again",
"Please register using the email corresponding to the invitation code": "Zarejestruj się używając emaila odpowiadającego kodowi zaproszenia", "The invitation code has already been used": "The invitation code has already been used",
"Please register using the phone corresponding to the invitation code": "Zarejestruj się używając telefonu odpowiadającego kodowi zaproszenia", "The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
"Please register using the username corresponding to the invitation code": "Zarejestruj się używając nazwy użytkownika odpowiadającej kodowi zaproszenia", "The user: %s doesn't exist in LDAP server": "The user: %s doesn't exist in LDAP server",
"Session outdated, please login again": "Sesja wygasła, zaloguj się ponownie", "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.",
"The invitation code has already been used": "Kod zaproszenia został już wykorzystany", "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex",
"The user is forbidden to sign in, please contact the administrator": "Użytkownikowi zabroniono logowania, skontaktuj się z administratorem", "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"",
"The user: %s doesn't exist in LDAP server": "Użytkownik: %s nie istnieje w serwerze LDAP", "Username already exists": "Username already exists",
"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.": "Nazwa użytkownika może zawierać tylko znaki alfanumeryczne, podkreślenia lub myślniki, nie może mieć kolejnych myślników lub podkreśleń i nie może zaczynać się ani kończyć myślnikiem lub podkreśleniem.", "Username cannot be an email address": "Username cannot be an email address",
"The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "Wartość \\\"%s\\\" dla pola konta \\\"%s\\\" nie pasuje do wyrażenia regularnego elementu konta", "Username cannot contain white spaces": "Username cannot contain white spaces",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "Wartość \\\"%s\\\" dla pola rejestracji \\\"%s\\\" nie pasuje do wyrażenia regularnego elementu rejestracji aplikacji \\\"%s\\\"", "Username cannot start with a digit": "Username cannot start with a digit",
"Username already exists": "Nazwa użytkownika już istnieje", "Username is too long (maximum is 39 characters).": "Username is too long (maximum is 39 characters).",
"Username cannot be an email address": "Nazwa użytkownika nie może być adresem email", "Username must have at least 2 characters": "Username must have at least 2 characters",
"Username cannot contain white spaces": "Nazwa użytkownika nie może zawierać spacji", "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",
"Username cannot start with a digit": "Nazwa użytkownika nie może zaczynać się od cyfry", "Your region is not allow to signup by phone": "Your region is not allow to signup by phone",
"Username is too long (maximum is 255 characters).": "Nazwa użytkownika jest za długa (maksymalnie 255 znaków).", "password or code is incorrect": "password or code is incorrect",
"Username must have at least 2 characters": "Nazwa użytkownika musi mieć co najmniej 2 znaki", "password or code is incorrect, you have %d remaining chances": "password or code is incorrect, you have %d remaining chances",
"Username supports email format. Also 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. Also pay attention to the email format.": "Nazwa użytkownika obsługuje format email. Również nazwa użytkownika może zawierać tylko znaki alfanumeryczne, podkreślenia lub myślniki, nie może mieć kolejnych myślników lub podkreśleń i nie może zaczynać się ani kończyć myślnikiem lub podkreśleniem. Zwróć też uwagę na format email.", "unsupported password type: %s": "unsupported password type: %s"
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Wprowadziłeś złe hasło lub kod zbyt wiele razy, poczekaj %d minut i spróbuj ponownie",
"Your IP address: %s has been banned according to the configuration of: ": "Twój adres IP: %s został zablokowany zgodnie z konfiguracją: ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "Twoje hasło wygasło. Zresetuj hasło klikając \\\"Zapomniałem hasła\\\"",
"Your region is not allow to signup by phone": "Twój region nie pozwala na rejestrację przez telefon",
"password or code is incorrect": "hasło lub kod jest nieprawidłowe",
"password or code is incorrect, you have %s remaining chances": "hasło lub kod jest nieprawidłowe, masz jeszcze %s prób",
"unsupported password type: %s": "nieobsługiwany typ hasła: %s"
},
"enforcer": {
"the adapter: %s is not found": "adapter: %s nie został znaleziony"
}, },
"general": { "general": {
"Failed to import groups": "Nie udało się zaimportować grup", "Missing parameter": "Missing parameter",
"Failed to import users": "Nie udało się zaimportować użytkowników", "Please login first": "Please login first",
"Missing parameter": "Brakujący parametr", "The organization: %s should have one application at least": "The organization: %s should have one application at least",
"Only admin user can specify user": "Tylko administrator może wskazać użytkownika", "The user: %s doesn't exist": "The user: %s doesn't exist",
"Please login first": "Najpierw się zaloguj", "don't support captchaProvider: ": "don't support captchaProvider: ",
"The organization: %s should have one application at least": "Organizacja: %s powinna mieć co najmniej jedną aplikację", "this operation is not allowed in demo mode": "this operation is not allowed in demo mode",
"The user: %s doesn't exist": "Użytkownik: %s nie istnieje", "this operation requires administrator to perform": "this operation requires administrator to perform"
"Wrong userId": "Nieprawidłowy userId",
"don't support captchaProvider: ": "nie obsługuje captchaProvider: ",
"this operation is not allowed in demo mode": "ta operacja nie jest dozwolona w trybie demo",
"this operation requires administrator to perform": "ta operacja wymaga administratora do wykonania"
}, },
"ldap": { "ldap": {
"Ldap server exist": "Serwer LDAP istnieje" "Ldap server exist": "Ldap server exist"
}, },
"link": { "link": {
"Please link first": "Najpierw się połącz", "Please link first": "Please link first",
"This application has no providers": "Ta aplikacja nie ma dostawców", "This application has no providers": "This application has no providers",
"This application has no providers of type": "Ta aplikacja nie ma dostawców typu", "This application has no providers of type": "This application has no providers of type",
"This provider can't be unlinked": "Ten dostawca nie może zostać odłączony", "This provider can't be unlinked": "This provider can't be unlinked",
"You are not the global admin, you can't unlink other users": "Nie jesteś globalnym administratorem, nie możesz odłączyć innych użytkowników", "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": "Nie możesz odłączyć siebie, nie jesteś członkiem żadnej aplikacji" "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": { "organization": {
"Only admin can modify the %s.": "Tylko administrator może modyfikować %s.", "Only admin can modify the %s.": "Only admin can modify the %s.",
"The %s is immutable.": "%s jest niezmienny.", "The %s is immutable.": "The %s is immutable.",
"Unknown modify rule %s.": "Nieznana reguła modyfikacji %s.", "Unknown modify rule %s.": "Unknown modify rule %s."
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "Dodawanie nowego użytkownika do organizacji „built-in' (wbudowanej) jest obecnie wyłączone. Należy zauważyć, że wszyscy użytkownicy w organizacji „built-in' są globalnymi administratorami w Casdoor. Zobacz dokumentację: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. Jeśli nadal chcesz utworzyć użytkownika dla organizacji „built-in', przejdź do strony ustawień organizacji i włącz opcję „Ma zgodę na uprawnienia'."
}, },
"permission": { "permission": {
"The permission: \\\"%s\\\" doesn't exist": "Uprawnienie: \\\"%s\\\" nie istnieje" "The permission: \\\"%s\\\" doesn't exist": "The permission: \\\"%s\\\" doesn't exist"
}, },
"provider": { "provider": {
"Invalid application id": "Nieprawidłowe id aplikacji", "Invalid application id": "Invalid application id",
"the provider: %s does not exist": "dostawca: %s nie istnieje" "the provider: %s does not exist": "the provider: %s does not exist"
}, },
"resource": { "resource": {
"User is nil for tag: avatar": "Użytkownik jest nil dla tagu: avatar", "User is nil for tag: avatar": "User is nil for tag: avatar",
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Nazwa użytkownika lub pełna ścieżka pliku jest pusta: username = %s, fullFilePath = %s" "Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Username or fullFilePath is empty: username = %s, fullFilePath = %s"
}, },
"saml": { "saml": {
"Application %s not found": "Aplikacja %s nie została znaleziona" "Application %s not found": "Application %s not found"
}, },
"saml_sp": { "saml_sp": {
"provider %s's category is not SAML": "kategoria dostawcy %s nie jest SAML" "provider %s's category is not SAML": "provider %s's category is not SAML"
}, },
"service": { "service": {
"Empty parameters for emailForm: %v": "Puste parametry dla emailForm: %v", "Empty parameters for emailForm: %v": "Empty parameters for emailForm: %v",
"Invalid Email receivers: %s": "Nieprawidłowi odbiorcy email: %s", "Invalid Email receivers: %s": "Invalid Email receivers: %s",
"Invalid phone receivers: %s": "Nieprawidłowi odbiorcy telefonu: %s" "Invalid phone receivers: %s": "Invalid phone receivers: %s"
}, },
"storage": { "storage": {
"The objectKey: %s is not allowed": "Klucz obiektu: %s jest niedozwolony", "The objectKey: %s is not allowed": "The objectKey: %s is not allowed",
"The provider type: %s is not supported": "Typ dostawcy: %s nie jest obsługiwany" "The provider type: %s is not supported": "The provider type: %s is not supported"
},
"subscription": {
"Error": "Błąd"
}, },
"token": { "token": {
"Grant_type: %s is not supported in this application": "Grant_type: %s nie jest obsługiwany w tej aplikacji", "Grant_type: %s is not supported in this application": "Grant_type: %s is not supported in this application",
"Invalid application or wrong clientSecret": "Nieprawidłowa aplikacja lub błędny clientSecret", "Invalid application or wrong clientSecret": "Invalid application or wrong clientSecret",
"Invalid client_id": "Nieprawidłowy client_id", "Invalid client_id": "Invalid client_id",
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "Redirect URI: %s nie istnieje na liście dozwolonych Redirect URI", "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 nie znaleziony, nieprawidłowy accessToken" "Token not found, invalid accessToken": "Token not found, invalid accessToken"
}, },
"user": { "user": {
"Display name cannot be empty": "Nazwa wyświetlana nie może być pusta", "Display name cannot be empty": "Display name cannot be empty",
"MFA email is enabled but email is empty": "MFA email jest włączone, ale email jest pusty", "New password cannot contain blank space.": "New password cannot contain blank space."
"MFA phone is enabled but phone number is empty": "MFA telefon jest włączony, ale numer telefonu jest pusty", },
"New password cannot contain blank space.": "Nowe hasło nie może zawierać spacji.", "user_upload": {
"the user's owner and name should not be empty": "właściciel i nazwa użytkownika nie powinny być puste" "Failed to import users": "Failed to import users"
}, },
"util": { "util": {
"No application is found for userId: %s": "Nie znaleziono aplikacji dla userId: %s", "No application is found for userId: %s": "No application is found for userId: %s",
"No provider for category: %s is found for application: %s": "Nie znaleziono dostawcy dla kategorii: %s dla aplikacji: %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": "Dostawca: %s nie został znaleziony" "The provider: %s is not found": "The provider: %s is not found"
}, },
"verification": { "verification": {
"Invalid captcha provider.": "Nieprawidłowy dostawca captcha.", "Invalid captcha provider.": "Invalid captcha provider.",
"Phone number is invalid in your region %s": "Numer telefonu jest nieprawidłowy w twoim regionie %s", "Phone number is invalid in your region %s": "Phone number is invalid in your region %s",
"The verification code has already been used!": "Kod weryfikacyjny został już wykorzystany!", "The verification code has not been sent yet!": "The verification code has not been sent yet!",
"The verification code has not been sent yet!": "Kod weryfikacyjny nie został jeszcze wysłany!", "The verification code has not been sent yet, or has already been used!": "The verification code has not been sent yet, or has already been used!",
"Turing test failed.": "Test Turinga nie powiódł się.", "Turing test failed.": "Turing test failed.",
"Unable to get the email modify rule.": "Nie można pobrać reguły modyfikacji email.", "Unable to get the email modify rule.": "Unable to get the email modify rule.",
"Unable to get the phone modify rule.": "Nie można pobrać reguły modyfikacji telefonu.", "Unable to get the phone modify rule.": "Unable to get the phone modify rule.",
"Unknown type": "Nieznany typ", "Unknown type": "Unknown type",
"Wrong verification code!": "Zły kod weryfikacyjny!", "Wrong verification code!": "Wrong verification code!",
"You should verify your code in %d min!": "Powinieneś zweryfikować swój kod w ciągu %d min!", "You should verify your code in %d min!": "You should verify your code in %d min!",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "proszę dodać dostawcę SMS do listy \\\"Providers\\\" dla aplikacji: %s", "please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "please add a SMS provider to the \\\"Providers\\\" list for the application: %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "proszę dodać dostawcę email do listy \\\"Providers\\\" dla aplikacji: %s", "please add an Email provider to the \\\"Providers\\\" list for the application: %s": "please add an Email provider to the \\\"Providers\\\" list for the application: %s",
"the user does not exist, please sign up first": "użytkownik nie istnieje, najpierw się zarejestruj" "the user does not exist, please sign up first": "the user does not exist, please sign up first"
}, },
"webauthn": { "webauthn": {
"Found no credentials for this user": "Found no credentials for this user", "Found no credentials for this user": "Found no credentials for this user",
"Please call WebAuthnSigninBegin first": "Najpierw wywołaj WebAuthnSigninBegin" "Please call WebAuthnSigninBegin first": "Please call WebAuthnSigninBegin first"
} }
} }

View File

@@ -7,124 +7,101 @@
}, },
"auth": { "auth": {
"Challenge method should be S256": "Método de desafio deve ser S256", "Challenge method should be S256": "Método de desafio deve ser S256",
"DeviceCode Invalid": "Código de dispositivo inválido",
"Failed to create user, user information is invalid: %s": "Falha ao criar usuário, informação do usuário inválida: %s", "Failed to create user, user information is invalid: %s": "Falha ao criar usuário, informação do usuário inválida: %s",
"Failed to login in: %s": "Falha ao entrar em: %s", "Failed to login in: %s": "Falha ao entrar em: %s",
"Invalid token": "Token inválido", "Invalid token": "Token inválido",
"State expected: %s, but got: %s": "Estado esperado: %s, mas recebeu: %s", "State expected: %s, but got: %s": "Estado esperado: %s, mas recebeu: %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": "A conta para o provedor: %s e nome de usuário: %s (%s) não existe e não é permitido inscrever-se como uma nova conta via %%s, por favor, use outra forma de se inscrever", "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": "A conta para o provedor: %s e nome de usuário: %s (%s) não existe e não é permitido inscrever-se como uma nova conta via %%s, por favor, use outra forma de se inscrever",
"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": "A conta para o provedor: %s e nome de usuário: %s (%s) não existe e não é permitido inscrever-se como uma nova conta entre em contato com seu suporte de TI", "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": "A conta para o provedor: %s e nome de usuário: %s (%s) não existe e não é permitido inscrever-se como uma nova conta entre em contato com seu suporte de TI",
"The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "A conta do provedor: %s e nome de usuário: %s (%s) já está vinculada a outra conta: %s (%s)", "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": "O aplicativo: %s não existe", "The application: %s does not exist": "The application: %s does not exist",
"The application: %s has disabled users to signin": "The application: %s has disabled users to signin", "The login method: login with LDAP is not enabled for the application": "The login method: login with LDAP is not enabled for the application",
"The login method: login with LDAP is not enabled for the application": "O método de login: login com LDAP não está ativado para a aplicação", "The login method: login with SMS is not enabled for the application": "The login method: login with SMS is not enabled for the application",
"The login method: login with SMS is not enabled for the application": "O método de login: login com SMS não está ativado para a aplicação", "The login method: login with email is not enabled for the application": "The login method: login with email is not enabled for the application",
"The login method: login with email is not enabled for the application": "O método de login: login com e-mail não está ativado para a aplicação", "The login method: login with face is not enabled for the application": "The login method: login with face is not enabled for the application",
"The login method: login with face is not enabled for the application": "O método de login: login com reconhecimento facial não está ativado para a aplicação", "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 login method: login with password is not enabled for the application": "O método de login: login com senha não está habilitado para o aplicativo", "The organization: %s does not exist": "The organization: %s does not exist",
"The organization: %s does not exist": "A organização: %s não existe", "The provider: %s is not enabled for the application": "The provider: %s is not enabled for the application",
"The organization: %s has disabled users to signin": "The organization: %s has disabled users to signin", "Unauthorized operation": "Unauthorized operation",
"The provider: %s does not exist": "O provedor: %s não existe", "Unknown authentication type (not password or provider), form = %s": "Unknown authentication type (not password or provider), form = %s",
"The provider: %s is not enabled for the application": "O provedor: %s não está habilitado para o aplicativo", "User's tag: %s is not listed in the application's tags": "User's tag: %s is not listed in the application's tags",
"Unauthorized operation": "Operação não autorizada", "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing"
"Unknown authentication type (not password or provider), form = %s": "Tipo de autenticação desconhecido (não é senha ou provedor), formulário = %s",
"User's tag: %s is not listed in the application's tags": "A tag do usuário: %s não está listada nas tags da aplicação",
"UserCode Expired": "Código de usuário expirado",
"UserCode Invalid": "Código de usuário inválido",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "usuário pago %s não possui assinatura ativa ou pendente e a aplicação: %s não possui preço padrão",
"the application for user %s is not found": "a aplicação para o usuário %s não foi encontrada",
"the organization: %s is not found": "a organização: %s não foi encontrada"
}, },
"cas": { "cas": {
"Service %s and %s do not match": "O serviço %s e %s não correspondem" "Service %s and %s do not match": "Service %s and %s do not match"
}, },
"check": { "check": {
"%s does not meet the CIDR format requirements: %s": "%s não atende aos requisitos de formato CIDR: %s", "Affiliation cannot be blank": "Affiliation cannot be blank",
"Affiliation cannot be blank": "A filiação não pode estar em branco", "Default code does not match the code's matching rules": "Default code does not match the code's matching rules",
"CIDR for IP: %s should not be empty": "CIDR para IP: %s não deve estar vazio", "DisplayName cannot be blank": "DisplayName cannot be blank",
"Default code does not match the code's matching rules": "O código padrão não corresponde às regras de correspondência do código", "DisplayName is not valid real name": "DisplayName is not valid real name",
"DisplayName cannot be blank": "O nome de exibição não pode estar em branco", "Email already exists": "Email already exists",
"DisplayName is not valid real name": "O nome de exibição não é um nome real válido", "Email cannot be empty": "Email cannot be empty",
"Email already exists": "O e-mail já existe", "Email is invalid": "Email is invalid",
"Email cannot be empty": "O e-mail não pode estar vazio", "Empty username.": "Empty username.",
"Email is invalid": "O e-mail é inválido", "Face data does not exist, cannot log in": "Face data does not exist, cannot log in",
"Empty username.": "Nome de usuário vazio.", "Face data mismatch": "Face data mismatch",
"Face data does not exist, cannot log in": "Dados faciais não existem, não é possível fazer login", "FirstName cannot be blank": "FirstName cannot be blank",
"Face data mismatch": "Incompatibilidade de dados faciais", "Invitation code cannot be blank": "Invitation code cannot be blank",
"Failed to parse client IP: %s": "Falha ao analisar IP do cliente: %s", "Invitation code exhausted": "Invitation code exhausted",
"FirstName cannot be blank": "O primeiro nome não pode estar em branco", "Invitation code is invalid": "Invitation code is invalid",
"Invitation code cannot be blank": "O código de convite não pode estar em branco", "Invitation code suspended": "Invitation code suspended",
"Invitation code exhausted": "Código de convite esgotado", "LDAP user name or password incorrect": "LDAP user name or password incorrect",
"Invitation code is invalid": "Código de convite inválido", "LastName cannot be blank": "LastName cannot be blank",
"Invitation code suspended": "Código de convite suspenso", "Multiple accounts with same uid, please check your ldap server": "Multiple accounts with same uid, please check your ldap server",
"LDAP user name or password incorrect": "Nome de usuário ou senha LDAP incorretos", "Organization does not exist": "Organization does not exist",
"LastName cannot be blank": "O sobrenome não pode estar em branco", "Phone already exists": "Phone already exists",
"Multiple accounts with same uid, please check your ldap server": "Múltiplas contas com o mesmo uid, verifique seu servidor LDAP", "Phone cannot be empty": "Phone cannot be empty",
"Organization does not exist": "A organização não existe", "Phone number is invalid": "Phone number is invalid",
"Password cannot be empty": "A senha não pode estar vazia", "Please register using the email corresponding to the invitation code": "Please register using the email corresponding to the invitation code",
"Phone already exists": "O telefone já existe", "Please register using the phone corresponding to the invitation code": "Please register using the phone corresponding to the invitation code",
"Phone cannot be empty": "O telefone não pode estar vazio", "Please register using the username corresponding to the invitation code": "Please register using the username corresponding to the invitation code",
"Phone number is invalid": "O número de telefone é inválido", "Session outdated, please login again": "Session outdated, please login again",
"Please register using the email corresponding to the invitation code": "Por favor, registre-se usando o e-mail correspondente ao código de convite", "The invitation code has already been used": "The invitation code has already been used",
"Please register using the phone corresponding to the invitation code": "Por favor, registre-se usando o telefone correspondente ao código de convite", "The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
"Please register using the username corresponding to the invitation code": "Por favor, registre-se usando o nome de usuário correspondente ao código de convite", "The user: %s doesn't exist in LDAP server": "The user: %s doesn't exist in LDAP server",
"Session outdated, please login again": "Sessão expirada, faça login novamente", "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.",
"The invitation code has already been used": "O código de convite já foi utilizado", "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex",
"The user is forbidden to sign in, please contact the administrator": "O usuário está proibido de entrar, entre em contato com o administrador", "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"",
"The user: %s doesn't exist in LDAP server": "O usuário: %s não existe no servidor LDAP", "Username already exists": "Username already exists",
"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.": "O nome de usuário pode conter apenas caracteres alfanuméricos, sublinhados ou hífens, não pode ter hífens ou sublinhados consecutivos e não pode começar ou terminar com hífen ou sublinhado.", "Username cannot be an email address": "Username cannot be an email address",
"The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "O valor \\\"%s\\\" para o campo de conta \\\"%s\\\" não corresponde à expressão regular do item de conta", "Username cannot contain white spaces": "Username cannot contain white spaces",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "O valor \\\"%s\\\" para o campo de registro \\\"%s\\\" não corresponde à expressão regular do item de registro da aplicação \\\"%s\\\"",
"Username already exists": "O nome de usuário já existe",
"Username cannot be an email address": "O nome de usuário não pode ser um endereço de e-mail",
"Username cannot contain white spaces": "O nome de usuário não pode conter espaços em branco",
"Username cannot start with a digit": "O nome de usuário não pode começar com um dígito", "Username cannot start with a digit": "O nome de usuário não pode começar com um dígito",
"Username is too long (maximum is 255 characters).": "Nome de usuário é muito longo (máximo é 255 caracteres).", "Username is too long (maximum is 39 characters).": "Nome de usuário é muito longo (máximo é 39 caracteres).",
"Username must have at least 2 characters": "Nome de usuário deve ter pelo menos 2 caracteres", "Username must have at least 2 characters": "Nome de usuário deve ter pelo menos 2 caracteres",
"Username supports email format. Also 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. Also pay attention to the email format.": "O nome de usuário suporta formato de e-mail. Além disso, o nome de usuário pode conter apenas caracteres alfanuméricos, sublinhados ou hífens, não pode ter hífens ou sublinhados consecutivos e não pode começar ou terminar com hífen ou sublinhado. Preste atenção também ao formato de e-mail.", "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",
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Você digitou a senha ou o código incorretos muitas vezes, aguarde %d minutos e tente novamente", "Your region is not allow to signup by phone": "Your region is not allow to signup by phone",
"Your IP address: %s has been banned according to the configuration of: ": "Seu endereço IP: %s foi banido de acordo com a configuração de: ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "Sua senha expirou. Por favor, redefina sua senha clicando em \\\"Esqueci a senha\\\"",
"Your region is not allow to signup by phone": "Sua região não permite cadastro por telefone",
"password or code is incorrect": "senha ou código incorreto", "password or code is incorrect": "senha ou código incorreto",
"password or code is incorrect, you have %s remaining chances": "senha ou código está incorreto, você tem %s chances restantes", "password or code is incorrect, you have %d remaining chances": "password or code is incorrect, you have %d remaining chances",
"unsupported password type: %s": "tipo de senha não suportado: %s" "unsupported password type: %s": "unsupported password type: %s"
},
"enforcer": {
"the adapter: %s is not found": "o adaptador: %s não foi encontrado"
}, },
"general": { "general": {
"Failed to import groups": "Falha ao importar grupos", "Missing parameter": "Missing parameter",
"Failed to import users": "Falha ao importar usuários", "Please login first": "Please login first",
"Missing parameter": "Parâmetro faltante", "The organization: %s should have one application at least": "The organization: %s should have one application at least",
"Only admin user can specify user": "Apenas usuário administrador pode especificar usuário", "The user: %s doesn't exist": "The user: %s doesn't exist",
"Please login first": "Faça login primeiro", "don't support captchaProvider: ": "don't support captchaProvider: ",
"The organization: %s should have one application at least": "A organização: %s deve ter pelo menos uma aplicação", "this operation is not allowed in demo mode": "this operation is not allowed in demo mode",
"The user: %s doesn't exist": "O usuário: %s não existe", "this operation requires administrator to perform": "this operation requires administrator to perform"
"Wrong userId": "ID de usuário incorreto",
"don't support captchaProvider: ": "não suporta captchaProvider: ",
"this operation is not allowed in demo mode": "esta operação não é permitida no modo de demonstração",
"this operation requires administrator to perform": "esta operação requer um administrador para executar"
}, },
"ldap": { "ldap": {
"Ldap server exist": "Servidor LDAP existe" "Ldap server exist": "Ldap server exist"
}, },
"link": { "link": {
"Please link first": "Vincule primeiro", "Please link first": "Please link first",
"This application has no providers": "Este aplicativo não tem provedores", "This application has no providers": "This application has no providers",
"This application has no providers of type": "Este aplicativo não tem provedores do tipo", "This application has no providers of type": "This application has no providers of type",
"This provider can't be unlinked": "Este provedor não pode ser desvinculado", "This provider can't be unlinked": "This provider can't be unlinked",
"You are not the global admin, you can't unlink other users": "Você não é o administrador global, não pode desvincular outros usuários", "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": "Você não pode se desvincular, não é membro de nenhum aplicativo" "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": { "organization": {
"Only admin can modify the %s.": "Apenas o administrador pode modificar o %s.", "Only admin can modify the %s.": "Only admin can modify the %s.",
"The %s is immutable.": "O %s é imutável.", "The %s is immutable.": "O %s é imutável.",
"Unknown modify rule %s.": "Regra de modificação %s desconhecida.", "Unknown modify rule %s.": "Regra de modificação %s desconhecida."
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "nte desativada. Observe que todos os usuários na organização 'built-in' são administradores globais no Casdoor. Consulte a documentação: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. Se ainda desejar criar um usuário para a organização 'built-in', acesse a página de configurações da organização e habilite a opção 'Possui consentimento de privilégios'."
}, },
"permission": { "permission": {
"The permission: \\\"%s\\\" doesn't exist": "A permissão: \\\"%s\\\" não existe" "The permission: \\\"%s\\\" doesn't exist": "The permission: \\\"%s\\\" doesn't exist"
}, },
"provider": { "provider": {
"Invalid application id": "Id do aplicativo inválido", "Invalid application id": "Id do aplicativo inválido",
@@ -132,28 +109,25 @@
}, },
"resource": { "resource": {
"User is nil for tag: avatar": "Usuário é nulo para tag: avatar", "User is nil for tag: avatar": "Usuário é nulo para tag: avatar",
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Nome de usuário ou fullFilePath está vazio: username = %s, fullFilePath = %s" "Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Username or fullFilePath is empty: username = %s, fullFilePath = %s"
}, },
"saml": { "saml": {
"Application %s not found": "Aplicativo %s não encontrado" "Application %s not found": "Application %s not found"
}, },
"saml_sp": { "saml_sp": {
"provider %s's category is not SAML": "A categoria do provedor %s não é SAML" "provider %s's category is not SAML": "provider %s's category is not SAML"
}, },
"service": { "service": {
"Empty parameters for emailForm: %v": "Parâmetros vazios para emailForm: %v", "Empty parameters for emailForm: %v": "Empty parameters for emailForm: %v",
"Invalid Email receivers: %s": "Destinatários de e-mail inválidos: %s", "Invalid Email receivers: %s": "Invalid Email receivers: %s",
"Invalid phone receivers: %s": "Destinatários de telefone inválidos: %s" "Invalid phone receivers: %s": "Invalid phone receivers: %s"
}, },
"storage": { "storage": {
"The objectKey: %s is not allowed": "O objectKey: %s não é permitido", "The objectKey: %s is not allowed": "The objectKey: %s is not allowed",
"The provider type: %s is not supported": "O tipo de provedor: %s não é suportado" "The provider type: %s is not supported": "The provider type: %s is not supported"
},
"subscription": {
"Error": "Erro"
}, },
"token": { "token": {
"Grant_type: %s is not supported in this application": "Grant_type: %s não é suportado neste aplicativo", "Grant_type: %s is not supported in this application": "Grant_type: %s is not supported in this application",
"Invalid application or wrong clientSecret": "Aplicativo inválido ou clientSecret errado", "Invalid application or wrong clientSecret": "Aplicativo inválido ou clientSecret errado",
"Invalid client_id": "client_id inválido", "Invalid client_id": "client_id inválido",
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "URI de redirecionamento: %s não existe na lista de URI de redirecionamento permitida", "Redirect URI: %s doesn't exist in the allowed Redirect URI list": "URI de redirecionamento: %s não existe na lista de URI de redirecionamento permitida",
@@ -161,33 +135,33 @@
}, },
"user": { "user": {
"Display name cannot be empty": "Nome de exibição não pode ser vazio", "Display name cannot be empty": "Nome de exibição não pode ser vazio",
"MFA email is enabled but email is empty": "MFA por e-mail está ativado, mas o e-mail está vazio", "New password cannot contain blank space.": "New password cannot contain blank space."
"MFA phone is enabled but phone number is empty": "MFA por telefone está ativado, mas o número de telefone está vazio", },
"New password cannot contain blank space.": "A nova senha não pode conter espaço em branco.", "user_upload": {
"the user's owner and name should not be empty": "o proprietário e o nome do usuário não devem estar vazios" "Failed to import users": "Falha ao importar usuários"
}, },
"util": { "util": {
"No application is found for userId: %s": "Nenhum aplicativo encontrado para userId: %s", "No application is found for userId: %s": "No application is found for userId: %s",
"No provider for category: %s is found for application: %s": "Nenhum provedor para categoria: %s encontrado para aplicativo: %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": "O provedor: %s não foi encontrado" "The provider: %s is not found": "The provider: %s is not found"
}, },
"verification": { "verification": {
"Invalid captcha provider.": "Provedor de captcha inválido.", "Invalid captcha provider.": "Invalid captcha provider.",
"Phone number is invalid in your region %s": "Número de telefone é inválido em sua região %s", "Phone number is invalid in your region %s": "Phone number is invalid in your region %s",
"The verification code has already been used!": "O código de verificação já foi utilizado!", "The verification code has not been sent yet!": "The verification code has not been sent yet!",
"The verification code has not been sent yet!": "O código de verificação ainda não foi enviado!", "The verification code has not been sent yet, or has already been used!": "The verification code has not been sent yet, or has already been used!",
"Turing test failed.": "Teste de Turing falhou.", "Turing test failed.": "Turing test failed.",
"Unable to get the email modify rule.": "Não foi possível obter a regra de modificação de e-mail.", "Unable to get the email modify rule.": "Unable to get the email modify rule.",
"Unable to get the phone modify rule.": "Não foi possível obter a regra de modificação de telefone.", "Unable to get the phone modify rule.": "Unable to get the phone modify rule.",
"Unknown type": "Tipo desconhecido", "Unknown type": "Unknown type",
"Wrong verification code!": "Código de verificação incorreto!", "Wrong verification code!": "Wrong verification code!",
"You should verify your code in %d min!": "Você deve verificar seu código em %d min!", "You should verify your code in %d min!": "You should verify your code in %d min!",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "por favor, adicione um provedor de SMS à lista \\\"Providers\\\" da aplicação: %s", "please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "please add a SMS provider to the \\\"Providers\\\" list for the application: %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "por favor, adicione um provedor de e-mail à lista \\\"Providers\\\" da aplicação: %s", "please add an Email provider to the \\\"Providers\\\" list for the application: %s": "please add an Email provider to the \\\"Providers\\\" list for the application: %s",
"the user does not exist, please sign up first": "o usuário não existe, cadastre-se primeiro" "the user does not exist, please sign up first": "the user does not exist, please sign up first"
}, },
"webauthn": { "webauthn": {
"Found no credentials for this user": "Found no credentials for this user", "Found no credentials for this user": "Found no credentials for this user",
"Please call WebAuthnSigninBegin first": "Por favor, chame WebAuthnSigninBegin primeiro" "Please call WebAuthnSigninBegin first": "Please call WebAuthnSigninBegin first"
} }
} }

View File

@@ -7,7 +7,6 @@
}, },
"auth": { "auth": {
"Challenge method should be S256": "Метод проверки должен быть S256", "Challenge method should be S256": "Метод проверки должен быть S256",
"DeviceCode Invalid": "Неверный код устройства",
"Failed to create user, user information is invalid: %s": "Не удалось создать пользователя, информация о пользователе недействительна: %s", "Failed to create user, user information is invalid: %s": "Не удалось создать пользователя, информация о пользователе недействительна: %s",
"Failed to login in: %s": "Не удалось войти в систему: %s", "Failed to login in: %s": "Не удалось войти в систему: %s",
"Invalid token": "Недействительный токен", "Invalid token": "Недействительный токен",
@@ -16,95 +15,74 @@
"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": "Аккаунт для провайдера: %s и имя пользователя: %s (%s) не существует и не может быть зарегистрирован как новый аккаунт. Пожалуйста, обратитесь в службу поддержки IT", "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": "Аккаунт для провайдера: %s и имя пользователя: %s (%s) не существует и не может быть зарегистрирован как новый аккаунт. Пожалуйста, обратитесь в службу поддержки IT",
"The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "Аккаунт поставщика: %s и имя пользователя: %s (%s) уже связаны с другим аккаунтом: %s (%s)", "The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "Аккаунт поставщика: %s и имя пользователя: %s (%s) уже связаны с другим аккаунтом: %s (%s)",
"The application: %s does not exist": "Приложение: %s не существует", "The application: %s does not exist": "Приложение: %s не существует",
"The application: %s has disabled users to signin": "The application: %s has disabled users to signin", "The login method: login with LDAP is not enabled for the application": "The login method: login with LDAP is not enabled for the application",
"The login method: login with LDAP is not enabled for the application": "Метод входа через LDAP отключен для этого приложения", "The login method: login with SMS is not enabled for the application": "The login method: login with SMS is not enabled for the application",
"The login method: login with SMS is not enabled for the application": "Метод входа через SMS отключен для этого приложения", "The login method: login with email is not enabled for the application": "The login method: login with email is not enabled for the application",
"The login method: login with email is not enabled for the application": "Метод входа через электронную почту отключен для этого приложения", "The login method: login with face is not enabled for the application": "The login method: login with face is not enabled for the application",
"The login method: login with face is not enabled for the application": "Метод входа через распознавание лица отключен для этого приложения",
"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 organization: %s does not exist": "Организация: %s не существует", "The organization: %s does not exist": "The organization: %s does not exist",
"The organization: %s has disabled users to signin": "The organization: %s has disabled users to signin",
"The provider: %s does not exist": "Провайдер: %s не существует",
"The provider: %s is not enabled for the application": "Провайдер: %s не включен для приложения", "The provider: %s is not enabled for the application": "Провайдер: %s не включен для приложения",
"Unauthorized operation": "Несанкционированная операция", "Unauthorized operation": "Несанкционированная операция",
"Unknown authentication type (not password or provider), form = %s": "Неизвестный тип аутентификации (не пароль и не провайдер), форма = %s", "Unknown authentication type (not password or provider), form = %s": "Неизвестный тип аутентификации (не пароль и не провайдер), форма = %s",
"User's tag: %s is not listed in the application's tags": "Тег пользователя: %s отсутствует в списке тегов приложения", "User's tag: %s is not listed in the application's tags": "Тег пользователя: %s не указан в тэгах приложения",
"UserCode Expired": "Срок действия кода пользователя истек", "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing"
"UserCode Invalid": "Неверный код пользователя",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "Платный пользователь %s не имеет активной или ожидающей подписки, а приложение %s не имеет цены по умолчанию",
"the application for user %s is not found": "Приложение для пользователя %s не найдено",
"the organization: %s is not found": "Организация: %s не найдена"
}, },
"cas": { "cas": {
"Service %s and %s do not match": "Сервисы %s и %s не совпадают" "Service %s and %s do not match": "Сервисы %s и %s не совпадают"
}, },
"check": { "check": {
"%s does not meet the CIDR format requirements: %s": "%s не соответствует требованиям формата CIDR: %s",
"Affiliation cannot be blank": "Принадлежность не может быть пустым значением", "Affiliation cannot be blank": "Принадлежность не может быть пустым значением",
"CIDR for IP: %s should not be empty": "CIDR для IP: %s не должен быть пустым", "Default code does not match the code's matching rules": "Default code does not match the code's matching rules",
"Default code does not match the code's matching rules": "Код по умолчанию не соответствует правилам соответствия кода",
"DisplayName cannot be blank": "Имя отображения не может быть пустым", "DisplayName cannot be blank": "Имя отображения не может быть пустым",
"DisplayName is not valid real name": "DisplayName не является действительным именем", "DisplayName is not valid real name": "DisplayName не является действительным именем",
"Email already exists": "Электронная почта уже существует", "Email already exists": "Электронная почта уже существует",
"Email cannot be empty": "Электронная почта не может быть пустой", "Email cannot be empty": "Электронная почта не может быть пустой",
"Email is invalid": "Адрес электронной почты недействительный", "Email is invalid": "Адрес электронной почты недействительный",
"Empty username.": "Пустое имя пользователя.", "Empty username.": "Пустое имя пользователя.",
"Face data does not exist, cannot log in": "Данные лица отсутствуют, вход невозможен", "Face data does not exist, cannot log in": "Face data does not exist, cannot log in",
"Face data mismatch": "Несоответствие данных лица", "Face data mismatch": "Face data mismatch",
"Failed to parse client IP: %s": "Не удалось разобрать IP клиента: %s",
"FirstName cannot be blank": "Имя не может быть пустым", "FirstName cannot be blank": "Имя не может быть пустым",
"Invitation code cannot be blank": "Код приглашения не может быть пустым", "Invitation code cannot be blank": "Invitation code cannot be blank",
"Invitation code exhausted": "Код приглашения исчерпан", "Invitation code exhausted": "Invitation code exhausted",
"Invitation code is invalid": "Код приглашения недействителен", "Invitation code is invalid": "Invitation code is invalid",
"Invitation code suspended": "Код приглашения приостановлен", "Invitation code suspended": "Invitation code suspended",
"LDAP user name or password incorrect": "Неправильное имя пользователя или пароль Ldap", "LDAP user name or password incorrect": "Неправильное имя пользователя или пароль Ldap",
"LastName cannot be blank": "Фамилия не может быть пустой", "LastName cannot be blank": "Фамилия не может быть пустой",
"Multiple accounts with same uid, please check your ldap server": "Множественные учетные записи с тем же UID. Пожалуйста, проверьте свой сервер LDAP", "Multiple accounts with same uid, please check your ldap server": "Множественные учетные записи с тем же UID. Пожалуйста, проверьте свой сервер LDAP",
"Organization does not exist": "Организация не существует", "Organization does not exist": "Организация не существует",
"Password cannot be empty": "Пароль не может быть пустым",
"Phone already exists": "Телефон уже существует", "Phone already exists": "Телефон уже существует",
"Phone cannot be empty": "Телефон не может быть пустым", "Phone cannot be empty": "Телефон не может быть пустым",
"Phone number is invalid": "Номер телефона является недействительным", "Phone number is invalid": "Номер телефона является недействительным",
"Please register using the email corresponding to the invitation code": "Пожалуйста, зарегистрируйтесь, используя электронную почту, соответствующую коду приглашения", "Please register using the email corresponding to the invitation code": "Please register using the email corresponding to the invitation code",
"Please register using the phone corresponding to the invitation code": "Пожалуйста, зарегистрируйтесь, используя номер телефона, соответствующий коду приглашения", "Please register using the phone corresponding to the invitation code": "Please register using the phone corresponding to the invitation code",
"Please register using the username corresponding to the invitation code": "Пожалуйста, зарегистрируйтесь, используя имя пользователя, соответствующее коду приглашения", "Please register using the username corresponding to the invitation code": "Please register using the username corresponding to the invitation code",
"Session outdated, please login again": "Сессия устарела, пожалуйста, войдите снова", "Session outdated, please login again": "Сессия устарела, пожалуйста, войдите снова",
"The invitation code has already been used": "Код приглашения уже использован", "The invitation code has already been used": "The invitation code has already been used",
"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": "Пользователь: %s не существует на сервере LDAP", "The user: %s doesn't exist in LDAP server": "Пользователь %s не существует на LDAP сервере",
"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.": "Имя пользователя может состоять только из буквенно-цифровых символов, нижних подчеркиваний или дефисов, не может содержать последовательные дефисы или подчеркивания, а также не может начинаться или заканчиваться на дефис или подчеркивание.",
"The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "Значение \\\"%s\\\" для поля аккаунта \\\"%s\\\" не соответствует регулярному выражению элемента аккаунта", "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "Значение \\\"%s\\\" для поля регистрации \\\"%s\\\" не соответствует регулярному выражению элемента регистрации приложения \\\"%s\\\"", "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"",
"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 255 characters).": "Имя пользователя слишком длинное (максимальная длина - 255 символов).", "Username is too long (maximum is 39 characters).": "Имя пользователя слишком длинное (максимальная длина - 39 символов).",
"Username must have at least 2 characters": "Имя пользователя должно содержать не менее 2 символов", "Username must have at least 2 characters": "Имя пользователя должно содержать не менее 2 символов",
"Username supports email format. Also 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. Also pay attention to the email format.": "Имя пользователя поддерживает формат электронной почты. Также имя пользователя может содержать только буквенно-цифровые символы, подчеркивания или дефисы, не может иметь последовательных дефисов или подчеркиваний и не может начинаться или заканчиваться дефисом или подчеркиванием. Также обратите внимание на формат электронной почты.",
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Вы ввели неправильный пароль или код слишком много раз, пожалуйста, подождите %d минут и попробуйте снова", "You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Вы ввели неправильный пароль или код слишком много раз, пожалуйста, подождите %d минут и попробуйте снова",
"Your IP address: %s has been banned according to the configuration of: ": "Ваш IP-адрес: %s заблокирован согласно конфигурации: ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "Срок действия вашего пароля истек. Пожалуйста, сбросьте пароль, нажав \\\"Забыли пароль\\\"",
"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 %s remaining chances": "Неправильный пароль или код, у вас осталось %s попыток", "password or code is incorrect, you have %d remaining chances": "Неправильный пароль или код, у вас осталось %d попыток",
"unsupported password type: %s": "неподдерживаемый тип пароля: %s" "unsupported password type: %s": "неподдерживаемый тип пароля: %s"
}, },
"enforcer": {
"the adapter: %s is not found": "адаптер: %s не найден"
},
"general": { "general": {
"Failed to import groups": "Не удалось импортировать группы",
"Failed to import users": "Не удалось импортировать пользователей",
"Missing parameter": "Отсутствующий параметр", "Missing parameter": "Отсутствующий параметр",
"Only admin user can specify user": "Только администратор может указать пользователя",
"Please login first": "Пожалуйста, сначала войдите в систему", "Please login first": "Пожалуйста, сначала войдите в систему",
"The organization: %s should have one application at least": "Организация: %s должна иметь хотя бы одно приложение", "The organization: %s should have one application at least": "The organization: %s should have one application at least",
"The user: %s doesn't exist": "Пользователь %s не существует", "The user: %s doesn't exist": "Пользователь %s не существует",
"Wrong userId": "Неверный идентификатор пользователя",
"don't support captchaProvider: ": "неподдерживаемый captchaProvider: ", "don't support captchaProvider: ": "неподдерживаемый captchaProvider: ",
"this operation is not allowed in demo mode": "эта операция недоступна в демонстрационном режиме", "this operation is not allowed in demo mode": "эта операция не разрешена в демо-режиме",
"this operation requires administrator to perform": "эта операция требует прав администратора" "this operation requires administrator to perform": "this operation requires administrator to perform"
}, },
"ldap": { "ldap": {
"Ldap server exist": "LDAP-сервер существует" "Ldap server exist": "LDAP-сервер существует"
@@ -120,15 +98,14 @@
"organization": { "organization": {
"Only admin can modify the %s.": "Только администратор может изменять %s.", "Only admin can modify the %s.": "Только администратор может изменять %s.",
"The %s is immutable.": "%s неизменяемый.", "The %s is immutable.": "%s неизменяемый.",
"Unknown modify rule %s.": "Неизвестное изменение правила %s.", "Unknown modify rule %s.": "Неизвестное изменение правила %s."
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "Добавление нового пользователя в организацию «built-in» (встроенная) в настоящее время отключено. Обратите внимание: все пользователи в организации «built-in» являются глобальными администраторами в Casdoor. См. документацию: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. Если вы все еще хотите создать пользователя для организации «built-in», перейдите на страницу настроек организации и включите опцию «Имеет согласие на привилегии»."
}, },
"permission": { "permission": {
"The permission: \\\"%s\\\" doesn't exist": "Разрешение: \\\"%s\\\" не существует" "The permission: \\\"%s\\\" doesn't exist": "The permission: \\\"%s\\\" doesn't exist"
}, },
"provider": { "provider": {
"Invalid application id": "Неверный идентификатор приложения", "Invalid application id": "Неверный идентификатор приложения",
"the provider: %s does not exist": "Провайдер: %s не существует" "the provider: %s does not exist": "провайдер: %s не существует"
}, },
"resource": { "resource": {
"User is nil for tag: avatar": "Пользователь равен нулю для тега: аватар", "User is nil for tag: avatar": "Пользователь равен нулю для тега: аватар",
@@ -138,7 +115,7 @@
"Application %s not found": "Приложение %s не найдено" "Application %s not found": "Приложение %s не найдено"
}, },
"saml_sp": { "saml_sp": {
"provider %s's category is not SAML": "Категория провайдера %s не является SAML" "provider %s's category is not SAML": "категория провайдера %s не является SAML"
}, },
"service": { "service": {
"Empty parameters for emailForm: %v": "Пустые параметры для emailForm: %v", "Empty parameters for emailForm: %v": "Пустые параметры для emailForm: %v",
@@ -149,9 +126,6 @@
"The objectKey: %s is not allowed": "Объект «objectKey: %s» не разрешен", "The objectKey: %s is not allowed": "Объект «objectKey: %s» не разрешен",
"The provider type: %s is not supported": "Тип провайдера: %s не поддерживается" "The provider type: %s is not supported": "Тип провайдера: %s не поддерживается"
}, },
"subscription": {
"Error": "Ошибка"
},
"token": { "token": {
"Grant_type: %s is not supported in this application": "Тип предоставления: %s не поддерживается в данном приложении", "Grant_type: %s is not supported in this application": "Тип предоставления: %s не поддерживается в данном приложении",
"Invalid application or wrong clientSecret": "Недействительное приложение или неправильный clientSecret", "Invalid application or wrong clientSecret": "Недействительное приложение или неправильный clientSecret",
@@ -161,10 +135,10 @@
}, },
"user": { "user": {
"Display name cannot be empty": "Отображаемое имя не может быть пустым", "Display name cannot be empty": "Отображаемое имя не может быть пустым",
"MFA email is enabled but email is empty": "MFA по электронной почте включен, но электронная почта не указана", "New password cannot contain blank space.": "Новый пароль не может содержать пробелы."
"MFA phone is enabled but phone number is empty": "MFA по телефону включен, но номер телефона не указан", },
"New password cannot contain blank space.": "Новый пароль не может содержать пробелы.", "user_upload": {
"the user's owner and name should not be empty": "владелец и имя пользователя не должны быть пустыми" "Failed to import users": "Не удалось импортировать пользователей"
}, },
"util": { "util": {
"No application is found for userId: %s": "Не найдено заявки для пользователя с идентификатором: %s", "No application is found for userId: %s": "Не найдено заявки для пользователя с идентификатором: %s",
@@ -174,20 +148,20 @@
"verification": { "verification": {
"Invalid captcha provider.": "Недействительный поставщик CAPTCHA.", "Invalid captcha provider.": "Недействительный поставщик CAPTCHA.",
"Phone number is invalid in your region %s": "Номер телефона недействителен в вашем регионе %s", "Phone number is invalid in your region %s": "Номер телефона недействителен в вашем регионе %s",
"The verification code has already been used!": "Код подтверждения уже использован!", "The verification code has not been sent yet!": "The verification code has not been sent yet!",
"The verification code has not been sent yet!": "Код подтверждения еще не был отправлен!", "The verification code has not been sent yet, or has already been used!": "The verification code has not been sent yet, or has already been used!",
"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!": "Вы должны проверить свой код через %d минут!", "You should verify your code in %d min!": "Вы должны проверить свой код через %d минут!",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "пожалуйста, добавьте SMS-провайдера в список \\\"Провайдеры\\\" для приложения: %s", "please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "please add a SMS provider to the \\\"Providers\\\" list for the application: %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "пожалуйста, добавьте Email-провайдера в список \\\"Провайдеры\\\" для приложения: %s", "please add an Email provider to the \\\"Providers\\\" list for the application: %s": "please add an Email provider to the \\\"Providers\\\" list for the application: %s",
"the user does not exist, please sign up first": "Пользователь не существует, пожалуйста, сначала зарегистрируйтесь" "the user does not exist, please sign up first": "Пользователь не существует, пожалуйста, сначала зарегистрируйтесь"
}, },
"webauthn": { "webauthn": {
"Found no credentials for this user": "Found no credentials for this user", "Found no credentials for this user": "Не найдено учетных данных для этого пользователя",
"Please call WebAuthnSigninBegin first": "Пожалуйста, сначала вызовите WebAuthnSigninBegin" "Please call WebAuthnSigninBegin first": "Пожалуйста, сначала вызовите WebAuthnSigninBegin"
} }
} }

View File

@@ -7,7 +7,6 @@
}, },
"auth": { "auth": {
"Challenge method should be S256": "Metóda výzvy by mala byť S256", "Challenge method should be S256": "Metóda výzvy by mala byť S256",
"DeviceCode Invalid": "DeviceCode je neplatný",
"Failed to create user, user information is invalid: %s": "Nepodarilo sa vytvoriť používateľa, informácie o používateľovi sú neplatné: %s", "Failed to create user, user information is invalid: %s": "Nepodarilo sa vytvoriť používateľa, informácie o používateľovi sú neplatné: %s",
"Failed to login in: %s": "Prihlásenie zlyhalo: %s", "Failed to login in: %s": "Prihlásenie zlyhalo: %s",
"Invalid token": "Neplatný token", "Invalid token": "Neplatný token",
@@ -16,32 +15,23 @@
"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": "Účet pre poskytovateľa: %s a používateľské meno: %s (%s) neexistuje a nie je povolené zaregistrovať nový účet, prosím kontaktujte vašu IT podporu", "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": "Účet pre poskytovateľa: %s a používateľské meno: %s (%s) neexistuje a nie je povolené zaregistrovať nový účet, prosím kontaktujte vašu IT podporu",
"The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "Účet pre poskytovateľa: %s a používateľské meno: %s (%s) je už prepojený s iným účtom: %s (%s)", "The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "Účet pre poskytovateľa: %s a používateľské meno: %s (%s) je už prepojený s iným účtom: %s (%s)",
"The application: %s does not exist": "Aplikácia: %s neexistuje", "The application: %s does not exist": "Aplikácia: %s neexistuje",
"The application: %s has disabled users to signin": "The application: %s has disabled users to signin",
"The login method: login with LDAP is not enabled for the application": "Metóda prihlásenia: prihlásenie pomocou LDAP nie je pre aplikáciu povolená", "The login method: login with LDAP is not enabled for the application": "Metóda prihlásenia: prihlásenie pomocou LDAP nie je pre aplikáciu povolená",
"The login method: login with SMS is not enabled for the application": "Metóda prihlásenia: prihlásenie pomocou SMS nie je pre aplikáciu povolená", "The login method: login with SMS is not enabled for the application": "Metóda prihlásenia: prihlásenie pomocou SMS nie je pre aplikáciu povolená",
"The login method: login with email is not enabled for the application": "Metóda prihlásenia: prihlásenie pomocou e-mailu nie je pre aplikáciu povolená", "The login method: login with email is not enabled for the application": "Metóda prihlásenia: prihlásenie pomocou e-mailu nie je pre aplikáciu povolená",
"The login method: login with face is not enabled for the application": "Metóda prihlásenia: prihlásenie pomocou tváre nie je pre aplikáciu povolená", "The login method: login with face is not enabled for the application": "Metóda prihlásenia: prihlásenie pomocou tváre nie je pre aplikáciu povolená",
"The login method: login with password is not enabled for the application": "Metóda prihlásenia: prihlásenie pomocou hesla nie je pre aplikáciu povolená", "The login method: login with password is not enabled for the application": "Metóda prihlásenia: prihlásenie pomocou hesla nie je pre aplikáciu povolená",
"The organization: %s does not exist": "Organizácia: %s neexistuje", "The organization: %s does not exist": "Organizácia: %s neexistuje",
"The organization: %s has disabled users to signin": "The organization: %s has disabled users to signin",
"The provider: %s does not exist": "Poskytovatel: %s neexistuje",
"The provider: %s is not enabled for the application": "Poskytovateľ: %s nie je pre aplikáciu povolený", "The provider: %s is not enabled for the application": "Poskytovateľ: %s nie je pre aplikáciu povolený",
"Unauthorized operation": "Neautorizovaná operácia", "Unauthorized operation": "Neautorizovaná operácia",
"Unknown authentication type (not password or provider), form = %s": "Neznámy typ autentifikácie (nie heslo alebo poskytovateľ), forma = %s", "Unknown authentication type (not password or provider), form = %s": "Neznámy typ autentifikácie (nie heslo alebo poskytovateľ), forma = %s",
"User's tag: %s is not listed in the application's tags": "Štítok používateľa: %s nie je uvedený v štítkoch aplikácie", "User's tag: %s is not listed in the application's tags": "Štítok používateľa: %s nie je uvedený v štítkoch aplikácie",
"UserCode Expired": "UserCode je expirovaný", "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "platiaci používateľ %s nemá aktívne alebo čakajúce predplatné a aplikácia: %s nemá predvolenú cenovú politiku"
"UserCode Invalid": "UserCode je neplatný",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "platiaci používateľ %s nemá aktívne alebo čakajúce predplatné a aplikácia: %s nemá predvolenú cenovú politiku",
"the application for user %s is not found": "aplikácia pre používateľa %s nebola nájdená",
"the organization: %s is not found": "organizácia: %s nebola nájdená"
}, },
"cas": { "cas": {
"Service %s and %s do not match": "Služba %s a %s sa nezhodujú" "Service %s and %s do not match": "Služba %s a %s sa nezhodujú"
}, },
"check": { "check": {
"%s does not meet the CIDR format requirements: %s": "%s nevyhovuje požiadavkám formátu CIDR: %s",
"Affiliation cannot be blank": "Príslušnosť nemôže byť prázdna", "Affiliation cannot be blank": "Príslušnosť nemôže byť prázdna",
"CIDR for IP: %s should not be empty": "CIDR pre IP: %s nesmie byť prázdny",
"Default code does not match the code's matching rules": "Predvolený kód nezodpovedá pravidlám zodpovedania kódu", "Default code does not match the code's matching rules": "Predvolený kód nezodpovedá pravidlám zodpovedania kódu",
"DisplayName cannot be blank": "Zobrazované meno nemôže byť prázdne", "DisplayName cannot be blank": "Zobrazované meno nemôže byť prázdne",
"DisplayName is not valid real name": "Zobrazované meno nie je platné skutočné meno", "DisplayName is not valid real name": "Zobrazované meno nie je platné skutočné meno",
@@ -51,7 +41,6 @@
"Empty username.": "Prázdne používateľské meno.", "Empty username.": "Prázdne používateľské meno.",
"Face data does not exist, cannot log in": "Dáta o tvári neexistujú, nemožno sa prihlásiť", "Face data does not exist, cannot log in": "Dáta o tvári neexistujú, nemožno sa prihlásiť",
"Face data mismatch": "Nesúlad dát o tvári", "Face data mismatch": "Nesúlad dát o tvári",
"Failed to parse client IP: %s": "Zlyhalo parsovanie IP adresy klienta: %s",
"FirstName cannot be blank": "Meno nemôže byť prázdne", "FirstName cannot be blank": "Meno nemôže byť prázdne",
"Invitation code cannot be blank": "Kód pozvania nemôže byť prázdny", "Invitation code cannot be blank": "Kód pozvania nemôže byť prázdny",
"Invitation code exhausted": "Kód pozvania bol vyčerpaný", "Invitation code exhausted": "Kód pozvania bol vyčerpaný",
@@ -61,12 +50,11 @@
"LastName cannot be blank": "Priezvisko nemôže byť prázdne", "LastName cannot be blank": "Priezvisko nemôže byť prázdne",
"Multiple accounts with same uid, please check your ldap server": "Viacero účtov s rovnakým uid, skontrolujte svoj ldap server", "Multiple accounts with same uid, please check your ldap server": "Viacero účtov s rovnakým uid, skontrolujte svoj ldap server",
"Organization does not exist": "Organizácia neexistuje", "Organization does not exist": "Organizácia neexistuje",
"Password cannot be empty": "Heslo nemôže byť prázdne",
"Phone already exists": "Telefón už existuje", "Phone already exists": "Telefón už existuje",
"Phone cannot be empty": "Telefón nemôže byť prázdny", "Phone cannot be empty": "Telefón nemôže byť prázdny",
"Phone number is invalid": "Telefónne číslo je neplatné", "Phone number is invalid": "Telefónne číslo je neplatné",
"Please register using the email corresponding to the invitation code": "Prosím, zaregistrujte sa pomocou e-mailu zodpovedajúceho kódu pozvania", "Please register using the email corresponding to the invitation code": "Prosím, zaregistrujte sa pomocou e-mailu zodpovedajúceho kódu pozvania",
"Please register using the phone corresponding to the invitation code": "Prosím zaregistrujte se pomocí telefonu odpovídajícího pozvánkovému kódu", "Please register using the phone corresponding to the invitation code": "Prosím, zaregistrujte sa pomocou telefónu zodpovedajúceho kódu pozvania",
"Please register using the username corresponding to the invitation code": "Prosím, zaregistrujte sa pomocou používateľského mena zodpovedajúceho kódu pozvania", "Please register using the username corresponding to the invitation code": "Prosím, zaregistrujte sa pomocou používateľského mena zodpovedajúceho kódu pozvania",
"Session outdated, please login again": "Relácia je zastaraná, prosím, prihláste sa znova", "Session outdated, please login again": "Relácia je zastaraná, prosím, prihláste sa znova",
"The invitation code has already been used": "Kód pozvania už bol použitý", "The invitation code has already been used": "Kód pozvania už bol použitý",
@@ -79,29 +67,19 @@
"Username cannot be an email address": "Používateľské meno nemôže byť e-mailová adresa", "Username cannot be an email address": "Používateľské meno nemôže byť e-mailová adresa",
"Username cannot contain white spaces": "Používateľské meno nemôže obsahovať medzery", "Username cannot contain white spaces": "Používateľské meno nemôže obsahovať medzery",
"Username cannot start with a digit": "Používateľské meno nemôže začínať číslicou", "Username cannot start with a digit": "Používateľské meno nemôže začínať číslicou",
"Username is too long (maximum is 255 characters).": "Používateľské meno je príliš dlhé (maximum je 255 znakov).", "Username is too long (maximum is 39 characters).": "Používateľské meno je príliš dlhé (maximum je 39 znakov).",
"Username must have at least 2 characters": "Používateľské meno musí mať aspoň 2 znaky", "Username must have at least 2 characters": "Používateľské meno musí mať aspoň 2 znaky",
"Username supports email format. Also 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. Also pay attention to the email format.": "Používateľské meno podporuje formát e-mailu. Okrem toho môže používateľské meno obsahovať iba alfanumerické znaky, podčiarkovníky alebo pomlčky, nemôže mať po sebe idúce pomlčky alebo podčiarkovníky a nemôže začínať alebo končiť pomlčkou alebo podčiarkovníkom. Dajte tiež pozor na formát e-mailu.",
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Zadali ste nesprávne heslo alebo kód príliš veľa krát, prosím, počkajte %d minút a skúste to znova", "You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Zadali ste nesprávne heslo alebo kód príliš veľa krát, prosím, počkajte %d minút a skúste to znova",
"Your IP address: %s has been banned according to the configuration of: ": "Vaša IP adresa: %s bola zablokovaná podľa konfigurácie: ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "Vaše heslo je expirované. Prosím, resetujte svoje heslo kliknutím na \\\"Zabudnuté heslo\\\"",
"Your region is not allow to signup by phone": "Váš región neumožňuje registráciu cez telefón", "Your region is not allow to signup by phone": "Váš región neumožňuje registráciu cez telefón",
"password or code is incorrect": "heslo alebo kód je nesprávne", "password or code is incorrect": "heslo alebo kód je nesprávne",
"password or code is incorrect, you have %s remaining chances": "heslo alebo kód je nesprávne, máte %s zostávajúcich pokusov", "password or code is incorrect, you have %d remaining chances": "heslo alebo kód je nesprávne, máte %d zostávajúcich pokusov",
"unsupported password type: %s": "nepodporovaný typ hesla: %s" "unsupported password type: %s": "nepodporovaný typ hesla: %s"
}, },
"enforcer": {
"the adapter: %s is not found": "adaptér: %s nebol nájdený"
},
"general": { "general": {
"Failed to import groups": "Import skupín zlyhal",
"Failed to import users": "Nepodarilo sa importovať používateľov",
"Missing parameter": "Chýbajúci parameter", "Missing parameter": "Chýbajúci parameter",
"Only admin user can specify user": "Iba administrátor môže určiť používateľa",
"Please login first": "Najskôr sa prosím prihláste", "Please login first": "Najskôr sa prosím prihláste",
"The organization: %s should have one application at least": "Organizácia: %s by mala mať aspoň jednu aplikáciu", "The organization: %s should have one application at least": "Organizácia: %s by mala mať aspoň jednu aplikáciu",
"The user: %s doesn't exist": "Používateľ: %s neexistuje", "The user: %s doesn't exist": "Používateľ: %s neexistuje",
"Wrong userId": "Nesprávne ID používateľa",
"don't support captchaProvider: ": "nepodporuje captchaProvider: ", "don't support captchaProvider: ": "nepodporuje captchaProvider: ",
"this operation is not allowed in demo mode": "táto operácia nie je povolená v demo režime", "this operation is not allowed in demo mode": "táto operácia nie je povolená v demo režime",
"this operation requires administrator to perform": "táto operácia vyžaduje vykonanie administrátorom" "this operation requires administrator to perform": "táto operácia vyžaduje vykonanie administrátorom"
@@ -120,8 +98,7 @@
"organization": { "organization": {
"Only admin can modify the %s.": "Len administrátor môže upravovať %s.", "Only admin can modify the %s.": "Len administrátor môže upravovať %s.",
"The %s is immutable.": "%s je nemenný.", "The %s is immutable.": "%s je nemenný.",
"Unknown modify rule %s.": "Neznáme pravidlo úprav %s.", "Unknown modify rule %s.": "Neznáme pravidlo úprav %s."
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "Pridávanie nového používateľa do organizácie „built-in' (vložená) je momentálne zakázané. Všimnite si, že všetci používatelia v organizácii „built-in' sú globálni správcovia v Casdoor. Pozrite si dokumentáciu: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. Ak stále chcete vytvoriť používateľa pre organizáciu „built-in', prejdite na stránku nastavení organizácie a povoľte možnosť „Má súhlas s privilégiami'."
}, },
"permission": { "permission": {
"The permission: \\\"%s\\\" doesn't exist": "Povolenie: \\\"%s\\\" neexistuje" "The permission: \\\"%s\\\" doesn't exist": "Povolenie: \\\"%s\\\" neexistuje"
@@ -149,9 +126,6 @@
"The objectKey: %s is not allowed": "objectKey: %s nie je povolený", "The objectKey: %s is not allowed": "objectKey: %s nie je povolený",
"The provider type: %s is not supported": "Typ poskytovateľa: %s nie je podporovaný" "The provider type: %s is not supported": "Typ poskytovateľa: %s nie je podporovaný"
}, },
"subscription": {
"Error": "Chyba"
},
"token": { "token": {
"Grant_type: %s is not supported in this application": "Grant_type: %s nie je podporovaný v tejto aplikácii", "Grant_type: %s is not supported in this application": "Grant_type: %s nie je podporovaný v tejto aplikácii",
"Invalid application or wrong clientSecret": "Neplatná aplikácia alebo nesprávny clientSecret", "Invalid application or wrong clientSecret": "Neplatná aplikácia alebo nesprávny clientSecret",
@@ -161,10 +135,10 @@
}, },
"user": { "user": {
"Display name cannot be empty": "Zobrazované meno nemôže byť prázdne", "Display name cannot be empty": "Zobrazované meno nemôže byť prázdne",
"MFA email is enabled but email is empty": "MFA e-mail je zapnutý, ale e-mail je prázdny", "New password cannot contain blank space.": "Nové heslo nemôže obsahovať medzery."
"MFA phone is enabled but phone number is empty": "MFA telefón je zapnutý, ale telefónne číslo je prázdne", },
"New password cannot contain blank space.": "Nové heslo nemôže obsahovať medzery.", "user_upload": {
"the user's owner and name should not be empty": "vlastník a meno používateľa nesmú byť prázdne" "Failed to import users": "Nepodarilo sa importovať používateľov"
}, },
"util": { "util": {
"No application is found for userId: %s": "Nebola nájdená žiadna aplikácia pre userId: %s", "No application is found for userId: %s": "Nebola nájdená žiadna aplikácia pre userId: %s",
@@ -174,8 +148,8 @@
"verification": { "verification": {
"Invalid captcha provider.": "Neplatný captcha poskytovateľ.", "Invalid captcha provider.": "Neplatný captcha poskytovateľ.",
"Phone number is invalid in your region %s": "Telefónne číslo je neplatné vo vašom regióne %s", "Phone number is invalid in your region %s": "Telefónne číslo je neplatné vo vašom regióne %s",
"The verification code has already been used!": "Overovací kód bol už použitý!",
"The verification code has not been sent yet!": "Overovací kód ešte nebol odoslaný!", "The verification code has not been sent yet!": "Overovací kód ešte nebol odoslaný!",
"The verification code has not been sent yet, or has already been used!": "Overovací kód ešte nebol odoslaný, alebo bol už použitý!",
"Turing test failed.": "Test Turinga zlyhal.", "Turing test failed.": "Test Turinga zlyhal.",
"Unable to get the email modify rule.": "Nepodarilo sa získať pravidlo úpravy e-mailu.", "Unable to get the email modify rule.": "Nepodarilo sa získať pravidlo úpravy e-mailu.",
"Unable to get the phone modify rule.": "Nepodarilo sa získať pravidlo úpravy telefónu.", "Unable to get the phone modify rule.": "Nepodarilo sa získať pravidlo úpravy telefónu.",
@@ -187,7 +161,7 @@
"the user does not exist, please sign up first": "používateľ neexistuje, prosím, zaregistrujte sa najskôr" "the user does not exist, please sign up first": "používateľ neexistuje, prosím, zaregistrujte sa najskôr"
}, },
"webauthn": { "webauthn": {
"Found no credentials for this user": "Found no credentials for this user", "Found no credentials for this user": "Nenašli sa žiadne prihlasovacie údaje pre tohto používateľa",
"Please call WebAuthnSigninBegin first": "Najskôr prosím zavolajte WebAuthnSigninBegin" "Please call WebAuthnSigninBegin first": "Najskôr prosím zavolajte WebAuthnSigninBegin"
} }
} }

View File

@@ -1,193 +1,167 @@
{ {
"account": { "account": {
"Failed to add user": "Misslyckades lägga till användare", "Failed to add user": "Failed to add user",
"Get init score failed, error: %w": "Misslyckades hämta init-poäng, fel: %w", "Get init score failed, error: %w": "Get init score failed, error: %w",
"Please sign out first": "Logga ut först", "Please sign out first": "Please sign out first",
"The application does not allow to sign up new account": "Applikationen tillåter inte registrering av nytt konto" "The application does not allow to sign up new account": "The application does not allow to sign up new account"
}, },
"auth": { "auth": {
"Challenge method should be S256": "Utmaningsmetoden ska vara S256", "Challenge method should be S256": "Challenge method should be S256",
"DeviceCode Invalid": "Ogiltig enhetskod", "Failed to create user, user information is invalid: %s": "Failed to create user, user information is invalid: %s",
"Failed to create user, user information is invalid: %s": "Misslyckades skapa användare, användarinformationen är ogiltig: %s", "Failed to login in: %s": "Failed to login in: %s",
"Failed to login in: %s": "Misslyckades logga in: %s", "Invalid token": "Invalid token",
"Invalid token": "Ogiltig token", "State expected: %s, but got: %s": "State expected: %s, but got: %s",
"State expected: %s, but got: %s": "Förväntat tillstånd: %s, men fick: %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 via %%s, please use another way to sign up": "Kontot för leverantör: %s och användarnamn: %s (%s) finns inte och det är inte tillåtet att registrera ett nytt konto via %%s, använd ett annat sätt att registrera dig", "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) does not exist and is not allowed to sign up as new account, please contact your IT support": "Kontot för leverantör: %s och användarnamn: %s (%s) finns inte och det är inte tillåtet att registrera ett nytt konto, kontakta din 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 account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "Kontot för leverantör: %s och användarnamn: %s (%s) är redan länkat till ett annat konto: %s (%s)", "The application: %s does not exist": "The application: %s does not exist",
"The application: %s does not exist": "Applikationen: %s finns inte", "The login method: login with LDAP is not enabled for the application": "The login method: login with LDAP is not enabled for the application",
"The application: %s has disabled users to signin": "The application: %s has disabled users to signin", "The login method: login with SMS is not enabled for the application": "The login method: login with SMS is not enabled for the application",
"The login method: login with LDAP is not enabled for the application": "Inloggningsmetoden: inloggning med LDAP är inte aktiverad för applikationen", "The login method: login with email is not enabled for the application": "The login method: login with email is not enabled for the application",
"The login method: login with SMS is not enabled for the application": "Inloggningsmetoden: inloggning med SMS är inte aktiverad för applikationen", "The login method: login with face is not enabled for the application": "The login method: login with face is not enabled for the application",
"The login method: login with email is not enabled for the application": "Inloggningsmetoden: inloggning med e-post är inte aktiverad för applikationen", "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 login method: login with face is not enabled for the application": "Inloggningsmetoden: inloggning med ansikte är inte aktiverad för applikationen", "The organization: %s does not exist": "The organization: %s does not exist",
"The login method: login with password is not enabled for the application": "Inloggningsmetoden: inloggning med lösenord är inte aktiverad för applikationen", "The provider: %s is not enabled for the application": "The provider: %s is not enabled for the application",
"The organization: %s does not exist": "Organisationen: %s finns inte", "Unauthorized operation": "Unauthorized operation",
"The organization: %s has disabled users to signin": "The organization: %s has disabled users to signin", "Unknown authentication type (not password or provider), form = %s": "Unknown authentication type (not password or provider), form = %s",
"The provider: %s does not exist": "Leverantören: %s finns inte", "User's tag: %s is not listed in the application's tags": "User's tag: %s is not listed in the application's tags",
"The provider: %s is not enabled for the application": "Leverantören: %s är inte aktiverad för applikationen", "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing"
"Unauthorized operation": "Obehörig åtgärd",
"Unknown authentication type (not password or provider), form = %s": "Okänd autentiseringstyp (inte lösenord eller leverantör), form = %s",
"User's tag: %s is not listed in the application's tags": "Användarens tagg: %s finns inte med i applikationens taggar",
"UserCode Expired": "Användarkoden har löpt ut",
"UserCode Invalid": "Ogiltig användarkod",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "Betalningsanvändare %s har ingen aktiv eller väntande prenumeration och applikationen: %s har ingen standardprissättning",
"the application for user %s is not found": "Applikationen för användare %s hittades inte",
"the organization: %s is not found": "Organisationen: %s hittades inte"
}, },
"cas": { "cas": {
"Service %s and %s do not match": "Tjänsten %s och %s matchar inte" "Service %s and %s do not match": "Service %s and %s do not match"
}, },
"check": { "check": {
"%s does not meet the CIDR format requirements: %s": "%s uppfyller inte CIDR-formatets krav: %s", "Affiliation cannot be blank": "Affiliation cannot be blank",
"Affiliation cannot be blank": "Tillhörighet får inte vara tom", "Default code does not match the code's matching rules": "Default code does not match the code's matching rules",
"CIDR for IP: %s should not be empty": "CIDR för IP: %s får inte vara tomt", "DisplayName cannot be blank": "DisplayName cannot be blank",
"Default code does not match the code's matching rules": "Standardkoden matchar inte kodens matchningsregler", "DisplayName is not valid real name": "DisplayName is not valid real name",
"DisplayName cannot be blank": "Visningsnamn får inte vara tomt", "Email already exists": "Email already exists",
"DisplayName is not valid real name": "Visningsnamn är inte ett giltigt riktigt namn", "Email cannot be empty": "Email cannot be empty",
"Email already exists": "E-postadressen finns redan", "Email is invalid": "Email is invalid",
"Email cannot be empty": "E-post får inte vara tomt", "Empty username.": "Empty username.",
"Email is invalid": "E-postadressen är ogiltig", "Face data does not exist, cannot log in": "Face data does not exist, cannot log in",
"Empty username.": "Tomt användarnamn.", "Face data mismatch": "Face data mismatch",
"Face data does not exist, cannot log in": "Ansiktsdata finns inte, kan inte logga in", "FirstName cannot be blank": "FirstName cannot be blank",
"Face data mismatch": "Ansiktsdata stämmer inte", "Invitation code cannot be blank": "Invitation code cannot be blank",
"Failed to parse client IP: %s": "Misslyckades tolka klient-IP: %s", "Invitation code exhausted": "Invitation code exhausted",
"FirstName cannot be blank": "Förnamn får inte vara tomt", "Invitation code is invalid": "Invitation code is invalid",
"Invitation code cannot be blank": "Inbjudningskod får inte vara tom", "Invitation code suspended": "Invitation code suspended",
"Invitation code exhausted": "Inbjudningskoden är slut", "LDAP user name or password incorrect": "LDAP user name or password incorrect",
"Invitation code is invalid": "Inbjudningskoden är ogiltig", "LastName cannot be blank": "LastName cannot be blank",
"Invitation code suspended": "Inbjudningskoden är avstängd", "Multiple accounts with same uid, please check your ldap server": "Multiple accounts with same uid, please check your ldap server",
"LDAP user name or password incorrect": "LDAP-användarnamn eller lösenord är felaktigt", "Organization does not exist": "Organization does not exist",
"LastName cannot be blank": "Efternamn får inte vara tomt", "Phone already exists": "Phone already exists",
"Multiple accounts with same uid, please check your ldap server": "Flera konton med samma uid, kontrollera din LDAP-server", "Phone cannot be empty": "Phone cannot be empty",
"Organization does not exist": "Organisationen finns inte", "Phone number is invalid": "Phone number is invalid",
"Password cannot be empty": "Lösenord får inte vara tomt", "Please register using the email corresponding to the invitation code": "Please register using the email corresponding to the invitation code",
"Phone already exists": "Telefonnumret finns redan", "Please register using the phone corresponding to the invitation code": "Please register using the phone corresponding to the invitation code",
"Phone cannot be empty": "Telefon får inte vara tomt", "Please register using the username corresponding to the invitation code": "Please register using the username corresponding to the invitation code",
"Phone number is invalid": "Telefonnumret är ogiltigt", "Session outdated, please login again": "Session outdated, please login again",
"Please register using the email corresponding to the invitation code": "Registrera dig med den e-postadress som motsvarar inbjudningskoden", "The invitation code has already been used": "The invitation code has already been used",
"Please register using the phone corresponding to the invitation code": "Registrera dig med det telefonnummer som motsvarar inbjudningskoden", "The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
"Please register using the username corresponding to the invitation code": "Registrera dig med det användarnamn som motsvarar inbjudningskoden", "The user: %s doesn't exist in LDAP server": "The user: %s doesn't exist in LDAP server",
"Session outdated, please login again": "Sessionen har gått ut, logga in igen", "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.",
"The invitation code has already been used": "Inbjudningskoden har redan använts", "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex",
"The user is forbidden to sign in, please contact the administrator": "Användaren är förbjuden att logga in, kontakta administratören", "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"",
"The user: %s doesn't exist in LDAP server": "Användaren: %s finns inte i LDAP-servern", "Username already exists": "Username already exists",
"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.": "Användarnamnet får endast innehålla alfanumeriska tecken, understreck eller bindestreck, får inte ha flera understreck eller bindestreck i följd, och får inte börja eller sluta med ett understreck eller bindestreck.", "Username cannot be an email address": "Username cannot be an email address",
"The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "Värdet \\\"%s\\\" för kontofältet \\\"%s\\\" matchar inte kontots regex", "Username cannot contain white spaces": "Username cannot contain white spaces",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "Värdet \\\"%s\\\" för registreringsfältet \\\"%s\\\" matchar inte registreringsfältets regex för applikationen \\\"%s\\\"", "Username cannot start with a digit": "Username cannot start with a digit",
"Username already exists": "Användarnamnet finns redan", "Username is too long (maximum is 39 characters).": "Username is too long (maximum is 39 characters).",
"Username cannot be an email address": "Användarnamnet får inte vara en e-postadress", "Username must have at least 2 characters": "Username must have at least 2 characters",
"Username cannot contain white spaces": "Användarnamnet får inte innehålla mellanslag", "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",
"Username cannot start with a digit": "Användarnamnet får inte börja med en siffra", "Your region is not allow to signup by phone": "Your region is not allow to signup by phone",
"Username is too long (maximum is 255 characters).": "Användarnamnet är för långt (max 255 tecken).", "password or code is incorrect": "password or code is incorrect",
"Username must have at least 2 characters": "Användarnamnet måste ha minst 2 tecken", "password or code is incorrect, you have %d remaining chances": "password or code is incorrect, you have %d remaining chances",
"Username supports email format. Also 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. Also pay attention to the email format.": "Användarnamnet stöder e-postformat. Användarnamnet får endast innehålla alfanumeriska tecken, understreck eller bindestreck, får inte ha flera understreck eller bindestreck i följd, och får inte börja eller sluta med ett understreck eller bindestreck. Observera även e-postformatet.", "unsupported password type: %s": "unsupported password type: %s"
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Du har angett fel lösenord eller kod för många gånger, vänta %d minuter och försök igen",
"Your IP address: %s has been banned according to the configuration of: ": "Din IP-adress: %s har blockerats enligt konfigurationen av: ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "Ditt lösenord har gått ut. Återställ det genom att klicka på \\\"Glömt lösenord\\\"",
"Your region is not allow to signup by phone": "Din region tillåter inte registrering via telefon",
"password or code is incorrect": "lösenord eller kod är felaktig",
"password or code is incorrect, you have %s remaining chances": "lösenord eller kod är felaktig, du har %s försök kvar",
"unsupported password type: %s": "lösenordstypen stöds inte: %s"
},
"enforcer": {
"the adapter: %s is not found": "adaptern: %s hittades inte"
}, },
"general": { "general": {
"Failed to import groups": "Misslyckades importera grupper", "Missing parameter": "Missing parameter",
"Failed to import users": "Misslyckades importera användare", "Please login first": "Please login first",
"Missing parameter": "Saknad parameter", "The organization: %s should have one application at least": "The organization: %s should have one application at least",
"Only admin user can specify user": "Endast administratör kan ange användare", "The user: %s doesn't exist": "The user: %s doesn't exist",
"Please login first": "Logga in först", "don't support captchaProvider: ": "don't support captchaProvider: ",
"The organization: %s should have one application at least": "Organisationen: %s bör ha minst en applikation", "this operation is not allowed in demo mode": "this operation is not allowed in demo mode",
"The user: %s doesn't exist": "Användaren: %s finns inte", "this operation requires administrator to perform": "this operation requires administrator to perform"
"Wrong userId": "Fel användar-ID",
"don't support captchaProvider: ": "stödjer inte captcha-leverantör: ",
"this operation is not allowed in demo mode": "denna åtgärd är inte tillåten i demoläge",
"this operation requires administrator to perform": "denna åtgärd kräver administratör för att genomföras"
}, },
"ldap": { "ldap": {
"Ldap server exist": "LDAP-servern finns redan" "Ldap server exist": "Ldap server exist"
}, },
"link": { "link": {
"Please link first": "nka först", "Please link first": "Please link first",
"This application has no providers": "Denna applikation har inga leverantörer", "This application has no providers": "This application has no providers",
"This application has no providers of type": "Denna applikation har inga leverantörer av typen", "This application has no providers of type": "This application has no providers of type",
"This provider can't be unlinked": "Denna leverantör kan inte avlänkas", "This provider can't be unlinked": "This provider can't be unlinked",
"You are not the global admin, you can't unlink other users": "Du är inte global administratör, du kan inte avlänka andra användare", "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": "Du kan inte avlänka dig själv, du är inte medlem i någon applikation" "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": { "organization": {
"Only admin can modify the %s.": "Endast administratör kan ändra %s.", "Only admin can modify the %s.": "Only admin can modify the %s.",
"The %s is immutable.": "%s är oföränderlig.", "The %s is immutable.": "The %s is immutable.",
"Unknown modify rule %s.": "Okänd ändringsregel %s.", "Unknown modify rule %s.": "Unknown modify rule %s."
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "Lägg till en ny användare i organisationen 'built-in' (inbyggd) är för närvarande inaktiverat. Observera att alla användare i organisationen 'built-in' är globala administratörer i Casdoor. Se dokumentationen: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. Om du fortfarande vill skapa en användare för organisationen 'built-in', gå till organisationens inställningssida och aktivera alternativet 'Har privilegiekonsensus'."
}, },
"permission": { "permission": {
"The permission: \\\"%s\\\" doesn't exist": "Behörigheten: \\\"%s\\\" finns inte" "The permission: \\\"%s\\\" doesn't exist": "The permission: \\\"%s\\\" doesn't exist"
}, },
"provider": { "provider": {
"Invalid application id": "Ogiltigt applikations-ID", "Invalid application id": "Invalid application id",
"the provider: %s does not exist": "leverantören: %s finns inte" "the provider: %s does not exist": "the provider: %s does not exist"
}, },
"resource": { "resource": {
"User is nil for tag: avatar": "Användaren är nil för taggen: avatar", "User is nil for tag: avatar": "User is nil for tag: avatar",
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Användarnamn eller fullständig filsökväg är tom: användarnamn = %s, fullständig filsökväg = %s" "Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Username or fullFilePath is empty: username = %s, fullFilePath = %s"
}, },
"saml": { "saml": {
"Application %s not found": "Applikationen %s hittades inte" "Application %s not found": "Application %s not found"
}, },
"saml_sp": { "saml_sp": {
"provider %s's category is not SAML": "leverantören %s:s kategori är inte SAML" "provider %s's category is not SAML": "provider %s's category is not SAML"
}, },
"service": { "service": {
"Empty parameters for emailForm: %v": "Tomma parametrar för e-postformulär: %v", "Empty parameters for emailForm: %v": "Empty parameters for emailForm: %v",
"Invalid Email receivers: %s": "Ogiltiga e-postmottagare: %s", "Invalid Email receivers: %s": "Invalid Email receivers: %s",
"Invalid phone receivers: %s": "Ogiltiga telefonmottagare: %s" "Invalid phone receivers: %s": "Invalid phone receivers: %s"
}, },
"storage": { "storage": {
"The objectKey: %s is not allowed": "Objektnyckeln: %s är inte tillåten", "The objectKey: %s is not allowed": "The objectKey: %s is not allowed",
"The provider type: %s is not supported": "Leverantörstypen: %s stöds inte" "The provider type: %s is not supported": "The provider type: %s is not supported"
},
"subscription": {
"Error": "Fel"
}, },
"token": { "token": {
"Grant_type: %s is not supported in this application": "Grant_type: %s stöds inte i denna applikation", "Grant_type: %s is not supported in this application": "Grant_type: %s is not supported in this application",
"Invalid application or wrong clientSecret": "Ogiltig applikation eller fel clientSecret", "Invalid application or wrong clientSecret": "Invalid application or wrong clientSecret",
"Invalid client_id": "Ogiltigt client_id", "Invalid client_id": "Invalid client_id",
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "Omdirigerings-URI: %s finns inte i listan över tillåtna omdirigerings-URI:er", "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 hittades inte, ogiltig accessToken" "Token not found, invalid accessToken": "Token not found, invalid accessToken"
}, },
"user": { "user": {
"Display name cannot be empty": "Visningsnamn får inte vara tomt", "Display name cannot be empty": "Display name cannot be empty",
"MFA email is enabled but email is empty": "MFA-e-post är aktiverat men e-post är tom", "New password cannot contain blank space.": "New password cannot contain blank space."
"MFA phone is enabled but phone number is empty": "MFA-telefon är aktiverat men telefonnummer är tomt", },
"New password cannot contain blank space.": "Nytt lösenord får inte innehålla mellanslag.", "user_upload": {
"the user's owner and name should not be empty": "användarens ägare och namn får inte vara tomma" "Failed to import users": "Failed to import users"
}, },
"util": { "util": {
"No application is found for userId: %s": "Ingen applikation hittades för användar-ID: %s", "No application is found for userId: %s": "No application is found for userId: %s",
"No provider for category: %s is found for application: %s": "Ingen leverantör för kategori: %s hittades för applikation: %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": "Leverantören: %s hittades inte" "The provider: %s is not found": "The provider: %s is not found"
}, },
"verification": { "verification": {
"Invalid captcha provider.": "Ogiltig captcha-leverantör.", "Invalid captcha provider.": "Invalid captcha provider.",
"Phone number is invalid in your region %s": "Telefonnumret är ogiltigt i din region %s", "Phone number is invalid in your region %s": "Phone number is invalid in your region %s",
"The verification code has already been used!": "Verifieringskoden har redan använts!", "The verification code has not been sent yet!": "The verification code has not been sent yet!",
"The verification code has not been sent yet!": "Verifieringskoden har inte skickats än!", "The verification code has not been sent yet, or has already been used!": "The verification code has not been sent yet, or has already been used!",
"Turing test failed.": "Turing-test misslyckades.", "Turing test failed.": "Turing test failed.",
"Unable to get the email modify rule.": "Kunde inte hämta regeln för ändring av e-post.", "Unable to get the email modify rule.": "Unable to get the email modify rule.",
"Unable to get the phone modify rule.": "Kunde inte hämta regeln för ändring av telefon.", "Unable to get the phone modify rule.": "Unable to get the phone modify rule.",
"Unknown type": "Okänd typ", "Unknown type": "Unknown type",
"Wrong verification code!": "Fel verifieringskod!", "Wrong verification code!": "Wrong verification code!",
"You should verify your code in %d min!": "Du bör verifiera din kod inom %d min!", "You should verify your code in %d min!": "You should verify your code in %d min!",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "lägg till en SMS-leverantör i listan \\\"Leverantörer\\\" för applikationen: %s", "please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "please add a SMS provider to the \\\"Providers\\\" list for the application: %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "lägg till en e-postleverantör i listan \\\"Leverantörer\\\" för applikationen: %s", "please add an Email provider to the \\\"Providers\\\" list for the application: %s": "please add an Email provider to the \\\"Providers\\\" list for the application: %s",
"the user does not exist, please sign up first": "användaren finns inte, registrera dig först" "the user does not exist, please sign up first": "the user does not exist, please sign up first"
}, },
"webauthn": { "webauthn": {
"Found no credentials for this user": "Found no credentials for this user", "Found no credentials for this user": "Found no credentials for this user",
"Please call WebAuthnSigninBegin first": "Anropa WebAuthnSigninBegin först" "Please call WebAuthnSigninBegin first": "Please call WebAuthnSigninBegin first"
} }
} }

View File

@@ -1,193 +1,167 @@
{ {
"account": { "account": {
"Failed to add user": "Kullanıcı eklenemedi", "Failed to add user": "Failed to add user",
"Get init score failed, error: %w": "Başlangıç puanı alınamadı, hata: %w", "Get init score failed, error: %w": "Get init score failed, error: %w",
"Please sign out first": "Lütfen önce çıkış yapın", "Please sign out first": "Please sign out first",
"The application does not allow to sign up new account": "Uygulama yeni hesap kaydına izin vermiyor" "The application does not allow to sign up new account": "The application does not allow to sign up new account"
}, },
"auth": { "auth": {
"Challenge method should be S256": "Challenge yöntemi S256 olmalı", "Challenge method should be S256": "Challenge method should be S256",
"DeviceCode Invalid": "Cihaz Kodu Geçersiz", "Failed to create user, user information is invalid: %s": "Failed to create user, user information is invalid: %s",
"Failed to create user, user information is invalid: %s": "Kullanıcı oluşturulamadı, kullanıcı bilgileri geçersiz: %s", "Failed to login in: %s": "Failed to login in: %s",
"Failed to login in: %s": "Giriş yapılamadı: %s", "Invalid token": "Invalid token",
"Invalid token": "Geçersiz token", "State expected: %s, but got: %s": "State expected: %s, but got: %s",
"State expected: %s, but got: %s": "Beklenen durum: %s, fakat alınan: %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 via %%s, please use another way to sign up": "Provider: %s ve kullanıcı adı: %s (%s) için hesap mevcut değil ve %%s ile yeni hesap açılmasına izin verilmiyor, lütfen başka yöntemle kaydolun", "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) does not exist and is not allowed to sign up as new account, please contact your IT support": "Provider: %s ve kullanıcı adı: %s (%s) için hesap mevcut değil ve yeni hesap açılmasına izin verilmiyor, lütfen BT destek ile iletişime geçin", "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 account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "Provider: %s ve kullanıcı adı: %s (%s) zaten başka bir hesaba bağlı: %s (%s)", "The application: %s does not exist": "The application: %s does not exist",
"The application: %s does not exist": "Uygulama: %s bulunamadı", "The login method: login with LDAP is not enabled for the application": "The login method: login with LDAP is not enabled for the application",
"The application: %s has disabled users to signin": "The application: %s has disabled users to signin", "The login method: login with SMS is not enabled for the application": "The login method: login with SMS is not enabled for the application",
"The login method: login with LDAP is not enabled for the application": "Uygulama için LDAP ile giriş yöntemi etkin değil", "The login method: login with email is not enabled for the application": "The login method: login with email is not enabled for the application",
"The login method: login with SMS is not enabled for the application": "Uygulama için SMS ile giriş yöntemi etkin değil", "The login method: login with face is not enabled for the application": "The login method: login with face is not enabled for the application",
"The login method: login with email is not enabled for the application": "Uygulama için e-posta ile giriş yöntemi etkin değil", "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 login method: login with face is not enabled for the application": "Uygulama için yüz ile giriş yöntemi etkin değil", "The organization: %s does not exist": "The organization: %s does not exist",
"The login method: login with password is not enabled for the application": "Şifre ile giriş yöntemi bu uygulama için etkin değil", "The provider: %s is not enabled for the application": "The provider: %s is not enabled for the application",
"The organization: %s does not exist": "Organizasyon: %s mevcut değil", "Unauthorized operation": "Unauthorized operation",
"The organization: %s has disabled users to signin": "The organization: %s has disabled users to signin", "Unknown authentication type (not password or provider), form = %s": "Unknown authentication type (not password or provider), form = %s",
"The provider: %s does not exist": "Sağlayıcı: %s mevcut değil", "User's tag: %s is not listed in the application's tags": "User's tag: %s is not listed in the application's tags",
"The provider: %s is not enabled for the application": "Provider: %s bu uygulama için etkin değil", "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing"
"Unauthorized operation": "Yetkisiz işlem",
"Unknown authentication type (not password or provider), form = %s": "Bilinmeyen kimlik doğrulama türü (şifre veya provider değil), form = %s",
"User's tag: %s is not listed in the application's tags": "Kullanıcı etiketi: %s uygulamanın etiketlerinde listelenmiyor",
"UserCode Expired": "Kullanıcı Kodu Süresi Doldu",
"UserCode Invalid": "Kullanıcı Kodu Geçersiz",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "Ücretli kullanıcı %s aktif veya bekleyen bir aboneliğe sahip değil ve uygulama: %s varsayılan fiyatlandırmaya sahip değil",
"the application for user %s is not found": "%s kullanıcısı için uygulama bulunamadı",
"the organization: %s is not found": "Organizasyon: %s bulunamadı"
}, },
"cas": { "cas": {
"Service %s and %s do not match": "Servis %s ve %s eşleşmiyor" "Service %s and %s do not match": "Service %s and %s do not match"
}, },
"check": { "check": {
"%s does not meet the CIDR format requirements: %s": "%s, CIDR biçim gerekliliklerini karşılamıyor: %s", "Affiliation cannot be blank": "Affiliation cannot be blank",
"Affiliation cannot be blank": "Kurum boş olamaz", "Default code does not match the code's matching rules": "Default code does not match the code's matching rules",
"CIDR for IP: %s should not be empty": "IP için CIDR: %s boş olmamalı", "DisplayName cannot be blank": "DisplayName cannot be blank",
"Default code does not match the code's matching rules": "Varsayılan kod, kodun eşleşme kurallarıyla uyuşmuyor", "DisplayName is not valid real name": "DisplayName is not valid real name",
"DisplayName cannot be blank": "Görünen ad boş olamaz", "Email already exists": "Email already exists",
"DisplayName is not valid real name": "Görünen ad geçerli bir gerçek ad değil", "Email cannot be empty": "Email cannot be empty",
"Email already exists": "E-posta zaten var", "Email is invalid": "Email is invalid",
"Email cannot be empty": "E-posta boş olamaz", "Empty username.": "Empty username.",
"Email is invalid": "E-posta geçersiz", "Face data does not exist, cannot log in": "Face data does not exist, cannot log in",
"Empty username.": "Kullanıcı adı boş.", "Face data mismatch": "Face data mismatch",
"Face data does not exist, cannot log in": "Yüz verisi mevcut değil, giriş yapılamaz", "FirstName cannot be blank": "FirstName cannot be blank",
"Face data mismatch": "Yüz verisi uyuşmazlığı", "Invitation code cannot be blank": "Invitation code cannot be blank",
"Failed to parse client IP: %s": "İstemci IP'si ayrıştırılamadı: %s", "Invitation code exhausted": "Invitation code exhausted",
"FirstName cannot be blank": "Ad boş olamaz", "Invitation code is invalid": "Invitation code is invalid",
"Invitation code cannot be blank": "Davet kodu boş olamaz", "Invitation code suspended": "Invitation code suspended",
"Invitation code exhausted": "Davet kodu kullanım dışı", "LDAP user name or password incorrect": "LDAP user name or password incorrect",
"Invitation code is invalid": "Davet kodu geçersiz", "LastName cannot be blank": "LastName cannot be blank",
"Invitation code suspended": "Davet kodu askıya alındı", "Multiple accounts with same uid, please check your ldap server": "Multiple accounts with same uid, please check your ldap server",
"LDAP user name or password incorrect": "LDAP kullanıcı adı veya şifre yanlış", "Organization does not exist": "Organization does not exist",
"LastName cannot be blank": "Soyad boş olamaz", "Phone already exists": "Telefon numarası zaten mevcut",
"Multiple accounts with same uid, please check your ldap server": "Aynı uid'ye sahip birden fazla hesap, lütfen ldap sunucunuzu kontrol edin",
"Organization does not exist": "Organizasyon bulunamadı",
"Password cannot be empty": "Şifre boş olamaz",
"Phone already exists": "Telefon numarası zaten var",
"Phone cannot be empty": "Telefon numarası boş olamaz", "Phone cannot be empty": "Telefon numarası boş olamaz",
"Phone number is invalid": "Telefon numarası geçersiz", "Phone number is invalid": "Telefon numarası geçersiz",
"Please register using the email corresponding to the invitation code": "Lütfen davet koduna karşılık gelen e-posta ile kayıt olun", "Please register using the email corresponding to the invitation code": "Please register using the email corresponding to the invitation code",
"Please register using the phone corresponding to the invitation code": "Lütfen davet koduna karşılık gelen telefonla kayıt olun", "Please register using the phone corresponding to the invitation code": "Please register using the phone corresponding to the invitation code",
"Please register using the username corresponding to the invitation code": "Lütfen davet koduna karşılık gelen kullanıcı adıyla kayıt olun", "Please register using the username corresponding to the invitation code": "Please register using the username corresponding to the invitation code",
"Session outdated, please login again": "Oturum süresi doldu, lütfen tekrar giriş yapın", "Session outdated, please login again": "Session outdated, please login again",
"The invitation code has already been used": "Davet kodu zaten kullanılmış", "The invitation code has already been used": "The invitation code has already been used",
"The user is forbidden to sign in, please contact the administrator": "Kullanıcı giriş yapmaktan men edildi, lütfen yönetici ile iletişime geçin", "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": "Kullanıcı: %s LDAP sunucusunda mevcut değil", "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.": "Kullanıcı adı yalnızca alfanümerik karakterler, alt çizgi veya tire içerebilir, ardışık tire veya alt çizgi içeremez ve tire veya alt çizgi ile başlayamaz veya bitemez.", "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.",
"The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "Hesap alanı \\\"%s\\\" için \\\"%s\\\" değeri, hesap öğesi regex'iyle eşleşmiyor", "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "Kayıt alanı \\\"%s\\\" için \\\"%s\\\" değeri, \\\"%s\\\" uygulamasının kayıt öğesi regex'iyle eşleşmiyor", "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"",
"Username already exists": "Kullanıcı adı zaten var", "Username already exists": "Kullanıcı adı zaten var",
"Username cannot be an email address": "Kullanıcı adı e-posta adresi olamaz", "Username cannot be an email address": "Kullanıcı adı bir e-mail adresi olamaz",
"Username cannot contain white spaces": "Kullanıcı adı boşluk içeremez", "Username cannot contain white spaces": "Kullanıcı adı boşluk karakteri içeremez",
"Username cannot start with a digit": "Kullanıcı adı rakamla başlayamaz", "Username cannot start with a digit": "Kullanıcı adı rakamla başlayamaz",
"Username is too long (maximum is 255 characters).": "Kullanıcı adı çok uzun (maksimum 255 karakter).", "Username is too long (maximum is 39 characters).": "Kullanıcı adı çok uzun (en fazla 39 karakter olmalı).",
"Username must have at least 2 characters": "Kullanıcı adı en az 2 karakter olmalı", "Username must have at least 2 characters": "Kullanıcı adı en az iki karakterden olmalı",
"Username supports email format. Also 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. Also pay attention to the email format.": "Kullanıcı adı e-posta biçimini destekler. Ayrıca kullanıcı adı yalnızca alfanümerik karakterler, alt çizgiler veya tireler içerebilir, ardışık tireler veya alt çizgiler olamaz ve tire veya alt çizgi ile başlayıp bitemez. Ayrıca e-posta biçimine dikkat edin.", "You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Çok fazla hatalı şifre denemesi yaptınız. %d dakika kadar bekleyip yeniden giriş yapmayı deneyebilirsiniz.",
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Çok fazla hatalı şifre veya kod girdiniz, lütfen %d dakika bekleyin ve tekrar deneyin", "Your region is not allow to signup by phone": "Your region is not allow to signup by phone",
"Your IP address: %s has been banned according to the configuration of: ": "IP adresiniz: %s, yapılandırmaya göre yasaklandı: ", "password or code is incorrect": "şifre veya kod hatalı",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "Şifrenizin süresi doldu. Lütfen \\\"Şifremi unuttum\\\"a tıklayarak şifrenizi sıfırlayın", "password or code is incorrect, you have %d remaining chances": "password or code is incorrect, you have %d remaining chances",
"Your region is not allow to signup by phone": "Bölgeniz telefonla kayıt yapmaya izin verilmiyor", "unsupported password type: %s": "unsupported password type: %s"
"password or code is incorrect": "şifre veya kod yanlış",
"password or code is incorrect, you have %s remaining chances": "şifre veya kod yanlış, %s hakkınız kaldı",
"unsupported password type: %s": "desteklenmeyen şifre türü: %s"
},
"enforcer": {
"the adapter: %s is not found": "bağdaştırıcı: %s bulunamadı"
}, },
"general": { "general": {
"Failed to import groups": "Gruplar içe aktarılamadı", "Missing parameter": "Missing parameter",
"Failed to import users": "Kullanıcılar içe aktarılamadı", "Please login first": "Please login first",
"Missing parameter": "Eksik parametre", "The organization: %s should have one application at least": "The organization: %s should have one application at least",
"Only admin user can specify user": "Yalnızca yönetici kullanıcı kullanıcı belirleyebilir", "The user: %s doesn't exist": "The user: %s doesn't exist",
"Please login first": "Lütfen önce giriş yapın", "don't support captchaProvider: ": "don't support captchaProvider: ",
"The organization: %s should have one application at least": "Organizasyon: %s en az bir uygulamaya sahip olmalı", "this operation is not allowed in demo mode": "this operation is not allowed in demo mode",
"The user: %s doesn't exist": "Kullanıcı: %s bulunamadı", "this operation requires administrator to perform": "this operation requires administrator to perform"
"Wrong userId": "Yanlış kullanıcı kimliği",
"don't support captchaProvider: ": "captchaProvider desteklenmiyor: ",
"this operation is not allowed in demo mode": "bu işlem demo modunda izin verilmiyor",
"this operation requires administrator to perform": "bu işlem yönetici tarafından gerçekleştirilmelidir"
}, },
"ldap": { "ldap": {
"Ldap server exist": "LDAP sunucusu zaten var" "Ldap server exist": "Ldap server exist"
}, },
"link": { "link": {
"Please link first": "Lütfen önce bağlayın", "Please link first": "Please link first",
"This application has no providers": "Bu uygulamanın provider'ı yok", "This application has no providers": "This application has no providers",
"This application has no providers of type": "Bu uygulamanın bu türde provider'ı yok", "This application has no providers of type": "This application has no providers of type",
"This provider can't be unlinked": "Bu provider bağlantısı kaldırılamaz", "This provider can't be unlinked": "This provider can't be unlinked",
"You are not the global admin, you can't unlink other users": "Global yönetici değilsiniz, başka kullanıcıların bağlantısını kaldıramazsınız", "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": "Kendinizin bağlantısını kaldıramazsınız, hiçbir uygulamanın üyesi değilsiniz" "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": { "organization": {
"Only admin can modify the %s.": "Yalnızca yönetici %s değiştirebilir.", "Only admin can modify the %s.": "Only admin can modify the %s.",
"The %s is immutable.": "%s değiştirilemez.", "The %s is immutable.": "The %s is immutable.",
"Unknown modify rule %s.": "Bilinmeyen değiştirme kuralı %s.", "Unknown modify rule %s.": "Unknown modify rule %s."
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "'built-in' (yerleşik) organizasyona yeni bir kullanıcı ekleme şu anda devre dışı bırakılmıştır. Not: 'built-in' organizasyonundaki tüm kullanıcılar Casdoor'da genel yöneticilerdir. Belgelere bakın: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. Hala 'built-in' organizasyonu için bir kullanıcı oluşturmak isterseniz, organizasyonun ayarları sayfasına gidin ve 'Yetki onayı var' seçeneğini etkinleştirin."
}, },
"permission": { "permission": {
"The permission: \\\"%s\\\" doesn't exist": "İzin: \\\"%s\\\" mevcut değil" "The permission: \\\"%s\\\" doesn't exist": "The permission: \\\"%s\\\" doesn't exist"
}, },
"provider": { "provider": {
"Invalid application id": "Geçersiz uygulama id", "Invalid application id": "Invalid application id",
"the provider: %s does not exist": "provider: %s bulunamadı" "the provider: %s does not exist": "the provider: %s does not exist"
}, },
"resource": { "resource": {
"User is nil for tag: avatar": "Kullanıcı nil avatar etiketi için", "User is nil for tag: avatar": "User is nil for tag: avatar",
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Kullanıcı adı veya fullFilePath boş: username = %s, fullFilePath = %s" "Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Username or fullFilePath is empty: username = %s, fullFilePath = %s"
}, },
"saml": { "saml": {
"Application %s not found": "Uygulama %s bulunamadı" "Application %s not found": "Application %s not found"
}, },
"saml_sp": { "saml_sp": {
"provider %s's category is not SAML": "provider %s kategorisi SAML değil" "provider %s's category is not SAML": "provider %s's category is not SAML"
}, },
"service": { "service": {
"Empty parameters for emailForm: %v": "emailForm için boş parametreler: %v", "Empty parameters for emailForm: %v": "Empty parameters for emailForm: %v",
"Invalid Email receivers: %s": "Geçersiz e-posta alıcıları: %s", "Invalid Email receivers: %s": "Invalid Email receivers: %s",
"Invalid phone receivers: %s": "Geçersiz telefon alıcıları: %s" "Invalid phone receivers: %s": "Invalid phone receivers: %s"
}, },
"storage": { "storage": {
"The objectKey: %s is not allowed": "objectKey: %s izin verilmiyor", "The objectKey: %s is not allowed": "The objectKey: %s is not allowed",
"The provider type: %s is not supported": "provider türü: %s desteklenmiyor" "The provider type: %s is not supported": "The provider type: %s is not supported"
},
"subscription": {
"Error": "Hata"
}, },
"token": { "token": {
"Grant_type: %s is not supported in this application": "Grant_type: %s bu uygulamada desteklenmiyor", "Grant_type: %s is not supported in this application": "Grant_type: %s is not supported in this application",
"Invalid application or wrong clientSecret": "Geçersiz uygulama veya yanlış clientSecret", "Invalid application or wrong clientSecret": "Invalid application or wrong clientSecret",
"Invalid client_id": "Geçersiz client_id", "Invalid client_id": "Invalid client_id",
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "Redirect URI: %s izin verilen Redirect URI listesinde yok", "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 bulunamadı, geçersiz accessToken" "Token not found, invalid accessToken": "Token not found, invalid accessToken"
}, },
"user": { "user": {
"Display name cannot be empty": "Görünen ad boş olamaz", "Display name cannot be empty": "Görünen ad boş olamaz",
"MFA email is enabled but email is empty": "MFA e-postası etkin ancak e-posta boş", "New password cannot contain blank space.": "Yeni şifreniz boşluk karakteri içeremez."
"MFA phone is enabled but phone number is empty": "MFA telefonu etkin ancak telefon numarası boş", },
"New password cannot contain blank space.": "Yeni şifre boşluk içeremez.", "user_upload": {
"the user's owner and name should not be empty": "kullanıcının sahibi ve adı boş olmamalıdır" "Failed to import users": "Failed to import users"
}, },
"util": { "util": {
"No application is found for userId: %s": "KullanıcıId: %s için uygulama bulunamadı", "No application is found for userId: %s": "No application is found for userId: %s",
"No provider for category: %s is found for application: %s": "%s kategorisi için provider bulunamadı uygulama: %s için", "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": "Provider: %s bulunamadı" "The provider: %s is not found": "The provider: %s is not found"
}, },
"verification": { "verification": {
"Invalid captcha provider.": "Geçersiz captcha sağlayıcı.", "Invalid captcha provider.": "Invalid captcha provider.",
"Phone number is invalid in your region %s": "Telefon numaranız bölgenizde geçersiz %s", "Phone number is invalid in your region %s": "Telefon numaranızın bulunduğu bölgeye hizmet veremiyoruz",
"The verification code has already been used!": "Doğrulama kodu zaten kullanılmış!", "The verification code has not been sent yet!": "The verification code has not been sent yet!",
"The verification code has not been sent yet!": "Doğrulama kodu henüz gönderilmedi!", "The verification code has not been sent yet, or has already been used!": "The verification code has not been sent yet, or has already been used!",
"Turing test failed.": "Turing testi başarısız.", "Turing test failed.": "Turing test failed.",
"Unable to get the email modify rule.": "E-posta değiştirme kuralı alınamıyor.", "Unable to get the email modify rule.": "Unable to get the email modify rule.",
"Unable to get the phone modify rule.": "Telefon değiştirme kuralı alınamıyor.", "Unable to get the phone modify rule.": "Unable to get the phone modify rule.",
"Unknown type": "Bilinmeyen tür", "Unknown type": "Unknown type",
"Wrong verification code!": "Yanlış doğrulama kodu!", "Wrong verification code!": "Wrong verification code!",
"You should verify your code in %d min!": "Kodunuzu %d dakika içinde doğrulamalısınız!", "You should verify your code in %d min!": "You should verify your code in %d min!",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "lütfen uygulama için \\\"Sağlayıcılar\\\" listesine bir SMS sağlayıcı ekleyin: %s", "please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "please add a SMS provider to the \\\"Providers\\\" list for the application: %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "lütfen uygulama için \\\"Sağlayıcılar\\\" listesine bir E-posta sağlayıcı ekleyin: %s", "please add an Email provider to the \\\"Providers\\\" list for the application: %s": "please add an Email provider to the \\\"Providers\\\" list for the application: %s",
"the user does not exist, please sign up first": "kullanıcı mevcut değil, lütfen önce kaydolun" "the user does not exist, please sign up first": "the user does not exist, please sign up first"
}, },
"webauthn": { "webauthn": {
"Found no credentials for this user": "Found no credentials for this user", "Found no credentials for this user": "Found no credentials for this user",
"Please call WebAuthnSigninBegin first": "Lütfen önce WebAuthnSigninBegin çağırın" "Please call WebAuthnSigninBegin first": "Please call WebAuthnSigninBegin first"
} }
} }

View File

@@ -1,193 +1,167 @@
{ {
"account": { "account": {
"Failed to add user": "Не вдалося додати користувача", "Failed to add user": "Failed to add user",
"Get init score failed, error: %w": "Не вдалося отримати початковий бал, помилка: %w", "Get init score failed, error: %w": "Get init score failed, error: %w",
"Please sign out first": "Спочатку вийдіть із системи", "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": "The application does not allow to sign up new account"
}, },
"auth": { "auth": {
"Challenge method should be S256": "Метод виклику має бути S256", "Challenge method should be S256": "Challenge method should be S256",
"DeviceCode Invalid": "Недійсний DeviceCode", "Failed to create user, user information is invalid: %s": "Failed to create user, user information is invalid: %s",
"Failed to create user, user information is invalid: %s": "Не вдалося створити користувача, інформація недійсна: %s", "Failed to login in: %s": "Failed to login in: %s",
"Failed to login in: %s": "Не вдалося увійти: %s", "Invalid token": "Invalid token",
"Invalid token": "Недійсний токен", "State expected: %s, but got: %s": "State expected: %s, but got: %s",
"State expected: %s, but got: %s": "Очікувалося стан: %s, але отримано: %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 via %%s, please use another way to sign up": "Обліковий запис для провайдера: %s та імені користувача: %s (%s) не існує і не дозволяється реєструвати як новий через %%s, використайте інший спосіб", "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) does not exist and is not allowed to sign up as new account, please contact your IT support": "Обліковий запис для провайдера: %s та імені користувача: %s (%s) не існує і не дозволяється реєструвати як новий, зверніться до IT-підтримки", "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 account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "Обліковий запис для провайдера: %s та імені користувача: %s (%s) уже пов’язаний з іншим обліковим записом: %s (%s)", "The application: %s does not exist": "The application: %s does not exist",
"The application: %s does not exist": "Додаток: %s не існує", "The login method: login with LDAP is not enabled for the application": "The login method: login with LDAP is not enabled for the application",
"The application: %s has disabled users to signin": "The application: %s has disabled users to signin", "The login method: login with SMS is not enabled for the application": "The login method: login with SMS is not enabled for the application",
"The login method: login with LDAP is not enabled for the application": "Метод входу через LDAP не увімкнено для цього додатка", "The login method: login with email is not enabled for the application": "The login method: login with email is not enabled for the application",
"The login method: login with SMS is not enabled for the application": "Метод входу через SMS не увімкнено для цього додатка", "The login method: login with face is not enabled for the application": "The login method: login with face is not enabled for the application",
"The login method: login with email is not enabled for the application": "Метод входу через email не увімкнено для цього додатка", "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 login method: login with face is not enabled for the application": "Метод входу через обличчя не увімкнено для цього додатка", "The organization: %s does not exist": "The organization: %s does not exist",
"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",
"The organization: %s does not exist": "Організація: %s не існує", "Unauthorized operation": "Unauthorized operation",
"The organization: %s has disabled users to signin": "The organization: %s has disabled users to signin", "Unknown authentication type (not password or provider), form = %s": "Unknown authentication type (not password or provider), form = %s",
"The provider: %s does not exist": "Провайдер: %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",
"The provider: %s is not enabled for the application": "Провайдер: %s не увімкнено для цього додатка", "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing"
"Unauthorized operation": "Неавторизована операція",
"Unknown authentication type (not password or provider), form = %s": "Невідомий тип автентифікації (не пароль і не провайдер), форма = %s",
"User's tag: %s is not listed in the application's tags": "Тег користувача: %s відсутній у тегах додатка",
"UserCode Expired": "UserCode застарів",
"UserCode Invalid": "UserCode недійсний",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "Користувач %s не має активної або очікуваної підписки, а додаток: %s не має типової ціни",
"the application for user %s is not found": "Додаток для користувача %s не знайдено",
"the organization: %s is not found": "Організація: %s не знайдена"
}, },
"cas": { "cas": {
"Service %s and %s do not match": "Сервіс %s і %s не збігаються" "Service %s and %s do not match": "Service %s and %s do not match"
}, },
"check": { "check": {
"%s does not meet the CIDR format requirements: %s": "%s не відповідає формату CIDR: %s", "Affiliation cannot be blank": "Affiliation cannot be blank",
"Affiliation cannot be blank": "Приналежність не може бути порожньою", "Default code does not match the code's matching rules": "Default code does not match the code's matching rules",
"CIDR for IP: %s should not be empty": "CIDR для IP: %s не повинен бути порожнім", "DisplayName cannot be blank": "DisplayName cannot be blank",
"Default code does not match the code's matching rules": "Код за замовчуванням не відповідає правилам відповідності", "DisplayName is not valid real name": "DisplayName is not valid real name",
"DisplayName cannot be blank": "Відображуване ім’я не може бути порожнім", "Email already exists": "Email already exists",
"DisplayName is not valid real name": "Відображуване ім’я не є дійсним справжнім ім’ям", "Email cannot be empty": "Email cannot be empty",
"Email already exists": "Email уже існує", "Email is invalid": "Email is invalid",
"Email cannot be empty": "Email не може бути порожнім", "Empty username.": "Empty username.",
"Email is invalid": "Email недійсний", "Face data does not exist, cannot log in": "Face data does not exist, cannot log in",
"Empty username.": "Порожнє ім’я користувача.", "Face data mismatch": "Face data mismatch",
"Face data does not exist, cannot log in": "Дані обличчя відсутні, неможливо увійти", "FirstName cannot be blank": "FirstName cannot be blank",
"Face data mismatch": "Невідповідність даних обличчя", "Invitation code cannot be blank": "Invitation code cannot be blank",
"Failed to parse client IP: %s": "Не вдалося розібрати IP клієнта: %s", "Invitation code exhausted": "Invitation code exhausted",
"FirstName cannot be blank": "Ім’я не може бути порожнім", "Invitation code is invalid": "Invitation code is invalid",
"Invitation code cannot be blank": "Код запрошення не може бути порожнім", "Invitation code suspended": "Invitation code suspended",
"Invitation code exhausted": "Код запрошення вичерпано", "LDAP user name or password incorrect": "LDAP user name or password incorrect",
"Invitation code is invalid": "Код запрошення недійсний", "LastName cannot be blank": "LastName cannot be blank",
"Invitation code suspended": "Код запрошення призупинено", "Multiple accounts with same uid, please check your ldap server": "Multiple accounts with same uid, please check your ldap server",
"LDAP user name or password incorrect": "Ім’я користувача або пароль LDAP неправильні", "Organization does not exist": "Organization does not exist",
"LastName cannot be blank": "Прізвище не може бути порожнім", "Phone already exists": "Phone already exists",
"Multiple accounts with same uid, please check your ldap server": "Кілька облікових записів з однаковим uid, перевірте ваш ldap-сервер", "Phone cannot be empty": "Phone cannot be empty",
"Organization does not exist": "Організація не існує", "Phone number is invalid": "Phone number is invalid",
"Password cannot be empty": "Пароль не може бути порожнім", "Please register using the email corresponding to the invitation code": "Please register using the email corresponding to the invitation code",
"Phone already exists": "Телефон уже існує", "Please register using the phone corresponding to the invitation code": "Please register using the phone corresponding to the invitation code",
"Phone cannot be empty": "Телефон не може бути порожнім", "Please register using the username corresponding to the invitation code": "Please register using the username corresponding to the invitation code",
"Phone number is invalid": "Номер телефону недійсний", "Session outdated, please login again": "Session outdated, please login again",
"Please register using the email corresponding to the invitation code": "Будь ласка, зареєструйтесь, використовуючи email, що відповідає коду запрошення", "The invitation code has already been used": "The invitation code has already been used",
"Please register using the phone corresponding to the invitation code": "Будь ласка, зареєструйтесь, використовуючи телефон, що відповідає коду запрошення", "The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
"Please register using the username corresponding to the invitation code": "Будь ласка, зареєструйтесь, використовуючи ім’я користувача, що відповідає коду запрошення", "The user: %s doesn't exist in LDAP server": "The user: %s doesn't exist in LDAP server",
"Session outdated, please login again": "Сесію застаро, будь ласка, увійдіть знову", "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.",
"The invitation code has already been used": "Код запрошення вже використано", "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex",
"The user is forbidden to sign in, please contact the administrator": "Користувачу заборонено вхід, зверніться до адміністратора", "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"",
"The user: %s doesn't exist in LDAP server": "Користувач: %s не існує на сервері LDAP", "Username already exists": "Username already exists",
"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 cannot be an email address": "Username cannot be an email address",
"The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "Värdet \\\"%s\\\" för kontofältet \\\"%s\\\" matchar inte kontots regex", "Username cannot contain white spaces": "Username cannot contain white spaces",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "Värdet \\\"%s\\\" för registreringsfältet \\\"%s\\\" matchar inte registreringsfältets regex för applikationen \\\"%s\\\"", "Username cannot start with a digit": "Username cannot start with a digit",
"Username already exists": "Ім’я користувача вже існує", "Username is too long (maximum is 39 characters).": "Username is too long (maximum is 39 characters).",
"Username cannot be an email address": "Ім’я користувача не може бути email-адресою", "Username must have at least 2 characters": "Username must have at least 2 characters",
"Username cannot contain white spaces": "Ім’я користувача не може містити пробіли", "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",
"Username cannot start with a digit": "Ім’я користувача не може починатися з цифри", "Your region is not allow to signup by phone": "Your region is not allow to signup by phone",
"Username is too long (maximum is 255 characters).": "Ім’я користувача занадто довге (максимум 255 символів).", "password or code is incorrect": "password or code is incorrect",
"Username must have at least 2 characters": "Ім’я користувача має містити щонайменше 2 символи", "password or code is incorrect, you have %d remaining chances": "password or code is incorrect, you have %d remaining chances",
"Username supports email format. Also 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. Also pay attention to the email format.": "Ім’я користувача підтримує формат email. Також може містити лише буквено-цифрові символи, підкреслення або дефіси, не може мати послідовні дефіси або підкреслення та не може починатися або закінчуватися дефісом або підкресленням. Зверніть увагу на формат email.", "unsupported password type: %s": "unsupported password type: %s"
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Ви ввели неправильний пароль або код забагато разів, зачекайте %d хвилин і спробуйте знову",
"Your IP address: %s has been banned according to the configuration of: ": "Ваша IP-адреса: %s заблокована відповідно до конфігурації: ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "Ditt lösenord har gått ut. Återställ det genom att klicka på \\\"Glömt lösenord\\\"",
"Your region is not allow to signup by phone": "У вашому регіоні реєстрація за телефоном недоступна",
"password or code is incorrect": "пароль або код неправильний",
"password or code is incorrect, you have %s remaining chances": "пароль або код неправильний, у вас залишилось %s спроб",
"unsupported password type: %s": "непідтримуваний тип пароля: %s"
},
"enforcer": {
"the adapter: %s is not found": "адаптер: %s не знайдено"
}, },
"general": { "general": {
"Failed to import groups": "Не вдалося імпортувати групи", "Missing parameter": "Missing parameter",
"Failed to import users": "Не вдалося імпортувати користувачів", "Please login first": "Please login first",
"Missing parameter": "Відсутній параметр", "The organization: %s should have one application at least": "The organization: %s should have one application at least",
"Only admin user can specify user": "Лише адміністратор може вказати користувача", "The user: %s doesn't exist": "The user: %s doesn't exist",
"Please login first": "Спочатку увійдіть", "don't support captchaProvider: ": "don't support captchaProvider: ",
"The organization: %s should have one application at least": "Організація: %s має мати щонайменше один додаток", "this operation is not allowed in demo mode": "this operation is not allowed in demo mode",
"The user: %s doesn't exist": "Користувач: %s не існує", "this operation requires administrator to perform": "this operation requires administrator to perform"
"Wrong userId": "Неправильний userId",
"don't support captchaProvider: ": "не підтримується captchaProvider: ",
"this operation is not allowed in demo mode": "ця операція недоступна в демо-режимі",
"this operation requires administrator to perform": "ця операція потребує прав адміністратора"
}, },
"ldap": { "ldap": {
"Ldap server exist": "Сервер LDAP існує" "Ldap server exist": "Ldap server exist"
}, },
"link": { "link": {
"Please link first": "Спочатку виконайте прив’язку", "Please link first": "Please link first",
"This application has no providers": "Цей додаток не має провайдерів", "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 application has no providers of type",
"This provider can't be unlinked": "Цього провайдера не можна від’єднати", "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 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": "You can't unlink yourself, you are not a member of any application"
}, },
"organization": { "organization": {
"Only admin can modify the %s.": "Лише адміністратор може змінити %s.", "Only admin can modify the %s.": "Only admin can modify the %s.",
"The %s is immutable.": "%s незмінний.", "The %s is immutable.": "The %s is immutable.",
"Unknown modify rule %s.": "Невідоме правило зміни %s.", "Unknown modify rule %s.": "Unknown modify rule %s."
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "Додавання нового користувача до організації «built-in» (вбудованої) на даний момент вимкнено. Зауважте: усі користувачі в організації «built-in» є глобальними адміністраторами в Casdoor. Дивіться документацію: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. Якщо ви все ще хочете створити користувача для організації «built-in», перейдіть на сторінку налаштувань організації та увімкніть опцію «Має згоду на привілеї»."
}, },
"permission": { "permission": {
"The permission: \\\"%s\\\" doesn't exist": "Behörigheten: \\\"%s\\\" finns inte" "The permission: \\\"%s\\\" doesn't exist": "The permission: \\\"%s\\\" doesn't exist"
}, },
"provider": { "provider": {
"Invalid application id": "Недійсний id додатка", "Invalid application id": "Invalid application id",
"the provider: %s does not exist": "провайдер: %s не існує" "the provider: %s does not exist": "the provider: %s does not exist"
}, },
"resource": { "resource": {
"User is nil for tag: avatar": "Користувач nil для тегу: avatar", "User is nil for tag: avatar": "User is nil for tag: avatar",
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Ім’я користувача або fullFilePath порожні: username = %s, fullFilePath = %s" "Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Username or fullFilePath is empty: username = %s, fullFilePath = %s"
}, },
"saml": { "saml": {
"Application %s not found": "Додаток %s не знайдено" "Application %s not found": "Application %s not found"
}, },
"saml_sp": { "saml_sp": {
"provider %s's category is not SAML": "категорія провайдера %s не є SAML" "provider %s's category is not SAML": "provider %s's category is not SAML"
}, },
"service": { "service": {
"Empty parameters for emailForm: %v": "Порожні параметри для emailForm: %v", "Empty parameters for emailForm: %v": "Empty parameters for emailForm: %v",
"Invalid Email receivers: %s": "Недійсні отримувачі Email: %s", "Invalid Email receivers: %s": "Invalid Email receivers: %s",
"Invalid phone receivers: %s": "Недійсні отримувачі телефону: %s" "Invalid phone receivers: %s": "Invalid phone receivers: %s"
}, },
"storage": { "storage": {
"The objectKey: %s is not allowed": "objectKey: %s не дозволено", "The objectKey: %s is not allowed": "The objectKey: %s is not allowed",
"The provider type: %s is not supported": "Тип провайдера: %s не підтримується" "The provider type: %s is not supported": "The provider type: %s is not supported"
},
"subscription": {
"Error": "Помилка"
}, },
"token": { "token": {
"Grant_type: %s is not supported in this application": "Grant_type: %s не підтримується в цьому додатку", "Grant_type: %s is not supported in this application": "Grant_type: %s is not supported in this application",
"Invalid application or wrong clientSecret": "Недійсний додаток або неправильний clientSecret", "Invalid application or wrong clientSecret": "Invalid application or wrong clientSecret",
"Invalid client_id": "Недійсний client_id", "Invalid client_id": "Invalid client_id",
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "Redirect URI: %s відсутній у списку дозволених", "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": "Токен не знайдено, недійсний accessToken" "Token not found, invalid accessToken": "Token not found, invalid accessToken"
}, },
"user": { "user": {
"Display name cannot be empty": "Відображуване ім’я не може бути порожнім", "Display name cannot be empty": "Display name cannot be empty",
"MFA email is enabled but email is empty": "MFA email увімкнено, але email порожній", "New password cannot contain blank space.": "New password cannot contain blank space."
"MFA phone is enabled but phone number is empty": "MFA телефон увімкнено, але номер телефону порожній", },
"New password cannot contain blank space.": "Новий пароль не може містити пробіли.", "user_upload": {
"the user's owner and name should not be empty": "власник ім’я користувача не повинні бути порожніми" "Failed to import users": "Failed to import users"
}, },
"util": { "util": {
"No application is found for userId: %s": "Не знайдено додаток для userId: %s", "No application is found for userId: %s": "No application is found for userId: %s",
"No provider for category: %s is found for application: %s": "Не знайдено провайдера категорії: %s для додатка: %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": "Провайдер: %s не знайдено" "The provider: %s is not found": "The provider: %s is not found"
}, },
"verification": { "verification": {
"Invalid captcha provider.": "Недійсний провайдер captcha.", "Invalid captcha provider.": "Invalid captcha provider.",
"Phone number is invalid in your region %s": "Номер телефону недійсний у вашому регіоні %s", "Phone number is invalid in your region %s": "Phone number is invalid in your region %s",
"The verification code has already been used!": "Код підтвердження вже використано!", "The verification code has not been sent yet!": "The verification code has not been sent yet!",
"The verification code has not been sent yet!": "Код підтвердження ще не надіслано!", "The verification code has not been sent yet, or has already been used!": "The verification code has not been sent yet, or has already been used!",
"Turing test failed.": "Тест Тюрінга не пройдено.", "Turing test failed.": "Turing test failed.",
"Unable to get the email modify rule.": "Не вдалося отримати правило зміни email.", "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.": "Unable to get the phone modify rule.",
"Unknown type": "Невідомий тип", "Unknown type": "Unknown type",
"Wrong verification code!": "Неправильний код підтвердження!", "Wrong verification code!": "Wrong verification code!",
"You should verify your code in %d min!": "Ви маєте підтвердити код за %d хв!", "You should verify your code in %d min!": "You should verify your code in %d min!",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "lägg till en SMS-leverantör i listan \\\"Leverantörer\\\" för applikationen: %s", "please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "please add a SMS provider to the \\\"Providers\\\" list for the application: %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "lägg till en e-postleverantör i listan \\\"Leverantörer\\\" för applikationen: %s", "please add an Email provider to the \\\"Providers\\\" list for the application: %s": "please add an Email provider to the \\\"Providers\\\" list for the application: %s",
"the user does not exist, please sign up first": "користувача не існує, спочатку зареєструйтесь" "the user does not exist, please sign up first": "the user does not exist, please sign up first"
}, },
"webauthn": { "webauthn": {
"Found no credentials for this user": "Found no credentials for this user", "Found no credentials for this user": "Found no credentials for this user",
"Please call WebAuthnSigninBegin first": "Спочатку викличте WebAuthnSigninBegin" "Please call WebAuthnSigninBegin first": "Please call WebAuthnSigninBegin first"
} }
} }

View File

@@ -7,7 +7,6 @@
}, },
"auth": { "auth": {
"Challenge method should be S256": "Phương pháp thách thức nên là S256", "Challenge method should be S256": "Phương pháp thách thức nên là S256",
"DeviceCode Invalid": "Mã thiết bị không hợp lệ",
"Failed to create user, user information is invalid: %s": "Không thể tạo người dùng, thông tin người dùng không hợp lệ: %s", "Failed to create user, user information is invalid: %s": "Không thể tạo người dùng, thông tin người dùng không hợp lệ: %s",
"Failed to login in: %s": "Đăng nhập không thành công: %s", "Failed to login in: %s": "Đăng nhập không thành công: %s",
"Invalid token": "Mã thông báo không hợp lệ", "Invalid token": "Mã thông báo không hợp lệ",
@@ -16,95 +15,74 @@
"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": "Tài khoản cho nhà cung cấp: %s và tên người dùng: %s (%s) không tồn tại và không được phép đăng ký như một tài khoản mới, vui lòng liên hệ với bộ phận hỗ trợ công nghệ thông tin của bạn", "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": "Tài khoản cho nhà cung cấp: %s và tên người dùng: %s (%s) không tồn tại và không được phép đăng ký như một tài khoản mới, vui lòng liên hệ với bộ phận hỗ trợ công nghệ thông tin của bạn",
"The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "Tài khoản cho nhà cung cấp: %s và tên người dùng: %s (%s) đã được liên kết với tài khoản khác: %s (%s)", "The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "Tài khoản cho nhà cung cấp: %s và tên người dùng: %s (%s) đã được liên kết với tài khoản khác: %s (%s)",
"The application: %s does not exist": "Ứng dụng: %s không tồn tại", "The application: %s does not exist": "Ứng dụng: %s không tồn tại",
"The application: %s has disabled users to signin": "The application: %s has disabled users to signin", "The login method: login with LDAP is not enabled for the application": "The login method: login with LDAP is not enabled for the application",
"The login method: login with LDAP is not enabled for the application": "Phương thức đăng nhập bằng LDAP chưa được bật cho ứng dụng", "The login method: login with SMS is not enabled for the application": "The login method: login with SMS is not enabled for the application",
"The login method: login with SMS is not enabled for the application": "Phương thức đăng nhập bằng SMS chưa được bật cho ứng dụng", "The login method: login with email is not enabled for the application": "The login method: login with email is not enabled for the application",
"The login method: login with email is not enabled for the application": "Phương thức đăng nhập bằng email chưa được bật cho ứng dụng", "The login method: login with face is not enabled for the application": "The login method: login with face is not enabled for the application",
"The login method: login with face is not enabled for the application": "Phương thức đăng nhập bằng khuôn mặt chưa được bật cho ứng dụng",
"The login method: login with password is not enabled for the application": "Phương thức đăng nhập: đăng nhập bằng mật khẩu không được kích hoạt cho ứng dụng", "The login method: login with password is not enabled for the application": "Phương thức đăng nhập: đăng nhập bằng mật khẩu không được kích hoạt cho ứng dụng",
"The organization: %s does not exist": "Tổ chức: %s không tồn tại", "The organization: %s does not exist": "The organization: %s does not exist",
"The organization: %s has disabled users to signin": "The organization: %s has disabled users to signin",
"The provider: %s does not exist": "Nhà cung cấp: %s không tồn tại",
"The provider: %s is not enabled for the application": "Nhà cung cấp: %s không được kích hoạt cho ứng dụng", "The provider: %s is not enabled for the application": "Nhà cung cấp: %s không được kích hoạt cho ứng dụng",
"Unauthorized operation": "Hoạt động không được ủy quyền", "Unauthorized operation": "Hoạt động không được ủy quyền",
"Unknown authentication type (not password or provider), form = %s": "Loại xác thực không xác định (không phải mật khẩu hoặc nhà cung cấp), biểu mẫu = %s", "Unknown authentication type (not password or provider), form = %s": "Loại xác thực không xác định (không phải mật khẩu hoặc nhà cung cấp), biểu mẫu = %s",
"User's tag: %s is not listed in the application's tags": "Thẻ của người dùng: %s không nằm trong danh sách thẻ của ứng dụng", "User's tag: %s is not listed in the application's tags": "User's tag: %s is not listed in the application's tags",
"UserCode Expired": "Mã người dùng đã hết hạn", "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing"
"UserCode Invalid": "Mã người dùng không hợp lệ",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "người dùng trả phí %s không có đăng ký đang hoạt động hoặc đang chờ và ứng dụng: %s không có giá mặc định",
"the application for user %s is not found": "không tìm thấy ứng dụng cho người dùng %s",
"the organization: %s is not found": "không tìm thấy tổ chức: %s"
}, },
"cas": { "cas": {
"Service %s and %s do not match": "Dịch sang tiếng Việt: Dịch vụ %s và %s không khớp" "Service %s and %s do not match": "Dịch sang tiếng Việt: Dịch vụ %s và %s không khớp"
}, },
"check": { "check": {
"%s does not meet the CIDR format requirements: %s": "%s không đáp ứng yêu cầu định dạng CIDR: %s",
"Affiliation cannot be blank": "Tình trạng liên kết không thể để trống", "Affiliation cannot be blank": "Tình trạng liên kết không thể để trống",
"CIDR for IP: %s should not be empty": "CIDR cho IP: %s không được để trống", "Default code does not match the code's matching rules": "Default code does not match the code's matching rules",
"Default code does not match the code's matching rules": "Mã mặc định không khớp với quy tắc khớp mã",
"DisplayName cannot be blank": "Tên hiển thị không thể để trống", "DisplayName cannot be blank": "Tên hiển thị không thể để trống",
"DisplayName is not valid real name": "DisplayName không phải là tên thật hợp lệ", "DisplayName is not valid real name": "DisplayName không phải là tên thật hợp lệ",
"Email already exists": "Email đã tồn tại", "Email already exists": "Email đã tồn tại",
"Email cannot be empty": "Email không thể để trống", "Email cannot be empty": "Email không thể để trống",
"Email is invalid": "Địa chỉ email không hợp lệ", "Email is invalid": "Địa chỉ email không hợp lệ",
"Empty username.": "Tên đăng nhập trống.", "Empty username.": "Tên đăng nhập trống.",
"Face data does not exist, cannot log in": "Dữ liệu khuôn mặt không tồn tại, không thể đăng nhập", "Face data does not exist, cannot log in": "Face data does not exist, cannot log in",
"Face data mismatch": "Dữ liệu khuôn mặt không khớp", "Face data mismatch": "Face data mismatch",
"Failed to parse client IP: %s": "Không thể phân tích IP khách: %s",
"FirstName cannot be blank": "Tên không được để trống", "FirstName cannot be blank": "Tên không được để trống",
"Invitation code cannot be blank": "Mã mời không được để trống", "Invitation code cannot be blank": "Invitation code cannot be blank",
"Invitation code exhausted": "Mã mời đã hết", "Invitation code exhausted": "Invitation code exhausted",
"Invitation code is invalid": "Mã mời không hợp lệ", "Invitation code is invalid": "Invitation code is invalid",
"Invitation code suspended": "Mã mời đã bị tạm ngưng", "Invitation code suspended": "Invitation code suspended",
"LDAP user name or password incorrect": "Tên người dùng hoặc mật khẩu Ldap không chính xác", "LDAP user name or password incorrect": "Tên người dùng hoặc mật khẩu Ldap không chính xác",
"LastName cannot be blank": "Họ không thể để trống", "LastName cannot be blank": "Họ không thể để trống",
"Multiple accounts with same uid, please check your ldap server": "Nhiều tài khoản với cùng một uid, vui lòng kiểm tra máy chủ ldap của bạn", "Multiple accounts with same uid, please check your ldap server": "Nhiều tài khoản với cùng một uid, vui lòng kiểm tra máy chủ ldap của bạn",
"Organization does not exist": "Tổ chức không tồn tại", "Organization does not exist": "Tổ chức không tồn tại",
"Password cannot be empty": "Mật khẩu không được để trống",
"Phone already exists": "Điện thoại đã tồn tại", "Phone already exists": "Điện thoại đã tồn tại",
"Phone cannot be empty": "Điện thoại không thể để trống", "Phone cannot be empty": "Điện thoại không thể để trống",
"Phone number is invalid": "Số điện thoại không hợp lệ", "Phone number is invalid": "Số điện thoại không hợp lệ",
"Please register using the email corresponding to the invitation code": "Vui lòng đăng ký bằng email tương ứng với mã mời", "Please register using the email corresponding to the invitation code": "Please register using the email corresponding to the invitation code",
"Please register using the phone corresponding to the invitation code": "Vui lòng đăng ký bằng số điện thoại tương ứng với mã mời", "Please register using the phone corresponding to the invitation code": "Please register using the phone corresponding to the invitation code",
"Please register using the username corresponding to the invitation code": "Vui lòng đăng ký bằng tên người dùng tương ứng với mã mời", "Please register using the username corresponding to the invitation code": "Please register using the username corresponding to the invitation code",
"Session outdated, please login again": "Phiên làm việc hết hạn, vui lòng đăng nhập lại", "Session outdated, please login again": "Phiên làm việc hết hạn, vui lòng đăng nhập lại",
"The invitation code has already been used": "Mã mời đã được sử dụng", "The invitation code has already been used": "The invitation code has already been used",
"The user is forbidden to sign in, please contact the administrator": "Người dùng bị cấm đăng nhập, vui lòng liên hệ với quản trị viên", "The user is forbidden to sign in, please contact the administrator": "Người dùng bị cấm đăng nhập, vui lòng liên hệ với quản trị viên",
"The user: %s doesn't exist in LDAP server": "Người dùng: %s không tồn tại trên máy chủ LDAP", "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.": "Tên người dùng chỉ có thể chứa các ký tự chữ và số, gạch dưới hoặc gạch ngang, không được có hai ký tự gạch dưới hoặc gạch ngang liền kề và không được bắt đầu hoặc kết thúc bằng dấu gạch dưới hoặc gạch ngang.", "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.": "Tên người dùng chỉ có thể chứa các ký tự chữ và số, gạch dưới hoặc gạch ngang, không được có hai ký tự gạch dưới hoặc gạch ngang liền kề và không được bắt đầu hoặc kết thúc bằng dấu gạch dưới hoặc gạch ngang.",
"The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "Giá trị \\\"%s\\\" cho trường tài khoản \\\"%s\\\" không khớp với biểu thức chính quy của mục tài khoản", "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "Giá trị \\\"%s\\\" cho trường đăng ký \\\"%s\\\" không khớp với biểu thức chính quy của mục đăng ký trong ứng dụng \\\"%s\\\"", "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"",
"Username already exists": "Tên đăng nhập đã tồn tại", "Username already exists": "Tên đăng nhập đã tồn tại",
"Username cannot be an email address": "Tên người dùng không thể là địa chỉ email", "Username cannot be an email address": "Tên người dùng không thể là địa chỉ email",
"Username cannot contain white spaces": "Tên người dùng không thể chứa khoảng trắng", "Username cannot contain white spaces": "Tên người dùng không thể chứa khoảng trắng",
"Username cannot start with a digit": "Tên người dùng không thể bắt đầu bằng chữ số", "Username cannot start with a digit": "Tên người dùng không thể bắt đầu bằng chữ số",
"Username is too long (maximum is 255 characters).": "Tên đăng nhập quá dài (tối đa là 255 ký tự).", "Username is too long (maximum is 39 characters).": "Tên đăng nhập quá dài (tối đa là 39 ký tự).",
"Username must have at least 2 characters": "Tên đăng nhập phải có ít nhất 2 ký tự", "Username must have at least 2 characters": "Tên đăng nhập phải có ít nhất 2 ký tự",
"Username supports email format. Also 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. Also pay attention to the email format.": "Tên người dùng hỗ trợ định dạng email. Ngoài ra, tên người dùng chỉ có thể chứa ký tự chữ và số, gạch dưới hoặc gạch ngang, không được có gạch ngang hoặc gạch dưới liên tiếp và không được bắt đầu hoặc kết thúc bằng gạch ngang hoặc gạch dưới. Đồng thời lưu ý định dạng email.",
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Bạn đã nhập sai mật khẩu hoặc mã quá nhiều lần, vui lòng đợi %d phút và thử lại", "You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Bạn đã nhập sai mật khẩu hoặc mã quá nhiều lần, vui lòng đợi %d phút và thử lại",
"Your IP address: %s has been banned according to the configuration of: ": "Địa chỉ IP của bạn: %s đã bị cấm theo cấu hình của: ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "Mật khẩu của bạn đã hết hạn. Vui lòng đặt lại mật khẩu bằng cách nhấp vào \\\"Quên mật khẩu\\\"",
"Your region is not allow to signup by phone": "Vùng của bạn không được phép đăng ký bằng điện thoại", "Your region is not allow to signup by phone": "Vùng của bạn không được phép đăng ký bằng điện thoại",
"password or code is incorrect": "mật khẩu hoặc mã không đúng", "password or code is incorrect": "password or code is incorrect",
"password or code is incorrect, you have %s remaining chances": "Mật khẩu hoặc mã không chính xác, bạn còn %s lần cơ hội", "password or code is incorrect, you have %d remaining chances": "Mật khẩu hoặc mã không chính xác, bạn còn %d lần cơ hội",
"unsupported password type: %s": "Loại mật khẩu không được hỗ trợ: %s" "unsupported password type: %s": "Loại mật khẩu không được hỗ trợ: %s"
}, },
"enforcer": {
"the adapter: %s is not found": "không tìm thấy adapter: %s"
},
"general": { "general": {
"Failed to import groups": "Không thể nhập nhóm",
"Failed to import users": "Không thể nhập người dùng",
"Missing parameter": "Thiếu tham số", "Missing parameter": "Thiếu tham số",
"Only admin user can specify user": "Chỉ người dùng quản trị mới có thể chỉ định người dùng",
"Please login first": "Vui lòng đăng nhập trước", "Please login first": "Vui lòng đăng nhập trước",
"The organization: %s should have one application at least": "Tổ chức: %s cần có ít nhất một ứng dụng", "The organization: %s should have one application at least": "The organization: %s should have one application at least",
"The user: %s doesn't exist": "Người dùng: %s không tồn tại", "The user: %s doesn't exist": "Người dùng: %s không tồn tại",
"Wrong userId": "ID người dùng sai",
"don't support captchaProvider: ": "không hỗ trợ captchaProvider: ", "don't support captchaProvider: ": "không hỗ trợ captchaProvider: ",
"this operation is not allowed in demo mode": "thao tác này không được phép trong chế độ demo", "this operation is not allowed in demo mode": "this operation is not allowed in demo mode",
"this operation requires administrator to perform": "thao tác này yêu cầu quản trị viên thực hiện" "this operation requires administrator to perform": "this operation requires administrator to perform"
}, },
"ldap": { "ldap": {
"Ldap server exist": "Máy chủ LDAP tồn tại" "Ldap server exist": "Máy chủ LDAP tồn tại"
@@ -120,11 +98,10 @@
"organization": { "organization": {
"Only admin can modify the %s.": "Chỉ những người quản trị mới có thể sửa đổi %s.", "Only admin can modify the %s.": "Chỉ những người quản trị mới có thể sửa đổi %s.",
"The %s is immutable.": "%s không thể thay đổi được.", "The %s is immutable.": "%s không thể thay đổi được.",
"Unknown modify rule %s.": "Quy tắc thay đổi không xác định %s.", "Unknown modify rule %s.": "Quy tắc thay đổi không xác định %s."
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "Thêm người dùng mới vào tổ chức 'built-in' (tích hợp sẵn) hiện đang bị vô hiệu hóa. Lưu ý: Tất cả người dùng trong tổ chức 'built-in' đều là quản trị viên toàn cầu trong Casdoor. Xem tài liệu: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. Nếu bạn vẫn muốn tạo người dùng cho tổ chức 'built-in', hãy truy cập trang cài đặt của tổ chức và bật tùy chọn 'Có đồng ý quyền đặc biệt'."
}, },
"permission": { "permission": {
"The permission: \\\"%s\\\" doesn't exist": "Quyền: \\\"%s\\\" không tồn tại" "The permission: \\\"%s\\\" doesn't exist": "The permission: \\\"%s\\\" doesn't exist"
}, },
"provider": { "provider": {
"Invalid application id": "Sai ID ứng dụng", "Invalid application id": "Sai ID ứng dụng",
@@ -149,9 +126,6 @@
"The objectKey: %s is not allowed": "Khóa đối tượng: %s không được phép", "The objectKey: %s is not allowed": "Khóa đối tượng: %s không được phép",
"The provider type: %s is not supported": "Loại nhà cung cấp: %s không được hỗ trợ" "The provider type: %s is not supported": "Loại nhà cung cấp: %s không được hỗ trợ"
}, },
"subscription": {
"Error": "Lỗi"
},
"token": { "token": {
"Grant_type: %s is not supported in this application": "Loại cấp phép: %s không được hỗ trợ trong ứng dụng này", "Grant_type: %s is not supported in this application": "Loại cấp phép: %s không được hỗ trợ trong ứng dụng này",
"Invalid application or wrong clientSecret": "Đơn đăng ký không hợp lệ hoặc sai clientSecret", "Invalid application or wrong clientSecret": "Đơn đăng ký không hợp lệ hoặc sai clientSecret",
@@ -161,10 +135,10 @@
}, },
"user": { "user": {
"Display name cannot be empty": "Tên hiển thị không thể trống", "Display name cannot be empty": "Tên hiển thị không thể trống",
"MFA email is enabled but email is empty": "MFA email đã bật nhưng email trng", "New password cannot contain blank space.": "Mật khẩu mới không thể chứa dấu trng."
"MFA phone is enabled but phone number is empty": "MFA điện thoại đã bật nhưng số điện thoại trống", },
"New password cannot contain blank space.": "Mật khẩu mới không thể chứa dấu trắng.", "user_upload": {
"the user's owner and name should not be empty": "chủ sở hữu và tên người dùng không được để trống" "Failed to import users": "Không thể nhập người dùng"
}, },
"util": { "util": {
"No application is found for userId: %s": "Không tìm thấy ứng dụng cho ID người dùng: %s", "No application is found for userId: %s": "Không tìm thấy ứng dụng cho ID người dùng: %s",
@@ -174,20 +148,20 @@
"verification": { "verification": {
"Invalid captcha provider.": "Nhà cung cấp captcha không hợp lệ.", "Invalid captcha provider.": "Nhà cung cấp captcha không hợp lệ.",
"Phone number is invalid in your region %s": "Số điện thoại không hợp lệ trong vùng của bạn %s", "Phone number is invalid in your region %s": "Số điện thoại không hợp lệ trong vùng của bạn %s",
"The verification code has already been used!": "Mã xác thực đã được sử dụng!", "The verification code has not been sent yet!": "The verification code has not been sent yet!",
"The verification code has not been sent yet!": "Mã xác thực chưa được gửi!", "The verification code has not been sent yet, or has already been used!": "The verification code has not been sent yet, or has already been used!",
"Turing test failed.": "Kiểm định Turing thất bại.", "Turing test failed.": "Kiểm định Turing thất bại.",
"Unable to get the email modify rule.": "Không thể lấy quy tắc sửa đổi email.", "Unable to get the email modify rule.": "Không thể lấy quy tắc sửa đổi email.",
"Unable to get the phone modify rule.": "Không thể thay đổi quy tắc trên điện thoại.", "Unable to get the phone modify rule.": "Không thể thay đổi quy tắc trên điện thoại.",
"Unknown type": "Loại không xác định", "Unknown type": "Loại không xác định",
"Wrong verification code!": "Mã xác thực sai!", "Wrong verification code!": "Mã xác thực sai!",
"You should verify your code in %d min!": "Bạn nên kiểm tra mã của mình trong %d phút!", "You should verify your code in %d min!": "Bạn nên kiểm tra mã của mình trong %d phút!",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "vui lòng thêm nhà cung cấp SMS vào danh sách \\\"Providers\\\" cho ứng dụng: %s", "please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "please add a SMS provider to the \\\"Providers\\\" list for the application: %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "vui lòng thêm nhà cung cấp Email vào danh sách \\\"Providers\\\" cho ứng dụng: %s", "please add an Email provider to the \\\"Providers\\\" list for the application: %s": "please add an Email provider to the \\\"Providers\\\" list for the application: %s",
"the user does not exist, please sign up first": "Người dùng không tồn tại, vui lòng đăng ký trước" "the user does not exist, please sign up first": "Người dùng không tồn tại, vui lòng đăng ký trước"
}, },
"webauthn": { "webauthn": {
"Found no credentials for this user": "Found no credentials for this user", "Found no credentials for this user": "Không tìm thấy thông tin xác thực cho người dùng này",
"Please call WebAuthnSigninBegin first": "Vui lòng gọi WebAuthnSigninBegin trước" "Please call WebAuthnSigninBegin first": "Vui lòng gọi WebAuthnSigninBegin trước"
} }
} }

View File

@@ -7,7 +7,6 @@
}, },
"auth": { "auth": {
"Challenge method should be S256": "Challenge方法应该为S256", "Challenge method should be S256": "Challenge方法应该为S256",
"DeviceCode Invalid": "DeviceCode 无效",
"Failed to create user, user information is invalid: %s": "创建用户失败,用户信息无效: %s", "Failed to create user, user information is invalid: %s": "创建用户失败,用户信息无效: %s",
"Failed to login in: %s": "登录失败: %s", "Failed to login in: %s": "登录失败: %s",
"Invalid token": "无效token", "Invalid token": "无效token",
@@ -16,32 +15,23 @@
"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": "提供商账户: %s 与用户名: %s (%s) 不存在且 不允许注册新账户, 请联系IT支持", "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": "提供商账户: %s 与用户名: %s (%s) 不存在且 不允许注册新账户, 请联系IT支持",
"The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "提供商账户: %s与用户名: %s (%s)已经与其他账户绑定: %s (%s)", "The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "提供商账户: %s与用户名: %s (%s)已经与其他账户绑定: %s (%s)",
"The application: %s does not exist": "应用%s不存在", "The application: %s does not exist": "应用%s不存在",
"The application: %s has disabled users to signin": "应用: %s 禁止用户登录",
"The login method: login with LDAP is not enabled for the application": "该应用禁止采用LDAP登录方式", "The login method: login with LDAP is not enabled for the application": "该应用禁止采用LDAP登录方式",
"The login method: login with SMS is not enabled for the application": "该应用禁止采用短信登录方式", "The login method: login with SMS is not enabled for the application": "该应用禁止采用短信登录方式",
"The login method: login with email is not enabled for the application": "该应用禁止采用邮箱登录方式", "The login method: login with email is not enabled for the application": "该应用禁止采用邮箱登录方式",
"The login method: login with face is not enabled for the application": "该应用禁止采用人脸登录", "The login method: login with face is not enabled for the application": "该应用禁止采用人脸登录",
"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 organization: %s does not exist": "组织: %s 不存在", "The organization: %s does not exist": "组织: %s 不存在",
"The organization: %s has disabled users to signin": "组织: %s 禁止用户登录",
"The provider: %s does not exist": "提供商: %s 不存在",
"The provider: %s is not enabled for the application": "该应用的提供商: %s未被启用", "The provider: %s is not enabled for the application": "该应用的提供商: %s未被启用",
"Unauthorized operation": "未授权的操作", "Unauthorized operation": "未授权的操作",
"Unknown authentication type (not password or provider), form = %s": "未知的认证类型(非密码或第三方提供商):%s", "Unknown authentication type (not password or provider), form = %s": "未知的认证类型(非密码或第三方提供商):%s",
"User's tag: %s is not listed in the application's tags": "用户的标签: %s不在该应用的标签列表中", "User's tag: %s is not listed in the application's tags": "用户的标签: %s不在该应用的标签列表中",
"UserCode Expired": "用户代码已过期", "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s 没有激活或正在等待订阅并且应用: %s 没有默认值"
"UserCode Invalid": "用户代码无效",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s 没有激活或正在等待订阅并且应用: %s 没有默认值",
"the application for user %s is not found": "未找到用户 %s 的应用程序",
"the organization: %s is not found": "组织: %s 不存在"
}, },
"cas": { "cas": {
"Service %s and %s do not match": "服务%s与%s不匹配" "Service %s and %s do not match": "服务%s与%s不匹配"
}, },
"check": { "check": {
"%s does not meet the CIDR format requirements: %s": "%s 不符合 CIDR 的格式要求: %s",
"Affiliation cannot be blank": "工作单位不可为空", "Affiliation cannot be blank": "工作单位不可为空",
"CIDR for IP: %s should not be empty": "IP 的 CIDR 格式:%s 不能为空",
"Default code does not match the code's matching rules": "邀请码默认值和邀请码规则不匹配", "Default code does not match the code's matching rules": "邀请码默认值和邀请码规则不匹配",
"DisplayName cannot be blank": "显示名称不可为空", "DisplayName cannot be blank": "显示名称不可为空",
"DisplayName is not valid real name": "显示名称必须是真实姓名", "DisplayName is not valid real name": "显示名称必须是真实姓名",
@@ -51,7 +41,6 @@
"Empty username.": "用户名不可为空", "Empty username.": "用户名不可为空",
"Face data does not exist, cannot log in": "未录入人脸数据,无法登录", "Face data does not exist, cannot log in": "未录入人脸数据,无法登录",
"Face data mismatch": "人脸不匹配", "Face data mismatch": "人脸不匹配",
"Failed to parse client IP: %s": "无法解析客户端 IP 地址: %s",
"FirstName cannot be blank": "名不可以为空", "FirstName cannot be blank": "名不可以为空",
"Invitation code cannot be blank": "邀请码不能为空", "Invitation code cannot be blank": "邀请码不能为空",
"Invitation code exhausted": "邀请码使用次数已耗尽", "Invitation code exhausted": "邀请码使用次数已耗尽",
@@ -61,7 +50,6 @@
"LastName cannot be blank": "姓不可以为空", "LastName cannot be blank": "姓不可以为空",
"Multiple accounts with same uid, please check your ldap server": "多个帐户具有相同的uid请检查您的 LDAP 服务器", "Multiple accounts with same uid, please check your ldap server": "多个帐户具有相同的uid请检查您的 LDAP 服务器",
"Organization does not exist": "组织不存在", "Organization does not exist": "组织不存在",
"Password cannot be empty": "密码不能为空",
"Phone already exists": "该手机号已存在", "Phone already exists": "该手机号已存在",
"Phone cannot be empty": "手机号不可为空", "Phone cannot be empty": "手机号不可为空",
"Phone number is invalid": "无效手机号", "Phone number is invalid": "无效手机号",
@@ -79,29 +67,19 @@
"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 255 characters).": "用户名过长(最大允许长度为255个字符)", "Username is too long (maximum is 39 characters).": "用户名过长(最大允许长度为39个字符)",
"Username must have at least 2 characters": "用户名至少要有2个字符", "Username must have at least 2 characters": "用户名至少要有2个字符",
"Username supports email format. Also 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. Also pay attention to the email format.": "用户名支持电子邮件格式。此外,用户名只能包含字母数字字符、下划线或连字符,不能包含连续的连字符或下划线,也不能以连字符或下划线开头或结尾。同时请注意电子邮件格式。",
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "密码错误次数已达上限,请在 %d 分后重试", "You have entered the wrong password or code too many times, please wait for %d minutes and try again": "密码错误次数已达上限,请在 %d 分后重试",
"Your IP address: %s has been banned according to the configuration of: ": "您的IP地址%s 根据以下配置已被禁止: ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "您的密码已过期。请点击 \\\"忘记密码\\\" 以重置密码",
"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 %s remaining chances": "密码错误,您还有 %s 次尝试的机会", "password or code is incorrect, you have %d remaining chances": "密码错误,您还有 %d 次尝试的机会",
"unsupported password type: %s": "不支持的密码类型: %s" "unsupported password type: %s": "不支持的密码类型: %s"
}, },
"enforcer": {
"the adapter: %s is not found": "适配器: %s 未找到"
},
"general": { "general": {
"Failed to import groups": "导入群组失败",
"Failed to import users": "导入用户失败",
"Missing parameter": "缺少参数", "Missing parameter": "缺少参数",
"Only admin user can specify user": "仅管理员用户可以指定用户",
"Please login first": "请先登录", "Please login first": "请先登录",
"The organization: %s should have one application at least": "组织: %s 应该拥有至少一个应用", "The organization: %s should have one application at least": "组织: %s 应该拥有至少一个应用",
"The user: %s doesn't exist": "用户: %s不存在", "The user: %s doesn't exist": "用户: %s不存在",
"Wrong userId": "错误的 userId",
"don't support captchaProvider: ": "不支持验证码提供商: ", "don't support captchaProvider: ": "不支持验证码提供商: ",
"this operation is not allowed in demo mode": "demo模式下不允许该操作", "this operation is not allowed in demo mode": "demo模式下不允许该操作",
"this operation requires administrator to perform": "只有管理员才能进行此操作" "this operation requires administrator to perform": "只有管理员才能进行此操作"
@@ -120,8 +98,7 @@
"organization": { "organization": {
"Only admin can modify the %s.": "仅允许管理员可以修改%s", "Only admin can modify the %s.": "仅允许管理员可以修改%s",
"The %s is immutable.": "%s 是不可变的", "The %s is immutable.": "%s 是不可变的",
"Unknown modify rule %s.": "未知的修改规则: %s", "Unknown modify rule %s.": "未知的修改规则: %s"
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "目前,向'built-in'组织添加新用户的功能已禁用。请注意:'built-in'组织中的所有用户均为Casdoor的全局管理员。请参阅文档https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself。如果您仍希望为built-in组织创建用户请转到该组织的设置页面并启用“特权同意”选项。"
}, },
"permission": { "permission": {
"The permission: \\\"%s\\\" doesn't exist": "权限: \\\"%s\\\" 不存在" "The permission: \\\"%s\\\" doesn't exist": "权限: \\\"%s\\\" 不存在"
@@ -149,9 +126,6 @@
"The objectKey: %s is not allowed": "objectKey: %s被禁止", "The objectKey: %s is not allowed": "objectKey: %s被禁止",
"The provider type: %s is not supported": "不支持的提供商类型: %s" "The provider type: %s is not supported": "不支持的提供商类型: %s"
}, },
"subscription": {
"Error": "错误"
},
"token": { "token": {
"Grant_type: %s is not supported in this application": "该应用不支持Grant_type: %s", "Grant_type: %s is not supported in this application": "该应用不支持Grant_type: %s",
"Invalid application or wrong clientSecret": "无效应用或错误的clientSecret", "Invalid application or wrong clientSecret": "无效应用或错误的clientSecret",
@@ -161,10 +135,10 @@
}, },
"user": { "user": {
"Display name cannot be empty": "显示名称不可为空", "Display name cannot be empty": "显示名称不可为空",
"MFA email is enabled but email is empty": "MFA 电子邮件已启用,但电子邮件为空", "New password cannot contain blank space.": "新密码不可以包含空格"
"MFA phone is enabled but phone number is empty": "MFA 电话已启用,但电话号码为空", },
"New password cannot contain blank space.": "新密码不可以包含空格", "user_upload": {
"the user's owner and name should not be empty": "用户的组织和名称不能为空" "Failed to import users": "导入用户失败"
}, },
"util": { "util": {
"No application is found for userId: %s": "未找到用户: %s的应用", "No application is found for userId: %s": "未找到用户: %s的应用",
@@ -174,8 +148,8 @@
"verification": { "verification": {
"Invalid captcha provider.": "非法的验证码提供商", "Invalid captcha provider.": "非法的验证码提供商",
"Phone number is invalid in your region %s": "您所在地区的电话号码无效 %s", "Phone number is invalid in your region %s": "您所在地区的电话号码无效 %s",
"The verification code has already been used!": "验证码已使用过!",
"The verification code has not been sent yet!": "验证码未发送!", "The verification code has not been sent yet!": "验证码未发送!",
"The verification code has not been sent yet, or has already been used!": "验证码未发送或已被使用!",
"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.": "无法获取手机号修改规则",
@@ -187,7 +161,7 @@
"the user does not exist, please sign up first": "用户不存在,请先注册" "the user does not exist, please sign up first": "用户不存在,请先注册"
}, },
"webauthn": { "webauthn": {
"Found no credentials for this user": "Found no credentials for this user", "Found no credentials for this user": "该用户没有 WebAuthn 凭据",
"Please call WebAuthnSigninBegin first": "请先调用WebAuthnSigninBegin函数" "Please call WebAuthnSigninBegin first": "请先调用WebAuthnSigninBegin函数"
} }
} }

View File

@@ -19,21 +19,14 @@ import (
"fmt" "fmt"
"strings" "strings"
"github.com/casdoor/casdoor/conf"
"github.com/casdoor/casdoor/util" "github.com/casdoor/casdoor/util"
) )
var enableErrorMask = false
//go:embed locales/*/data.json //go:embed locales/*/data.json
var f embed.FS var f embed.FS
var langMap = make(map[string]map[string]map[string]string) // for example : langMap[en][account][Invalid information] = Invalid information var langMap = make(map[string]map[string]map[string]string) // for example : langMap[en][account][Invalid information] = Invalid information
func init() {
enableErrorMask = conf.GetConfigBool("enableErrorMask")
}
func getI18nFilePath(category string, language string) string { func getI18nFilePath(category string, language string) string {
if category == "backend" { if category == "backend" {
return fmt.Sprintf("../i18n/locales/%s/data.json", language) return fmt.Sprintf("../i18n/locales/%s/data.json", language)
@@ -81,15 +74,6 @@ func applyData(data1 *I18nData, data2 *I18nData) {
} }
func Translate(language string, errorText string) string { func Translate(language string, errorText string) string {
modified := false
if enableErrorMask {
if errorText == "general:The user: %s doesn't exist" ||
errorText == "check:password or code is incorrect, you have %s remaining chances" {
modified = true
errorText = "check:password or code is incorrect"
}
}
tokens := strings.SplitN(errorText, ":", 2) tokens := strings.SplitN(errorText, ":", 2)
if !strings.Contains(errorText, ":") || len(tokens) != 2 { if !strings.Contains(errorText, ":") || len(tokens) != 2 {
return fmt.Sprintf("Translate error: the error text doesn't contain \":\", errorText = %s", errorText) return fmt.Sprintf("Translate error: the error text doesn't contain \":\", errorText = %s", errorText)
@@ -113,9 +97,5 @@ func Translate(language string, errorText string) string {
if res == "" { if res == "" {
res = tokens[1] res = tokens[1]
} }
if modified {
res += "%.s"
}
return res return res
} }

View File

@@ -200,7 +200,7 @@ func (idp *AlipayIdProvider) postWithBody(body interface{}, targetUrl string) ([
formData.Set("sign", sign) formData.Set("sign", sign)
resp, err := idp.Client.Post(targetUrl, "application/x-www-form-urlencoded;charset=utf-8", strings.NewReader(formData.Encode())) resp, err := idp.Client.PostForm(targetUrl, formData)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@@ -20,7 +20,6 @@ import (
"fmt" "fmt"
"io" "io"
"net/http" "net/http"
"strings"
"github.com/casdoor/casdoor/util" "github.com/casdoor/casdoor/util"
"github.com/mitchellh/mapstructure" "github.com/mitchellh/mapstructure"
@@ -65,25 +64,6 @@ func (idp *CustomIdProvider) GetToken(code string) (*oauth2.Token, error) {
return idp.Config.Exchange(ctx, code) return idp.Config.Exchange(ctx, code)
} }
func getNestedValue(data map[string]interface{}, path string) (interface{}, error) {
keys := strings.Split(path, ".")
var val interface{} = data
for _, key := range keys {
m, ok := val.(map[string]interface{})
if !ok {
return nil, fmt.Errorf("path '%s' is not valid: %s is not a map", path, key)
}
val, ok = m[key]
if !ok {
return nil, fmt.Errorf("key '%s' not found in path '%s'", key, path)
}
}
return val, nil
}
type CustomUserInfo struct { type CustomUserInfo struct {
Id string `mapstructure:"id"` Id string `mapstructure:"id"`
Username string `mapstructure:"username"` Username string `mapstructure:"username"`
@@ -128,11 +108,11 @@ func (idp *CustomIdProvider) GetUserInfo(token *oauth2.Token) (*UserInfo, error)
// map user info // map user info
for k, v := range idp.UserMapping { for k, v := range idp.UserMapping {
val, err := getNestedValue(dataMap, v) _, ok := dataMap[v]
if err != nil { if !ok {
return nil, fmt.Errorf("cannot find %s in user from custom provider: %v", v, err) return nil, fmt.Errorf("cannot find %s in user from custom provider", v)
} }
dataMap[k] = val dataMap[k] = dataMap[v]
} }
// try to parse id to string // try to parse id to string

View File

@@ -136,12 +136,12 @@ func (idp *DingTalkIdProvider) GetUserInfo(token *oauth2.Token) (*UserInfo, erro
dtUserInfo := &DingTalkUserResponse{} dtUserInfo := &DingTalkUserResponse{}
accessToken := token.AccessToken accessToken := token.AccessToken
request, err := http.NewRequest("GET", idp.Config.Endpoint.AuthURL, nil) reqest, err := http.NewRequest("GET", idp.Config.Endpoint.AuthURL, nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
request.Header.Add("x-acs-dingtalk-access-token", accessToken) reqest.Header.Add("x-acs-dingtalk-access-token", accessToken)
resp, err := idp.Client.Do(request) resp, err := idp.Client.Do(reqest)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@@ -190,7 +190,7 @@ func (idp *DouyinIdProvider) GetUserInfo(token *oauth2.Token) (*UserInfo, error)
userInfo := UserInfo{ userInfo := UserInfo{
Id: douyinUserInfo.Data.OpenId, Id: douyinUserInfo.Data.OpenId,
Username: douyinUserInfo.Data.OpenId, Username: douyinUserInfo.Data.Nickname,
DisplayName: douyinUserInfo.Data.Nickname, DisplayName: douyinUserInfo.Data.Nickname,
AvatarUrl: douyinUserInfo.Data.Avatar, AvatarUrl: douyinUserInfo.Data.Avatar,
} }

View File

@@ -188,23 +188,10 @@ type GitHubUserInfo struct {
} `json:"plan"` } `json:"plan"`
} }
type GitHubUserEmailInfo struct {
Email string `json:"email"`
Primary bool `json:"primary"`
Verified bool `json:"verified"`
Visibility string `json:"visibility"`
}
type GitHubErrorInfo struct {
Message string `json:"message"`
DocumentationUrl string `json:"documentation_url"`
Status string `json:"status"`
}
func (idp *GithubIdProvider) GetUserInfo(token *oauth2.Token) (*UserInfo, error) { func (idp *GithubIdProvider) GetUserInfo(token *oauth2.Token) (*UserInfo, error) {
req, err := http.NewRequest("GET", "https://api.github.com/user", nil) req, err := http.NewRequest("GET", "https://api.github.com/user", nil)
if err != nil { if err != nil {
return nil, err panic(err)
} }
req.Header.Add("Authorization", "token "+token.AccessToken) req.Header.Add("Authorization", "token "+token.AccessToken)
resp, err := idp.Client.Do(req) resp, err := idp.Client.Do(req)
@@ -225,42 +212,6 @@ func (idp *GithubIdProvider) GetUserInfo(token *oauth2.Token) (*UserInfo, error)
return nil, err return nil, err
} }
if githubUserInfo.Email == "" {
reqEmail, err := http.NewRequest("GET", "https://api.github.com/user/emails", nil)
if err != nil {
return nil, err
}
reqEmail.Header.Add("Authorization", "token "+token.AccessToken)
respEmail, err := idp.Client.Do(reqEmail)
if err != nil {
return nil, err
}
defer respEmail.Body.Close()
emailBody, err := io.ReadAll(respEmail.Body)
if err != nil {
return nil, err
}
if respEmail.StatusCode != 200 {
var errMessage GitHubErrorInfo
err = json.Unmarshal(emailBody, &errMessage)
if err != nil {
return nil, err
}
fmt.Printf("GithubIdProvider:GetUserInfo() error, status code = %d, error message = %v\n", respEmail.StatusCode, errMessage)
} else {
var userEmails []GitHubUserEmailInfo
err = json.Unmarshal(emailBody, &userEmails)
if err != nil {
return nil, err
}
githubUserInfo.Email = idp.getEmailFromEmailsResult(userEmails)
}
}
userInfo := UserInfo{ userInfo := UserInfo{
Id: strconv.Itoa(githubUserInfo.Id), Id: strconv.Itoa(githubUserInfo.Id),
Username: githubUserInfo.Login, Username: githubUserInfo.Login,
@@ -297,27 +248,3 @@ func (idp *GithubIdProvider) postWithBody(body interface{}, url string) ([]byte,
return data, nil return data, nil
} }
func (idp *GithubIdProvider) getEmailFromEmailsResult(emailInfo []GitHubUserEmailInfo) string {
primaryEmail := ""
verifiedEmail := ""
for _, addr := range emailInfo {
if !addr.Verified || strings.Contains(addr.Email, "users.noreply.github.com") {
continue
}
if addr.Primary {
primaryEmail = addr.Email
break
} else if verifiedEmail == "" {
verifiedEmail = addr.Email
}
}
if primaryEmail != "" {
return primaryEmail
}
return verifiedEmail
}

View File

@@ -278,16 +278,9 @@ func NewGothIdProvider(providerType string, clientId string, clientSecret string
Session: &naver.Session{}, Session: &naver.Session{},
} }
case "Nextcloud": case "Nextcloud":
if hostUrl != "" { idp = GothIdProvider{
idp = GothIdProvider{ Provider: nextcloud.New(clientId, clientSecret, redirectUrl),
Provider: nextcloud.NewCustomisedDNS(clientId, clientSecret, redirectUrl, hostUrl), Session: &nextcloud.Session{},
Session: &nextcloud.Session{},
}
} else {
idp = GothIdProvider{
Provider: nextcloud.New(clientId, clientSecret, redirectUrl),
Session: &nextcloud.Session{},
}
} }
case "OneDrive": case "OneDrive":
idp = GothIdProvider{ idp = GothIdProvider{

View File

@@ -1,161 +0,0 @@
// Copyright 2024 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.
package idp
import (
"encoding/json"
"fmt"
"io"
"net/http"
"time"
"golang.org/x/oauth2"
)
type KwaiIdProvider struct {
Client *http.Client
Config *oauth2.Config
}
func NewKwaiIdProvider(clientId string, clientSecret string, redirectUrl string) *KwaiIdProvider {
idp := &KwaiIdProvider{}
idp.Config = idp.getConfig(clientId, clientSecret, redirectUrl)
return idp
}
func (idp *KwaiIdProvider) SetHttpClient(client *http.Client) {
idp.Client = client
}
func (idp *KwaiIdProvider) getConfig(clientId string, clientSecret string, redirectUrl string) *oauth2.Config {
endpoint := oauth2.Endpoint{
TokenURL: "https://open.kuaishou.com/oauth2/access_token",
AuthURL: "https://open.kuaishou.com/oauth2/authorize", // qr code: /oauth2/connect
}
config := &oauth2.Config{
Scopes: []string{"user_info"},
Endpoint: endpoint,
ClientID: clientId,
ClientSecret: clientSecret,
RedirectURL: redirectUrl,
}
return config
}
type KwaiTokenResp struct {
Result int `json:"result"`
ErrorMsg string `json:"error_msg"`
AccessToken string `json:"access_token"`
ExpiresIn int `json:"expires_in"`
RefreshToken string `json:"refresh_token"`
RefreshTokenExpiresIn int `json:"refresh_token_expires_in"`
OpenId string `json:"open_id"`
Scopes []string `json:"scopes"`
}
// GetToken use code to get access_token
func (idp *KwaiIdProvider) GetToken(code string) (*oauth2.Token, error) {
params := map[string]string{
"app_id": idp.Config.ClientID,
"app_secret": idp.Config.ClientSecret,
"code": code,
"grant_type": "authorization_code",
}
tokenUrl := fmt.Sprintf("%s?app_id=%s&app_secret=%s&code=%s&grant_type=authorization_code",
idp.Config.Endpoint.TokenURL, params["app_id"], params["app_secret"], params["code"])
resp, err := idp.Client.Get(tokenUrl)
if err != nil {
return nil, err
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
return nil, err
}
var tokenResp KwaiTokenResp
err = json.Unmarshal(body, &tokenResp)
if err != nil {
return nil, err
}
if tokenResp.Result != 1 {
return nil, fmt.Errorf("get token error: %s", tokenResp.ErrorMsg)
}
token := &oauth2.Token{
AccessToken: tokenResp.AccessToken,
RefreshToken: tokenResp.RefreshToken,
Expiry: time.Now().Add(time.Duration(tokenResp.ExpiresIn) * time.Second),
}
raw := make(map[string]interface{})
raw["open_id"] = tokenResp.OpenId
token = token.WithExtra(raw)
return token, nil
}
// More details: https://open.kuaishou.com/openapi/user_info
type KwaiUserInfo struct {
Result int `json:"result"`
ErrorMsg string `json:"error_msg"`
UserInfo struct {
Head string `json:"head"`
Name string `json:"name"`
Sex string `json:"sex"`
City string `json:"city"`
} `json:"user_info"`
}
// GetUserInfo use token to get user profile
func (idp *KwaiIdProvider) GetUserInfo(token *oauth2.Token) (*UserInfo, error) {
userInfoUrl := fmt.Sprintf("https://open.kuaishou.com/openapi/user_info?app_id=%s&access_token=%s",
idp.Config.ClientID, token.AccessToken)
resp, err := idp.Client.Get(userInfoUrl)
if err != nil {
return nil, err
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
return nil, err
}
var kwaiUserInfo KwaiUserInfo
err = json.Unmarshal(body, &kwaiUserInfo)
if err != nil {
return nil, err
}
if kwaiUserInfo.Result != 1 {
return nil, fmt.Errorf("get user info error: %s", kwaiUserInfo.ErrorMsg)
}
userInfo := &UserInfo{
Id: token.Extra("open_id").(string),
Username: kwaiUserInfo.UserInfo.Name,
DisplayName: kwaiUserInfo.UserInfo.Name,
AvatarUrl: kwaiUserInfo.UserInfo.Head,
Extra: map[string]string{
"gender": kwaiUserInfo.UserInfo.Sex,
"city": kwaiUserInfo.UserInfo.City,
},
}
return userInfo, nil
}

View File

@@ -27,22 +27,16 @@ import (
) )
type LarkIdProvider struct { type LarkIdProvider struct {
Client *http.Client Client *http.Client
Config *oauth2.Config Config *oauth2.Config
LarkDomain string
} }
func NewLarkIdProvider(clientId string, clientSecret string, redirectUrl string, useGlobalEndpoint bool) *LarkIdProvider { func NewLarkIdProvider(clientId string, clientSecret string, redirectUrl string) *LarkIdProvider {
idp := &LarkIdProvider{} idp := &LarkIdProvider{}
if useGlobalEndpoint {
idp.LarkDomain = "https://open.larksuite.com"
} else {
idp.LarkDomain = "https://open.feishu.cn"
}
config := idp.getConfig(clientId, clientSecret, redirectUrl) config := idp.getConfig(clientId, clientSecret, redirectUrl)
idp.Config = config idp.Config = config
return idp return idp
} }
@@ -53,7 +47,7 @@ func (idp *LarkIdProvider) SetHttpClient(client *http.Client) {
// getConfig return a point of Config, which describes a typical 3-legged OAuth2 flow // getConfig return a point of Config, which describes a typical 3-legged OAuth2 flow
func (idp *LarkIdProvider) getConfig(clientId string, clientSecret string, redirectUrl string) *oauth2.Config { func (idp *LarkIdProvider) getConfig(clientId string, clientSecret string, redirectUrl string) *oauth2.Config {
endpoint := oauth2.Endpoint{ endpoint := oauth2.Endpoint{
TokenURL: idp.LarkDomain + "/open-apis/auth/v3/tenant_access_token/internal", TokenURL: "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal",
} }
config := &oauth2.Config{ config := &oauth2.Config{
@@ -168,7 +162,6 @@ type LarkUserInfo struct {
} `json:"data"` } `json:"data"`
} }
// GetUserInfo use LarkAccessToken gotten before return LinkedInUserInf
// GetUserInfo use LarkAccessToken gotten before return LinkedInUserInfo // GetUserInfo use LarkAccessToken gotten before return LinkedInUserInfo
// get more detail via: https://docs.microsoft.com/en-us/linkedin/consumer/integrations/self-serve/sign-in-with-linkedin?context=linkedin/consumer/context // get more detail via: https://docs.microsoft.com/en-us/linkedin/consumer/integrations/self-serve/sign-in-with-linkedin?context=linkedin/consumer/context
func (idp *LarkIdProvider) GetUserInfo(token *oauth2.Token) (*UserInfo, error) { func (idp *LarkIdProvider) GetUserInfo(token *oauth2.Token) (*UserInfo, error) {
@@ -182,7 +175,7 @@ func (idp *LarkIdProvider) GetUserInfo(token *oauth2.Token) (*UserInfo, error) {
return nil, err return nil, err
} }
req, err := http.NewRequest("POST", idp.LarkDomain+"/open-apis/authen/v1/access_token", strings.NewReader(string(data))) req, err := http.NewRequest("POST", "https://open.feishu.cn/open-apis/authen/v1/access_token", strings.NewReader(string(data)))
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@@ -44,7 +44,6 @@ type ProviderInfo struct {
AppId string AppId string
HostUrl string HostUrl string
RedirectUrl string RedirectUrl string
DisableSsl bool
TokenURL string TokenURL string
AuthURL string AuthURL string
@@ -80,14 +79,14 @@ func GetIdProvider(idpInfo *ProviderInfo, redirectUrl string) (IdProvider, error
return NewLinkedInIdProvider(idpInfo.ClientId, idpInfo.ClientSecret, redirectUrl), nil return NewLinkedInIdProvider(idpInfo.ClientId, idpInfo.ClientSecret, redirectUrl), nil
case "WeCom": case "WeCom":
if idpInfo.SubType == "Internal" { if idpInfo.SubType == "Internal" {
return NewWeComInternalIdProvider(idpInfo.ClientId, idpInfo.ClientSecret, redirectUrl, idpInfo.DisableSsl), nil return NewWeComInternalIdProvider(idpInfo.ClientId, idpInfo.ClientSecret, redirectUrl), nil
} else if idpInfo.SubType == "Third-party" { } else if idpInfo.SubType == "Third-party" {
return NewWeComIdProvider(idpInfo.ClientId, idpInfo.ClientSecret, redirectUrl, idpInfo.DisableSsl), nil return NewWeComIdProvider(idpInfo.ClientId, idpInfo.ClientSecret, redirectUrl), nil
} else { } else {
return nil, fmt.Errorf("WeCom provider subType: %s is not supported", idpInfo.SubType) return nil, fmt.Errorf("WeCom provider subType: %s is not supported", idpInfo.SubType)
} }
case "Lark": case "Lark":
return NewLarkIdProvider(idpInfo.ClientId, idpInfo.ClientSecret, redirectUrl, idpInfo.DisableSsl), nil return NewLarkIdProvider(idpInfo.ClientId, idpInfo.ClientSecret, redirectUrl), nil
case "GitLab": case "GitLab":
return NewGitlabIdProvider(idpInfo.ClientId, idpInfo.ClientSecret, redirectUrl), nil return NewGitlabIdProvider(idpInfo.ClientId, idpInfo.ClientSecret, redirectUrl), nil
case "ADFS": case "ADFS":
@@ -114,8 +113,6 @@ func GetIdProvider(idpInfo *ProviderInfo, redirectUrl string) (IdProvider, error
return NewOktaIdProvider(idpInfo.ClientId, idpInfo.ClientSecret, redirectUrl, idpInfo.HostUrl), nil return NewOktaIdProvider(idpInfo.ClientId, idpInfo.ClientSecret, redirectUrl, idpInfo.HostUrl), nil
case "Douyin": case "Douyin":
return NewDouyinIdProvider(idpInfo.ClientId, idpInfo.ClientSecret, redirectUrl), nil return NewDouyinIdProvider(idpInfo.ClientId, idpInfo.ClientSecret, redirectUrl), nil
case "Kwai":
return NewKwaiIdProvider(idpInfo.ClientId, idpInfo.ClientSecret, redirectUrl), nil
case "Bilibili": case "Bilibili":
return NewBilibiliIdProvider(idpInfo.ClientId, idpInfo.ClientSecret, redirectUrl), nil return NewBilibiliIdProvider(idpInfo.ClientId, idpInfo.ClientSecret, redirectUrl), nil
case "MetaMask": case "MetaMask":

View File

@@ -17,6 +17,7 @@ package idp
import ( import (
"bytes" "bytes"
"crypto/sha1" "crypto/sha1"
"encoding/base64"
"encoding/hex" "encoding/hex"
"encoding/json" "encoding/json"
"fmt" "fmt"
@@ -28,6 +29,7 @@ import (
"sync" "sync"
"time" "time"
"github.com/skip2/go-qrcode"
"golang.org/x/oauth2" "golang.org/x/oauth2"
) )
@@ -297,12 +299,12 @@ func GetWechatOfficialAccountQRCode(clientId string, clientSecret string, provid
params := fmt.Sprintf(`{"expire_seconds": 3600, "action_name": "QR_STR_SCENE", "action_info": {"scene": {"scene_str": "%s"}}}`, providerId) params := fmt.Sprintf(`{"expire_seconds": 3600, "action_name": "QR_STR_SCENE", "action_info": {"scene": {"scene_str": "%s"}}}`, providerId)
bodyData := bytes.NewReader([]byte(params)) bodyData := bytes.NewReader([]byte(params))
request, err := http.NewRequest("POST", qrCodeUrl, bodyData) requeset, err := http.NewRequest("POST", qrCodeUrl, bodyData)
if err != nil { if err != nil {
return "", "", err return "", "", err
} }
resp, err := client.Do(request) resp, err := client.Do(requeset)
if err != nil { if err != nil {
return "", "", err return "", "", err
} }
@@ -322,7 +324,10 @@ func GetWechatOfficialAccountQRCode(clientId string, clientSecret string, provid
return "", "", err return "", "", err
} }
return data.URL, data.Ticket, nil var png []byte
png, err = qrcode.Encode(data.URL, qrcode.Medium, 256)
base64Image := base64.StdEncoding.EncodeToString(png)
return base64Image, data.Ticket, nil
} }
func VerifyWechatSignature(token string, nonce string, timestamp string, signature string) bool { func VerifyWechatSignature(token string, nonce string, timestamp string, signature string) bool {

View File

@@ -29,16 +29,13 @@ import (
type WeComInternalIdProvider struct { type WeComInternalIdProvider struct {
Client *http.Client Client *http.Client
Config *oauth2.Config Config *oauth2.Config
UseIdAsName bool
} }
func NewWeComInternalIdProvider(clientId string, clientSecret string, redirectUrl string, useIdAsName bool) *WeComInternalIdProvider { func NewWeComInternalIdProvider(clientId string, clientSecret string, redirectUrl string) *WeComInternalIdProvider {
idp := &WeComInternalIdProvider{} idp := &WeComInternalIdProvider{}
config := idp.getConfig(clientId, clientSecret, redirectUrl) config := idp.getConfig(clientId, clientSecret, redirectUrl)
idp.Config = config idp.Config = config
idp.UseIdAsName = useIdAsName
return idp return idp
} }
@@ -172,9 +169,5 @@ func (idp *WeComInternalIdProvider) GetUserInfo(token *oauth2.Token) (*UserInfo,
userInfo.Id = userInfo.Username userInfo.Id = userInfo.Username
} }
if idp.UseIdAsName {
userInfo.Username = userInfo.Id
}
return &userInfo, nil return &userInfo, nil
} }

Some files were not shown because too many files have changed in this diff Show More