TacoTranslate
/
مستنداتتعرفه‌ها
 
مقاله
۱۴ اردیبهشت ۱۴۰۴

بهترین راه‌حل برای بین‌المللی‌سازی (i18n) در اپلیکیشن‌های Next.js

آیا می‌خواهید برنامهٔ Next.js خود را به بازارهای جدید گسترش دهید؟ TacoTranslate بومی‌سازی پروژهٔ Next.js شما را بسیار آسان می‌کند و به شما امکان می‌دهد بدون دردسر به مخاطبان جهانی دست یابید.

چرا TacoTranslate را برای Next.js انتخاب کنید؟

  • ادغام بی‌درز: TacoTranslate که به‌طور خاص برای برنامه‌های Next.js طراحی شده، به‌سادگی در روند کاری فعلی شما ادغام می‌شود.
  • جمع‌آوری خودکار رشته‌ها: دیگر نیازی به مدیریت دستی فایل‌های JSON نیست. TacoTranslate به‌طور خودکار رشته‌ها را از کدپایهٔ شما جمع‌آوری می‌کند.
  • ترجمه‌های مبتنی بر هوش مصنوعی: از قدرت هوش مصنوعی بهره ببرید تا ترجمه‌هایی دقیق از نظر زمینه و متناسب با لحن اپلیکیشن شما ارائه شود.
  • پشتیبانی فوری از زبان‌ها: با تنها یک کلیک پشتیبانی از زبان‌های جدید را اضافه کنید و اپلیکیشن‌تان را برای مخاطبان جهانی در دسترس قرار دهید.

نحوهٔ کار

با جهانی‌شدن روزافزون، برای توسعه‌دهندگان وب اهمیت فزاینده‌ای دارد که برنامه‌هایی بسازند که بتوانند نیازهای کاربران از کشورهای و فرهنگ‌های مختلف را برآورده کنند. One of the key ways to achieve this is through internationalization (i18n), which allows you to adapt your application to different languages, currencies, and date formats.

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

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

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

برای پیاده‌سازی بین‌المللی‌سازی (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

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

ما همچنین دو متغیر محیطی دیگر اضافه خواهیم کرد: TACOTRANSLATE_DEFAULT_LOCALE و 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 عمومی را نمایان می‌کند. اگر در یک محیط محلی، تست یا staging باشیم (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 دارید.

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

مرحله ۵: راه‌اندازی و آزمایش!

کار تمام شد! اکنون وقتی هر رشته‌ای را داخل یک مؤلفه Translate اضافه کنید، برنامهٔ Next.js شما به‌صورت خودکار ترجمه خواهد شد. توجه داشته باشید که تنها محیط‌هایی که روی کلید API مجوز read/write دارند قادر به ایجاد رشته‌های جدید برای ترجمه خواهند بود. توصیه می‌کنیم یک محیط استیجینگ (آزمایشی) بسته و امن داشته باشید که بتوانید در آن نسخهٔ تولید برنامهٔ خود را با چنین کلید 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!

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