Korišćenje TacoTranslate
Prevođenje nizova
Trenutno postoje tri načina za prevođenje stringova: komponenta Translate
, useTranslation
hook, ili translateEntries
utilitarni alat.
Korišćenje Translate
komponentе.
Prikazuje prevode unutar span
elementa i podržava prikazivanje 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 tekst. 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.
Prevedite stringove na strani servera. Pojačajte vaše 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 stringovi stignu na naše servere, prvo ih validiramo i sačuvamo, a zatim odmah vraćamo mašinski prevod. Iako su mašinski prevodi generalno nižeg kvaliteta u poređenju sa našim AI prevodima, oni pružaju brz početni odgovor.
Istovremeno, pokrećemo asinhroni prevodilački zadatak kako bismo generisali visokokvalitetan, najsavremeniji AI prevod za vaš string. Kada AI prevod bude spreman, zameniće mašinski prevod i biće poslat svaki put kada zahtevate prevode za vaše stringove.
Ако сте ручно превели низ, ти преводи имају предност и враћају се уместо тога.
Korišćenje izvora
TacoTranslate projekti sadrže ono što mi zovemo origins. Zamislite ih kao ulazne tačke, foldere ili grupe za vaše stringove i prevode.
import {TacoTranslate} from 'tacotranslate/react';
function Menu() {
return (
<TacoTranslate origin="application-menu">
// ...
</TacoTranslate>
);
}
Origins vam omogućavaju da razdvojite stringove u smislenije kontejnere. Na primer, možete imati jedan origin za dokumentaciju, a drugi za vašu marketinšku stranicu.
Za detaljniju kontrolu, možete podesiti origines na nivou komponenti.
Da biste to postigli, razmislite o korišćenju više TacoTranslate provajdera unutar vašeg projekta.
Imajte na umu da ista fraza može imati različite prevode u različitim izvorima.
Na kraju, kako ćete podeliti stringove u origin-e zavisi od vas i vaših potreba. Međutim, imajte na umu da veliki broj stringova unutar jednog origin-a može povećati vreme učitavanja.
Rukovanje promenljivama
Uvek bi trebalo da koristite promenljive za dinamički sadržaj, kao što su korisnička imena, datumi, e-mail adrese i slično.
Promenljive u nizovima se deklarišu pomoću dvostrukih zagrada, kao što je {{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
Po defaultu, Translate
komponenta podržava i prikazuje HTML sadržaj. Međutim, možete isključiti ovo ponašanje tako što ćete postaviti vrednost useDangerouslySetInnerHTML
na false
.
Isključivanje prikaza HTML-a se toplo preporučuje 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 prikaza.
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}
/>
);
}
Gore navedeni primer biće prikazan kao običan tekst.