Korišćenje TacoTranslate
Prevođenje stringova
Trenutno postoje tri načina za prevođenje stringova: komponenta Translate, hook useTranslation, ili pomoćna 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 utiliteta translateEntries.
Prevodite stringove na serverskoj strani. Unapredite 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 stringovi prevode
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 pružaju brz početni odgovor.
Istovremeno, pokrećemo asinhroni posao prevođenja kako bismo generisali visokokvalitetan, najsavremeniji AI prevod za vaš tekst. Kada AI prevod bude spreman, on će zameniti mašinski prevod i biće poslat kad god zatražite prevode za vaše tekstove.
Ako ste neki string ručno preveli, ti prevodi imaju prioritet i biće vraćeni umesto automatskih.
Korišćenje origin-a
TacoTranslate projekti sadrže ono što nazivamo origins. Zamislite ih kao ulazne tačke, mape ili grupe za vaše tekstove i prevode.
import {TacoTranslate} from 'tacotranslate/react';
function Menu() {
return (
<TacoTranslate origin="application-menu">
// ...
</TacoTranslate>
);
}Origins vam omogućavaju da razdvojite stringove u smislene kontejnere. Na primer, mogli biste imati jedan origin za dokumentaciju i drugi za vašu marketinšku stranicu.
Za detaljniju kontrolu, možete podesiti izvore na nivou komponente.
Da biste to postigli, razmislite o korišćenju više TacoTranslate provajdera u vašem projektu.
Imajte na umu da isti string može dobiti različite prevode u različitim originima.
U konačnici, kako ćete razdvojiti stringove u origins zavisi od vas i vaših potreba. Ipak, imajte na umu da veliki broj stringova u jednom originu može povećati vreme učitavanja.
Rukovanje promenljivima
Uvek treba da koristite promenljive za dinamički sadržaj, kao što su korisnička imena, datumi, adrese e-pošte i slično.
Varijable u stringovima se deklarišu pomoću dvostrukih vitičastih zagrada, kao {{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, Translate komponenta podržava i prikazuje HTML sadržaj. Međutim, možete isključiti ovo ponašanje postavljanjem useDangerouslySetInnerHTML na false.
Toplo se preporučuje onemogućiti prikaz HTML-a prilikom prevođenja nepouzdanog sadržaja, kao što je sadržaj koji generišu korisnici.
Sav izlaz se uvek sanitizuje pomoću sanitize-html pre nego što se prikaže.
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.