Най-доброто решение за интернационализация (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
в корена на вашия проект.
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 адресът на вашия уебсайт. Прочетете повече за произходите тук.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com
Стъпка 3: Настройване на TacoTranslate
За да интегрирате TacoTranslate с вашето приложение, ще трябва да създадете клиент, използвайки API ключовете от по-рано. Например, създайте файл с името /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
.
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
.
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 ключ. Ако сме в локална, тестова или staging среда (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
.
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!