diff --git a/packages/console/src/components/CreateConnectorForm/index.tsx b/packages/console/src/components/CreateConnectorForm/index.tsx index be114f0ad..d07701e1a 100644 --- a/packages/console/src/components/CreateConnectorForm/index.tsx +++ b/packages/console/src/components/CreateConnectorForm/index.tsx @@ -165,11 +165,7 @@ function CreateConnectorForm({ onClose, isOpen: isFormOpen, type }: Props) {
{isCloud && ( - + )}
; className?: string; }; -type Props = - | (BaseProps & { - /** What the tag is for. */ - for: 'upsell'; - /** - * Whether the tag should be visible. It should be `true` if the tenant's subscription - * plan has NO access to the feature (paywall), but it will always be visible for dev - * tenants. - */ - isVisible: boolean; - /** The minimum plan required to use the feature. */ - plan: Exclude; - }) - | (BaseProps & { - /** What the tag is for. */ - for: 'beta'; - }); - /** - * A tag that indicates whether a feature is in beta or requires a paid plan. + * A tag that indicates whether a feature requires a paid plan. * - * - **For beta tags**: The tag will always be visible. - * - **For paid plan tags**: The tag will be visible if `isVisible` is `true`, which means that + * The tag will be visible if `isVisible` is `true`, which means that * the tenant's subscription plan has no access to the feature (paywall). However, it will always * be visible for dev tenants since they have access to almost all features, and it's useful for * developers to know which features need to be paid for in production. @@ -40,42 +29,26 @@ type Props = * CAUTION: You should only render this component when the feature has a paywall. * * @example - * Use as a beta tag: - * - * ```tsx - * - * ``` - * - * Use as a paid plan tag: * * ```tsx * // In a production tenant, the tag will be visible when there's no access to the feature - * + * * * // In a dev tenant, the tag will always be visible even if `isVisible` is `false` - * + * * * // For conditionally rendering the tag, usually in an iteration on a list which contains * // both free and paid features * {features.map((feature) => ( * hasPaywall(feature) && - * + * * ))} * ``` */ function FeatureTag(props: Props) { - const { className, for: forType } = props; + const { className } = props; const { isDevTenant } = useContext(TenantsContext); - // Beta tag should always be visible. - if (forType === 'beta') { - return ( -
- Beta -
- ); - } - const { isVisible, plan } = props; // Dev tenant should always see the tag since they have access to almost all features, and it's diff --git a/packages/console/src/ds-components/CardTitle/index.tsx b/packages/console/src/ds-components/CardTitle/index.tsx index 147617dfd..9b0d1e7b2 100644 --- a/packages/console/src/ds-components/CardTitle/index.tsx +++ b/packages/console/src/ds-components/CardTitle/index.tsx @@ -21,8 +21,6 @@ export type Props = { learnMoreLink?: Pick; isWordWrapEnabled?: boolean; className?: string; - /** If a beta tag should be shown next to the title. */ - isBeta?: boolean; /** * If a paywall tag should be shown next to the title. The value is the plan type. * @@ -41,7 +39,6 @@ function CardTitle({ isWordWrapEnabled = false, learnMoreLink, className, - isBeta, paywall, }: Props) { const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' }); @@ -50,8 +47,7 @@ function CardTitle({
{typeof title === 'string' ? : title} - {paywall && isCloud && } - {isBeta && isCloud && } + {paywall && isCloud && }
{Boolean(subtitle ?? learnMoreLink) && (
diff --git a/packages/console/src/pages/Applications/components/GuideLibrary/index.tsx b/packages/console/src/pages/Applications/components/GuideLibrary/index.tsx index d8412b6a7..30b1f02ae 100644 --- a/packages/console/src/pages/Applications/components/GuideLibrary/index.tsx +++ b/packages/console/src/pages/Applications/components/GuideLibrary/index.tsx @@ -115,7 +115,6 @@ function GuideLibrary({ className, hasCardBorder, hasCardButton, hasFilters }: P {isCloud && ( diff --git a/packages/console/src/pages/Applications/components/TypeDescription/index.tsx b/packages/console/src/pages/Applications/components/TypeDescription/index.tsx index 9b07137d5..fd48434dc 100644 --- a/packages/console/src/pages/Applications/components/TypeDescription/index.tsx +++ b/packages/console/src/pages/Applications/components/TypeDescription/index.tsx @@ -31,7 +31,6 @@ function TypeDescription({ title, subtitle, description, type, size = 'large' }:
diff --git a/packages/console/src/pages/EnterpriseSso/index.tsx b/packages/console/src/pages/EnterpriseSso/index.tsx index 2f8cc10d8..9624dfd59 100644 --- a/packages/console/src/pages/EnterpriseSso/index.tsx +++ b/packages/console/src/pages/EnterpriseSso/index.tsx @@ -65,7 +65,6 @@ function EnterpriseSsoConnectors() { return (
diff --git a/packages/console/src/pages/TenantSettings/Subscription/PlanComparisonTable/components/TableDataWrapper/index.module.scss b/packages/console/src/pages/TenantSettings/Subscription/PlanComparisonTable/components/TableDataWrapper/index.module.scss index 5b50c07dd..6a21ce7d8 100644 --- a/packages/console/src/pages/TenantSettings/Subscription/PlanComparisonTable/components/TableDataWrapper/index.module.scss +++ b/packages/console/src/pages/TenantSettings/Subscription/PlanComparisonTable/components/TableDataWrapper/index.module.scss @@ -10,3 +10,8 @@ justify-content: flex-start; } } + +.extraInfo { + font: var(--font-body-3); + color: var(--color-text-secondary); +} diff --git a/packages/console/src/pages/TenantSettings/Subscription/PlanComparisonTable/components/TableDataWrapper/index.tsx b/packages/console/src/pages/TenantSettings/Subscription/PlanComparisonTable/components/TableDataWrapper/index.tsx index 00f006c5e..5f2204d0f 100644 --- a/packages/console/src/pages/TenantSettings/Subscription/PlanComparisonTable/components/TableDataWrapper/index.tsx +++ b/packages/console/src/pages/TenantSettings/Subscription/PlanComparisonTable/components/TableDataWrapper/index.tsx @@ -11,19 +11,23 @@ type Props = { children: ReactNode; tip?: ReactNode; isLeftAligned?: boolean; + extraInfo?: ReactNode; }; -function TableDataWrapper({ children, tip, isLeftAligned }: Props) { +function TableDataWrapper({ children, tip, isLeftAligned, extraInfo }: Props) { return ( -
- {children} - {tip && ( - - - - - - )} +
+
+ {children} + {tip && ( + + + + + + )} +
+ {extraInfo &&
{extraInfo}
}
); } diff --git a/packages/console/src/pages/TenantSettings/Subscription/PlanComparisonTable/renderers/GenericFeatureFlag.tsx b/packages/console/src/pages/TenantSettings/Subscription/PlanComparisonTable/renderers/GenericFeatureFlag.tsx index 062a3bcbb..7f6056e0a 100644 --- a/packages/console/src/pages/TenantSettings/Subscription/PlanComparisonTable/renderers/GenericFeatureFlag.tsx +++ b/packages/console/src/pages/TenantSettings/Subscription/PlanComparisonTable/renderers/GenericFeatureFlag.tsx @@ -13,43 +13,32 @@ type Props = { */ isEnabled?: boolean; /** - * Whether the feature is in beta. - * Often used with the `paymentType` prop. - * - `false`: - * - When `isEnabled` is `true`, it will display a checkmark. - * - When `isEnabled` is `false`, it will display '-'. - * - `true`: - * - when the `paymentType` is `add-on` or `undefined`, it will display 'Add-on (Beta)', or it will display '-'. - * - when the `paymentType` is `usage`, it will display 'Beta'. + * The payment type of the feature. */ - isBeta?: boolean; - /** - * Used with the `isBeta` prop to indicate the payment type of the feature. - */ - paymentType?: 'add-on' | 'usage'; + isAddOnForPlan?: boolean; /** * The tip phrase key to show */ tipPhraseKey?: TFuncKey<'translation', 'admin_console.subscription.quota_table'>; + customContent?: React.ReactNode; }; /** * Render a feature flag to indicate whether a feature is enabled or not in the plan comparison table. - * - **For normal features**: - * - If `isEnabled` is `undefined`, it will display 'Contact us'. - * - If `isEnabled` is `true`, it will display a checkmark. - * - **For beta features**: - * - If `isBeta` is `true` and the feature is enabled: - * - If `paymentType` is `add-on` or `undefined`, it will display 'Add-on (Beta)'. - * - If `paymentType` is `usage`, it will display 'Beta'. - * - If `isBeta` is `false` or the feature is disabled: works the same as normal features. - * + * - If `isEnabled` is `undefined`, it will display 'Contact us'. + * - If `isEnabled` is `true`, it will display a checkmark. + * - If `isEnabled` is `false`, it will display a dash. * @example * ```tsx * * ``` */ -function GenericFeatureFlag({ isEnabled, isBeta, tipPhraseKey, paymentType }: Props) { +function GenericFeatureFlag({ + isEnabled, + tipPhraseKey, + isAddOnForPlan = false, + customContent, +}: Props) { if (isEnabled === undefined) { return ; } @@ -57,18 +46,9 @@ function GenericFeatureFlag({ isEnabled, isBeta, tipPhraseKey, paymentType }: Pr return ( )} + extraInfo={cond(isAddOnForPlan && )} > - {isEnabled - ? cond(!isBeta && ) ?? ( - - ) - : '-'} + {customContent ?? (isEnabled ? : '-')} ); } diff --git a/packages/console/src/pages/TenantSettings/Subscription/PlanComparisonTable/renderers/GenericQuotaLimit.tsx b/packages/console/src/pages/TenantSettings/Subscription/PlanComparisonTable/renderers/GenericQuotaLimit.tsx index c7c7136d3..5a4f7b395 100644 --- a/packages/console/src/pages/TenantSettings/Subscription/PlanComparisonTable/renderers/GenericQuotaLimit.tsx +++ b/packages/console/src/pages/TenantSettings/Subscription/PlanComparisonTable/renderers/GenericQuotaLimit.tsx @@ -12,6 +12,7 @@ type Props = { tipPhraseKey?: TFuncKey<'translation', 'admin_console.subscription.quota_table'>; tipInterpolation?: Record; hasCheckmark?: boolean; + extraInfo?: ReactNode; formatter?: (quota: number) => string | ReactNode; }; @@ -20,6 +21,7 @@ function GenericQuotaLimit({ tipPhraseKey, tipInterpolation, hasCheckmark, + extraInfo, formatter, }: Props) { if (quota === undefined) { @@ -37,7 +39,7 @@ function GenericQuotaLimit({ if (quota === null) { return ( - + {hasCheckmark && } @@ -45,7 +47,7 @@ function GenericQuotaLimit({ } return ( - + {quota === 0 ? ( '-' ) : ( diff --git a/packages/console/src/pages/TenantSettings/Subscription/PlanComparisonTable/renderers/index.tsx b/packages/console/src/pages/TenantSettings/Subscription/PlanComparisonTable/renderers/index.tsx index 8e7cdeaa7..f22c5bab0 100644 --- a/packages/console/src/pages/TenantSettings/Subscription/PlanComparisonTable/renderers/index.tsx +++ b/packages/console/src/pages/TenantSettings/Subscription/PlanComparisonTable/renderers/index.tsx @@ -10,6 +10,13 @@ import BasePrice from './BasePrice'; import GenericFeatureFlag from './GenericFeatureFlag'; import GenericQuotaLimit from './GenericQuotaLimit'; +const m2mAppUnitPrice = 8; +const resourceUnitPrice = 3; +const ssoUnitPrice = 48; +const mfaPrice = 48; +const maoDisplayLimit = 100; +const maoUnitPrice = 0.64; + export const quotaValueRenderer: Record< keyof SubscriptionPlanTable, (planTableData: SubscriptionPlanTableData) => ReactNode @@ -37,19 +44,60 @@ export const quotaValueRenderer: Record< applicationsLimit: ({ table: { applicationsLimit } }) => ( ), - machineToMachineLimit: ({ id, table: { machineToMachineLimit } }) => ( - - ), + machineToMachineLimit: ({ id, table: { machineToMachineLimit } }) => { + const isPaidPlan = id === ReservedPlanId.Hobby; + + return ( + + ) + )} + formatter={cond( + isPaidPlan && + ((quota) => ( + + )) + )} + /> + ); + }, // Resources - resourcesLimit: ({ id, table: { resourcesLimit } }) => ( - - ), + resourcesLimit: ({ id, table: { resourcesLimit } }) => { + const isPaidPlan = id === ReservedPlanId.Hobby; + return ( + + ) + )} + formatter={cond( + isPaidPlan && + ((quota) => ( + + )) + )} + /> + ); + }, scopesPerResourceLimit: ({ table: { scopesPerResourceLimit } }) => ( ), @@ -68,14 +116,24 @@ export const quotaValueRenderer: Record< ), i18nEnabled: ({ table: { i18nEnabled } }) => , // UserAuthentication - mfaEnabled: ({ table: { mfaEnabled } }) => ( - - ), + mfaEnabled: ({ id, table: { mfaEnabled } }) => { + const isPaidPlan = id === ReservedPlanId.Hobby; + return ( + + ) + )} + /> + ); + }, omniSignInEnabled: ({ table: { omniSignInEnabled } }) => ( ), @@ -97,14 +155,24 @@ export const quotaValueRenderer: Record< standardConnectorsLimit: ({ table: { standardConnectorsLimit } }) => ( ), - ssoEnabled: ({ table: { ssoEnabled } }) => ( - - ), + ssoEnabled: ({ id, table: { ssoEnabled } }) => { + const isPaidPlan = id === ReservedPlanId.Hobby; + return ( + + ) + )} + /> + ); + }, // Roles userManagementEnabled: ({ table: { userManagementEnabled } }) => ( @@ -117,14 +185,38 @@ export const quotaValueRenderer: Record< ), // Organizations - organizationsEnabled: ({ table: { organizationsEnabled } }) => ( - - ), + organizationsEnabled: ({ id, table: { organizationsEnabled } }) => { + const isPaidPlan = id === ReservedPlanId.Hobby; + return ( + + ) + )} + formatter={cond( + isPaidPlan && + ((quota) => ( + + )) + )} + /> + ); + }, allowedUsersPerOrganization: ({ table: { allowedUsersPerOrganization } }) => ( ), diff --git a/packages/phrases/src/locales/de/translation/admin-console/subscription/quota-table.ts b/packages/phrases/src/locales/de/translation/admin-console/subscription/quota-table.ts index 699f64d64..dcddb39a6 100644 --- a/packages/phrases/src/locales/de/translation/admin-console/subscription/quota-table.ts +++ b/packages/phrases/src/locales/de/translation/admin-console/subscription/quota-table.ts @@ -81,18 +81,20 @@ const quota_table = { paid_token_limit_tip: 'Kostenlos bis {{value}}M umlaufende Tokens. Wir können Gebühren hinzufügen, wenn Sie über {{value}}M Tokens hinausgehen, sobald wir die Preise finalisieren.', paid_quota_limit_tip: - 'Wir können Gebühren für Funktionen hinzufügen, die Ihre Kontingentgrenze überschreiten, sobald wir die Preise finalisieren.', - beta_feature_tip: - 'Während der Beta-Phase kostenfrei zu benutzen. Wir werden mit der finalen Festlegung der Zusatzkosten beginnen.', - usage_based_beta_feature_tip: - 'Während der Beta-Phase kostenfrei zu benutzen. Wir werden mit der finalen Festlegung der organisationsbasierten nutzungsabhängigen Preise beginnen.', - beta: 'Beta', - add_on_beta: 'Add-on (Beta)', + 'Logto wird Gebühren für Funktionen hinzufügen, die über Ihr Kontingent hinausgehen. Sie können es kostenlos verwenden, bis wir etwa im 2. Quartal 2024 mit der Berechnung beginnen.', + paid_add_on_feature_tip: + 'Dies ist eine Zusatzfunktion. Sie können sie kostenlos verwenden, bis wir etwa im 2. Quartal 2024 mit der Berechnung beginnen.', million: '{{value, number}} Millionen', mau_tip: 'MAU (monatlich aktive Benutzer) bedeutet die Anzahl der eindeutigen Benutzer, die in einem Abrechnungsmonat mindestens einen Token mit Logto ausgetauscht haben.', tokens_tip: 'Alle Arten von Tokens, die von Logto ausgegeben wurden, einschließlich Zugriffstoken, Aktualisierungstoken, usw.', + included: '{{value, number}} inklusive', + included_mao: '{{value, number}} MAO enthalten', + extra_quota_price: 'Dann ${{value, number}} pro Monat / je danach', + per_month_each: '${{value, number}} pro Monat / je', + extra_mao_price: 'Dann ${{value, number}} pro MAO', + per_month: '${{value, number}} pro Monat', }; export default Object.freeze(quota_table); diff --git a/packages/phrases/src/locales/en/translation/admin-console/subscription/quota-table.ts b/packages/phrases/src/locales/en/translation/admin-console/subscription/quota-table.ts index 8636cbcf9..553bb50fd 100644 --- a/packages/phrases/src/locales/en/translation/admin-console/subscription/quota-table.ts +++ b/packages/phrases/src/locales/en/translation/admin-console/subscription/quota-table.ts @@ -81,18 +81,20 @@ const quota_table = { paid_token_limit_tip: 'Free for {{value}}M token issued. We may add charges if you go beyond {{value}}M tokens once we finalize the prices.', paid_quota_limit_tip: - 'We may add charges for features that go beyond your quota limit as add-ons once we finalize the prices.', - beta_feature_tip: - 'Free to use during the beta phase. We will begin charging once we finalize the add-on pricing.', - usage_based_beta_feature_tip: - 'Free to use during the beta phase. We will begin charging once we finalize the org usage-based pricing.', - beta: 'Beta', - add_on_beta: 'Add-on (Beta)', + "Logto will add charges for features that go beyond your quota limit. You can use it at no cost until we're beginning charging around Q2 2024.", + paid_add_on_feature_tip: + "This is an add-on feature. You can use it at no cost until we're beginning charging around Q2 2024.", million: '{{value, number}} million', mau_tip: 'MAU (monthly active user) means the number of unique users who have exchanged at least one token with Logto in a billing month.', tokens_tip: 'All kinds of tokens that issued by Logto, including access token, refresh token, etc.', + included: '{{value, number}} included', + included_mao: '{{value, number}} MAO included', + extra_quota_price: 'Then ${{value, number}} per mo / ea after', + per_month_each: '${{value, number}} per mo / ea', + extra_mao_price: 'Then ${{value, number}} per MAO', + per_month: '${{value, number}} per mo', }; export default Object.freeze(quota_table); diff --git a/packages/phrases/src/locales/es/translation/admin-console/subscription/quota-table.ts b/packages/phrases/src/locales/es/translation/admin-console/subscription/quota-table.ts index 7a345ad22..b3475dbb0 100644 --- a/packages/phrases/src/locales/es/translation/admin-console/subscription/quota-table.ts +++ b/packages/phrases/src/locales/es/translation/admin-console/subscription/quota-table.ts @@ -81,18 +81,20 @@ const quota_table = { paid_token_limit_tip: 'Gratis para {{value}}M tokens emitidos. Es posible que agreguemos cargos si supera los {{value}}M tokens una vez que finalicemos los precios.', paid_quota_limit_tip: - 'Podemos agregar cargos por funciones que excedan su límite de cuota como complementos una vez que finalicemos los precios.', - beta_feature_tip: - 'Gratis durante la fase beta. Comenzaremos a cobrar una vez que finalicemos la fijación de precios del complemento.', - usage_based_beta_feature_tip: - 'Gratis durante la fase beta. Comenzaremos a cobrar una vez que finalicemos los precios basados en el uso de la organización.', - beta: 'Beta', - add_on_beta: 'Complemento (Beta)', + 'Logto agregará cargos por funciones que excedan su límite de cuota. Puede usarlo sin costo hasta que comencemos a cobrar aproximadamente en el segundo trimestre de 2024.', + paid_add_on_feature_tip: + 'Esta es una característica adicional. Puede usarla sin costo hasta que comencemos a cobrar aproximadamente en el segundo trimestre de 2024.', million: '{{value, number}} millones', mau_tip: 'MAU (usuario activo mensual) significa el número de usuarios únicos que han intercambiado al menos un token con Logto en un mes de facturación.', tokens_tip: 'Todo tipo de tokens emitidos por Logto, incluyendo tokens de acceso, tokens de actualización, etc.', + included: 'incluido{{value, number}}', + included_mao: '{{value, number}} MAO incluido', + extra_quota_price: 'Luego ${{value, number}} por mes / cada uno después', + per_month_each: '${{value, number}} por mes / cada uno', + extra_mao_price: 'Luego ${{value, number}} por MAO', + per_month: '${{value, number}} por mes', }; export default Object.freeze(quota_table); diff --git a/packages/phrases/src/locales/fr/translation/admin-console/subscription/quota-table.ts b/packages/phrases/src/locales/fr/translation/admin-console/subscription/quota-table.ts index c71a6e4f2..b8edc63c4 100644 --- a/packages/phrases/src/locales/fr/translation/admin-console/subscription/quota-table.ts +++ b/packages/phrases/src/locales/fr/translation/admin-console/subscription/quota-table.ts @@ -81,18 +81,20 @@ const quota_table = { paid_token_limit_tip: 'Gratuit pour {{value}}M jeton émis. Nous pouvons ajouter des frais si vous dépassez {{value}}M jetons une fois que nous aurons finalisé les prix.', paid_quota_limit_tip: - 'Nous pouvons facturer des fonctionnalités qui dépassent votre limite de quotas en tant que modules complémentaires une fois que nous aurons finalisé les prix.', - beta_feature_tip: - 'Gratuit à utiliser pendant la phase bêta. Nous commencerons à facturer une fois que nous aurons finalisé les tarifs des modules complémentaires.', - usage_based_beta_feature_tip: - "Gratuit à utiliser pendant la phase bêta. Nous commencerons à facturer une fois que nous aurons finalisé les tarifs basés sur l'usage de l'organisation.", - beta: 'Bêta', - add_on_beta: 'Module complémentaire (Bêta)', + "Logto ajoutera des frais pour les fonctionnalités qui dépassent votre limite de quota. Vous pouvez l'utiliser gratuitement jusqu'à ce que nous commencions à facturer vers le deuxième trimestre 2024.", + paid_add_on_feature_tip: + "Il s'agit d'une fonctionnalité supplémentaire. Vous pouvez l'utiliser gratuitement jusqu'à ce que nous commencions à facturer vers le deuxième trimestre 2024.", million: '{{value, number}} million', mau_tip: "MAU (utilisateur actif mensuel) signifie le nombre d'utilisateurs uniques qui ont échangé au moins un jeton avec Logto au cours d'un mois de facturation.", tokens_tip: "Tous types de jetons émis par Logto, y compris les jetons d'accès, les jetons de rafraîchissement, etc.", + included: '{{value, number}} inclus', + included_mao: '{{value, number}} MAO inclus', + extra_quota_price: 'Ensuite ${{value, number}} par mois / chacun après', + per_month_each: '${{value, number}} par mois / chacun', + extra_mao_price: 'Ensuite ${{value, number}} par MAO', + per_month: '${{value, number}} par mois', }; export default Object.freeze(quota_table); diff --git a/packages/phrases/src/locales/it/translation/admin-console/subscription/quota-table.ts b/packages/phrases/src/locales/it/translation/admin-console/subscription/quota-table.ts index dec962de1..764fc9ba6 100644 --- a/packages/phrases/src/locales/it/translation/admin-console/subscription/quota-table.ts +++ b/packages/phrases/src/locales/it/translation/admin-console/subscription/quota-table.ts @@ -81,18 +81,20 @@ const quota_table = { paid_token_limit_tip: 'Gratuito per {{value}}M token rilasciati. Potremmo aggiungere costi se superi {{value}}M token una volta che finalizziamo i prezzi.', paid_quota_limit_tip: - 'Potremmo aggiungere costi per funzionalità che superano il limite di quota come componenti aggiuntivi una volta che finalizziamo i prezzi.', - beta_feature_tip: - 'Gratuito durante la fase beta. Inizieremo a addebitare una volta che finalizziamo i prezzi delle componenti aggiuntive.', - usage_based_beta_feature_tip: - "Gratuito durante la fase beta. Inizieremo a addebitare una volta che finalizziamo i prezzi basati sull'utilizzo dell'org.", - beta: 'Beta', - add_on_beta: 'Componente Aggiuntivo (Beta)', + 'Logto addebiterà costi per le funzionalità che superano il limite della tua quota. Puoi usarlo gratuitamente fino a quando inizieremo a addebitare circa nel secondo trimestre del 2024.', + paid_add_on_feature_tip: + 'Questa è una funzionalità aggiuntiva. Puoi usarla gratuitamente fino a quando inizieremo a addebitare circa nel secondo trimestre del 2024.', million: '{{value, number}} milioni', mau_tip: 'MAU (utente attivo mensile) significa il numero di utenti unici che hanno scambiato almeno un token con Logto in un mese di fatturazione.', tokens_tip: 'Tutti i tipi di token emessi da Logto, inclusi token di accesso, token di aggiornamento, ecc.', + included: '{{value, number}} incluso', + included_mao: '{{value, number}} MAO inclusi', + extra_quota_price: 'Quindi ${{value, number}} al mese / ognuno dopo', + per_month_each: '${{value, number}} al mese / ognuno', + extra_mao_price: 'Quindi ${{value, number}} per MAO', + per_month: '${{value, number}} al mese', }; export default Object.freeze(quota_table); diff --git a/packages/phrases/src/locales/ja/translation/admin-console/subscription/quota-table.ts b/packages/phrases/src/locales/ja/translation/admin-console/subscription/quota-table.ts index 9d058f35e..3db299183 100644 --- a/packages/phrases/src/locales/ja/translation/admin-console/subscription/quota-table.ts +++ b/packages/phrases/src/locales/ja/translation/admin-console/subscription/quota-table.ts @@ -81,18 +81,20 @@ const quota_table = { paid_token_limit_tip: '無料 {{value}}M トークン発行。価格設定が最終決定した場合、{{value}}M トークンを超えると追加料金が発生する可能性があります。', paid_quota_limit_tip: - '価格設定が最終決定した場合、クォータ制限を超える機能について追加料金が発生することがあります。', - beta_feature_tip: - 'ベータフェーズ中は無料です。アドオンの価格設定が最終決定した後、請求を開始します。', - usage_based_beta_feature_tip: - 'ベータフェーズ中は無料です。組織の使用に基づく価格設定が最終決定した後、請求を開始します。', - beta: 'ベータ', - add_on_beta: 'アドオン(ベータ版)', + 'Logtoはクォータ制限を超える機能に対して料金を追加します。2024年第2四半期ごろまでは無料でご利用いただけます。', + paid_add_on_feature_tip: + 'これはアドオン機能です。2024年第2四半期ごろまでは無料でご利用いただけます。', million: '{{value, number}} 万', mau_tip: 'MAU(月間アクティブユーザー)とは、請求月において少なくとも1つのトークンをLogtoと交換したユニークなユーザーの数を指します。', tokens_tip: 'Logtoによって発行されたすべての種類のトークン、アクセストークン、リフレッシュトークンなどを含みます。', + included: '{{value, number}} 込み', + included_mao: '{{value, number}} MAO込み', + extra_quota_price: 'その後、各${{value, number}} / 月ごと', + per_month_each: '各${{value, number}} / 月ごと', + extra_mao_price: 'その後、MAOごとに${{value, number}}', + per_month: '${{value, number}} / 月ごと', }; export default Object.freeze(quota_table); diff --git a/packages/phrases/src/locales/ko/translation/admin-console/subscription/quota-table.ts b/packages/phrases/src/locales/ko/translation/admin-console/subscription/quota-table.ts index 4dff2abbd..1b9ae1250 100644 --- a/packages/phrases/src/locales/ko/translation/admin-console/subscription/quota-table.ts +++ b/packages/phrases/src/locales/ko/translation/admin-console/subscription/quota-table.ts @@ -81,16 +81,19 @@ const quota_table = { paid_token_limit_tip: '무료 {{value}}M 토큰 발급. 가격 확정 후 {{value}}M 토큰을 초과하면 추가 요금이 부과될 수 있습니다.', paid_quota_limit_tip: - '가격 확정 후 할당량 제한을 초과하는 기능에 대해 부가 기능으로 요금이 부과될 수 있습니다.', - beta_feature_tip: '베타 단계에서 무료입니다. 부가 기능 가격 확정 후 요금이 부과됩니다.', - usage_based_beta_feature_tip: - '베타 단계에서 무료입니다. 조직 사용량 기반 요금 책정 후 요금이 부과됩니다.', - beta: '베타', - add_on_beta: '부가 기능 (베타)', + 'Logto는 할당량 제한을 초과하는 기능에 대해 요금을 부과할 것입니다. 2024년 제2분기까지는 무료로 사용할 수 있습니다.', + paid_add_on_feature_tip: + '이것은 부가 기능입니다. 2024년 제2분기까지는 무료로 사용할 수 있습니다.', million: '{{value, number}} 백만', mau_tip: 'MAU (월간 활성 사용자)는 빌링 월에 Logto와 적어도 하나의 토큰을 교환한 고유 사용자 수를 의미합니다.', tokens_tip: 'Logto에서 발행한 모든 종류의 토큰, 액세스 토큰, 리프레시 토큰 등을 포함합니다.', + included: '{{value, number}} 포함', + included_mao: '{{value, number}} MAO 포함', + extra_quota_price: '이후 월당 ${{value, number}} / 각각', + per_month_each: '월당 ${{value, number}} / 각각', + extra_mao_price: '이후 MAO당 ${{value, number}}', + per_month: '월당 ${{value, number}}', }; export default Object.freeze(quota_table); diff --git a/packages/phrases/src/locales/pl-pl/translation/admin-console/subscription/quota-table.ts b/packages/phrases/src/locales/pl-pl/translation/admin-console/subscription/quota-table.ts index 70245b9cf..b75addaef 100644 --- a/packages/phrases/src/locales/pl-pl/translation/admin-console/subscription/quota-table.ts +++ b/packages/phrases/src/locales/pl-pl/translation/admin-console/subscription/quota-table.ts @@ -81,18 +81,20 @@ const quota_table = { paid_token_limit_tip: 'Bezpłatne do wydania {{value}} M tokenów. Możemy doliczyć opłaty, jeśli przekroczysz limity {{value}} M tokenów, gdy ustalimy ostateczne ceny.', paid_quota_limit_tip: - 'Możemy doliczyć opłaty za funkcje po przekroczeniu limitów kwoty jako dodatki, gdy ustalimy ostateczne ceny.', - beta_feature_tip: - 'Darmowe w trakcie fazy beta. Będziemy pobierać opłaty po zakończeniu fazy beta przy ustaleniu cen dodatków.', - usage_based_beta_feature_tip: - 'Darmowe w trakcie fazy beta. Będziemy pobierać opłaty po zakończeniu fazy beta przy ustaleniu opłat w oparciu o użycie organizacji.', - beta: 'Beta', - add_on_beta: 'Dodatkowy (Beta)', + 'Logto będzie naliczać opłaty za funkcje przekraczające limit kontyngentu. Możesz go używać bezpłatnie do czasu rozpoczęcia naliczania opłat, około II kwartał 2024 roku.', + paid_add_on_feature_tip: + 'To jest funkcja dodatkowa. Możesz z niej korzystać bezpłatnie do czasu rozpoczęcia naliczania opłat, około II kwartał 2024 roku.', million: '{{value, number}} milion', mau_tip: 'MAU (miesięczny aktywny użytkownik) oznacza liczbę unikalnych użytkowników, którzy wymienili co najmniej jeden token z Logto w miesiącu rozliczeniowym.', tokens_tip: 'Wszystkie rodzaje tokenów wydanych przez Logto, w tym tokeny dostępu, tokeny odświeżania, itp.', + included: '{{value, number}} zawarte', + included_mao: '{{value, number}} MAO wliczone', + extra_quota_price: 'Następnie ${{value, number}} za miesiąc / każdy po', + per_month_each: '${{value, number}} za miesiąc / każdy', + extra_mao_price: 'Następnie ${{value, number}} za MAO', + per_month: '${{value, number}} za miesiąc', }; export default Object.freeze(quota_table); diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/subscription/quota-table.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/subscription/quota-table.ts index 6a3a8a4dd..ed36430e9 100644 --- a/packages/phrases/src/locales/pt-br/translation/admin-console/subscription/quota-table.ts +++ b/packages/phrases/src/locales/pt-br/translation/admin-console/subscription/quota-table.ts @@ -81,18 +81,20 @@ const quota_table = { paid_token_limit_tip: 'Grátis para {{value}}M tokens emitidos. Podemos cobrar se você ultrapassar {{value}}M tokens após finalizarmos os preços.', paid_quota_limit_tip: - 'Podemos adicionar cobranças para recursos que ultrapassarem o limite da sua cota como complementos, uma vez que finalizarmos os preços.', - beta_feature_tip: - 'Grátis durante a fase beta. Começaremos a cobrar uma vez que finalizarmos os preços dos complementos.', - usage_based_beta_feature_tip: - 'Grátis durante a fase beta. Começaremos a cobrar uma vez que finalizarmos os preços baseados no uso da organização.', - beta: 'Beta', - add_on_beta: 'Complemento (Beta)', + 'O Logto adicionará cobranças por recursos que ultrapassarem seu limite de cota. Você pode usá-lo gratuitamente até começarmos a cobrar, aproximadamente no segundo trimestre de 2024.', + paid_add_on_feature_tip: + 'Esta é uma função adicional. Você pode usá-la gratuitamente até começarmos a cobrar, aproximadamente no segundo trimestre de 2024.', million: '{{value, number}} milhão', mau_tip: 'MAU (usuário ativo mensal) significa o número de usuários únicos que trocaram pelo menos um token com o Logto em um mês de faturamento.', tokens_tip: 'Todos os tipos de tokens emitidos pelo Logto, incluindo token de acesso, token de atualização, etc.', + included: 'incluído{{value, number}}', + included_mao: '{{value, number}} MAO incluído', + extra_quota_price: 'Então ${{value, number}} por mês / cada depois', + per_month_each: '${{value, number}} por mês / cada', + extra_mao_price: 'Então ${{value, number}} por MAO', + per_month: '${{value, number}} por mês', }; export default Object.freeze(quota_table); diff --git a/packages/phrases/src/locales/pt-pt/translation/admin-console/subscription/quota-table.ts b/packages/phrases/src/locales/pt-pt/translation/admin-console/subscription/quota-table.ts index 58b0ca2d2..2a4a2bdb9 100644 --- a/packages/phrases/src/locales/pt-pt/translation/admin-console/subscription/quota-table.ts +++ b/packages/phrases/src/locales/pt-pt/translation/admin-console/subscription/quota-table.ts @@ -81,18 +81,20 @@ const quota_table = { paid_token_limit_tip: 'Gratuito para {{value}}M de tokens emitidos. Podemos adicionar taxas se exceder {{value}}M de tokens assim que finalizarmos os preços.', paid_quota_limit_tip: - 'Podemos adicionar taxas para funcionalidades que excedam o limite da sua quota como suplementos assim que finalizarmos os preços.', - beta_feature_tip: - 'Gratuito durante a fase beta. Começaremos a cobrar assim que finalizarmos os preços dos suplementos.', - usage_based_beta_feature_tip: - 'Gratuito durante a fase beta. Começaremos a cobrar assim que finalizarmos os preços baseados no uso da organização.', - beta: 'Beta', - add_on_beta: 'Suplemento (Beta)', + 'O Logto adicionará encargos por funcionalidades que ultrapassem o seu limite de quota. Pode utilizá-lo sem custos até começarmos a cobrar, aproximadamente no segundo trimestre de 2024.', + paid_add_on_feature_tip: + 'Esta é uma funcionalidade adicional. Pode utilizá-la sem custos até começarmos a cobrar, aproximadamente no segundo trimestre de 2024.', million: '{{value, number}} milhão', mau_tip: 'MAU (utilizador ativo mensal) significa o número de utilizadores únicos que trocaram pelo menos um token com o Logto num mês de faturação.', tokens_tip: 'Todos os tipos de tokens emitidos pelo Logto, incluindo token de acesso, token de atualização, etc.', + included: 'incluído{{value, number}}', + included_mao: '{{value, number}} MAO incluída', + extra_quota_price: 'Depois ${{value, number}} por mês / cada um depois', + per_month_each: '${{value, number}} por mês / cada um', + extra_mao_price: 'Depois ${{value, number}} por MAO', + per_month: '${{value, number}} por mês', }; export default Object.freeze(quota_table); diff --git a/packages/phrases/src/locales/ru/translation/admin-console/subscription/quota-table.ts b/packages/phrases/src/locales/ru/translation/admin-console/subscription/quota-table.ts index 71cfa32a7..13f9d5ed6 100644 --- a/packages/phrases/src/locales/ru/translation/admin-console/subscription/quota-table.ts +++ b/packages/phrases/src/locales/ru/translation/admin-console/subscription/quota-table.ts @@ -81,18 +81,20 @@ const quota_table = { paid_token_limit_tip: 'Бесплатно для выданных токенов: {{value}} млн. Мы можем начислить плату, если вы превысите {{value}} млн. токенов, когда мы окончательно установим цены.', paid_quota_limit_tip: - 'Мы можем начислить плату за функции, выходящие за пределы вашей квоты, как дополнительные услуги, когда мы окончательно установим цены.', - beta_feature_tip: - 'Бесплатно во время бета-тестирования. Мы начнем взимать плату, как только установим цены на дополнительные услуги.', - usage_based_beta_feature_tip: - 'Бесплатно во время бета-тестирования. Мы начнем взимать плату, как только установим цены на использование по организации.', - beta: 'Бета-тестирование', - add_on_beta: 'Дополнение (бета-тестирование)', + 'Logto добавит плату за функции, выходящие за пределы вашего лимита квоты. Вы можете использовать его бесплатно до начала взимания платы, примерно с 2 квартала 2024 года.', + paid_add_on_feature_tip: + 'Это дополнительная функция. Вы можете использовать ее бесплатно до начала взимания платы, примерно с 2 квартала 2024 года.', million: '{{value, number}} миллионов', mau_tip: 'MAU (месячно активные пользователи) означает количество уникальных пользователей, которые обменялись хотя бы одним токеном с Logto за месяц расчета.', tokens_tip: 'Все виды токенов, выпущенных Logto, включая токены доступа, токены обновления и т. д.', + included: 'включено{{value, number}}', + included_mao: '{{value, number}} MAO включено', + extra_quota_price: 'Затем ${{value, number}} в месяц / за каждый после', + per_month_each: '${{value, number}} в месяц / за каждый', + extra_mao_price: 'Затем ${{value, number}} за MAO', + per_month: '${{value, number}} в месяц', }; export default Object.freeze(quota_table); diff --git a/packages/phrases/src/locales/tr-tr/translation/admin-console/subscription/quota-table.ts b/packages/phrases/src/locales/tr-tr/translation/admin-console/subscription/quota-table.ts index ddd60e670..dfec3f2e5 100644 --- a/packages/phrases/src/locales/tr-tr/translation/admin-console/subscription/quota-table.ts +++ b/packages/phrases/src/locales/tr-tr/translation/admin-console/subscription/quota-table.ts @@ -81,18 +81,20 @@ const quota_table = { paid_token_limit_tip: 'Free for {{value}}M token issued. We may add charges if you go beyond {{value}}M tokens once we finalize the prices.', paid_quota_limit_tip: - 'We may add charges for features that go beyond your quota limit as add-ons once we finalize the prices.', - beta_feature_tip: - 'Free to use during the beta phase. We will begin charging once we finalize the add-on pricing.', - usage_based_beta_feature_tip: - 'Free to use during the beta phase. We will begin charging once we finalize the org usage-based pricing.', - beta: 'Beta', - add_on_beta: 'Ek hizmet (Beta)', + "Logto, kota limitinizi aşan özellikler için ücretlendirme ekleyecektir. Şarjımıza başlamadan önce, yaklaşık olarak 2024 Q2'ye kadar ücretsiz olarak kullanabilirsiniz.", + paid_add_on_feature_tip: + "Bu bir ek özelliktir. Şarjımıza başlamadan önce, yaklaşık olarak 2024 Q2'ye kadar ücretsiz olarak kullanabilirsiniz.", million: '{{value, number}} milyon', mau_tip: 'MAU (aylık aktif kullanıcı) Logto ile en az bir token değiştiren benzersiz kullanıcı sayısını ifade eder.', tokens_tip: 'Logto tarafından ihraç edilen erişim tokeni, yenileme tokeni vb. dahil olmak üzere tüm token türleri.', + included: '{{value, number}} dahil', + included_mao: '{{value, number}} MAO dahil', + extra_quota_price: 'Sonra aylık ${{value, number}} / sonrasında her biri', + per_month_each: 'Aylık ${{value, number}} / her biri', + extra_mao_price: 'Sonra MAO başına ${{value, number}}', + per_month: 'Aylık ${{value, number}}', }; export default Object.freeze(quota_table); diff --git a/packages/phrases/src/locales/zh-cn/translation/admin-console/subscription/quota-table.ts b/packages/phrases/src/locales/zh-cn/translation/admin-console/subscription/quota-table.ts index 65adec6c0..1d690d8f1 100644 --- a/packages/phrases/src/locales/zh-cn/translation/admin-console/subscription/quota-table.ts +++ b/packages/phrases/src/locales/zh-cn/translation/admin-console/subscription/quota-table.ts @@ -80,15 +80,19 @@ const quota_table = { free_token_limit_tip: '免费发行{{value}}M令牌。', paid_token_limit_tip: '免费发行{{value}}M令牌。我们可能会在定价确定后,如果您的令牌超过{{value}}M,则会加收费用。', - paid_quota_limit_tip: '一旦我们确定价格,我们可能会对超出配额限制的功能添加额外费用。', - beta_feature_tip: '在测试阶段免费使用。一旦我们确定附加功能的定价,我们将开始收费。', - usage_based_beta_feature_tip: - '在测试阶段免费使用。一旦我们确定基于组织使用情况的定价,我们将开始收费。', - beta: '测试版', - add_on_beta: '附加功能(测试版)', + paid_quota_limit_tip: + 'Logto将为超出配额限制的功能添加费用。在我们从2024年第二季度开始收费之前,您可以免费使用它。', + paid_add_on_feature_tip: + '这是一个附加功能。在我们从2024年第二季度开始收费之前,您可以免费使用它。', million: '{{value, number}} 百万', mau_tip: 'MAU(月活跃用户)表示在一个计费月内与 Logto 交换过至少一个令牌的独立用户数量。', tokens_tip: 'Logto 发行的所有类型令牌,包括访问令牌、刷新令牌等。', + included: '已包含{{value, number}}', + included_mao: '已包含 {{value, number}} MAO', + extra_quota_price: '然后每月 ${{value, number}} / 每个之后', + per_month_each: '每月 ${{value, number}} / 每个', + extra_mao_price: '然后每 MAO ${{value, number}}', + per_month: '每月 ${{value, number}}', }; export default Object.freeze(quota_table); diff --git a/packages/phrases/src/locales/zh-hk/translation/admin-console/subscription/quota-table.ts b/packages/phrases/src/locales/zh-hk/translation/admin-console/subscription/quota-table.ts index 4880d60ca..0134dd2ef 100644 --- a/packages/phrases/src/locales/zh-hk/translation/admin-console/subscription/quota-table.ts +++ b/packages/phrases/src/locales/zh-hk/translation/admin-console/subscription/quota-table.ts @@ -80,15 +80,19 @@ const quota_table = { free_token_limit_tip: '免費發行 {{value}}M 個令牌。', paid_token_limit_tip: '免費發行 {{value}}M 個令牌。一旦我們確定價格,如果您超出{{value}}M個令牌,我們可能會加收費用。', - paid_quota_limit_tip: '一旦我們確定價格,我們可能會以附加功能的形式為超出配額限制的功能收費。', - beta_feature_tip: '在測試版階段免費使用。我們確定附加功能的價格後將開始收費。', - usage_based_beta_feature_tip: - '在測試版階段免費使用。我們確定組織基於使用情況的價格後將開始收費。', - beta: '測試版', - add_on_beta: '附加功能(測試版)', + paid_quota_limit_tip: + 'Logto將為超出配額限制的功能添加費用。在我們從2024年第二季度開始收費之前,您可以免費使用它。', + paid_add_on_feature_tip: + '這是一個附加功能。在我們從2024年第二季度開始收費之前,您可以免費使用它。', million: '{{value, number}} 百萬', mau_tip: 'MAU(月活躍用戶)表示在一個結算月內與 Logto 交換過至少一個令牌的獨立用戶數量。', tokens_tip: 'Logto 發行的所有類型令牌,包括訪問令牌、刷新令牌等。', + included: '已包含 {{value, number}}', + included_mao: '已包含 {{value, number}} MAO', + extra_quota_price: '然後每月 ${{value, number}} / 每個之後', + per_month_each: '每月 ${{value, number}} / 每個', + extra_mao_price: '然後每 MAO ${{value, number}}', + per_month: '每月 ${{value, number}}', }; export default Object.freeze(quota_table); diff --git a/packages/phrases/src/locales/zh-tw/translation/admin-console/subscription/quota-table.ts b/packages/phrases/src/locales/zh-tw/translation/admin-console/subscription/quota-table.ts index 1e04f774a..f62f397cb 100644 --- a/packages/phrases/src/locales/zh-tw/translation/admin-console/subscription/quota-table.ts +++ b/packages/phrases/src/locales/zh-tw/translation/admin-console/subscription/quota-table.ts @@ -81,15 +81,18 @@ const quota_table = { paid_token_limit_tip: '免費發行 {{value}}M 標記。一旦我們確定價格,如果您超過 {{value}}M 標記,我們可能會加收費用。', paid_quota_limit_tip: - '一旦我們確定價格,如果您超出配額限制的功能,我們可能會將其作為附加功能收費。', - beta_feature_tip: '在測試版階段免費使用。一旦我們確定附加功能的定價,我們將開始收費。', - usage_based_beta_feature_tip: - '在測試版階段免費使用。一旦我們確定組織使用量的定價,我們將開始收費。', - beta: '測試版', - add_on_beta: '附加功能(測試版)', + 'Logto將為超出配額限制的功能添加費用。在我們從2024年第二季度開始收費之前,您可以免費使用它。', + paid_add_on_feature_tip: + '這是一個附加功能。在我們從2024年第二季度開始收費之前,您可以免費使用它。', million: '{{value, number}} 百萬', mau_tip: 'MAU(月活躍使用者)表示在一個計費月內與 Logto 交換過至少一個令牌的獨立使用者數量。', tokens_tip: 'Logto 發行的所有類型令牌,包括訪問令牌、刷新令牌等。', + included: '已包含{{value, number}}', + included_mao: '已包含 {{value, number}} MAO', + extra_quota_price: '然後每月 ${{value, number}} / 每個之後', + per_month_each: '每月 ${{value, number}} / 每個', + extra_mao_price: '然後每 MAO ${{value, number}}', + per_month: '每月 ${{value, number}}', }; export default Object.freeze(quota_table);