TacoTranslate
/
文档定价
 
  1. 简介
  2. 开始使用
  3. 设置与配置
  4. 使用 TacoTranslate
  5. 服务器端渲染
  6. 高级用法
  7. 最佳实践
  8. 错误处理和调试
  9. 支持的语言

高级用法

处理从右到左的语言

TacoTranslate 使在你的 React 应用中支持从右到左 (RTL) 的语言(如阿拉伯语和希伯来语)变得容易。正确处理 RTL 语言可确保为从右向左阅读的用户正确显示内容。

import {useTacoTranslate} from 'tacotranslate/react';

function Document() {
	const {locale, isRightToLeft} = useTacoTranslate();

	return (
		<html lang={locale} dir={isRightToLeft ? 'rtl' : 'ltr'}>
			<body>
				// ...
			</body>
		</html>
	);
}

您也可以使用提供的 isRightToLeftLocaleCode 函数在 React 之外检查当前语言。

import {isRightToLeftLocaleCode} from 'tacotranslate';

function foo(locale = 'es') {
	const direction = isRightToLeftLocaleCode(locale) ? 'rtl' : 'ltr';
	// ...
}

禁用翻译

要对字符串的特定部分禁用翻译,或确保某些片段保持原样,可以使用三重方括号。此功能适用于保留名称、技术术语或任何其他不应被翻译的内容的原始格式。

import {Translate} from 'tacotranslate/react';

function Component() {
	return (
		<Translate string="Hello, [[[TacoTranslate]]]!" />
	);
}

在此示例中,单词 “TacoTranslate” 在翻译中将保持不变。

多个 TacoTranslate 提供者

我们强烈建议在您的应用中使用多个 TacoTranslate 提供者。这有助于将翻译和字符串组织到不同的来源,例如页眉、页脚或特定部分。

您可以在此处了解有关使用来源的更多信息

TacoTranslate 提供者会继承任何父级提供者的设置,因此您无需重复其他任何设置。

import createTacoTranslateClient from 'tacotranslate';
import {TacoTranslate} from 'tacotranslate/react';

const tacoTranslateClient = createTacoTranslateClient({apiKey: 'YOUR_API_KEY'});

function Header() {
	return (
		<TacoTranslate origin="header">
			// ...
		</TacoTranslate>
	);
}

function Menu() {
	return (
		<TacoTranslate origin="menu">
			// ...
		</TacoTranslate>
	);
}

export default function App() {
	return (
		<TacoTranslate client={tacoTranslateClient} origin="page" locale="es">
			<Header />
			<Menu />
		</TacoTranslate>
	);
}

覆盖来源或语言环境

除了使用多个 TacoTranslate 提供者之外,您还可以在 Translate 组件和 useTranslation 钩子级别上同时覆盖来源和区域设置。

import {Translate, useTranslation} from 'tacotranslate/react';

function Greeting() {
	const spanishHello = useTranslation('Hello!', {locale: 'es'});

	return (
		<>
			{spanishHello}
			<Translate string="What’s up?" origin="greeting" />
		</>
	);
}

处理加载状态

在客户端切换语言时,根据用户的网络连接情况,获取翻译可能需要一些时间。您可以显示加载指示器,在切换过程中通过提供视觉反馈来提升用户体验。

import {useTacoTranslate} from 'tacotranslate/react';

function Component() {
	const {isLoading} = useTacoTranslate();

	return (
		isLoading ? 'Translations are loading...' : null
	);
}

复数化

为了在不同语言中正确处理复数形式并显示基于计数的标签,最佳做法是:

import {Translate, useLocale} from 'tacotranslate/react';

function PhotoCount() {
	const locale = useLocale();
	const count = 1;

	return count === 0 ? (
		<Translate string="You have no photos." />
	) : count === 1 ? (
		<Translate string="You have 1 photo." />
	) : (
		<Translate
			string="You have {{count}} photos."
			variables={{count: count.toLocaleString(locale)}}
		/>
	);
}

多语言

要在同一应用程序中同时支持多种语言,您可以 使用多个 TacoTranslate 提供程序,并为它们设置不同的 locale 值,如下所示:

您也可以覆盖 locale 在组件或钩子级别

import createTacoTranslateClient from 'tacotranslate';
import {TacoTranslate, Translate} from 'tacotranslate/react';

const tacoTranslateClient = createTacoTranslateClient({apiKey: 'YOUR_API_KEY'});

function Spanish() {
	return (
		<TacoTranslate locale="es">
			<Translate string="Hello, world in Spanish!" />
		</TacoTranslate>
	);
}

function Norwegian() {
	return (
		<TacoTranslate locale="no">
			<Translate string="Hello, world in Norwegian!" />
		</TacoTranslate>
	);
}

export default function App() {
	return (
		<TacoTranslate client={tacoTranslateClient} origin="page" locale="es">
			<Spanish />
			<Norwegian />
		</TacoTranslate>
	);
}

使用翻译 ID

您可以向 Translate 组件添加 id,以处理同一字符串的不同翻译或含义。当相同文本根据上下文需要不同翻译时,这一点尤其有用。通过分配唯一的 ID,您可以确保每个字符串实例根据其特定含义得到准确翻译。

import {Translate} from 'tacotranslate/react';

function Header() {
	return (
		<Translate id="header" string="Login" />
	);
}

function Footer() {
	return (
		<Translate id="footer" string="Login" />
	);
}

例如,页眉的登录在西班牙语中可能被翻译为“Iniciar sesión”,而页脚的登录可能被翻译为“Acceder”。

最佳实践

来自 Nattskiftet 的产品挪威制造