Usando o TacoTranslate
Traduzindo strings
Atualmente, existem três maneiras de traduzir strings: o componente Translate
, o hook useTranslation
ou a utilidade translateEntries
.
Usando o componente Translate
.
Exibe traduções dentro de um elemento span
, e suporta renderização de HTML.
import {Translate} from 'tacotranslate/react';
function Page() {
return <Translate string="Hello, world!" />;
}
Você pode alterar o tipo do elemento usando, por exemplo, as="p"
no componente.
Usando o hook useTranslation
.
Retorna traduções como uma string simples. Útil, por exemplo, em tags meta
.
import {useEffect} from 'react';
import {useTranslation} from 'tacotranslate/react';
function Page() {
const helloWorld = useTranslation('Hello, world!');
useEffect(() => {
alert(helloWorld);
}, [helloWorld]);
return (
<title>{useTranslation('My page title')}</title>
);
}
Usando a ferramenta translateEntries
.
Traduza strings no lado do servidor. Potencialize suas imagens OpenGraph.
import {createEntry, translateEntries} from 'tacotranslate';
async function generateMetadata(locale = 'es') {
const title = createEntry({string: 'Hello, world!'});
const description = createEntry({string: 'TacoTranslate on the server'});
const translations = await translateEntries(
tacoTranslate,
{origin: 'opengraph', locale},
[title, description]
);
return {
title: translations(title),
description: translations(description)
};
}
Como as strings são traduzidas
Quando as strings chegam aos nossos servidores, primeiro as validamos e salvamos, em seguida, retornamos imediatamente uma tradução automática. Embora as traduções automáticas geralmente tenham qualidade inferior em comparação com nossas traduções por IA, elas fornecem uma resposta inicial rápida.
Simultaneamente, iniciamos um trabalho de tradução assíncrono para gerar uma tradução de IA de alta qualidade e estado-da-arte para sua string. Uma vez que a tradução de IA esteja pronta, ela substituirá a tradução automática e será enviada sempre que você solicitar traduções para suas strings.
Se você traduziu manualmente uma string, essas traduções têm prioridade e são retornadas em vez disso.
Utilizando origens
Projetos TacoTranslate contêm o que chamamos de origins. Pense neles como pontos de entrada, pastas ou grupos para suas strings e traduções.
import {TacoTranslate} from 'tacotranslate/react';
function Menu() {
return (
<TacoTranslate origin="application-menu">
// ...
</TacoTranslate>
);
}
Origins permitem que você separe strings em contêineres significativos. Por exemplo, você pode ter uma origin para documentação e outra para sua página de marketing.
Para um controle mais granular, você pode configurar origins no nível do componente.
Para conseguir isso, considere usar múltiplos provedores TacoTranslate dentro do seu projeto.
Por favor, note que a mesma string pode receber traduções diferentes em origens diferentes.
Em última análise, como você separa as strings em origins depende de você e de suas necessidades. No entanto, observe que ter muitas strings dentro de um origin pode aumentar os tempos de carregamento.
Manipulação de variáveis
Você deve sempre usar variáveis para conteúdo dinâmico, como nomes de usuário, datas, endereços de e-mail e mais.
Variáveis em strings são declaradas usando colchetes duplos, como {{variable}}
.
import {Translate} from 'tacotranslate/react';
function Greeting() {
const name = 'Juan';
return <Translate string="Hello, {{name}}!" variables={{name}} />;
}
import {useTranslation} from 'tacotranslate/react';
function useGreeting() {
const name = 'Juan';
return useTranslation('Hello, {{name}}!', {variables: {name}});
}
Gerenciando conteúdo HTML
Por padrão, o componente Translate
suporta e renderiza conteúdo HTML. No entanto, você pode desativar esse comportamento configurando useDangerouslySetInnerHTML
como false
.
Desativar a renderização de HTML é altamente recomendável ao traduzir conteúdo não confiável, como conteúdo gerado pelo usuário.
Toda saída é sempre sanitizada com sanitize-html antes de ser renderizada.
import {Translate} from 'tacotranslate/react';
function Page() {
return (
<Translate
string={`
Welcome to <strong>my</strong> website.
I’m using <a href="{{url}}">TacoTranslate</a> to translate text.
`}
variables={{url: 'https://tacotranslate.com'}}
useDangerouslySetInnerHTML={false}
/>
);
}
O exemplo acima será exibido como texto simples.