TacoTranslate
/
ҚұжаттамаБағалар
 
Оқу материалы
04 мам.

Pages Router қолданатын Next.js қосымшасында халықаралықтауды қалай енгізуге болады

React қолданбаңызды халықаралықтандыру (i18n) арқылы қолжетімдірек етіп, жаңа нарықтарға жетіңіз.

Әлем жаһанданған сайын, веб-әзірлеушілер үшін әртүрлі елдер мен мәдениеттерден келген пайдаланушыларға арналған қолданбаларды жасау маңыздырақ болуда. Мұны жүзеге асырудың негізгі жолдарының бірі — халықаралықтандыру (i18n), ол сізге қолданбаңызды әртүрлі тілдерге, валюталарға және күн форматтарына бейімдеуге мүмкіндік береді.

Осы оқулықта біз React Next.js қолданбаңызға сервер жағындағы рендерингпен халықаралықтандыруды қалай қосуға болатынын талқылаймыз. TL;DR: Толық мысалды мұнда қараңыз.

Бұл нұсқаулық Pages Router қолданатын Next.js қосымшалары үшін арналған.
Егер сіз App Router қолдансаңыз, онда осы нұсқаулықты қараңыз.

1-қадам: i18n кітапханасын орнатыңыз

Next.js қосымшаңызда халықаралықтандыруды жүзеге асыру үшін алдымен i18n кітапханасын таңдаймыз. Бірқатар танымал кітапханалар бар, оның ішінде next-intl бар. Алайда, осы мысалда біз TacoTranslate қолданамыз.

TacoTranslate заманауи AI қолдана отырып, жолдарыңызды автоматты түрде кез келген тілге аударады және сізді JSON файлдарын қажырлы басқару жұмысынан босатады.

Оны терминалыңызда npm арқылы орнатайық:

npm install tacotranslate

2-қадам: TacoTranslate-де тегін аккаунт жасаңыз

Енді модульді орнатқаннан кейін, TacoTranslate тіркелгісін, аударма жобасын және байланысты API кілттерін жасау уақыты келді. Мұнда тіркелгі жасаңыз. Бұл тегін, және несие картасын қосуды талап етпейді.

TacoTranslate қолданбасының UI ішінде жоба құрып, оның 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: Әдепкі қайталама локал коды. Бұл мысалда, оны ағылшын тілі үшін en деп орнатамыз.
  • TACOTRANSLATE_ORIGIN: Сіздің жолдарыңыз сақталатын «қалтасы», мысалы, веб-сайтыңыздың URL-адресі. Мұнда origins туралы толығырақ оқыңыз.
.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 кілтін көрсетеді. Егер біз локалды, тестілеу немесе staging ортасында болсақ (isProduction is false), жаңа мәтіндердің аудармаға жіберілуін қамтамасыз ету үшін құпия read/write API кілтін пайдаланамыз.

Қазірге дейін біз тек Next.js қосымшасын қолдау көрсетілетін тілдердің тізімімен баптадық. Келесі істеуіміз керек нәрсе — барлық беттеріңізге арналған аудармаларды алу. Мұны істеу үшін, талаптарыңызға байланысты getTacoTranslateStaticProps немесе getTacoTranslateServerSideProps пайдаланыңыз.

Бұл функциялар үш аргументті қабылдайды: бір Next.js Static Props Context объектісі, TacoTranslate конфигурациясы және міндетті емес Next.js қасиеттері. Ескеріңіз, getTacoTranslateStaticProps ішіндегі revalidate әдепкі бойынша 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!"/>;
}

Енді сіз барлық React компоненттеріңіздегі жолдарды аудару үшін Translate компонентін пайдалана алуыңыз керек.

import {Translate} from 'tacotranslate/react';

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

5-қадам: Жіберіп, сынап көріңіз!

Біз дайынбыз! Енді сіздің React қосымшаңызға кез келген жолдарды Translate компонентіне қосқан кезде олар автоматты түрде аударылатын болады. Назар аударыңыз, тек API кілтінде read/write рұқсаты бар ортада жаңа жолдарды аударуға арналған жасауға болады. Біз жабық және қорғалған тестілеу ортасын ұсынар едік, онда сіз өндірістік қосымшаңызды осындай API кілтімен тексеріп, жаңа жолдарды тіркеуіңізге болады, сол арқылы ресми жұмысқа шықпас бұрын. Бұл сіздің құпия API кілтіңізді ұрлаудан сақтайды және аударма жобанызға жаңа, байланыссыз жолдардың қосылуы арқылы жобаның шамадан тыс толуына жол бермейді.

Әрине, біздің GitHub профиліміздегі толық мысалды қарауды ұмытпаңыз. Сол жерде сіз App Router пайдаланып қалай жасауға болатындығының мысалын да таба аласыз! Егер қандай да бір қиындық туындаса, байланысыңыз
TacoTranslate сізге React қолданбаларын 75-тен астам тілге және тілдерден жылдам автоматты түрде локализациялауға мүмкіндік береді.
Бүгін бастау!

Nattskiftet өніміНорвегияда жасалған