TacoTranslate
/
DokumentasiHarga
 
Panduan
04 Mei

Cara melaksanakan pengantarabangsaan dalam aplikasi Next.js yang menggunakan Pages Router

Jadikan aplikasi React anda lebih mudah diakses dan capai pasaran baru dengan penyahantaraan antarabangsa (i18n).

Apabila dunia menjadi semakin global, adalah semakin penting bagi pembangun web untuk membina aplikasi yang boleh memenuhi keperluan pengguna dari pelbagai negara dan budaya. Salah satu cara utama untuk mencapainya ialah melalui internasionalisasi (i18n), yang membolehkan anda menyesuaikan aplikasi anda kepada pelbagai bahasa, mata wang, dan format tarikh.

Dalam tutorial ini, kita akan meneroka cara untuk menambah internasionalisasi kepada aplikasi React Next.js anda, dengan rendering sisi pelayan. TL;DR: Lihat contoh penuh di sini.

Panduan ini adalah untuk aplikasi Next.js yang menggunakan Pages Router.
Jika anda menggunakan App Router, sila lihat panduan ini sebagai gantinya.

Langkah 1: Pasang perpustakaan i18n

Untuk melaksanakan pengantarabangsaan dalam aplikasi Next.js anda, kita akan memilih perpustakaan i18n terlebih dahulu. Terdapat beberapa perpustakaan popular, termasuk next-intl. Walau bagaimanapun, dalam contoh ini, kami akan menggunakan TacoTranslate.

TacoTranslate secara automatik menterjemah rentetan anda ke mana-mana bahasa menggunakan AI terkini, dan membebaskan anda dari pengurusan fail JSON yang membosankan.

Jom pasang ia menggunakan npm di terminal anda:

npm install tacotranslate

Langkah 2: Cipta akaun TacoTranslate percuma

Kini selepas anda memasang modul itu, tiba masanya untuk mencipta akaun TacoTranslate anda, projek terjemahan, dan kekunci API yang berkaitan. Cipta akaun di sini. Ia percuma, dan tidak memerlukan anda menambah kad kredit.

Dalam antara muka aplikasi TacoTranslate, buat projek, dan navigasi ke tab kekunci API-nya. Cipta satu kekunci read, dan satu kekunci read/write. Kami akan menyimpannya sebagai pembolehubah persekitaran. Kekunci read adalah apa yang kami panggil public dan kekunci read/write adalah secret. Sebagai contoh, anda boleh menambahkannya ke fail .env di akar projek anda.

.env
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010

Pastikan untuk tidak pernah mendedahkan kunci API rahsia read/write kepada persekitaran pengeluaran sisi klien.

Kami juga akan menambah dua lagi pembolehubah persekitaran: TACOTRANSLATE_DEFAULT_LOCALE dan TACOTRANSLATE_ORIGIN.

  • TACOTRANSLATE_DEFAULT_LOCALE: Kod kawasan lalai jika pilihan lain tidak tersedia. Dalam contoh ini, kami akan menetapkannya kepada en untuk Bahasa Inggeris.
  • TACOTRANSLATE_ORIGIN: “folder” di mana rentetan anda akan disimpan, seperti URL laman web anda. Baca lebih lanjut tentang origins di sini.
.env
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com

Langkah 3: Menyediakan TacoTranslate

To integrate TacoTranslate with your application, you’ll need to create a client using the API keys from earlier. For example, create a file named /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;

Kami akan secara automatik mentakrifkan TACOTRANSLATE_API_KEY sebentar lagi.

Mewujudkan klien dalam fail yang berasingan memudahkan untuk digunakan semula kemudian. Sekarang, menggunakan /pages/_app.tsx tersuai, kita akan menambah penyedia 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>
	);
}

Jika anda sudah mempunyai pageProps dan _app.tsx yang tersuai, sila kembangkan definisi tersebut dengan sifat-sifat dan kod dari atas.

Langkah 4: Melaksanakan rendering sisi pelayan

TacoTranslate membenarkan rendering sisi pelayan bagi terjemahan anda. Ini meningkatkan pengalaman pengguna dengan ketara dengan menunjukkan kandungan yang diterjemahkan dengan segera, dan bukannya memaparkan kandungan yang belum diterjemahkan terlebih dahulu. Selain itu, kita boleh mengabaikan permintaan rangkaian pada klien, kerana kita sudah mempunyai semua terjemahan yang kita perlukan.

Kita akan mula dengan membuat atau mengubah /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'),
	});
};

Ubah suai semak isProduction agar sesuai dengan persediaan anda. Jika true, TacoTranslate akan memaparkan kunci API awam. Jika kami berada dalam persekitaran tempatan, ujian atau pementasan (isProduction is false), kami akan menggunakan kunci API read/write rahsia untuk memastikan rentetan baharu dihantar untuk terjemahan.

Sehingga kini, kami hanya menyediakan aplikasi Next.js dengan senarai bahasa yang disokong. Perkara seterusnya yang akan kami lakukan ialah mengambil terjemahan untuk semua halaman anda. Untuk melakukan itu, anda akan menggunakan sama ada getTacoTranslateStaticProps atau getTacoTranslateServerSideProps berdasarkan keperluan anda.

Fungsi ini mengambil tiga hujah: Satu objek Next.js Static Props Context , konfigurasi untuk TacoTranslate dan sifat Next.js pilihan. Ambil perhatian bahawa revalidate pada getTacoTranslateStaticProps ditetapkan kepada 60 secara lalai, supaya terjemahan anda kekal dikemas kini.

Untuk menggunakan mana-mana fungsi dalam halaman, mari kita andaikan anda mempunyai fail halaman seperti /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!"/>;
}

Anda kini sepatutnya boleh menggunakan komponen Translate untuk menterjemah rentetan dalam semua komponen React anda.

import {Translate} from 'tacotranslate/react';

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

Langkah 5: Lancarkan dan uji!

Kami sudah selesai! Aplikasi React anda kini akan diterjemahkan secara automatik apabila anda menambah sebarang rentetan dalam komponen Translate. Perlu diambil perhatian bahawa hanya persekitaran dengan kebenaran read/write pada kunci API yang akan dapat mencipta rentetan baru untuk diterjemahkan. Kami mengesyorkan mempunyai persekitaran staging yang tertutup dan selamat di mana anda boleh menguji aplikasi produksi anda dengan kunci API seperti itu, menambah rentetan baru sebelum aplikasi dilancarkan. Ini akan mengelakkan sesiapa daripada mencuri kunci API rahsia anda, dan berpotensi membengkakkan projek terjemahan anda dengan menambah rentetan baru yang tidak berkaitan.

Pastikan untuk menyemak contoh lengkap di profil GitHub kami. Di sana, anda juga akan menemui contoh bagaimana melakukan ini menggunakan App Router ! Jika anda menghadapi sebarang masalah, jangan segan untuk menghubungi kami, dan kami akan dengan senang hati membantu.

TacoTranslate membolehkan anda melokalkan aplikasi React anda secara automatik dengan pantas ke dan dari mana-mana bahasa. Mula hari ini!

Produk dari Nattskiftet