TacoTranslate
/
مستنداتقیمت گذاری
 
آموزش
۱۴ ثور

چگونه می‌توان بین‌المللی‌سازی را در یک برنامه Next.js که از Pages Router استفاده می‌کند، پیاده‌سازی کرد

اپلیکیشن React خود را بیشتر قابل دسترس کنید و با بکارگیری بین‌المللی‌سازی (i18n) به بازارهای جدید دست پیدا کنید.

همزمان با جهانی‌تر شدن دنیا، برای توسعه‌دهندگان وب اهمیت بیشتری پیدا می‌کند که برنامه‌هایی بسازند که بتوانند نیازهای کاربران از کشورهای مختلف و فرهنگ‌های گوناگون را برآورده کنند. یکی از راه‌های کلیدی برای رسیدن به این هدف، بین‌المللی‌سازی (i18n) است که به شما اجازه می‌دهد برنامه‌تان را به زبان‌ها، ارزها، و فرمت‌های تاریخ مختلف تطبیق دهید.

در این آموزش، ما نحوه افزودن بین‌المللی‌سازی به برنامه React Next.js شما با استفاده از رندرینگ سمت سرور را بررسی خواهیم کرد. TL;DR: نمونه کامل را اینجا ببینید.

این راهنما برای برنامه‌های Next.js است که از Pages Router استفاده می‌کنند.
اگر از App Router استفاده می‌کنید، لطفاً به جای آن این راهنما را مشاهده کنید.

مرحله ۱: نصب یک کتابخانه i18n

برای پیاده‌سازی بین‌المللی‌سازی در برنامه Next.js خود، ابتدا یک کتابخانه i18n انتخاب خواهیم کرد. چندین کتابخانه محبوب وجود دارد، از جمله next-intl. با این حال، در این مثال، ما از TacoTranslate استفاده خواهیم کرد.

TacoTranslate به‌طور خودکار رشته‌های شما را به هر زبان با استفاده از هوش مصنوعی پیشرفته ترجمه می‌کند و شما را از مدیریت خسته‌کننده فایل‌های JSON آزاد می‌سازد.

بیایید آن را با استفاده از npm در ترمینال خود نصب کنیم:

npm install tacotranslate

مرحله ۲: یک حساب رایگان TacoTranslate بسازید

حال که ماژول را نصب کرده‌اید، وقت آن است که حساب کاربری TacoTranslate خود را ایجاد کنید، یک پروژه ترجمه بسازید، و کلیدهای API مرتبط را دریافت کنید. اینجا حساب بسازید. این کار رایگان است، و نیازی به افزودن کارت اعتباری ندارد.

در داخل رابط کاربری برنامه TacoTranslate، یک پروژه ایجاد کنید و به تب کلیدهای 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 وب‌سایت شما. بیشتر درباره منشا‌ها اینجا بخوانید.
.env
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com

گام ۳: راه‌اندازی TacoTranslate

To integrate TacoTranslate with your application, you’ll need to create a client using the API keys from earlier. For example, create a file named /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 سفارشی دارید، لطفاً تعریف را با ویژگی‌ها و کدهای بالا گسترش دهید.

مرحله ۴: پیاده‌سازی رندرینگ سمت سرور

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 عمومی را نمایش خواهد داد. اگر در یک محیط محلی، آزمایشی یا مرحله‌بندی (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دارید.

/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!"/>
}

گام ۵: استقرار و آزمایش کنید!

کار ما تمام شد! اکنون برنامه React شما به طور خودکار ترجمه خواهد شد هر زمان که هر رشته‌ای را به یک Translate کامپوننت اضافه کنید. توجه داشته باشید که فقط محیط‌هایی که دارای مجوز read/write روی کلید API هستند، قادر خواهند بود رشته‌های جدیدی برای ترجمه ایجاد کنند. ما توصیه می‌کنیم یک محیط staging بسته و امن داشته باشید که بتوانید برنامه تولیدی خود را با چنین کلید API آزمایش کنید، و قبل از راه‌اندازی رشته‌های جدید اضافه کنید. این کار از دزدیده شدن کلید API مخفی شما توسط هر کسی جلوگیری خواهد کرد و همچنین احتمال پر شدن غیرضروری پروژه ترجمه شما با رشته‌های نامرتبط را کاهش می‌دهد.

حتماً نمونه‌ی کامل را در پروفایل گیت‌هاب ما بررسی کنید. آنجا همچنین یک نمونه از نحوه انجام این کار با استفاده از App Router خواهید یافت! اگر با مشکلی مواجه شدید، لطفاً با ما تماس بگیرید، و ما با خوشحالی آماده کمک به شما هستیم.

TacoTranslate به شما امکان می‌دهد تا برنامه‌های React خود را سریعاً و به‌صورت خودکار به هر زبانی محلی‌سازی کنید و از آن زبان‌ها بازگردید. امروز شروع کنید!

یک محصول از Nattskiftet