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