0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2024-12-16 20:26:19 -05:00

refactor(console): add link to toggle tips (#2613)

This commit is contained in:
Xiao Yijun 2022-12-09 12:01:44 +08:00 committed by GitHub
parent 07fae9a6fc
commit b3e674ced0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
28 changed files with 157 additions and 63 deletions

View file

@ -9,6 +9,7 @@ import type DangerousRaw from '../DangerousRaw';
import IconButton from '../IconButton';
import Spacer from '../Spacer';
import { ToggleTip } from '../Tip';
import type { Props as ToggleTipProps } from '../Tip/ToggleTip';
import * as styles from './index.module.scss';
export type Props = {
@ -17,7 +18,7 @@ export type Props = {
isRequired?: boolean;
className?: string;
headlineClassName?: string;
tip?: AdminConsoleKey;
tip?: ToggleTipProps['content'];
};
const FormField = ({ title, children, isRequired, className, tip, headlineClassName }: Props) => {
@ -28,7 +29,7 @@ const FormField = ({ title, children, isRequired, className, tip, headlineClassN
<div className={classNames(styles.headline, headlineClassName)}>
<div className={styles.title}>{typeof title === 'string' ? t(title) : title}</div>
{tip && (
<ToggleTip anchorClassName={styles.toggleTipButton} content={<div>{t(tip)}</div>}>
<ToggleTip anchorClassName={styles.toggleTipButton} content={tip}>
<IconButton size="small">
<Tip />
</IconButton>

View file

@ -10,6 +10,14 @@
font: var(--font-body-medium);
max-width: 300px;
a {
color: #cabeff;
&:active {
color: #cabeff;
}
}
&::after {
content: '';
display: block;

View file

@ -16,7 +16,7 @@ import {
} from '../TipBubble/utils';
import * as styles from './index.module.scss';
type Props = {
export type Props = {
children: ReactNode;
className?: string;
anchorClassName?: string;

View file

@ -1,11 +1,12 @@
import type { Resource } from '@logto/schemas';
import { useForm } from 'react-hook-form';
import { useTranslation } from 'react-i18next';
import { Trans, useTranslation } from 'react-i18next';
import Button from '@/components/Button';
import FormField from '@/components/FormField';
import ModalLayout from '@/components/ModalLayout';
import TextInput from '@/components/TextInput';
import TextLink from '@/components/TextLink';
import useApi from '@/hooks/use-api';
type FormData = {
@ -64,7 +65,21 @@ const CreateForm = ({ onClose }: Props) => {
<FormField
isRequired
title="api_resources.api_identifier"
tip="api_resources.api_identifier_tip"
tip={(closeTipHandler) => (
<Trans
components={{
a: (
<TextLink
href="https://datatracker.ietf.org/doc/html/rfc8707#section-2"
target="_blank"
onClick={closeTipHandler}
/>
),
}}
>
{t('api_resources.api_identifier_tip')}
</Trans>
)}
>
<TextInput
{...register('indicator', { required: true })}

View file

@ -2,12 +2,13 @@ import type { Application, SnakeCaseOidcConfig } from '@logto/schemas';
import { ApplicationType, UserRole } from '@logto/schemas';
import { deduplicate } from '@silverhand/essentials';
import { Controller, useFormContext } from 'react-hook-form';
import { useTranslation } from 'react-i18next';
import { Trans, useTranslation } from 'react-i18next';
import CopyToClipboard from '@/components/CopyToClipboard';
import FormCard from '@/components/FormCard';
import FormField from '@/components/FormField';
import Switch from '@/components/Switch';
import TextLink from '@/components/TextLink';
import * as styles from '../index.module.scss';
@ -28,7 +29,21 @@ const AdvancedSettings = ({ applicationType, oidcConfig }: Props) => {
>
<FormField
title="application_details.authorization_endpoint"
tip="application_details.authorization_endpoint_tip"
tip={(closeTipHandler) => (
<Trans
components={{
a: (
<TextLink
href="https://openid.net/specs/openid-connect-core-1_0.html#Authentication"
target="_blank"
onClick={closeTipHandler}
/>
),
}}
>
{t('application_details.authorization_endpoint_tip')}
</Trans>
)}
>
<CopyToClipboard
className={styles.textField}

View file

@ -1,7 +1,7 @@
import type { Application } from '@logto/schemas';
import { ApplicationType, validateRedirectUrl } from '@logto/schemas';
import { Controller, useFormContext } from 'react-hook-form';
import { useTranslation } from 'react-i18next';
import { Trans, useTranslation } from 'react-i18next';
import CopyToClipboard from '@/components/CopyToClipboard';
import FormCard from '@/components/FormCard';
@ -10,6 +10,7 @@ import type { MultiTextInputRule } from '@/components/MultiTextInput/types';
import { createValidatorForRhf, convertRhfErrorMessage } from '@/components/MultiTextInput/utils';
import MultiTextInputField from '@/components/MultiTextInputField';
import TextInput from '@/components/TextInput';
import TextLink from '@/components/TextLink';
import { uriOriginValidator } from '@/utilities/validator';
import * as styles from '../index.module.scss';
@ -55,7 +56,24 @@ const Settings = ({ data }: Props) => {
placeholder={t('application_details.description_placeholder')}
/>
</FormField>
<FormField title="application_details.application_id">
<FormField
title="application_details.application_id"
tip={(closeTipHandler) => (
<Trans
components={{
a: (
<TextLink
href="https://openid.net/specs/openid-connect-core-1_0.html"
target="_blank"
onClick={closeTipHandler}
/>
),
}}
>
{t('application_details.application_id_tip')}
</Trans>
)}
>
<CopyToClipboard value={id} variant="border" className={styles.textField} />
</FormField>
{[ApplicationType.Traditional, ApplicationType.MachineToMachine].includes(
@ -85,7 +103,21 @@ const Settings = ({ data }: Props) => {
<MultiTextInputField
isRequired
title="application_details.redirect_uris"
tip="application_details.redirect_uri_tip"
tip={(closeTipHandler) => (
<Trans
components={{
a: (
<TextLink
href="https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest"
target="_blank"
onClick={closeTipHandler}
/>
),
}}
>
{t('application_details.redirect_uri_tip')}
</Trans>
)}
value={value}
error={convertRhfErrorMessage(error?.message)}
placeholder={
@ -109,7 +141,7 @@ const Settings = ({ data }: Props) => {
render={({ field: { onChange, value }, fieldState: { error } }) => (
<MultiTextInputField
title="application_details.post_sign_out_redirect_uris"
tip="application_details.post_sign_out_redirect_uri_tip"
tip={t('application_details.post_sign_out_redirect_uri_tip')}
value={value}
error={convertRhfErrorMessage(error?.message)}
placeholder={t('application_details.post_sign_out_redirect_uri_placeholder')}
@ -134,7 +166,21 @@ const Settings = ({ data }: Props) => {
render={({ field: { onChange, value }, fieldState: { error } }) => (
<MultiTextInputField
title="application_details.cors_allowed_origins"
tip="application_details.cors_allowed_origins_tip"
tip={(closeTipHandler) => (
<Trans
components={{
a: (
<TextLink
href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS"
target="_blank"
onClick={closeTipHandler}
/>
),
}}
>
{t('application_details.cors_allowed_origins_tip')}
</Trans>
)}
value={value}
error={convertRhfErrorMessage(error?.message)}
placeholder={t('application_details.cors_allowed_origins_placeholder')}

View file

@ -15,12 +15,4 @@
.content {
font: var(--font-body-medium);
.link {
color: #cabeff;
&:active {
color: #cabeff;
}
}
}

View file

@ -25,7 +25,6 @@ const ConnectorStatusField = () => {
<TextLink
to="/sign-in-experience/sign-up-and-sign-in"
target="_blank"
className={styles.link}
onClick={closeTipHandler}
/>
),

View file

@ -9,6 +9,7 @@ import Tip from '@/assets/images/tip.svg';
import Card from '@/components/Card';
import IconButton from '@/components/IconButton';
import { ToggleTip } from '@/components/Tip';
import type { Props as ToggleTipProps } from '@/components/Tip/ToggleTip';
import { formatNumberWithComma } from '@/utilities/number';
import * as styles from './Block.module.scss';
@ -17,7 +18,7 @@ type Props = {
count: number;
delta?: number;
title: AdminConsoleKey;
tip?: AdminConsoleKey;
tip?: ToggleTipProps['content'];
variant?: 'bordered' | 'default' | 'plain';
};
@ -31,7 +32,7 @@ const Block = ({ variant = 'default', count, delta, title, tip }: Props) => {
<div className={styles.title}>
{t(title)}
{tip && (
<ToggleTip anchorClassName={styles.toggleTipButton} content={<div>{t(tip)}</div>}>
<ToggleTip anchorClassName={styles.toggleTipButton} content={tip}>
<IconButton size="small">
<Tip />
</IconButton>

View file

@ -69,18 +69,18 @@ const Dashboard = () => {
<div className={styles.blocks}>
<Block
title="dashboard.total_users"
tip="dashboard.total_users_tip"
tip={t('dashboard.total_users_tip')}
count={totalData.totalUserCount}
/>
<Block
title="dashboard.new_users_today"
tip="dashboard.new_users_today_tip"
tip={t('dashboard.new_users_today_tip')}
count={newData.today.count}
delta={newData.today.delta}
/>
<Block
title="dashboard.new_users_7_days"
tip="dashboard.new_users_7_days_tip"
tip={t('dashboard.new_users_7_days_tip')}
count={newData.last7Days.count}
delta={newData.last7Days.delta}
/>
@ -88,7 +88,7 @@ const Dashboard = () => {
<Card className={styles.activeCard}>
<Block
title="dashboard.daily_active_users"
tip="dashboard.daily_active_users_tip"
tip={t('dashboard.daily_active_users_tip')}
count={activeData.dau.count}
delta={activeData.dau.delta}
variant="plain"
@ -130,14 +130,14 @@ const Dashboard = () => {
<div className={styles.blocks}>
<Block
title="dashboard.weekly_active_users"
tip="dashboard.weekly_active_users_tip"
tip={t('dashboard.weekly_active_users_tip')}
count={activeData.wau.count}
delta={activeData.wau.delta}
variant="bordered"
/>
<Block
title="dashboard.monthly_active_users"
tip="dashboard.monthly_active_users_tip"
tip={t('dashboard.monthly_active_users_tip')}
count={activeData.mau.count}
delta={activeData.mau.delta}
variant="bordered"

View file

@ -32,7 +32,7 @@ const TermsForm = () => {
<FormField
isRequired
title="sign_in_exp.others.terms_of_use.terms_of_use"
tip="sign_in_exp.others.terms_of_use.terms_of_use_tip"
tip={t('sign_in_exp.others.terms_of_use.terms_of_use_tip')}
>
<TextInput
{...register('termsOfUse.contentUrl', {

View file

@ -138,7 +138,7 @@ const UserSettings = ({ userData, userFormData, isDeleted, onUserUpdated }: Prop
<FormField
isRequired
title="user_details.field_custom_data"
tip="user_details.field_custom_data_tip"
tip={t('user_details.field_custom_data_tip')}
>
<CodeEditor language="json" value={value} onChange={onChange} />
</FormField>

View file

@ -6,7 +6,7 @@ const api_resources = {
api_name_placeholder: 'Gib einen API Namen ein',
api_identifier: 'API Identifikator',
api_identifier_tip:
'Der eindeutige Identifikator der API Ressource muss eine absolute URI ohne Fragmentbezeichner (#) sein. Entspricht dem Ressourcen Parameter in OAuth 2.0.',
'Der eindeutige Identifikator der API Ressource muss eine absolute URI ohne Fragmentbezeichner (#) sein. Entspricht dem <a>Ressourcen Parameter</a> in OAuth 2.0.',
api_resource_created: 'Die API Ressource {{name}} wurde erfolgreich angelegt',
api_identifier_placeholder: 'https://dein-api-identifikator/',
};

View file

@ -13,15 +13,17 @@ const application_details = {
description_placeholder: 'Gib eine Beschreibung ein',
authorization_endpoint: 'Autorisierungs-Endpoint',
authorization_endpoint_tip:
'Der Endpoint, der für die Authentifizierung und Autorisierung via OpenID Connect verwendet wird.',
'Der Endpoint, der für die Authentifizierung und <a>Autorisierung</a> via OpenID Connect verwendet wird.',
application_id: 'App ID',
application_id_tip:
'The unique application identifier normally generated by Logto. It also stands for “<a>client_id</a>” in OpenID Connect.', // UNTRANSLATED
application_secret: 'App Geheimnis',
redirect_uri: 'Umleitungs-URI',
redirect_uris: 'Umleitungs-URIs',
redirect_uri_placeholder: 'https://deine.website.de/app',
redirect_uri_placeholder_native: 'io.logto://callback',
redirect_uri_tip:
'URI zu der der Benutzer nach der Anmeldung (egal ob erfolgreich oder nicht) weitergeleitet wird. See OpenID Connect AuthRequest for more info.',
'URI zu der der Benutzer nach der Anmeldung (egal ob erfolgreich oder nicht) weitergeleitet wird. See OpenID Connect <a>AuthRequest</a> for more info.',
post_sign_out_redirect_uri: 'Post Sign-out Umleitungs-URI',
post_sign_out_redirect_uris: 'Post Sign-out Umleitungs-URIs',
post_sign_out_redirect_uri_placeholder: 'https://deine.website.de/home',
@ -30,7 +32,7 @@ const application_details = {
cors_allowed_origins: 'CORS allowed origins',
cors_allowed_origins_placeholder: 'https://your.website.de',
cors_allowed_origins_tip:
'Es sind standardmäßig alle Umleitungs-URI Origins erlaubt. Normalerweise ist dieses Feld nicht erforderlich.',
'Es sind standardmäßig alle Umleitungs-URI Origins erlaubt. Normalerweise ist dieses Feld nicht erforderlich. See the <a>MDN doc</a> for detailed info.', // UNTRANSLATED
add_another: 'Weitere hinzufügen',
id_token_expiration: 'ID Token Ablaufzeit',
refresh_token_expiration: 'Refresh Token Ablaufzeit',

View file

@ -6,7 +6,7 @@ const api_resources = {
api_name_placeholder: 'Enter your API name',
api_identifier: 'API identifier',
api_identifier_tip:
'The unique identifier to the API resource. It must be an absolute URI and has no fragment (#) component. Equals to the resource parameter in OAuth 2.0.',
'The unique identifier to the API resource. It must be an absolute URI and has no fragment (#) component. Equals to the <a>resource parameter</a> in OAuth 2.0.',
api_resource_created: 'The API resource {{name}} has been successfully created',
api_identifier_placeholder: 'https://your-api-identifier/',
};

View file

@ -13,15 +13,17 @@ const application_details = {
description_placeholder: 'Enter your application description',
authorization_endpoint: 'Authorization endpoint',
authorization_endpoint_tip:
"The endpoint to perform authentication and authorization. It's used for OpenID Connect Authentication.",
"The endpoint to perform authentication and authorization. It's used for OpenID Connect <a>Authentication</a>.",
application_id: 'App ID',
application_id_tip:
'The unique application identifier normally generated by Logto. It also stands for “<a>client_id</a>” in OpenID Connect.',
application_secret: 'App Secret',
redirect_uri: 'Redirect URI',
redirect_uris: 'Redirect URIs',
redirect_uri_placeholder: 'https://your.website.com/app',
redirect_uri_placeholder_native: 'io.logto://callback',
redirect_uri_tip:
'The URI redirects after a user sign-in (whether successful or not). See OpenID Connect AuthRequest for more info.',
'The URI redirects after a user sign-in (whether successful or not). See OpenID Connect <a>AuthRequest</a> for more info.',
post_sign_out_redirect_uri: 'Post Sign-out Redirect URI',
post_sign_out_redirect_uris: 'Post Sign-out Redirect URIs',
post_sign_out_redirect_uri_placeholder: 'https://your.website.com/home',
@ -30,7 +32,7 @@ const application_details = {
cors_allowed_origins: 'CORS allowed origins',
cors_allowed_origins_placeholder: 'https://your.website.com',
cors_allowed_origins_tip:
'By default, all the origins of Redirect URIs will be allowed. Usually no action is required for this field.',
'By default, all the origins of Redirect URIs will be allowed. Usually no action is required for this field. See the <a>MDN doc</a> for detailed info.',
add_another: 'Add Another',
id_token_expiration: 'ID Token expiration',
refresh_token_expiration: 'Refresh Token expiration',

View file

@ -6,7 +6,7 @@ const api_resources = {
api_name_placeholder: "Entrez votre nom d'API",
api_identifier: 'Identifiant API',
api_identifier_tip:
"L'identifiant unique de la ressource API. Il doit s'agir d'un URI absolu et ne doit pas comporter de fragment (#). Équivaut au paramètre de ressource dans OAuth 2.0.",
"L'identifiant unique de la ressource API. Il doit s'agir d'un URI absolu et ne doit pas comporter de fragment (#). Équivaut au <a>paramètre de ressource</> dans OAuth 2.0.",
api_resource_created: 'La ressource API {{name}} a été créée avec succès.',
api_identifier_placeholder: 'https://votre-identifiant-api/',
};

View file

@ -13,15 +13,17 @@ const application_details = {
description_placeholder: 'Entrez la description de votre application',
authorization_endpoint: 'Authorization endpoint',
authorization_endpoint_tip:
"Le point de terminaison pour effectuer l'authentification et l'autorisation. Il est utilisé pour l'authentification OpenID Connect.",
"Le point de terminaison pour effectuer l'authentification et l'autorisation. Il est utilisé pour <a>l'authentification</a> OpenID Connect.",
application_id: 'App ID',
application_id_tip:
'The unique application identifier normally generated by Logto. It also stands for “<a>client_id</a>” in OpenID Connect.', // UNTRANSLATED
application_secret: 'App Secret',
redirect_uri: 'Redirect URI',
redirect_uris: 'Redirect URIs',
redirect_uri_placeholder: 'https://votre.site.com/app',
redirect_uri_placeholder_native: 'io.logto://callback',
redirect_uri_tip:
"L'URI de redirection après la connexion d'un utilisateur (qu'elle soit réussie ou non). Voir OpenID Connect AuthRequest pour plus d'informations.",
"L'URI de redirection après la connexion d'un utilisateur (qu'elle soit réussie ou non). Voir OpenID Connect <a>AuthRequest</a> pour plus d'informations.",
post_sign_out_redirect_uri: 'URI de redirection post-signature',
post_sign_out_redirect_uris: 'URI de redirection après la signature',
post_sign_out_redirect_uri_placeholder: 'https://votre.site.com/home',
@ -30,7 +32,7 @@ const application_details = {
cors_allowed_origins: 'Origines CORS autorisées',
cors_allowed_origins_placeholder: 'https://votre.site.com',
cors_allowed_origins_tip:
"Par défaut, toutes les origines des URI de redirection seront autorisées. En général, aucune action n'est requise pour ce champ.",
"Par défaut, toutes les origines des URI de redirection seront autorisées. En général, aucune action n'est requise pour ce champ. See the <a>MDN doc</a> for detailed info.", // UNTRANSLATED
add_another: 'Ajouter un autre',
id_token_expiration: "Expiration du jeton d'identification",
refresh_token_expiration: "Rafraîchir l'expiration du jeton",

View file

@ -6,7 +6,7 @@ const api_resources = {
api_name_placeholder: 'API 이름 입력',
api_identifier: 'API 식별자',
api_identifier_tip:
'API 리소스에 대한 유일한 식별자예요. 반드시, 절대적인 URI 이여야 하며, 프래그먼트 (#) 요소가 없어야해요. OAuth 2.0의 리소스 파라미터와 동일해요.',
'The unique identifier to the API resource. It must be an absolute URI and has no fragment (#) component. Equals to the <a>resource parameter</a> in OAuth 2.0.', // UNTRANSLATED
api_resource_created: '{{name}} API 리소스가 성공적으로 생성되었어요.',
api_identifier_placeholder: 'https://your-api-identifier/',
};

View file

@ -13,15 +13,17 @@ const application_details = {
description_placeholder: '어플리케이션 설명을 적어주세요.',
authorization_endpoint: '인증 End-Point',
authorization_endpoint_tip:
'인증 및 권한 부여를 진행할 End-Point예요. OpenID Connect 인증에서 사용되던 값 이에요.',
"The endpoint to perform authentication and authorization. It's used for OpenID Connect <a>Authentication</a>.", // UNTRANSLATED
application_id: 'App ID',
application_id_tip:
'The unique application identifier normally generated by Logto. It also stands for “<a>client_id</a>” in OpenID Connect.', // UNTRANSLATED
application_secret: 'App Secret',
redirect_uri: 'Redirect URI',
redirect_uris: 'Redirect URIs',
redirect_uri_placeholder: 'https://your.website.com/app',
redirect_uri_placeholder_native: 'io.logto://callback',
redirect_uri_tip:
'사용자 로그인 이후, 리다이렉트 될 URI 경로예요. 더욱 자세한 정보는 OpenID Connect AuthRequest를 참고해주세요.',
'사용자 로그인 이후, 리다이렉트 될 URI 경로예요. 더욱 자세한 정보는 OpenID Connect <a>AuthRequest</a>를 참고해주세요.',
post_sign_out_redirect_uri: '로그아웃 이후 Redirect URI',
post_sign_out_redirect_uris: '로그아웃 이후 Redirect URIs',
post_sign_out_redirect_uri_placeholder: 'https://your.website.com/home',
@ -30,7 +32,7 @@ const application_details = {
cors_allowed_origins: 'CORS Allow Origins',
cors_allowed_origins_placeholder: 'https://your.website.com',
cors_allowed_origins_tip:
'기본으로 모든 리다이렉트의 오리진들은 허용되요. 대체적으로 이 값을 건들 필요는 없어요.',
'기본으로 모든 리다이렉트의 오리진들은 허용되요. 대체적으로 이 값을 건들 필요는 없어요. See the <a>MDN doc</a> for detailed info.', // UNTRANSLATED
add_another: '새로 추가',
id_token_expiration: 'ID 토큰 만료',
refresh_token_expiration: 'Refresh 토큰 만료',

View file

@ -6,7 +6,7 @@ const api_resources = {
api_name_placeholder: 'Digite o nome da sua API',
api_identifier: 'Identificador de API',
api_identifier_tip:
'O identificador exclusivo para o recurso da API. Deve ser um URI absoluto e não tem nenhum componente de fragmento (#). Igual ao parâmetro de recurso em OAuth 2.0.',
'O identificador exclusivo para o recurso da API. Deve ser um URI absoluto e não tem nenhum componente de fragmento (#). Igual ao <a>parâmetro de recurso</a> em OAuth 2.0.',
api_resource_created: 'O recurso API {{name}} foi criado com sucesso',
api_identifier_placeholder: 'https://your-api-identifier/',
};

View file

@ -13,15 +13,17 @@ const application_details = {
description_placeholder: 'Digite a descrição do seu aplicativo',
authorization_endpoint: 'Endpoint de autorização',
authorization_endpoint_tip:
'O endpoint para executar autenticação e autorização. É usado para autenticação OpenID Connect.',
'O endpoint para executar autenticação e autorização. É usado para <a>autenticação</a> OpenID Connect.',
application_id: 'ID do aplicativo',
application_id_tip:
'The unique application identifier normally generated by Logto. It also stands for “<a>client_id</a>” in OpenID Connect.', // UNTRANSLATED
application_secret: 'Secret do aplicativo',
redirect_uri: 'URI de redirecionamento',
redirect_uris: 'URIs de redirecionamento',
redirect_uri_placeholder: 'https://your.website.com/app',
redirect_uri_placeholder_native: 'io.logto://callback',
redirect_uri_tip:
'O URI é redirecionado após o login do usuário (seja bem-sucedido ou não). Consulte OpenID Connect AuthRequest para obter mais informações.',
'O URI é redirecionado após o login do usuário (seja bem-sucedido ou não). Consulte OpenID Connect <a>AuthRequest</a> para obter mais informações.',
post_sign_out_redirect_uri: 'URI de redirecionamento Post Sign-out',
post_sign_out_redirect_uris: 'URIs de redirecionamento Post Sign-out',
post_sign_out_redirect_uri_placeholder: 'https://your.website.com/home',
@ -30,7 +32,7 @@ const application_details = {
cors_allowed_origins: 'Origens permitidas pelo CORS',
cors_allowed_origins_placeholder: 'https://your.website.com',
cors_allowed_origins_tip:
'Por padrão, todas as origens de URIs de redirecionamento serão permitidas. Normalmente, nenhuma ação é necessária para este campo.',
'Por padrão, todas as origens de URIs de redirecionamento serão permitidas. Normalmente, nenhuma ação é necessária para este campo. See the <a>MDN doc</a> for detailed info.', // UNTRANSLATED
add_another: 'Adicionar outro',
id_token_expiration: 'Expiração do token de ID',
refresh_token_expiration: 'Expiração Refresh Token',

View file

@ -6,7 +6,7 @@ const api_resources = {
api_name_placeholder: 'Introduza o nome da sua API',
api_identifier: 'identificador da API',
api_identifier_tip:
'O identificador exclusivo para o recurso API. Deve ser um URI absoluto e não tem componente de fragmento (#). Igual ao resource parameter no OAuth 2.0.',
'O identificador exclusivo para o recurso API. Deve ser um URI absoluto e não tem componente de fragmento (#). Igual ao <a>resource parameter</a> no OAuth 2.0.',
api_resource_created: 'O recurso API {{name}} foi criado com sucesso',
api_identifier_placeholder: 'https://your-api-identifier/',
};

View file

@ -13,15 +13,17 @@ const application_details = {
description_placeholder: 'Insira a descrição da sua aplicação',
authorization_endpoint: 'Endpoint de autorização',
authorization_endpoint_tip:
'O endpoint para realizar autenticação e autorização. É usado para autenticação OpenID Connect.',
'O endpoint para realizar autenticação e autorização. É usado para <a>autenticação</a> OpenID Connect.',
application_id: 'ID da aplicação',
application_id_tip:
'The unique application identifier normally generated by Logto. It also stands for “<a>client_id</a>” in OpenID Connect.', // UNTRANSLATED
application_secret: 'Segredo da aplicação',
redirect_uri: 'URI de redirecionamento',
redirect_uris: 'URIs de redirecionamento',
redirect_uri_placeholder: 'https://your.website.com/app',
redirect_uri_placeholder_native: 'io.logto://callback',
redirect_uri_tip:
'O URI redireciona após o login de um utilizador (com êxito ou não). Consulte OpenID Connect AuthRequest para obter mais informações.',
'O URI redireciona após o login de um utilizador (com êxito ou não). Consulte OpenID Connect <a>AuthRequest</a> para obter mais informações.',
post_sign_out_redirect_uri: 'URI de redirecionamento pós-logout',
post_sign_out_redirect_uris: 'URIs de redirecionamento pós-logout',
post_sign_out_redirect_uri_placeholder: 'https://your.website.com/home',
@ -30,7 +32,7 @@ const application_details = {
cors_allowed_origins: 'origens permitidas CORS',
cors_allowed_origins_placeholder: 'https://your.website.com',
cors_allowed_origins_tip:
'Por padrão, todas as origens de redirecionamento serão permitidas. Recomenda-se restringir isto.',
'Por padrão, todas as origens de redirecionamento serão permitidas. Recomenda-se restringir isto. See the <a>MDN doc</a> for detailed info.', // UNTRANSLATED
add_another: 'Adicionar outro',
id_token_expiration: 'Expiração do token de ID',
refresh_token_expiration: 'Expiração do token de atualização',

View file

@ -6,7 +6,7 @@ const api_resources = {
api_name_placeholder: 'API adını giriniz',
api_identifier: 'API belirteci',
api_identifier_tip:
'Api kaynağına özgün belirteç. Mutlak URI olmalı ve parça bileşeni (#) içermemeli. OAuth 2.0deki kaynak parametresine eşittir.',
'Api kaynağına özgün belirteç. Mutlak URI olmalı ve parça bileşeni (#) içermemeli. OAuth 2.0deki <a>kaynak parametresine</a> eşittir.',
api_resource_created: '{{name}} API kaynağı başarıyla oluşturuldu',
api_identifier_placeholder: 'https://your-api-identifier/',
};

View file

@ -13,15 +13,17 @@ const application_details = {
description_placeholder: 'Uygulama açıklamasını giriniz',
authorization_endpoint: 'Yetkilendirme bitiş noktası',
authorization_endpoint_tip:
'Kimlik doğrulama ve yetkilendirme gerçekleştirmek için bitiş noktası. OpenID Connect Authentication için kullanılır.',
'Kimlik doğrulama ve yetkilendirme gerçekleştirmek için bitiş noktası. OpenID Connect <a>Authentication</a> için kullanılır.',
application_id: 'Uygulama IDsi',
application_id_tip:
'The unique application identifier normally generated by Logto. It also stands for “<a>client_id</a>” in OpenID Connect.', // UNTRANSLATED
application_secret: 'Uygulama Sırrı',
redirect_uri: 'Yönlendirme URIı',
redirect_uris: 'Yönlendirme URIları',
redirect_uri_placeholder: 'https://your.website.com/app',
redirect_uri_placeholder_native: 'io.logto://callback',
redirect_uri_tip:
'URI kullanıcı oturum açma işlemiden sonra yönlendirir (Başarılı olsa da olmasa da). Detaylı bilgi için OpenID Connect AuthRequesta bakınız.',
'URI kullanıcı oturum açma işlemiden sonra yönlendirir (Başarılı olsa da olmasa da). Detaylı bilgi için OpenID Connect <a>AuthRequesta</a> bakınız.',
post_sign_out_redirect_uri: 'Oturumdan Çıkış sonrası yönlendirme URIı',
post_sign_out_redirect_uris: 'Oturumdan Çıkış sonrası yönlendirme URIları',
post_sign_out_redirect_uri_placeholder: 'https://your.website.com/home',
@ -30,7 +32,7 @@ const application_details = {
cors_allowed_origins: 'CORS izinli originler',
cors_allowed_origins_placeholder: 'https://your.website.com',
cors_allowed_origins_tip:
'Varsayılan olarak, Yönlendirme URIlerinin tüm originlerine izin verilir. Genellikle bu alan için herhangi bir işlem gerekmez.',
'Varsayılan olarak, Yönlendirme URIlerinin tüm originlerine izin verilir. Genellikle bu alan için herhangi bir işlem gerekmez. See the <a>MDN doc</a> for detailed info.', // UNTRANSLATED
add_another: 'Bir tane daha ekle',
id_token_expiration: 'ID Token sona erme süresi',
refresh_token_expiration: 'Refresh Token sona erme süresi',

View file

@ -7,7 +7,7 @@ const api_resources = {
api_identifier: 'API Identifier',
api_identifier_placeholder: 'https://your-api-identifier/',
api_identifier_tip:
'对于 API 资源的唯一标识符。它必须是一个绝对 URI 并没有 fragment (#) 组件。等价于 OAuth 2.0 中的 resource parameter。',
'对于 API 资源的唯一标识符。它必须是一个绝对 URI 并没有 fragment (#) 组件。等价于 OAuth 2.0 中的 <a>resource parameter</a>。',
api_resource_created: ' API 资源 {{name}} 已成功创建!',
};

View file

@ -12,15 +12,18 @@ const application_details = {
description: '描述',
description_placeholder: '请输入应用描述',
authorization_endpoint: 'Authorization Endpoint',
authorization_endpoint_tip: '进行鉴权与授权的端点 endpoint。用于 OpenID Connect 中的鉴权流程。',
authorization_endpoint_tip:
'进行鉴权与授权的端点 endpoint。用于 OpenID Connect 中的 <a>鉴权</a> 流程。',
application_id: 'App ID',
application_id_tip:
'应用的唯一标识,通常由 Logto 生成。等价于 OpenID Connect 中的 <a>client_id</a>。',
application_secret: 'App Secret',
redirect_uri: 'Redirect URI',
redirect_uris: 'Redirect URIs',
redirect_uri_placeholder: 'https://your.website.com/app',
redirect_uri_placeholder_native: 'io.logto://callback',
redirect_uri_tip:
'在用户登录完成(不论成功与否)后重定向的目标 URI。参见 OpenID Connect AuthRequest 以了解更多。',
'在用户登录完成(不论成功与否)后重定向的目标 URI。参见 OpenID Connect <a>AuthRequest</a> 以了解更多。',
post_sign_out_redirect_uri: 'Post Sign-out Redirect URI',
post_sign_out_redirect_uris: 'Post sign out redirect URIs',
post_sign_out_redirect_uri_placeholder: 'https://your.website.com/home',
@ -29,7 +32,7 @@ const application_details = {
cors_allowed_origins: 'CORS Allowed Origins',
cors_allowed_origins_placeholder: 'https://your.website.com',
cors_allowed_origins_tip:
'所有 Redirect URI 的 origin 将默认被允许。通常不需要对此字段进行操作。',
'所有 Redirect URI 的 origin 将默认被允许。通常不需要对此字段进行操作。参见 <a>MDN 文档</a>以了解更多',
add_another: '新增',
id_token_expiration: 'ID Token 过期时间',
refresh_token_expiration: 'Refresh Token 过期时间',