Найкраще рішення для інтернаціоналізації (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 вашого сайту. Дізнайтеся більше про origins тут.
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 зможуть створювати нові рядки для перекладу. Ми рекомендуємо мати закрите та захищене тестове середовище, де ви зможете перевіряти свій production-додаток з таким ключем 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!