Найкраще рішення для інтернаціоналізації (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. Якщо ми перебуваємо в локальному, тестовому або стейджинговому середовищі (isProduction
is false
), ми використовуватимемо секретний API-ключ read/write
, щоб переконатися, що нові рядки надсилаються на переклад.
До цього моменту ми лише налаштували застосунок 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-ключ зможуть створювати нові рядки для перекладу. Рекомендуємо мати закрите та захищене staging-середовище, де ви зможете тестувати 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!