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 استفاده خواهیم کرد.

تاکوترنسلیت به طور خودکار رشته‌های شما را با استفاده از هوش مصنوعی پیشرفته به هر زبانی ترجمه می‌کند و شما را از مدیریت خسته‌کننده فایل‌های 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

حتماً هرگز کلید مخفی API read/write را به محیط‌های تولید سمت مشتری ندهید.

ما همچنین دو متغیر محیطی دیگر اضافه خواهیم کرد: TACOTRANSLATE_DEFAULT_LOCALE و TACOTRANSLATE_ORIGIN.

  • TACOTRANSLATE_DEFAULT_LOCALE: کد زبان پیش‌فرض جایگزین. در این مثال، آن را روی en برای انگلیسی تنظیم می‌کنیم.
  • TACOTRANSLATE_ORIGIN: «پوشه»‌ای که رشته‌های شما در آن ذخیره می‌شوند، مانند آدرس وب‌سایت شما. اینجا درباره منشاءها بیشتر بخوانید.
.env
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com

مرحله ۳: تنظیم 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 سفارشی دارید، لطفاً تعریف را با ویژگی‌ها و کدهای بالا گسترش دهید.

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

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) باشیم، از کلید API مخفی read/write استفاده خواهیم کرد تا مطمئن شویم رشته‌های جدید برای ترجمه ارسال می‌شوند.

تا کنون، ما فقط برنامه Next.js را با فهرستی از زبان‌های پشتیبانی شده تنظیم کرده‌ایم. قدم بعدی این است که ترجمه‌ها را برای تمام صفحات شما واکشی کنیم. برای این کار، شما بسته به نیازهای خود، از getTacoTranslateStaticProps یا getTacoTranslateServerSideProps استفاده خواهید کرد.

این توابع سه آرگومان می‌گیرند: یک شئ Next.js Static Props Context, پیکربندی برای TacoTranslate، و ویژگی‌های اختیاری Next.js. توجه داشته باشید که مقدار revalidate در getTacoTranslateStaticProps به طور پیش‌فرض روی ۶۰ تنظیم شده است، تا ترجمه‌های شما به‌روز بمانند.

برای استفاده از هر یک از این توابع در یک صفحه، فرض بگیریم که شما یک فایل صفحه مثل /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 دارند قادر خواهند بود رشته‌های جدیدی برای ترجمه ایجاد کنند. توصیه می‌کنیم یک محیط تست بسته و امن داشته باشید که بتوانید برنامه تولیدی خود را با چنین کلید API آزمایش کنید و قبل از راه‌اندازی رشته‌های جدید اضافه کنید. این کار از دزدیده شدن کلید API مخفی شما توسط هر کسی جلوگیری می‌کند و همچنین از افزایش غیرضروری حجم پروژه ترجمه شما با اضافه کردن رشته‌های نامربوط پیش‌گیری می‌کند.

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

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

یک محصول از Nattskiftetساخت نروژ