Zaawansowane użycie
Obsługa języków pisanych od prawej do lewej
TacoTranslate ułatwia obsługę języków pisanych od prawej do lewej (RTL), takich jak arabski i hebrajski, w Twoich aplikacjach React. Poprawna obsługa języków RTL zapewnia, że Twoje treści są wyświetlane prawidłowo dla użytkowników czytających od prawej do lewej.
import {useTacoTranslate} from 'tacotranslate/react';
function Document() {
const {locale, isRightToLeft} = useTacoTranslate();
return (
<html lang={locale} dir={isRightToLeft ? 'rtl' : 'ltr'}>
<body>
// ...
</body>
</html>
);
}Możesz także użyć dostarczonej funkcji isRightToLeftLocaleCode do sprawdzenia bieżącego języka poza React.
import {isRightToLeftLocaleCode} from 'tacotranslate';
function foo(locale = 'es') {
const direction = isRightToLeftLocaleCode(locale) ? 'rtl' : 'ltr';
// ...
}Wyłączanie tłumaczenia
Aby wyłączyć tłumaczenie określonych części ciągu znaków lub upewnić się, że niektóre fragmenty zostaną zachowane bez zmian, możesz użyć potrójnych nawiasów kwadratowych. Ta funkcja jest przydatna do zachowania oryginalnego formatu imion, terminów technicznych lub innych treści, które nie powinny być tłumaczone.
import {Translate} from 'tacotranslate/react';
function Component() {
return (
<Translate string="Hello, [[[TacoTranslate]]]!" />
);
}W tym przykładzie słowo “TacoTranslate” pozostanie niezmienione w tłumaczeniu.
Wielu dostawców TacoTranslate
Gorąco zachęcamy do korzystania z wielu TacoTranslate providerów w Twojej aplikacji. Jest to przydatne do organizowania Twoich tłumaczeń i ciągów tekstowych w różnych originach, takich jak nagłówek, stopka lub określone sekcje.
Możesz przeczytać więcej o wykorzystywaniu originów tutaj.
TacoTranslate dostawcy dziedziczą ustawienia od dowolnego nadrzędnego dostawcy, więc nie trzeba będzie powtarzać żadnych innych ustawień.
import createTacoTranslateClient from 'tacotranslate';
import {TacoTranslate} from 'tacotranslate/react';
const tacoTranslateClient = createTacoTranslateClient({apiKey: 'YOUR_API_KEY'});
function Header() {
return (
<TacoTranslate origin="header">
// ...
</TacoTranslate>
);
}
function Menu() {
return (
<TacoTranslate origin="menu">
// ...
</TacoTranslate>
);
}
export default function App() {
return (
<TacoTranslate client={tacoTranslateClient} origin="page" locale="es">
<Header />
<Menu />
</TacoTranslate>
);
}Nadpisywanie originu lub lokalizacji
Oprócz używania wielu TacoTranslate dostawców, możesz także nadpisać zarówno origin (źródło), jak i locale (lokalę) na poziomie komponentu Translate oraz hooka useTranslation.
import {Translate, useTranslation} from 'tacotranslate/react';
function Greeting() {
const spanishHello = useTranslation('Hello!', {locale: 'es'});
return (
<>
{spanishHello}
<Translate string="What’s up?" origin="greeting" />
</>
);
}Obsługa ładowania
Podczas zmiany języka po stronie klienta pobieranie tłumaczeń może zająć kilka chwil w zależności od połączenia użytkownika. Możesz wyświetlić wskaźnik ładowania, aby poprawić komfort użytkownika, zapewniając wizualną informację zwrotną podczas przełączania.
import {useTacoTranslate} from 'tacotranslate/react';
function Component() {
const {isLoading} = useTacoTranslate();
return (
isLoading ? 'Translations are loading...' : null
);
}Pluralizacja
Aby poprawnie obsługiwać pluralizację i wyświetlać etykiety zależne od liczby w różnych językach, zaleca się następującą praktykę:
import {Translate, useLocale} from 'tacotranslate/react';
function PhotoCount() {
const locale = useLocale();
const count = 1;
return count === 0 ? (
<Translate string="You have no photos." />
) : count === 1 ? (
<Translate string="You have 1 photo." />
) : (
<Translate
string="You have {{count}} photos."
variables={{count: count.toLocaleString(locale)}}
/>
);
}Wiele języków
Aby jednocześnie obsługiwać wiele języków w tej samej aplikacji, możesz użyć wielu providerów TacoTranslate z różnymi wartościami locale jak pokazano poniżej:
Możesz także nadpisać locale na poziomie komponentu lub hooka.
import createTacoTranslateClient from 'tacotranslate';
import {TacoTranslate, Translate} from 'tacotranslate/react';
const tacoTranslateClient = createTacoTranslateClient({apiKey: 'YOUR_API_KEY'});
function Spanish() {
return (
<TacoTranslate locale="es">
<Translate string="Hello, world in Spanish!" />
</TacoTranslate>
);
}
function Norwegian() {
return (
<TacoTranslate locale="no">
<Translate string="Hello, world in Norwegian!" />
</TacoTranslate>
);
}
export default function App() {
return (
<TacoTranslate client={tacoTranslateClient} origin="page" locale="es">
<Spanish />
<Norwegian />
</TacoTranslate>
);
}Korzystanie z identyfikatorów tłumaczeń
Możesz dodać id do komponentu Translate, aby obsłużyć różne tłumaczenia lub znaczenia tego samego tekstu. Jest to szczególnie przydatne, gdy ten sam tekst wymaga różnych tłumaczeń w zależności od kontekstu. Przypisując unikalne identyfikatory, zapewniasz, że każde wystąpienie tekstu zostanie przetłumaczone dokładnie zgodnie z jego specyficznym znaczeniem.
import {Translate} from 'tacotranslate/react';
function Header() {
return (
<Translate id="header" string="Login" />
);
}
function Footer() {
return (
<Translate id="footer" string="Login" />
);
}Na przykład logowanie w nagłówku może zostać przetłumaczone jako “Iniciar sesión”, a logowanie w stopce może zostać przetłumaczone jako “Acceder” po hiszpańsku.