Uso do React

@18ways/react fornece os primitivos de tempo de execução. O principal trabalho é delimitá-los de forma clara.

Modo raiz vs modo escopo

Na raiz, Ways possui a chave da API, o locale, os locales aceitos e o armazenamento de traduções compartilhado.

Escopos Ways aninhados precisam apenas de contexto:

tsx
<Ways
  apiKey="YOUR_18WAYS_PUBLIC_API_KEY"
  locale="es-ES"
  baseLocale="en-GB"
  context="checkout"
>
  <Ways context="payment-form">
    <PaymentForm />
  </Ways>
</Ways>

Carregando estado

Se você quiser refletir o trabalho de tradução na interface do usuário, use useTranslationLoading().

tsx
import { useTranslationLoading } from '@18ways/react';
 
function SavePanel() {
  const isTranslationLoading =
    useTranslationLoading();
 
  return (
    <span>
      {isTranslationLoading
        ? 'Loading translations...'
        : 'Ready'}
    </span>
  );
}

Ganchos de localidade

O runtime raiz expõe dois hooks de baixo nível:

tsx
import {
  useCurrentLocale,
  useSetCurrentLocale,
} from '@18ways/react';

Use-os quando você quiser construir seus próprios controles de localidade em vez de LanguageSwitcher.

LanguageSwitcher

O comutador embutido é controlável e componível.

tsx
<LanguageSwitcher
  currentLocale={locale}
  onLocaleChange={setLocale}
  direction="down"
/>

Ele lê a lista de locais aceitos a partir do tempo de execução raiz e gerencia os estados de carregamento enquanto o próximo local é resolvido.

Composição de componentes

Mantenha a frase unida e deixe <T> preservar a forma da interface.

tsx
<T>
  <a href="/pricing">Click here</a> to see more
</T>

Saídas de escape do formatador de mensagens

O formatador padrão é waysParser. Só mude para outro se tiver um motivo concreto.

  • messageFormatter="none" deixa as strings inalteradas.
  • uma função de formatador personalizada permite que você controle totalmente a interpolação.

Isso deve ser raro.