Skip to Content

Localization

Voice · 04

Formatação é contrato de produto, não detalhe de renderização.

Datas, números e plurais precisam atravessar o mesmo caminho em todo o Pulso. Improvisar string localmente cria bugs silenciosos, especialmente em crise global ou workspace multi-timezone.

Locale

O locale deve vir de uma única fonte de verdade do produto e pode ser resolvido por workspace ou preferência do usuário.

OrigemUso
ProdutoDefault global da instalação
WorkspaceCliente global com convenção própria
UsuárioPreferência individual de idioma/formato

Componentes não devem decidir locale por conta própria.

Helpers canônicos

HelperResponsabilidade
formatNumberDecimal, milhar, compacto e sinal
formatDeltaMovimento de métrica com sinal explícito
formatDateTimeData/hora com timezone conhecido
formatRelativeTime“há 3 min”, “em 2 h”, “ontem”
formatPluralRegras por idioma via Intl.PluralRules
formatCurrencyMoeda e billing quando aplicável

Todos são wrappers finos sobre Intl, com defaults do Pulso.

Números

CasoRegra
DecimalUsar separador do locale
MilharNunca concatenar manualmente
CompactoPreferir quando densidade pedir leitura rápida
Colunas numéricasUsar tabular-nums
ZeroMostrar quando semântica exigir ausência explícita

Delta

Delta é variação de métrica, não risco operacional.

RegraExemplo
Sinal antes do número+12, −5, +0
Sem espaço entre sinal e número+8%
U+2212 para negativo−5, não -5
Cor por semânticaQueda de score pode ser melhora, dependendo da métrica

Nunca derive risco apenas da direção matemática. Risco usa stable / monitor / attention / high / critical.

Datas e horários

EstiloUso
DateHistórico e filtros
TimeEventos do dia atual
DatetimeAudit log e handover
RelativeFeed em tempo real e urgência operacional

Persista timestamps em UTC. Renderize no timezone do operador e indique timezone quando a interpretação puder mudar decisão.

Tempo relativo

IntervaloPreferência
< 60ssegundos
< 60minminutos
< 24hhoras
≥ 24hdatetime ou data relativa contextual

Plural

Pluralização inline é proibida. Português, inglês, francês e árabe não compartilham a mesma regra.

EvitePrefira
${n} ${n === 1 ? 'menção' : 'menções'}formatPlural('mention', n)
“0 menções” fixo em componenteMensagem com regra do locale

Moeda

O produto não deve misturar moeda operacional com score ou risco. Quando houver billing em settings, use helper de moeda e locale do workspace.

Direção de texto

RTL não precisa ser ativado em todos os fluxos agora, mas a documentação e os componentes devem preferir propriedades lógicas.

EvitePrefira
left / right sem necessidadestart / end
ícone que assume direção fixaícone com variante lógica
margem manual por idiomatoken/layout responsivo

Regras

  • Toda string de número, data, horário, plural e moeda passa por helper.
  • Não concatene partes de data manualmente.
  • Não use timezone implícito em evento operacional.
  • Use tabular-nums para listas e tabelas numéricas.
  • Preserve IDs, nomes próprios, workspace, timeline e audit log entre locales.
Last updated on