mirror of
https://github.com/casdoor/casdoor.git
synced 2025-08-14 02:07:46 +08:00
Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
8ede4993af | ||
![]() |
d04dd33d8b | ||
![]() |
8cb21253f6 | ||
![]() |
7fc697b711 | ||
![]() |
80e6e7f0a7 | ||
![]() |
d29fc88d68 | ||
![]() |
225e9cf70a | ||
![]() |
c57c6e37dd |
@@ -127,6 +127,7 @@ p, *, *, *, /api/metrics, *, *
|
||||
p, *, *, GET, /api/get-subscriptions, *, *
|
||||
p, *, *, GET, /api/get-pricing, *, *
|
||||
p, *, *, GET, /api/get-plan, *, *
|
||||
p, *, *, GET, /api/get-organization-names, *, *
|
||||
`
|
||||
|
||||
sa := stringadapter.NewAdapter(ruleText)
|
||||
|
@@ -148,3 +148,16 @@ func (c *ApiController) GetDefaultApplication() {
|
||||
maskedApplication := object.GetMaskedApplication(application, userId)
|
||||
c.ResponseOk(maskedApplication)
|
||||
}
|
||||
|
||||
// GetOrganizationNames ...
|
||||
// @Title GetOrganizationNames
|
||||
// @Tag Organization API
|
||||
// @Param owner query string true "owner"
|
||||
// @Description get all organization names
|
||||
// @Success 200 {array} object.Organization The Response object
|
||||
// @router /get-organization-names [get]
|
||||
func (c *ApiController) GetOrganizationNames() {
|
||||
owner := c.Input().Get("owner")
|
||||
organizationNames := object.GetOrganizationsByFields(owner, "name")
|
||||
c.ResponseOk(organizationNames)
|
||||
}
|
||||
|
@@ -16,7 +16,6 @@ package controllers
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
||||
"github.com/beego/beego/utils/pagination"
|
||||
"github.com/casdoor/casdoor/object"
|
||||
@@ -156,15 +155,15 @@ func (c *ApiController) NotifyPayment() {
|
||||
|
||||
body := c.Ctx.Input.RequestBody
|
||||
|
||||
ok := object.NotifyPayment(c.Ctx.Request, body, owner, providerName, productName, paymentName)
|
||||
if ok {
|
||||
_, err := c.Ctx.ResponseWriter.Write([]byte("success"))
|
||||
if err != nil {
|
||||
c.ResponseError(err.Error())
|
||||
return
|
||||
}
|
||||
} else {
|
||||
panic(fmt.Errorf("NotifyPayment() failed: %v", ok))
|
||||
err, errorResponse := object.NotifyPayment(c.Ctx.Request, body, owner, providerName, productName, paymentName)
|
||||
|
||||
_, err2 := c.Ctx.ResponseWriter.Write([]byte(errorResponse))
|
||||
if err2 != nil {
|
||||
panic(err2)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -68,10 +68,10 @@
|
||||
"Missing parameter": "Thiếu tham số",
|
||||
"Please login first": "Vui lòng đăng nhập trước",
|
||||
"The user: %s doesn't exist": "Người dùng: %s không tồn tại",
|
||||
"don't support captchaProvider: ": "Không hỗ trợ captchaProvider:"
|
||||
"don't support captchaProvider: ": "không hỗ trợ captchaProvider: "
|
||||
},
|
||||
"ldap": {
|
||||
"Ldap server exist": "Máy chủ Ldap tồn tại"
|
||||
"Ldap server exist": "Máy chủ LDAP tồn tại"
|
||||
},
|
||||
"link": {
|
||||
"Please link first": "Vui lòng kết nối trước tiên",
|
||||
|
@@ -83,7 +83,7 @@
|
||||
},
|
||||
"organization": {
|
||||
"Only admin can modify the %s.": "仅允许管理员可以修改%s",
|
||||
"The %s is immutable.": "%s是不可变的",
|
||||
"The %s is immutable.": "%s 是不可变的",
|
||||
"Unknown modify rule %s.": "未知的修改规则: %s"
|
||||
},
|
||||
"provider": {
|
||||
@@ -143,7 +143,7 @@
|
||||
"the user does not exist, please sign up first": "用户不存在,请先注册"
|
||||
},
|
||||
"webauthn": {
|
||||
"Found no credentials for this user": "该用户没有WebAuthn凭据",
|
||||
"Found no credentials for this user": "该用户没有 WebAuthn 凭据",
|
||||
"Please call WebAuthnSigninBegin first": "请先调用WebAuthnSigninBegin函数"
|
||||
}
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@ package idp
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
@@ -83,7 +84,7 @@ func (idp *CasdoorIdProvider) GetToken(code string) (*oauth2.Token, error) {
|
||||
|
||||
// check if token is expired
|
||||
if pToken.ExpiresIn <= 0 {
|
||||
return nil, fmt.Errorf("%s", pToken.AccessToken)
|
||||
return nil, errors.New(pToken.AccessToken)
|
||||
}
|
||||
token := &oauth2.Token{
|
||||
AccessToken: pToken.AccessToken,
|
||||
|
@@ -51,6 +51,7 @@ type Application struct {
|
||||
EnableSamlCompress bool `json:"enableSamlCompress"`
|
||||
EnableWebAuthn bool `json:"enableWebAuthn"`
|
||||
EnableLinkWithEmail bool `json:"enableLinkWithEmail"`
|
||||
OrgChoiceMode string `json:"orgChoiceMode"`
|
||||
SamlReplyUrl string `xorm:"varchar(100)" json:"samlReplyUrl"`
|
||||
Providers []*ProviderItem `xorm:"mediumtext" json:"providers"`
|
||||
SignupItems []*SignupItem `xorm:"varchar(1000)" json:"signupItems"`
|
||||
|
@@ -90,6 +90,16 @@ func GetOrganizations(owner string) []*Organization {
|
||||
return organizations
|
||||
}
|
||||
|
||||
func GetOrganizationsByFields(owner string, fields ...string) []*Organization {
|
||||
organizations := []*Organization{}
|
||||
err := adapter.Engine.Desc("created_time").Cols(fields...).Find(&organizations, &Organization{Owner: owner})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
return organizations
|
||||
}
|
||||
|
||||
func GetPaginationOrganizations(owner string, offset, limit int, field, value, sortField, sortOrder string) []*Organization {
|
||||
organizations := []*Organization{}
|
||||
session := GetSession(owner, offset, limit, field, value, sortField, sortOrder)
|
||||
|
@@ -152,46 +152,47 @@ func DeletePayment(payment *Payment) bool {
|
||||
return affected != 0
|
||||
}
|
||||
|
||||
func notifyPayment(request *http.Request, body []byte, owner string, providerName string, productName string, paymentName string) (*Payment, error) {
|
||||
func notifyPayment(request *http.Request, body []byte, owner string, providerName string, productName string, paymentName string) (*Payment, error, string) {
|
||||
provider := getProvider(owner, providerName)
|
||||
|
||||
pProvider, cert, err := provider.getPaymentProvider()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
payment := getPayment(owner, paymentName)
|
||||
if payment == nil {
|
||||
return nil, fmt.Errorf("the payment: %s does not exist", paymentName)
|
||||
err = fmt.Errorf("the payment: %s does not exist", paymentName)
|
||||
return nil, err, pProvider.GetResponseError(err)
|
||||
}
|
||||
|
||||
product := getProduct(owner, productName)
|
||||
if product == nil {
|
||||
return nil, fmt.Errorf("the product: %s does not exist", productName)
|
||||
}
|
||||
|
||||
provider, err := product.getProvider(providerName)
|
||||
if err != nil {
|
||||
return payment, err
|
||||
}
|
||||
|
||||
pProvider, cert, err := provider.getPaymentProvider()
|
||||
if err != nil {
|
||||
return payment, err
|
||||
err = fmt.Errorf("the product: %s does not exist", productName)
|
||||
return payment, err, pProvider.GetResponseError(err)
|
||||
}
|
||||
|
||||
productDisplayName, paymentName, price, productName, providerName, err := pProvider.Notify(request, body, cert.AuthorityPublicKey)
|
||||
if err != nil {
|
||||
return payment, err
|
||||
return payment, err, pProvider.GetResponseError(err)
|
||||
}
|
||||
|
||||
if productDisplayName != "" && productDisplayName != product.DisplayName {
|
||||
return nil, fmt.Errorf("the payment's product name: %s doesn't equal to the expected product name: %s", productDisplayName, product.DisplayName)
|
||||
err = fmt.Errorf("the payment's product name: %s doesn't equal to the expected product name: %s", productDisplayName, product.DisplayName)
|
||||
return payment, err, pProvider.GetResponseError(err)
|
||||
}
|
||||
|
||||
if price != product.Price {
|
||||
return nil, fmt.Errorf("the payment's price: %f doesn't equal to the expected price: %f", price, product.Price)
|
||||
err = fmt.Errorf("the payment's price: %f doesn't equal to the expected price: %f", price, product.Price)
|
||||
return payment, err, pProvider.GetResponseError(err)
|
||||
}
|
||||
|
||||
return payment, nil
|
||||
err = nil
|
||||
return payment, err, pProvider.GetResponseError(err)
|
||||
}
|
||||
|
||||
func NotifyPayment(request *http.Request, body []byte, owner string, providerName string, productName string, paymentName string) bool {
|
||||
payment, err := notifyPayment(request, body, owner, providerName, productName, paymentName)
|
||||
|
||||
func NotifyPayment(request *http.Request, body []byte, owner string, providerName string, productName string, paymentName string) (error, string) {
|
||||
payment, err, errorResponse := notifyPayment(request, body, owner, providerName, productName, paymentName)
|
||||
if payment != nil {
|
||||
if err != nil {
|
||||
payment.State = "Error"
|
||||
@@ -203,8 +204,7 @@ func NotifyPayment(request *http.Request, body []byte, owner string, providerNam
|
||||
UpdatePayment(payment.GetId(), payment)
|
||||
}
|
||||
|
||||
ok := err == nil
|
||||
return ok
|
||||
return err, errorResponse
|
||||
}
|
||||
|
||||
func invoicePayment(payment *Payment) (string, error) {
|
||||
|
@@ -30,7 +30,7 @@ func TestProduct(t *testing.T) {
|
||||
product := GetProduct("admin/product_123")
|
||||
provider := getProvider(product.Owner, "provider_pay_alipay")
|
||||
cert := getCert(product.Owner, "cert-pay-alipay")
|
||||
pProvider, err := pp.GetPaymentProvider(provider.Type, provider.ClientId, provider.ClientSecret, provider.Host, cert.Certificate, cert.PrivateKey, cert.AuthorityPublicKey, cert.AuthorityRootPublicKey, provider.ClientId2)
|
||||
pProvider, err := pp.GetPaymentProvider(provider.Type, provider.ClientId, provider.ClientSecret, provider.Host, cert.Certificate, provider.ClientSecret2, cert.PrivateKey, cert.AuthorityPublicKey, cert.AuthorityRootPublicKey, provider.ClientId2)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
@@ -274,7 +274,7 @@ func (p *Provider) getPaymentProvider() (pp.PaymentProvider, *Cert, error) {
|
||||
}
|
||||
}
|
||||
|
||||
pProvider, err := pp.GetPaymentProvider(p.Type, p.ClientId, p.ClientSecret, p.Host, cert.Certificate, cert.PrivateKey, cert.AuthorityPublicKey, cert.AuthorityRootPublicKey, p.ClientId2)
|
||||
pProvider, err := pp.GetPaymentProvider(p.Type, p.ClientId, p.ClientSecret, p.Host, cert.Certificate, p.ClientSecret2, cert.PrivateKey, cert.AuthorityPublicKey, cert.AuthorityRootPublicKey, p.ClientId2)
|
||||
if err != nil {
|
||||
return nil, cert, err
|
||||
}
|
||||
|
@@ -94,3 +94,11 @@ func (pp *AlipayPaymentProvider) Notify(request *http.Request, body []byte, auth
|
||||
func (pp *AlipayPaymentProvider) GetInvoice(paymentName string, personName string, personIdCard string, personEmail string, personPhone string, invoiceType string, invoiceTitle string, invoiceTaxId string) (string, error) {
|
||||
return "", nil
|
||||
}
|
||||
|
||||
func (pp *AlipayPaymentProvider) GetResponseError(err error) string {
|
||||
if err == nil {
|
||||
return "success"
|
||||
} else {
|
||||
return "fail"
|
||||
}
|
||||
}
|
||||
|
8
pp/gc.go
8
pp/gc.go
@@ -329,3 +329,11 @@ func (pp *GcPaymentProvider) GetInvoice(paymentName string, personName string, p
|
||||
|
||||
return invoiceRespInfo.Url, nil
|
||||
}
|
||||
|
||||
func (pp *GcPaymentProvider) GetResponseError(err error) string {
|
||||
if err == nil {
|
||||
return "success"
|
||||
} else {
|
||||
return "fail"
|
||||
}
|
||||
}
|
||||
|
@@ -20,20 +20,21 @@ type PaymentProvider interface {
|
||||
Pay(providerName string, productName string, payerName string, paymentName string, productDisplayName string, price float64, returnUrl string, notifyUrl string) (string, error)
|
||||
Notify(request *http.Request, body []byte, authorityPublicKey string) (string, string, float64, string, string, error)
|
||||
GetInvoice(paymentName string, personName string, personIdCard string, personEmail string, personPhone string, invoiceType string, invoiceTitle string, invoiceTaxId string) (string, error)
|
||||
GetResponseError(err error) string
|
||||
}
|
||||
|
||||
func GetPaymentProvider(typ string, appId string, clientSecret string, host string, appCertificate string, appPrivateKey string, authorityPublicKey string, authorityRootPublicKey string, clientId2 string) (PaymentProvider, error) {
|
||||
func GetPaymentProvider(typ string, clientId string, clientSecret string, host string, appCertificate string, certSerialNo string, appPrivateKey string, authorityPublicKey string, authorityRootPublicKey string, clientId2 string) (PaymentProvider, error) {
|
||||
if typ == "Alipay" {
|
||||
newAlipayPaymentProvider, err := NewAlipayPaymentProvider(appId, appCertificate, appPrivateKey, authorityPublicKey, authorityRootPublicKey)
|
||||
newAlipayPaymentProvider, err := NewAlipayPaymentProvider(clientId, appCertificate, appPrivateKey, authorityPublicKey, authorityRootPublicKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return newAlipayPaymentProvider, nil
|
||||
} else if typ == "GC" {
|
||||
return NewGcPaymentProvider(appId, clientSecret, host), nil
|
||||
return NewGcPaymentProvider(clientId, clientSecret, host), nil
|
||||
} else if typ == "WeChat Pay" {
|
||||
// appId, mchId, mchCertSerialNumber, apiV3Key, privateKey
|
||||
newWechatPaymentProvider, err := NewWechatPaymentProvider(clientId2, appId, appCertificate, clientSecret, appPrivateKey)
|
||||
// appId, mchId, mchCert, mchCertSerialNumber, apiV3Key, privateKey
|
||||
newWechatPaymentProvider, err := NewWechatPaymentProvider(clientId2, clientId, appCertificate, certSerialNo, clientSecret, appPrivateKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
12
pp/util.go
12
pp/util.go
@@ -23,3 +23,15 @@ func getPriceString(price float64) string {
|
||||
priceString := strings.TrimRight(strings.TrimRight(fmt.Sprintf("%.2f", price), "0"), ".")
|
||||
return priceString
|
||||
}
|
||||
|
||||
func joinAttachString(tokens []string) string {
|
||||
return strings.Join(tokens, "|")
|
||||
}
|
||||
|
||||
func parseAttachString(s string) (string, string, string, error) {
|
||||
tokens := strings.Split(s, "|")
|
||||
if len(tokens) != 3 {
|
||||
return "", "", "", fmt.Errorf("parseAttachString() error: len(tokens) expected 3, got: %d", len(tokens))
|
||||
}
|
||||
return tokens[0], tokens[1], tokens[2], nil
|
||||
}
|
||||
|
@@ -16,7 +16,7 @@ package pp
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"errors"
|
||||
"net/http"
|
||||
|
||||
"github.com/casdoor/casdoor/util"
|
||||
@@ -24,12 +24,21 @@ import (
|
||||
"github.com/go-pay/gopay/wechat/v3"
|
||||
)
|
||||
|
||||
type WechatPayNotifyResponse struct {
|
||||
Code string `json:"Code"`
|
||||
Message string `json:"Message"`
|
||||
}
|
||||
|
||||
type WechatPaymentProvider struct {
|
||||
ClientV3 *wechat.ClientV3
|
||||
appId string
|
||||
}
|
||||
|
||||
func NewWechatPaymentProvider(appId string, mchId string, mchCertSerialNumber string, apiV3Key string, privateKey string) (*WechatPaymentProvider, error) {
|
||||
func NewWechatPaymentProvider(appId string, mchId string, cert string, mchCertSerialNumber string, apiV3Key string, privateKey string) (*WechatPaymentProvider, error) {
|
||||
if appId == "" && mchId == "" && cert == "" && mchCertSerialNumber == "" && apiV3Key == "" && privateKey == "" {
|
||||
return &WechatPaymentProvider{}, nil
|
||||
}
|
||||
|
||||
pp := &WechatPaymentProvider{appId: appId}
|
||||
|
||||
clientV3, err := wechat.NewClientV3(mchId, mchCertSerialNumber, apiV3Key, privateKey)
|
||||
@@ -37,11 +46,13 @@ func NewWechatPaymentProvider(appId string, mchId string, mchCertSerialNumber st
|
||||
return nil, err
|
||||
}
|
||||
|
||||
err = clientV3.AutoVerifySign()
|
||||
platformCert, serialNo, err := clientV3.GetAndSelectNewestCert()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
pp.ClientV3 = clientV3
|
||||
|
||||
pp.ClientV3 = clientV3.SetPlatformCert([]byte(platformCert), serialNo)
|
||||
|
||||
return pp, nil
|
||||
}
|
||||
|
||||
@@ -50,53 +61,71 @@ func (pp *WechatPaymentProvider) Pay(providerName string, productName string, pa
|
||||
|
||||
bm := gopay.BodyMap{}
|
||||
|
||||
bm.Set("providerName", providerName)
|
||||
bm.Set("productName", productName)
|
||||
|
||||
bm.Set("return_url", returnUrl)
|
||||
bm.Set("attach", joinAttachString([]string{productDisplayName, productName, providerName}))
|
||||
bm.Set("appid", pp.appId)
|
||||
bm.Set("description", productDisplayName)
|
||||
bm.Set("notify_url", notifyUrl)
|
||||
|
||||
bm.Set("body", productDisplayName)
|
||||
bm.Set("out_trade_no", paymentName)
|
||||
bm.Set("total_fee", getPriceString(price))
|
||||
bm.SetBodyMap("amount", func(bm gopay.BodyMap) {
|
||||
bm.Set("total", int(price*100))
|
||||
bm.Set("currency", "CNY")
|
||||
})
|
||||
|
||||
wechatRsp, err := pp.ClientV3.V3TransactionJsapi(context.Background(), bm)
|
||||
wxRsp, err := pp.ClientV3.V3TransactionNative(context.Background(), bm)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
payUrl := fmt.Sprintf("https://open.weixin.qq.com/connect/oauth2/authorize?appid=%s&redirect_uri=%s&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect", pp.appId, wechatRsp.Response.PrepayId)
|
||||
return payUrl, nil
|
||||
if wxRsp.Code != wechat.Success {
|
||||
return "", errors.New(wxRsp.Error)
|
||||
}
|
||||
|
||||
return wxRsp.Response.CodeUrl, nil
|
||||
}
|
||||
|
||||
func (pp *WechatPaymentProvider) Notify(request *http.Request, body []byte, authorityPublicKey string) (string, string, float64, string, string, error) {
|
||||
bm, err := wechat.V3ParseNotifyToBodyMap(request)
|
||||
if err != nil {
|
||||
return "", "", 0, "", "", err
|
||||
}
|
||||
|
||||
providerName := bm.Get("providerName")
|
||||
productName := bm.Get("productName")
|
||||
|
||||
productDisplayName := bm.Get("body")
|
||||
paymentName := bm.Get("out_trade_no")
|
||||
price := util.ParseFloat(bm.Get("total_fee"))
|
||||
|
||||
notifyReq, err := wechat.V3ParseNotify(request)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
cert := pp.ClientV3.WxPublicKey()
|
||||
|
||||
err = notifyReq.VerifySignByPK(cert)
|
||||
if err != nil {
|
||||
return "", "", 0, "", "", err
|
||||
}
|
||||
|
||||
apiKey := string(pp.ClientV3.ApiV3Key)
|
||||
result, err := notifyReq.DecryptCipherText(apiKey)
|
||||
if err != nil {
|
||||
return "", "", 0, "", "", err
|
||||
}
|
||||
|
||||
paymentName := result.OutTradeNo
|
||||
price := float64(result.Amount.PayerTotal) / 100
|
||||
|
||||
productDisplayName, productName, providerName, err := parseAttachString(result.Attach)
|
||||
if err != nil {
|
||||
return "", "", 0, "", "", err
|
||||
}
|
||||
|
||||
return productDisplayName, paymentName, price, productName, providerName, nil
|
||||
}
|
||||
|
||||
func (pp *WechatPaymentProvider) GetInvoice(paymentName string, personName string, personIdCard string, personEmail string, personPhone string, invoiceType string, invoiceTitle string, invoiceTaxId string) (string, error) {
|
||||
return "", nil
|
||||
}
|
||||
|
||||
func (pp *WechatPaymentProvider) GetResponseError(err error) string {
|
||||
response := &WechatPayNotifyResponse{
|
||||
Code: "SUCCESS",
|
||||
Message: "",
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
response.Code = "FAIL"
|
||||
response.Message = err.Error()
|
||||
}
|
||||
|
||||
return util.StructToJson(response)
|
||||
}
|
||||
|
@@ -65,6 +65,7 @@ func initAPI() {
|
||||
beego.Router("/api/add-organization", &controllers.ApiController{}, "POST:AddOrganization")
|
||||
beego.Router("/api/delete-organization", &controllers.ApiController{}, "POST:DeleteOrganization")
|
||||
beego.Router("/api/get-default-application", &controllers.ApiController{}, "GET:GetDefaultApplication")
|
||||
beego.Router("/api/get-organization-names", &controllers.ApiController{}, "GET:GetOrganizationNames")
|
||||
|
||||
beego.Router("/api/get-global-users", &controllers.ApiController{}, "GET:GetGlobalUsers")
|
||||
beego.Router("/api/get-users", &controllers.ApiController{}, "GET:GetUsers")
|
||||
|
@@ -441,6 +441,26 @@ class ApplicationEditPage extends React.Component {
|
||||
}} />
|
||||
</Col>
|
||||
</Row>
|
||||
<Row style={{marginTop: "20px"}} >
|
||||
<Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}>
|
||||
{Setting.getLabel(i18next.t("application:Org choice mode"), i18next.t("application:Org choice mode - Tooltip"))} :
|
||||
</Col>
|
||||
<Col span={22} >
|
||||
<Select virtual={false} style={{width: "100%"}}
|
||||
options={[
|
||||
{label: i18next.t("general:None"), value: "None"},
|
||||
{label: i18next.t("application:Select"), value: "Select"},
|
||||
{label: i18next.t("application:Input"), value: "Input"},
|
||||
].map((item) => {
|
||||
return Setting.getOption(item.label, item.value);
|
||||
})}
|
||||
value={this.state.application.orgChoiceMode ?? []}
|
||||
onChange={(value => {
|
||||
this.updateApplicationField("orgChoiceMode", value);
|
||||
})} >
|
||||
</Select>
|
||||
</Col>
|
||||
</Row>
|
||||
<Row style={{marginTop: "20px"}} >
|
||||
<Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}>
|
||||
{Setting.getLabel(i18next.t("general:Signup URL"), i18next.t("general:Signup URL - Tooltip"))} :
|
||||
|
@@ -178,7 +178,7 @@ class PricingEditPage extends React.Component {
|
||||
</Row>
|
||||
<Row style={{marginTop: "20px"}} >
|
||||
<Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}>
|
||||
{Setting.getLabel(i18next.t("pricing:Sub plans"), i18next.t("Pricing:Sub plans - Tooltip"))} :
|
||||
{Setting.getLabel(i18next.t("pricing:Sub plans"), i18next.t("pricing:Sub plans - Tooltip"))} :
|
||||
</Col>
|
||||
<Col span={22} >
|
||||
<Select mode="tags" style={{width: "100%"}} value={this.state.pricing.plans}
|
||||
|
@@ -856,7 +856,7 @@ class ProviderEditPage extends React.Component {
|
||||
this.state.provider.type === "WeChat Pay" ? (
|
||||
<Row style={{marginTop: "20px"}} >
|
||||
<Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}>
|
||||
{Setting.getLabel("cert", "cert")} :
|
||||
{Setting.getLabel(i18next.t("general:Cert"), i18next.t("general:Cert - Tooltip"))} :
|
||||
</Col>
|
||||
<Col span={22} >
|
||||
<Input value={this.state.provider.cert} onChange={e => {
|
||||
|
@@ -14,8 +14,9 @@
|
||||
|
||||
import React from "react";
|
||||
import {Button, Checkbox, Col, Form, Input, Result, Row, Spin, Tabs} from "antd";
|
||||
import {LockOutlined, UserOutlined} from "@ant-design/icons";
|
||||
import {ArrowLeftOutlined, LockOutlined, UserOutlined} from "@ant-design/icons";
|
||||
import * as UserWebauthnBackend from "../backend/UserWebauthnBackend";
|
||||
import OrganizationSelect from "../common/select/OrganizationSelect";
|
||||
import * as Conf from "../Conf";
|
||||
import * as AuthBackend from "./AuthBackend";
|
||||
import * as OrganizationBackend from "../backend/OrganizationBackend";
|
||||
@@ -57,6 +58,7 @@ class LoginPage extends React.Component {
|
||||
redirectUrl: "",
|
||||
isTermsOfUseVisible: false,
|
||||
termsOfUseContent: "",
|
||||
orgChoiceMode: new URLSearchParams(props.location?.search).get("orgChoiceMode") ?? null,
|
||||
};
|
||||
|
||||
if (this.state.type === "cas" && props.match?.params.casApplicationName !== undefined) {
|
||||
@@ -815,6 +817,102 @@ class LoginPage extends React.Component {
|
||||
}
|
||||
}
|
||||
|
||||
renderLoginPanel(application) {
|
||||
const orgChoiceMode = application.orgChoiceMode;
|
||||
|
||||
if (this.isOrganizationChoiceBoxVisible(orgChoiceMode)) {
|
||||
return this.renderOrganizationChoiceBox(orgChoiceMode);
|
||||
}
|
||||
|
||||
if (this.state.getVerifyTotp !== undefined) {
|
||||
return this.state.getVerifyTotp();
|
||||
} else {
|
||||
return (
|
||||
<React.Fragment>
|
||||
{this.renderSignedInBox()}
|
||||
{this.renderForm(application)}
|
||||
</React.Fragment>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
renderOrganizationChoiceBox(orgChoiceMode) {
|
||||
const renderChoiceBox = () => {
|
||||
switch (orgChoiceMode) {
|
||||
case "None":
|
||||
return null;
|
||||
case "Select":
|
||||
return (
|
||||
<div>
|
||||
<p style={{fontSize: "large"}}>
|
||||
{i18next.t("login:Please select an organization to sign in")}
|
||||
</p>
|
||||
<OrganizationSelect style={{width: "70%"}}
|
||||
onSelect={(value) => {
|
||||
Setting.goToLink(`/login/${value}?orgChoiceMode=None`);
|
||||
}} />
|
||||
</div>
|
||||
);
|
||||
case "Input":
|
||||
return (
|
||||
<div>
|
||||
<p style={{fontSize: "large"}}>
|
||||
{i18next.t("login:Please type an organization to sign in")}
|
||||
</p>
|
||||
<Form
|
||||
name="basic"
|
||||
onFinish={(values) => {Setting.goToLink(`/login/${values.organizationName}?orgChoiceMode=None`);}}
|
||||
>
|
||||
<Form.Item
|
||||
name="organizationName"
|
||||
rules={[{required: true, message: i18next.t("login:Please input your organization name!")}]}
|
||||
>
|
||||
<Input style={{width: "70%"}} onPressEnter={(e) => {
|
||||
Setting.goToLink(`/login/${e.target.value}?orgChoiceMode=None`);
|
||||
}} />
|
||||
</Form.Item>
|
||||
<Button type="primary" htmlType="submit">
|
||||
{i18next.t("general:Confirm")}
|
||||
</Button>
|
||||
</Form>
|
||||
</div>
|
||||
);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div style={{height: 300, width: 300}}>
|
||||
{renderChoiceBox()}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
isOrganizationChoiceBoxVisible(orgChoiceMode) {
|
||||
if (this.state.orgChoiceMode === "None") {
|
||||
return false;
|
||||
}
|
||||
|
||||
const path = this.props.match?.path;
|
||||
if (path === "/login" || path === "/login/:owner") {
|
||||
return orgChoiceMode === "Select" || orgChoiceMode === "Input";
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
renderBackButton() {
|
||||
if (this.state.orgChoiceMode === "None") {
|
||||
return (
|
||||
<Button type="text" size="large" icon={<ArrowLeftOutlined />}
|
||||
style={{top: "65px", left: "15px", position: "absolute"}}
|
||||
onClick={() => history.back()}>
|
||||
</Button>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
render() {
|
||||
const application = this.getApplicationObj();
|
||||
if (application === undefined) {
|
||||
@@ -863,10 +961,13 @@ class LoginPage extends React.Component {
|
||||
{
|
||||
Setting.renderLogo(application)
|
||||
}
|
||||
{
|
||||
this.renderBackButton()
|
||||
}
|
||||
<LanguageSelect languages={application.organizationObj.languages} style={{top: "55px", right: "5px", position: "absolute"}} />
|
||||
{this.state.getVerifyTotp !== undefined ? null : this.renderSignedInBox()}
|
||||
{this.state.getVerifyTotp !== undefined ? null : this.renderForm(application)}
|
||||
{this.state.getVerifyTotp !== undefined ? this.state.getVerifyTotp() : null}
|
||||
{
|
||||
this.renderLoginPanel(application)
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -78,6 +78,7 @@ function CheckPasswordForm({user, onSuccess, onFail}) {
|
||||
|
||||
export function MfaVerifyForm({mfaProps, application, user, onSuccess, onFail}) {
|
||||
const [form] = Form.useForm();
|
||||
mfaProps = mfaProps ?? {type: ""};
|
||||
|
||||
const onFinish = ({passcode}) => {
|
||||
const data = {passcode, type: mfaProps.type, ...user};
|
||||
@@ -97,9 +98,9 @@ export function MfaVerifyForm({mfaProps, application, user, onSuccess, onFail})
|
||||
});
|
||||
};
|
||||
|
||||
if (mfaProps?.type === SmsMfaType) {
|
||||
if (mfaProps.type === SmsMfaType) {
|
||||
return <MfaSmsVerifyForm onFinish={onFinish} application={application} />;
|
||||
} else if (mfaProps?.type === TotpMfaType) {
|
||||
} else if (mfaProps.type === TotpMfaType) {
|
||||
return <MfaTotpVerifyForm onFinish={onFinish} mfaProps={mfaProps} />;
|
||||
} else {
|
||||
return <div></div>;
|
||||
@@ -160,7 +161,7 @@ class MfaSetupPage extends React.Component {
|
||||
}
|
||||
|
||||
componentDidUpdate(prevProps, prevState, snapshot) {
|
||||
if (prevState.isAuthenticated === true && this.state.mfaProps === null) {
|
||||
if (this.state.isAuthenticated === true && this.state.mfaProps === null) {
|
||||
MfaBackend.MfaSetupInitiate({
|
||||
type: this.state.type,
|
||||
...this.getUser(),
|
||||
|
@@ -80,18 +80,19 @@ export function getCasParameters(params) {
|
||||
};
|
||||
}
|
||||
|
||||
function getRedirectUri() {
|
||||
function getRawGetParameter(key) {
|
||||
const fullUrl = window.location.href;
|
||||
const token = fullUrl.split("redirect_uri=")[1];
|
||||
const token = fullUrl.split(`${key}=`)[1];
|
||||
if (!token) {
|
||||
return "";
|
||||
}
|
||||
|
||||
const res = token.split("&")[0];
|
||||
let res = token.split("&")[0];
|
||||
if (!res) {
|
||||
return "";
|
||||
}
|
||||
|
||||
res = decodeURIComponent(res);
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -100,18 +101,24 @@ export function getOAuthGetParameters(params) {
|
||||
const clientId = getRefinedValue(queries.get("client_id"));
|
||||
const responseType = getRefinedValue(queries.get("response_type"));
|
||||
|
||||
let redirectUri = getRedirectUri();
|
||||
let redirectUri = getRawGetParameter("redirect_uri");
|
||||
if (redirectUri === "") {
|
||||
redirectUri = getRefinedValue(queries.get("redirect_uri"));
|
||||
}
|
||||
|
||||
const scope = getRefinedValue(queries.get("scope"));
|
||||
let scope = getRefinedValue(queries.get("scope"));
|
||||
if (redirectUri.includes("#") && scope === "") {
|
||||
scope = getRawGetParameter("scope");
|
||||
}
|
||||
|
||||
let state = getRefinedValue(queries.get("state"));
|
||||
if (state.startsWith("/auth/oauth2/login.php?wantsurl=")) {
|
||||
// state contains URL param encoding for Moodle, URLSearchParams automatically decoded it, so here encode it again
|
||||
state = encodeURIComponent(state);
|
||||
}
|
||||
if (redirectUri.includes("#") && state === "") {
|
||||
state = getRawGetParameter("state");
|
||||
}
|
||||
|
||||
const nonce = getRefinedValue(queries.get("nonce"));
|
||||
const challengeMethod = getRefinedValue(queries.get("code_challenge_method"));
|
||||
|
@@ -79,3 +79,13 @@ export function getDefaultApplication(owner, name) {
|
||||
},
|
||||
}).then(res => res.json());
|
||||
}
|
||||
|
||||
export function getOrganizationNames(owner) {
|
||||
return fetch(`${Setting.ServerUrl}/api/get-organization-names?owner=${owner}`, {
|
||||
method: "GET",
|
||||
credentials: "include",
|
||||
headers: {
|
||||
"Accept-Language": Setting.getAcceptLanguage(),
|
||||
},
|
||||
}).then(res => res.json());
|
||||
}
|
||||
|
@@ -17,10 +17,17 @@ import * as Setting from "../../Setting";
|
||||
import React from "react";
|
||||
|
||||
export const CountryCodeSelect = (props) => {
|
||||
const {onChange, style, disabled, value} = props;
|
||||
const {onChange, style, disabled} = props;
|
||||
const countryCodes = props.countryCodes ?? [];
|
||||
const [value, setValue] = React.useState("");
|
||||
|
||||
React.useEffect(() => {
|
||||
const initValue = countryCodes.length > 0 ? countryCodes[0] : "";
|
||||
handleOnChange(initValue);
|
||||
}, []);
|
||||
|
||||
const handleOnChange = (value) => {
|
||||
setValue(value);
|
||||
onChange?.(value);
|
||||
};
|
||||
|
||||
|
63
web/src/common/select/OrganizationSelect.js
Normal file
63
web/src/common/select/OrganizationSelect.js
Normal file
@@ -0,0 +1,63 @@
|
||||
// Copyright 2023 The Casdoor Authors. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
import React from "react";
|
||||
import {Select} from "antd";
|
||||
import i18next from "i18next";
|
||||
import * as OrganizationBackend from "../../backend/OrganizationBackend";
|
||||
import * as Setting from "../../Setting";
|
||||
|
||||
function OrganizationSelect(props) {
|
||||
const {onChange} = props;
|
||||
const [organizations, setOrganizations] = React.useState([]);
|
||||
const [value, setValue] = React.useState("");
|
||||
|
||||
React.useEffect(() => {
|
||||
if (props.organizations === undefined) {
|
||||
getOrganizations();
|
||||
}
|
||||
const initValue = organizations.length > 0 ? organizations[0] : "";
|
||||
handleOnChange(initValue);
|
||||
}, []);
|
||||
|
||||
const getOrganizations = () => {
|
||||
OrganizationBackend.getOrganizationNames("admin")
|
||||
.then((res) => {
|
||||
if (res.status === "ok") {
|
||||
setOrganizations(res.data);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const handleOnChange = (value) => {
|
||||
setValue(value);
|
||||
onChange?.(value);
|
||||
};
|
||||
|
||||
return (
|
||||
<Select
|
||||
options={organizations.map((organization) => Setting.getOption(organization.name, organization.name))}
|
||||
virtual={false}
|
||||
showSearch
|
||||
placeholder={i18next.t("login:Please select an organization")}
|
||||
value={value}
|
||||
onChange={handleOnChange}
|
||||
filterOption={(input, option) => (option?.text ?? "").toLowerCase().includes(input.toLowerCase())}
|
||||
{...props}
|
||||
>
|
||||
</Select>
|
||||
);
|
||||
}
|
||||
|
||||
export default OrganizationSelect;
|
@@ -56,14 +56,16 @@
|
||||
"Grant types": "Grant-Typen",
|
||||
"Grant types - Tooltip": "Wählen Sie aus, welche Grant-Typen im OAuth-Protokoll zulässig sind",
|
||||
"Incremental": "Incremental",
|
||||
"Input": "Input",
|
||||
"Left": "Links",
|
||||
"Logged in successfully": "Erfolgreich eingeloggt",
|
||||
"Logged out successfully": "Erfolgreich ausgeloggt",
|
||||
"New Application": "Neue Anwendung",
|
||||
"No verification": "No verification",
|
||||
"None": "kein(e)",
|
||||
"Normal": "Normal",
|
||||
"Only signup": "Only signup",
|
||||
"Org choice mode": "Org choice mode",
|
||||
"Org choice mode - Tooltip": "Org choice mode - Tooltip",
|
||||
"Please input your application!": "Bitte geben Sie Ihre Anwendung ein!",
|
||||
"Please input your organization!": "Bitte geben Sie Ihre Organisation ein!",
|
||||
"Please select a HTML file": "Bitte wählen Sie eine HTML-Datei aus",
|
||||
@@ -82,6 +84,7 @@
|
||||
"SAML metadata - Tooltip": "Die Metadaten des SAML-Protokolls",
|
||||
"SAML metadata URL copied to clipboard successfully": "SAML-Metadaten URL erfolgreich in die Zwischenablage kopiert",
|
||||
"SAML reply URL": "SAML Reply-URL",
|
||||
"Select": "Select",
|
||||
"Side panel HTML": "Sidepanel-HTML",
|
||||
"Side panel HTML - Edit": "Sidepanel HTML - Bearbeiten",
|
||||
"Side panel HTML - Tooltip": "Passen Sie den HTML-Code für das Sidepanel der Login-Seite an",
|
||||
@@ -167,8 +170,13 @@
|
||||
"Affiliation URL": "Affiliation-URL",
|
||||
"Affiliation URL - Tooltip": "Die Homepage-URL für die Zugehörigkeit",
|
||||
"Application": "Applikation",
|
||||
"Application - Tooltip": "Application - Tooltip",
|
||||
"Applications": "Anwendungen",
|
||||
"Applications that require authentication": "Anwendungen, die eine Authentifizierung erfordern",
|
||||
"Approve time": "Approve time",
|
||||
"Approve time - Tooltip": "Approve time - Tooltip",
|
||||
"Approver": "Approver",
|
||||
"Approver - Tooltip": "Approver - Tooltip",
|
||||
"Avatar": "Avatar",
|
||||
"Avatar - Tooltip": "Öffentliches Avatarbild für den Benutzer",
|
||||
"Back": "Back",
|
||||
@@ -182,6 +190,7 @@
|
||||
"Click to Upload": "Klicken Sie zum Hochladen",
|
||||
"Client IP": "Client-IP",
|
||||
"Close": "Schließen",
|
||||
"Confirm": "Confirm",
|
||||
"Created time": "Erstellte Zeit",
|
||||
"Default application": "Standard Anwendung",
|
||||
"Default application - Tooltip": "Standard-Anwendung für Benutzer, die direkt von der Organisationsseite registriert wurden",
|
||||
@@ -226,6 +235,8 @@
|
||||
"Last name": "Nachname",
|
||||
"Logo": "Logo",
|
||||
"Logo - Tooltip": "Symbole, die die Anwendung der Außenwelt präsentiert",
|
||||
"MFA items": "MFA items",
|
||||
"MFA items - Tooltip": "MFA items - Tooltip",
|
||||
"Master password": "Hauptpasswort",
|
||||
"Master password - Tooltip": "Kann zum Einloggen aller Benutzer unter dieser Organisation verwendet werden, was es Administratoren bequem macht, sich als dieser Benutzer einzuloggen, um technische Probleme zu lösen",
|
||||
"Menu": "Menü",
|
||||
@@ -236,6 +247,7 @@
|
||||
"Models": "Modelle",
|
||||
"Name": "Name",
|
||||
"Name - Tooltip": "Eindeutige, auf Strings basierende ID",
|
||||
"None": "None",
|
||||
"OAuth providers": "OAuth-Provider",
|
||||
"OK": "OK",
|
||||
"Organization": "Organisation",
|
||||
@@ -254,9 +266,9 @@
|
||||
"Phone - Tooltip": "Telefonnummer",
|
||||
"Phone or email": "Phone or email",
|
||||
"Plans": "Pläne",
|
||||
"Pricings": "Preise",
|
||||
"Preview": "Vorschau",
|
||||
"Preview - Tooltip": "Vorschau der konfigurierten Effekte",
|
||||
"Pricings": "Preise",
|
||||
"Products": "Produkte",
|
||||
"Provider": "Provider",
|
||||
"Provider - Tooltip": "Zahlungsprovider, die konfiguriert werden müssen, inkl. PayPal, Alipay, WeChat Pay usw.",
|
||||
@@ -283,6 +295,8 @@
|
||||
"Sorry, you do not have permission to access this page or logged in status invalid.": "Es tut uns leid, aber Sie haben keine Berechtigung, auf diese Seite zuzugreifen, oder Sie sind nicht angemeldet.",
|
||||
"State": "Bundesland / Staat",
|
||||
"State - Tooltip": "Bundesland",
|
||||
"Submitter": "Submitter",
|
||||
"Submitter - Tooltip": "Submitter - Tooltip",
|
||||
"Subscriptions": "Abonnements",
|
||||
"Successfully added": "Erfolgreich hinzugefügt",
|
||||
"Successfully deleted": "Erfolgreich gelöscht",
|
||||
@@ -354,8 +368,12 @@
|
||||
"Or sign in with another account": "Oder mit einem anderen Konto anmelden",
|
||||
"Please input your Email or Phone!": "Bitte geben Sie Ihre E-Mail oder Telefonnummer ein!",
|
||||
"Please input your code!": "Bitte geben Sie Ihren Code ein!",
|
||||
"Please input your organization name!": "Please input your organization name!",
|
||||
"Please input your password!": "Bitte geben Sie Ihr Passwort ein!",
|
||||
"Please input your password, at least 6 characters!": "Bitte geben Sie Ihr Passwort ein, es muss mindestens 6 Zeichen lang sein!",
|
||||
"Please select an organization": "Please select an organization",
|
||||
"Please select an organization to sign in": "Please select an organization to sign in",
|
||||
"Please type an organization to sign in": "Please type an organization to sign in",
|
||||
"Redirecting, please wait.": "Umleitung, bitte warten.",
|
||||
"Sign In": "Anmelden",
|
||||
"Sign in with WebAuthn": "Melden Sie sich mit WebAuthn an",
|
||||
@@ -426,6 +444,8 @@
|
||||
"Is profile public - Tooltip": "Nach der Schließung können nur globale Administratoren oder Benutzer in der gleichen Organisation auf die Profilseite des Benutzers zugreifen",
|
||||
"Modify rule": "Regel ändern",
|
||||
"New Organization": "Neue Organisation",
|
||||
"Optional": "Optional",
|
||||
"Required": "Required",
|
||||
"Soft deletion": "Softe Löschung",
|
||||
"Soft deletion - Tooltip": "Wenn aktiviert, werden gelöschte Benutzer nicht vollständig aus der Datenbank entfernt. Stattdessen werden sie als gelöscht markiert",
|
||||
"Tags": "Tags",
|
||||
@@ -506,6 +526,34 @@
|
||||
"TreeNode": "TreeNode",
|
||||
"Write": "Schreib"
|
||||
},
|
||||
"plan": {
|
||||
"Edit Plan": "Edit Plan",
|
||||
"New Plan": "New Plan",
|
||||
"PerMonth": "pro Monat",
|
||||
"Price per month": "Price per month",
|
||||
"Price per year": "Price per year",
|
||||
"PricePerMonth": "Preis pro Monat",
|
||||
"PricePerMonth - Tooltip": "PricePerMonth - Tooltip",
|
||||
"PricePerYear": "Preis pro Jahr",
|
||||
"PricePerYear - Tooltip": "PricePerYear - Tooltip",
|
||||
"Sub role": "Sub role",
|
||||
"Sub roles - Tooltip": "Rolle im aktuellen Plan enthalten"
|
||||
},
|
||||
"pricing": {
|
||||
"Copy pricing page URL": "Preisseite URL kopieren",
|
||||
"Edit Pricing": "Edit Pricing",
|
||||
"Free": "Kostenlos",
|
||||
"Getting started": "Loslegen",
|
||||
"Has trial": "Testphase verfügbar",
|
||||
"Has trial - Tooltip": "Verfügbarkeit der Testphase nach Auswahl eines Plans",
|
||||
"New Pricing": "New Pricing",
|
||||
"Sub plans": "Zusatzpläne",
|
||||
"Sub plans - Tooltip": "Sub plans - Tooltip",
|
||||
"Trial duration": "Testphase Dauer",
|
||||
"Trial duration - Tooltip": "Dauer der Testphase",
|
||||
"days trial available!": "Tage Testphase verfügbar!",
|
||||
"pricing page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "Preisseite URL erfolgreich in die Zwischenablage kopiert. Bitte fügen Sie sie in ein Inkognito-Fenster oder einen anderen Browser ein."
|
||||
},
|
||||
"product": {
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "Kaufen",
|
||||
@@ -723,6 +771,24 @@
|
||||
"Your confirmed password is inconsistent with the password!": "Dein bestätigtes Passwort stimmt nicht mit dem Passwort überein!",
|
||||
"sign in now": "Jetzt anmelden"
|
||||
},
|
||||
"subscription": {
|
||||
"Approved": "Approved",
|
||||
"Duration": "Laufzeit",
|
||||
"Duration - Tooltip": "Laufzeit des Abonnements",
|
||||
"Edit Subscription": "Edit Subscription",
|
||||
"End Date": "Enddatum",
|
||||
"End Date - Tooltip": "Enddatum",
|
||||
"New Subscription": "New Subscription",
|
||||
"Pending": "Pending",
|
||||
"Start Date": "Startdatum",
|
||||
"Start Date - Tooltip": "Startdatum",
|
||||
"Sub plan": "Abonnementplan",
|
||||
"Sub plan - Tooltip": "Abonnementplan",
|
||||
"Sub plane": "Sub plane",
|
||||
"Sub user": "Sub user",
|
||||
"Sub users": "Abonnenten",
|
||||
"Sub users - Tooltip": "Abonnenten"
|
||||
},
|
||||
"syncer": {
|
||||
"Affiliation table": "Zuordnungstabelle",
|
||||
"Affiliation table - Tooltip": "Datenbanktabellenname der Arbeitseinheit",
|
||||
@@ -887,36 +953,5 @@
|
||||
"Method - Tooltip": "HTTP Methode",
|
||||
"New Webhook": "Neue Webhook",
|
||||
"Value": "Wert"
|
||||
},
|
||||
"plan": {
|
||||
"Sub roles - Tooltip": "Rolle im aktuellen Plan enthalten",
|
||||
"PricePerMonth": "Preis pro Monat",
|
||||
"PricePerYear": "Preis pro Jahr",
|
||||
"PerMonth": "pro Monat"
|
||||
},
|
||||
"pricing": {
|
||||
"Sub plans": "Zusatzpläne",
|
||||
"Sub plans - Tooltip": "Pläne im aktuellen Preismodell enthalten",
|
||||
"Has trial": "Testphase verfügbar",
|
||||
"Has trial - Tooltip": "Verfügbarkeit der Testphase nach Auswahl eines Plans",
|
||||
"Trial duration": "Testphase Dauer",
|
||||
"Trial duration - Tooltip": "Dauer der Testphase",
|
||||
"Getting started": "Loslegen",
|
||||
"Copy pricing page URL": "Preisseite URL kopieren",
|
||||
"pricing page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "Preisseite URL erfolgreich in die Zwischenablage kopiert. Bitte fügen Sie sie in ein Inkognito-Fenster oder einen anderen Browser ein.",
|
||||
"days trial available!": "Tage Testphase verfügbar!",
|
||||
"Free": "Kostenlos"
|
||||
},
|
||||
"subscription": {
|
||||
"Duration": "Laufzeit",
|
||||
"Duration - Tooltip": "Laufzeit des Abonnements",
|
||||
"Start Date": "Startdatum",
|
||||
"Start Date - Tooltip": "Startdatum",
|
||||
"End Date": "Enddatum",
|
||||
"End Date - Tooltip": "Enddatum",
|
||||
"Sub users": "Abonnenten",
|
||||
"Sub users - Tooltip": "Abonnenten",
|
||||
"Sub plan": "Abonnementplan",
|
||||
"Sub plan - Tooltip": "Abonnementplan"
|
||||
}
|
||||
}
|
||||
|
@@ -56,14 +56,16 @@
|
||||
"Grant types": "Grant types",
|
||||
"Grant types - Tooltip": "Select which grant types are allowed in the OAuth protocol",
|
||||
"Incremental": "Incremental",
|
||||
"Input": "Input",
|
||||
"Left": "Left",
|
||||
"Logged in successfully": "Logged in successfully",
|
||||
"Logged out successfully": "Logged out successfully",
|
||||
"New Application": "New Application",
|
||||
"No verification": "No verification",
|
||||
"None": "None",
|
||||
"Normal": "Normal",
|
||||
"Only signup": "Only signup",
|
||||
"Org choice mode": "Org choice mode",
|
||||
"Org choice mode - Tooltip": "Org choice mode - Tooltip",
|
||||
"Please input your application!": "Please input your application!",
|
||||
"Please input your organization!": "Please input your organization!",
|
||||
"Please select a HTML file": "Please select a HTML file",
|
||||
@@ -82,6 +84,7 @@
|
||||
"SAML metadata - Tooltip": "The metadata of SAML protocol",
|
||||
"SAML metadata URL copied to clipboard successfully": "SAML metadata URL copied to clipboard successfully",
|
||||
"SAML reply URL": "SAML reply URL",
|
||||
"Select": "Select",
|
||||
"Side panel HTML": "Side panel HTML",
|
||||
"Side panel HTML - Edit": "Side panel HTML - Edit",
|
||||
"Side panel HTML - Tooltip": "Customize the HTML code for the side panel of the login page",
|
||||
@@ -167,8 +170,13 @@
|
||||
"Affiliation URL": "Affiliation URL",
|
||||
"Affiliation URL - Tooltip": "The homepage URL for the affiliation",
|
||||
"Application": "Application",
|
||||
"Application - Tooltip": "Application - Tooltip",
|
||||
"Applications": "Applications",
|
||||
"Applications that require authentication": "Applications that require authentication",
|
||||
"Approve time": "Approve time",
|
||||
"Approve time - Tooltip": "Approve time - Tooltip",
|
||||
"Approver": "Approver",
|
||||
"Approver - Tooltip": "Approver - Tooltip",
|
||||
"Avatar": "Avatar",
|
||||
"Avatar - Tooltip": "Public avatar image for the user",
|
||||
"Back": "Back",
|
||||
@@ -182,6 +190,7 @@
|
||||
"Click to Upload": "Click to Upload",
|
||||
"Client IP": "Client IP",
|
||||
"Close": "Close",
|
||||
"Confirm": "Confirm",
|
||||
"Created time": "Created time",
|
||||
"Default application": "Default application",
|
||||
"Default application - Tooltip": "Default application for users registered directly from the organization page",
|
||||
@@ -226,6 +235,8 @@
|
||||
"Last name": "Last name",
|
||||
"Logo": "Logo",
|
||||
"Logo - Tooltip": "Icons that the application presents to the outside world",
|
||||
"MFA items": "MFA items",
|
||||
"MFA items - Tooltip": "MFA items - Tooltip",
|
||||
"Master password": "Master password",
|
||||
"Master password - Tooltip": "Can be used to log in to all users under this organization, making it convenient for administrators to log in as this user to solve technical issues",
|
||||
"Menu": "Menu",
|
||||
@@ -236,6 +247,7 @@
|
||||
"Models": "Models",
|
||||
"Name": "Name",
|
||||
"Name - Tooltip": "Unique, string-based ID",
|
||||
"None": "None",
|
||||
"OAuth providers": "OAuth providers",
|
||||
"OK": "OK",
|
||||
"Organization": "Organization",
|
||||
@@ -254,9 +266,9 @@
|
||||
"Phone - Tooltip": "Phone number",
|
||||
"Phone or email": "Phone or email",
|
||||
"Plans": "Plans",
|
||||
"Pricings": "Pricings",
|
||||
"Preview": "Preview",
|
||||
"Preview - Tooltip": "Preview the configured effects",
|
||||
"Pricings": "Pricings",
|
||||
"Products": "Products",
|
||||
"Provider": "Provider",
|
||||
"Provider - Tooltip": "Payment providers to be configured, including PayPal, Alipay, WeChat Pay, etc.",
|
||||
@@ -283,6 +295,8 @@
|
||||
"Sorry, you do not have permission to access this page or logged in status invalid.": "Sorry, you do not have permission to access this page or logged in status invalid.",
|
||||
"State": "State",
|
||||
"State - Tooltip": "State",
|
||||
"Submitter": "Submitter",
|
||||
"Submitter - Tooltip": "Submitter - Tooltip",
|
||||
"Subscriptions": "Subscriptions",
|
||||
"Successfully added": "Successfully added",
|
||||
"Successfully deleted": "Successfully deleted",
|
||||
@@ -354,8 +368,12 @@
|
||||
"Or sign in with another account": "Or sign in with another account",
|
||||
"Please input your Email or Phone!": "Please input your Email or Phone!",
|
||||
"Please input your code!": "Please input your code!",
|
||||
"Please input your organization name!": "Please input your organization name!",
|
||||
"Please input your password!": "Please input your password!",
|
||||
"Please input your password, at least 6 characters!": "Please input your password, at least 6 characters!",
|
||||
"Please select an organization": "Please select an organization",
|
||||
"Please select an organization to sign in": "Please select an organization to sign in",
|
||||
"Please type an organization to sign in": "Please type an organization to sign in",
|
||||
"Redirecting, please wait.": "Redirecting, please wait.",
|
||||
"Sign In": "Sign In",
|
||||
"Sign in with WebAuthn": "Sign in with WebAuthn",
|
||||
@@ -426,6 +444,8 @@
|
||||
"Is profile public - Tooltip": "After being closed, only global administrators or users in the same organization can access the user's profile page",
|
||||
"Modify rule": "Modify rule",
|
||||
"New Organization": "New Organization",
|
||||
"Optional": "Optional",
|
||||
"Required": "Required",
|
||||
"Soft deletion": "Soft deletion",
|
||||
"Soft deletion - Tooltip": "When enabled, deleting users will not completely remove them from the database. Instead, they will be marked as deleted",
|
||||
"Tags": "Tags",
|
||||
@@ -506,6 +526,34 @@
|
||||
"TreeNode": "TreeNode",
|
||||
"Write": "Write"
|
||||
},
|
||||
"plan": {
|
||||
"Edit Plan": "Edit Plan",
|
||||
"New Plan": "New Plan",
|
||||
"PerMonth": "per month",
|
||||
"Price per month": "Price per month",
|
||||
"Price per year": "Price per year",
|
||||
"PricePerMonth": "Price per month",
|
||||
"PricePerMonth - Tooltip": "PricePerMonth - Tooltip",
|
||||
"PricePerYear": "Price per year",
|
||||
"PricePerYear - Tooltip": "PricePerYear - Tooltip",
|
||||
"Sub role": "Sub role",
|
||||
"Sub roles - Tooltip": "Role included in the current plane"
|
||||
},
|
||||
"pricing": {
|
||||
"Copy pricing page URL": "Copy pricing page URL",
|
||||
"Edit Pricing": "Edit Pricing",
|
||||
"Free": "Free",
|
||||
"Getting started": "Getting started",
|
||||
"Has trial": "Has trial",
|
||||
"Has trial - Tooltip": "Availability of the trial period after choosing a plan",
|
||||
"New Pricing": "New Pricing",
|
||||
"Sub plans": "Sub plans",
|
||||
"Sub plans - Tooltip": "Sub plans - Tooltip",
|
||||
"Trial duration": "Trial duration",
|
||||
"Trial duration - Tooltip": "Trial duration period",
|
||||
"days trial available!": "days trial available!",
|
||||
"pricing page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "pricing page URL copied to clipboard successfully, please paste it into the incognito window or another browser"
|
||||
},
|
||||
"product": {
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "Buy",
|
||||
@@ -723,6 +771,24 @@
|
||||
"Your confirmed password is inconsistent with the password!": "Your confirmed password is inconsistent with the password!",
|
||||
"sign in now": "sign in now"
|
||||
},
|
||||
"subscription": {
|
||||
"Approved": "Approved",
|
||||
"Duration": "Duration",
|
||||
"Duration - Tooltip": "Subscription duration",
|
||||
"Edit Subscription": "Edit Subscription",
|
||||
"End Date": "End Date",
|
||||
"End Date - Tooltip": "End Date",
|
||||
"New Subscription": "New Subscription",
|
||||
"Pending": "Pending",
|
||||
"Start Date": "Start Date",
|
||||
"Start Date - Tooltip": "Start Date",
|
||||
"Sub plan": "Sub plan",
|
||||
"Sub plan - Tooltip": "Sub plan",
|
||||
"Sub plane": "Sub plane",
|
||||
"Sub user": "Sub user",
|
||||
"Sub users": "Sub users",
|
||||
"Sub users - Tooltip": "Sub users"
|
||||
},
|
||||
"syncer": {
|
||||
"Affiliation table": "Affiliation table",
|
||||
"Affiliation table - Tooltip": "Database table name of the work unit",
|
||||
@@ -887,37 +953,5 @@
|
||||
"Method - Tooltip": "HTTP method",
|
||||
"New Webhook": "New Webhook",
|
||||
"Value": "Value"
|
||||
},
|
||||
"plan": {
|
||||
"Sub roles - Tooltip": "Role included in the current plane",
|
||||
"PricePerMonth": "Price per month",
|
||||
"PricePerYear": "Price per year",
|
||||
"PerMonth": "per month"
|
||||
},
|
||||
"pricing": {
|
||||
"Sub plans": "Sub plans",
|
||||
"Sub plans - Tooltip": "Plans included in the current pricing",
|
||||
"Has trial": "Has trial",
|
||||
"Has trial - Tooltip": "Availability of the trial period after choosing a plan",
|
||||
"Trial duration": "Trial duration",
|
||||
"Trial duration - Tooltip": "Trial duration period",
|
||||
"Getting started" : "Getting started",
|
||||
"Copy pricing page URL": "Copy pricing page URL",
|
||||
"pricing page URL copied to clipboard successfully, please paste it into the incognito window or another browser" : "pricing page URL copied to clipboard successfully, please paste it into the incognito window or another browser",
|
||||
"days trial available!": "days trial available!",
|
||||
"Free": "Free"
|
||||
|
||||
},
|
||||
"subscription": {
|
||||
"Duration": "Duration",
|
||||
"Duration - Tooltip": "Subscription duration",
|
||||
"Start Date": "Start Date",
|
||||
"Start Date - Tooltip": "Start Date",
|
||||
"End Date": "End Date",
|
||||
"End Date - Tooltip": "End Date",
|
||||
"Sub users": "Sub users",
|
||||
"Sub users - Tooltip": "Sub users",
|
||||
"Sub plan": "Sub plan",
|
||||
"Sub plan - Tooltip": "Sub plan"
|
||||
}
|
||||
}
|
||||
|
@@ -56,14 +56,16 @@
|
||||
"Grant types": "Tipos de subvenciones",
|
||||
"Grant types - Tooltip": "Selecciona cuáles tipos de subvenciones están permitidas en el protocolo OAuth",
|
||||
"Incremental": "Incremental",
|
||||
"Input": "Input",
|
||||
"Left": "Izquierda",
|
||||
"Logged in successfully": "Acceso satisfactorio",
|
||||
"Logged out successfully": "Cerró sesión exitosamente",
|
||||
"New Application": "Nueva aplicación",
|
||||
"No verification": "No verification",
|
||||
"None": "Ninguno",
|
||||
"Normal": "Normal",
|
||||
"Only signup": "Only signup",
|
||||
"Org choice mode": "Org choice mode",
|
||||
"Org choice mode - Tooltip": "Org choice mode - Tooltip",
|
||||
"Please input your application!": "¡Por favor, ingrese su solicitud!",
|
||||
"Please input your organization!": "¡Por favor, ingrese su organización!",
|
||||
"Please select a HTML file": "Por favor, seleccione un archivo HTML",
|
||||
@@ -82,6 +84,7 @@
|
||||
"SAML metadata - Tooltip": "Los metadatos del protocolo SAML",
|
||||
"SAML metadata URL copied to clipboard successfully": "La URL de metadatos de SAML se ha copiado correctamente en el portapapeles",
|
||||
"SAML reply URL": "URL de respuesta SAML",
|
||||
"Select": "Select",
|
||||
"Side panel HTML": "Panel lateral HTML",
|
||||
"Side panel HTML - Edit": "Panel lateral HTML - Editar",
|
||||
"Side panel HTML - Tooltip": "Personaliza el código HTML del panel lateral de la página de inicio de sesión",
|
||||
@@ -167,8 +170,13 @@
|
||||
"Affiliation URL": "URL de afiliación",
|
||||
"Affiliation URL - Tooltip": "La URL de la página de inicio para la afiliación",
|
||||
"Application": "Aplicación",
|
||||
"Application - Tooltip": "Application - Tooltip",
|
||||
"Applications": "Aplicaciones",
|
||||
"Applications that require authentication": "Aplicaciones que requieren autenticación",
|
||||
"Approve time": "Approve time",
|
||||
"Approve time - Tooltip": "Approve time - Tooltip",
|
||||
"Approver": "Approver",
|
||||
"Approver - Tooltip": "Approver - Tooltip",
|
||||
"Avatar": "Avatar",
|
||||
"Avatar - Tooltip": "Imagen de avatar pública para el usuario",
|
||||
"Back": "Back",
|
||||
@@ -182,6 +190,7 @@
|
||||
"Click to Upload": "Haz clic para cargar",
|
||||
"Client IP": "Dirección IP del cliente",
|
||||
"Close": "Cerca",
|
||||
"Confirm": "Confirm",
|
||||
"Created time": "Tiempo creado",
|
||||
"Default application": "Aplicación predeterminada",
|
||||
"Default application - Tooltip": "Aplicación predeterminada para usuarios registrados directamente desde la página de la organización",
|
||||
@@ -226,6 +235,8 @@
|
||||
"Last name": "Apellido",
|
||||
"Logo": "Logotipo",
|
||||
"Logo - Tooltip": "Iconos que la aplicación presenta al mundo exterior",
|
||||
"MFA items": "MFA items",
|
||||
"MFA items - Tooltip": "MFA items - Tooltip",
|
||||
"Master password": "Contraseña maestra",
|
||||
"Master password - Tooltip": "Se puede usar para iniciar sesión en todos los usuarios de esta organización, lo que hace conveniente que los administradores inicien sesión como este usuario para resolver problemas técnicos",
|
||||
"Menu": "Menú",
|
||||
@@ -236,6 +247,7 @@
|
||||
"Models": "Modelos",
|
||||
"Name": "Nombre",
|
||||
"Name - Tooltip": "ID único basado en cadenas",
|
||||
"None": "None",
|
||||
"OAuth providers": "Proveedores de OAuth",
|
||||
"OK": "Vale",
|
||||
"Organization": "Organización",
|
||||
@@ -254,9 +266,9 @@
|
||||
"Phone - Tooltip": "Número de teléfono",
|
||||
"Phone or email": "Phone or email",
|
||||
"Plans": "Planes",
|
||||
"Pricings": "Precios",
|
||||
"Preview": "Avance",
|
||||
"Preview - Tooltip": "Vista previa de los efectos configurados",
|
||||
"Pricings": "Precios",
|
||||
"Products": "Productos",
|
||||
"Provider": "Proveedor",
|
||||
"Provider - Tooltip": "Proveedores de pago a configurar, incluyendo PayPal, Alipay, WeChat Pay, etc.",
|
||||
@@ -283,6 +295,8 @@
|
||||
"Sorry, you do not have permission to access this page or logged in status invalid.": "Lo siento, no tiene permiso para acceder a esta página o su estado de inicio de sesión es inválido.",
|
||||
"State": "Estado",
|
||||
"State - Tooltip": "Estado",
|
||||
"Submitter": "Submitter",
|
||||
"Submitter - Tooltip": "Submitter - Tooltip",
|
||||
"Subscriptions": "Suscripciones",
|
||||
"Successfully added": "Éxito al agregar",
|
||||
"Successfully deleted": "Éxito en la eliminación",
|
||||
@@ -354,8 +368,12 @@
|
||||
"Or sign in with another account": "O inicia sesión con otra cuenta",
|
||||
"Please input your Email or Phone!": "¡Por favor introduzca su correo electrónico o teléfono!",
|
||||
"Please input your code!": "¡Por favor ingrese su código!",
|
||||
"Please input your organization name!": "Please input your organization name!",
|
||||
"Please input your password!": "¡Ingrese su contraseña, por favor!",
|
||||
"Please input your password, at least 6 characters!": "Por favor ingrese su contraseña, ¡de al menos 6 caracteres!",
|
||||
"Please select an organization": "Please select an organization",
|
||||
"Please select an organization to sign in": "Please select an organization to sign in",
|
||||
"Please type an organization to sign in": "Please type an organization to sign in",
|
||||
"Redirecting, please wait.": "Redirigiendo, por favor espera.",
|
||||
"Sign In": "Iniciar sesión",
|
||||
"Sign in with WebAuthn": "Iniciar sesión con WebAuthn",
|
||||
@@ -426,6 +444,8 @@
|
||||
"Is profile public - Tooltip": "Después de estar cerrado, solo los administradores globales o usuarios de la misma organización pueden acceder a la página de perfil del usuario",
|
||||
"Modify rule": "Modificar regla",
|
||||
"New Organization": "Nueva organización",
|
||||
"Optional": "Optional",
|
||||
"Required": "Required",
|
||||
"Soft deletion": "Eliminación suave",
|
||||
"Soft deletion - Tooltip": "Cuando se habilita, la eliminación de usuarios no los eliminará por completo de la base de datos. En su lugar, se marcarán como eliminados",
|
||||
"Tags": "Etiquetas",
|
||||
@@ -506,6 +526,34 @@
|
||||
"TreeNode": "Nodo del árbol",
|
||||
"Write": "Escribir"
|
||||
},
|
||||
"plan": {
|
||||
"Edit Plan": "Edit Plan",
|
||||
"New Plan": "New Plan",
|
||||
"PerMonth": "por mes",
|
||||
"Price per month": "Price per month",
|
||||
"Price per year": "Price per year",
|
||||
"PricePerMonth": "Precio por mes",
|
||||
"PricePerMonth - Tooltip": "PricePerMonth - Tooltip",
|
||||
"PricePerYear": "Precio por año",
|
||||
"PricePerYear - Tooltip": "PricePerYear - Tooltip",
|
||||
"Sub role": "Sub role",
|
||||
"Sub roles - Tooltip": "Rol incluido en el plan actual"
|
||||
},
|
||||
"pricing": {
|
||||
"Copy pricing page URL": "Copiar URL de la página de precios",
|
||||
"Edit Pricing": "Edit Pricing",
|
||||
"Free": "Gratis",
|
||||
"Getting started": "Empezar",
|
||||
"Has trial": "Tiene período de prueba",
|
||||
"Has trial - Tooltip": "Disponibilidad del período de prueba después de elegir un plan",
|
||||
"New Pricing": "New Pricing",
|
||||
"Sub plans": "Planes adicionales",
|
||||
"Sub plans - Tooltip": "Sub plans - Tooltip",
|
||||
"Trial duration": "Duración del período de prueba",
|
||||
"Trial duration - Tooltip": "Duración del período de prueba",
|
||||
"days trial available!": "días de prueba disponibles",
|
||||
"pricing page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "URL de la página de precios copiada correctamente al portapapeles, péguela en una ventana de incógnito u otro navegador"
|
||||
},
|
||||
"product": {
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "Comprar",
|
||||
@@ -723,6 +771,24 @@
|
||||
"Your confirmed password is inconsistent with the password!": "¡Su contraseña confirmada no es coherente con la contraseña!",
|
||||
"sign in now": "Inicie sesión ahora"
|
||||
},
|
||||
"subscription": {
|
||||
"Approved": "Approved",
|
||||
"Duration": "Duración",
|
||||
"Duration - Tooltip": "Duración de la suscripción",
|
||||
"Edit Subscription": "Edit Subscription",
|
||||
"End Date": "Fecha de finalización",
|
||||
"End Date - Tooltip": "Fecha de finalización",
|
||||
"New Subscription": "New Subscription",
|
||||
"Pending": "Pending",
|
||||
"Start Date": "Fecha de inicio",
|
||||
"Start Date - Tooltip": "Fecha de inicio",
|
||||
"Sub plan": "Plan de suscripción",
|
||||
"Sub plan - Tooltip": "Plan de suscripción",
|
||||
"Sub plane": "Sub plane",
|
||||
"Sub user": "Sub user",
|
||||
"Sub users": "Usuarios de la suscripción",
|
||||
"Sub users - Tooltip": "Usuarios de la suscripción"
|
||||
},
|
||||
"syncer": {
|
||||
"Affiliation table": "Tabla de afiliación",
|
||||
"Affiliation table - Tooltip": "Nombre de la tabla de base de datos de la unidad de trabajo",
|
||||
@@ -887,36 +953,5 @@
|
||||
"Method - Tooltip": "Método HTTP",
|
||||
"New Webhook": "Nuevo Webhook",
|
||||
"Value": "Valor"
|
||||
},
|
||||
"plan": {
|
||||
"Sub roles - Tooltip": "Rol incluido en el plan actual",
|
||||
"PricePerMonth": "Precio por mes",
|
||||
"PricePerYear": "Precio por año",
|
||||
"PerMonth": "por mes"
|
||||
},
|
||||
"pricing": {
|
||||
"Sub plans": "Planes adicionales",
|
||||
"Sub plans - Tooltip": "Planes incluidos en la tarifa actual",
|
||||
"Has trial": "Tiene período de prueba",
|
||||
"Has trial - Tooltip": "Disponibilidad del período de prueba después de elegir un plan",
|
||||
"Trial duration": "Duración del período de prueba",
|
||||
"Trial duration - Tooltip": "Duración del período de prueba",
|
||||
"Getting started": "Empezar",
|
||||
"Copy pricing page URL": "Copiar URL de la página de precios",
|
||||
"pricing page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "URL de la página de precios copiada correctamente al portapapeles, péguela en una ventana de incógnito u otro navegador",
|
||||
"days trial available!": "días de prueba disponibles",
|
||||
"Free": "Gratis"
|
||||
},
|
||||
"subscription": {
|
||||
"Duration": "Duración",
|
||||
"Duration - Tooltip": "Duración de la suscripción",
|
||||
"Start Date": "Fecha de inicio",
|
||||
"Start Date - Tooltip": "Fecha de inicio",
|
||||
"End Date": "Fecha de finalización",
|
||||
"End Date - Tooltip": "Fecha de finalización",
|
||||
"Sub users": "Usuarios de la suscripción",
|
||||
"Sub users - Tooltip": "Usuarios de la suscripción",
|
||||
"Sub plan": "Plan de suscripción",
|
||||
"Sub plan - Tooltip": "Plan de suscripción"
|
||||
}
|
||||
}
|
||||
|
@@ -56,14 +56,16 @@
|
||||
"Grant types": "Types de subventions",
|
||||
"Grant types - Tooltip": "Sélectionnez les types d'autorisations autorisés dans le protocole OAuth",
|
||||
"Incremental": "Incremental",
|
||||
"Input": "Input",
|
||||
"Left": "gauche",
|
||||
"Logged in successfully": "Connecté avec succès",
|
||||
"Logged out successfully": "Déconnecté avec succès",
|
||||
"New Application": "Nouvelle application",
|
||||
"No verification": "No verification",
|
||||
"None": "Aucun",
|
||||
"Normal": "Normal",
|
||||
"Only signup": "Only signup",
|
||||
"Org choice mode": "Org choice mode",
|
||||
"Org choice mode - Tooltip": "Org choice mode - Tooltip",
|
||||
"Please input your application!": "Veuillez saisir votre demande d'application !",
|
||||
"Please input your organization!": "S'il vous plaît saisir votre organisation !",
|
||||
"Please select a HTML file": "S'il vous plaît sélectionnez un fichier HTML",
|
||||
@@ -82,6 +84,7 @@
|
||||
"SAML metadata - Tooltip": "Les métadonnées du protocole SAML",
|
||||
"SAML metadata URL copied to clipboard successfully": "URL des métadonnées SAML copiée dans le presse-papiers avec succès",
|
||||
"SAML reply URL": "URL de réponse SAML",
|
||||
"Select": "Select",
|
||||
"Side panel HTML": "Panneau latéral HTML",
|
||||
"Side panel HTML - Edit": "Panneau latéral HTML - Modifier",
|
||||
"Side panel HTML - Tooltip": "Personnalisez le code HTML du panneau latéral de la page de connexion",
|
||||
@@ -167,8 +170,13 @@
|
||||
"Affiliation URL": "URL d'affiliation",
|
||||
"Affiliation URL - Tooltip": "La URL de la page d'accueil pour l'affiliation",
|
||||
"Application": "Application",
|
||||
"Application - Tooltip": "Application - Tooltip",
|
||||
"Applications": "Applications",
|
||||
"Applications that require authentication": "Applications qui nécessitent une authentification",
|
||||
"Approve time": "Approve time",
|
||||
"Approve time - Tooltip": "Approve time - Tooltip",
|
||||
"Approver": "Approver",
|
||||
"Approver - Tooltip": "Approver - Tooltip",
|
||||
"Avatar": "Avatar",
|
||||
"Avatar - Tooltip": "Image d'avatar public pour l'utilisateur",
|
||||
"Back": "Back",
|
||||
@@ -182,6 +190,7 @@
|
||||
"Click to Upload": "Cliquez pour télécharger",
|
||||
"Client IP": "Adresse IP du client",
|
||||
"Close": "Fermer",
|
||||
"Confirm": "Confirm",
|
||||
"Created time": "Temps créé",
|
||||
"Default application": "Application par défaut",
|
||||
"Default application - Tooltip": "Application par défaut pour les utilisateurs enregistrés directement depuis la page de l'organisation",
|
||||
@@ -226,6 +235,8 @@
|
||||
"Last name": "Nom de famille",
|
||||
"Logo": "Logo",
|
||||
"Logo - Tooltip": "Icônes que l'application présente au monde extérieur",
|
||||
"MFA items": "MFA items",
|
||||
"MFA items - Tooltip": "MFA items - Tooltip",
|
||||
"Master password": "Mot de passe principal",
|
||||
"Master password - Tooltip": "Peut être utilisé pour se connecter à tous les utilisateurs sous cette organisation, ce qui facilite la connexion des administrateurs en tant que cet utilisateur pour résoudre les problèmes techniques",
|
||||
"Menu": "Menu",
|
||||
@@ -236,6 +247,7 @@
|
||||
"Models": "Modèles",
|
||||
"Name": "Nom",
|
||||
"Name - Tooltip": "Identifiant unique à base de chaîne",
|
||||
"None": "None",
|
||||
"OAuth providers": "Fournisseurs OAuth",
|
||||
"OK": "D'accord",
|
||||
"Organization": "Organisation",
|
||||
@@ -254,9 +266,9 @@
|
||||
"Phone - Tooltip": "Numéro de téléphone",
|
||||
"Phone or email": "Phone or email",
|
||||
"Plans": "Plans",
|
||||
"Pricings": "Tarifs",
|
||||
"Preview": "Aperçu",
|
||||
"Preview - Tooltip": "Prévisualisez les effets configurés",
|
||||
"Pricings": "Tarifs",
|
||||
"Products": "Produits",
|
||||
"Provider": "Fournisseur",
|
||||
"Provider - Tooltip": "Les fournisseurs de paiement doivent être configurés, y compris PayPal, Alipay, WeChat Pay, etc.",
|
||||
@@ -283,6 +295,8 @@
|
||||
"Sorry, you do not have permission to access this page or logged in status invalid.": "Désolé, vous n'avez pas la permission d'accéder à cette page ou votre statut de connexion est invalide.",
|
||||
"State": "État",
|
||||
"State - Tooltip": "État",
|
||||
"Submitter": "Submitter",
|
||||
"Submitter - Tooltip": "Submitter - Tooltip",
|
||||
"Subscriptions": "Abonnements",
|
||||
"Successfully added": "Ajouté avec succès",
|
||||
"Successfully deleted": "Supprimé avec succès",
|
||||
@@ -354,8 +368,12 @@
|
||||
"Or sign in with another account": "Ou connectez-vous avec un autre compte",
|
||||
"Please input your Email or Phone!": "S'il vous plaît, entrez votre adresse e-mail ou votre numéro de téléphone !",
|
||||
"Please input your code!": "Veuillez entrer votre code !",
|
||||
"Please input your organization name!": "Please input your organization name!",
|
||||
"Please input your password!": "Veuillez entrer votre mot de passe !",
|
||||
"Please input your password, at least 6 characters!": "Veuillez entrer votre mot de passe, au moins 6 caractères!",
|
||||
"Please select an organization": "Please select an organization",
|
||||
"Please select an organization to sign in": "Please select an organization to sign in",
|
||||
"Please type an organization to sign in": "Please type an organization to sign in",
|
||||
"Redirecting, please wait.": "Redirection en cours, veuillez patienter.",
|
||||
"Sign In": "Se connecter",
|
||||
"Sign in with WebAuthn": "Connectez-vous avec WebAuthn",
|
||||
@@ -426,6 +444,8 @@
|
||||
"Is profile public - Tooltip": "Après sa fermeture, seuls les administrateurs mondiaux ou les utilisateurs de la même organisation peuvent accéder à la page de profil de l'utilisateur",
|
||||
"Modify rule": "Modifier la règle",
|
||||
"New Organization": "Nouvelle organisation",
|
||||
"Optional": "Optional",
|
||||
"Required": "Required",
|
||||
"Soft deletion": "Suppression douce",
|
||||
"Soft deletion - Tooltip": "Lorsqu'elle est activée, la suppression d'utilisateurs ne les retirera pas complètement de la base de données. Au lieu de cela, ils seront marqués comme supprimés",
|
||||
"Tags": "Étiquettes",
|
||||
@@ -506,6 +526,34 @@
|
||||
"TreeNode": "Nœud arborescent",
|
||||
"Write": "Écrire"
|
||||
},
|
||||
"plan": {
|
||||
"Edit Plan": "Edit Plan",
|
||||
"New Plan": "New Plan",
|
||||
"PerMonth": "par mois",
|
||||
"Price per month": "Price per month",
|
||||
"Price per year": "Price per year",
|
||||
"PricePerMonth": "Prix par mois",
|
||||
"PricePerMonth - Tooltip": "PricePerMonth - Tooltip",
|
||||
"PricePerYear": "Prix par an",
|
||||
"PricePerYear - Tooltip": "PricePerYear - Tooltip",
|
||||
"Sub role": "Sub role",
|
||||
"Sub roles - Tooltip": "Rôle inclus dans le plan actuel"
|
||||
},
|
||||
"pricing": {
|
||||
"Copy pricing page URL": "Copier l'URL de la page tarifs",
|
||||
"Edit Pricing": "Edit Pricing",
|
||||
"Free": "Gratuit",
|
||||
"Getting started": "Commencer",
|
||||
"Has trial": "Essai gratuit disponible",
|
||||
"Has trial - Tooltip": "Disponibilité de la période d'essai après avoir choisi un forfait",
|
||||
"New Pricing": "New Pricing",
|
||||
"Sub plans": "Forfaits supplémentaires",
|
||||
"Sub plans - Tooltip": "Sub plans - Tooltip",
|
||||
"Trial duration": "Durée de l'essai",
|
||||
"Trial duration - Tooltip": "Durée de la période d'essai",
|
||||
"days trial available!": "jours d'essai disponibles !",
|
||||
"pricing page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "URL de la page tarifs copiée avec succès dans le presse-papiers, veuillez le coller dans une fenêtre de navigation privée ou un autre navigateur"
|
||||
},
|
||||
"product": {
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "Acheter",
|
||||
@@ -723,6 +771,24 @@
|
||||
"Your confirmed password is inconsistent with the password!": "Votre mot de passe confirmé est incompatible avec le mot de passe !",
|
||||
"sign in now": "Connectez-vous maintenant"
|
||||
},
|
||||
"subscription": {
|
||||
"Approved": "Approved",
|
||||
"Duration": "Durée",
|
||||
"Duration - Tooltip": "Durée de l'abonnement",
|
||||
"Edit Subscription": "Edit Subscription",
|
||||
"End Date": "Date de fin",
|
||||
"End Date - Tooltip": "Date de fin",
|
||||
"New Subscription": "New Subscription",
|
||||
"Pending": "Pending",
|
||||
"Start Date": "Date de début",
|
||||
"Start Date - Tooltip": "Date de début",
|
||||
"Sub plan": "Plan de l'abonnement",
|
||||
"Sub plan - Tooltip": "Plan de l'abonnement",
|
||||
"Sub plane": "Sub plane",
|
||||
"Sub user": "Sub user",
|
||||
"Sub users": "Utilisateurs de l'abonnement",
|
||||
"Sub users - Tooltip": "Utilisateurs de l'abonnement"
|
||||
},
|
||||
"syncer": {
|
||||
"Affiliation table": "Table d'affiliation",
|
||||
"Affiliation table - Tooltip": "Nom de la table de la base de données de l'unité de travail",
|
||||
@@ -887,36 +953,5 @@
|
||||
"Method - Tooltip": "Méthode HTTP",
|
||||
"New Webhook": "Nouveau webhook",
|
||||
"Value": "Valeur"
|
||||
},
|
||||
"plan": {
|
||||
"Sub roles - Tooltip": "Rôle inclus dans le plan actuel",
|
||||
"PricePerMonth": "Prix par mois",
|
||||
"PricePerYear": "Prix par an",
|
||||
"PerMonth": "par mois"
|
||||
},
|
||||
"pricing": {
|
||||
"Sub plans": "Forfaits supplémentaires",
|
||||
"Sub plans - Tooltip": "Forfaits inclus dans la tarification actuelle",
|
||||
"Has trial": "Essai gratuit disponible",
|
||||
"Has trial - Tooltip": "Disponibilité de la période d'essai après avoir choisi un forfait",
|
||||
"Trial duration": "Durée de l'essai",
|
||||
"Trial duration - Tooltip": "Durée de la période d'essai",
|
||||
"Getting started": "Commencer",
|
||||
"Copy pricing page URL": "Copier l'URL de la page tarifs",
|
||||
"pricing page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "URL de la page tarifs copiée avec succès dans le presse-papiers, veuillez le coller dans une fenêtre de navigation privée ou un autre navigateur",
|
||||
"days trial available!": "jours d'essai disponibles !",
|
||||
"Free": "Gratuit"
|
||||
},
|
||||
"subscription": {
|
||||
"Duration": "Durée",
|
||||
"Duration - Tooltip": "Durée de l'abonnement",
|
||||
"Start Date": "Date de début",
|
||||
"Start Date - Tooltip": "Date de début",
|
||||
"End Date": "Date de fin",
|
||||
"End Date - Tooltip": "Date de fin",
|
||||
"Sub users": "Utilisateurs de l'abonnement",
|
||||
"Sub users - Tooltip": "Utilisateurs de l'abonnement",
|
||||
"Sub plan": "Plan de l'abonnement",
|
||||
"Sub plan - Tooltip": "Plan de l'abonnement"
|
||||
}
|
||||
}
|
||||
|
@@ -56,14 +56,16 @@
|
||||
"Grant types": "Jenis-jenis hibah",
|
||||
"Grant types - Tooltip": "Pilih jenis hibah apa yang diperbolehkan dalam protokol OAuth",
|
||||
"Incremental": "Incremental",
|
||||
"Input": "Input",
|
||||
"Left": "Kiri",
|
||||
"Logged in successfully": "Berhasil masuk",
|
||||
"Logged out successfully": "Berhasil keluar dari sistem",
|
||||
"New Application": "Aplikasi Baru",
|
||||
"No verification": "No verification",
|
||||
"None": "Tidak ada",
|
||||
"Normal": "Normal",
|
||||
"Only signup": "Only signup",
|
||||
"Org choice mode": "Org choice mode",
|
||||
"Org choice mode - Tooltip": "Org choice mode - Tooltip",
|
||||
"Please input your application!": "Silakan masukkan aplikasi Anda!",
|
||||
"Please input your organization!": "Silakan masukkan organisasi Anda!",
|
||||
"Please select a HTML file": "Silahkan pilih file HTML",
|
||||
@@ -82,6 +84,7 @@
|
||||
"SAML metadata - Tooltip": "Metadata dari protokol SAML",
|
||||
"SAML metadata URL copied to clipboard successfully": "URL metadata SAML berhasil disalin ke clipboard",
|
||||
"SAML reply URL": "Alamat URL Balasan SAML",
|
||||
"Select": "Select",
|
||||
"Side panel HTML": "Panel samping HTML",
|
||||
"Side panel HTML - Edit": "Panel sisi HTML - Sunting",
|
||||
"Side panel HTML - Tooltip": "Menyesuaikan kode HTML untuk panel samping halaman login",
|
||||
@@ -167,8 +170,13 @@
|
||||
"Affiliation URL": "URL Afiliasi",
|
||||
"Affiliation URL - Tooltip": "URL halaman depan untuk afiliasi",
|
||||
"Application": "Aplikasi",
|
||||
"Application - Tooltip": "Application - Tooltip",
|
||||
"Applications": "Aplikasi",
|
||||
"Applications that require authentication": "Aplikasi yang memerlukan autentikasi",
|
||||
"Approve time": "Approve time",
|
||||
"Approve time - Tooltip": "Approve time - Tooltip",
|
||||
"Approver": "Approver",
|
||||
"Approver - Tooltip": "Approver - Tooltip",
|
||||
"Avatar": "Avatar",
|
||||
"Avatar - Tooltip": "Gambar avatar publik untuk pengguna",
|
||||
"Back": "Back",
|
||||
@@ -182,6 +190,7 @@
|
||||
"Click to Upload": "Klik untuk Mengunggah",
|
||||
"Client IP": "IP klien",
|
||||
"Close": "Tutup",
|
||||
"Confirm": "Confirm",
|
||||
"Created time": "Waktu dibuat",
|
||||
"Default application": "Aplikasi default",
|
||||
"Default application - Tooltip": "Aplikasi default untuk pengguna yang terdaftar langsung dari halaman organisasi",
|
||||
@@ -226,6 +235,8 @@
|
||||
"Last name": "Nama belakang",
|
||||
"Logo": "Logo",
|
||||
"Logo - Tooltip": "Ikon-ikon yang disajikan aplikasi ke dunia luar",
|
||||
"MFA items": "MFA items",
|
||||
"MFA items - Tooltip": "MFA items - Tooltip",
|
||||
"Master password": "Kata sandi utama",
|
||||
"Master password - Tooltip": "Dapat digunakan untuk masuk ke semua pengguna di bawah organisasi ini, sehingga memudahkan administrator untuk masuk sebagai pengguna ini untuk menyelesaikan masalah teknis",
|
||||
"Menu": "Daftar makanan",
|
||||
@@ -236,6 +247,7 @@
|
||||
"Models": "Model-model",
|
||||
"Name": "Nama",
|
||||
"Name - Tooltip": "ID unik berbasis string",
|
||||
"None": "None",
|
||||
"OAuth providers": "Penyedia OAuth",
|
||||
"OK": "Baik atau Oke",
|
||||
"Organization": "Organisasi",
|
||||
@@ -254,9 +266,9 @@
|
||||
"Phone - Tooltip": "Nomor telepon",
|
||||
"Phone or email": "Phone or email",
|
||||
"Plans": "Rencana",
|
||||
"Pricings": "Harga",
|
||||
"Preview": "Tinjauan",
|
||||
"Preview - Tooltip": "Mengawali pratinjau efek yang sudah dikonfigurasi",
|
||||
"Pricings": "Harga",
|
||||
"Products": "Produk",
|
||||
"Provider": "Penyedia",
|
||||
"Provider - Tooltip": "Penyedia pembayaran harus dikonfigurasi, termasuk PayPal, Alipay, WeChat Pay, dan sebagainya.",
|
||||
@@ -283,6 +295,8 @@
|
||||
"Sorry, you do not have permission to access this page or logged in status invalid.": "Maaf, Anda tidak memiliki izin untuk mengakses halaman ini atau status masuk tidak valid.",
|
||||
"State": "Negara",
|
||||
"State - Tooltip": "Negara",
|
||||
"Submitter": "Submitter",
|
||||
"Submitter - Tooltip": "Submitter - Tooltip",
|
||||
"Subscriptions": "Langganan",
|
||||
"Successfully added": "Berhasil ditambahkan",
|
||||
"Successfully deleted": "Berhasil dihapus",
|
||||
@@ -354,8 +368,12 @@
|
||||
"Or sign in with another account": "Atau masuk dengan akun lain",
|
||||
"Please input your Email or Phone!": "Silahkan masukkan email atau nomor telepon Anda!",
|
||||
"Please input your code!": "Silakan masukkan kode Anda!",
|
||||
"Please input your organization name!": "Please input your organization name!",
|
||||
"Please input your password!": "Masukkan kata sandi Anda!",
|
||||
"Please input your password, at least 6 characters!": "Silakan masukkan kata sandi Anda, minimal 6 karakter!",
|
||||
"Please select an organization": "Please select an organization",
|
||||
"Please select an organization to sign in": "Please select an organization to sign in",
|
||||
"Please type an organization to sign in": "Please type an organization to sign in",
|
||||
"Redirecting, please wait.": "Mengalihkan, harap tunggu.",
|
||||
"Sign In": "Masuk",
|
||||
"Sign in with WebAuthn": "Masuk dengan WebAuthn",
|
||||
@@ -426,6 +444,8 @@
|
||||
"Is profile public - Tooltip": "Setelah ditutup, hanya administrator global atau pengguna di organisasi yang sama yang dapat mengakses halaman profil pengguna",
|
||||
"Modify rule": "Mengubah aturan",
|
||||
"New Organization": "Organisasi baru",
|
||||
"Optional": "Optional",
|
||||
"Required": "Required",
|
||||
"Soft deletion": "Penghapusan lunak",
|
||||
"Soft deletion - Tooltip": "Ketika diaktifkan, menghapus pengguna tidak akan sepenuhnya menghapus mereka dari database. Sebaliknya, mereka akan ditandai sebagai dihapus",
|
||||
"Tags": "Tag-tag",
|
||||
@@ -506,6 +526,34 @@
|
||||
"TreeNode": "PohonNode",
|
||||
"Write": "Menulis"
|
||||
},
|
||||
"plan": {
|
||||
"Edit Plan": "Edit Plan",
|
||||
"New Plan": "New Plan",
|
||||
"PerMonth": "per bulan",
|
||||
"Price per month": "Price per month",
|
||||
"Price per year": "Price per year",
|
||||
"PricePerMonth": "Harga per bulan",
|
||||
"PricePerMonth - Tooltip": "PricePerMonth - Tooltip",
|
||||
"PricePerYear": "Harga per tahun",
|
||||
"PricePerYear - Tooltip": "PricePerYear - Tooltip",
|
||||
"Sub role": "Sub role",
|
||||
"Sub roles - Tooltip": "Peran yang termasuk dalam rencana saat ini"
|
||||
},
|
||||
"pricing": {
|
||||
"Copy pricing page URL": "Salin URL halaman harga",
|
||||
"Edit Pricing": "Edit Pricing",
|
||||
"Free": "Gratis",
|
||||
"Getting started": "Mulai",
|
||||
"Has trial": "Mempunyai periode percobaan",
|
||||
"Has trial - Tooltip": "Ketersediaan periode percobaan setelah memilih rencana",
|
||||
"New Pricing": "New Pricing",
|
||||
"Sub plans": "Rencana Tambahan",
|
||||
"Sub plans - Tooltip": "Sub plans - Tooltip",
|
||||
"Trial duration": "Durasi percobaan",
|
||||
"Trial duration - Tooltip": "Durasi periode percobaan",
|
||||
"days trial available!": "hari percobaan tersedia!",
|
||||
"pricing page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "URL halaman harga berhasil disalin ke clipboard, silakan tempelkan ke dalam jendela mode penyamaran atau browser lainnya"
|
||||
},
|
||||
"product": {
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "Beli",
|
||||
@@ -723,6 +771,24 @@
|
||||
"Your confirmed password is inconsistent with the password!": "Kata sandi yang dikonfirmasi tidak konsisten dengan kata sandi!",
|
||||
"sign in now": "Masuk sekarang"
|
||||
},
|
||||
"subscription": {
|
||||
"Approved": "Approved",
|
||||
"Duration": "Durasi",
|
||||
"Duration - Tooltip": "Durasi langganan",
|
||||
"Edit Subscription": "Edit Subscription",
|
||||
"End Date": "Tanggal Berakhir",
|
||||
"End Date - Tooltip": "Tanggal Berakhir",
|
||||
"New Subscription": "New Subscription",
|
||||
"Pending": "Pending",
|
||||
"Start Date": "Tanggal Mulai",
|
||||
"Start Date - Tooltip": "Tanggal Mulai",
|
||||
"Sub plan": "Rencana Langganan",
|
||||
"Sub plan - Tooltip": "Rencana Langganan",
|
||||
"Sub plane": "Sub plane",
|
||||
"Sub user": "Sub user",
|
||||
"Sub users": "Pengguna Langganan",
|
||||
"Sub users - Tooltip": "Pengguna Langganan"
|
||||
},
|
||||
"syncer": {
|
||||
"Affiliation table": "Tabel afiliasi",
|
||||
"Affiliation table - Tooltip": "Nama tabel database dari unit kerja",
|
||||
@@ -887,36 +953,5 @@
|
||||
"Method - Tooltip": "Metode HTTP",
|
||||
"New Webhook": "Webhook Baru",
|
||||
"Value": "Nilai"
|
||||
},
|
||||
"plan": {
|
||||
"Sub roles - Tooltip": "Peran yang termasuk dalam rencana saat ini",
|
||||
"PricePerMonth": "Harga per bulan",
|
||||
"PricePerYear": "Harga per tahun",
|
||||
"PerMonth": "per bulan"
|
||||
},
|
||||
"pricing": {
|
||||
"Sub plans": "Rencana Tambahan",
|
||||
"Sub plans - Tooltip": "Rencana yang termasuk dalam harga saat ini",
|
||||
"Has trial": "Mempunyai periode percobaan",
|
||||
"Has trial - Tooltip": "Ketersediaan periode percobaan setelah memilih rencana",
|
||||
"Trial duration": "Durasi percobaan",
|
||||
"Trial duration - Tooltip": "Durasi periode percobaan",
|
||||
"Getting started": "Mulai",
|
||||
"Copy pricing page URL": "Salin URL halaman harga",
|
||||
"pricing page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "URL halaman harga berhasil disalin ke clipboard, silakan tempelkan ke dalam jendela mode penyamaran atau browser lainnya",
|
||||
"days trial available!": "hari percobaan tersedia!",
|
||||
"Free": "Gratis"
|
||||
},
|
||||
"subscription": {
|
||||
"Duration": "Durasi",
|
||||
"Duration - Tooltip": "Durasi langganan",
|
||||
"Start Date": "Tanggal Mulai",
|
||||
"Start Date - Tooltip": "Tanggal Mulai",
|
||||
"End Date": "Tanggal Berakhir",
|
||||
"End Date - Tooltip": "Tanggal Berakhir",
|
||||
"Sub users": "Pengguna Langganan",
|
||||
"Sub users - Tooltip": "Pengguna Langganan",
|
||||
"Sub plan": "Rencana Langganan",
|
||||
"Sub plan - Tooltip": "Rencana Langganan"
|
||||
}
|
||||
}
|
||||
|
@@ -56,14 +56,16 @@
|
||||
"Grant types": "グラント種類",
|
||||
"Grant types - Tooltip": "OAuthプロトコルで許可されているグラントタイプを選択してください",
|
||||
"Incremental": "Incremental",
|
||||
"Input": "Input",
|
||||
"Left": "左",
|
||||
"Logged in successfully": "正常にログインしました",
|
||||
"Logged out successfully": "正常にログアウトしました",
|
||||
"New Application": "新しいアプリケーション",
|
||||
"No verification": "No verification",
|
||||
"None": "なし",
|
||||
"Normal": "Normal",
|
||||
"Only signup": "Only signup",
|
||||
"Org choice mode": "Org choice mode",
|
||||
"Org choice mode - Tooltip": "Org choice mode - Tooltip",
|
||||
"Please input your application!": "あなたの申請を入力してください!",
|
||||
"Please input your organization!": "あなたの組織を入力してください!",
|
||||
"Please select a HTML file": "HTMLファイルを選択してください",
|
||||
@@ -82,6 +84,7 @@
|
||||
"SAML metadata - Tooltip": "SAMLプロトコルのメタデータ",
|
||||
"SAML metadata URL copied to clipboard successfully": "SAMLメタデータURLが正常にクリップボードにコピーされました",
|
||||
"SAML reply URL": "SAMLリプライURL",
|
||||
"Select": "Select",
|
||||
"Side panel HTML": "サイドパネルのHTML",
|
||||
"Side panel HTML - Edit": "サイドパネルのHTML - 編集",
|
||||
"Side panel HTML - Tooltip": "ログインページのサイドパネルに対するHTMLコードをカスタマイズしてください",
|
||||
@@ -167,8 +170,13 @@
|
||||
"Affiliation URL": "所属するURL",
|
||||
"Affiliation URL - Tooltip": "所属先のホームページURL",
|
||||
"Application": "アプリケーション",
|
||||
"Application - Tooltip": "Application - Tooltip",
|
||||
"Applications": "アプリケーション",
|
||||
"Applications that require authentication": "認証が必要なアプリケーション",
|
||||
"Approve time": "Approve time",
|
||||
"Approve time - Tooltip": "Approve time - Tooltip",
|
||||
"Approver": "Approver",
|
||||
"Approver - Tooltip": "Approver - Tooltip",
|
||||
"Avatar": "アバター",
|
||||
"Avatar - Tooltip": "ユーザーのパブリックアバター画像",
|
||||
"Back": "Back",
|
||||
@@ -182,6 +190,7 @@
|
||||
"Click to Upload": "アップロードするにはクリックしてください",
|
||||
"Client IP": "クライアントIP",
|
||||
"Close": "閉じる",
|
||||
"Confirm": "Confirm",
|
||||
"Created time": "作成された時間",
|
||||
"Default application": "デフォルトアプリケーション",
|
||||
"Default application - Tooltip": "組織ページから直接登録されたユーザーのデフォルトアプリケーション",
|
||||
@@ -226,6 +235,8 @@
|
||||
"Last name": "苗字",
|
||||
"Logo": "ロゴ",
|
||||
"Logo - Tooltip": "アプリケーションが外部世界に示すアイコン",
|
||||
"MFA items": "MFA items",
|
||||
"MFA items - Tooltip": "MFA items - Tooltip",
|
||||
"Master password": "マスターパスワード",
|
||||
"Master password - Tooltip": "この組織のすべてのユーザーにログインするために使用でき、管理者が技術的な問題を解決するためにこのユーザーとしてログインするのに便利です",
|
||||
"Menu": "メニュー",
|
||||
@@ -236,6 +247,7 @@
|
||||
"Models": "モデル",
|
||||
"Name": "名前",
|
||||
"Name - Tooltip": "ユニークで文字列ベースのID",
|
||||
"None": "None",
|
||||
"OAuth providers": "OAuthプロバイダー",
|
||||
"OK": "了解",
|
||||
"Organization": "組織",
|
||||
@@ -254,9 +266,9 @@
|
||||
"Phone - Tooltip": "電話番号",
|
||||
"Phone or email": "Phone or email",
|
||||
"Plans": "プラン",
|
||||
"Pricings": "価格設定",
|
||||
"Preview": "プレビュー",
|
||||
"Preview - Tooltip": "構成されたエフェクトをプレビューする",
|
||||
"Pricings": "価格設定",
|
||||
"Products": "製品",
|
||||
"Provider": "プロバイダー",
|
||||
"Provider - Tooltip": "支払いプロバイダーを設定する必要があります。これには、PayPal、Alipay、WeChat Payなどが含まれます。",
|
||||
@@ -283,6 +295,8 @@
|
||||
"Sorry, you do not have permission to access this page or logged in status invalid.": "申し訳ありませんが、このページにアクセスする権限がありません、またはログイン状態が無効です。",
|
||||
"State": "州",
|
||||
"State - Tooltip": "状態",
|
||||
"Submitter": "Submitter",
|
||||
"Submitter - Tooltip": "Submitter - Tooltip",
|
||||
"Subscriptions": "サブスクリプション",
|
||||
"Successfully added": "正常に追加されました",
|
||||
"Successfully deleted": "正常に削除されました",
|
||||
@@ -354,8 +368,12 @@
|
||||
"Or sign in with another account": "別のアカウントでサインインする",
|
||||
"Please input your Email or Phone!": "あなたのメールアドレスまたは電話番号を入力してください!",
|
||||
"Please input your code!": "あなたのコードを入力してください!",
|
||||
"Please input your organization name!": "Please input your organization name!",
|
||||
"Please input your password!": "パスワードを入力してください!",
|
||||
"Please input your password, at least 6 characters!": "パスワードを入力してください。少なくとも6文字です!",
|
||||
"Please select an organization": "Please select an organization",
|
||||
"Please select an organization to sign in": "Please select an organization to sign in",
|
||||
"Please type an organization to sign in": "Please type an organization to sign in",
|
||||
"Redirecting, please wait.": "リダイレクト中、お待ちください。",
|
||||
"Sign In": "サインイン",
|
||||
"Sign in with WebAuthn": "WebAuthnでサインインしてください",
|
||||
@@ -426,6 +444,8 @@
|
||||
"Is profile public - Tooltip": "閉鎖された後、グローバル管理者または同じ組織のユーザーだけがユーザーのプロファイルページにアクセスできます",
|
||||
"Modify rule": "ルールを変更する",
|
||||
"New Organization": "新しい組織",
|
||||
"Optional": "Optional",
|
||||
"Required": "Required",
|
||||
"Soft deletion": "ソフト削除",
|
||||
"Soft deletion - Tooltip": "有効になっている場合、ユーザーを削除しても完全にデータベースから削除されません。代わりに、削除されたとマークされます",
|
||||
"Tags": "タグ",
|
||||
@@ -506,6 +526,34 @@
|
||||
"TreeNode": "ツリーノード",
|
||||
"Write": "書く"
|
||||
},
|
||||
"plan": {
|
||||
"Edit Plan": "Edit Plan",
|
||||
"New Plan": "New Plan",
|
||||
"PerMonth": "月毎",
|
||||
"Price per month": "Price per month",
|
||||
"Price per year": "Price per year",
|
||||
"PricePerMonth": "月額料金",
|
||||
"PricePerMonth - Tooltip": "PricePerMonth - Tooltip",
|
||||
"PricePerYear": "年間料金",
|
||||
"PricePerYear - Tooltip": "PricePerYear - Tooltip",
|
||||
"Sub role": "Sub role",
|
||||
"Sub roles - Tooltip": "現在のプランに含まれるロール"
|
||||
},
|
||||
"pricing": {
|
||||
"Copy pricing page URL": "価格ページのURLをコピー",
|
||||
"Edit Pricing": "Edit Pricing",
|
||||
"Free": "無料",
|
||||
"Getting started": "はじめる",
|
||||
"Has trial": "トライアル期間あり",
|
||||
"Has trial - Tooltip": "プラン選択後のトライアル期間の有無",
|
||||
"New Pricing": "New Pricing",
|
||||
"Sub plans": "追加プラン",
|
||||
"Sub plans - Tooltip": "Sub plans - Tooltip",
|
||||
"Trial duration": "トライアル期間の長さ",
|
||||
"Trial duration - Tooltip": "トライアル期間の長さ",
|
||||
"days trial available!": "日間のトライアルが利用可能です!",
|
||||
"pricing page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "価格ページのURLが正常にクリップボードにコピーされました。シークレットウィンドウや別のブラウザに貼り付けてください。"
|
||||
},
|
||||
"product": {
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "購入",
|
||||
@@ -723,6 +771,24 @@
|
||||
"Your confirmed password is inconsistent with the password!": "確認されたパスワードは、パスワードと矛盾しています!",
|
||||
"sign in now": "今すぐサインインしてください"
|
||||
},
|
||||
"subscription": {
|
||||
"Approved": "Approved",
|
||||
"Duration": "期間",
|
||||
"Duration - Tooltip": "購読の期間",
|
||||
"Edit Subscription": "Edit Subscription",
|
||||
"End Date": "終了日",
|
||||
"End Date - Tooltip": "終了日",
|
||||
"New Subscription": "New Subscription",
|
||||
"Pending": "Pending",
|
||||
"Start Date": "開始日",
|
||||
"Start Date - Tooltip": "開始日",
|
||||
"Sub plan": "購読プラン",
|
||||
"Sub plan - Tooltip": "購読プラン",
|
||||
"Sub plane": "Sub plane",
|
||||
"Sub user": "Sub user",
|
||||
"Sub users": "購読ユーザー",
|
||||
"Sub users - Tooltip": "購読ユーザー"
|
||||
},
|
||||
"syncer": {
|
||||
"Affiliation table": "所属テーブル",
|
||||
"Affiliation table - Tooltip": "作業単位のデータベーステーブル名",
|
||||
@@ -887,36 +953,5 @@
|
||||
"Method - Tooltip": "HTTPメソッド",
|
||||
"New Webhook": "新しいWebhook",
|
||||
"Value": "値"
|
||||
},
|
||||
"plan": {
|
||||
"Sub roles - Tooltip": "現在のプランに含まれるロール",
|
||||
"PricePerMonth": "月額料金",
|
||||
"PricePerYear": "年間料金",
|
||||
"PerMonth": "月毎"
|
||||
},
|
||||
"pricing": {
|
||||
"Sub plans": "追加プラン",
|
||||
"Sub plans - Tooltip": "現在の価格設定に含まれるプラン",
|
||||
"Has trial": "トライアル期間あり",
|
||||
"Has trial - Tooltip": "プラン選択後のトライアル期間の有無",
|
||||
"Trial duration": "トライアル期間の長さ",
|
||||
"Trial duration - Tooltip": "トライアル期間の長さ",
|
||||
"Getting started": "はじめる",
|
||||
"Copy pricing page URL": "価格ページのURLをコピー",
|
||||
"pricing page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "価格ページのURLが正常にクリップボードにコピーされました。シークレットウィンドウや別のブラウザに貼り付けてください。",
|
||||
"days trial available!": "日間のトライアルが利用可能です!",
|
||||
"Free": "無料"
|
||||
},
|
||||
"subscription": {
|
||||
"Duration": "期間",
|
||||
"Duration - Tooltip": "購読の期間",
|
||||
"Start Date": "開始日",
|
||||
"Start Date - Tooltip": "開始日",
|
||||
"End Date": "終了日",
|
||||
"End Date - Tooltip": "終了日",
|
||||
"Sub users": "購読ユーザー",
|
||||
"Sub users - Tooltip": "購読ユーザー",
|
||||
"Sub plan": "購読プラン",
|
||||
"Sub plan - Tooltip": "購読プラン"
|
||||
}
|
||||
}
|
||||
|
@@ -56,14 +56,16 @@
|
||||
"Grant types": "Grant types: 부여 유형",
|
||||
"Grant types - Tooltip": "OAuth 프로토콜에서 허용되는 그란트 유형을 선택하십시오",
|
||||
"Incremental": "Incremental",
|
||||
"Input": "Input",
|
||||
"Left": "왼쪽",
|
||||
"Logged in successfully": "성공적으로 로그인했습니다",
|
||||
"Logged out successfully": "로그아웃이 성공적으로 되었습니다",
|
||||
"New Application": "새로운 응용 프로그램",
|
||||
"No verification": "No verification",
|
||||
"None": "없음",
|
||||
"Normal": "Normal",
|
||||
"Only signup": "Only signup",
|
||||
"Org choice mode": "Org choice mode",
|
||||
"Org choice mode - Tooltip": "Org choice mode - Tooltip",
|
||||
"Please input your application!": "당신의 신청서를 입력해주세요!",
|
||||
"Please input your organization!": "귀하의 조직을 입력해 주세요!",
|
||||
"Please select a HTML file": "HTML 파일을 선택해 주세요",
|
||||
@@ -82,6 +84,7 @@
|
||||
"SAML metadata - Tooltip": "SAML 프로토콜의 메타 데이터",
|
||||
"SAML metadata URL copied to clipboard successfully": "SAML 메타데이터의 URL이 성공적으로 클립보드로 복사되었습니다",
|
||||
"SAML reply URL": "SAML 응답 URL",
|
||||
"Select": "Select",
|
||||
"Side panel HTML": "사이드 패널 HTML",
|
||||
"Side panel HTML - Edit": "사이드 패널 HTML - 편집",
|
||||
"Side panel HTML - Tooltip": "로그인 페이지의 측면 패널용 HTML 코드를 맞춤 설정하십시오",
|
||||
@@ -167,8 +170,13 @@
|
||||
"Affiliation URL": "소속 URL",
|
||||
"Affiliation URL - Tooltip": "소속 홈페이지 URL",
|
||||
"Application": "응용 프로그램",
|
||||
"Application - Tooltip": "Application - Tooltip",
|
||||
"Applications": "응용 프로그램",
|
||||
"Applications that require authentication": "인증이 필요한 애플리케이션들",
|
||||
"Approve time": "Approve time",
|
||||
"Approve time - Tooltip": "Approve time - Tooltip",
|
||||
"Approver": "Approver",
|
||||
"Approver - Tooltip": "Approver - Tooltip",
|
||||
"Avatar": "아바타",
|
||||
"Avatar - Tooltip": "사용자를 위한 공개 아바타 이미지",
|
||||
"Back": "Back",
|
||||
@@ -182,6 +190,7 @@
|
||||
"Click to Upload": "클릭하여 업로드하세요",
|
||||
"Client IP": "고객 IP",
|
||||
"Close": "닫다",
|
||||
"Confirm": "Confirm",
|
||||
"Created time": "작성한 시간",
|
||||
"Default application": "기본 애플리케이션",
|
||||
"Default application - Tooltip": "조직 페이지에서 직접 등록한 사용자의 기본 응용 프로그램",
|
||||
@@ -226,6 +235,8 @@
|
||||
"Last name": "성",
|
||||
"Logo": "로고",
|
||||
"Logo - Tooltip": "애플리케이션이 외부 세계에 제시하는 아이콘들",
|
||||
"MFA items": "MFA items",
|
||||
"MFA items - Tooltip": "MFA items - Tooltip",
|
||||
"Master password": "마스터 비밀번호",
|
||||
"Master password - Tooltip": "이 조직의 모든 사용자에게 로그인하는 데 사용될 수 있으며, 이 사용자로 로그인하여 기술 문제를 해결하는 관리자에게 편리합니다",
|
||||
"Menu": "메뉴",
|
||||
@@ -236,6 +247,7 @@
|
||||
"Models": "모델들",
|
||||
"Name": "이름",
|
||||
"Name - Tooltip": "고유한 문자열 기반 ID",
|
||||
"None": "None",
|
||||
"OAuth providers": "OAuth 공급자",
|
||||
"OK": "예",
|
||||
"Organization": "조직화",
|
||||
@@ -254,9 +266,9 @@
|
||||
"Phone - Tooltip": "전화 번호",
|
||||
"Phone or email": "Phone or email",
|
||||
"Plans": "플랜",
|
||||
"Pricings": "가격",
|
||||
"Preview": "미리보기",
|
||||
"Preview - Tooltip": "구성된 효과를 미리보기합니다",
|
||||
"Pricings": "가격",
|
||||
"Products": "제품들",
|
||||
"Provider": "공급자",
|
||||
"Provider - Tooltip": "지불 공급자를 구성해야합니다. PayPal, Alipay, WeChat Pay 등이 포함됩니다.",
|
||||
@@ -283,6 +295,8 @@
|
||||
"Sorry, you do not have permission to access this page or logged in status invalid.": "죄송합니다. 이 페이지에 접근할 권한이 없거나 로그인 상태가 유효하지 않습니다.",
|
||||
"State": "주",
|
||||
"State - Tooltip": "국가",
|
||||
"Submitter": "Submitter",
|
||||
"Submitter - Tooltip": "Submitter - Tooltip",
|
||||
"Subscriptions": "구독",
|
||||
"Successfully added": "성공적으로 추가되었습니다",
|
||||
"Successfully deleted": "성공적으로 삭제되었습니다",
|
||||
@@ -354,8 +368,12 @@
|
||||
"Or sign in with another account": "다른 계정으로 로그인하세요",
|
||||
"Please input your Email or Phone!": "이메일 또는 전화번호를 입력해주세요!",
|
||||
"Please input your code!": "코드를 입력해주세요!",
|
||||
"Please input your organization name!": "Please input your organization name!",
|
||||
"Please input your password!": "비밀번호를 입력해주세요!",
|
||||
"Please input your password, at least 6 characters!": "비밀번호를 입력해주세요. 최소 6자 이상 필요합니다!",
|
||||
"Please select an organization": "Please select an organization",
|
||||
"Please select an organization to sign in": "Please select an organization to sign in",
|
||||
"Please type an organization to sign in": "Please type an organization to sign in",
|
||||
"Redirecting, please wait.": "리디렉팅 중입니다. 잠시 기다려주세요.",
|
||||
"Sign In": "로그인",
|
||||
"Sign in with WebAuthn": "WebAuthn으로 로그인하세요",
|
||||
@@ -426,6 +444,8 @@
|
||||
"Is profile public - Tooltip": "닫힌 후에는 전역 관리자 또는 동일한 조직의 사용자만 사용자 프로필 페이지에 액세스할 수 있습니다",
|
||||
"Modify rule": "규칙 수정",
|
||||
"New Organization": "새로운 조직",
|
||||
"Optional": "Optional",
|
||||
"Required": "Required",
|
||||
"Soft deletion": "소프트 삭제",
|
||||
"Soft deletion - Tooltip": "사용 가능한 경우, 사용자 삭제 시 데이터베이스에서 완전히 삭제되지 않습니다. 대신 삭제됨으로 표시됩니다",
|
||||
"Tags": "태그",
|
||||
@@ -506,6 +526,34 @@
|
||||
"TreeNode": "트리 노드",
|
||||
"Write": "쓰다"
|
||||
},
|
||||
"plan": {
|
||||
"Edit Plan": "Edit Plan",
|
||||
"New Plan": "New Plan",
|
||||
"PerMonth": "월",
|
||||
"Price per month": "Price per month",
|
||||
"Price per year": "Price per year",
|
||||
"PricePerMonth": "월별 가격",
|
||||
"PricePerMonth - Tooltip": "PricePerMonth - Tooltip",
|
||||
"PricePerYear": "연간 가격",
|
||||
"PricePerYear - Tooltip": "PricePerYear - Tooltip",
|
||||
"Sub role": "Sub role",
|
||||
"Sub roles - Tooltip": "현재 플랜에 포함된 역할"
|
||||
},
|
||||
"pricing": {
|
||||
"Copy pricing page URL": "가격 페이지 URL 복사",
|
||||
"Edit Pricing": "Edit Pricing",
|
||||
"Free": "무료",
|
||||
"Getting started": "시작하기",
|
||||
"Has trial": "무료 체험 가능",
|
||||
"Has trial - Tooltip": "플랜 선택 후 체험 기간의 가용 여부",
|
||||
"New Pricing": "New Pricing",
|
||||
"Sub plans": "추가 플랜",
|
||||
"Sub plans - Tooltip": "Sub plans - Tooltip",
|
||||
"Trial duration": "체험 기간",
|
||||
"Trial duration - Tooltip": "체험 기간의 기간",
|
||||
"days trial available!": "일 무료 체험 가능!",
|
||||
"pricing page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "가격 페이지 URL이 클립보드에 성공적으로 복사되었습니다. 시크릿 창이나 다른 브라우저에 붙여넣기해주세요."
|
||||
},
|
||||
"product": {
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "구매하다",
|
||||
@@ -723,6 +771,24 @@
|
||||
"Your confirmed password is inconsistent with the password!": "확인된 비밀번호가 비밀번호와 일치하지 않습니다!",
|
||||
"sign in now": "지금 로그인하십시오"
|
||||
},
|
||||
"subscription": {
|
||||
"Approved": "Approved",
|
||||
"Duration": "기간",
|
||||
"Duration - Tooltip": "구독 기간",
|
||||
"Edit Subscription": "Edit Subscription",
|
||||
"End Date": "종료일",
|
||||
"End Date - Tooltip": "종료일",
|
||||
"New Subscription": "New Subscription",
|
||||
"Pending": "Pending",
|
||||
"Start Date": "시작일",
|
||||
"Start Date - Tooltip": "시작일",
|
||||
"Sub plan": "구독 플랜",
|
||||
"Sub plan - Tooltip": "구독 플랜",
|
||||
"Sub plane": "Sub plane",
|
||||
"Sub user": "Sub user",
|
||||
"Sub users": "구독 사용자",
|
||||
"Sub users - Tooltip": "구독 사용자"
|
||||
},
|
||||
"syncer": {
|
||||
"Affiliation table": "소속 테이블",
|
||||
"Affiliation table - Tooltip": "작업 단위의 데이터베이스 테이블 이름",
|
||||
@@ -887,36 +953,5 @@
|
||||
"Method - Tooltip": "HTTP 방법",
|
||||
"New Webhook": "새로운 웹훅",
|
||||
"Value": "가치"
|
||||
},
|
||||
"plan": {
|
||||
"Sub roles - Tooltip": "현재 플랜에 포함된 역할",
|
||||
"PricePerMonth": "월별 가격",
|
||||
"PricePerYear": "연간 가격",
|
||||
"PerMonth": "월"
|
||||
},
|
||||
"pricing": {
|
||||
"Sub plans": "추가 플랜",
|
||||
"Sub plans - Tooltip": "현재 가격 책정에 포함된 플랜",
|
||||
"Has trial": "무료 체험 가능",
|
||||
"Has trial - Tooltip": "플랜 선택 후 체험 기간의 가용 여부",
|
||||
"Trial duration": "체험 기간",
|
||||
"Trial duration - Tooltip": "체험 기간의 기간",
|
||||
"Getting started": "시작하기",
|
||||
"Copy pricing page URL": "가격 페이지 URL 복사",
|
||||
"pricing page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "가격 페이지 URL이 클립보드에 성공적으로 복사되었습니다. 시크릿 창이나 다른 브라우저에 붙여넣기해주세요.",
|
||||
"days trial available!": "일 무료 체험 가능!",
|
||||
"Free": "무료"
|
||||
},
|
||||
"subscription": {
|
||||
"Duration": "기간",
|
||||
"Duration - Tooltip": "구독 기간",
|
||||
"Start Date": "시작일",
|
||||
"Start Date - Tooltip": "시작일",
|
||||
"End Date": "종료일",
|
||||
"End Date - Tooltip": "종료일",
|
||||
"Sub users": "구독 사용자",
|
||||
"Sub users - Tooltip": "구독 사용자",
|
||||
"Sub plan": "구독 플랜",
|
||||
"Sub plan - Tooltip": "구독 플랜"
|
||||
}
|
||||
}
|
||||
|
@@ -56,14 +56,16 @@
|
||||
"Grant types": "Tipos de concessão",
|
||||
"Grant types - Tooltip": "Selecione quais tipos de concessão são permitidos no protocolo OAuth",
|
||||
"Incremental": "Incremental",
|
||||
"Input": "Input",
|
||||
"Left": "Esquerda",
|
||||
"Logged in successfully": "Login realizado com sucesso",
|
||||
"Logged out successfully": "Logout realizado com sucesso",
|
||||
"New Application": "Nova Aplicação",
|
||||
"No verification": "Sem verificação",
|
||||
"None": "Nenhum",
|
||||
"Normal": "Normal",
|
||||
"Only signup": "Apenas registro",
|
||||
"Org choice mode": "Org choice mode",
|
||||
"Org choice mode - Tooltip": "Org choice mode - Tooltip",
|
||||
"Please input your application!": "Por favor, insira o nome da sua aplicação!",
|
||||
"Please input your organization!": "Por favor, insira o nome da sua organização!",
|
||||
"Please select a HTML file": "Por favor, selecione um arquivo HTML",
|
||||
@@ -82,6 +84,7 @@
|
||||
"SAML metadata - Tooltip": "Os metadados do protocolo SAML",
|
||||
"SAML metadata URL copied to clipboard successfully": "URL dos metadados do SAML copiada para a área de transferência com sucesso",
|
||||
"SAML reply URL": "URL de resposta do SAML",
|
||||
"Select": "Select",
|
||||
"Side panel HTML": "HTML do painel lateral",
|
||||
"Side panel HTML - Edit": "Editar HTML do painel lateral",
|
||||
"Side panel HTML - Tooltip": "Personalize o código HTML para o painel lateral da página de login",
|
||||
@@ -121,7 +124,7 @@
|
||||
"Private key copied to clipboard successfully": "Chave privada copiada para a área de transferência com sucesso",
|
||||
"Scope - Tooltip": "Cenários de uso do certificado",
|
||||
"Type - Tooltip": "Tipo de certificado"
|
||||
},
|
||||
},
|
||||
"chat": {
|
||||
"AI": "IA",
|
||||
"Edit Chat": "Editar Chat",
|
||||
@@ -167,8 +170,13 @@
|
||||
"Affiliation URL": "URL da Afiliação",
|
||||
"Affiliation URL - Tooltip": "A URL da página inicial para a afiliação",
|
||||
"Application": "Aplicação",
|
||||
"Application - Tooltip": "Application - Tooltip",
|
||||
"Applications": "Aplicações",
|
||||
"Applications that require authentication": "Aplicações que requerem autenticação",
|
||||
"Approve time": "Approve time",
|
||||
"Approve time - Tooltip": "Approve time - Tooltip",
|
||||
"Approver": "Approver",
|
||||
"Approver - Tooltip": "Approver - Tooltip",
|
||||
"Avatar": "Avatar",
|
||||
"Avatar - Tooltip": "Imagem de avatar pública do usuário",
|
||||
"Back": "Voltar",
|
||||
@@ -182,6 +190,7 @@
|
||||
"Click to Upload": "Clique para Enviar",
|
||||
"Client IP": "IP do Cliente",
|
||||
"Close": "Fechar",
|
||||
"Confirm": "Confirm",
|
||||
"Created time": "Hora de Criação",
|
||||
"Default application": "Aplicação padrão",
|
||||
"Default application - Tooltip": "Aplicação padrão para usuários registrados diretamente na página da organização",
|
||||
@@ -226,6 +235,8 @@
|
||||
"Last name": "Sobrenome",
|
||||
"Logo": "Logo",
|
||||
"Logo - Tooltip": "Ícones que o aplicativo apresenta para o mundo externo",
|
||||
"MFA items": "MFA items",
|
||||
"MFA items - Tooltip": "MFA items - Tooltip",
|
||||
"Master password": "Senha mestra",
|
||||
"Master password - Tooltip": "Pode ser usada para fazer login em todos os usuários desta organização, facilitando para os administradores fazerem login como este usuário para resolver problemas técnicos",
|
||||
"Menu": "Menu",
|
||||
@@ -236,6 +247,7 @@
|
||||
"Models": "Modelos",
|
||||
"Name": "Nome",
|
||||
"Name - Tooltip": "ID único em formato de string",
|
||||
"None": "None",
|
||||
"OAuth providers": "Provedores OAuth",
|
||||
"OK": "OK",
|
||||
"Organization": "Organização",
|
||||
@@ -253,8 +265,10 @@
|
||||
"Phone": "Telefone",
|
||||
"Phone - Tooltip": "Número de telefone",
|
||||
"Phone or email": "Telefone ou email",
|
||||
"Plans": "Kế hoạch",
|
||||
"Preview": "Visualizar",
|
||||
"Preview - Tooltip": "Visualizar os efeitos configurados",
|
||||
"Pricings": "Bảng giá",
|
||||
"Products": "Produtos",
|
||||
"Provider": "Provedor",
|
||||
"Provider - Tooltip": "Provedores de pagamento a serem configurados, incluindo PayPal, Alipay, WeChat Pay, etc.",
|
||||
@@ -281,6 +295,9 @@
|
||||
"Sorry, you do not have permission to access this page or logged in status invalid.": "Desculpe, você não tem permissão para acessar esta página ou o status de login é inválido.",
|
||||
"State": "Estado",
|
||||
"State - Tooltip": "Estado",
|
||||
"Submitter": "Submitter",
|
||||
"Submitter - Tooltip": "Submitter - Tooltip",
|
||||
"Subscriptions": "Đăng ký",
|
||||
"Successfully added": "Adicionado com sucesso",
|
||||
"Successfully deleted": "Excluído com sucesso",
|
||||
"Successfully saved": "Salvo com sucesso",
|
||||
@@ -351,8 +368,12 @@
|
||||
"Or sign in with another account": "Ou entre com outra conta",
|
||||
"Please input your Email or Phone!": "Por favor, informe seu email ou telefone!",
|
||||
"Please input your code!": "Por favor, informe o código!",
|
||||
"Please input your organization name!": "Please input your organization name!",
|
||||
"Please input your password!": "Por favor, informe sua senha!",
|
||||
"Please input your password, at least 6 characters!": "Por favor, informe sua senha, pelo menos 6 caracteres!",
|
||||
"Please select an organization": "Please select an organization",
|
||||
"Please select an organization to sign in": "Please select an organization to sign in",
|
||||
"Please type an organization to sign in": "Please type an organization to sign in",
|
||||
"Redirecting, please wait.": "Redirecionando, por favor aguarde.",
|
||||
"Sign In": "Entrar",
|
||||
"Sign in with WebAuthn": "Entrar com WebAuthn",
|
||||
@@ -365,7 +386,7 @@
|
||||
"WebAuthn": "WebAuthn",
|
||||
"sign up now": "Inscreva-se agora",
|
||||
"username, Email or phone": "Nome de usuário, email ou telefone"
|
||||
},
|
||||
},
|
||||
"message": {
|
||||
"Author": "Autor",
|
||||
"Author - Tooltip": "Autor - Dica de ferramenta",
|
||||
@@ -404,7 +425,7 @@
|
||||
"Verify Password": "Verificar Senha",
|
||||
"Your email is": "Seu e-mail é",
|
||||
"Your phone is": "Seu telefone é",
|
||||
"preferred": "Preferido"
|
||||
"preferred": "Preferido"
|
||||
},
|
||||
"model": {
|
||||
"Edit Model": "Editar Modelo",
|
||||
@@ -423,6 +444,8 @@
|
||||
"Is profile public - Tooltip": "Após ser fechado, apenas administradores globais ou usuários na mesma organização podem acessar a página de perfil do usuário",
|
||||
"Modify rule": "Modificar regra",
|
||||
"New Organization": "Nova Organização",
|
||||
"Optional": "Optional",
|
||||
"Required": "Required",
|
||||
"Soft deletion": "Exclusão suave",
|
||||
"Soft deletion - Tooltip": "Quando ativada, a exclusão de usuários não os removerá completamente do banco de dados. Em vez disso, eles serão marcados como excluídos",
|
||||
"Tags": "Tags",
|
||||
@@ -503,6 +526,34 @@
|
||||
"TreeNode": "Nó da Árvore",
|
||||
"Write": "Escrever"
|
||||
},
|
||||
"plan": {
|
||||
"Edit Plan": "Edit Plan",
|
||||
"New Plan": "New Plan",
|
||||
"PerMonth": "mỗi tháng",
|
||||
"Price per month": "Price per month",
|
||||
"Price per year": "Price per year",
|
||||
"PricePerMonth": "Giá mỗi tháng",
|
||||
"PricePerMonth - Tooltip": "PricePerMonth - Tooltip",
|
||||
"PricePerYear": "Giá mỗi năm",
|
||||
"PricePerYear - Tooltip": "PricePerYear - Tooltip",
|
||||
"Sub role": "Sub role",
|
||||
"Sub roles - Tooltip": "Vai trò bao gồm trong kế hoạch hiện tại"
|
||||
},
|
||||
"pricing": {
|
||||
"Copy pricing page URL": "Sao chép URL trang bảng giá",
|
||||
"Edit Pricing": "Edit Pricing",
|
||||
"Free": "Miễn phí",
|
||||
"Getting started": "Bắt đầu",
|
||||
"Has trial": "Có thời gian thử nghiệm",
|
||||
"Has trial - Tooltip": "Khả dụng thời gian thử nghiệm sau khi chọn kế hoạch",
|
||||
"New Pricing": "New Pricing",
|
||||
"Sub plans": "Kế hoạch phụ",
|
||||
"Sub plans - Tooltip": "Sub plans - Tooltip",
|
||||
"Trial duration": "Thời gian thử nghiệm",
|
||||
"Trial duration - Tooltip": "Thời gian thử nghiệm",
|
||||
"days trial available!": "ngày dùng thử có sẵn!",
|
||||
"pricing page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "URL trang bảng giá đã được sao chép vào clipboard thành công, vui lòng dán vào cửa sổ ẩn danh hoặc trình duyệt khác"
|
||||
},
|
||||
"product": {
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "Comprar",
|
||||
@@ -536,7 +587,7 @@
|
||||
"There is no payment channel for this product.": "Não há canal de pagamento disponível para este produto.",
|
||||
"This product is currently not in sale.": "Este produto não está disponível para venda no momento.",
|
||||
"USD": "USD",
|
||||
"WeChat Pay": "WeChat Pay"
|
||||
"WeChat Pay": "WeChat Pay"
|
||||
},
|
||||
"provider": {
|
||||
"Access key": "Chave de acesso",
|
||||
@@ -664,7 +715,7 @@
|
||||
"Type - Tooltip": "Selecione um tipo",
|
||||
"UserInfo URL": "URL do UserInfo",
|
||||
"UserInfo URL - Tooltip": "URL do UserInfo",
|
||||
"admin (Shared)": "admin (Compartilhado)"
|
||||
"admin (Shared)": "admin (Compartilhado)"
|
||||
},
|
||||
"record": {
|
||||
"Is triggered": "Foi acionado"
|
||||
@@ -720,6 +771,24 @@
|
||||
"Your confirmed password is inconsistent with the password!": "Sua senha confirmada não é consistente com a senha!",
|
||||
"sign in now": "Faça login agora"
|
||||
},
|
||||
"subscription": {
|
||||
"Approved": "Approved",
|
||||
"Duration": "Thời lượng",
|
||||
"Duration - Tooltip": "Thời lượng đăng ký",
|
||||
"Edit Subscription": "Edit Subscription",
|
||||
"End Date": "Ngày kết thúc",
|
||||
"End Date - Tooltip": "Ngày kết thúc",
|
||||
"New Subscription": "New Subscription",
|
||||
"Pending": "Pending",
|
||||
"Start Date": "Ngày bắt đầu",
|
||||
"Start Date - Tooltip": "Ngày bắt đầu",
|
||||
"Sub plan": "Kế hoạch đăng ký",
|
||||
"Sub plan - Tooltip": "Kế hoạch đăng ký",
|
||||
"Sub plane": "Sub plane",
|
||||
"Sub user": "Sub user",
|
||||
"Sub users": "Người dùng đăng ký",
|
||||
"Sub users - Tooltip": "Người dùng đăng ký"
|
||||
},
|
||||
"syncer": {
|
||||
"Affiliation table": "Tabela de Afiliação",
|
||||
"Affiliation table - Tooltip": "Nome da tabela no banco de dados da unidade de trabalho",
|
||||
@@ -785,92 +854,91 @@
|
||||
"New Token": "Novo Token",
|
||||
"Token type": "Tipo de Token"
|
||||
},
|
||||
"user":
|
||||
{
|
||||
"3rd-party logins": "Logins de terceiros",
|
||||
"3rd-party logins - Tooltip": "Logins sociais vinculados pelo usuário",
|
||||
"Address": "Endereço",
|
||||
"Address - Tooltip": "Endereço residencial",
|
||||
"Affiliation": "Afiliação",
|
||||
"Affiliation - Tooltip": "Empregador, como nome da empresa ou organização",
|
||||
"Bio": "Biografia",
|
||||
"Bio - Tooltip": "Autoapresentação do usuário",
|
||||
"Birthday": "Aniversário",
|
||||
"Birthday - Tooltip": "Aniversário - Tooltip",
|
||||
"Captcha Verify Failed": "Falha na verificação de captcha",
|
||||
"Captcha Verify Success": "Verificação de captcha bem-sucedida",
|
||||
"Country code": "Código do país",
|
||||
"Country/Region": "País/Região",
|
||||
"Country/Region - Tooltip": "País ou região",
|
||||
"Edit User": "Editar Usuário",
|
||||
"Education": "Educação",
|
||||
"Education - Tooltip": "Educação - Tooltip",
|
||||
"Email cannot be empty": "O e-mail não pode ficar em branco",
|
||||
"Email/phone reset successfully": "Redefinição de e-mail/telefone com sucesso",
|
||||
"Empty input!": "Entrada vazia!",
|
||||
"Gender": "Gênero",
|
||||
"Gender - Tooltip": "Gênero - Tooltip",
|
||||
"Homepage": "Página inicial",
|
||||
"Homepage - Tooltip": "URL da página inicial do usuário",
|
||||
"ID card": "Cartão de identidade",
|
||||
"ID card - Tooltip": "Cartão de identidade - Tooltip",
|
||||
"ID card type": "Tipo de cartão de identidade",
|
||||
"ID card type - Tooltip": "Tipo de cartão de identidade - Tooltip",
|
||||
"Input your email": "Digite seu e-mail",
|
||||
"Input your phone number": "Digite seu número de telefone",
|
||||
"Is admin": "É administrador",
|
||||
"Is admin - Tooltip": "É um administrador da organização à qual o usuário pertence",
|
||||
"Is deleted": "Foi excluído",
|
||||
"Is deleted - Tooltip": "Usuários excluídos somente mantêm registros no banco de dados e não podem realizar nenhuma operação",
|
||||
"Is forbidden": "Está proibido",
|
||||
"Is forbidden - Tooltip": "Usuários proibidos não podem fazer login novamente",
|
||||
"Is global admin": "É administrador global",
|
||||
"Is global admin - Tooltip": "É um administrador do Casdoor",
|
||||
"Is online": "Está online",
|
||||
"Karma": "Karma",
|
||||
"Karma - Tooltip": "Karma - Tooltip",
|
||||
"Keys": "Chaves",
|
||||
"Language": "Idioma",
|
||||
"Language - Tooltip": "Idioma - Tooltip",
|
||||
"Link": "Link",
|
||||
"Location": "Localização",
|
||||
"Location - Tooltip": "Cidade de residência",
|
||||
"Managed accounts": "Contas gerenciadas",
|
||||
"Modify password...": "Modificar senha...",
|
||||
"Multi-factor authentication": "Autenticação de vários fatores",
|
||||
"New Email": "Novo E-mail",
|
||||
"New Password": "Nova Senha",
|
||||
"New User": "Novo Usuário",
|
||||
"New phone": "Novo telefone",
|
||||
"Old Password": "Senha Antiga",
|
||||
"Password set successfully": "Senha definida com sucesso",
|
||||
"Phone cannot be empty": "O telefone não pode ficar vazio",
|
||||
"Please select avatar from resources": "Selecione um avatar dos recursos",
|
||||
"Properties": "Propriedades",
|
||||
"Properties - Tooltip": "Propriedades do usuário",
|
||||
"Ranking": "Classificação",
|
||||
"Ranking - Tooltip": "Classificação - Tooltip",
|
||||
"Re-enter New": "Digite Novamente",
|
||||
"Reset Email...": "Redefinir E-mail...",
|
||||
"Reset Phone...": "Redefinir Telefone...",
|
||||
"Score": "Pontuação",
|
||||
"Score - Tooltip": "Pontuação - Tooltip",
|
||||
"Select a photo...": "Selecionar uma foto...",
|
||||
"Set Password": "Definir Senha",
|
||||
"Set new profile picture": "Definir nova foto de perfil",
|
||||
"Set password...": "Definir senha...",
|
||||
"Tag": "Tag",
|
||||
"Tag - Tooltip": "Tag do usuário",
|
||||
"Title": "Título",
|
||||
"Title - Tooltip": "Cargo na afiliação",
|
||||
"Two passwords you typed do not match.": "As duas senhas digitadas não coincidem.",
|
||||
"Unlink": "Desvincular",
|
||||
"Upload (.xlsx)": "Enviar (.xlsx)",
|
||||
"Upload a photo": "Enviar uma foto",
|
||||
"Values": "Valores",
|
||||
"Verification code sent": "Código de verificação enviado",
|
||||
"WebAuthn credentials": "Credenciais WebAuthn",
|
||||
"input password": "Digite a senha"
|
||||
"user": {
|
||||
"3rd-party logins": "Logins de terceiros",
|
||||
"3rd-party logins - Tooltip": "Logins sociais vinculados pelo usuário",
|
||||
"Address": "Endereço",
|
||||
"Address - Tooltip": "Endereço residencial",
|
||||
"Affiliation": "Afiliação",
|
||||
"Affiliation - Tooltip": "Empregador, como nome da empresa ou organização",
|
||||
"Bio": "Biografia",
|
||||
"Bio - Tooltip": "Autoapresentação do usuário",
|
||||
"Birthday": "Aniversário",
|
||||
"Birthday - Tooltip": "Aniversário - Tooltip",
|
||||
"Captcha Verify Failed": "Falha na verificação de captcha",
|
||||
"Captcha Verify Success": "Verificação de captcha bem-sucedida",
|
||||
"Country code": "Código do país",
|
||||
"Country/Region": "País/Região",
|
||||
"Country/Region - Tooltip": "País ou região",
|
||||
"Edit User": "Editar Usuário",
|
||||
"Education": "Educação",
|
||||
"Education - Tooltip": "Educação - Tooltip",
|
||||
"Email cannot be empty": "O e-mail não pode ficar em branco",
|
||||
"Email/phone reset successfully": "Redefinição de e-mail/telefone com sucesso",
|
||||
"Empty input!": "Entrada vazia!",
|
||||
"Gender": "Gênero",
|
||||
"Gender - Tooltip": "Gênero - Tooltip",
|
||||
"Homepage": "Página inicial",
|
||||
"Homepage - Tooltip": "URL da página inicial do usuário",
|
||||
"ID card": "Cartão de identidade",
|
||||
"ID card - Tooltip": "Cartão de identidade - Tooltip",
|
||||
"ID card type": "Tipo de cartão de identidade",
|
||||
"ID card type - Tooltip": "Tipo de cartão de identidade - Tooltip",
|
||||
"Input your email": "Digite seu e-mail",
|
||||
"Input your phone number": "Digite seu número de telefone",
|
||||
"Is admin": "É administrador",
|
||||
"Is admin - Tooltip": "É um administrador da organização à qual o usuário pertence",
|
||||
"Is deleted": "Foi excluído",
|
||||
"Is deleted - Tooltip": "Usuários excluídos somente mantêm registros no banco de dados e não podem realizar nenhuma operação",
|
||||
"Is forbidden": "Está proibido",
|
||||
"Is forbidden - Tooltip": "Usuários proibidos não podem fazer login novamente",
|
||||
"Is global admin": "É administrador global",
|
||||
"Is global admin - Tooltip": "É um administrador do Casdoor",
|
||||
"Is online": "Está online",
|
||||
"Karma": "Karma",
|
||||
"Karma - Tooltip": "Karma - Tooltip",
|
||||
"Keys": "Chaves",
|
||||
"Language": "Idioma",
|
||||
"Language - Tooltip": "Idioma - Tooltip",
|
||||
"Link": "Link",
|
||||
"Location": "Localização",
|
||||
"Location - Tooltip": "Cidade de residência",
|
||||
"Managed accounts": "Contas gerenciadas",
|
||||
"Modify password...": "Modificar senha...",
|
||||
"Multi-factor authentication": "Autenticação de vários fatores",
|
||||
"New Email": "Novo E-mail",
|
||||
"New Password": "Nova Senha",
|
||||
"New User": "Novo Usuário",
|
||||
"New phone": "Novo telefone",
|
||||
"Old Password": "Senha Antiga",
|
||||
"Password set successfully": "Senha definida com sucesso",
|
||||
"Phone cannot be empty": "O telefone não pode ficar vazio",
|
||||
"Please select avatar from resources": "Selecione um avatar dos recursos",
|
||||
"Properties": "Propriedades",
|
||||
"Properties - Tooltip": "Propriedades do usuário",
|
||||
"Ranking": "Classificação",
|
||||
"Ranking - Tooltip": "Classificação - Tooltip",
|
||||
"Re-enter New": "Digite Novamente",
|
||||
"Reset Email...": "Redefinir E-mail...",
|
||||
"Reset Phone...": "Redefinir Telefone...",
|
||||
"Score": "Pontuação",
|
||||
"Score - Tooltip": "Pontuação - Tooltip",
|
||||
"Select a photo...": "Selecionar uma foto...",
|
||||
"Set Password": "Definir Senha",
|
||||
"Set new profile picture": "Definir nova foto de perfil",
|
||||
"Set password...": "Definir senha...",
|
||||
"Tag": "Tag",
|
||||
"Tag - Tooltip": "Tag do usuário",
|
||||
"Title": "Título",
|
||||
"Title - Tooltip": "Cargo na afiliação",
|
||||
"Two passwords you typed do not match.": "As duas senhas digitadas não coincidem.",
|
||||
"Unlink": "Desvincular",
|
||||
"Upload (.xlsx)": "Enviar (.xlsx)",
|
||||
"Upload a photo": "Enviar uma foto",
|
||||
"Values": "Valores",
|
||||
"Verification code sent": "Código de verificação enviado",
|
||||
"WebAuthn credentials": "Credenciais WebAuthn",
|
||||
"input password": "Digite a senha"
|
||||
},
|
||||
"webhook": {
|
||||
"Content type": "Tipo de conteúdo",
|
||||
|
@@ -56,14 +56,16 @@
|
||||
"Grant types": "Типы грантов",
|
||||
"Grant types - Tooltip": "Выберите, какие типы грантов разрешены в протоколе OAuth",
|
||||
"Incremental": "Incremental",
|
||||
"Input": "Input",
|
||||
"Left": "Левый",
|
||||
"Logged in successfully": "Успешный вход в систему",
|
||||
"Logged out successfully": "Успешный выход из системы",
|
||||
"New Application": "Новое приложение",
|
||||
"No verification": "No verification",
|
||||
"None": "Никакой",
|
||||
"Normal": "Normal",
|
||||
"Only signup": "Only signup",
|
||||
"Org choice mode": "Org choice mode",
|
||||
"Org choice mode - Tooltip": "Org choice mode - Tooltip",
|
||||
"Please input your application!": "Пожалуйста, введите свою заявку!",
|
||||
"Please input your organization!": "Пожалуйста, введите название вашей организации!",
|
||||
"Please select a HTML file": "Пожалуйста, выберите файл HTML",
|
||||
@@ -82,6 +84,7 @@
|
||||
"SAML metadata - Tooltip": "Метаданные протокола SAML",
|
||||
"SAML metadata URL copied to clipboard successfully": "URL метаданных SAML успешно скопирован в буфер обмена",
|
||||
"SAML reply URL": "URL ответа SAML",
|
||||
"Select": "Select",
|
||||
"Side panel HTML": "Боковая панель HTML",
|
||||
"Side panel HTML - Edit": "Боковая панель HTML - Редактировать",
|
||||
"Side panel HTML - Tooltip": "Настроить HTML-код для боковой панели страницы входа в систему",
|
||||
@@ -167,8 +170,13 @@
|
||||
"Affiliation URL": "URL принадлежности",
|
||||
"Affiliation URL - Tooltip": "URL домашней страницы для аффилированности",
|
||||
"Application": "Приложение",
|
||||
"Application - Tooltip": "Application - Tooltip",
|
||||
"Applications": "Приложения",
|
||||
"Applications that require authentication": "Приложения, которые требуют аутентификации",
|
||||
"Approve time": "Approve time",
|
||||
"Approve time - Tooltip": "Approve time - Tooltip",
|
||||
"Approver": "Approver",
|
||||
"Approver - Tooltip": "Approver - Tooltip",
|
||||
"Avatar": "Аватар",
|
||||
"Avatar - Tooltip": "Публичное изображение аватара пользователя",
|
||||
"Back": "Back",
|
||||
@@ -182,6 +190,7 @@
|
||||
"Click to Upload": "Нажмите, чтобы загрузить",
|
||||
"Client IP": "Клиентский IP",
|
||||
"Close": "Близко",
|
||||
"Confirm": "Confirm",
|
||||
"Created time": "Созданное время",
|
||||
"Default application": "Приложение по умолчанию",
|
||||
"Default application - Tooltip": "По умолчанию приложение для пользователей, зарегистрированных непосредственно со страницы организации",
|
||||
@@ -226,6 +235,8 @@
|
||||
"Last name": "Фамилия",
|
||||
"Logo": "Логотип",
|
||||
"Logo - Tooltip": "Иконки, которые приложение представляет во внешний мир",
|
||||
"MFA items": "MFA items",
|
||||
"MFA items - Tooltip": "MFA items - Tooltip",
|
||||
"Master password": "Главный пароль",
|
||||
"Master password - Tooltip": "Можно использовать для входа в учетные записи всех пользователей этой организации, что удобно для администраторов, чтобы войти в качестве этого пользователя и решить технические проблемы",
|
||||
"Menu": "Меню",
|
||||
@@ -236,6 +247,7 @@
|
||||
"Models": "Модели",
|
||||
"Name": "Имя",
|
||||
"Name - Tooltip": "Уникальный идентификатор на основе строки",
|
||||
"None": "None",
|
||||
"OAuth providers": "Провайдеры OAuth",
|
||||
"OK": "OK - Хорошо",
|
||||
"Organization": "Организация",
|
||||
@@ -254,9 +266,9 @@
|
||||
"Phone - Tooltip": "Номер телефона",
|
||||
"Phone or email": "Phone or email",
|
||||
"Plans": "Планы",
|
||||
"Pricings": "Тарифы",
|
||||
"Preview": "Предварительный просмотр",
|
||||
"Preview - Tooltip": "Предварительный просмотр настроенных эффектов",
|
||||
"Pricings": "Тарифы",
|
||||
"Products": "Продукты",
|
||||
"Provider": "Провайдер",
|
||||
"Provider - Tooltip": "Провайдеры платежей должны быть настроены, включая PayPal, Alipay, WeChat Pay и т.д.",
|
||||
@@ -283,6 +295,8 @@
|
||||
"Sorry, you do not have permission to access this page or logged in status invalid.": "К сожалению, у вас нет разрешения на доступ к этой странице или ваш статус входа недействителен.",
|
||||
"State": "Государство",
|
||||
"State - Tooltip": "Государство",
|
||||
"Submitter": "Submitter",
|
||||
"Submitter - Tooltip": "Submitter - Tooltip",
|
||||
"Subscriptions": "Подписки",
|
||||
"Successfully added": "Успешно добавлено",
|
||||
"Successfully deleted": "Успешно удалено",
|
||||
@@ -354,8 +368,12 @@
|
||||
"Or sign in with another account": "Или войти с другой учетной записью",
|
||||
"Please input your Email or Phone!": "Пожалуйста, введите свой адрес электронной почты или номер телефона!",
|
||||
"Please input your code!": "Пожалуйста, введите свой код!",
|
||||
"Please input your organization name!": "Please input your organization name!",
|
||||
"Please input your password!": "Пожалуйста, введите свой пароль!",
|
||||
"Please input your password, at least 6 characters!": "Пожалуйста, введите свой пароль, длина должна быть не менее 6 символов!",
|
||||
"Please select an organization": "Please select an organization",
|
||||
"Please select an organization to sign in": "Please select an organization to sign in",
|
||||
"Please type an organization to sign in": "Please type an organization to sign in",
|
||||
"Redirecting, please wait.": "Перенаправление, пожалуйста, подождите.",
|
||||
"Sign In": "Войти",
|
||||
"Sign in with WebAuthn": "Войти с помощью WebAuthn",
|
||||
@@ -426,6 +444,8 @@
|
||||
"Is profile public - Tooltip": "После закрытия страницы профиля, только глобальные администраторы или пользователи из той же организации могут получить к ней доступ",
|
||||
"Modify rule": "Изменить правило",
|
||||
"New Organization": "Новая организация",
|
||||
"Optional": "Optional",
|
||||
"Required": "Required",
|
||||
"Soft deletion": "Мягкое удаление",
|
||||
"Soft deletion - Tooltip": "Когда включено, удаление пользователей не полностью удаляет их из базы данных. Вместо этого они будут помечены как удаленные",
|
||||
"Tags": "Теги",
|
||||
@@ -506,6 +526,34 @@
|
||||
"TreeNode": "Узел дерева",
|
||||
"Write": "Написать"
|
||||
},
|
||||
"plan": {
|
||||
"Edit Plan": "Edit Plan",
|
||||
"New Plan": "New Plan",
|
||||
"PerMonth": "в месяц",
|
||||
"Price per month": "Price per month",
|
||||
"Price per year": "Price per year",
|
||||
"PricePerMonth": "Цена за месяц",
|
||||
"PricePerMonth - Tooltip": "PricePerMonth - Tooltip",
|
||||
"PricePerYear": "Цена за год",
|
||||
"PricePerYear - Tooltip": "PricePerYear - Tooltip",
|
||||
"Sub role": "Sub role",
|
||||
"Sub roles - Tooltip": "Роль, включенная в текущий план"
|
||||
},
|
||||
"pricing": {
|
||||
"Copy pricing page URL": "Скопировать URL прайс-листа",
|
||||
"Edit Pricing": "Edit Pricing",
|
||||
"Free": "Бесплатно",
|
||||
"Getting started": "Выьрать план",
|
||||
"Has trial": "Есть пробный период",
|
||||
"Has trial - Tooltip": "Наличие пробного периода после выбора плана",
|
||||
"New Pricing": "New Pricing",
|
||||
"Sub plans": "Тарифные планы",
|
||||
"Sub plans - Tooltip": "Sub plans - Tooltip",
|
||||
"Trial duration": "Продолжительность пробного периода",
|
||||
"Trial duration - Tooltip": "Продолжительность пробного периода",
|
||||
"days trial available!": "дней пробного периода доступно!",
|
||||
"pricing page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "URL страницы прайс-листа успешно скопирован в буфер обмена, пожалуйста, вставьте его в режиме инкогнито или другом браузере"
|
||||
},
|
||||
"product": {
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "Купить",
|
||||
@@ -723,6 +771,24 @@
|
||||
"Your confirmed password is inconsistent with the password!": "Ваш подтвержденный пароль не соответствует паролю!",
|
||||
"sign in now": "войти сейчас"
|
||||
},
|
||||
"subscription": {
|
||||
"Approved": "Approved",
|
||||
"Duration": "Продолжительность",
|
||||
"Duration - Tooltip": "Продолжительность подписки",
|
||||
"Edit Subscription": "Edit Subscription",
|
||||
"End Date": "Дата окончания",
|
||||
"End Date - Tooltip": "Дата окончания",
|
||||
"New Subscription": "New Subscription",
|
||||
"Pending": "Pending",
|
||||
"Start Date": "Дата начала",
|
||||
"Start Date - Tooltip": "Дата начала",
|
||||
"Sub plan": "План подписки",
|
||||
"Sub plan - Tooltip": "План подписки",
|
||||
"Sub plane": "Sub plane",
|
||||
"Sub user": "Sub user",
|
||||
"Sub users": "Пользователь подписки",
|
||||
"Sub users - Tooltip": "Пользователь которому офомлена подписка"
|
||||
},
|
||||
"syncer": {
|
||||
"Affiliation table": "Таблица принадлежности",
|
||||
"Affiliation table - Tooltip": "Имя таблицы базы данных рабочей единицы",
|
||||
@@ -887,36 +953,5 @@
|
||||
"Method - Tooltip": "Метод HTTP",
|
||||
"New Webhook": "Новый вебхук",
|
||||
"Value": "Значение"
|
||||
},
|
||||
"plan": {
|
||||
"Sub roles - Tooltip": "Роль, включенная в текущий план",
|
||||
"PricePerMonth": "Цена за месяц",
|
||||
"PricePerYear": "Цена за год",
|
||||
"PerMonth": "в месяц"
|
||||
},
|
||||
"pricing": {
|
||||
"Sub plans": "Тарифные планы",
|
||||
"Sub plans - Tooltip": "Планы, включенные в прайслист",
|
||||
"Has trial": "Есть пробный период",
|
||||
"Has trial - Tooltip": "Наличие пробного периода после выбора плана",
|
||||
"Trial duration": "Продолжительность пробного периода",
|
||||
"Trial duration - Tooltip": "Продолжительность пробного периода",
|
||||
"Getting started": "Выьрать план",
|
||||
"Copy pricing page URL": "Скопировать URL прайс-листа",
|
||||
"pricing page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "URL страницы прайс-листа успешно скопирован в буфер обмена, пожалуйста, вставьте его в режиме инкогнито или другом браузере",
|
||||
"days trial available!": "дней пробного периода доступно!",
|
||||
"Free": "Бесплатно"
|
||||
},
|
||||
"subscription": {
|
||||
"Duration": "Продолжительность",
|
||||
"Duration - Tooltip": "Продолжительность подписки",
|
||||
"Start Date": "Дата начала",
|
||||
"Start Date - Tooltip": "Дата начала",
|
||||
"End Date": "Дата окончания",
|
||||
"End Date - Tooltip": "Дата окончания",
|
||||
"Sub users": "Пользователь подписки",
|
||||
"Sub users - Tooltip": "Пользователь которому офомлена подписка",
|
||||
"Sub plan": "План подписки",
|
||||
"Sub plan - Tooltip": "План подписки"
|
||||
}
|
||||
}
|
||||
|
@@ -56,14 +56,16 @@
|
||||
"Grant types": "Loại hỗ trợ",
|
||||
"Grant types - Tooltip": "Chọn loại hỗ trợ được cho phép trong giao thức OAuth",
|
||||
"Incremental": "Incremental",
|
||||
"Input": "Input",
|
||||
"Left": "Trái",
|
||||
"Logged in successfully": "Đăng nhập thành công",
|
||||
"Logged out successfully": "Đã đăng xuất thành công",
|
||||
"New Application": "Ứng dụng mới",
|
||||
"No verification": "No verification",
|
||||
"None": "Không có gì",
|
||||
"Normal": "Normal",
|
||||
"Only signup": "Only signup",
|
||||
"Org choice mode": "Org choice mode",
|
||||
"Org choice mode - Tooltip": "Org choice mode - Tooltip",
|
||||
"Please input your application!": "Vui lòng nhập đơn của bạn!",
|
||||
"Please input your organization!": "Vui lòng nhập tên tổ chức của bạn!",
|
||||
"Please select a HTML file": "Vui lòng chọn tệp HTML",
|
||||
@@ -82,6 +84,7 @@
|
||||
"SAML metadata - Tooltip": "Các siêu dữ liệu của giao thức SAML",
|
||||
"SAML metadata URL copied to clipboard successfully": "URL metadata SAML đã được sao chép vào bộ nhớ tạm thành công",
|
||||
"SAML reply URL": "URL phản hồi SAML",
|
||||
"Select": "Select",
|
||||
"Side panel HTML": "Bảng điều khiển HTML bên lề",
|
||||
"Side panel HTML - Edit": "Bảng Panel Bên - Chỉnh sửa HTML",
|
||||
"Side panel HTML - Tooltip": "Tùy chỉnh mã HTML cho bảng điều khiển bên của trang đăng nhập",
|
||||
@@ -167,8 +170,13 @@
|
||||
"Affiliation URL": "Đường dẫn liên kết liên kết",
|
||||
"Affiliation URL - Tooltip": "Đường dẫn URL trang chủ của liên kết",
|
||||
"Application": "Ứng dụng",
|
||||
"Application - Tooltip": "Application - Tooltip",
|
||||
"Applications": "Ứng dụng",
|
||||
"Applications that require authentication": "Các ứng dụng yêu cầu xác thực",
|
||||
"Approve time": "Approve time",
|
||||
"Approve time - Tooltip": "Approve time - Tooltip",
|
||||
"Approver": "Approver",
|
||||
"Approver - Tooltip": "Approver - Tooltip",
|
||||
"Avatar": "Ảnh đại diện",
|
||||
"Avatar - Tooltip": "Ảnh đại diện công khai cho người dùng",
|
||||
"Back": "Back",
|
||||
@@ -182,6 +190,7 @@
|
||||
"Click to Upload": "Nhấp để tải lên",
|
||||
"Client IP": "Địa chỉ IP của khách hàng",
|
||||
"Close": "Đóng lại",
|
||||
"Confirm": "Confirm",
|
||||
"Created time": "Thời gian tạo",
|
||||
"Default application": "Ứng dụng mặc định",
|
||||
"Default application - Tooltip": "Ứng dụng mặc định cho người dùng đăng ký trực tiếp từ trang tổ chức",
|
||||
@@ -226,6 +235,8 @@
|
||||
"Last name": "Họ",
|
||||
"Logo": "Logo",
|
||||
"Logo - Tooltip": "Biểu tượng mà ứng dụng hiển thị ra ngoài thế giới",
|
||||
"MFA items": "MFA items",
|
||||
"MFA items - Tooltip": "MFA items - Tooltip",
|
||||
"Master password": "Mật khẩu chính",
|
||||
"Master password - Tooltip": "Có thể được sử dụng để đăng nhập vào tất cả các người dùng trong tổ chức này, giúp cho quản trị viên dễ dàng đăng nhập với tư cách người dùng này để giải quyết các vấn đề kỹ thuật",
|
||||
"Menu": "Thực đơn",
|
||||
@@ -236,6 +247,7 @@
|
||||
"Models": "Mô hình",
|
||||
"Name": "Tên",
|
||||
"Name - Tooltip": "ID duy nhất dựa trên chuỗi",
|
||||
"None": "None",
|
||||
"OAuth providers": "Cung cấp OAuth",
|
||||
"OK": "Được rồi",
|
||||
"Organization": "Tổ chức",
|
||||
@@ -254,9 +266,9 @@
|
||||
"Phone - Tooltip": "Số điện thoại",
|
||||
"Phone or email": "Phone or email",
|
||||
"Plans": "Kế hoạch",
|
||||
"Pricings": "Bảng giá",
|
||||
"Preview": "Xem trước",
|
||||
"Preview - Tooltip": "Xem trước các hiệu ứng đã cấu hình",
|
||||
"Pricings": "Bảng giá",
|
||||
"Products": "Sản phẩm",
|
||||
"Provider": "Nhà cung cấp",
|
||||
"Provider - Tooltip": "Cung cấp thanh toán được cấu hình, bao gồm PayPal, Alipay, WeChat Pay, vv.",
|
||||
@@ -283,6 +295,8 @@
|
||||
"Sorry, you do not have permission to access this page or logged in status invalid.": "Xin lỗi, bạn không có quyền truy cập trang này hoặc trạng thái đăng nhập không hợp lệ.",
|
||||
"State": "Nhà nước",
|
||||
"State - Tooltip": "Trạng thái",
|
||||
"Submitter": "Submitter",
|
||||
"Submitter - Tooltip": "Submitter - Tooltip",
|
||||
"Subscriptions": "Đăng ký",
|
||||
"Successfully added": "Đã thêm thành công",
|
||||
"Successfully deleted": "Đã xóa thành công",
|
||||
@@ -354,8 +368,12 @@
|
||||
"Or sign in with another account": "Hoặc đăng nhập bằng tài khoản khác",
|
||||
"Please input your Email or Phone!": "Vui lòng nhập địa chỉ Email hoặc số điện thoại của bạn!",
|
||||
"Please input your code!": "Vui lòng nhập mã của bạn!",
|
||||
"Please input your organization name!": "Please input your organization name!",
|
||||
"Please input your password!": "Vui lòng nhập mật khẩu của bạn!",
|
||||
"Please input your password, at least 6 characters!": "Vui lòng nhập mật khẩu của bạn, ít nhất 6 ký tự!",
|
||||
"Please select an organization": "Please select an organization",
|
||||
"Please select an organization to sign in": "Please select an organization to sign in",
|
||||
"Please type an organization to sign in": "Please type an organization to sign in",
|
||||
"Redirecting, please wait.": "Đang chuyển hướng, vui lòng đợi.",
|
||||
"Sign In": "Đăng nhập",
|
||||
"Sign in with WebAuthn": "Đăng nhập với WebAuthn",
|
||||
@@ -426,6 +444,8 @@
|
||||
"Is profile public - Tooltip": "Sau khi đóng lại, chỉ các quản trị viên toàn cầu hoặc người dùng trong cùng tổ chức mới có thể truy cập trang hồ sơ người dùng",
|
||||
"Modify rule": "Sửa đổi quy tắc",
|
||||
"New Organization": "Tổ chức mới",
|
||||
"Optional": "Optional",
|
||||
"Required": "Required",
|
||||
"Soft deletion": "Xóa mềm",
|
||||
"Soft deletion - Tooltip": "Khi được bật, việc xóa người dùng sẽ không hoàn toàn loại bỏ họ khỏi cơ sở dữ liệu. Thay vào đó, họ sẽ được đánh dấu là đã bị xóa",
|
||||
"Tags": "Thẻ",
|
||||
@@ -506,6 +526,34 @@
|
||||
"TreeNode": "Nút của cây",
|
||||
"Write": "Viết"
|
||||
},
|
||||
"plan": {
|
||||
"Edit Plan": "Edit Plan",
|
||||
"New Plan": "New Plan",
|
||||
"PerMonth": "mỗi tháng",
|
||||
"Price per month": "Price per month",
|
||||
"Price per year": "Price per year",
|
||||
"PricePerMonth": "Giá mỗi tháng",
|
||||
"PricePerMonth - Tooltip": "PricePerMonth - Tooltip",
|
||||
"PricePerYear": "Giá mỗi năm",
|
||||
"PricePerYear - Tooltip": "PricePerYear - Tooltip",
|
||||
"Sub role": "Sub role",
|
||||
"Sub roles - Tooltip": "Vai trò bao gồm trong kế hoạch hiện tại"
|
||||
},
|
||||
"pricing": {
|
||||
"Copy pricing page URL": "Sao chép URL trang bảng giá",
|
||||
"Edit Pricing": "Edit Pricing",
|
||||
"Free": "Miễn phí",
|
||||
"Getting started": "Bắt đầu",
|
||||
"Has trial": "Có thời gian thử nghiệm",
|
||||
"Has trial - Tooltip": "Khả dụng thời gian thử nghiệm sau khi chọn kế hoạch",
|
||||
"New Pricing": "New Pricing",
|
||||
"Sub plans": "Kế hoạch phụ",
|
||||
"Sub plans - Tooltip": "Sub plans - Tooltip",
|
||||
"Trial duration": "Thời gian thử nghiệm",
|
||||
"Trial duration - Tooltip": "Thời gian thử nghiệm",
|
||||
"days trial available!": "ngày dùng thử có sẵn!",
|
||||
"pricing page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "URL trang bảng giá đã được sao chép vào clipboard thành công, vui lòng dán vào cửa sổ ẩn danh hoặc trình duyệt khác"
|
||||
},
|
||||
"product": {
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "Mua",
|
||||
@@ -723,6 +771,24 @@
|
||||
"Your confirmed password is inconsistent with the password!": "Mật khẩu xác nhận của bạn không khớp với mật khẩu đã nhập!",
|
||||
"sign in now": "Đăng nhập ngay bây giờ"
|
||||
},
|
||||
"subscription": {
|
||||
"Approved": "Approved",
|
||||
"Duration": "Thời lượng",
|
||||
"Duration - Tooltip": "Thời lượng đăng ký",
|
||||
"Edit Subscription": "Edit Subscription",
|
||||
"End Date": "Ngày kết thúc",
|
||||
"End Date - Tooltip": "Ngày kết thúc",
|
||||
"New Subscription": "New Subscription",
|
||||
"Pending": "Pending",
|
||||
"Start Date": "Ngày bắt đầu",
|
||||
"Start Date - Tooltip": "Ngày bắt đầu",
|
||||
"Sub plan": "Kế hoạch đăng ký",
|
||||
"Sub plan - Tooltip": "Kế hoạch đăng ký",
|
||||
"Sub plane": "Sub plane",
|
||||
"Sub user": "Sub user",
|
||||
"Sub users": "Người dùng đăng ký",
|
||||
"Sub users - Tooltip": "Người dùng đăng ký"
|
||||
},
|
||||
"syncer": {
|
||||
"Affiliation table": "Bảng liên kết",
|
||||
"Affiliation table - Tooltip": "Tên bảng cơ sở dữ liệu của đơn vị làm việc",
|
||||
@@ -887,36 +953,5 @@
|
||||
"Method - Tooltip": "Phương thức HTTP",
|
||||
"New Webhook": "Webhook mới",
|
||||
"Value": "Giá trị"
|
||||
},
|
||||
"plan": {
|
||||
"Sub roles - Tooltip": "Vai trò bao gồm trong kế hoạch hiện tại",
|
||||
"PricePerMonth": "Giá mỗi tháng",
|
||||
"PricePerYear": "Giá mỗi năm",
|
||||
"PerMonth": "mỗi tháng"
|
||||
},
|
||||
"pricing": {
|
||||
"Sub plans": "Kế hoạch phụ",
|
||||
"Sub plans - Tooltip": "Các kế hoạch bao gồm trong bảng giá hiện tại",
|
||||
"Has trial": "Có thời gian thử nghiệm",
|
||||
"Has trial - Tooltip": "Khả dụng thời gian thử nghiệm sau khi chọn kế hoạch",
|
||||
"Trial duration": "Thời gian thử nghiệm",
|
||||
"Trial duration - Tooltip": "Thời gian thử nghiệm",
|
||||
"Getting started": "Bắt đầu",
|
||||
"Copy pricing page URL": "Sao chép URL trang bảng giá",
|
||||
"pricing page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "URL trang bảng giá đã được sao chép vào clipboard thành công, vui lòng dán vào cửa sổ ẩn danh hoặc trình duyệt khác",
|
||||
"days trial available!": "ngày dùng thử có sẵn!",
|
||||
"Free": "Miễn phí"
|
||||
},
|
||||
"subscription": {
|
||||
"Duration": "Thời lượng",
|
||||
"Duration - Tooltip": "Thời lượng đăng ký",
|
||||
"Start Date": "Ngày bắt đầu",
|
||||
"Start Date - Tooltip": "Ngày bắt đầu",
|
||||
"End Date": "Ngày kết thúc",
|
||||
"End Date - Tooltip": "Ngày kết thúc",
|
||||
"Sub users": "Người dùng đăng ký",
|
||||
"Sub users - Tooltip": "Người dùng đăng ký",
|
||||
"Sub plan": "Kế hoạch đăng ký",
|
||||
"Sub plan - Tooltip": "Kế hoạch đăng ký"
|
||||
}
|
||||
}
|
||||
|
@@ -56,14 +56,16 @@
|
||||
"Grant types": "OAuth授权类型",
|
||||
"Grant types - Tooltip": "选择允许哪些OAuth协议中的grant types",
|
||||
"Incremental": "递增",
|
||||
"Input": "输入",
|
||||
"Left": "居左",
|
||||
"Logged in successfully": "登录成功",
|
||||
"Logged out successfully": "登出成功",
|
||||
"New Application": "添加应用",
|
||||
"No verification": "不校验",
|
||||
"None": "关闭",
|
||||
"Normal": "标准",
|
||||
"Only signup": "仅注册",
|
||||
"Org choice mode": "组织选择模式",
|
||||
"Org choice mode - Tooltip": "采用什么方式选择要登录的组织",
|
||||
"Please input your application!": "请输入你的应用",
|
||||
"Please input your organization!": "请输入你的组织",
|
||||
"Please select a HTML file": "请选择一个HTML文件",
|
||||
@@ -82,6 +84,7 @@
|
||||
"SAML metadata - Tooltip": "SAML协议的元数据(Metadata)信息",
|
||||
"SAML metadata URL copied to clipboard successfully": "SAML元数据URL已成功复制到剪贴板",
|
||||
"SAML reply URL": "SAML回复 URL",
|
||||
"Select": "选择",
|
||||
"Side panel HTML": "侧面板HTML",
|
||||
"Side panel HTML - Edit": "侧面板HTML - 编辑",
|
||||
"Side panel HTML - Tooltip": "自定义登录页面侧面板的HTML代码",
|
||||
@@ -167,8 +170,13 @@
|
||||
"Affiliation URL": "工作单位URL",
|
||||
"Affiliation URL - Tooltip": "工作单位的官网URL",
|
||||
"Application": "应用",
|
||||
"Application - Tooltip": "Application - Tooltip",
|
||||
"Applications": "应用",
|
||||
"Applications that require authentication": "需要认证和鉴权的应用",
|
||||
"Approve time": "Approve time",
|
||||
"Approve time - Tooltip": "Approve time - Tooltip",
|
||||
"Approver": "Approver",
|
||||
"Approver - Tooltip": "Approver - Tooltip",
|
||||
"Avatar": "头像",
|
||||
"Avatar - Tooltip": "公开展示的用户头像",
|
||||
"Back": "返回",
|
||||
@@ -182,6 +190,7 @@
|
||||
"Click to Upload": "点击上传",
|
||||
"Client IP": "客户端IP",
|
||||
"Close": "关闭",
|
||||
"Confirm": "确认",
|
||||
"Created time": "创建时间",
|
||||
"Default application": "默认应用",
|
||||
"Default application - Tooltip": "直接从组织页面注册的用户默认所属的应用",
|
||||
@@ -226,6 +235,8 @@
|
||||
"Last name": "姓氏",
|
||||
"Logo": "Logo",
|
||||
"Logo - Tooltip": "应用程序向外展示的图标",
|
||||
"MFA items": "MFA 项",
|
||||
"MFA items - Tooltip": "MFA 项 - Tooltip",
|
||||
"Master password": "万能密码",
|
||||
"Master password - Tooltip": "可用来登录该组织下的所有用户,方便管理员以该用户身份登录,以解决技术问题",
|
||||
"Menu": "目录",
|
||||
@@ -236,6 +247,7 @@
|
||||
"Models": "模型",
|
||||
"Name": "名称",
|
||||
"Name - Tooltip": "唯一的、字符串式的ID",
|
||||
"None": "无",
|
||||
"OAuth providers": "OAuth提供方",
|
||||
"OK": "OK",
|
||||
"Organization": "组织",
|
||||
@@ -254,9 +266,9 @@
|
||||
"Phone - Tooltip": "手机号",
|
||||
"Phone or email": "手机或邮箱",
|
||||
"Plans": "计划",
|
||||
"Pricings": "定价",
|
||||
"Preview": "预览",
|
||||
"Preview - Tooltip": "可预览所配置的效果",
|
||||
"Pricings": "定价",
|
||||
"Products": "商品",
|
||||
"Provider": "提供商",
|
||||
"Provider - Tooltip": "需要配置的支付提供商,包括PayPal、支付宝、微信支付等",
|
||||
@@ -283,6 +295,8 @@
|
||||
"Sorry, you do not have permission to access this page or logged in status invalid.": "抱歉,您无权访问该页面或登录状态失效",
|
||||
"State": "状态",
|
||||
"State - Tooltip": "状态",
|
||||
"Submitter": "Submitter",
|
||||
"Submitter - Tooltip": "Submitter - Tooltip",
|
||||
"Subscriptions": "订阅",
|
||||
"Successfully added": "添加成功",
|
||||
"Successfully deleted": "删除成功",
|
||||
@@ -354,8 +368,12 @@
|
||||
"Or sign in with another account": "或者,登录其他账号",
|
||||
"Please input your Email or Phone!": "请输入您的Email或手机号!",
|
||||
"Please input your code!": "请输入您的验证码!",
|
||||
"Please input your organization name!": "请输入组织的名字!",
|
||||
"Please input your password!": "请输入您的密码!",
|
||||
"Please input your password, at least 6 characters!": "请输入您的密码,不少于6位",
|
||||
"Please select an organization": "请选择一个组织",
|
||||
"Please select an organization to sign in": "请选择要登录的组织",
|
||||
"Please type an organization to sign in": "请输入要登录的组织",
|
||||
"Redirecting, please wait.": "正在跳转, 请稍等.",
|
||||
"Sign In": "登录",
|
||||
"Sign in with WebAuthn": "WebAuthn登录",
|
||||
@@ -426,6 +444,8 @@
|
||||
"Is profile public - Tooltip": "关闭后只有全局管理员或同组织用户才能访问用户主页",
|
||||
"Modify rule": "修改规则",
|
||||
"New Organization": "添加组织",
|
||||
"Optional": "可选",
|
||||
"Required": "必须",
|
||||
"Soft deletion": "软删除",
|
||||
"Soft deletion - Tooltip": "启用后,删除一个用户时不会在数据库彻底清除,只会标记为已删除状态",
|
||||
"Tags": "标签集合",
|
||||
@@ -506,6 +526,34 @@
|
||||
"TreeNode": "树节点",
|
||||
"Write": "写权限"
|
||||
},
|
||||
"plan": {
|
||||
"Edit Plan": "Edit Plan",
|
||||
"New Plan": "New Plan",
|
||||
"PerMonth": "每月",
|
||||
"Price per month": "Price per month",
|
||||
"Price per year": "Price per year",
|
||||
"PricePerMonth": "每月价格",
|
||||
"PricePerMonth - Tooltip": "PricePerMonth - Tooltip",
|
||||
"PricePerYear": "每年价格",
|
||||
"PricePerYear - Tooltip": "PricePerYear - Tooltip",
|
||||
"Sub role": "Sub role",
|
||||
"Sub roles - Tooltip": "当前计划中包含的角色"
|
||||
},
|
||||
"pricing": {
|
||||
"Copy pricing page URL": "复制定价页面链接",
|
||||
"Edit Pricing": "Edit Pricing",
|
||||
"Free": "免费",
|
||||
"Getting started": "开始使用",
|
||||
"Has trial": "有试用期",
|
||||
"Has trial - Tooltip": "选择计划后是否有试用期",
|
||||
"New Pricing": "New Pricing",
|
||||
"Sub plans": "附加计划",
|
||||
"Sub plans - Tooltip": "Sub plans - Tooltip",
|
||||
"Trial duration": "试用期时长",
|
||||
"Trial duration - Tooltip": "试用期时长",
|
||||
"days trial available!": "天试用期可用!",
|
||||
"pricing page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "定价页面链接已成功复制到剪贴板,请粘贴到隐身窗口或其他浏览器中"
|
||||
},
|
||||
"product": {
|
||||
"Alipay": "支付宝",
|
||||
"Buy": "购买",
|
||||
@@ -723,6 +771,24 @@
|
||||
"Your confirmed password is inconsistent with the password!": "您两次输入的密码不一致!",
|
||||
"sign in now": "立即登录"
|
||||
},
|
||||
"subscription": {
|
||||
"Approved": "Approved",
|
||||
"Duration": "订阅时长",
|
||||
"Duration - Tooltip": "订阅时长",
|
||||
"Edit Subscription": "Edit Subscription",
|
||||
"End Date": "结束日期",
|
||||
"End Date - Tooltip": "结束日期",
|
||||
"New Subscription": "New Subscription",
|
||||
"Pending": "Pending",
|
||||
"Start Date": "开始日期",
|
||||
"Start Date - Tooltip": "开始日期",
|
||||
"Sub plan": "订阅计划",
|
||||
"Sub plan - Tooltip": "订阅计划",
|
||||
"Sub plane": "Sub plane",
|
||||
"Sub user": "Sub user",
|
||||
"Sub users": "订阅用户",
|
||||
"Sub users - Tooltip": "订阅用户"
|
||||
},
|
||||
"syncer": {
|
||||
"Affiliation table": "工作单位表",
|
||||
"Affiliation table - Tooltip": "工作单位的数据库表名",
|
||||
@@ -887,36 +953,5 @@
|
||||
"Method - Tooltip": "HTTP方法",
|
||||
"New Webhook": "添加Webhook",
|
||||
"Value": "值"
|
||||
},
|
||||
"plan": {
|
||||
"Sub roles - Tooltip": "当前计划中包含的角色",
|
||||
"PricePerMonth": "每月价格",
|
||||
"PricePerYear": "每年价格",
|
||||
"PerMonth": "每月"
|
||||
},
|
||||
"pricing": {
|
||||
"Sub plans": "附加计划",
|
||||
"Sub plans - Tooltip": "包含在当前定价中的计划",
|
||||
"Has trial": "有试用期",
|
||||
"Has trial - Tooltip": "选择计划后是否有试用期",
|
||||
"Trial duration": "试用期时长",
|
||||
"Trial duration - Tooltip": "试用期时长",
|
||||
"Getting started": "开始使用",
|
||||
"Copy pricing page URL": "复制定价页面链接",
|
||||
"pricing page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "定价页面链接已成功复制到剪贴板,请粘贴到隐身窗口或其他浏览器中",
|
||||
"days trial available!": "天试用期可用!",
|
||||
"Free": "免费"
|
||||
},
|
||||
"subscription": {
|
||||
"Duration": "订阅时长",
|
||||
"Duration - Tooltip": "订阅时长",
|
||||
"Start Date": "开始日期",
|
||||
"Start Date - Tooltip": "开始日期",
|
||||
"End Date": "结束日期",
|
||||
"End Date - Tooltip": "结束日期",
|
||||
"Sub users": "订阅用户",
|
||||
"Sub users - Tooltip": "订阅用户",
|
||||
"Sub plan": "订阅计划",
|
||||
"Sub plan - Tooltip": "订阅计划"
|
||||
}
|
||||
}
|
||||
|
@@ -188,7 +188,7 @@ class ProviderTable extends React.Component {
|
||||
onChange={value => {
|
||||
this.updateField(table, index, "rule", value);
|
||||
}} >
|
||||
<Option key="None" value="None">{i18next.t("application:None")}</Option>
|
||||
<Option key="None" value="None">{i18next.t("general:None")}</Option>
|
||||
<Option key="Dynamic" value="Dynamic">{i18next.t("application:Dynamic")}</Option>
|
||||
<Option key="Always" value="Always">{i18next.t("application:Always")}</Option>
|
||||
</Select>
|
||||
|
@@ -177,7 +177,7 @@ class SignupTable extends React.Component {
|
||||
];
|
||||
} else if (record.name === "Display name") {
|
||||
options = [
|
||||
{id: "None", name: i18next.t("application:None")},
|
||||
{id: "None", name: i18next.t("general:None")},
|
||||
{id: "Real name", name: i18next.t("application:Real name")},
|
||||
{id: "First, last", name: i18next.t("application:First, last")},
|
||||
];
|
||||
|
Reference in New Issue
Block a user