使用 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 项目包含我们称之为 origins 的内容。可以将它们视为字符串和翻译的入口点、文件夹或分组。
import {TacoTranslate} from 'tacotranslate/react';
function Menu() {
return (
<TacoTranslate origin="application-menu">
// ...
</TacoTranslate>
);
}
Origins 让您将字符串分隔到有意义的容器中。 例如,您可以为文档设置一个 origin,为营销页面设置另一个 origin。
为了更细粒度的控制,您可以在组件级别设置 origins。
要实现这一点,请考虑在您的项目中使用多个 TacoTranslate 提供者。
请注意,相同的字符串在不同的起源中可能会有不同的翻译。
归根结底,如何将字符串划分到不同的 origins 取决于您和您的需求。不过,请注意,将大量字符串放在同一个 origin 中可能会增加加载时间。
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}
/>
);
}
上述示例将以纯文本形式呈现。