TacoTranslate
/
ДокументаціяЦіни
 
Стаття
04 трав. 2025 р.

Найкраще рішення для інтернаціоналізації (i18n) в додатках Next.js

Плануєте вивести свій додаток Next.js на нові ринки? TacoTranslate надзвичайно спрощує локалізацію вашого проєкту Next.js, дозволяючи вам охопити глобальну аудиторію без зайвих клопотів.

Чому вибрати TacoTranslate для Next.js?

  • Безшовна інтеграція: Розроблено спеціально для застосунків Next.js, TacoTranslate легко інтегрується у ваш існуючий робочий процес.
  • Автоматичний збір рядків: Більше не потрібно вручну керувати JSON-файлами. TacoTranslate автоматично збирає рядки з вашої кодової бази.
  • Переклади на базі ШІ: Використовуйте потужність ШІ для надання контекстно точних перекладів, що відповідають тональності вашого застосунку.
  • Миттєва підтримка мов: Додайте підтримку нових мов одним кліком, щоб зробити ваш застосунок доступним у всьому світі.

Як це працює

У міру глобалізації світу веброзробникам стає дедалі важливіше створювати застосунки, які можуть задовольняти потреби користувачів з різних країн і культур. Один із ключових способів досягти цього — інтернаціоналізація (i18n), яка дозволяє адаптувати ваш застосунок до різних мов, валют та форматів дат.

У цьому підручнику ми розглянемо, як додати інтернаціоналізацію до вашого React Next.js застосунку з рендерингом на сервері. TL;DR: Перегляньте повний приклад тут.

Цей посібник призначений для застосунків Next.js, які використовують Pages Router.
Якщо ви використовуєте App Router, перегляньте натомість цей посібник.

Крок 1: Встановіть бібліотеку i18n

Щоб реалізувати інтернаціоналізацію у вашому застосунку Next.js, спершу оберемо бібліотеку i18n. Існує кілька популярних бібліотек, зокрема next-intl. Однак у цьому прикладі ми будемо використовувати TacoTranslate.

TacoTranslate автоматично перекладає ваші рядки будь-якою мовою з використанням передових технологій ШІ та звільняє вас від нудного керування файлами JSON.

Встановімо його за допомогою npm у вашому терміналі:

npm install tacotranslate

Крок 2: Створіть безкоштовний обліковий запис TacoTranslate

Тепер, коли ви встановили модуль, настав час створити обліковий запис TacoTranslate, проєкт перекладу та пов’язані ключі API. Створіть обліковий запис тут. Це безкоштовно, і не вимагає додавання кредитної картки.

У інтерфейсі програми TacoTranslate створіть проєкт і перейдіть на вкладку API-ключів. Створіть один read ключ і один read/write ключ. Ми збережемо їх як змінні середовища. Ключ read — це те, що ми називаємо public, а ключ read/writesecret. Наприклад, ви можете додати їх у файл .env у корені вашого проєкту.

.env
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010

Переконайтеся, що ви ніколи не розкриваєте секретний read/write API-ключ у клієнтських виробничих середовищах.

Ми також додамо ще дві змінні середовища: TACOTRANSLATE_DEFAULT_LOCALE та TACOTRANSLATE_ORIGIN.

  • TACOTRANSLATE_DEFAULT_LOCALE: Код локалі за замовчуванням. У цьому прикладі ми встановимо його на en для англійської.
  • TACOTRANSLATE_ORIGIN: “папка”, де зберігатимуться ваші рядки, наприклад URL вашого вебсайту. Дізнайтеся більше про джерела тут.
.env
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com

Крок 3: Налаштування TacoTranslate

Щоб інтегрувати TacoTranslate у ваш застосунок, вам потрібно створити клієнта, використовуючи раніше отримані API-ключі. Наприклад, створіть файл із назвою /tacotranslate-client.js.

/tacotranslate-client.js
const {default: createTacoTranslateClient} = require('tacotranslate');

const tacoTranslate = createTacoTranslateClient({
	apiKey:
		process.env.TACOTRANSLATE_SECRET_API_KEY ??
		process.env.TACOTRANSLATE_PUBLIC_API_KEY ??
		process.env.TACOTRANSLATE_API_KEY ??
		'',
	projectLocale: process.env.TACOTRANSLATE_DEFAULT_LOCALE ?? '',
});

module.exports = tacoTranslate;

Ми незабаром автоматично визначимо TACOTRANSLATE_API_KEY.

Створення клієнта в окремому файлі полегшує його повторне використання в майбутньому. Тепер, використовуючи власний /pages/_app.tsx, ми додамо провайдера TacoTranslate.

