Використання TacoTranslate
Переклад рядків
Наразі існує три способи перекладу рядків: компонент Translate
, хук useTranslation
, або утиліта translateEntries
.
Використання компонента Translate
.
Виводить переклади в межах елемента span
, і підтримує відображення HTML.
import {Translate} from 'tacotranslate/react';
function Page() {
return <Translate string="Hello, world!" />;
}
Ви можете змінити тип елемента, використовуючи, наприклад, as="p"
на компоненті.
Використання хуку useTranslation
.
Повертає переклади у вигляді простого рядка. Корисно, наприклад, у meta
тегах.
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>
);
}
Використання утиліти translateEntries
.
Перекладайте рядки на сервері. Покращуйте свої зображення OpenGraph.
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)
};
}
Як перекладаються рядки
Коли рядки надходять на наші сервери, ми спочатку їх перевіряємо та зберігаємо, а потім негайно повертаємо машинний переклад. Хоча машинні переклади зазвичай мають нижчу якість порівняно з нашими перекладами, створеними ШІ, вони забезпечують швидку початкову відповідь.
Одночасно ми запускаємо асинхронне завдання перекладу, щоб створити високоякісний, передовий AI-переклад для вашого рядка. Як тільки AI-переклад буде готовий, він замінить машинний переклад і надсилатиметься щоразу, коли ви запитуєте переклади для ваших рядків.
Якщо ви вручну переклали рядок, ці переклади мають пріоритет і повертаються замість інших.
Використання origins
Проекти TacoTranslate містять те, що ми називаємо джерелами. Розглядайте їх як точки входу, папки або групи для ваших рядків і перекладів.
import {TacoTranslate} from 'tacotranslate/react';
function Menu() {
return (
<TacoTranslate origin="application-menu">
// ...
</TacoTranslate>
);
}
Origins дозволяють розділяти рядки на змістовні контейнери. Наприклад, у вас може бути один origin для документації, а інший — для вашої маркетингової сторінки.
Для більш деталізованого керування ви можете налаштувати origins на рівні компонента.
Для цього розгляньте можливість використання кількох провайдерів TacoTranslate у вашому проєкті.
Будь ласка, зверніть увагу, що одна й та сама рядок може отримувати різні переклади в різних origins.
Зрештою, як розподіляти рядки по origins — вирішуєте ви відповідно до ваших потреб. Проте зверніть увагу, що наявність багатьох рядків в одному origin може збільшити час завантаження.
Обробка змінних
Ви завжди повинні використовувати змінні для динамічного вмісту, такого як імена користувачів, дати, електронні адреси та інше.
Змінні в рядках оголошуються за допомогою подвійних дужок, наприклад {{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}});
}
Управління HTML-контентом
За замовчуванням, компонент Translate
підтримує й відображає HTML-контент. Однак ви можете відмовитися від цієї поведінки, встановивши useDangerouslySetInnerHTML
у значення false
.
Рішуче рекомендується вимикати відображення HTML під час перекладу неперевіреного вмісту, такого як контент, створений користувачами.
Весь вивід завжди проходить санітизацію за допомогою sanitize-html, перш ніж бути відображеним.
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}
/>
);
}
Вищезазначений приклад буде відображено як звичайний текст.