TacoTranslate
/
תיעודתמחור
 
מאמר
04 במאי

הפתרון הטוב ביותר לאינטרנציונליזציה (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, עיינו במדריך זה במקום זאת.

שלב 1: התקן ספריית i18n

על מנת להוסיף תמיכה ברב-לשוניות (i18n) לאפליקציית Next.js שלך, נתחיל בבחירת ספריית i18n. ישנן כמה ספריות פופולריות, כולל next-intl. עם זאת, בדוגמה זו נשתמש בTacoTranslate.

TacoTranslate מתרגמת אוטומטית את המחרוזות שלך לכל שפה באמצעות בינה מלאכותית מתקדמת, ומשחררת אותך מהניהול המייגע של קבצי JSON.

נתקין אותה באמצעות npm בטרמינל שלך:

npm install tacotranslate

שלב 2: צור חשבון 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: קוד ה-locale המשמש כברירת מחדל כגיבוי. בדוגמה זו נקבע אותו ל־en עבור אנגלית.
  • TACOTRANSLATE_ORIGIN: ה"תיקייה" שבה יישמרו המחרוזות שלך, כגון כתובת ה-URL של האתר שלך. למידע נוסף על המקורות, לחצו כאן.
.env
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com

שלב 3: הגדרת 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, הרחב את ההגדרה בתכונות ובקוד שמופיעים לעיל.

שלב 4: הטמעת רינדור בצד השרת

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 מוגדר ל-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!"/>
}

שלב 5: פרוס ובדוק!

סיימנו! האפליקציה שלך ב-Next.js תתורגם מעתה באופן אוטומטי כאשר תוסיף מחרוזות כלשהן לרכיב Translate. שים לב שרק סביבות שיש להן הרשאות read/write על מפתח ה-API יוכלו ליצור מחרוזות חדשות לתרגום. אנו ממליצים להחזיק סביבת בדיקה סגורה ומאובטחת שבה תוכל לבדוק את אפליקציית הייצור שלך באמצעות מפתח 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מיוצר בנורווגיה