بهترین راه حل برای بینالمللیسازی (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 آن بروید. یک کلید 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
: «پوشهای» که رشتههای شما در آن ذخیره خواهند شد، مانند آدرس وبسایت شما. بیشتر در مورد Origins اینجا بخوانید.
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
)، ما از کلید مخفی read/write
API استفاده خواهیم کرد تا اطمینان حاصل کنیم که رشتههای جدید برای ترجمه ارسال میشوند.
تا کنون، ما تنها برنامه 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
کامپوننت اضافه کنید، ترجمه خواهد شد. توجه داشته باشید که تنها محیطهایی که اجازه read/write
روی کلید API دارند قادر به ایجاد رشتههای جدید برای ترجمه خواهند بود. ما توصیه میکنیم یک محیط تست بسته و امن داشته باشید که بتوانید برنامه تولید خود را با چنین کلید API آزمایش کنید و رشتههای جدید را پیش از انتشار اضافه نمایید. این کار از دزدیده شدن کلید API محرمانه شما توسط هر کسی جلوگیری میکند و همچنین از بزرگ شدن غیرضروری پروژه ترجمه شما با اضافه کردن رشتههای نامرتبط جلوگیری خواهد کرد.
حتماً نمونه کامل را در صفحه گیتهاب ما مشاهده کنید. در آنجا همچنین مثالی خواهید یافت که نشان میدهد چگونه با استفاده از App Router این کار را انجام دهید! اگر با مشکلی مواجه شدید، لطفاً به ما پیام دهید و ما با کمال میل آماده کمک به شما هستیم.
TacoTranslate به شما امکان میدهد برنامههای React خود را بهصورت خودکار و سریع به هر زبان بومیسازی کنید. امروز شروع کنید!