TacoTranslate
/
Tài liệuBảng giá
 
Bài viết
04 thg 5, 2025

Giải pháp tốt nhất cho quốc tế hóa (i18n) trong các ứng dụng Next.js

Bạn có đang muốn mở rộng ứng dụng Next.js của mình sang các thị trường mới không? TacoTranslate giúp việc bản địa hóa dự án Next.js của bạn trở nên vô cùng dễ dàng, cho phép bạn tiếp cận khán giả toàn cầu mà không gặp rắc rối.

Tại sao chọn TacoTranslate cho Next.js?

  • Tích hợp liền mạch: Được thiết kế riêng cho các ứng dụng Next.js, TacoTranslate tích hợp dễ dàng vào quy trình làm việc hiện tại của bạn.
  • Thu thập chuỗi tự động: Không còn phải quản lý file JSON thủ công. TacoTranslate tự động thu thập chuỗi từ mã nguồn của bạn.
  • Dịch thuật do AI hỗ trợ: Tận dụng sức mạnh của AI để cung cấp bản dịch chính xác theo ngữ cảnh phù hợp với giọng điệu của ứng dụng bạn.
  • Hỗ trợ ngôn ngữ tức thì: Thêm hỗ trợ cho ngôn ngữ mới chỉ với một cú nhấp, giúp ứng dụng của bạn tiếp cận người dùng toàn cầu.

Cách hoạt động

Khi thế giới ngày càng toàn cầu hóa, điều quan trọng hơn bao giờ hết đối với các nhà phát triển web là xây dựng các ứng dụng có thể phục vụ người dùng từ các quốc gia và nền văn hóa khác nhau. Một trong những cách chính để đạt được điều này là thông qua quốc tế hóa (i18n), cho phép bạn điều chỉnh ứng dụng của mình theo các ngôn ngữ, đơn vị tiền tệ và định dạng ngày tháng khác nhau.

Trong hướng dẫn này, chúng ta sẽ khám phá cách thêm tính năng quốc tế hóa vào ứng dụng React Next.js của bạn, với kết xuất phía máy chủ. TL;DR: Xem ví dụ đầy đủ tại đây.

Hướng dẫn này dành cho các ứng dụng Next.js đang sử dụng Pages Router.
Nếu bạn đang sử dụng App Router, vui lòng xem hướng dẫn này thay thế.

Bước 1: Cài đặt một thư viện i18n

Để triển khai quốc tế hóa trong ứng dụng Next.js của bạn, trước hết chúng ta sẽ chọn một thư viện i18n. Có một số thư viện phổ biến, bao gồm next-intl. Tuy nhiên, trong ví dụ này, chúng ta sẽ sử dụng TacoTranslate.

TacoTranslate tự động dịch các chuỗi của bạn sang bất kỳ ngôn ngữ nào bằng AI tiên tiến, và giải phóng bạn khỏi việc quản lý tẻ nhạt các tệp JSON.

Hãy cài đặt nó bằng npm trong terminal của bạn:

npm install tacotranslate

Bước 2: Tạo tài khoản TacoTranslate miễn phí

Giờ đây bạn đã cài đặt module, đã đến lúc tạo tài khoản TacoTranslate, một dự án dịch và các khóa API liên quan. Tạo tài khoản tại đây. Nó miễn phí và không yêu cầu bạn phải thêm thẻ tín dụng.

Trong giao diện ứng dụng TacoTranslate, hãy tạo một dự án và chuyển đến tab khóa API của nó. Tạo một khóa read và một khóa read/write. Chúng tôi sẽ lưu chúng dưới dạng biến môi trường. Khóa read là cái mà chúng tôi gọi là public và khóa read/writesecret. Ví dụ, bạn có thể thêm chúng vào tệp .env ở thư mục gốc của dự án.

.env
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010

Hãy chắc chắn không bao giờ để lộ khóa API bí mật read/write trong môi trường sản xuất phía client.

