TacoTranslate
/
เอกสารประกอบการตั้งราคา
 
บทความ
04 พ.ค.

โซลูชันที่ดีที่สุดสำหรับการทำให้เป็นสากล (i18n) ในแอป Next.js

คุณกำลังมองหาวิธีขยายแอปพลิเคชัน Next.js ของคุณไปยังตลาดใหม่หรือไม่? TacoTranslate ทำให้การปรับภาษาให้กับโปรเจกต์ Next.js ของคุณเป็นเรื่องง่ายอย่างไม่น่าเชื่อ ช่วยให้คุณเข้าถึงผู้ชมทั่วโลกได้โดยไม่ยุ่งยาก

ทำไมต้องเลือก TacoTranslate สำหรับ Next.js?

  • การผสานรวมอย่างไร้รอยต่อ: ออกแบบมาเฉพาะสำหรับแอปพลิเคชัน Next.js TacoTranslate สามารถรวมเข้ากับเวิร์กโฟลว์ที่มีอยู่ของคุณได้อย่างง่ายดาย
  • การรวบรวมสตริงอัตโนมัติ: ไม่ต้องจัดการไฟล์ JSON ด้วยตนเองอีกต่อไป TacoTranslate จะรวบรวมสตริงจากฐานโค้ดของคุณโดยอัตโนมัติ
  • การแปลด้วยพลัง AI: ใช้พลังของ AI เพื่อให้การแปลที่ถูกต้องตามบริบทและเหมาะสมกับโทนของแอปพลิเคชันของคุณ
  • รองรับภาษาทันที: เพิ่มการรองรับภาษาสำหรับภาษาใหม่ได้เพียงคลิกเดียว ทำให้แอปของคุณเข้าถึงได้ทั่วโลก

วิธีการทำงาน

เมื่อโลกกลายเป็นโลกาภิวัตน์มากขึ้น นักพัฒนาเว็บจึงต้องสร้างแอปพลิเคชันที่สามารถรองรับผู้ใช้จากประเทศและวัฒนธรรมที่แตกต่างกันได้มากขึ้น หนึ่งในวิธีสำคัญในการทำให้ได้เช่นนี้คือการทำให้แอปพลิเคชันรองรับสากล (internationalization หรือ i18n) ซึ่งช่วยให้คุณปรับแอปของคุณให้เข้ากับภาษาต่าง ๆ สกุลเงิน และรูปแบบวันที่ที่หลากหลายได้

ในบทเรียนนี้ เราจะมาสำรวจวิธีการเพิ่มระบบรองรับสากลให้กับแอป React Next.js ของคุณ พร้อมกับการเรนเดอร์จากฝั่งเซิร์ฟเวอร์ TL;DR: ดูตัวอย่างเต็มได้ที่นี่

คำแนะนำนี้สำหรับแอปพลิเคชัน Next.js ที่ใช้ Pages Router.
หากคุณกำลังใช้ App Router, กรุณาดูคำแนะนำนี้แทน.

ขั้นตอนที่ 1: ติดตั้งไลบรารี i18n

ในการใช้งานสากลในแอปพลิเคชัน Next.js ของคุณ เราจะเริ่มต้นด้วยการเลือกไลบรารี i18n มีไลบรารียอดนิยมหลายตัว รวมถึง next-intl อย่างไรก็ตาม ในตัวอย่างนี้ เราจะใช้ TacoTranslate

TacoTranslate จะแปลสตริงของคุณให้อัตโนมัติเป็นทุกภาษาโดยใช้ AI ขั้นสูง และช่วยให้คุณไม่ต้องจัดการไฟล์ JSON ที่ยุ่งยาก

มาลงติดตั้งโดยใช้ npm ในเทอร์มินัลของคุณ:

npm install tacotranslate

ขั้นตอนที่ 2: สร้างบัญชี TacoTranslate ฟรี

