بهترین راهحل برای بینالمللیسازی (i18n) در برنامههای Next.js
آیا به دنبال گسترش اپلیکیشن Next.js خود به بازارهای جدید هستید؟ TacoTranslate بومیسازی پروژه Next.js را بسیار ساده میکند و به شما امکان میدهد بدون دردسر به مخاطبان جهانی دست یابید.
چرا TacoTranslate را برای Next.js انتخاب کنید؟
- ادغام یکپارچه: TacoTranslate که بهصورت اختصاصی برای برنامههای Next.js طراحی شده، بهسادگی در گردشکار فعلی شما ادغام میشود.
- جمعآوری خودکار رشتهها: دیگر نیازی به مدیریت دستی فایلهای JSON نیست. TacoTranslate بهطور خودکار رشتهها را از کدِ شما جمعآوری میکند.
- ترجمههای مبتنی بر هوش مصنوعی: از توان هوش مصنوعی استفاده کنید تا ترجمههایی دقیق و متناسب با زمینه و لحن برنامهتان ارائه شود.
- پشتیبانی فوری از زبانها: با تنها یک کلیک پشتیبانی از زبانهای جدید را اضافه کنید و برنامهتان را برای مخاطبان جهانی در دسترس قرار دهید.
نحوه کار
با جهانیشدنِ روزافزون، برای توسعهدهندگان وب اهمیت فزایندهای دارد که برنامههایی بسازند که بتوانند نیازهای کاربران از کشورهای و فرهنگهای مختلف را برآورده کنند. یکی از راههای کلیدی برای دستیابی به این هدف، بینالمللیسازی (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
در ریشهٔ پروژهتان اضافه کنید.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010
مطمئن شوید که هرگز کلید مخفی read/write
API را در محیطهای تولید سمت کلاینت فاش نکنید.
همچنین دو متغیر محیطی دیگر اضافه خواهیم کرد: TACOTRANSLATE_DEFAULT_LOCALE
و TACOTRANSLATE_ORIGIN
.
TACOTRANSLATE_DEFAULT_LOCALE
: کد لوکال پیشفرض پشتیبان. در این مثال آن را رویen
برای زبان انگلیسی تنظیم میکنیم.TACOTRANSLATE_ORIGIN
: «پوشهای» که رشتههای شما در آن ذخیره خواهند شد، مانند آدرس وبسایت شما. برای اطلاعات بیشتر درباره مبدأها، اینجا را بخوانید.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com
مرحلهٔ ۳: راهاندازی TacoTranslate
برای ادغام TacoTranslate با برنامهٔ خود، باید با استفاده از کلیدهای API که قبلاً ساختهاید، یک کلاینت ایجاد کنید. برای مثال، فایلی با نام /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
را اضافه میکنیم.
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
شروع خواهیم کرد.
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
دارید.
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!"/>
}
مرحله ۵: استقرار و آزمایش!
تمام شد! از این پس برنامه Next.js شما بهطور خودکار هر زمان که هر رشتهای را به یک کامپوننت Translate
اضافه کنید، ترجمه خواهد شد. توجه داشته باشید که تنها محیطهایی که روی کلید API مجوز read/write
دارند قادر به ایجاد رشتههای جدید برای ترجمه خواهند بود. توصیه میکنیم یک محیط staging بسته و ایمن داشته باشید تا بتوانید برنامه تولیدیتان را با چنین کلید 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!