Skip to content

Commit cf8d78b

Browse files
Malacacarere
authored andcommitted
feat(i18n): add Portuguese translations for various components and services
- Added Portuguese translations for settings, transfer check, upload, and workflows. - Updated i18n configuration to support Portuguese language. - Integrated new translation files into the server resources. - Enhanced data view with localized placeholders (en, ar, fr and pt).
1 parent bcf55bc commit cf8d78b

File tree

23 files changed

+1361
-7
lines changed

23 files changed

+1361
-7
lines changed

packages/app-builder/src/components/Data/IngestedObjectDetail.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { getRoute } from '@app-builder/utils/routes';
55
import { Link } from '@remix-run/react';
66
import clsx from 'clsx';
77
import { Fragment, useMemo } from 'react';
8+
import { useTranslation } from 'react-i18next';
89
import * as R from 'remeda';
910
import { Icon } from 'ui-icons';
1011

@@ -43,6 +44,7 @@ export const IngestedObjectDetail = ({
4344
}: IngestedObjectDetailProps) => {
4445
const parsedTriggerObject = useParsedTriggerObject(object.data) ?? [];
4546
const language = useFormatLanguage();
47+
const { t } = useTranslation(['data']);
4648

4749
const dataModelTable = dataModel.find((table) => table.name === tableName);
4850
const links = R.pipe(
@@ -64,7 +66,7 @@ export const IngestedObjectDetail = ({
6466
ID: {objectId}
6567
</span>
6668
<span className="bg-grey-100 border-grey-50 text-grey-50 rounded border px-2 py-1">
67-
last ingestion at:{' '}
69+
{t('data:viewer.detail.last_ingestion_at')}:{' '}
6870
{formatDateTime(object.metadata.validFrom, {
6971
language,
7072
})}

packages/app-builder/src/locales/ar/data.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,5 +65,7 @@
6565
"unique.col_header": "فريد",
6666
"viewer.no_object_found": "لم يتم العثور على كائن للمعرف {{objectId}} في {{tableName}}",
6767
"viewer.object_id": "معرف الكائن",
68-
"viewer.object_type": "نوع الكائن"
68+
"viewer.object_type.placeholder": "اختر",
69+
"viewer.object_type": "نوع الكائن",
70+
"viewer.detail.last_ingestion_at": "آخر تحديث في"
6971
}

packages/app-builder/src/locales/en/data.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,5 +65,7 @@
6565
"unique.col_header": "Unique",
6666
"viewer.no_object_found": "No object found for id {{objectId}} in {{tableName}}",
6767
"viewer.object_type": "Object type",
68-
"viewer.object_id": "Object ID"
68+
"viewer.object_type.placeholder": "Select a table",
69+
"viewer.object_id": "Object ID",
70+
"viewer.detail.last_ingestion_at": "Last ingestion at"
6971
}

packages/app-builder/src/locales/fr/data.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,5 +65,7 @@
6565
"your_data_callout": "Voici la liste de tous les objets que vous pouvez envoyer à Marble, ainsi que leurs propriétés. \nContactez l'équipe Marble si vous souhaitez apporter des modifications à votre modèle de données.",
6666
"viewer.no_object_found": "Aucun objet trouvé pour l'id {{objectId}} dans {{tableName}}",
6767
"viewer.object_id": "ID d'objet",
68-
"viewer.object_type": "Type d'objet"
68+
"viewer.object_type.placeholder": "Sélectionner une table",
69+
"viewer.object_type": "Type d'objet",
70+
"viewer.detail.last_ingestion_at": "Dernière mise à jour le"
6971
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"download_openapi_spec": "Baixar especificação OpenAPI"
3+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
{
2+
"great_rules_right_tools": "Boas regras são criadas com as <RightTools>ferramentas certas</RightTools>.",
3+
"marble_description": "Marble é um motor de regras em tempo real para monitoramento de fraudes e compliance, desenvolvido para empresas fintech e instituições financeiras.",
4+
"sign_in.google": "Entrar com Google",
5+
"sign_in.microsoft": "Entrar com Microsoft",
6+
"errors.no_account": "Nenhuma conta Marble encontrada para este endereço.",
7+
"errors.csrf_error": "Um token de segurança necessário não foi encontrado ou é inválido.\n Atualize a página e tente novamente.",
8+
"sign_in.email": "E-mail",
9+
"sign_in.password": "Senha",
10+
"sign_in": "Entrar",
11+
"sign_up": "Cadastrar",
12+
"sign_in.dont_have_an_account": "Primeira vez aqui? <SignUp>{{signUp}}</SignUp>.",
13+
"sign_in.forgot_password": "Esqueceu a senha?",
14+
"sign_in.errors.user_not_found": "Nenhuma conta de usuário encontrada para este endereço.",
15+
"sign_in.errors.wrong_password_error": "Senha incorreta.",
16+
"sign_in.errors.invalid_login_credentials": "Credenciais de login inválidas.",
17+
"sign_up.description": "Antes de criar sua conta, certifique-se de que um administrador tenha adicionado você à sua organização.",
18+
"sign_up.already_have_an_account_sign_up": "Já tem uma conta? <SignIn>{{signIn}}</SignIn>.",
19+
"sign_up.errors.weak_password_error": "A senha é muito fraca. Deve ter pelo menos 6 caracteres.",
20+
"sign_up.errors.email_already_exists": "Este e-mail já está em uso. Por favor, faça login ou redefina sua senha.",
21+
"email-verification.description": "Verifique seu e-mail e clique no link para verificar sua conta. Após verificar seu e-mail, <strong>você precisará fazer login novamente.</strong>",
22+
"email-verification.emulator_description": "Clique no link no <strong>terminal executando seu emulador do Firebase</strong> para verificar sua conta. Após verificar seu e-mail, <strong>você precisará fazer login novamente.</strong>",
23+
"email-verification.resend": "Reenviar e-mail de verificação",
24+
"email-verification.emulator_resend": "Reenviar link de verificação",
25+
"email-verification.wrong_place": "Está no lugar errado? Volte para <SignIn>{{signIn}}</SignIn>.",
26+
"reset-password.send": "Enviar e-mail para redefinir a senha",
27+
"reset-password.email_sent": "Um e-mail foi enviado com um link para redefinir sua senha.",
28+
"reset-password.wrong_place": "Está no lugar errado? Volte para <SignIn>{{signIn}}</SignIn>.",
29+
"sign_up.read_more": "Leia mais:",
30+
"sign_up.first_connection_guide": "Guia de Primeira Conexão",
31+
"sign_up.warning.instance_not_initialized": "Você não criou uma primeira organização e usuário.",
32+
"sign_up.warning.database_not_migrated": "As migrações do banco de dados não foram aplicadas."
33+
}
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
{
2+
"case.page_title": "Caso",
3+
"case.name": "Nome",
4+
"case.date": "Data",
5+
"case.status": "Status",
6+
"case.tags": "Etiquetas",
7+
"case.contributors": "Contribuidores",
8+
"case.decisions": "Decisões",
9+
"case.decision_detail": "Detalhe da decisão",
10+
"case.files": "Arquivos",
11+
"case.file.name": "Nome do arquivo",
12+
"case.file.extension": "Extensão",
13+
"case.file.added_date": "Adicionado em",
14+
"case.file.download": "Baixar",
15+
"case.file.downloading": "Baixando...",
16+
"case.file.errors.downloading_link.auth_error": "Ocorreu um erro de autenticação ao gerar o link de download. Talvez seja necessário fazer login novamente.",
17+
"case.file.errors.downloading_link.unknown": "Ocorreu um erro desconhecido ao gerar o link de download. Por favor, tente novamente mais tarde.",
18+
"case.inbox": "Caixa de entrada",
19+
"case.link": "Link",
20+
"case.inboxes": "Caixas de entrada",
21+
"case.status.open": "aberto",
22+
"case.status.investigating": "em investigação",
23+
"case.status.discarded": "descartado",
24+
"case.status.resolved": "resolvido",
25+
"case.new_case": "Novo caso",
26+
"case.new_case.create": "Criar um novo caso",
27+
"case.new_case.placeholder": "Digite um nome",
28+
"case.new_case.select_inbox": "Selecione uma caixa de entrada",
29+
"case_detail.informations": "Informações",
30+
"case_detail.no_decisions": "Adicione uma decisão da <Link>lista de decisões</Link> para iniciar a investigação",
31+
"case_detail.pivot_values": "Valores pivôs",
32+
"case_detail.pivot_values.snooze_from_to": "De {{from}} -> Para {{to}}",
33+
"case_detail.rules_execution": "Execução de regras ({{count}})",
34+
"case_detail.rules_execution.show_hit_only": "Mostrar apenas acertos",
35+
"case_detail.trigger_object": "Objeto do gatilho",
36+
"case_detail.no_files": "<Button>Adicione seu primeiro arquivo</Button> ao caso para acompanhar a investigação",
37+
"case_detail.events_count_one": "{{count}} evento",
38+
"case_detail.events_count_other": "{{count}} eventos",
39+
"case_detail.history": "Histórico",
40+
"case_detail.history.filter.date": "Data",
41+
"case_detail.history.filter.event_type": "Tipo de evento",
42+
"case_detail.unknown_user": "usuário desconhecido",
43+
"case_detail.unknown_tag": "etiqueta desconhecida",
44+
"case_detail.other_tags_count_one": "+{{count}} outra",
45+
"case_detail.other_tags_count_other": "+{{count}} outras",
46+
"case_detail.empty_tag_list": "nenhuma etiqueta",
47+
"case_detail.empty_tag_list.create_tag": "crie sua primeira etiqueta",
48+
"case_detail.empty_tag_list.info": "peça para um administrador criar uma etiqueta para adicioná-la ao caso",
49+
"case_detail.tags.empty_matches": "nenhuma etiqueta corresponde à sua busca",
50+
"case_detail.history.event_type.case_created": "Caso criado",
51+
"case_detail.history.event_type.comment_added": "Nota",
52+
"case_detail.history.event_type.decision_added": "Decisão adicionada",
53+
"case_detail.history.event_type.name_updated": "Nome atualizado",
54+
"case_detail.history.event_type.tags_updated": "Etiquetas atualizadas",
55+
"case_detail.history.event_type.inbox_changed": "Caixa de entrada alterada",
56+
"case_detail.history.event_type.rule_snooze_created": "Suspensão de regra criada",
57+
"case_detail.history.event_type.decision_reviewed": "Decisão revisada",
58+
"case_detail.history.event_type.status_updated": "Status atualizado",
59+
"case_detail.history.event_type.file_added": "Arquivo adicionado",
60+
"case_detail.history.event_type.case_snoozed": "Caso suspenso",
61+
"case_detail.history.event_type.case_unsnoozed": "Caso não suspenso",
62+
"case_detail.history.event_title.case_created": "Caso criado",
63+
"case_detail.history.event_title.case_created_automatically": "Caso criado automaticamente",
64+
"case_detail.history.event_title.comment_added": "Nota",
65+
"case_detail.history.event_title.decision_added_one": "{{count}} decisão adicionada",
66+
"case_detail.history.event_title.decision_added_other": "{{count}} decisões adicionadas",
67+
"case_detail.history.event_title.name_updated": "Novo nome: <Name>{{name}}</Name>",
68+
"case_detail.history.event_title.tags_updated": "Etiquetas atualizadas",
69+
"case_detail.history.event_title.inbox_changed": "Caixa de entrada alterada",
70+
"case_detail.history.event_title.rule_snooze_created": "Suspensão de regra criada",
71+
"case_detail.history.event_title.decision_reviewed": "Decisão revisada: <ReviewStatus/>",
72+
"case_detail.history.event_title.status_updated": "Novo status: <Status/>",
73+
"case_detail.history.event_title.file_added": "Arquivo adicionado: <Name>{{name}}</Name>",
74+
"case_detail.history.event_detail.added_by": "Adicionado por: <Avatar/> <User>{{user}}</User>",
75+
"case_detail.history.event_detail.added_by_workflow": "Adicionado pelo fluxo de trabalho",
76+
"case_detail.history.event_detail.edited_by": "Editado por: <Avatar/> <User>{{user}}</User>",
77+
"case_detail.history.event_detail.edited_by_workflow": "Editado pelo fluxo de trabalho",
78+
"case_detail.history.event_detail.reviewed_by": "Revisado por: <Avatar/> <User>{{user}}</User>",
79+
"case_detail.history.event_detail.case_tags.new": "Novas etiquetas: <CaseTags/>",
80+
"case_detail.history.event_detail.case_tags.none": "remover todas as etiquetas",
81+
"case_detail.history.event_detail.decision_reviewed.review_comment": "Comentário de revisão",
82+
"case_detail.history.event_detail.decision_reviewed.final_status": "Status final",
83+
"case_detail.history.event_detail.rule_snooze_created.load_details": "carregar detalhes",
84+
"case_detail.history.event_detail.rule_snooze_created.pivot_value": "valor pivô",
85+
"case_detail.history.event_detail.rule_snooze_created.created_from_decision": "decisão",
86+
"case_detail.history.event_detail.rule_snooze_created.decision_detail": "detalhe da decisão",
87+
"case_detail.history.event_detail.rule_snooze_created.created_from_rule": "regra",
88+
"case_detail.history.event_detail.rule_snooze_created.rule_detail": "detalhe da regra",
89+
"case_detail.history.event_detail.rule_snooze_created.validity": "validade",
90+
"case_detail.history.event_detail.case_snoozed.title": "Suspenso",
91+
"case_detail.history.event_detail.case_unsnoozed.title": "Não suspenso",
92+
"case_detail.history.event_detail.case_snoozed.snooze_until": "Até {{date}}",
93+
"case_detail.add_a_comment.label": "Comentário",
94+
"case_detail.add_a_comment.placeholder": "Escreva uma nota",
95+
"case_detail.add_a_comment.post": "postar um comentário",
96+
"case_detail.add_rule_snooze.title": "Suspender regra",
97+
"case_detail.add_rule_snooze.nudge": "Suspender uma regra para desativá-la temporariamente e evitar falsos positivos",
98+
"case_detail.add_rule_snooze.callout": "Suspender uma regra para um valor pivô específico evitará que ela seja acionada por um determinado período (<DocLink>saiba mais</DocLink>)",
99+
"case_detail.add_rule_snooze.comment.label": "Comentário",
100+
"case_detail.add_rule_snooze.comment.placeholder": "Explique o motivo para suspender esta regra",
101+
"case_detail.add_rule_snooze.duration_value": "Valor da duração",
102+
"case_detail.add_rule_snooze.duration_unit": "Unidade de duração",
103+
"case_detail.add_rule_snooze.errors.max_duration": "A duração máxima é de 180 dias",
104+
"case_detail.add_rule_snooze.errors.duplicate_rule_snooze": "Já existe uma suspensão de regra com este valor pivô para esta regra",
105+
"case_detail.add_rule_snooze.snooze_this_value": "Suspender este valor",
106+
"case_detail.add_rule_snooze.snoozed": "Suspenso",
107+
"case_detail.add_rule_snooze.no_access": "Você não tem permissão para suspender esta regra",
108+
"case_detail.review_decision.title": "Revisar decisão",
109+
"case_detail.review_decision.callout": "Revisar uma decisão mudará seu status e disparará um webhook para acionar o próximo passo no seu fluxo de trabalho (<DocLink>saiba mais</DocLink>)",
110+
"case_detail.review_decision.comment.label": "Comentário",
111+
"case_detail.review_decision.comment.placeholder": "Explique o motivo da escolha deste status de revisão",
112+
"case_detail.review_decision.review_status.label": "Status de revisão",
113+
"case_detail.review_decision.review_status.placeholder": "Selecione um status de revisão",
114+
"case_detail.review_decision.disabled_approve": "Este status não pode ser escolhido porque há uma verificação de sanção a ser revisada para esta decisão.",
115+
"case_detail.review_decision": "Revisar",
116+
"search.placeholder": "Buscar por nome",
117+
"filters.date_range.title": "A data de criação é:",
118+
"change_status_modal.title": "Alterar status do caso",
119+
"change_status_modal.description.from": "de <Status/>",
120+
"change_status_modal.description.to": "para <Status/>",
121+
"change_status_modal.change_status": "Alterar status",
122+
"inbox.need_first_inbox": "Crie uma primeira caixa de entrada para começar a usar o gestor de casos",
123+
"inbox.need_inbox_contact_admin": "Por favor, entre em contato com seu administrador para obter acesso a uma caixa de entrada",
124+
"drop_file_cta": "Arraste qualquer arquivo aqui para anexá-lo ao caso. As seguintes extensões são aceitas:",
125+
"drop_file_accepted_types": "jpg, png, pdf, zip, doc, docx, xls, xlsx",
126+
"pick_file_cta": "Escolher um arquivo",
127+
"add_file": "Adicionar um arquivo",
128+
"sanction.state.refine_needed": "Refinamento necessário",
129+
"snooze.title": "Suspender",
130+
"snooze.callout": "Suspenso até {{date}}",
131+
"snooze.modal.heading": "Suspender até...",
132+
"unsnooze.callout": "Ao continuar, você irá desmarcar este caso",
133+
"unsnooze.title": "Desmarcar",
134+
"include_snoozed": "Incluir suspensos"
135+
}
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
{
2+
"add": "Adicionar",
3+
"select_all": "Selecionar tudo",
4+
"no_name": "Sem nome",
5+
"null": "Nulo",
6+
"skipped": "Ignorado",
7+
"true": "Verdadeiro",
8+
"false": "Falso",
9+
"from_to": "De <Date>{{start_date}}</Date> até <Date>{{end_date}}</Date>",
10+
"live": "Ativo",
11+
"premium": "Recurso Premium",
12+
"upgrade": "Atualize agora",
13+
"auth.logout": "Sair",
14+
"search": "Pesquisar",
15+
"missing_configuration_title": "Configuração ausente",
16+
"missing_configuration": "O Marble identificou configuração ausente para este recurso. Verifique a documentação para a configuração correta.",
17+
"dataset_freshness_banner": "Os dados usados para sua verificação de sanções não estão atualizados (a última versão publicada em {{ lastExport }} ainda não foi puxada).<br />Consulte sua equipe de plataforma se o problema não se resolver em breve.",
18+
"error_one": "{{count}} erro",
19+
"error_other": "{{count}} erros",
20+
"validation_error_one": "{{count}} erro de validação",
21+
"validation_error_other": "{{count}} erros de validação",
22+
"errors.forbidden.title": "Proibido",
23+
"errors.forbidden.subtitle": "Você não tem permissão para acessar esta página",
24+
"errors.backend_unvailable": "O aplicativo Marble não consegue se comunicar com o backend. Verifique sua configuração ou tente novamente mais tarde.",
25+
"errors.unknown": "Ocorreu um erro desconhecido",
26+
"errors.account_exists_with_different_credential": "Uma conta já existe com o mesmo endereço de e-mail, mas com credenciais de login diferentes. Faça login usando um provedor associado a este e-mail.",
27+
"errors.popup_blocked_by_client": "O popup foi bloqueado. Por favor, <EnablePopup>habilite os popups</EnablePopup> e tente novamente.",
28+
"errors.not_found": "Esta página não pôde ser encontrada.",
29+
"errors.edit.forbidden_not_draft": "Você só pode editar uma versão rascunho de um cenário.",
30+
"errors.list.duplicate_list_name": "Já existe uma lista com esse nome",
31+
"errors.list.duplicate_email": "Este e-mail já está em uso",
32+
"errors.data.duplicate_field_name": "Já existe um campo com esse nome",
33+
"errors.data.duplicate_test_run": "Já há uma execução de teste ativa para este cenário",
34+
"errors.data.duplicate_table_name": "Já existe uma tabela com esse nome",
35+
"errors.data.duplicate_link_name": "Já existe um link com esse nome",
36+
"errors.add_to_case.invalid": "Uma decisão já pertence a um caso",
37+
"errors.firebase_auth_error": "Ocorreu um erro de autenticação. Tente fazer login novamente.",
38+
"errors.firebase_network_error": "O Marble está com dificuldades para se conectar ao Firebase. Verifique a configuração do Firebase ou tente novamente mais tarde.",
39+
"errors.too_many_requests": "Muitas requisições. Por favor, tente novamente mais tarde.",
40+
"cancel": "Cancelar",
41+
"check_on_docs": "Saiba mais na nossa documentação",
42+
"github_banner": "Gostou do Marble? Apoie o esforço Open Source nos dando uma estrela no",
43+
"save": "Salvar",
44+
"delete": "Excluir",
45+
"close": "Fechar",
46+
"show": "Mostrar",
47+
"hide": "Ocultar",
48+
"more_options": "Mais opções",
49+
"clipboard.aria-label": "Copiar para a área de transferência: {{value}}",
50+
"clipboard.copy": "Copiado para a área de transferência: <Value>{{value}}</Value>",
51+
"empty_scenario_iteration_list": "Você não tem nenhuma regra. Clique em criar regra para criar uma nova.",
52+
"success.save": "Salvo com sucesso",
53+
"success.add_to_case": "Decisão adicionada ao caso com sucesso",
54+
"name": "Nome",
55+
"description": "Descrição",
56+
"edit": "Editar",
57+
"copy": "Copiar",
58+
"paste": "Colar",
59+
"go_back": "Voltar",
60+
"error_boundary.default.title": "Você perdeu a noção?",
61+
"error_boundary.default.subtitle": "Parece que algo deu errado.",
62+
"error_boundary.marble_admin.title": "Você é um Administrador do Marble",
63+
"error_boundary.marble_admin.subtitle": "O aplicativo atual não está disponível para Administradores do Marble. Por favor, faça login com outra conta.",
64+
"or": "ou",
65+
"loading": "Carregando...",
66+
"understand": "Eu entendo",
67+
"global_error": "Algo deu errado.",
68+
"items_displayed": "<StartToEnd>{{start}} a {{end}}</StartToEnd>",
69+
"page_displayed_of_total": "Página <PageCount>{{currentPage}} de {{pageCount}}</PageCount>",
70+
"help_center.to_navigate": "para navegar",
71+
"help_center.to_switch_tabs": "para alternar entre abas",
72+
"help_center.no_results": "Nenhum resultado encontrado",
73+
"help_center.chat_with_us": "Bate-papo conosco"
74+
}

0 commit comments

Comments
 (0)