ตอนนี้ที่คุณได้ติดตั้งโมดูลแล้ว ก็ถึงเวลาสร้างบัญชี TacoTranslate ของคุณ โปรเจกต์แปลภาษา และคีย์ API ที่เกี่ยวข้อง สร้างบัญชีที่นี่ ฟรี และ ไม่ต้องใช้บัตรเครดิต

ภายใน UI ของแอปพลิเคชัน TacoTranslate ให้สร้างโปรเจ็กต์ แล้วไปที่แท็บ API keys ของโปรเจ็กต์นั้น สร้าง read key หนึ่งอัน และ read/write key หนึ่งอัน เราจะบันทึกคีย์เหล่านี้เป็นตัวแปรสภาพแวดล้อม read key คือสิ่งที่เราเรียกว่า public และ read/write key คือ secret. ตัวอย่างเช่น คุณสามารถเพิ่มคีย์เหล่านี้ลงในไฟล์ .env ที่อยู่ในโฟลเดอร์รากของโปรเจ็กต์ของคุณได้

.env
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010

โปรดระวังอย่าให้ read/write API key ที่เป็นความลับรั่วไหลไปยังสภาพแวดล้อมการผลิตฝั่งไคลเอนต์เด็ดขาด

เราจะเพิ่มตัวแปรสภาพแวดล้อมอีกสองตัว: TACOTRANSLATE_DEFAULT_LOCALE และ TACOTRANSLATE_ORIGIN.

  • TACOTRANSLATE_DEFAULT_LOCALE: รหัสโค้ดภาษาที่ใช้เป็นค่าเริ่มต้นเมื่อไม่พบภาษาอื่น ในตัวอย่างนี้ เราจะตั้งค่าเป็น en สำหรับภาษาอังกฤษ
  • TACOTRANSLATE_ORIGIN: “โฟลเดอร์” ที่จะเก็บข้อความของคุณ เช่น URL ของเว็บไซต์ของคุณ อ่านเพิ่มเติมเกี่ยวกับ origins ได้ที่นี่
.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 โดยอัตโนมัติในไม่ช้านี้

การสร้าง client ในไฟล์แยกต่างหากทำให้ใช้งานซ้ำได้ง่ายขึ้นในภายหลัง ตอนนี้ โดยใช้ /pages/_app.tsx แบบกำหนดเอง เราจะเพิ่ม provider ของ 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 ให้เหมาะกับการตั้งค่าของคุณ หาก trueTacoTranslate จะแสดงคีย์ 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 เท่านั้นที่จะสามารถสร้างสตริงใหม่เพื่อแปลได้ เราแนะนำให้มีสภาพแวดล้อมทดสอบ (staging) ที่ปิดและปลอดภัยซึ่งคุณสามารถทดสอบแอปพลิเคชันในสภาพแวดล้อมการผลิตของคุณด้วยคีย์ API แบบนั้น โดยเพิ่มสตริงใหม่ก่อนที่จะเปิดใช้งานจริง วิธีนี้จะช่วยป้องกันไม่ให้ใครก็ตามขโมยคีย์ API ลับของคุณ และยังช่วยป้องกันไม่ให้โปรเจกต์แปลของคุณมีสตริงที่ไม่เกี่ยวข้องเพิ่มเข้ามามากเกินไป.

โปรดอย่าลืม ดูตัวอย่างทั้งหมด ได้ที่โปรไฟล์ GitHub ของเรา ที่นั่นคุณจะพบตัวอย่างการทำเช่นนี้โดยใช้ App Router ด้วย! หากคุณพบปัญหาใด ๆ กรุณา ติดต่อเรา เรายินดีเป็นอย่างยิ่งที่จะช่วยเหลือคุณ

TacoTranslate ช่วยให้คุณแปลแอป React ของคุณได้อย่างรวดเร็วและอัตโนมัติทั้งไปและกลับในทุกภาษา เริ่มต้นวันนี้!

ผลิตภัณฑ์จาก Nattskiftet