بهترین راهحل برای بینالمللیسازی (i18n) در برنامههای Next.js
آیا به دنبال گسترش برنامه Next.js خود به بازارهای جدید هستید؟ TacoTranslate بومیسازی پروژه Next.js شما را بسیار آسان میکند و به شما امکان میدهد بدون دردسر به مخاطبان جهانی دسترسی پیدا کنید.
چرا TacoTranslate را برای Next.js انتخاب کنید؟
- ادغام یکپارچه: بهطور خاص برای برنامههای Next.js طراحی شده است و TacoTranslate بهراحتی در جریان کاری موجود شما جای میگیرد.
- گردآوری خودکار رشتهها: دیگر نیازی به مدیریت دستی فایلهای 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 keys آن بروید. یک کلید read و یک کلید read/write ایجاد کنید. ما آنها را بهعنوان متغیرهای محیطی ذخیره خواهیم کرد. کلید read چیزی است که ما آن را public مینامیم و کلید read/write همان secret است. بهعنوان مثال، میتوانید آنها را در فایل .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: «پوشهای» که رشتههای شما در آن ذخیره خواهند شد، مانند آدرس وبسایت شما. برای اطلاعات بیشتر درباره مبداها اینجا را بخوانید.
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 عمومی را نمایش خواهد داد. اگر در یک محیط محلی، آزمایشی یا استیجینگ باشیم (isProduction is false)، از کلید API مخفی read/write استفاده خواهیم کرد تا مطمئن شویم رشتههای جدید برای ترجمه ارسال میشوند.
تا کنون فقط برنامهی Next.js را با فهرستی از زبانهای پشتیبانیشده تنظیم کردهایم. کار بعدی این است که ترجمههای همه صفحات شما را واکشی کنیم. برای انجام این کار، بسته به نیازهایتان از یکی از getTacoTranslateStaticProps یا getTacoTranslateServerSideProps استفاده خواهید کرد.
این توابع سه آرگومان میگیرند: یک شئ Next.js Static Props Context، پیکربندی برای TacoTranslate، و ویژگیهای اختیاری Next.js. توجه داشته باشید که مقدار revalidate در getTacoTranslateStaticProps بهصورت پیشفرض روی ۶۰ تنظیم شده است، تا ترجمههای شما بهروز بمانند.
برای استفاده از هر کدام از این توابع در یک صفحه، فرض کنیم فایل صفحهای مانند /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!