TacoTranslate
/
ДокументацияЦены
 
  1. Введение
  2. Начало работы
  3. Настройка и конфигурация
  4. Использование TacoTranslate
  5. Серверная отрисовка
  6. Расширенное использование
  7. Лучшие практики
  8. Обработка ошибок и отладка
  9. Поддерживаемые языки

Расширенное использование

Обработка языков справа налево

TacoTranslate позволяет легко поддерживать языки с направлением текста справа налево (RTL), такие как арабский и иврит, в ваших приложениях на React. Правильная обработка языков 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, вы гарантируете, что каждый экземпляр строки будет переведен точно в соответствии с его конкретным значением.

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