Chúng ta cũng sẽ thêm hai biến môi trường nữa: TACOTRANSLATE_DEFAULT_LOCALETACOTRANSLATE_ORIGIN.

  • TACOTRANSLATE_DEFAULT_LOCALE: Mã locale mặc định dùng để dự phòng. Trong ví dụ này, chúng tôi sẽ đặt nó là en cho tiếng Anh.
  • TACOTRANSLATE_ORIGIN: “Thư mục” nơi các chuỗi của bạn sẽ được lưu trữ, chẳng hạn như URL của trang web của bạn. Tìm hiểu thêm về origins tại đây.
.env
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com

Bước 3: Thiết lập TacoTranslate

Để tích hợp TacoTranslate vào ứng dụng của bạn, bạn sẽ cần tạo một client bằng cách sử dụng các khóa API đã tạo ở trên. Ví dụ: tạo một tệp có tên /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;

Chúng tôi sẽ tự động định nghĩa TACOTRANSLATE_API_KEY trong chốc lát.

Tạo client trong một file riêng sẽ giúp dễ dàng sử dụng lại sau này. Bây giờ, sử dụng một /pages/_app.tsx tùy chỉnh, chúng ta sẽ thêm 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>
	);
}

Nếu bạn đã có pageProps_app.tsx đã được tùy chỉnh, hãy mở rộng định nghĩa bằng các thuộc tính và đoạn mã ở trên.

Bước 4: Triển khai kết xuất phía máy chủ

TacoTranslate cho phép kết xuất phía máy chủ cho các bản dịch của bạn. Điều này cải thiện đáng kể trải nghiệm người dùng bằng cách hiển thị nội dung đã dịch ngay lập tức, thay vì để người dùng thấy một thoáng nội dung chưa được dịch trước. Thêm vào đó, chúng ta có thể bỏ qua các yêu cầu mạng ở phía client, vì chúng ta đã có tất cả bản dịch cần thiết.

Chúng ta sẽ bắt đầu bằng cách tạo hoặc chỉnh sửa /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'),
	});
};

Điều chỉnh kiểm tra isProduction cho phù hợp với thiết lập của bạn. Nếu true, TacoTranslate sẽ hiển thị khóa API công khai. Nếu ứng dụng đang ở môi trường cục bộ, thử nghiệm hoặc staging (isProduction is false), chúng tôi sẽ sử dụng khóa API bí mật read/write để đảm bảo các chuỗi mới được gửi đi để dịch.

Cho đến nay, chúng tôi chỉ mới thiết lập ứng dụng Next.js với danh sách các ngôn ngữ được hỗ trợ. Việc tiếp theo chúng tôi sẽ làm là lấy bản dịch cho tất cả các trang của bạn. Để làm điều đó, bạn sẽ sử dụng getTacoTranslateStaticProps hoặc getTacoTranslateServerSideProps tùy theo yêu cầu của bạn.

Những hàm này nhận ba đối số: một đối tượng Next.js Static Props Context, cấu hình cho TacoTranslate, và các thuộc tính tùy chọn của Next.js. Lưu ý rằng revalidate trên getTacoTranslateStaticProps được đặt là 60 theo mặc định, để các bản dịch của bạn luôn được cập nhật.

Để sử dụng bất kỳ hàm nào trong một trang, giả sử bạn có một tệp trang như /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!"/>;
}

Bây giờ bạn có thể sử dụng Translate để dịch các chuỗi trong tất cả các thành phần React của bạn.

import {Translate} from 'tacotranslate/react';

function Component() {
	return <Translate string="Hello, world!"/>
}

Bước 5: Triển khai và kiểm tra!

Chúng ta đã xong! Ứng dụng Next.js của bạn giờ sẽ được dịch tự động khi bạn thêm bất kỳ chuỗi nào vào một Translate component. Lưu ý rằng chỉ những môi trường có quyền read/write trên khóa API mới có thể tạo các chuỗi mới để dịch. Chúng tôi khuyến nghị bạn nên có một môi trường staging đóng và được bảo mật, nơi bạn có thể thử nghiệm ứng dụng production của mình với một khóa API như vậy, thêm các chuỗi mới trước khi đưa ứng dụng lên môi trường production. Việc này sẽ ngăn ai đó đánh cắp khóa API bí mật của bạn và tránh việc dự án dịch thuật bị phình to do thêm các chuỗi mới không liên quan.

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!

Một sản phẩm của NattskiftetSản xuất tại Na Uy