Komponent <T>
Owiń zawartość w komponencie <T>, aby ją przetłumaczyć. Oryginalna zawartość jest wyświetlana do momentu załadowania tłumaczenia.
<T>This content will be translated</T>
Tekst z wiązaniami również działa. Treść jest ponownie tłumaczona za każdym razem, gdy się zmienia, na przykład gdy zmienia się name:
<T>Hello {{ name }}</T>
W przypadku wartości, które często się zmieniają, takich jak nazwy i liczby, zamiast tego użyj zmiennych, więc tekst jest tłumaczony tylko raz.
Wszystkie tłumaczenia żądane w tym samym czasie są wysyłane do interfejsu API w jednym żądaniu, a tłumaczenia są buforowane. Możesz używać dowolnej liczby komponentów <T>.
Wtyczka rejestruje <T> globalnie. Możesz go również zaimportować: import { T } from '@magic-translate/vue'. Translate jest tym samym składnikiem co T.
Props
| Prop | Typ | Opis |
|---|---|---|
formality | 'informal' | 'formal' | Ustawia formalność tłumaczenia. |
id | string | Umożli wia samodzielną edycję tego użycia tekstu. |
lang | Language | Zastępuje ustawiony język za pomocą createMagicTranslate. |
v | Record<string, unknown> | Wartości, które nie są przetłumaczone, odnoszone jako $name w treści. Zobacz Zmienne. |
<T lang="fr" formality="formal">How are you?</T>
Zmienne
Przekaż zmieniające się wartości, takie jak nazwa lub liczba, w v i odniesienie do nich jako $name w treści:
<T :v="{ name: user.name, count }">Hi $name, you have $count new messages</T>
Magic Translate tłumaczy tekst wokół wartości raz, jako Hi {0}, you have {1} new messages, i ponownie umieszcza wartości w aplikacji. Tłumaczenie jest przechowywane w pamięci podręcznej i działa dla każdego imienia i każdej liczby, a same wartości nigdy nie są wysyłane do Magic Translate. Gdy zmieniają się tylko wartości, żadne nowe żądanie nie jest składane.
Wartości są ponumerowane w kolejności, w jakiej pojawiają się po raz pierwszy. Tłumaczenie może przenosić je wszędzie tam, gdzie ich potrzebuje język, na przykład {1} neue Nachrichten für {0}. Tekst wokół wartości może zawierać HTML:
<T :v="{ count: cart.items.length }">You have <b>$count items</b> in your cart.</T>
Kilka zasad:
- Zastępowane są tylko klawisze
v, więc tekst taki jak$5pozostaje taki, jaki jest. Jeśli dwa klawisze zaczynają się w ten sam sposób, takie jakcounticounts, wygrywa najdłuższy. - Ta sama nazwa może pojawić się więcej niż raz.
- Wartości są wstawiane jako tekst, nigdy jako HTML. Zamiast tego umieść znaczniki w tekście wokół nich:
Hi <b>$name</b>. - Zmienne są zastępowane tylko w tekście, a nie w atrybutach takich jak
hreflubtitle. - Klucz, który nie pojawia się w tekście, rejestruje ostrzeżenie, które przechwytuje literówki.
- W przypadku renderowania po stronie serwera, na przykład z Nuxt,
<T>zvrenderuje się puste na serwerze i pojawia się po uruchomieniu aplikacji w przeglądarce.
Ograniczenia
- Nie można umieścić komponentów Vue wewnątrz komponentu
<T>. Zwykłe elementy HTML są w porządku (patrz przykład poniżej), a style zakresowane nadal nad nimi pracują. - Zawartość w składniku
<T>nie może przekraczać 10 KB, czyli około 5000 znaków.
<!-- 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>
Aby przetłumaczyć atrybuty i inne ciągi, użyj useTranslate composable.