TacoTranslate
/
БаримтжуулалтҮнийн төлөвлөгөө
 
Зааварчилгаа
5-р сарын 04

Next.js програмд, Pages Router ашиглаж байгаа тохиолдолд олон хэлийн дэмжлэгийг хэрхэн хэрэгжүүлэх вэ

React аппликейшнаа илүү хүртээмжтэй болгож, олон шинэ зах зээлд хүрэхийн тулд олон хэлний дэмжлэг (i18n)-ийг ашигла.

Дэлхий улам илүү глобалчлагдаж байгаа энэ үед, вэб хөгжүүлэгчдэд өөр өөр улс орон, соёлын хэрэглэгчдэд зориулагдсан програмуудыг бүтээх нь улам чухал болж байна. Үүнийг хэрэгжүүлэх гол аргуудын нэг нь олон улсынжуулалт (i18n) бөгөөд энэ нь таны програмыг янз бүрийн хэл, валют болон огнооны форматуудтай тохируулж боломжийг олгодог.

Энэхүү зааварт бид React Next.js програмд сервер талын рендерингтэйгээр олон улсынжуулалтыг хэрхэн нэмэхийг судлах болно. TL;DR: Бүрэн жишээг эндээс үзнэ үү.

Энэхүү заавар нь Pages Router ашиглаж байгаа Next.js програмуудын хувьд зориулагдсан.
Хэрэв та App Router ашиглаж байгаа бол оронд нь энэ зааврыг үзнэ үү.

1-р алхам: i18n номын санг суулгах

Next.js програмдаа олон хэлний боломж (i18n) оруулахын тулд эхлээд i18n номын сан сонгоно. Үүнд хэд хэдэн алдартай номын сан байдаг, түүний дотор next-intl. Гэсэн хэдий ч энэ жишээнд бид TacoTranslate-ыг ашиглах болно.

TacoTranslate нь дэвшилтэт хиймэл оюун ухааны тусламжтайгаар таны тэмдэгт мөрүүдийг ямар ч хэл рүү автоматаар орчуулж, JSON файлуудын уйтгартай удирдлагаас чөлөөлнө.

Терминал дээрээ npm ашиглан суулгая:

npm install tacotranslate

Алхам 2: TacoTranslate-д үнэгүй бүртгэл үүсгээрэй

Модулийг суулгасан тул одоо TacoTranslate данс, орчуулгын төсөл болон холбогдох API түлхүүрүүдээ үүсгэх цаг боллоо. Энд данс үүсгээрэй. Энэ нь үнэгүй бөгөөд кредит карт оруулах шаардлагагүй.

TacoTranslate аппликейшний UI-д төсөл үүсгээд, API keys таб руу орно уу. Нэг 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.

.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 түлхүүр ашиглан бүтээгдэхүүнээ амьдралд гаргахаас өмнө шинэ тэмдэгтүүдийг энд нэмж туршиж үзэх зориулалттай хаалттай, аюулгүй туршилтын орчин (staging) бүрдүүлэхийг бид зөвлөж байна. Энэ нь таны нууц API түлхүүрийг хэн нэгэн хулгайлах, мөн шинэ, харилцан хамааралгүй тэмдэгтүүдийг нэмэх замаар орчуулгын төслийг нэмэгдүүлэхээс сэргийлнэ.

Манай GitHub профайлаас бүрэн жишээг заавал үзээрэй. Тэнд та мөн үүнийг App Router ашиглан хэрхэн хийх жишээг олох болно! Хэрэв ямар нэг асуудал тулгарвал чөлөөтэй холбоо барина уу, бид танд баяртайгаар туслах болно.

TacoTranslate нь таны React програмуудыг 75-аас дээш хэл рүү болон тэднээс нь автоматаар, хурдан орчуулах боломжийг олгодог. Өнөөдөр эхлээрэй!

Nattskiftet-ээс гаралтай бүтээгдэхүүнНорвегид үйлдвэрлэсэн