Использование 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)
};
}
Как переводятся строки
Когда строки поступают на наши серверы, мы сначала проверяем и сохраняем их, а затем немедленно возвращаем машинный перевод. Хотя машинные переводы обычно уступают по качеству нашим переводам на основе ИИ, они обеспечивают быстрый первоначальный ответ.
Одновременно мы запускаем асинхронную задачу перевода, чтобы создать высококачественный, передовой ИИ-перевод для вашей строки. Как только ИИ-перевод будет готов, он заменит машинный перевод и будет отправляться всякий раз, когда вы запрашиваете переводы для ваших строк.
Если вы вручную перевели строку, эти переводы имеют приоритет и будут возвращены.
Использование origins
Проекты TacoTranslate содержат то, что мы называем источники. Считайте их точками входа, папками или группами для ваших строк и переводов.
import {TacoTranslate} from 'tacotranslate/react';
function Menu() {
return (
<TacoTranslate origin="application-menu">
// ...
</TacoTranslate>
);
}
Источники позволяют разделять строки на осмысленные контейнеры. Например, вы можете иметь один источник для документации и другой — для вашей маркетинговой страницы.
Для более тонкого управления вы можете настроить origins на уровне компонента.
Чтобы добиться этого, рассмотрите возможность использования нескольких TacoTranslate провайдеров в вашем проекте.
Обратите внимание, что одна и та же строка может иметь разные переводы в разных источниках.
В конечном счёте то, как вы разделяете строки на контейнеры (origins), зависит от вас и ваших потребностей. Однако имейте в виду, что большое количество строк в одном контейнере может увеличить время загрузки.
Работа с переменными
Всегда используйте переменные для динамического содержимого, например имена пользователей, даты, адреса электронной почты и многое другое.
Переменные в строках объявляются с помощью двойных фигурных скобок, например {{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}
/>
);
}
Приведённый выше пример будет отображён как обычный текст.