diff --git a/packages/phrases-ui/src/index.ts b/packages/phrases-ui/src/index.ts index b89fd39cb..c8280bc2b 100644 --- a/packages/phrases-ui/src/index.ts +++ b/packages/phrases-ui/src/index.ts @@ -8,6 +8,7 @@ import de from './locales/de.js'; import en from './locales/en.js'; import fr from './locales/fr.js'; import ko from './locales/ko.js'; +import ptBR from './locales/pt-br.js'; import ptPT from './locales/pt-pt.js'; import trTR from './locales/tr-tr.js'; import zhCN from './locales/zh-cn.js'; @@ -17,7 +18,16 @@ export type { LocalePhrase } from './types.js'; export type I18nKey = NormalizeKeyPaths; -export const builtInLanguages = ['de', 'en', 'fr', 'ko', 'pt-PT', 'tr-TR', 'zh-CN'] as const; +export const builtInLanguages = [ + 'de', + 'en', + 'fr', + 'ko', + 'pt-PT', + 'pt-BR', + 'tr-TR', + 'zh-CN', +] as const; export const builtInLanguageOptions = builtInLanguages.map((languageTag) => ({ value: languageTag, @@ -36,6 +46,7 @@ const resource: Resource = { fr, ko, 'pt-PT': ptPT, + 'pt-BR': ptBR, 'tr-TR': trTR, 'zh-CN': zhCN, }; diff --git a/packages/phrases-ui/src/locales/pt-br.ts b/packages/phrases-ui/src/locales/pt-br.ts new file mode 100644 index 000000000..46f1df7e7 --- /dev/null +++ b/packages/phrases-ui/src/locales/pt-br.ts @@ -0,0 +1,109 @@ +import type { LocalePhrase } from '../types.js'; + +const translation = { + input: { + username: 'Nome de usuário', + password: 'Senha', + email: 'E-mail', + phone_number: 'Número de telefone', + confirm_password: 'Confirme a senha', + }, + secondary: { + sign_in_with: 'Entrar com {{methods, list(type: disjunction;)}}', + register_with: 'Criar conta com {{methods, list(type: disjunction;)}}', + social_bind_with: + 'Já tinha uma conta? Faça login no link {{methods, list(type: disjunction;)}} com sua identidade social.', + }, + action: { + sign_in: 'Entrar', + continue: 'Continuar', + create_account: 'Criar conta', + create: 'Criar', + enter_passcode: 'Digite o código de verificação', + confirm: 'Confirmar', + cancel: 'Cancelar', + save_password: 'Salvar', + bind: 'Link com {{address}}', + back: 'Voltar', + nav_back: 'Voltar', + agree: 'Aceito', + got_it: 'Entendido', + sign_in_with: 'Continuar com {{name}}', + forgot_password: 'Esqueceu sua senha?', + switch_to: 'Trocar para {{method}}', + sign_in_via_passcode: 'Entrar com código de verificação', + sign_in_via_password: 'Entrar com senha', + }, + description: { + email: 'e-mail', + phone_number: 'número de telefone', + reminder: 'Lembrete', + not_found: '404 Não Encontrado', + agree_with_terms: 'Eu li e concordo com os ', + agree_with_terms_modal: 'Para continuar, por favor, concorde com os .', + terms_of_use: 'Termos de uso', + create_account: 'Criar conta', + or: 'ou', + enter_passcode: 'O código de verificação foi enviado para o seu {{address}} {{target}}', + passcode_sent: 'O código de verificação foi reenviado', + resend_after_seconds: 'Reenviar depois {{seconds}} segundos', + resend_passcode: 'Reenviar código de verificação', + continue_with: 'Continue com', + create_account_id_exists: 'A conta com {{type}} {{value}} já existe, gostaria de entrar?', + sign_in_id_does_not_exist: + 'A conta com {{type}} {{value}} não existe, gostaria de criar uma nova conta?', + sign_in_id_does_not_exist_alert: 'A conta com {{type}} {{value}} não existe.', + create_account_id_exists_alert: 'A conta com {{type}} {{value}} já existe', + bind_account_title: 'Link da conta', + social_create_account: 'Sem conta? Você pode criar uma nova conta e link.', + social_bind_account: 'Já tinha uma conta? Faça login para vinculá-lo à sua identidade social.', + social_bind_with_existing: + 'Encontramos uma conta relacionada, você pode vinculá-la diretamente.', + reset_password: 'Redefinir senha', + reset_password_description_email: + 'Digite o endereço de e-mail associado à sua conta e enviaremos por e-mail o código de verificação para redefinir sua senha.', + reset_password_description_sms: + 'Digite o número de telefone associado à sua conta e enviaremos a você o código de verificação para redefinir sua senha.', + new_password: 'Nova senha', + set_password: 'Configurar senha', + password_changed: 'Senha alterada', + no_account: 'Ainda não tem conta? ', + have_account: 'Já tinha uma conta?', + enter_password: 'Digite a senha', + enter_password_for: 'Entre com a senha para {{method}} {{value}}', + enter_username: 'Insira nome de usuário', + enter_username_description: + 'O nome de usuário é uma alternativa para entrar. O nome de usuário deve conter apenas letras, números e sublinhados.', + link_email: 'Link e-mail', + link_phone: 'Link telefone', + link_email_or_phone: 'Link e-mail ou telefone', + link_email_description: 'Para maior segurança, vincule seu e-mail à conta.', + link_phone_description: 'Para maior segurança, vincule seu telefone à conta.', + link_email_or_phone_description: + 'Para maior segurança, vincule seu e-mail ou telefone à conta.', + continue_with_more_information: 'Para maior segurança, preencha os detalhes da conta abaixo.', + }, + error: { + username_password_mismatch: 'Usuário e senha não correspondem', + username_required: 'Nome de usuário é obrigatório', + password_required: 'Senha é obrigatório', + username_exists: 'O nome de usuário já existe', + username_should_not_start_with_number: 'O nome de usuário não deve começar com um número', + username_valid_charset: 'O nome de usuário deve conter apenas letras, números ou sublinhados.', + invalid_email: 'O e-mail é inválido', + invalid_phone: 'O número de telefone é inválido', + password_min_length: 'A senha requer um mínimo de {{min}} caracteres', + passwords_do_not_match: 'Suas senhas não correspondem. Por favor, tente novamente.', + invalid_passcode: 'O código de verificação é inválido', + invalid_connector_auth: 'A autorização é inválida', + invalid_connector_request: 'Os dados do conector são inválidos', + unknown: 'Erro desconhecido. Por favor, tente novamente mais tarde.', + invalid_session: 'Sessão não encontrada. Volte e faça login novamente.', + }, +}; + +const ptBR: LocalePhrase = Object.freeze({ + translation, +}); + +export default ptBR; diff --git a/packages/phrases/src/index.ts b/packages/phrases/src/index.ts index c6c430478..f186cd2c5 100644 --- a/packages/phrases/src/index.ts +++ b/packages/phrases/src/index.ts @@ -8,6 +8,7 @@ import de from './locales/de/index.js'; import en from './locales/en/index.js'; import fr from './locales/fr/index.js'; import ko from './locales/ko/index.js'; +import ptBR from './locales/pt-br/index.js'; import ptPT from './locales/pt-pt/index.js'; import trTR from './locales/tr-tr/index.js'; import zhCN from './locales/zh-cn/index.js'; @@ -17,7 +18,16 @@ export type { LocalPhrase } from './types.js'; export type I18nKey = NormalizeKeyPaths; -export const builtInLanguages = ['de', 'en', 'fr', 'ko', 'pt-PT', 'tr-TR', 'zh-CN'] as const; +export const builtInLanguages = [ + 'de', + 'en', + 'fr', + 'ko', + 'pt-PT', + 'pt-BR', + 'tr-TR', + 'zh-CN', +] as const; export const builtInLanguageOptions = builtInLanguages.map((languageTag) => ({ value: languageTag, @@ -48,6 +58,7 @@ const resource: Resource = { fr, ko, 'pt-PT': ptPT, + 'pt-BR': ptBR, 'tr-TR': trTR, 'zh-CN': zhCN, }; diff --git a/packages/phrases/src/locales/pt-br/errors.ts b/packages/phrases/src/locales/pt-br/errors.ts new file mode 100644 index 000000000..fc22265e5 --- /dev/null +++ b/packages/phrases/src/locales/pt-br/errors.ts @@ -0,0 +1,174 @@ +const errors = { + auth: { + authorization_header_missing: 'O cabeçalho de autorização está ausente.', + authorization_token_type_not_supported: 'O tipo de autorização não é suportado.', + unauthorized: 'Não autorizado. Verifique as credenciais e seu escopo.', + forbidden: 'Proibido. Verifique suas funções e permissões de usuário.', + expected_role_not_found: + 'Regra esperada não encontrada. Verifique suas regras e permissões de usuário.', + jwt_sub_missing: '`sub` ausente no JWT.', + require_re_authentication: 'A reautenticação é necessária para executar uma ação protegida.', + }, + guard: { + invalid_input: 'A solicitação {{type}} é inválida.', + invalid_pagination: 'O valor de paginação da solicitação é inválido.', + }, + oidc: { + aborted: 'A interação abortada pelo end-user', + invalid_scope: 'Escopo {{scope}} não é suportado.', + invalid_scope_plural: 'Escopo {{scopes}} não são suportados.', + invalid_token: 'Token inválido.', + invalid_client_metadata: 'Metadados de cliente inválidos.', + insufficient_scope: 'Escopo solicitado ausente {{scopes}} do token de acesso.', + invalid_request: 'A solicitação é inválida.', + invalid_grant: 'A solicitação de concessão é inválida.', + invalid_redirect_uri: + '`redirect_uri` não correspondeu a nenhum `redirect_uris` registrado do cliente.', + access_denied: 'Acesso negado.', + invalid_target: 'Indicador de recurso inválido.', + unsupported_grant_type: '`grant_type` não suportado.', + unsupported_response_mode: '`response_mode` não suportado.', + unsupported_response_type: '`response_type` não suportado.', + provider_error: 'Erro interno OIDC: {{message}}.', + }, + user: { + username_already_in_use: 'Este nome de usuário já está em uso.', + email_already_in_use: 'Este e-mail está associado a uma conta existente.', + phone_already_in_use: 'Este número de telefone está associado a uma conta existente.', + invalid_email: 'Endereço de e-mail inválido.', + invalid_phone: 'Número de telefone inválido.', + email_not_exist: 'O endereço de e-mail ainda não foi registrado.', + phone_not_exist: 'O número de telefone ainda não foi registrado.', + identity_not_exist: 'A conta social ainda não foi registrada.', + identity_already_in_use: 'A conta social foi associada a uma conta existente.', + invalid_role_names: 'Nomes de regra ({{roleNames}}) não são válidos.', + cannot_delete_self: 'Você não pode excluir a si mesmo.', + sign_up_method_not_enabled: 'Este método de inscrição não está ativado', + sign_in_method_not_enabled: 'Este método de login não está habilitado.', + same_password: 'A nova senha não pode ser igual à senha antiga.', + password_required_in_profile: 'Você precisa definir uma senha antes de entrar.', + new_password_required_in_profile: 'Você precisa definir uma nova senha.', + password_exists_in_profile: 'A senha já existe em seu perfil.', + username_required_in_profile: 'Você precisa definir um nome de usuário antes de entrar.', + username_exists_in_profile: 'O nome de usuário já existe em seu perfil.', + email_required_in_profile: 'Você precisa adicionar um endereço de e-mail antes de fazer login.', + email_exists_in_profile: 'Seu perfil já foi associado a um endereço de e-mail.', + phone_required_in_profile: 'Você precisa adicionar um número de telefone antes de fazer login.', + phone_exists_in_profile: 'Seu perfil já foi associado a um número de telefone.', + email_or_phone_required_in_profile: + 'Você precisa adicionar um endereço de e-mail ou número de telefone antes de fazer login.', + suspended: 'Esta conta está suspensa.', + user_not_exist: 'O usuário com {{ identity }} não existe', + missing_profile: 'Você precisa fornecer informações adicionais antes de fazer login.', + }, + password: { + unsupported_encryption_method: 'O método de criptografia {{name}} não é suportado.', + pepper_not_found: 'Password pepper não encontrada. Por favor, verifique seus envs principais.', + }, + session: { + not_found: 'Sessão não encontrada. Volte e faça login novamente.', + invalid_credentials: 'Credenciais inválidas. Verifique sua entrada.', + invalid_sign_in_method: 'O método de login atual não está disponível.', + invalid_connector_id: + 'Não foi possível encontrar o conector disponível com id {{connectorId}}.', + insufficient_info: 'Informações de login insuficientes.', + connector_id_mismatch: 'O connectorId é incompatível com o registro da sessão.', + connector_session_not_found: 'Sessão do conector não encontrada. Volte e faça login novamente.', + verification_session_not_found: + 'A verificação não foi bem-sucedida. Reinicie o fluxo de verificação e tente novamente.', + verification_expired: + 'A conexão expirou. Verifique novamente para garantir a segurança da sua conta.', + unauthorized: 'Faça login primeiro.', + unsupported_prompt_name: 'Prompt name incompatível.', + forgot_password_not_enabled: 'Esqueceu a senha não está ativado.', + verification_failed: + 'A verificação não foi bem-sucedida. Reinicie o fluxo de verificação e tente novamente.', + }, + connector: { + general: 'Ocorreu um erro inesperado no conector.{{errorDescription}}', + not_found: 'Não foi possível encontrar nenhum conector disponível para o tipo: {{type}}.', + not_enabled: 'O conector não está ativado.', + invalid_metadata: 'Os metadados do conector são inválidos.', + invalid_config_guard: 'A proteção de configuração do conector é inválida.', + unexpected_type: 'O tipo do conector é inesperado.', + invalid_request_parameters: 'A solicitação está com parâmetro(s) de entrada incorreto(s).', + insufficient_request_parameters: 'A solicitação pode perder alguns parâmetros de entrada.', + invalid_config: 'A configuração do conector é inválida.', + invalid_response: 'A resposta do conector é inválida.', + template_not_found: 'Não foi possível encontrar o modelo correto na configuração do conector.', + not_implemented: '{{method}}: ainda não foi implementado.', + social_invalid_access_token: 'O token de acesso do conector é inválido.', + invalid_auth_code: 'O código de autenticação do conector é inválido.', + social_invalid_id_token: 'O token de id do conector é inválido.', + authorization_failed: 'O processo de autorização do usuário não foi bem-sucedido.', + social_auth_code_invalid: + 'Não foi possível obter o token de acesso, verifique o código de autorização.', + more_than_one_sms: 'O número de conectores SMS é maior que 1.', + more_than_one_email: 'O número de conectores de e-mail é maior que 1.', + db_connector_type_mismatch: 'Existe um conector no banco de dados que não corresponde ao tipo.', + not_found_with_connector_id: + 'Não é possível encontrar o conector com o ID de conector padrão fornecido.', + multiple_instances_not_supported: + 'Não é possível criar várias instâncias com conector padrão escolhido.', + invalid_type_for_syncing_profile: + 'Você só pode sincronizar o perfil do usuário com conectores sociais.', + can_not_modify_target: 'O destino do conector não pode ser modificado.', + multiple_target_with_same_platform: + 'Você não pode ter vários conectores sociais com o mesmo destino e plataforma.', + }, + passcode: { + phone_email_empty: 'Telefone e e-mail estão vazios.', + not_found: 'Senha não encontrada. Por favor, envie a senha primeiro.', + phone_mismatch: 'Incompatibilidade de telefone. Solicite uma nova senha.', + email_mismatch: 'Incompatibilidade de e-mail. Solicite uma nova senha.', + code_mismatch: 'Senha inválida.', + expired: 'A senha expirou. Solicite uma nova senha.', + exceed_max_try: 'Limite de verificação de senha excedida. Solicite uma nova senha.', + }, + sign_in_experiences: { + empty_content_url_of_terms_of_use: + 'URL de conteúdo "Termos de uso" vazia. Adicione o URL do conteúdo se "Termos de uso" estiver ativado.', + empty_logo: 'Insira o URL do seu logotipo', + empty_slogan: + 'Slogan de marca vazio. Adicione um slogan de marca se um estilo de IU contendo o slogan for selecionado.', + empty_social_connectors: + 'Conectores sociais vazios. Adicione conectores sociais ativados quando o método de login social estiver ativado.', + enabled_connector_not_found: 'Conector {{type}} ativado não encontrado.', + not_one_and_only_one_primary_sign_in_method: + 'Deve haver um método de login principal. Verifique sua entrada.', + username_requires_password: + 'Deve permitir definir uma senha para o identificador de inscrição do nome de usuário.', + passwordless_requires_verify: + 'Deve ativar a verificação do identificador de inscrição de e-mail/telefone.', + miss_sign_up_identifier_in_sign_in: + 'Os métodos de login devem conter o identificador de inscrição.', + password_sign_in_must_be_enabled: + 'O login com senha deve ser ativado quando definir uma senha é necessária na inscrição.', + code_sign_in_must_be_enabled: + 'O login do código de verificação deve ser ativado quando definir uma senha não é necessária na inscrição.', + unsupported_default_language: 'Este idioma - {{language}} não é suportado no momento.', + at_least_one_authentication_factor: 'Você deve selecionar pelo menos um fator de autenticação.', + }, + localization: { + cannot_delete_default_language: + '{{languageTag}} está definido como seu idioma padrão e não pode ser excluído.', + invalid_translation_structure: + 'Esquemas de dados inválidos. Verifique sua entrada e tente novamente.', + }, + swagger: { + invalid_zod_type: 'Zod type inválido. Verifique a configuração do protetor de rota.', + not_supported_zod_type_for_params: + 'Zod type não suportado para os parâmetros. Verifique a configuração do protetor de rota.', + }, + entity: { + create_failed: 'Falha ao criar {{name}}.', + not_exists: 'O {{name}} não existe.', + not_exists_with_id: 'O {{name}} com ID `{{id}}` não existe.', + not_found: 'O recurso não existe.', + }, + log: { + invalid_type: 'O tipo de registro é inválido.', + }, +}; + +export default errors; diff --git a/packages/phrases/src/locales/pt-br/index.ts b/packages/phrases/src/locales/pt-br/index.ts new file mode 100644 index 000000000..2c087c53d --- /dev/null +++ b/packages/phrases/src/locales/pt-br/index.ts @@ -0,0 +1,10 @@ +import type { LocalPhrase } from '../../types.js'; +import errors from './errors.js'; +import translation from './translation/index.js'; + +const ptBR: LocalPhrase = Object.freeze({ + translation, + errors, +}); + +export default ptBR; diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/api-resource-details.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/api-resource-details.ts new file mode 100644 index 000000000..5c6fa4b90 --- /dev/null +++ b/packages/phrases/src/locales/pt-br/translation/admin-console/api-resource-details.ts @@ -0,0 +1,14 @@ +const api_resource_details = { + back_to_api_resources: 'Voltar para os recursos da API', + settings: 'Configurações', + settings_description: + 'Os recursos da API, também conhecidos como Indicadores de recursos, indicam os serviços ou recursos de destino a serem solicitados, geralmente uma variável de formato de URI que representa a identidade do recurso.', + token_expiration_time_in_seconds: 'Tempo de expiração do token (em segundos)', + token_expiration_time_in_seconds_placeholder: 'Digite o tempo de expiração do seu token', + delete_description: + 'Essa ação não pode ser desfeita. Isso excluirá permanentemente o recurso da API. Insira o nome do recurso de API {{name}} para confirmar.', + enter_your_api_resource_name: 'Digite o nome do recurso da API', + api_resource_deleted: 'O recurso da API {{name}} foi excluído com sucesso', +}; + +export default api_resource_details; diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/api-resources.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/api-resources.ts new file mode 100644 index 000000000..1b70d4040 --- /dev/null +++ b/packages/phrases/src/locales/pt-br/translation/admin-console/api-resources.ts @@ -0,0 +1,14 @@ +const api_resources = { + title: 'Recursos da API', + subtitle: 'Defina APIs que você pode consumir de seus aplicativos autorizados', + create: 'Criar recurso de API', + api_name: 'Nome da API', + 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.', + api_resource_created: 'O recurso API {{name}} foi criado com sucesso', + api_identifier_placeholder: 'https://your-api-identifier/', +}; + +export default api_resources; diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/application-details.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/application-details.ts new file mode 100644 index 000000000..292fe785d --- /dev/null +++ b/packages/phrases/src/locales/pt-br/translation/admin-console/application-details.ts @@ -0,0 +1,49 @@ +const application_details = { + back_to_applications: 'Voltar para Aplicativos', + check_guide: 'Visualize o guia', + settings: 'Configurações', + settings_description: + 'Os aplicativos são usados para identificar seus aplicativos no Logto para OIDC, experiência de login, logs de auditoria, etc.', + advanced_settings: 'Configurações avançadas', + advanced_settings_description: + 'As configurações avançadas incluem termos relacionados ao OIDC. Você pode conferir o Token Endpoint para obter mais informações.', + application_name: 'Nome do aplicatio', + application_name_placeholder: 'My App', + description: 'Descrição', + 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.', + application_id: 'ID do aplicativo', + 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.', + 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', + post_sign_out_redirect_uri_tip: + 'O URI é redirecionado após a saída do usuário (opcional). Pode não ter efeito prático em alguns tipos de aplicativos.', + 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.', + add_another: 'Adicionar outro', + id_token_expiration: 'Expiração do token de ID', + refresh_token_expiration: 'Expiração Refresh Token', + token_endpoint: 'Token Endpoint', + user_info_endpoint: 'Userinfo endpoint', + enable_admin_access: 'Ativar acesso de administrador', + enable_admin_access_label: + 'Ative ou desative o acesso à API de gerenciamento. Uma vez ativado, você pode usar tokens de acesso para chamar a API de gerenciamento em nome deste aplicativo.', + delete_description: + 'Essa ação não pode ser desfeita. Isso excluirá permanentemente o aplicativo. Insira o nome do aplicativo {{name}} para confirmar.', + enter_your_application_name: 'Digite o nome do seu aplicativo', + application_deleted: 'O aplicativo {{name}} foi excluído com sucesso', + redirect_uri_required: 'Você deve inserir pelo menos um URI de redirecionamento', +}; + +export default application_details; diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/applications.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/applications.ts new file mode 100644 index 000000000..90c1c3b29 --- /dev/null +++ b/packages/phrases/src/locales/pt-br/translation/admin-console/applications.ts @@ -0,0 +1,50 @@ +const applications = { + title: 'Aplicativos', + subtitle: + 'Configure um aplicativo móvel, single page ou tradicional para usar o Logto para autenticação', + create: 'Criar aplicativo', + application_name: 'Nome do Aplicativo', + application_name_placeholder: 'Meu aplicativo', + application_description: 'Descrição do aplicativo', + application_description_placeholder: 'Digite a descrição do seu aplicativo', + select_application_type: 'Selecione um tipo de aplicativo', + no_application_type_selected: 'Você ainda não selecionou nenhum tipo de aplicativo', + application_created: + 'O aplicativo {{name}} foi criado com sucesso! \nAgora conclua as configurações do aplicativo.', + app_id: 'ID do aplicativo', + type: { + native: { + title: 'Native App', + subtitle: 'Um aplicativo executado em um ambiente nativo', + description: 'Ex: iOS app, Android app', + }, + spa: { + title: 'Single Page App', + subtitle: + 'Um aplicativo que é executado em um navegador da Web e atualiza dinamicamente os dados no local', + description: 'Ex: React DOM app, Vue app', + }, + traditional: { + title: 'Traditional Web', + subtitle: 'Um aplicativo que renderiza e atualiza páginas apenas pelo servidor da web', + description: 'Ex: Next.js, PHP', + }, + machine_to_machine: { + title: 'Machine to Machine', + subtitle: 'Um aplicativo (geralmente um serviço) que fala diretamente com os recursos', + description: 'Ex: Backend service', + }, + }, + guide: { + get_sample_file: 'Obter amostra', + header_description: + 'Siga um guia passo a passo para integrar seu aplicativo ou clique no botão direito para obter nosso projeto de amostra', + title: 'O aplicativo foi criado com sucesso', + subtitle: + 'Agora siga as etapas abaixo para concluir as configurações do aplicativo. Selecione o tipo de SDK para continuar.', + description_by_sdk: + 'Este guia de início rápido demonstra como integrar o Logto ao aplicativo {{sdk}}', + }, +}; + +export default applications; diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/connector-details.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/connector-details.ts new file mode 100644 index 000000000..67b0f408d --- /dev/null +++ b/packages/phrases/src/locales/pt-br/translation/admin-console/connector-details.ts @@ -0,0 +1,28 @@ +const connector_details = { + back_to_connectors: 'Voltar para Conectores', + check_readme: 'Visualize o README', + settings: 'Configurações', + settings_description: + 'Os conectores desempenham um papel crítico no Logto. Com a ajuda deles, a Logto permite que os usuários finais usem o registro ou login sem senha e os recursos de login com contas sociais.', + save_error_empty_config: 'Por favor insira a configuração', + send: 'Enviar', + send_error_invalid_format: 'Campo inválido', + edit_config_label: 'Digite seu json aqui', + test_email_sender: 'Teste seu conector de e-mail', + test_sms_sender: 'Teste seu conector SMS', + test_email_placeholder: 'Insira um endereço de e-mail de teste', + test_sms_placeholder: 'Digite um número de telefone de teste', + test_message_sent: 'Mensagem de teste enviada!', + test_sender_description: + 'Você receberá uma mensagem se seu json estiver configurado corretamente', + options_change_email: 'Alterar conector de e-mail', + options_change_sms: 'Alterar conector de SMS', + connector_deleted: 'O conector foi excluído com sucesso', + type_email: 'Conector de e-mail', + type_sms: 'Conector de SMS', + type_social: 'Conector social', + in_use_deletion_description: + 'Este conector está em uso em sua experiência de entrada. Ao excluir, a experiência de login será excluída nas configurações da experiência de login.', +}; + +export default connector_details; diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/connectors.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/connectors.ts new file mode 100644 index 000000000..656ebeae9 --- /dev/null +++ b/packages/phrases/src/locales/pt-br/translation/admin-console/connectors.ts @@ -0,0 +1,63 @@ +const connectors = { + title: 'Conectores', + subtitle: 'Configure conectores para habilitar a experiência de login social e sem senha', + create: 'Adicionar conector social', + config_sie_notice: + 'Você configurou os conectores. Certifique-se de configurá-lo em {{link}}.', + config_sie_link_text: 'experiência de login', + tab_email_sms: 'Conectores de e-mail e SMS', + tab_social: 'Conectores sociais', + connector_name: 'Nome do conector', + connector_type: 'Tipo', + connector_status: 'Experiência de login', + connector_status_in_use: 'Em uso', + connector_status_not_in_use: 'Fora de uso', + not_in_use_tip: { + content: + 'Fora de uso significa que sua experiência de login não usou esse método de login. {{link}} para adicionar este método de login. ', + go_to_sie: 'Vá para a experiência de login', + }, + social_connector_eg: 'Ex: Google, Facebook, Github', + save_and_done: 'Salvar e completar', + type: { + email: 'Conector de e-mail', + sms: 'Conector de SMS', + social: 'Conector social', + }, + setup_title: { + email: 'Configurar conector de e-mail', + sms: 'Configurar conector SMS', + social: 'Adicionar conector social', + }, + guide: { + subtitle: 'Um guia passo a passo para configurar seu conector', + connector_setting: 'Configuração do conector', + name: 'Nome do conector', + name_tip: 'O nome do botão do conector será exibido como "Continue com {{Connector Name}}".', + logo: 'URL do logotipo do conector', + logo_placelholder: 'https://your.cdn.domain/logo.png', + logo_tip: 'A imagem do logotipo também será exibida no botão do conector.', + logo_dark: 'URL do logotipo do conector (modo escuro)', + logo_dark_placelholder: 'https://your.cdn.domain/logo.png', + logo_dark_tip: + 'Isso será usado ao abrir "Ativar modo escuro" na configuração da experiência de login.', + logo_dark_collapse: 'Collapse', + logo_dark_show: 'Mostrar "Logo para modo escuro"', + target: 'Destino da identidade do conector', + target_tip: 'Um identificador exclusivo para o conector.', + config: 'Digite seu JSON aqui', + sync_profile: 'Sincronizar informações de perfil do provedor social', + sync_profile_only_at_register: 'Sincronizar apenas no registro', + sync_profile_each_sign_in: 'Sempre sincronizar a cada login', + }, + platform: { + universal: 'Universal', + web: 'Web', + native: 'Native', + }, + add_multi_platform: ' suporta várias plataformas, selecione uma plataforma para continuar', + drawer_title: 'Guia do Conector', + drawer_subtitle: 'Siga as instruções para integrar seu conector', +}; + +export default connectors; diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/contact.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/contact.ts new file mode 100644 index 000000000..b6bd419c9 --- /dev/null +++ b/packages/phrases/src/locales/pt-br/translation/admin-console/contact.ts @@ -0,0 +1,22 @@ +const contact = { + title: 'Contate-nos', + description: + 'Junte-se à nossa comunidade para fornecer feedback, pedir ajuda e compartilhar suas ideias com outros desenvolvedores', + discord: { + title: 'Canal do Discord', + description: 'Junte-se ao nosso canal público para conversar com outros desenvolvedores', + button: 'Entrar', + }, + github: { + title: 'GitHub', + description: 'Crie uma issue e envie no GitHub', + button: 'Abrir', + }, + email: { + title: 'Enviar email', + description: 'Envie-nos um e-mail para mais informações e ajuda', + button: 'Enviar', + }, +}; + +export default contact; diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/dashboard.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/dashboard.ts new file mode 100644 index 000000000..a44937835 --- /dev/null +++ b/packages/phrases/src/locales/pt-br/translation/admin-console/dashboard.ts @@ -0,0 +1,22 @@ +const dashboard = { + title: 'Painel', + description: 'Obtenha uma visão geral sobre o desempenho do seu aplicativo', + total_users: 'Total de usuários', + total_users_tip: 'Total de usuários', + new_users_today: 'Novos usuários hoje', + new_users_today_tip: 'O número de novos usuários registrados em seus aplicativos hoje', + new_users_7_days: 'Novos usuários nos últimos 7 dias', + new_users_7_days_tip: + 'O número de novos usuários registrados em seus aplicativos nos últimos 7 dias', + daily_active_users: 'Usuários ativos diariamente', + daily_active_users_tip: + 'O número de tokens trocados por usuários únicos em seus aplicativos hoje', + weekly_active_users: 'Usuários ativos semanalmente', + weekly_active_users_tip: + 'O número de tokens trocados por usuários únicos em seus aplicativos nos últimos 7 dias', + monthly_active_users: 'Usuários ativos mensais', + monthly_active_users_tip: + 'O número de tokens trocados por usuários únicos em seus aplicativos nos últimos 30 dias', +}; + +export default dashboard; diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/errors.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/errors.ts new file mode 100644 index 000000000..a09d846d1 --- /dev/null +++ b/packages/phrases/src/locales/pt-br/translation/admin-console/errors.ts @@ -0,0 +1,21 @@ +const errors = { + something_went_wrong: 'Ops! Algo deu errado.', + page_not_found: 'Página não encontrada', + unknown_server_error: 'Ocorreu um erro desconhecido no servidor', + empty: 'Sem dados', + missing_total_number: 'Não foi possível encontrar Total-Number nos cabeçalhos de resposta', + invalid_uri_format: 'Formato de URI inválido', + invalid_origin_format: 'Formato de origem de URI inválido', + invalid_json_format: 'Formato JSON inválido', + invalid_error_message_format: 'O formato da mensagem de erro é inválido.', + required_field_missing: 'Por favor, insira {{field}}', + required_field_missing_plural: 'Você deve inserir pelo menos um {{field}}', + more_details: 'Mais detalhes', + username_pattern_error: + 'O nome de usuário deve conter apenas letras, números ou sublinhado e não deve começar com um número.', + password_pattern_error: 'A senha requer um mínimo de 6 caracteres', + insecure_contexts: 'Contextos inseguros (não-HTTPS) não são suportados.', + unexpected_error: 'Um erro inesperado ocorreu', +}; + +export default errors; diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/general.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/general.ts new file mode 100644 index 000000000..ff8c68750 --- /dev/null +++ b/packages/phrases/src/locales/pt-br/translation/admin-console/general.ts @@ -0,0 +1,47 @@ +const general = { + placeholder: 'Placeholder', + skip: 'Pular', + next: 'Próximo', + retry: 'Tente novamente', + done: 'Feito', + search: 'Buscar', + search_placeholder: 'Buscar', + clear_result: 'Limpar resultados', + save: 'Salvar', + save_changes: 'Salvar alterações', + saved: 'Salvou!', + discard: 'Descartar', + loading: 'Carregando...', + redirecting: 'Redirecionando...', + add: 'Adicionar', + added: 'Adicionado', + cancel: 'Cancelar', + confirm: 'Confirme', + check_out: 'Visualizar', + create: 'Criar', + set_up: 'Configurar', + customize: 'Customizar', + enable: 'Habilitar', + reminder: 'Lembrete', + delete: 'Excluir', + more_options: 'MAIS OPÇÕES', + close: 'Fechar', + copy: 'Copiar', + copying: 'Copiando', + copied: 'Copiado', + required: 'Obrigatório', + add_another: '+ Adicionar outro', + deletion_confirmation: 'Tem certeza de que deseja excluir este {{title}}?', + settings_nav: 'Configurações', + unsaved_changes_warning: + 'Você fez algumas alterações. Tem certeza de que deseja sair desta página?', + leave_page: 'Deixar página', + stay_on_page: 'Ficar na página', + type_to_search: 'Digite para pesquisar', + got_it: 'Entendi', + page_info: '{{min, number}}-{{max, number}} de {{total, number}}', + learn_more: 'Saber mais', + tab_errors: '{{count, number}} erros', +}; + +export default general; diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/get-started.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/get-started.ts new file mode 100644 index 000000000..84636ce0a --- /dev/null +++ b/packages/phrases/src/locales/pt-br/translation/admin-console/get-started.ts @@ -0,0 +1,28 @@ +const get_started = { + progress: 'Rrimeiros passos: {{completed}}/{{total}}', + progress_dropdown_title: 'Algumas coisas que você pode fazer...', + title: 'Como você deseja começar a usar o Logto?', + subtitle_part1: 'Algumas coisas que você pode fazer para utilizar rapidamente o Logto', + subtitle_part2: 'Já finalizei os passos. ', + hide_this: 'Esconder isso', + confirm_message: + 'Tem certeza de que deseja ocultar esta página? Essa ação não pode ser desfeita.', + card1_title: 'Confira a demonstração', + card1_subtitle: 'Experimente a experiência de Logto agora para ver como funciona', + card2_title: 'Crie e integre o primeiro aplicativo', + card2_subtitle: + 'Configure um aplicativo móvel, single page ou tradicional para usar o Logto para autenticação', + card3_title: 'Personalize a experiência de login', + card3_subtitle: + 'Personalize a interface do usuário de login para corresponder à sua marca e visualize em tempo real', + card4_title: 'Configurar SMS e conector de e-mail', + card4_subtitle: + 'Experimente o login sem senha com número de telefone ou e-mail para permitir uma experiência do cliente segura e sem atrito', + card5_title: 'Adicionar um conector social', + card5_subtitle: + 'Permita que seus clientes façam login em seu aplicativo com as identidades sociais em um clique', + card6_title: 'Leituras adicionais', + card6_subtitle: 'Confira nossos documentos de passo a passo baseados em cenários', +}; + +export default get_started; diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/index.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/index.ts new file mode 100644 index 000000000..4b390643b --- /dev/null +++ b/packages/phrases/src/locales/pt-br/translation/admin-console/index.ts @@ -0,0 +1,52 @@ +import api_resource_details from './api-resource-details.js'; +import api_resources from './api-resources.js'; +import application_details from './application-details.js'; +import applications from './applications.js'; +import connector_details from './connector-details.js'; +import connectors from './connectors.js'; +import contact from './contact.js'; +import dashboard from './dashboard.js'; +import errors from './errors.js'; +import general from './general.js'; +import get_started from './get-started.js'; +import log_details from './log-details.js'; +import logs from './logs.js'; +import session_expired from './session-expired.js'; +import settings from './settings.js'; +import sign_in_exp from './sign-in-exp.js'; +import tab_sections from './tab-sections.js'; +import tabs from './tabs.js'; +import user_details from './user-details.js'; +import users from './users.js'; +import welcome from './welcome.js'; + +const admin_console = { + title: 'Admin Console', + sign_out: 'Sair', + profile: 'Perfil', + admin_user: 'Administrador', + system_app: 'Sistema', + general, + errors, + tab_sections, + tabs, + applications, + application_details, + api_resources, + api_resource_details, + connectors, + connector_details, + get_started, + users, + user_details, + contact, + sign_in_exp, + settings, + dashboard, + logs, + log_details, + session_expired, + welcome, +}; + +export default admin_console; diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/log-details.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/log-details.ts new file mode 100644 index 000000000..a5f250808 --- /dev/null +++ b/packages/phrases/src/locales/pt-br/translation/admin-console/log-details.ts @@ -0,0 +1,17 @@ +const log_details = { + back_to_logs: 'Voltar aos logs', + back_to_user: 'Voltar para {{name}}', + success: 'Sucesso', + failed: 'Falhou', + event_type: 'Tipo de evento', + application: 'Aplicativo', + ip_address: 'Endereço de IP', + user: 'Usuário', + log_id: 'Log ID', + time: 'Tempo', + user_agent: 'User agent', + tab_details: 'Detalhes', + raw_data: 'Dados completos', +}; + +export default log_details; diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/logs.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/logs.ts new file mode 100644 index 000000000..8233c7d4b --- /dev/null +++ b/packages/phrases/src/locales/pt-br/translation/admin-console/logs.ts @@ -0,0 +1,12 @@ +const logs = { + title: 'Logs', + subtitle: + 'Visualize os dados de log dos eventos de autenticação feitos por seu administrador e usuários', + event: 'Evento', + user: 'Usuário', + application: 'Aplicativo', + time: 'Tempo', + filter_by: 'Filtrar por', +}; + +export default logs; diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/session-expired.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/session-expired.ts new file mode 100644 index 000000000..f4dde06b8 --- /dev/null +++ b/packages/phrases/src/locales/pt-br/translation/admin-console/session-expired.ts @@ -0,0 +1,8 @@ +const session_expired = { + title: 'Sessão expirada', + subtitle: + 'Sua sessão pode ter expirado e você foi desconectado. Clique no botão abaixo para fazer login no Admin Console novamente.', + button: 'Entrar novamente', +}; + +export default session_expired; diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/settings.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/settings.ts new file mode 100644 index 000000000..4ac2a87fa --- /dev/null +++ b/packages/phrases/src/locales/pt-br/translation/admin-console/settings.ts @@ -0,0 +1,25 @@ +const settings = { + title: 'Configurações', + description: 'Gerenciar as configurações globais', + settings: 'Configurações', + custom_domain: 'Domínio personalizado', + language: 'Idioma', + appearance: 'Aparência', + appearance_system: 'Sincronizar com o sistema', + appearance_light: 'Modo claro', + appearance_dark: 'Modo escuro', + saved: 'Salvou!', + change_password: 'Mudar senha', + change_password_description: + 'Você pode alterar a senha desta conta. Você usará o nome de usuário atual com a nova senha para entrar no Admin Console.', + change_modal_title: 'Modificar senha da conta', + change_modal_description: + 'Você usará o nome de usuário atual com a nova senha para entrar no Admin Console.', + new_password: 'Nova senha', + new_password_placeholder: 'Digite sua senha', + confirm_password: 'Confirme a senha', + confirm_password_placeholder: 'Confirme sua senha', + password_changed: 'Senha alterada!', +}; + +export default settings; diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/sign-in-exp.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/sign-in-exp.ts new file mode 100644 index 000000000..9ab43d351 --- /dev/null +++ b/packages/phrases/src/locales/pt-br/translation/admin-console/sign-in-exp.ts @@ -0,0 +1,178 @@ +const sign_in_exp = { + title: 'Experiência de login', + description: + 'Personalize a interface do usuário de login para corresponder à sua marca e visualize em tempo real', + tabs: { + branding: 'Marca', + sign_up_and_sign_in: 'Inscreva-se e faça login', + others: 'Outros', + }, + welcome: { + title: + 'Esta é a primeira vez que você define a experiência de login. Este guia irá ajudá-lo a passar por todas as configurações necessárias e começar rapidamente.', + get_started: 'Iniciar', + apply_remind: + 'Observe que a experiência de login será aplicada a todos os aplicativos nesta conta.', + got_it: 'Entendi', + }, + color: { + title: 'COR', + primary_color: 'Cor da marca', + dark_primary_color: 'Cor da marca (Escuro)', + dark_mode: 'Ativar modo escuro', + dark_mode_description: + 'Seu aplicativo terá um tema de modo escuro gerado automaticamente com base na cor da sua marca e no algoritmo Logto. Você é livre para personalizar.', + dark_mode_reset_tip: 'Recalcule a cor do modo escuro com base na cor da marca.', + reset: 'Recalcular', + }, + branding: { + title: 'ÁREA DE MARCA', + ui_style: 'Estilo', + styles: { + logo_slogan: 'Logo do aplicativo com slogan', + logo: 'Somente logotipo do aplicativo', + }, + logo_image_url: 'URL da imagem do logotipo do aplicativo', + logo_image_url_placeholder: 'https://your.cdn.domain/logo.png', + dark_logo_image_url: 'URL da imagem do logotipo do aplicativo (Escuro)', + dark_logo_image_url_placeholder: 'https://your.cdn.domain/logo-dark.png', + slogan: 'Slogan', + slogan_placeholder: 'Use sua criatividade', + }, + sign_up_and_sign_in: { + identifiers: 'Identificadores de inscrição', + identifiers_email: 'Endereço de e-mail', + identifiers_sms: 'Número de telefone', + identifiers_username: 'Nome de usuário', + identifiers_email_or_sms: 'Endereço de e-mail ou número de telefone', + identifiers_none: 'Não aplicável', + and: 'e', + or: 'ou', + sign_up: { + title: 'INSCREVER-SE', + sign_up_identifier: 'Identificador de inscrição', + identifier_description: + 'O identificador de inscrição é necessário para a criação da conta e deve ser incluído na tela de login.', + sign_up_authentication: 'Configuração de autenticação para inscrição', + authentication_description: + 'Todas as ações selecionadas serão obrigatórias para os usuários completarem o fluxo.', + set_a_password_option: 'Crie sua senha', + verify_at_sign_up_option: 'Visualize na inscrição', + social_only_creation_description: '(Isso se aplica apenas à criação de contas sociais)', + }, + sign_in: { + title: 'ENTRAR', + sign_in_identifier_and_auth: 'Configurações de identificador e autenticação para login', + description: + 'Os usuários podem entrar usando qualquer uma das opções disponíveis. Ajuste o layout arrastando e soltando as opções abaixo.', + add_sign_in_method: 'Adicionar método de login', + password_auth: 'Senha', + verification_code_auth: 'Código de verificação', + auth_swap_tip: 'Troque as opções abaixo para determinar qual aparece primeiro no fluxo.', + require_auth_factor: 'Você deve selecionar pelo menos um fator de autenticação.', + }, + social_sign_in: { + title: 'LOGIN SOCIAL', + social_sign_in: 'Login social', + description: + 'Dependendo do identificador obrigatório que você configurou, seu usuário pode ser solicitado a fornecer um identificador ao se inscrever via conector social.', + add_social_connector: 'Vincular Conector Social', + set_up_hint: { + not_in_list: 'Não está na lista?', + set_up_more: 'Configurar', + go_to: 'outros conectores sociais agora.', + }, + }, + tip: { + set_a_password: + 'Um conjunto exclusivo de uma senha para o seu nome de usuário é obrigatório.', + verify_at_sign_up: + 'No momento, suportamos apenas e-mail verificado. Sua base de usuários pode conter um grande número de endereços de e-mail de baixa qualidade se não houver validação.', + password_auth: + 'Isso é essencial, pois você habilitou a opção de definir uma senha durante o processo de inscrição.', + verification_code_auth: + 'Isso é essencial, pois você habilitou apenas a opção de fornecer o código de verificação ao se inscrever. Você pode desmarcar a caixa quando a configuração de senha for permitida no processo de inscrição.', + delete_sign_in_method: + 'Isso é essencial, pois você selecionou {{identifier}} como um identificador obrigatório.', + }, + }, + others: { + terms_of_use: { + title: 'TERMOS DE USO', + enable: 'Habilitar termos de uso', + description: 'Adicione os acordos legais para o uso do seu produto', + terms_of_use: 'Termos de uso', + terms_of_use_placeholder: 'https://your.terms.of.use/', + terms_of_use_tip: 'URL dos termos de uso', + }, + languages: { + title: 'IDIOMAS', + enable_auto_detect: 'Ativar detecção automática', + description: + 'Seu software detecta a configuração de localidade do usuário e muda para o idioma local. Você pode adicionar novos idiomas traduzindo a interface do usuário do inglês para outro idioma.', + manage_language: 'Gerenciar idioma', + default_language: 'Idioma padrão', + default_language_description_auto: + 'O idioma padrão será usado quando o idioma do usuário detectado não estiver coberto na biblioteca de idiomas atual.', + default_language_description_fixed: + 'Quando a detecção automática está desativada, o idioma padrão é o único idioma que seu software mostrará. Ative a detecção automática de extensão de idioma.', + }, + manage_language: { + title: 'Gerenciar idioma', + subtitle: + 'Localize a experiência do produto adicionando idiomas e traduções. Sua contribuição pode ser definida como o idioma padrão.', + add_language: 'Adicionar idioma', + logto_provided: 'Fornecido por Logto', + key: 'Chave', + logto_source_values: 'Valores Logto', + custom_values: 'Valores personalizados', + clear_all_tip: 'Limpar todos os valores', + unsaved_description: 'As alterações não serão salvas se você sair desta página sem salvar.', + deletion_tip: 'Excluir o idioma', + deletion_title: 'Deseja excluir o idioma adicionado?', + deletion_description: + 'Após a exclusão, seus usuários não poderão navegar naquele idioma novamente.', + default_language_deletion_title: 'O idioma padrão não pode ser excluído.', + default_language_deletion_description: + '{{language}} está definido como seu idioma padrão e não pode ser excluído. ', + got_it: 'Entendi', + }, + advanced_options: { + title: 'OPÇÕES AVANÇADAS', + enable_user_registration: 'Ativar registro de usuário', + enable_user_registration_description: + 'Habilitar ou desabilitar o registro do usuário. Depois de desativados, os usuários ainda podem ser adicionados no Admin Console, mas os usuários não podem mais estabelecer contas por meio da interface do usuário de login.', + }, + }, + setup_warning: { + no_connector: '', + no_connector_sms: + 'Nenhum conector SMS configurado ainda. Até terminar de configurar seu conector SMS, você não poderá fazer login. {{link}} em "Conectores"', + no_connector_email: + 'Nenhum conector e-mail configurado ainda. Até terminar de configurar seu conector SMS, você não poderá fazer login. {{link}} em "Conectores"', + no_connector_social: + 'Nenhum conector social configurado ainda. Até terminar de configurar seu conector SMS, você não poderá fazer login. {{link}} em "Conectores"', + no_added_social_connector: + 'Você configurou alguns conectores sociais agora. Certifique-se de adicionar alguns à sua experiência de login.', + setup_link: 'Configurar', + }, + save_alert: { + description: + 'Você está implementando novos procedimentos de entrada e inscrição. Todos os seus usuários podem ser afetados pela nova configuração. Tem certeza de se comprometer com a mudança?', + before: 'Antes', + after: 'Depois', + sign_up: 'Inscrever-se', + sign_in: 'Entrar', + social: 'Social', + }, + preview: { + title: 'Visualização de login', + dark: 'Escuro', + light: 'Claro', + native: 'Native', + desktop_web: 'Desktop Web', + mobile_web: 'Mobile Web', + }, +}; + +export default sign_in_exp; diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/tab-sections.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/tab-sections.ts new file mode 100644 index 000000000..32347a9f6 --- /dev/null +++ b/packages/phrases/src/locales/pt-br/translation/admin-console/tab-sections.ts @@ -0,0 +1,8 @@ +const tab_sections = { + overview: 'Visão geral', + resource_management: 'Recursos', + user_management: 'Usuários', + help_and_support: 'Ajuda e suporte', +}; + +export default tab_sections; diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/tabs.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/tabs.ts new file mode 100644 index 000000000..ff48550a5 --- /dev/null +++ b/packages/phrases/src/locales/pt-br/translation/admin-console/tabs.ts @@ -0,0 +1,15 @@ +const tabs = { + get_started: 'Primeiros passos', + dashboard: 'Painel', + applications: 'Aplicativos', + api_resources: 'Recursos da API', + sign_in_experience: 'Experiência de login', + connectors: 'Conectores', + users: 'Usuários', + audit_logs: 'Logs', + docs: 'Documentação', + contact_us: 'Contate-nos', + settings: 'Configurações', +}; + +export default tabs; diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/user-details.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/user-details.ts new file mode 100644 index 000000000..83d7e781a --- /dev/null +++ b/packages/phrases/src/locales/pt-br/translation/admin-console/user-details.ts @@ -0,0 +1,43 @@ +const user_details = { + back_to_users: 'Voltar para gerenciamento de usuários', + created_title: 'Este usuário foi criado com sucesso', + created_guide: 'Você pode enviar as seguintes informações de login para o usuário', + created_username: 'Nome de usuário:', + created_password: 'Senha:', + menu_delete: 'Excluir', + delete_description: 'Essa ação não pode ser desfeita. Isso excluirá permanentemente o usuário.', + deleted: 'O usuário foi excluído com sucesso', + reset_password: { + reset_password: 'Redefinir senha', + title: 'Tem certeza de que deseja redefinir a senha?', + content: 'Essa ação não pode ser desfeita. Isso redefinirá as informações de login do usuário.', + congratulations: 'Este usuário foi redefinido', + new_password: 'Nova senha:', + }, + tab_logs: 'Logs', + settings: 'Configurações', + settings_description: + 'Cada usuário tem um perfil contendo todas as informações do usuário. Consiste em dados básicos, identidades sociais e dados personalizados.', + field_email: 'E-mail principal', + field_phone: 'Telefone principal', + field_username: 'Nome de usuário', + field_name: 'Nome', + field_avatar: 'URL da imagem do avatar', + field_avatar_placeholder: 'https://your.cdn.domain/avatar.png', + field_custom_data: 'Dados personalizados', + field_custom_data_tip: + 'Informações adicionais do usuário não listadas nas propriedades de usuário predefinidas, como cor e idioma preferidos do usuário.', + field_connectors: 'Conectores de login sociais', + custom_data_invalid: 'Os dados personalizados devem ser um objeto JSON válido', + connectors: { + connectors: 'Conectores', + user_id: 'ID do usuário', + remove: 'Remover', + not_connected: 'O usuário não está conectado a nenhum conector social', + deletion_confirmation: + 'Você está removendo a identidade existente. Você tem certeza que deseja fazer isso?', + }, + suspended: 'Suspenso', +}; + +export default user_details; diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/users.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/users.ts new file mode 100644 index 000000000..fe7751d09 --- /dev/null +++ b/packages/phrases/src/locales/pt-br/translation/admin-console/users.ts @@ -0,0 +1,15 @@ +const users = { + title: 'Gerenciamento de usuários', + subtitle: + 'Gerenciar identidades de usuários, visualização de logs de usuários, redefinições de senha e exclusão de usuários', + create: 'Adicionar usuário', + user_name: 'Usuário', + application_name: 'Aplicativo', + latest_sign_in: 'Último login', + create_form_username: 'Nome de usuário', + create_form_password: 'Senha', + create_form_name: 'Nome completo', + unnamed: 'Sem nome', +}; + +export default users; diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/welcome.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/welcome.ts new file mode 100644 index 000000000..6a96c1bbe --- /dev/null +++ b/packages/phrases/src/locales/pt-br/translation/admin-console/welcome.ts @@ -0,0 +1,8 @@ +const welcome = { + title: 'Bem-vindo ao Admin Console', + description: + 'O Admin Console é um aplicativo da web para gerenciar o Logto sem requisitos de codificação. Vamos primeiro criar uma conta. Com esta conta, você pode gerenciar o Logto sozinho ou em nome de sua empresa.', + create_account: 'Criar uma conta', +}; + +export default welcome; diff --git a/packages/phrases/src/locales/pt-br/translation/demo-app.ts b/packages/phrases/src/locales/pt-br/translation/demo-app.ts new file mode 100644 index 000000000..48cca8d14 --- /dev/null +++ b/packages/phrases/src/locales/pt-br/translation/demo-app.ts @@ -0,0 +1,15 @@ +const demo_app = { + notification: + 'Use sua conta de administrador padrão ou crie uma nova conta para entrar no aplicativo de demonstração.', + title: 'Você se inscreveu com sucesso no aplicativo de demonstração!', + subtitle: 'Aqui estão suas informações de login:', + username: 'Nome de usuário: ', + user_id: 'ID do usuário: ', + sign_out: 'Sair do aplicativo de demonstração', + continue_explore: 'Ou continuar a navegação', + customize_sign_in_experience: 'Personalize a experiência de login', + enable_passwordless: 'Ativar sem senha', + add_social_connector: 'Adicionar conector login social', +}; + +export default demo_app; diff --git a/packages/phrases/src/locales/pt-br/translation/index.ts b/packages/phrases/src/locales/pt-br/translation/index.ts new file mode 100644 index 000000000..c8894ec9c --- /dev/null +++ b/packages/phrases/src/locales/pt-br/translation/index.ts @@ -0,0 +1,9 @@ +import admin_console from './admin-console/index.js'; +import demo_app from './demo-app.js'; + +const translation = { + admin_console, + demo_app, +}; + +export default translation;