Korišćenje TacoTranslate
Prevođenje stringova
Trenutno postoje tri načina za prevođenje stringova: komponenta Translate, hook useTranslation, i utilitarna funkcija translateEntries.
Korišćenje Translate komponente.
Prikazuje prevode unutar span elementa i podržava renderovanje HTML-a.
import {Translate} from 'tacotranslate/react';
function Page() {
return <Translate string="Hello, world!" />;
}Možete promeniti tip elementa koristeći, na primer, as="p" na komponenti.
Korišćenje useTranslation hook-a.
Vraća prevode kao običan string. Korisno, na primer, u meta tagovima.
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>
);
}Korišćenje translateEntries alata.
Prevodite stringove na serverskoj strani. Poboljšajte svoje OpenGraph slike.
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)
};
}Kako se prevode stringovi
Kada tekstovi stignu na naše servere, prvo ih validiramo i sačuvamo, a zatim odmah vraćamo mašinski prevod. Iako su mašinski prevodi obično lošijeg kvaliteta u poređenju sa našim AI prevodima, oni obezbeđuju brz početni odgovor.
Istovremeno pokrećemo asinhroni zadatak prevođenja da bismo za vaš niz generisali visokokvalitetan, najsavremeniji AI prevod. Kada AI prevod bude spreman, on će zameniti mašinski prevod i biće poslat kad god zatražite prevode za vaše nizove.
Ako ste neki string ručno preveli, ti prevodi imaju prioritet i biće vraćeni.
Korišćenje izvora
Projekti TacoTranslate sadrže ono što nazivamo origins. Zamislite ih kao ulazne tačke, mape ili grupe za vaše stringove i prevode.
import {TacoTranslate} from 'tacotranslate/react';
function Menu() {
return (
<TacoTranslate origin="application-menu">
// ...
</TacoTranslate>
);
}Izvori vam omogućavaju da razdvojite stringove u smislene kontejnere. Na primer, možete imati jedan izvor za dokumentaciju i drugi za vašu marketinšku stranicu.
Za detaljniju kontrolu, možete podesiti origins na nivou komponente.
Da biste to postigli, razmislite o korišćenju više TacoTranslate provajdera u okviru vašeg projekta.
Imajte na umu da ista fraza može imati različite prevode u različitim originima.
Na kraju, kako ćete rasporediti stringove po originima zavisi od vas i vaših potreba. Međutim, imajte na umu da veliki broj stringova unutar jednog origina može povećati vreme učitavanja.
Rukovanje promenljivima
Uvek treba koristiti promenljive za dinamički sadržaj, kao što su imena korisnika, datumi, adrese e-pošte i slično.
Varijable u stringovima se deklarišu pomoću dvostrukih vitičastih zagrada, na primer {{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}});
}Upravljanje HTML sadržajem
Podrazumevano, komponenta Translate podržava i renderuje HTML sadržaj. Međutim, možete isključiti ovo ponašanje postavljanjem useDangerouslySetInnerHTML na false.
Snažno se preporučuje onemogućavanje prikazivanja HTML-a prilikom prevođenja nepouzdanog sadržaja, kao što je sadržaj koji kreiraju korisnici.
Sav izlaz se uvek sanitizuje pomoću sanitize-html pre prikazivanja.
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}
/>
);
}Gornji primer će biti prikazan kao običan tekst.