/pages/_app.tsx
import React from 'react';
import {type AppProps} from 'next/app';
import {type Origin, type Locale, type Localizations} from 'tacotranslate';
import TacoTranslate from 'tacotranslate/react';
import TacoTranslateHead from 'tacotranslate/next/head';
import tacoTranslate from '../tacotranslate-client';

type PageProperties = {
	origin: Origin;
	locale: Locale;
	locales: Locale[];
	localizations: Localizations;
};

export default function App({Component, pageProps}: AppProps<PageProperties>) {
	const {origin, locale, locales, localizations} = pageProps;

	return (
		<TacoTranslate
			client={tacoTranslate}
			origin={origin}
			locale={locale}
			localizations={localizations}
		>
			<TacoTranslateHead rootUrl="https://your-website.com" locales={locales} />
			<Component {...pageProps} />
		</TacoTranslate>
	);
}

Якщо у вас вже є власні pageProps та _app.tsx, будь ласка, розширте визначення властивостями та кодом, наведеними вище.

Крок 4: Реалізація серверного рендерингу

TacoTranslate дозволяє виконувати серверний рендеринг ваших перекладів. Це значно покращує користувацький досвід, показуючи перекладений вміст одразу, замість спалаху неперекладеного вмісту спочатку. Крім того, ми можемо уникнути мережевих запитів на боці клієнта, оскільки вже маємо всі необхідні переклади.

Почнемо зі створення або модифікації /next.config.js.

/next.config.js
const withTacoTranslate = require('tacotranslate/next/config').default;
const tacoTranslateClient = require('./tacotranslate-client');

module.exports = async () => {
	const config = {};

	return withTacoTranslate(config, {
		client: tacoTranslateClient,
		isProduction:
			process.env.TACOTRANSLATE_ENV === 'production' ||
			process.env.VERCEL_ENV === 'production' ||
			(!(process.env.TACOTRANSLATE_ENV || process.env.VERCEL_ENV) &&
				process.env.NODE_ENV === 'production'),
	});
};

Змініть перевірку isProduction відповідно до вашої конфігурації. Якщо true, TacoTranslate відобразить публічний API-ключ. Якщо ми в локальному, тестовому або стейджинговому середовищі (isProduction is false), ми будемо використовувати секретний read/write API-ключ, щоб переконатися, що нові рядки надсилаються на переклад.

До цього часу ми лише налаштували додаток Next.js зі списком підтримуваних мов. Наступним кроком буде отримання перекладів для всіх ваших сторінок. Для цього ви використаєте або getTacoTranslateStaticProps або getTacoTranslateServerSideProps залежно від ваших вимог.

Ці функції приймають три аргументи: один об'єкт Next.js Static Props Context, конфігурацію для TacoTranslate та необов'язкові властивості Next.js. Зверніть увагу, що revalidate у getTacoTranslateStaticProps за замовчуванням встановлено на 60, щоб ваші переклади залишалися актуальними.

Щоб використати будь-яку з цих функцій на сторінці, припустимо, у вас є файл сторінки, наприклад /pages/hello-world.tsx.

/pages/hello-world.tsx
import {Translate} from 'tacotranslate/react';
import getTacoTranslateStaticProps from 'tacotranslate/next/get-static-props';
import tacoTranslateClient from '../tacotranslate-client';

export async function getStaticProps(context) {
	return getTacoTranslateStaticProps(context, {client: tacoTranslateClient});
}

export default function Page() {
	return <Translate string="Hello, world!"/>;
}

Тепер ви зможете використовувати компонент Translate для перекладу рядків у всіх ваших React-компонентах.

import {Translate} from 'tacotranslate/react';

function Component() {
	return <Translate string="Hello, world!"/>
}

Крок 5: Розгорніть та протестуйте!

Готово! Тепер ваш додаток Next.js буде автоматично перекладатися, коли ви додаєте будь-які рядки в компонент Translate. Зверніть увагу, що лише середовища з дозволами read/write на ключ API зможуть створювати нові рядки для перекладу. Ми рекомендуємо мати закрите й захищене стейджингове середовище, де ви зможете тестувати ваш продакшн-додаток із таким ключем API, додаючи нові рядки перед запуском. Це запобігатиме викраденню вашого секретного ключа API та потенційному розростанню вашого проєкту перекладів через додавання нових, не пов'язаних рядків.

Be sure to check out the complete example over at our GitHub profile. There, you’ll also find an example of how to do this using the App Router! If you encounter any problems, feel free to reach out, and we’ll be more than happy to help.

TacoTranslate lets you automatically localize your React applications quickly to and from over 75 languages. Get started today!

Продукт від NattskiftetЗроблено в Норвегії