Traduzindo conteúdo
Marque o conteúdo que você deseja que Magic Translate traduza. O conteúdo original é exibido até que a tradução seja carregada.
O elemento <t>
Coloque o texto em um elemento <t> para traduzi-lo. Ele pode conter HTML:
<t>This content will be translated</t><t>Click <a href="/sale">here</a> to see <b>today's</b> deals.</t>
<mt-translate> também funciona, se você preferir um nome de elemento personalizado.
O atributo data-t
Se você não conseguir adicionar um elemento wrapper, adicione data-t ao elemento existente para traduzir seu conteúdo:
<title data-t>My online shop</title><select><option data-t>Small</option><option data-t>Large</option></select>
Atributos
Liste os atributos a serem traduzidos em data-t-attrs, separados por espaços:
<input placeholder="Search products" data-t-attrs="placeholder" /><img src="team.jpg" alt="Our team" title="Say hi" data-t-attrs="alt title" />
Variáveis
Coloque valores que mudam, como um nome ou uma contagem, em data-v como um objeto JSON e faça referência a eles como $name:
<t data-v='{"name": "Bob", "count": 7}'>Hi $name, you have $count new messages</t><input placeholder="Search $count products" data-t-attrs="placeholder" data-v='{"count": 3}' />
Magic Translate traduz o texto em torno dos valores uma vez, como Hi {0}, you have {1} new messages, e coloca os valores de volta na página. A tradução é armazenada em cache e funciona para cada nome e cada contagem, e os valores em si nunca são enviados para Magic Translate.
Para mostrar novos valores, altere data-v. A tradução em cache é reutilizada e nenhuma solicitação é feita:
element.dataset.v = JSON.stringify({ name: 'Bob', count: 8 });
Os valores são numerados na ordem em que aparecem pela primeira vez. A tradução pode movê-los para onde o idioma precisar deles, por exemplo, {1} neue Nachrichten für {0}.
Algumas regras:
- Somente as teclas de
data-vsão substituídas, então textos como$5permanecem como estão. Se duas teclas começarem da mesma forma, comocountecounts, a mais longa vence. - O mesmo nome pode aparecer mais de uma vez.
- Os valores são inseridos como texto, nunca como HTML. Em vez disso, coloque marcação no texto ao redor deles:
Hi <b>$name</b>. - No conteúdo, as variáveis são substituídas somente no texto, não em atributos como
hrefoutitle. - Se
data-vnão for um objeto JSON válido, o texto não será traduzido e um aviso será registrado. Uma chave que não aparece no texto também registra um aviso. $namefica visível até que o script seja carregado. Carregue o script no início da página ou oculte esses elementos até lá.
Opções
Use esses atributos para definir opções para um único elemento:
| Atributo | Valor | Descrição |
|---|---|---|
data-formality | informal ou formal | Define a formalidade da tradução. |
data-lang | um código de idioma | Substitui o idioma da página. |
data-t-id | uma identificação | Permite que você edite esse uso do texto sozinho. Ela se aplica ao conteúdo do elemento, não ao seu data-t-attrs. |
<t data-lang="fr" data-formality="formal">How are you?</t>
Conteúdo que muda
O conteúdo adicionado à página posteriormente, ou alterado por seus scripts, também é traduzido. Isso funciona para conteúdo renderizado por JavaScript, por exemplo, com htmx ou jQuery.
Todas as traduções solicitadas ao mesmo tempo são enviadas para a API em uma única solicitação, e as traduções são armazenadas em cache. Você pode marcar quantos elementos quiser.
Limitações
O conteúdo de um único elemento não pode exceder 10 KB, o que equivale a cerca de 5.000 caracteres. Os elementos aninhados são traduzidos como parte do elemento <t> principal.