O componente <T>
Embrulhe seu conteúdo no componente <T> para traduzi-lo. O conteúdo original é exibido até que a tradução seja carregada.
<T>This content will be translated</T>
Texto com encadernações também funciona. O conteúdo é traduzido novamente sempre que muda, por exemplo, quando name muda:
<T>Hello {{ name }}</T>
Para valores que mudam com frequência, como nomes e contagens, use variáveis para que o texto seja traduzido apenas uma vez.
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 usar quantos componentes <T> quiser.
O plugin registra <T> globalmente. Você também pode importá-lo: import { T } from '@magic-translate/vue'. Translate é o mesmo componente de T.
Props
| Prop | Tipo | Descrição |
|---|---|---|
formality | 'informal' | 'formal' | Define a formalidade da tradução. |
id | string | Permite que você edite esse uso do texto sozinho. |
lang | Language | Substitui o idioma definido por createMagicTranslate. |
v | Record<string, unknown> | Valores que não estão traduzidos, referenciados como $name no conteúdo. Consulte Variáveis. |
<T lang="fr" formality="formal">How are you?</T>
Variáveis
Passe valores que mudam, como um nome ou uma contagem, em v e faça referência a eles como $name no conteúdo:
<T :v="{ name: user.name, count }">Hi $name, you have $count new messages</T>
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 no seu aplicativo. 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. Quando somente os valores mudam, nenhuma nova solicitação é feita.
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}. O texto ao redor dos valores pode conter HTML:
<T :v="{ count: cart.items.length }">You have <b>$count items</b> in your cart.</T>
Algumas regras:
- Somente as teclas de
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>. - As variáveis são substituídas somente no texto, não em atributos como
hrefoutitle. - Uma chave que não aparece no texto registra um aviso, que detecta erros de digitação.
- Com a renderização do lado do servidor, por exemplo, com Nuxt, um
<T>comvé renderizado vazio no servidor e aparece quando o aplicativo é executado no navegador.
Limitações
- Você não pode colocar componentes Vue dentro do componente
<T>. Elementos HTML simples funcionam bem (veja o exemplo abaixo) e os estilos com escopo continuam funcionando neles. - O conteúdo dentro de um componente
<T>não pode exceder 10 KB, o que equivale a cerca de 5.000 caracteres.
<!-- this is OK, since <a> is a plain HTML element --><T><a href="mailto:info@i42.ch">Please send us an email</a></T><!-- this does NOT work, since <MyButton> is a Vue component --><T><MyButton>Click me</MyButton></T>
Para traduzir atributos e outras cadeias de caracteres, use o useTranslate composable.