mirror of
https://github.com/logto-io/logto.git
synced 2024-12-16 20:26:19 -05:00
refactor(console): update plan quota table content (#4234)
* refactor(console): update plan quota table content * refactor(console): use reserved plan id to index plan-related data
This commit is contained in:
parent
129d22980f
commit
491840926c
24 changed files with 621 additions and 373 deletions
151
packages/console/src/consts/plan-quotas.ts
Normal file
151
packages/console/src/consts/plan-quotas.ts
Normal file
|
@ -0,0 +1,151 @@
|
|||
import {
|
||||
type SubscriptionPlanTable,
|
||||
type SubscriptionPlanTableData,
|
||||
type SubscriptionPlanTableGroupKeyMap,
|
||||
SubscriptionPlanTableGroupKey,
|
||||
ReservedPlanName,
|
||||
} from '@/types/subscriptions';
|
||||
|
||||
import { ReservedPlanId } from './subscriptions';
|
||||
|
||||
type EnabledFeatureMap = Record<string, boolean | undefined>;
|
||||
|
||||
export const customCssEnabledMap: EnabledFeatureMap = {
|
||||
[ReservedPlanId.free]: true,
|
||||
[ReservedPlanId.hobby]: true,
|
||||
[ReservedPlanId.pro]: true,
|
||||
};
|
||||
|
||||
export const appLogoAndFaviconEnabledMap: EnabledFeatureMap = {
|
||||
[ReservedPlanId.free]: true,
|
||||
[ReservedPlanId.hobby]: true,
|
||||
[ReservedPlanId.pro]: true,
|
||||
};
|
||||
|
||||
export const darkModeEnabledMap: EnabledFeatureMap = {
|
||||
[ReservedPlanId.free]: true,
|
||||
[ReservedPlanId.hobby]: true,
|
||||
[ReservedPlanId.pro]: true,
|
||||
};
|
||||
|
||||
export const i18nEnabledMap: EnabledFeatureMap = {
|
||||
[ReservedPlanId.free]: true,
|
||||
[ReservedPlanId.hobby]: true,
|
||||
[ReservedPlanId.pro]: true,
|
||||
};
|
||||
|
||||
export const passwordSignInEnabledMap: EnabledFeatureMap = {
|
||||
[ReservedPlanId.free]: true,
|
||||
[ReservedPlanId.hobby]: true,
|
||||
[ReservedPlanId.pro]: true,
|
||||
};
|
||||
|
||||
export const passwordlessSignInEnabledMap: EnabledFeatureMap = {
|
||||
[ReservedPlanId.free]: true,
|
||||
[ReservedPlanId.hobby]: true,
|
||||
[ReservedPlanId.pro]: true,
|
||||
};
|
||||
|
||||
export const emailConnectorsEnabledMap: EnabledFeatureMap = {
|
||||
[ReservedPlanId.free]: true,
|
||||
[ReservedPlanId.hobby]: true,
|
||||
[ReservedPlanId.pro]: true,
|
||||
};
|
||||
|
||||
export const smsConnectorsEnabledMap: EnabledFeatureMap = {
|
||||
[ReservedPlanId.free]: true,
|
||||
[ReservedPlanId.hobby]: true,
|
||||
[ReservedPlanId.pro]: true,
|
||||
};
|
||||
|
||||
export const userManagementEnabledMap: EnabledFeatureMap = {
|
||||
[ReservedPlanId.free]: true,
|
||||
[ReservedPlanId.hobby]: true,
|
||||
[ReservedPlanId.pro]: true,
|
||||
};
|
||||
|
||||
export const communitySupportEnabledMap: EnabledFeatureMap = {
|
||||
[ReservedPlanId.free]: true,
|
||||
[ReservedPlanId.hobby]: true,
|
||||
[ReservedPlanId.pro]: true,
|
||||
};
|
||||
|
||||
export const ticketSupportResponseTimeMap: Record<string, number | undefined> = {
|
||||
[ReservedPlanId.free]: 0,
|
||||
[ReservedPlanId.hobby]: 72,
|
||||
[ReservedPlanId.pro]: 48,
|
||||
};
|
||||
|
||||
/**
|
||||
* Note: this is only for display purpose.
|
||||
*
|
||||
* `null` => Unlimited
|
||||
* `undefined` => Contact
|
||||
*/
|
||||
const enterprisePlanTable: SubscriptionPlanTable = {
|
||||
basePrice: undefined,
|
||||
mauUnitPrice: undefined,
|
||||
mauLimit: undefined,
|
||||
applicationsLimit: undefined,
|
||||
machineToMachineLimit: undefined,
|
||||
resourcesLimit: undefined,
|
||||
scopesPerResourceLimit: undefined,
|
||||
customDomainEnabled: true,
|
||||
customCssEnabled: true,
|
||||
appLogoAndFaviconEnabled: true,
|
||||
darkModeEnabled: true,
|
||||
i18nEnabled: true,
|
||||
omniSignInEnabled: true,
|
||||
passwordSignInEnabled: true,
|
||||
passwordlessSignInEnabled: true,
|
||||
emailConnectorsEnabled: true,
|
||||
smsConnectorsEnabled: true,
|
||||
socialConnectorsLimit: undefined,
|
||||
standardConnectorsLimit: undefined,
|
||||
userManagementEnabled: true,
|
||||
rolesLimit: undefined,
|
||||
scopesPerRoleLimit: undefined,
|
||||
auditLogsRetentionDays: undefined,
|
||||
hooksLimit: undefined,
|
||||
communitySupportEnabled: true,
|
||||
ticketSupportResponseTime: undefined,
|
||||
};
|
||||
|
||||
/**
|
||||
* Note: this is only for display purpose.
|
||||
*/
|
||||
export const enterprisePlanTableData: SubscriptionPlanTableData = {
|
||||
id: 'enterprise', // Dummy
|
||||
name: ReservedPlanName.Enterprise,
|
||||
table: enterprisePlanTable,
|
||||
};
|
||||
|
||||
export const planTableGroupKeyMap: SubscriptionPlanTableGroupKeyMap = Object.freeze({
|
||||
[SubscriptionPlanTableGroupKey.base]: ['basePrice', 'mauUnitPrice', 'mauLimit'],
|
||||
[SubscriptionPlanTableGroupKey.applications]: ['applicationsLimit', 'machineToMachineLimit'],
|
||||
[SubscriptionPlanTableGroupKey.resources]: ['resourcesLimit', 'scopesPerResourceLimit'],
|
||||
[SubscriptionPlanTableGroupKey.branding]: [
|
||||
'customDomainEnabled',
|
||||
'customCssEnabled',
|
||||
'appLogoAndFaviconEnabled',
|
||||
'darkModeEnabled',
|
||||
'i18nEnabled',
|
||||
],
|
||||
[SubscriptionPlanTableGroupKey.userAuthentication]: [
|
||||
'omniSignInEnabled',
|
||||
'passwordSignInEnabled',
|
||||
'passwordlessSignInEnabled',
|
||||
'emailConnectorsEnabled',
|
||||
'smsConnectorsEnabled',
|
||||
'socialConnectorsLimit',
|
||||
'standardConnectorsLimit',
|
||||
],
|
||||
[SubscriptionPlanTableGroupKey.roles]: [
|
||||
'userManagementEnabled',
|
||||
'rolesLimit',
|
||||
'scopesPerRoleLimit',
|
||||
],
|
||||
[SubscriptionPlanTableGroupKey.auditLogs]: ['auditLogsRetentionDays'],
|
||||
[SubscriptionPlanTableGroupKey.hooks]: ['hooksLimit'],
|
||||
[SubscriptionPlanTableGroupKey.support]: ['communitySupportEnabled', 'ticketSupportResponseTime'],
|
||||
}) satisfies SubscriptionPlanTableGroupKeyMap;
|
|
@ -13,7 +13,6 @@ export const quotaItemPhrasesMap: Record<
|
|||
scopesPerResourceLimit: 'scopes_per_resource_limit.name',
|
||||
customDomainEnabled: 'custom_domain_enabled.name',
|
||||
omniSignInEnabled: 'omni_sign_in_enabled.name',
|
||||
builtInEmailConnectorEnabled: 'built_in_email_connector_enabled.name',
|
||||
socialConnectorsLimit: 'social_connectors_limit.name',
|
||||
standardConnectorsLimit: 'standard_connectors_limit.name',
|
||||
rolesLimit: 'roles_limit.name',
|
||||
|
@ -35,7 +34,6 @@ export const quotaItemUnlimitedPhrasesMap: Record<
|
|||
scopesPerResourceLimit: 'scopes_per_resource_limit.unlimited',
|
||||
customDomainEnabled: 'custom_domain_enabled.unlimited',
|
||||
omniSignInEnabled: 'omni_sign_in_enabled.unlimited',
|
||||
builtInEmailConnectorEnabled: 'built_in_email_connector_enabled.unlimited',
|
||||
socialConnectorsLimit: 'social_connectors_limit.unlimited',
|
||||
standardConnectorsLimit: 'standard_connectors_limit.unlimited',
|
||||
rolesLimit: 'roles_limit.unlimited',
|
||||
|
@ -57,7 +55,6 @@ export const quotaItemLimitedPhrasesMap: Record<
|
|||
scopesPerResourceLimit: 'scopes_per_resource_limit.limited',
|
||||
customDomainEnabled: 'custom_domain_enabled.limited',
|
||||
omniSignInEnabled: 'omni_sign_in_enabled.limited',
|
||||
builtInEmailConnectorEnabled: 'built_in_email_connector_enabled.limited',
|
||||
socialConnectorsLimit: 'social_connectors_limit.limited',
|
||||
standardConnectorsLimit: 'standard_connectors_limit.limited',
|
||||
rolesLimit: 'roles_limit.limited',
|
||||
|
@ -79,7 +76,6 @@ export const quotaItemNotEligiblePhrasesMap: Record<
|
|||
scopesPerResourceLimit: 'scopes_per_resource_limit.not_eligible',
|
||||
customDomainEnabled: 'custom_domain_enabled.not_eligible',
|
||||
omniSignInEnabled: 'omni_sign_in_enabled.not_eligible',
|
||||
builtInEmailConnectorEnabled: 'built_in_email_connector_enabled.not_eligible',
|
||||
socialConnectorsLimit: 'social_connectors_limit.not_eligible',
|
||||
standardConnectorsLimit: 'standard_connectors_limit.not_eligible',
|
||||
rolesLimit: 'roles_limit.not_eligible',
|
||||
|
|
|
@ -1,11 +1,3 @@
|
|||
import {
|
||||
type SubscriptionPlanTableData,
|
||||
ReservedPlanName,
|
||||
type SubscriptionPlanTable,
|
||||
type SubscriptionPlanTableGroupKeyMap,
|
||||
SubscriptionPlanTableGroupKey,
|
||||
} from '@/types/subscriptions';
|
||||
|
||||
export enum ReservedPlanId {
|
||||
free = 'free',
|
||||
hobby = 'hobby',
|
||||
|
@ -18,73 +10,6 @@ export const reservedPlanIdOrder: string[] = [
|
|||
ReservedPlanId.pro,
|
||||
];
|
||||
|
||||
export const communitySupportEnabledMap: Record<string, boolean | undefined> = {
|
||||
[ReservedPlanName.Free]: true,
|
||||
[ReservedPlanName.Hobby]: true,
|
||||
[ReservedPlanName.Pro]: true,
|
||||
[ReservedPlanName.Enterprise]: true,
|
||||
};
|
||||
|
||||
export const ticketSupportResponseTimeMap: Record<string, number | undefined> = {
|
||||
[ReservedPlanName.Free]: 0,
|
||||
[ReservedPlanName.Hobby]: 72,
|
||||
[ReservedPlanName.Pro]: 48,
|
||||
[ReservedPlanName.Enterprise]: undefined,
|
||||
};
|
||||
|
||||
/**
|
||||
* Note: this is only for display purpose.
|
||||
*
|
||||
* `null` => Unlimited
|
||||
* `undefined` => Contact
|
||||
*/
|
||||
const enterprisePlanTable: SubscriptionPlanTable = {
|
||||
basePrice: undefined,
|
||||
mauUnitPrice: undefined,
|
||||
mauLimit: undefined,
|
||||
applicationsLimit: undefined,
|
||||
machineToMachineLimit: undefined,
|
||||
resourcesLimit: undefined,
|
||||
scopesPerResourceLimit: undefined,
|
||||
customDomainEnabled: true,
|
||||
omniSignInEnabled: true,
|
||||
builtInEmailConnectorEnabled: true,
|
||||
socialConnectorsLimit: null,
|
||||
standardConnectorsLimit: undefined,
|
||||
rolesLimit: undefined,
|
||||
scopesPerRoleLimit: null,
|
||||
auditLogsRetentionDays: undefined,
|
||||
hooksLimit: undefined,
|
||||
communitySupportEnabled: true,
|
||||
ticketSupportResponseTime: ticketSupportResponseTimeMap[ReservedPlanName.Enterprise],
|
||||
};
|
||||
|
||||
/**
|
||||
* Note: this is only for display purpose.
|
||||
*/
|
||||
export const enterprisePlanTableData: SubscriptionPlanTableData = {
|
||||
id: 'enterprise', // Dummy
|
||||
name: ReservedPlanName.Enterprise,
|
||||
table: enterprisePlanTable,
|
||||
};
|
||||
|
||||
export const planTableGroupKeyMap: SubscriptionPlanTableGroupKeyMap = Object.freeze({
|
||||
[SubscriptionPlanTableGroupKey.base]: ['basePrice', 'mauUnitPrice', 'mauLimit'],
|
||||
[SubscriptionPlanTableGroupKey.applications]: ['applicationsLimit', 'machineToMachineLimit'],
|
||||
[SubscriptionPlanTableGroupKey.resources]: ['resourcesLimit', 'scopesPerResourceLimit'],
|
||||
[SubscriptionPlanTableGroupKey.branding]: ['customDomainEnabled'],
|
||||
[SubscriptionPlanTableGroupKey.userAuthentication]: [
|
||||
'omniSignInEnabled',
|
||||
'builtInEmailConnectorEnabled',
|
||||
'socialConnectorsLimit',
|
||||
'standardConnectorsLimit',
|
||||
],
|
||||
[SubscriptionPlanTableGroupKey.roles]: ['rolesLimit', 'scopesPerRoleLimit'],
|
||||
[SubscriptionPlanTableGroupKey.auditLogs]: ['auditLogsRetentionDays'],
|
||||
[SubscriptionPlanTableGroupKey.hooks]: ['hooksLimit'],
|
||||
[SubscriptionPlanTableGroupKey.support]: ['communitySupportEnabled', 'ticketSupportResponseTime'],
|
||||
}) satisfies SubscriptionPlanTableGroupKeyMap;
|
||||
|
||||
export const checkoutStateQueryKey = 'checkout-state';
|
||||
|
||||
export const checkoutSuccessCallbackPath = 'checkout-success';
|
||||
|
|
|
@ -14,7 +14,7 @@ const planQuotaGroupKeyPhraseMap: {
|
|||
[SubscriptionPlanTableGroupKey.resources]: 'resource.title',
|
||||
[SubscriptionPlanTableGroupKey.branding]: 'branding.title',
|
||||
[SubscriptionPlanTableGroupKey.userAuthentication]: 'user_authn.title',
|
||||
[SubscriptionPlanTableGroupKey.roles]: 'roles.title',
|
||||
[SubscriptionPlanTableGroupKey.roles]: 'user_management.title',
|
||||
[SubscriptionPlanTableGroupKey.hooks]: 'hooks.title',
|
||||
[SubscriptionPlanTableGroupKey.auditLogs]: 'audit_logs.title',
|
||||
[SubscriptionPlanTableGroupKey.support]: 'support.title',
|
||||
|
|
|
@ -9,22 +9,30 @@ const planQuotaKeyPhraseMap: {
|
|||
'admin_console.subscription.quota_table'
|
||||
>;
|
||||
} = {
|
||||
basePrice: 'quota.base_price',
|
||||
mauUnitPrice: 'quota.mau_unit_price',
|
||||
mauLimit: 'quota.mau_limit',
|
||||
applicationsLimit: 'application.total',
|
||||
machineToMachineLimit: 'application.m2m',
|
||||
resourcesLimit: 'resource.resource_count',
|
||||
scopesPerResourceLimit: 'resource.scopes_per_resource',
|
||||
customDomainEnabled: 'branding.custom_domain',
|
||||
customCssEnabled: 'branding.custom_css',
|
||||
appLogoAndFaviconEnabled: 'branding.app_logo_and_favicon',
|
||||
darkModeEnabled: 'branding.dark_mode',
|
||||
i18nEnabled: 'branding.i18n',
|
||||
omniSignInEnabled: 'user_authn.omni_sign_in',
|
||||
builtInEmailConnectorEnabled: 'user_authn.built_in_email_connector',
|
||||
passwordSignInEnabled: 'user_authn.password',
|
||||
passwordlessSignInEnabled: 'user_authn.passwordless',
|
||||
emailConnectorsEnabled: 'user_authn.email_connector',
|
||||
smsConnectorsEnabled: 'user_authn.sms_connector',
|
||||
socialConnectorsLimit: 'user_authn.social_connectors',
|
||||
standardConnectorsLimit: 'user_authn.standard_connectors',
|
||||
rolesLimit: 'roles.roles',
|
||||
scopesPerRoleLimit: 'roles.scopes_per_role',
|
||||
hooksLimit: 'hooks.amount',
|
||||
userManagementEnabled: 'user_management.user_management',
|
||||
rolesLimit: 'user_management.roles',
|
||||
scopesPerRoleLimit: 'user_management.scopes_per_role',
|
||||
hooksLimit: 'hooks.hooks',
|
||||
auditLogsRetentionDays: 'audit_logs.retention',
|
||||
basePrice: 'quota.base_price',
|
||||
mauUnitPrice: 'quota.mau_unit_price',
|
||||
communitySupportEnabled: 'support.community',
|
||||
ticketSupportResponseTime: 'support.customer_ticket',
|
||||
};
|
||||
|
|
|
@ -3,7 +3,7 @@ import { useMemo } from 'react';
|
|||
|
||||
import Success from '@/assets/icons/success.svg';
|
||||
import PlanName from '@/components/PlanName';
|
||||
import { enterprisePlanTableData, planTableGroupKeyMap } from '@/consts/subscriptions';
|
||||
import { enterprisePlanTableData, planTableGroupKeyMap } from '@/consts/plan-quotas';
|
||||
import DynamicT from '@/ds-components/DynamicT';
|
||||
import Table from '@/ds-components/Table';
|
||||
import { type RowGroup, type Column } from '@/ds-components/Table/types';
|
||||
|
|
|
@ -1,5 +1,16 @@
|
|||
import { conditional, conditionalString } from '@silverhand/essentials';
|
||||
|
||||
import {
|
||||
appLogoAndFaviconEnabledMap,
|
||||
customCssEnabledMap,
|
||||
darkModeEnabledMap,
|
||||
emailConnectorsEnabledMap,
|
||||
i18nEnabledMap,
|
||||
passwordSignInEnabledMap,
|
||||
passwordlessSignInEnabledMap,
|
||||
smsConnectorsEnabledMap,
|
||||
userManagementEnabledMap,
|
||||
} from '@/consts/plan-quotas';
|
||||
import { type SubscriptionPlanTableData, type SubscriptionPlan } from '@/types/subscriptions';
|
||||
|
||||
export const constructPlanTableDataArray = (
|
||||
|
@ -20,6 +31,15 @@ export const constructPlanTableDataArray = (
|
|||
mauUnitPrice: stripeProducts
|
||||
.filter(({ type }) => type !== 'flat')
|
||||
.map(({ price: { unitAmountDecimal } }) => conditionalString(unitAmountDecimal)),
|
||||
customCssEnabled: customCssEnabledMap[id],
|
||||
appLogoAndFaviconEnabled: appLogoAndFaviconEnabledMap[id],
|
||||
darkModeEnabled: darkModeEnabledMap[id],
|
||||
i18nEnabled: i18nEnabledMap[id],
|
||||
passwordSignInEnabled: passwordSignInEnabledMap[id],
|
||||
passwordlessSignInEnabled: passwordlessSignInEnabledMap[id],
|
||||
emailConnectorsEnabled: emailConnectorsEnabledMap[id],
|
||||
smsConnectorsEnabled: smsConnectorsEnabledMap[id],
|
||||
userManagementEnabled: userManagementEnabledMap[id],
|
||||
},
|
||||
};
|
||||
});
|
||||
|
|
|
@ -9,7 +9,10 @@ export enum ReservedPlanName {
|
|||
Enterprise = 'Enterprise',
|
||||
}
|
||||
|
||||
export type SubscriptionPlanQuota = SubscriptionPlanResponse['quota'] & {
|
||||
export type SubscriptionPlanQuota = Omit<
|
||||
SubscriptionPlanResponse['quota'],
|
||||
'builtInEmailConnectorEnabled'
|
||||
> & {
|
||||
communitySupportEnabled: boolean;
|
||||
ticketSupportResponseTime: number;
|
||||
};
|
||||
|
@ -20,8 +23,21 @@ export type SubscriptionPlan = Omit<SubscriptionPlanResponse, 'quota'> & {
|
|||
|
||||
export type SubscriptionPlanTable = Partial<
|
||||
SubscriptionPlanQuota & {
|
||||
// Base quota
|
||||
basePrice: string;
|
||||
mauUnitPrice: string[];
|
||||
// UI and branding
|
||||
customCssEnabled: boolean;
|
||||
appLogoAndFaviconEnabled: boolean;
|
||||
darkModeEnabled: boolean;
|
||||
i18nEnabled: boolean;
|
||||
// User authn
|
||||
passwordSignInEnabled: boolean;
|
||||
passwordlessSignInEnabled: boolean;
|
||||
emailConnectorsEnabled: boolean;
|
||||
smsConnectorsEnabled: boolean;
|
||||
// User management
|
||||
userManagementEnabled: boolean;
|
||||
}
|
||||
>;
|
||||
|
||||
|
|
|
@ -3,22 +3,19 @@ import dayjs from 'dayjs';
|
|||
|
||||
import { tryReadResponseErrorBody } from '@/cloud/hooks/use-cloud-api';
|
||||
import { type SubscriptionPlanResponse } from '@/cloud/types/router';
|
||||
import {
|
||||
communitySupportEnabledMap,
|
||||
reservedPlanIdOrder,
|
||||
ticketSupportResponseTimeMap,
|
||||
} from '@/consts/subscriptions';
|
||||
import { communitySupportEnabledMap, ticketSupportResponseTimeMap } from '@/consts/plan-quotas';
|
||||
import { reservedPlanIdOrder } from '@/consts/subscriptions';
|
||||
import { type Invoice } from '@/types/subscriptions';
|
||||
|
||||
export const addSupportQuotaToPlan = (subscriptionPlanResponse: SubscriptionPlanResponse) => {
|
||||
const { name, quota } = subscriptionPlanResponse;
|
||||
const { id, quota } = subscriptionPlanResponse;
|
||||
|
||||
return {
|
||||
...subscriptionPlanResponse,
|
||||
quota: {
|
||||
...quota,
|
||||
communitySupportEnabled: communitySupportEnabledMap[name] ?? false, // Fallback to not supported
|
||||
ticketSupportResponseTime: ticketSupportResponseTimeMap[name] ?? 0, // Fallback to not supported
|
||||
communitySupportEnabled: communitySupportEnabledMap[id] ?? false, // Fallback to not supported
|
||||
ticketSupportResponseTime: ticketSupportResponseTimeMap[id] ?? 0, // Fallback to not supported
|
||||
},
|
||||
};
|
||||
};
|
||||
|
|
|
@ -1,53 +1,62 @@
|
|||
const quota_table = {
|
||||
quota: {
|
||||
title: 'Quota',
|
||||
tenant_limit: 'Mietergrenze',
|
||||
title: 'Kontingent',
|
||||
tenant_limit: 'Tenant-Limit',
|
||||
base_price: 'Grundpreis',
|
||||
mau_unit_price: '* MAU-Einheitspreis',
|
||||
mau_limit: 'MAU-Grenze',
|
||||
mau_limit: 'MAU-Limit',
|
||||
},
|
||||
application: {
|
||||
title: 'Anwendungen',
|
||||
total: 'Insgesamt',
|
||||
m2m: 'Maschine zu Maschine',
|
||||
total: 'Gesamtzahl der Anwendungen',
|
||||
m2m: 'Maschine-zu-Maschine',
|
||||
},
|
||||
resource: {
|
||||
title: 'API-Ressourcen',
|
||||
resource_count: 'Anzahl der Ressourcen',
|
||||
resource_count: 'Ressourcenanzahl',
|
||||
scopes_per_resource: 'Berechtigungen pro Ressource',
|
||||
},
|
||||
branding: {
|
||||
title: 'Branding',
|
||||
title: 'Benutzeroberfläche und Branding',
|
||||
custom_domain: 'Benutzerdefinierte Domain',
|
||||
custom_css: 'Benutzerdefiniertes CSS',
|
||||
app_logo_and_favicon: 'App-Logo und Favicon',
|
||||
dark_mode: 'Dunkler Modus',
|
||||
i18n: 'Internationalisierung',
|
||||
},
|
||||
user_authn: {
|
||||
title: 'Benutzerauthentifizierung',
|
||||
omni_sign_in: 'Omni-Anmeldung',
|
||||
built_in_email_connector: 'Eingebauter E-Mail-Connector',
|
||||
social_connectors: 'Soziale Connectoren',
|
||||
standard_connectors: 'Standard-Connectoren',
|
||||
password: 'Passwort',
|
||||
passwordless: 'Passwortlos - E-Mail und SMS',
|
||||
email_connector: 'E-Mail-Connector',
|
||||
sms_connector: 'SMS-Connector',
|
||||
social_connectors: 'Social-Connectors',
|
||||
standard_connectors: 'Standard-Connectors',
|
||||
built_in_email_connector: 'Integrierter E-Mail-Connector',
|
||||
},
|
||||
roles: {
|
||||
title: 'Rollen',
|
||||
user_management: {
|
||||
title: 'Benutzerverwaltung',
|
||||
user_management: 'Benutzerverwaltung',
|
||||
roles: 'Rollen',
|
||||
scopes_per_role: 'Berechtigungen pro Rolle',
|
||||
},
|
||||
audit_logs: {
|
||||
title: 'Prüfprotokolle',
|
||||
retention: 'Aufbewahrung',
|
||||
retention: 'Aufbewahrungsdauer',
|
||||
},
|
||||
hooks: {
|
||||
title: 'Hooks',
|
||||
amount: 'Menge',
|
||||
title: 'Webhooks',
|
||||
hooks: 'Webhooks',
|
||||
},
|
||||
support: {
|
||||
title: 'Support',
|
||||
community: 'Community',
|
||||
customer_ticket: 'Kundenticket',
|
||||
customer_ticket: 'Support-Ticket',
|
||||
premium: 'Premium',
|
||||
},
|
||||
mau_unit_price_footnote:
|
||||
'* Unsere Einheitspreise können je nach tatsächlichem Ressourcenverbrauch variieren und Logto behält sich das Recht vor, Änderungen der Einheitspreise zu erläutern.',
|
||||
'* Ihre monatlich aktiven Benutzer (MAU) werden in 3 Stufen unterteilt, basierend darauf, wie oft sie sich während des Abrechnungszeitraums anmelden. Jede Stufe hat einen anderen Preis pro MAU-Einheit.',
|
||||
unlimited: 'Unbegrenzt',
|
||||
contact: 'Kontakt',
|
||||
// eslint-disable-next-line no-template-curly-in-string
|
||||
|
@ -56,7 +65,7 @@ const quota_table = {
|
|||
mau_price: '${{value, number}}/MAU',
|
||||
days_one: '{{count, number}} Tag',
|
||||
days_other: '{{count, number}} Tage',
|
||||
add_on: 'Zusatz',
|
||||
add_on: 'Zusatzleistung',
|
||||
};
|
||||
|
||||
export default quota_table;
|
||||
|
|
|
@ -8,46 +8,55 @@ const quota_table = {
|
|||
},
|
||||
application: {
|
||||
title: 'Applications',
|
||||
total: 'Total',
|
||||
m2m: 'Machine to machine',
|
||||
total: 'Total applications',
|
||||
m2m: 'Machine-to-machine',
|
||||
},
|
||||
resource: {
|
||||
title: 'API resources',
|
||||
resource_count: 'Resource count',
|
||||
scopes_per_resource: 'Permission per resource',
|
||||
scopes_per_resource: 'Permissions per resource',
|
||||
},
|
||||
branding: {
|
||||
title: 'Branding',
|
||||
custom_domain: 'Custom Domain',
|
||||
title: 'UI and branding',
|
||||
custom_domain: 'Custom domain',
|
||||
custom_css: 'Custom CSS',
|
||||
app_logo_and_favicon: 'App logo and favicon',
|
||||
dark_mode: 'Dark mode',
|
||||
i18n: 'Internationalization',
|
||||
},
|
||||
user_authn: {
|
||||
title: 'User authentication',
|
||||
omni_sign_in: 'Omni sign-in',
|
||||
built_in_email_connector: 'Built-in email connector',
|
||||
password: 'Password',
|
||||
passwordless: 'Passwordless - Email and SMS',
|
||||
email_connector: 'Email connector',
|
||||
sms_connector: 'SMS connector',
|
||||
social_connectors: 'Social connectors',
|
||||
standard_connectors: 'Standard connectors',
|
||||
built_in_email_connector: 'Built-in email connector',
|
||||
},
|
||||
roles: {
|
||||
title: 'Roles',
|
||||
user_management: {
|
||||
title: 'User management',
|
||||
user_management: 'User management',
|
||||
roles: 'Roles',
|
||||
scopes_per_role: 'Permission per role',
|
||||
scopes_per_role: 'Permissions per role',
|
||||
},
|
||||
audit_logs: {
|
||||
title: 'Audit logs',
|
||||
retention: 'Retention',
|
||||
},
|
||||
hooks: {
|
||||
title: 'Hooks',
|
||||
amount: 'Amount',
|
||||
title: 'Webhooks',
|
||||
hooks: 'Webhooks',
|
||||
},
|
||||
support: {
|
||||
title: 'Support',
|
||||
community: 'Community',
|
||||
customer_ticket: 'Customer ticket',
|
||||
customer_ticket: 'Ticket support',
|
||||
premium: 'Premium',
|
||||
},
|
||||
mau_unit_price_footnote:
|
||||
'* Our unit prices may vary based on the actual resources consumed, and Logto reserves the right to explain any changes in unit prices.',
|
||||
'* Your monthly active users (MAU) are divided into 3 tiers based on how often they log in during the billing cycle. Each tier has a different price per MAU unit.',
|
||||
unlimited: 'Unlimited',
|
||||
contact: 'Contact',
|
||||
// eslint-disable-next-line no-template-curly-in-string
|
||||
|
|
|
@ -1,34 +1,43 @@
|
|||
const quota_table = {
|
||||
quota: {
|
||||
title: 'Cuota',
|
||||
tenant_limit: 'Límite de inquilino',
|
||||
tenant_limit: 'Límite de inquilinos',
|
||||
base_price: 'Precio base',
|
||||
mau_unit_price: '* Precio unitario MAU',
|
||||
mau_unit_price: '* Precio unitario de MAU',
|
||||
mau_limit: 'Límite de MAU',
|
||||
},
|
||||
application: {
|
||||
title: 'Aplicaciones',
|
||||
total: 'Total',
|
||||
m2m: 'Máquina a máquina',
|
||||
total: 'Total de aplicaciones',
|
||||
m2m: 'Aplicación machine-to-machine',
|
||||
},
|
||||
resource: {
|
||||
title: 'Recursos API',
|
||||
resource_count: 'Recuento de recursos',
|
||||
title: 'Recursos de API',
|
||||
resource_count: 'Cantidad de recursos',
|
||||
scopes_per_resource: 'Permisos por recurso',
|
||||
},
|
||||
branding: {
|
||||
title: 'Branding',
|
||||
title: 'Interfaz de usuario y branding',
|
||||
custom_domain: 'Dominio personalizado',
|
||||
custom_css: 'CSS personalizado',
|
||||
app_logo_and_favicon: 'Logo de la aplicación y favicon',
|
||||
dark_mode: 'Modo oscuro',
|
||||
i18n: 'Internacionalización',
|
||||
},
|
||||
user_authn: {
|
||||
title: 'Autenticación de usuario',
|
||||
omni_sign_in: 'Inicio de sesión Omni',
|
||||
built_in_email_connector: 'Conector de correo electrónico incorporado',
|
||||
omni_sign_in: 'Inicio de sesión omnicanal',
|
||||
password: 'Contraseña',
|
||||
passwordless: 'Sin contraseña - Correo electrónico y SMS',
|
||||
email_connector: 'Conector de correo electrónico',
|
||||
sms_connector: 'Conector de SMS',
|
||||
social_connectors: 'Conectores sociales',
|
||||
standard_connectors: 'Conectores estándar',
|
||||
built_in_email_connector: 'Conector de correo electrónico incorporado',
|
||||
},
|
||||
roles: {
|
||||
title: 'Roles',
|
||||
user_management: {
|
||||
title: 'Gestión de usuarios',
|
||||
user_management: 'Gestión de usuarios',
|
||||
roles: 'Roles',
|
||||
scopes_per_role: 'Permisos por rol',
|
||||
},
|
||||
|
@ -37,18 +46,18 @@ const quota_table = {
|
|||
retention: 'Retención',
|
||||
},
|
||||
hooks: {
|
||||
title: 'Hooks',
|
||||
amount: 'Cantidad',
|
||||
title: 'Webhooks',
|
||||
hooks: 'Webhooks',
|
||||
},
|
||||
support: {
|
||||
title: 'Soporte',
|
||||
community: 'Comunidad',
|
||||
customer_ticket: 'Ticket de cliente',
|
||||
customer_ticket: 'Ticket de soporte',
|
||||
premium: 'Premium',
|
||||
},
|
||||
mau_unit_price_footnote:
|
||||
'* Nuestras tarifas unitarias pueden variar según los recursos consumidos y Logto se reserva el derecho de explicar cualquier cambio en las tarifas unitarias.',
|
||||
unlimited: 'Sin límites',
|
||||
'* Sus usuarios activos mensuales (MAU) se dividen en 3 niveles según la frecuencia con la que inician sesión durante el ciclo de facturación. Cada nivel tiene un precio diferente por unidad de MAU.',
|
||||
unlimited: 'Ilimitado',
|
||||
contact: 'Contacto',
|
||||
// eslint-disable-next-line no-template-curly-in-string
|
||||
monthly_price: '${{value, number}}/mes',
|
||||
|
@ -56,7 +65,7 @@ const quota_table = {
|
|||
mau_price: '${{value, number}}/MAU',
|
||||
days_one: '{{count, number}} día',
|
||||
days_other: '{{count, number}} días',
|
||||
add_on: 'Agregar',
|
||||
add_on: 'Complemento',
|
||||
};
|
||||
|
||||
export default quota_table;
|
||||
|
|
|
@ -1,62 +1,71 @@
|
|||
const quota_table = {
|
||||
quota: {
|
||||
title: 'Quota',
|
||||
tenant_limit: 'Limite du locataire',
|
||||
tenant_limit: 'Limite de locataire',
|
||||
base_price: 'Prix de base',
|
||||
mau_unit_price: '* Prix unitaire MAU',
|
||||
mau_limit: 'Limite MAU',
|
||||
},
|
||||
application: {
|
||||
title: 'Applications',
|
||||
total: 'Total',
|
||||
m2m: 'Machine à machine',
|
||||
total: 'Total des applications',
|
||||
m2m: 'Machine-à-machine',
|
||||
},
|
||||
resource: {
|
||||
title: 'API resources',
|
||||
title: 'Ressources API',
|
||||
resource_count: 'Nombre de ressources',
|
||||
scopes_per_resource: 'Autorisations par ressource',
|
||||
},
|
||||
branding: {
|
||||
title: 'Branding',
|
||||
title: 'Interface utilisateur et branding',
|
||||
custom_domain: 'Domaine personnalisé',
|
||||
custom_css: 'CSS personnalisé',
|
||||
app_logo_and_favicon: "Logo et favicon de l'application",
|
||||
dark_mode: 'Mode sombre',
|
||||
i18n: 'Internationalisation',
|
||||
},
|
||||
user_authn: {
|
||||
title: 'Authentification utilisateur',
|
||||
omni_sign_in: 'Connexion omni',
|
||||
built_in_email_connector: 'Connecteur de messagerie intégré',
|
||||
title: 'Authentification des utilisateurs',
|
||||
omni_sign_in: 'Connexion omnicanale',
|
||||
password: 'Mot de passe',
|
||||
passwordless: 'Sans mot de passe - Email et SMS',
|
||||
email_connector: 'Connecteur email',
|
||||
sms_connector: 'Connecteur SMS',
|
||||
social_connectors: 'Connecteurs sociaux',
|
||||
standard_connectors: 'Connecteurs standards',
|
||||
built_in_email_connector: 'Connecteur email intégré',
|
||||
},
|
||||
roles: {
|
||||
title: 'Rôles',
|
||||
user_management: {
|
||||
title: 'Gestion des utilisateurs',
|
||||
user_management: 'Gestion des utilisateurs',
|
||||
roles: 'Rôles',
|
||||
scopes_per_role: 'Autorisations par rôle',
|
||||
},
|
||||
audit_logs: {
|
||||
title: 'Journaux d’audit',
|
||||
title: "Journaux d'audit",
|
||||
retention: 'Conservation',
|
||||
},
|
||||
hooks: {
|
||||
title: 'Hooks',
|
||||
amount: 'Montant',
|
||||
title: 'Webhooks',
|
||||
hooks: 'Webhooks',
|
||||
},
|
||||
support: {
|
||||
title: 'Support',
|
||||
community: 'Communauté',
|
||||
customer_ticket: 'Ticket client',
|
||||
customer_ticket: 'Ticket de support',
|
||||
premium: 'Premium',
|
||||
},
|
||||
mau_unit_price_footnote:
|
||||
'* Nos prix unitaires peuvent varier en fonction des ressources réellement consommées, et Logto se réserve le droit d’expliquer tout changement de prix unitaire.',
|
||||
'* Vos utilisateurs actifs mensuels (MAU) sont répartis en 3 niveaux en fonction de la fréquence à laquelle ils se connectent pendant le cycle de facturation. Chaque niveau a un prix différent par unité MAU.',
|
||||
unlimited: 'Illimité',
|
||||
contact: 'Contact',
|
||||
// eslint-disable-next-line no-template-curly-in-string
|
||||
monthly_price: '${{value, number}}/mois',
|
||||
monthly_price: '${{value, number}}/mo',
|
||||
// eslint-disable-next-line no-template-curly-in-string
|
||||
mau_price: '${{value, number}}/MAU',
|
||||
days_one: '{{count, number}} jour',
|
||||
days_other: '{{count, number}} jours',
|
||||
add_on: 'Complément',
|
||||
add_on: 'Module complémentaire',
|
||||
};
|
||||
|
||||
export default quota_table;
|
||||
|
|
|
@ -1,34 +1,43 @@
|
|||
const quota_table = {
|
||||
quota: {
|
||||
title: 'Quota',
|
||||
tenant_limit: 'Limite del tenant',
|
||||
tenant_limit: 'Limite tenant',
|
||||
base_price: 'Prezzo base',
|
||||
mau_unit_price: '* Prezzo unitario MAU',
|
||||
mau_limit: 'Limite MAU',
|
||||
},
|
||||
application: {
|
||||
title: 'Applicazioni',
|
||||
total: 'Totale',
|
||||
m2m: 'Machine to machine',
|
||||
total: 'Totale applicazioni',
|
||||
m2m: 'Machine-to-machine',
|
||||
},
|
||||
resource: {
|
||||
title: 'Risorse API',
|
||||
resource_count: 'Conteggio risorse',
|
||||
resource_count: 'Numero di risorse',
|
||||
scopes_per_resource: 'Permessi per risorsa',
|
||||
},
|
||||
branding: {
|
||||
title: 'Branding',
|
||||
title: 'UI e branding',
|
||||
custom_domain: 'Dominio personalizzato',
|
||||
custom_css: 'CSS personalizzato',
|
||||
app_logo_and_favicon: "Logo e favicon dell'applicazione",
|
||||
dark_mode: 'Modalità scura',
|
||||
i18n: 'Internazionalizzazione',
|
||||
},
|
||||
user_authn: {
|
||||
title: 'Autenticazione utente',
|
||||
omni_sign_in: 'Accesso omni',
|
||||
built_in_email_connector: 'Connettore email integrato',
|
||||
omni_sign_in: 'Accesso onnicomprensivo',
|
||||
password: 'Password',
|
||||
passwordless: 'Senza password - E-mail e SMS',
|
||||
email_connector: 'Connettore e-mail',
|
||||
sms_connector: 'Connettore SMS',
|
||||
social_connectors: 'Connettori sociali',
|
||||
standard_connectors: 'Connettori standard',
|
||||
built_in_email_connector: 'Connettore e-mail integrato',
|
||||
},
|
||||
roles: {
|
||||
title: 'Ruoli',
|
||||
user_management: {
|
||||
title: 'Gestione utenti',
|
||||
user_management: 'Gestione utenti',
|
||||
roles: 'Ruoli',
|
||||
scopes_per_role: 'Permessi per ruolo',
|
||||
},
|
||||
|
@ -37,26 +46,26 @@ const quota_table = {
|
|||
retention: 'Conservazione',
|
||||
},
|
||||
hooks: {
|
||||
title: 'Hooks',
|
||||
amount: 'Quantità',
|
||||
title: 'Webhooks',
|
||||
hooks: 'Webhooks',
|
||||
},
|
||||
support: {
|
||||
title: 'Supporto',
|
||||
title: 'Assistenza',
|
||||
community: 'Community',
|
||||
customer_ticket: 'Ticket per il cliente',
|
||||
customer_ticket: 'Ticket di assistenza',
|
||||
premium: 'Premium',
|
||||
},
|
||||
mau_unit_price_footnote:
|
||||
'* I nostri prezzi unitari possono variare in base alle risorse effettivamente consumate e Logto si riserva il diritto di spiegare eventuali variazioni dei prezzi unitari.',
|
||||
"* I vostri utenti attivi mensili (MAU) sono divisi in 3 livelli in base a quante volte effettuano l'accesso durante il ciclo di fatturazione. Ogni livello ha un prezzo diverso per unità MAU.",
|
||||
unlimited: 'Illimitato',
|
||||
contact: 'Contatto',
|
||||
contact: 'Contatta',
|
||||
// eslint-disable-next-line no-template-curly-in-string
|
||||
monthly_price: '${{value, number}}/mese',
|
||||
// eslint-disable-next-line no-template-curly-in-string
|
||||
mau_price: '${{value, number}}/MAU',
|
||||
days_one: '{{count, number}} giorno',
|
||||
days_other: '{{count, number}} giorni',
|
||||
add_on: 'Aggiungi',
|
||||
add_on: 'Aggiuntiva',
|
||||
};
|
||||
|
||||
export default quota_table;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
const quota_table = {
|
||||
quota: {
|
||||
title: 'クオータ',
|
||||
title: 'クォータ',
|
||||
tenant_limit: 'テナント制限',
|
||||
base_price: '基本価格',
|
||||
mau_unit_price: '* MAU単価',
|
||||
|
@ -8,8 +8,8 @@ const quota_table = {
|
|||
},
|
||||
application: {
|
||||
title: 'アプリケーション',
|
||||
total: '合計',
|
||||
m2m: '機械間',
|
||||
total: '総アプリケーション数',
|
||||
m2m: 'マシン・ツー・マシン',
|
||||
},
|
||||
resource: {
|
||||
title: 'APIリソース',
|
||||
|
@ -17,18 +17,27 @@ const quota_table = {
|
|||
scopes_per_resource: 'リソースごとの権限',
|
||||
},
|
||||
branding: {
|
||||
title: 'ブランディング',
|
||||
title: 'UIとブランディング',
|
||||
custom_domain: 'カスタムドメイン',
|
||||
custom_css: 'カスタムCSS',
|
||||
app_logo_and_favicon: 'アプリロゴとFavicon',
|
||||
dark_mode: 'ダークモード',
|
||||
i18n: '国際化',
|
||||
},
|
||||
user_authn: {
|
||||
title: 'ユーザー認証',
|
||||
omni_sign_in: 'オムニサインイン',
|
||||
built_in_email_connector: '組み込みメールコネクタ',
|
||||
password: 'パスワード',
|
||||
passwordless: 'パスワードレス - E-mailとSMS',
|
||||
email_connector: 'E-mailコネクタ',
|
||||
sms_connector: 'SMSコネクタ',
|
||||
social_connectors: 'ソーシャルコネクタ',
|
||||
standard_connectors: '標準コネクタ',
|
||||
standard_connectors: 'スタンダードコネクタ',
|
||||
built_in_email_connector: '組み込みE-mailコネクタ',
|
||||
},
|
||||
roles: {
|
||||
title: 'ロール',
|
||||
user_management: {
|
||||
title: 'ユーザー管理',
|
||||
user_management: 'ユーザー管理',
|
||||
roles: 'ロール',
|
||||
scopes_per_role: 'ロールごとの権限',
|
||||
},
|
||||
|
@ -37,25 +46,25 @@ const quota_table = {
|
|||
retention: '保持期間',
|
||||
},
|
||||
hooks: {
|
||||
title: 'フック',
|
||||
amount: '量',
|
||||
title: 'ウェブフック',
|
||||
hooks: 'ウェブフック',
|
||||
},
|
||||
support: {
|
||||
title: 'サポート',
|
||||
community: 'コミュニティ',
|
||||
customer_ticket: '顧客チケット',
|
||||
customer_ticket: 'サポートチケット',
|
||||
premium: 'プレミアム',
|
||||
},
|
||||
mau_unit_price_footnote:
|
||||
'* 実際に消費されるリソースに基づいて単価が変動する場合があり、Logtoは単価変更の説明をする権利を留保します。',
|
||||
'* 月間アクティブユーザー(MAU)は、請求サイクル中のログイン頻度に基づいて3つの階層に分かれます。各階層ごとに異なるMAU単価が適用されます。',
|
||||
unlimited: '無制限',
|
||||
contact: '連絡先',
|
||||
contact: 'お問い合わせ',
|
||||
// eslint-disable-next-line no-template-curly-in-string
|
||||
monthly_price: '月額${{value, number}}',
|
||||
monthly_price: '${{value, number}}/mo',
|
||||
// eslint-disable-next-line no-template-curly-in-string
|
||||
mau_price: 'MAUあたり${{value, number}}',
|
||||
days_one: '{{count, number}} 日',
|
||||
days_other: '{{count, number}} 日',
|
||||
mau_price: '${{value, number}}/MAU',
|
||||
days_one: '{{count, number}}日',
|
||||
days_other: '{{count, number}}日',
|
||||
add_on: 'アドオン',
|
||||
};
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
const quota_table = {
|
||||
quota: {
|
||||
title: '배정량',
|
||||
title: '할당량',
|
||||
tenant_limit: '테넌트 제한',
|
||||
base_price: '기본 가격',
|
||||
mau_unit_price: '* MAU 단가',
|
||||
|
@ -8,48 +8,57 @@ const quota_table = {
|
|||
},
|
||||
application: {
|
||||
title: '애플리케이션',
|
||||
total: '총계',
|
||||
m2m: '기계 간 통신',
|
||||
total: '총 애플리케이션 수',
|
||||
m2m: '머신 투 머신',
|
||||
},
|
||||
resource: {
|
||||
title: 'API 자원',
|
||||
resource_count: '자원 개수',
|
||||
scopes_per_resource: '자원 당 권한',
|
||||
title: 'API 리소스',
|
||||
resource_count: '리소스 수',
|
||||
scopes_per_resource: '리소스 당 권한',
|
||||
},
|
||||
branding: {
|
||||
title: '브랜딩',
|
||||
title: 'UI 및 브랜딩',
|
||||
custom_domain: '사용자 정의 도메인',
|
||||
custom_css: '사용자 정의 CSS',
|
||||
app_logo_and_favicon: '앱 로고와 파비콘',
|
||||
dark_mode: '다크 모드',
|
||||
i18n: '국제화',
|
||||
},
|
||||
user_authn: {
|
||||
title: '사용자 인증',
|
||||
omni_sign_in: '옴니 로그인',
|
||||
built_in_email_connector: '내장 이메일 커넥터',
|
||||
omni_sign_in: '옴니 사인인',
|
||||
password: '비밀번호',
|
||||
passwordless: '비밀번호 없음 - 이메일과 SMS',
|
||||
email_connector: '이메일 커넥터',
|
||||
sms_connector: 'SMS 커넥터',
|
||||
social_connectors: '소셜 커넥터',
|
||||
standard_connectors: '표준 커넥터',
|
||||
built_in_email_connector: '내장 이메일 커넥터',
|
||||
},
|
||||
roles: {
|
||||
title: '역할',
|
||||
user_management: {
|
||||
title: '사용자 관리',
|
||||
user_management: '사용자 관리',
|
||||
roles: '역할',
|
||||
scopes_per_role: '역할 당 권한',
|
||||
},
|
||||
audit_logs: {
|
||||
title: '감사 로그',
|
||||
retention: '유지 기간',
|
||||
retention: '보존 기간',
|
||||
},
|
||||
hooks: {
|
||||
title: '후크',
|
||||
amount: '수량',
|
||||
title: 'Webhooks',
|
||||
hooks: 'Webhooks',
|
||||
},
|
||||
support: {
|
||||
title: '지원',
|
||||
community: '커뮤니티',
|
||||
customer_ticket: '고객 문의',
|
||||
customer_ticket: '지원 티켓',
|
||||
premium: '프리미엄',
|
||||
},
|
||||
mau_unit_price_footnote:
|
||||
'* 실제 사용된 리소스에 따라 단가가 달라질 수 있으며, Logto는 단가 변경에 대한 설명을 예약합니다.',
|
||||
'* 월간 활성 사용자(MAU)는 청구 주기 동안 로그인 빈도에 따라 3단계로 나뉩니다. 각 단계마다 달리 책정되는 MAU 단가가 있습니다.',
|
||||
unlimited: '무제한',
|
||||
contact: '연락',
|
||||
contact: '문의',
|
||||
// eslint-disable-next-line no-template-curly-in-string
|
||||
monthly_price: '${{value, number}}/월',
|
||||
// eslint-disable-next-line no-template-curly-in-string
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
const quota_table = {
|
||||
quota: {
|
||||
title: 'Limit',
|
||||
tenant_limit: 'Limit dzierżawcy',
|
||||
tenant_limit: 'Limit lokatora',
|
||||
base_price: 'Cena podstawowa',
|
||||
mau_unit_price: '* Cena jednostkowa MAU',
|
||||
mau_unit_price: '* Cena za MAU',
|
||||
mau_limit: 'Limit MAU',
|
||||
},
|
||||
application: {
|
||||
title: 'Aplikacje',
|
||||
total: 'Razem',
|
||||
m2m: 'Maszyna do maszyny',
|
||||
total: 'Liczba aplikacji',
|
||||
m2m: 'Aplikacja typu maszyna-maszyna',
|
||||
},
|
||||
resource: {
|
||||
title: 'Zasoby API',
|
||||
|
@ -17,41 +17,50 @@ const quota_table = {
|
|||
scopes_per_resource: 'Uprawnienia na zasób',
|
||||
},
|
||||
branding: {
|
||||
title: 'Brandowanie',
|
||||
custom_domain: 'Niestandardowa domena',
|
||||
title: 'Interfejs użytkownika i branding',
|
||||
custom_domain: 'Domena niestandardowa',
|
||||
custom_css: 'Niestandardowy CSS',
|
||||
app_logo_and_favicon: 'Logo aplikacji i ikona',
|
||||
dark_mode: 'Tryb ciemny',
|
||||
i18n: 'Internacjonalizacja',
|
||||
},
|
||||
user_authn: {
|
||||
title: 'Uwierzytelnianie użytkownika',
|
||||
title: 'Uwierzytelnianie użytkowników',
|
||||
omni_sign_in: 'Omni logowanie',
|
||||
built_in_email_connector: 'Wbudowany konektor e-mailowy',
|
||||
social_connectors: 'Konektory społecznościowe',
|
||||
standard_connectors: 'Standardowe konektory',
|
||||
password: 'Hasło',
|
||||
passwordless: 'Logowanie bez hasła - E-mail i SMS',
|
||||
email_connector: 'Podłączenie e-mail',
|
||||
sms_connector: 'Podłączenie SMS',
|
||||
social_connectors: 'Podłączenia społecznościowe',
|
||||
standard_connectors: 'Standardowe podłączenia',
|
||||
built_in_email_connector: 'Wbudowane podłączenie e-mail',
|
||||
},
|
||||
roles: {
|
||||
title: 'Role',
|
||||
user_management: {
|
||||
title: 'Zarządzanie użytkownikami',
|
||||
user_management: 'Zarządzanie użytkownikami',
|
||||
roles: 'Role',
|
||||
scopes_per_role: 'Uprawnienia na rolę',
|
||||
},
|
||||
audit_logs: {
|
||||
title: 'Dzienniki audytu',
|
||||
retention: 'Zatrzymanie',
|
||||
title: 'Logi audytu',
|
||||
retention: 'Okres przechowywania',
|
||||
},
|
||||
hooks: {
|
||||
title: 'Hooks',
|
||||
amount: 'Liczba',
|
||||
title: 'Webhooki',
|
||||
hooks: 'Webhooki',
|
||||
},
|
||||
support: {
|
||||
title: 'Wsparcie',
|
||||
community: 'Społeczność',
|
||||
customer_ticket: 'Bilet klienta',
|
||||
customer_ticket: 'Zgłoszenie wsparcia',
|
||||
premium: 'Premium',
|
||||
},
|
||||
mau_unit_price_footnote:
|
||||
'* Nasze ceny jednostkowe mogą się różnić w zależności od faktycznie zużywanych zasobów, a Logto zastrzega sobie prawo do wyjaśnienia ewentualnych zmian cen jednostkowych.',
|
||||
unlimited: 'Bez ograniczeń',
|
||||
'* Aktywni użytkownicy miesięcznie (MAU) są podzieleni na 3 poziomy w zależności od częstotliwości logowania się w okresie rozliczeniowym. Każdy poziom ma inną cenę za jednostkę MAU.',
|
||||
unlimited: 'Nieograniczone',
|
||||
contact: 'Kontakt',
|
||||
// eslint-disable-next-line no-template-curly-in-string
|
||||
monthly_price: '${{value, number}}/mc',
|
||||
monthly_price: '${{value, number}}/mies.',
|
||||
// eslint-disable-next-line no-template-curly-in-string
|
||||
mau_price: '${{value, number}}/MAU',
|
||||
days_one: '{{count, number}} dzień',
|
||||
|
|
|
@ -1,53 +1,62 @@
|
|||
const quota_table = {
|
||||
quota: {
|
||||
title: 'Cota',
|
||||
tenant_limit: 'Limite de locatários',
|
||||
tenant_limit: 'Limite de inquilino',
|
||||
base_price: 'Preço base',
|
||||
mau_unit_price: '* Preço unitário do MAU',
|
||||
mau_unit_price: '* Preço unitário de MAU',
|
||||
mau_limit: 'Limite de MAU',
|
||||
},
|
||||
application: {
|
||||
title: 'Aplicações',
|
||||
total: 'Total',
|
||||
m2m: 'Máquina para máquina',
|
||||
total: 'Total de aplicações',
|
||||
m2m: 'Aplicação máquina-a-máquina',
|
||||
},
|
||||
resource: {
|
||||
title: 'Recursos da API',
|
||||
title: 'Recursos de API',
|
||||
resource_count: 'Contagem de recursos',
|
||||
scopes_per_resource: 'Permissões por recurso',
|
||||
},
|
||||
branding: {
|
||||
title: 'Marca',
|
||||
title: 'Interface de usuário e branding',
|
||||
custom_domain: 'Domínio personalizado',
|
||||
custom_css: 'CSS personalizado',
|
||||
app_logo_and_favicon: 'Logotipo da aplicação e favicon',
|
||||
dark_mode: 'Modo escuro',
|
||||
i18n: 'Internacionalização',
|
||||
},
|
||||
user_authn: {
|
||||
title: 'Autenticação de usuário',
|
||||
omni_sign_in: 'Omni sign-in',
|
||||
built_in_email_connector: 'Conector de e-mail incorporado',
|
||||
omni_sign_in: 'Entrada Omni',
|
||||
password: 'Senha',
|
||||
passwordless: 'Sem senha - E-mail e SMS',
|
||||
email_connector: 'Conector de e-mail',
|
||||
sms_connector: 'Conector de SMS',
|
||||
social_connectors: 'Conectores sociais',
|
||||
standard_connectors: 'Conectores padrão',
|
||||
built_in_email_connector: 'Conector de e-mail integrado',
|
||||
},
|
||||
roles: {
|
||||
title: 'Funções',
|
||||
user_management: {
|
||||
title: 'Gerenciamento de usuários',
|
||||
user_management: 'Gerenciamento de usuários',
|
||||
roles: 'Funções',
|
||||
scopes_per_role: 'Permissões por função',
|
||||
},
|
||||
audit_logs: {
|
||||
title: 'Logs de auditoria',
|
||||
title: 'Registros de auditoria',
|
||||
retention: 'Retenção',
|
||||
},
|
||||
hooks: {
|
||||
title: 'Hooks',
|
||||
amount: 'Quantidade',
|
||||
title: 'Webhooks',
|
||||
hooks: 'Webhooks',
|
||||
},
|
||||
support: {
|
||||
title: 'Suporte',
|
||||
community: 'Comunidade',
|
||||
customer_ticket: 'Ticket do cliente',
|
||||
customer_ticket: 'Ticket de suporte',
|
||||
premium: 'Premium',
|
||||
},
|
||||
mau_unit_price_footnote:
|
||||
'* Nossos preços unitários podem variar com base nos recursos consumidos reais, e o Logto reserva o direito de explicar quaisquer alterações nos preços unitários.',
|
||||
'* Seus usuários ativos mensais (MAU) são divididos em 3 níveis com base em quantas vezes eles fazem login durante o ciclo de faturamento. Cada nível tem um preço diferente por unidade de MAU.',
|
||||
unlimited: 'Ilimitado',
|
||||
contact: 'Contato',
|
||||
// eslint-disable-next-line no-template-curly-in-string
|
||||
|
@ -56,7 +65,7 @@ const quota_table = {
|
|||
mau_price: '${{value, number}}/MAU',
|
||||
days_one: '{{count, number}} dia',
|
||||
days_other: '{{count, number}} dias',
|
||||
add_on: 'Adicionar',
|
||||
add_on: 'Adicional',
|
||||
};
|
||||
|
||||
export default quota_table;
|
||||
|
|
|
@ -3,60 +3,69 @@ const quota_table = {
|
|||
title: 'Quota',
|
||||
tenant_limit: 'Limite do inquilino',
|
||||
base_price: 'Preço base',
|
||||
mau_unit_price: '* Preço unitário do MAU',
|
||||
mau_limit: 'Limite do MAU',
|
||||
mau_unit_price: '* Preço unitário MAU',
|
||||
mau_limit: 'Limite MAU',
|
||||
},
|
||||
application: {
|
||||
title: 'Aplicações',
|
||||
total: 'Total',
|
||||
m2m: 'Máquina a máquina',
|
||||
total: 'Total de aplicações',
|
||||
m2m: 'Aplicações de máquina para máquina',
|
||||
},
|
||||
resource: {
|
||||
title: 'Recursos da API',
|
||||
resource_count: 'Contagem de recursos',
|
||||
scopes_per_resource: 'Permissão por recurso',
|
||||
scopes_per_resource: 'Permissões por recurso',
|
||||
},
|
||||
branding: {
|
||||
title: 'Marca',
|
||||
title: 'UI e branding',
|
||||
custom_domain: 'Domínio personalizado',
|
||||
custom_css: 'CSS personalizado',
|
||||
app_logo_and_favicon: 'Logótipo da aplicação e favicon',
|
||||
dark_mode: 'Modo escuro',
|
||||
i18n: 'Internacionalização',
|
||||
},
|
||||
user_authn: {
|
||||
title: 'Autenticação do usuário',
|
||||
omni_sign_in: 'Omni sign-in',
|
||||
built_in_email_connector: 'Conector de e-mail incorporado',
|
||||
title: 'Autenticação do utilizador',
|
||||
omni_sign_in: 'Início de sessão Omni',
|
||||
password: 'Palavra-passe',
|
||||
passwordless: 'Sem palavra-passe - E-mail e SMS',
|
||||
email_connector: 'Conector de e-mail',
|
||||
sms_connector: 'Conector de SMS',
|
||||
social_connectors: 'Conectores sociais',
|
||||
standard_connectors: 'Conectores padrão',
|
||||
built_in_email_connector: 'Conector de e-mail incorporado',
|
||||
},
|
||||
roles: {
|
||||
title: 'Funções',
|
||||
user_management: {
|
||||
title: 'Gestão de utilizadores',
|
||||
user_management: 'Gestão de utilizadores',
|
||||
roles: 'Funções',
|
||||
scopes_per_role: 'Permissão por função',
|
||||
scopes_per_role: 'Permissões por função',
|
||||
},
|
||||
audit_logs: {
|
||||
title: 'Registos de Auditoria',
|
||||
title: 'Registos de auditoria',
|
||||
retention: 'Retenção',
|
||||
},
|
||||
hooks: {
|
||||
title: 'Hooks',
|
||||
amount: 'Quantidade',
|
||||
hooks: 'Hooks',
|
||||
},
|
||||
support: {
|
||||
title: 'Suporte',
|
||||
community: 'Comunidade',
|
||||
customer_ticket: 'Bilhete de cliente',
|
||||
customer_ticket: 'Bilhete de suporte',
|
||||
premium: 'Premium',
|
||||
},
|
||||
mau_unit_price_footnote:
|
||||
'* Nossos preços unitários podem variar de acordo com os recursos reais consumidos, e a Logto reserva-se o direito de explicar quaisquer alterações nos preços unitários.',
|
||||
'* Os seus utilizadores ativos mensais (MAU) são divididos em 3 níveis com base na frequência com que iniciam sessão durante o ciclo de faturação. Cada nível tem um preço diferente por unidade de MAU.',
|
||||
unlimited: 'Ilimitado',
|
||||
contact: 'Contacto',
|
||||
contact: 'Contactar',
|
||||
// eslint-disable-next-line no-template-curly-in-string
|
||||
monthly_price: '${{value, number}}/mês',
|
||||
// eslint-disable-next-line no-template-curly-in-string
|
||||
mau_price: '${{value, number}}/MAU',
|
||||
days_one: '{{count, number}} dia',
|
||||
days_other: '{{count, number}} dias',
|
||||
add_on: 'Adicionar',
|
||||
add_on: 'Suplemento',
|
||||
};
|
||||
|
||||
export default quota_table;
|
||||
|
|
|
@ -3,60 +3,69 @@ const quota_table = {
|
|||
title: 'Квота',
|
||||
tenant_limit: 'Лимит арендатора',
|
||||
base_price: 'Базовая цена',
|
||||
mau_unit_price: '* Цена за MAU',
|
||||
mau_limit: 'Лимит MAU',
|
||||
mau_unit_price: '* Цена за активного пользователя (MAU)',
|
||||
mau_limit: 'Лимит активных пользователей (MAU)',
|
||||
},
|
||||
application: {
|
||||
title: 'Приложения',
|
||||
total: 'Всего',
|
||||
m2m: 'Машина к машине',
|
||||
total: 'Всего приложений',
|
||||
m2m: 'Приложения "машина-машина"',
|
||||
},
|
||||
resource: {
|
||||
title: 'API ресурсы',
|
||||
title: 'Ресурсы API',
|
||||
resource_count: 'Количество ресурсов',
|
||||
scopes_per_resource: 'Разрешения на ресурс',
|
||||
},
|
||||
branding: {
|
||||
title: 'Брендинг',
|
||||
title: 'Интерфейс и брендинг',
|
||||
custom_domain: 'Пользовательский домен',
|
||||
custom_css: 'Пользовательский CSS',
|
||||
app_logo_and_favicon: 'Логотип и фавикон приложения',
|
||||
dark_mode: 'Темный режим',
|
||||
i18n: 'Интернационализация',
|
||||
},
|
||||
user_authn: {
|
||||
title: 'Аутентификация пользователя',
|
||||
omni_sign_in: 'Omni вход',
|
||||
built_in_email_connector: 'Встроенный электронный коннектор',
|
||||
social_connectors: 'Социальные коннекторы',
|
||||
standard_connectors: 'Стандартные коннекторы',
|
||||
title: 'Проверка подлинности пользователя',
|
||||
omni_sign_in: 'Многочисленные входы',
|
||||
password: 'Пароль',
|
||||
passwordless: 'Без пароля - Электронная почта и SMS',
|
||||
email_connector: 'Подключение электронной почты',
|
||||
sms_connector: 'Подключение SMS',
|
||||
social_connectors: 'Социальные подключения',
|
||||
standard_connectors: 'Стандартные подключения',
|
||||
built_in_email_connector: 'Встроенное подключение электронной почты',
|
||||
},
|
||||
roles: {
|
||||
title: 'Роли',
|
||||
user_management: {
|
||||
title: 'Управление пользователями',
|
||||
user_management: 'Управление пользователями',
|
||||
roles: 'Роли',
|
||||
scopes_per_role: 'Разрешения на роль',
|
||||
},
|
||||
audit_logs: {
|
||||
title: 'Аудит',
|
||||
retention: 'Хранение',
|
||||
title: 'Аудит журналов',
|
||||
retention: 'Сохранение',
|
||||
},
|
||||
hooks: {
|
||||
title: 'Хуки',
|
||||
amount: 'Количество',
|
||||
title: 'Вебхуки',
|
||||
hooks: 'Вебхуки',
|
||||
},
|
||||
support: {
|
||||
title: 'Поддержка',
|
||||
community: 'Сообщество',
|
||||
customer_ticket: 'Техническая заявка',
|
||||
customer_ticket: 'Техническая поддержка',
|
||||
premium: 'Премиум',
|
||||
},
|
||||
mau_unit_price_footnote:
|
||||
'* Цены наших единиц могут изменяться в зависимости от фактически используемых ресурсов, и Logto оставляет за собой право объяснить любые изменения в ценах за единицу.',
|
||||
unlimited: 'Неограниченный',
|
||||
contact: 'Связаться с нами',
|
||||
'* Ваши активные пользователи в месяц (MAU) разделены на 3 уровня в зависимости от того, как часто они входят в систему в течение биллингового периода. Каждый уровень имеет свою стоимость за единицу MAU.',
|
||||
unlimited: 'Неограниченно',
|
||||
contact: 'Связаться',
|
||||
// eslint-disable-next-line no-template-curly-in-string
|
||||
monthly_price: '${{value, number}}/месяц',
|
||||
monthly_price: '${{value, number}}/мес.',
|
||||
// eslint-disable-next-line no-template-curly-in-string
|
||||
mau_price: '${{value, number}}/MAU',
|
||||
days_one: '{{count, number}} день',
|
||||
days_other: '{{count, number}} дней',
|
||||
add_on: 'Дополнительный',
|
||||
add_on: 'Дополнительно',
|
||||
};
|
||||
|
||||
export default quota_table;
|
||||
|
|
|
@ -1,53 +1,62 @@
|
|||
const quota_table = {
|
||||
quota: {
|
||||
title: 'Kota',
|
||||
tenant_limit: 'Kiracı sınırlaması',
|
||||
tenant_limit: 'Kiracı limiti',
|
||||
base_price: 'Temel fiyat',
|
||||
mau_unit_price: '* MAU birim fiyatı',
|
||||
mau_limit: 'MAU sınırlaması',
|
||||
mau_unit_price: '* Aylık Etkin Kullanıcı (MAU) birim fiyatı',
|
||||
mau_limit: 'MAU limiti',
|
||||
},
|
||||
application: {
|
||||
title: 'Uygulamalar',
|
||||
total: 'Toplam',
|
||||
m2m: 'Makineye Makine',
|
||||
total: 'Toplam uygulama sayısı',
|
||||
m2m: 'Makine-makine uygulamaları',
|
||||
},
|
||||
resource: {
|
||||
title: 'API kaynakları',
|
||||
title: 'API Kaynakları',
|
||||
resource_count: 'Kaynak sayısı',
|
||||
scopes_per_resource: 'Kaynak başına izin',
|
||||
scopes_per_resource: 'Kaynak başına izinler',
|
||||
},
|
||||
branding: {
|
||||
title: 'Markalama',
|
||||
custom_domain: 'Özel Alan Adı',
|
||||
title: 'Kullanıcı Arayüzü ve Markalama',
|
||||
custom_domain: 'Özel alan adı',
|
||||
custom_css: 'Özel CSS',
|
||||
app_logo_and_favicon: 'Uygulama logoları ve favicon',
|
||||
dark_mode: 'Karanlık mod',
|
||||
i18n: 'Uluslararasılaştırma',
|
||||
},
|
||||
user_authn: {
|
||||
title: 'Kullanıcı yetkilendirmesi',
|
||||
omni_sign_in: 'Omni girişi',
|
||||
built_in_email_connector: 'Dahili e-posta bağlayıcısı',
|
||||
title: 'Kullanıcı Kimlik Doğrulama',
|
||||
omni_sign_in: 'Çoklu oturum açma',
|
||||
password: 'Parola',
|
||||
passwordless: 'Parolasız - E-posta ve SMS',
|
||||
email_connector: 'E-posta bağlayıcı',
|
||||
sms_connector: 'SMS bağlayıcı',
|
||||
social_connectors: 'Sosyal bağlayıcılar',
|
||||
standard_connectors: 'Standart bağlayıcılar',
|
||||
built_in_email_connector: 'Dahili e-posta bağlayıcısı',
|
||||
},
|
||||
roles: {
|
||||
title: 'Roller',
|
||||
user_management: {
|
||||
title: 'Kullanıcı Yönetimi',
|
||||
user_management: 'Kullanıcı Yönetimi',
|
||||
roles: 'Roller',
|
||||
scopes_per_role: 'Rol başına izin',
|
||||
scopes_per_role: 'Rol başına izinler',
|
||||
},
|
||||
audit_logs: {
|
||||
title: 'Denetim günlükleri',
|
||||
title: 'Denetim Günlükleri',
|
||||
retention: 'Saklama',
|
||||
},
|
||||
hooks: {
|
||||
title: 'Hooks',
|
||||
amount: 'Miktar',
|
||||
title: 'Web Kancaları',
|
||||
hooks: 'Web Kancaları',
|
||||
},
|
||||
support: {
|
||||
title: 'Destek',
|
||||
community: 'Topluluk',
|
||||
customer_ticket: 'Müşteri bileti',
|
||||
customer_ticket: 'Müşteri destek bileti',
|
||||
premium: 'Premium',
|
||||
},
|
||||
mau_unit_price_footnote:
|
||||
'* Gerçek kaynakların tüketimine bağlı olarak birim fiyatlarımız değişebilir ve Logto, birim fiyatlardaki değişikliklerin açıklamasını yapma hakkını saklı tutar.',
|
||||
'* Aylık etkin kullanıcılarınız (MAU), faturalandırma dönemi boyunca ne sıklıkla oturum açtıklarına göre 3 düzeye ayrılır. Her düzeyin farklı bir MAU birim fiyatı vardır.',
|
||||
unlimited: 'Sınırsız',
|
||||
contact: 'İletişim',
|
||||
// eslint-disable-next-line no-template-curly-in-string
|
||||
|
@ -56,7 +65,7 @@ const quota_table = {
|
|||
mau_price: '${{value, number}}/MAU',
|
||||
days_one: '{{count, number}} gün',
|
||||
days_other: '{{count, number}} gün',
|
||||
add_on: 'Ek fonksiyon',
|
||||
add_on: 'Ek Hizmet',
|
||||
};
|
||||
|
||||
export default quota_table;
|
||||
|
|
|
@ -2,52 +2,61 @@ const quota_table = {
|
|||
quota: {
|
||||
title: '配额',
|
||||
tenant_limit: '租户限制',
|
||||
base_price: '基础价格',
|
||||
mau_unit_price: '* MAU单价',
|
||||
mau_limit: 'MAU限制',
|
||||
base_price: '基本价格',
|
||||
mau_unit_price: '* 每活跃用户(MAU)单价',
|
||||
mau_limit: 'MAU 限制',
|
||||
},
|
||||
application: {
|
||||
title: '应用',
|
||||
total: '总数',
|
||||
total: '总应用数',
|
||||
m2m: '机器对机器',
|
||||
},
|
||||
resource: {
|
||||
title: 'API资源',
|
||||
resource_count: '资源数',
|
||||
scopes_per_resource: '每个资源的权限',
|
||||
title: 'API 资源',
|
||||
resource_count: '资源数量',
|
||||
scopes_per_resource: '每资源权限',
|
||||
},
|
||||
branding: {
|
||||
title: '品牌',
|
||||
title: '界面与品牌',
|
||||
custom_domain: '自定义域名',
|
||||
custom_css: '自定义 CSS',
|
||||
app_logo_and_favicon: '应用图标与网站图标',
|
||||
dark_mode: '深色模式',
|
||||
i18n: '国际化',
|
||||
},
|
||||
user_authn: {
|
||||
title: '用户身份验证',
|
||||
title: '用户认证',
|
||||
omni_sign_in: '全渠道登录',
|
||||
password: '密码',
|
||||
passwordless: '免密码登录 - 电子邮件和短信',
|
||||
email_connector: '电子邮件连接器',
|
||||
sms_connector: '短信连接器',
|
||||
social_connectors: '社交连接器',
|
||||
standard_connectors: '标准连接器',
|
||||
built_in_email_connector: '内置电子邮件连接器',
|
||||
social_connectors: '社会化登录连接器',
|
||||
standard_connectors: '标准登录连接器',
|
||||
},
|
||||
roles: {
|
||||
title: '角色',
|
||||
user_management: {
|
||||
title: '用户管理',
|
||||
user_management: '用户管理',
|
||||
roles: '角色',
|
||||
scopes_per_role: '每个角色的权限',
|
||||
scopes_per_role: '每角色权限',
|
||||
},
|
||||
audit_logs: {
|
||||
title: '审计日志',
|
||||
retention: '保留时间',
|
||||
retention: '保留期限',
|
||||
},
|
||||
hooks: {
|
||||
title: 'Hooks',
|
||||
amount: '数量',
|
||||
title: 'Webhooks',
|
||||
hooks: 'Webhooks',
|
||||
},
|
||||
support: {
|
||||
title: '支持',
|
||||
community: '社区',
|
||||
customer_ticket: '客户工单',
|
||||
premium: '高级',
|
||||
customer_ticket: '客户支持票据',
|
||||
premium: '高级版',
|
||||
},
|
||||
mau_unit_price_footnote:
|
||||
'*我们的计费单价可能根据实际消耗的资源变化,并且Logto有权解释单价的任何变动。',
|
||||
'* 您的每月活跃用户(MAU)根据在结算周期内登录的频率分为3个层级。每个层级的MAU单价不同。',
|
||||
unlimited: '无限制',
|
||||
contact: '联系',
|
||||
// eslint-disable-next-line no-template-curly-in-string
|
||||
|
|
|
@ -1,62 +1,71 @@
|
|||
const quota_table = {
|
||||
quota: {
|
||||
title: '額度',
|
||||
title: '配額',
|
||||
tenant_limit: '租戶限制',
|
||||
base_price: '基本價格',
|
||||
mau_unit_price: '* MAU 單價',
|
||||
mau_unit_price: '* 每月活躍用戶(MAU)單價',
|
||||
mau_limit: 'MAU 限制',
|
||||
},
|
||||
application: {
|
||||
title: '應用程式',
|
||||
total: '總計',
|
||||
m2m: 'Machine to machine',
|
||||
total: '應用程式總數',
|
||||
m2m: '機器到機器',
|
||||
},
|
||||
resource: {
|
||||
title: 'API 資源',
|
||||
resource_count: '資源數量',
|
||||
scopes_per_resource: '每個資源的權限',
|
||||
scopes_per_resource: '每資源權限',
|
||||
},
|
||||
branding: {
|
||||
title: '品牌',
|
||||
title: '用戶界面與品牌',
|
||||
custom_domain: '自訂網域',
|
||||
custom_css: '自訂 CSS',
|
||||
app_logo_and_favicon: '應用程式徽標和網站圖示',
|
||||
dark_mode: '深色模式',
|
||||
i18n: '國際化',
|
||||
},
|
||||
user_authn: {
|
||||
title: '用戶身份驗證',
|
||||
omni_sign_in: 'Omni 登入',
|
||||
built_in_email_connector: '內建電子郵件連接器',
|
||||
title: '用戶認證',
|
||||
omni_sign_in: '萬用登錄',
|
||||
password: '密碼',
|
||||
passwordless: '免密碼登錄 - 電子郵件和短信',
|
||||
email_connector: '電子郵件連接器',
|
||||
sms_connector: '短信連接器',
|
||||
social_connectors: '社交連接器',
|
||||
standard_connectors: '標準連接器',
|
||||
built_in_email_connector: '內置電子郵件連接器',
|
||||
},
|
||||
roles: {
|
||||
title: '角色',
|
||||
user_management: {
|
||||
title: '用戶管理',
|
||||
user_management: '用戶管理',
|
||||
roles: '角色',
|
||||
scopes_per_role: '每個角色的權限',
|
||||
scopes_per_role: '每角色權限',
|
||||
},
|
||||
audit_logs: {
|
||||
title: '審計日誌',
|
||||
retention: '保留時間',
|
||||
title: '審核日誌',
|
||||
retention: '保留期限',
|
||||
},
|
||||
hooks: {
|
||||
title: 'Hooks',
|
||||
amount: '數量',
|
||||
title: 'Webhooks',
|
||||
hooks: 'Webhooks',
|
||||
},
|
||||
support: {
|
||||
title: '支援',
|
||||
community: '社群',
|
||||
customer_ticket: '客戶工單',
|
||||
premium: '高級',
|
||||
customer_ticket: '客戶支援票據',
|
||||
premium: '高級版',
|
||||
},
|
||||
mau_unit_price_footnote:
|
||||
'* 根據實際消耗的資源,我們的單價可能會有所不同,Logto 保留解釋單價變化的權利。',
|
||||
unlimited: '不限制',
|
||||
contact: '聯絡方式',
|
||||
'* 您的每月活躍用戶(MAU)將根據在結算週期內登錄的頻率分為3個層級。每個層級都有不同的MAU單價。',
|
||||
unlimited: '無限制',
|
||||
contact: '聯絡',
|
||||
// eslint-disable-next-line no-template-curly-in-string
|
||||
monthly_price: '${{value, number}}/月',
|
||||
// eslint-disable-next-line no-template-curly-in-string
|
||||
mau_price: '${{value, number}}/MAU',
|
||||
days_one: '{{count, number}} 天',
|
||||
days_other: '{{count, number}} 天',
|
||||
add_on: '附加選項',
|
||||
days_one: '{{count, number}}天',
|
||||
days_other: '{{count, number}}天',
|
||||
add_on: '附加功能',
|
||||
};
|
||||
|
||||
export default quota_table;
|
||||
|
|
|
@ -3,60 +3,69 @@ const quota_table = {
|
|||
title: '配額',
|
||||
tenant_limit: '租戶限制',
|
||||
base_price: '基本價格',
|
||||
mau_unit_price: '* MAU 單位價格',
|
||||
mau_unit_price: '* 每月活躍使用者(MAU)單價',
|
||||
mau_limit: 'MAU 限制',
|
||||
},
|
||||
application: {
|
||||
title: '應用程式',
|
||||
total: '總數',
|
||||
total: '總應用程式數',
|
||||
m2m: '機器對機器',
|
||||
},
|
||||
resource: {
|
||||
title: 'API 資源',
|
||||
resource_count: '資源數量',
|
||||
scopes_per_resource: '資源每個權限',
|
||||
scopes_per_resource: '每資源權限',
|
||||
},
|
||||
branding: {
|
||||
title: '品牌',
|
||||
title: '使用者介面和品牌塑造',
|
||||
custom_domain: '自訂網域',
|
||||
custom_css: '自訂 CSS',
|
||||
app_logo_and_favicon: '應用程式標誌和網站圖示',
|
||||
dark_mode: '深色模式',
|
||||
i18n: '國際化',
|
||||
},
|
||||
user_authn: {
|
||||
title: '用戶身份驗證',
|
||||
title: '使用者認證',
|
||||
omni_sign_in: 'Omni 登入',
|
||||
built_in_email_connector: '內建電子郵件連接器',
|
||||
password: '密碼',
|
||||
passwordless: '免密碼登入 - 電子郵件和簡訊',
|
||||
email_connector: '電子郵件連接器',
|
||||
sms_connector: '簡訊連接器',
|
||||
social_connectors: '社交連接器',
|
||||
standard_connectors: '標準連接器',
|
||||
built_in_email_connector: '內建電子郵件連接器',
|
||||
},
|
||||
roles: {
|
||||
title: '角色',
|
||||
user_management: {
|
||||
title: '使用者管理',
|
||||
user_management: '使用者管理',
|
||||
roles: '角色',
|
||||
scopes_per_role: '角色每個權限',
|
||||
scopes_per_role: '每角色權限',
|
||||
},
|
||||
audit_logs: {
|
||||
title: '審核日誌',
|
||||
retention: '保留',
|
||||
title: '稽核日誌',
|
||||
retention: '保留期限',
|
||||
},
|
||||
hooks: {
|
||||
title: 'Hooks',
|
||||
amount: '數量',
|
||||
title: 'Webhooks',
|
||||
hooks: 'Webhooks',
|
||||
},
|
||||
support: {
|
||||
title: '支援',
|
||||
community: '社群',
|
||||
customer_ticket: '客戶工單',
|
||||
premium: '高級',
|
||||
customer_ticket: '客戶支援票證',
|
||||
premium: '進階版',
|
||||
},
|
||||
mau_unit_price_footnote:
|
||||
'* 我們的單價可能因實際消耗的資源而有所變動,並且 Logto 保留隨時解釋單價變動的權利。',
|
||||
'* 您的每月活躍使用者(MAU)將根據在結算週期內登錄的頻率分為3個層級。每個層級都有不同的MAU單價。',
|
||||
unlimited: '無限制',
|
||||
contact: '聯絡我們',
|
||||
contact: '聯絡',
|
||||
// eslint-disable-next-line no-template-curly-in-string
|
||||
monthly_price: '${{value, number}}/月',
|
||||
// eslint-disable-next-line no-template-curly-in-string
|
||||
mau_price: '${{value, number}}/MAU',
|
||||
days_one: '{{count, number}} 天',
|
||||
days_other: '{{count, number}} 天',
|
||||
add_on: '附加',
|
||||
days_one: '{{count, number}}天',
|
||||
days_other: '{{count, number}}天',
|
||||
add_on: '附加功能',
|
||||
};
|
||||
|
||||
export default quota_table;
|
||||
|
|
Loading…
Reference in a new issue