TacoTranslate
/
ДокументацияЦенообразуване
 
Статия
04.05.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/write ключът е secret. Например, можете да ги добавите в файл .env в корена на вашия проект.

.env
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010

Уверете се, че никога не разкривате тайната read/write API ключ в клиентските продукционни среди.

Ще добавим и още две променливи на средата: TACOTRANSLATE_DEFAULT_LOCALE и TACOTRANSLATE_ORIGIN.

  • TACOTRANSLATE_DEFAULT_LOCALE: Кодът на локала по подразбиране (fallback). В този пример ще го зададем на 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Произведено в Норвегия