TacoTranslate
/
ΤεκμηρίωσηΤιμολόγηση
 
Οδηγός
04 Μαΐ

Πώς να υλοποιήσετε τη διεθνοποίηση σε μια εφαρμογή Next.js που χρησιμοποιεί το Pages Router

Κάντε την εφαρμογή React σας πιο προσβάσιμη και φτάστε σε νέες αγορές με τη διεθνοποίηση (i18n).

Καθώς ο κόσμος γίνεται όλο και πιο παγκοσμιοποιημένος, γίνεται ολοένα και πιο σημαντικό για τους προγραμματιστές ιστού να δημιουργούν εφαρμογές που να μπορούν να εξυπηρετούν χρήστες από διαφορετικές χώρες και πολιτισμούς. Ένας από τους βασικούς τρόπους για να το πετύχετε αυτό είναι μέσω της διεθνοποίησης (i18n), που σας επιτρέπει να προσαρμόζετε την εφαρμογή σας σε διαφορετικές γλώσσες, νομίσματα και μορφές ημερομηνίας.

Σε αυτό το σεμινάριο, θα εξερευνήσουμε πώς να προσθέσετε διεθνοποίηση στην εφαρμογή σας React Next.js, με απόδοση στην πλευρά του διακομιστή. TL;DR: Δείτε το πλήρες παράδειγμα εδώ.

Αυτός ο οδηγός είναι για εφαρμογές Next.js που χρησιμοποιούν το Pages Router.
Εάν χρησιμοποιείτε το App Router, παρακαλώ δείτε αυτόν τον οδηγό αντίγια.

Βήμα 1: Εγκαταστήστε μια βιβλιοθήκη i18n

Για να υλοποιήσετε την διεθνοποίηση στην εφαρμογή Next.js σας, πρώτα θα επιλέξουμε μια βιβλιοθήκη i18n. Υπάρχουν αρκετές δημοφιλείς βιβλιοθήκες, συμπεριλαμβανομένης της next-intl. Ωστόσο, σε αυτό το παράδειγμα, θα χρησιμοποιήσουμε την TacoTranslate.

Η TacoTranslate μεταφράζει αυτόματα τα strings σας σε οποιαδήποτε γλώσσα χρησιμοποιώντας την πιο σύγχρονη AI, απελευθερώνοντάς σας από τη χρονοβόρα διαχείριση αρχείων JSON.

Ας το εγκαταστήσουμε χρησιμοποιώντας npm στο τερματικό σας:

npm install tacotranslate

Βήμα 2: Δημιουργήστε έναν δωρεάν λογαριασμό στο TacoTranslate

Τώρα που έχετε εγκαταστήσει το module, είναι ώρα να δημιουργήσετε τον λογαριασμό σας στο TacoTranslate, ένα έργο μετάφρασης και τα αντίστοιχα API keys. Δημιουργήστε έναν λογαριασμό εδώ. Είναι δωρεάν και δεν απαιτείται να προσθέσετε πιστωτική κάρτα.

Μέσα στο 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 της ιστοσελίδας σας. Διαβάστε περισσότερα για τις προελεύσεις εδώ.
.env
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com

Βήμα 3: Ρύθμιση του TacoTranslate

Για να ενσωματώσετε το TacoTranslate στην εφαρμογή σας, θα χρειαστεί να δημιουργήσετε έναν client χρησιμοποιώντας τα 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, θα προσθέσουμε τον πάροχο 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: Υλοποίηση server side rendering

Το TacoTranslate επιτρέπει την απομακρυσμένη απόδοση (server side rendering) των μεταφράσεών σας. Αυτό βελτιώνει σημαντικά την εμπειρία χρήστη, εμφανίζοντας άμεσα το μεταφρασμένο περιεχόμενο, αντί για μια σύντομη εμφάνιση μη μεταφρασμένου περιεχομένου αρχικά. Επιπλέον, μπορούμε να παραλείψουμε τα δίκτυα αιτήματα από τον πελάτη, διότι ήδη διαθέτουμε όλες τις απαραίτητες μεταφράσεις.

Θα ξεκινήσουμε δημιουργώντας ή τροποποιώντας το /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. Αν βρισκόμαστε σε τοπικό, δοκιμαστικό ή περιβάλλον staging (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 component για να μεταφράσετε συμβολοσειρές μέσα σε όλα τα React components σας.

import {Translate} from 'tacotranslate/react';

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

Βήμα 5: Κάντε deploy και δοκιμάστε!

Έχουμε τελειώσει! Η εφαρμογή React σας θα μεταφράζεται αυτόματα όταν προσθέτετε οποιεσδήποτε αλυσίδες κειμένου στο Translate component. Σημειώστε ότι μόνο τα περιβάλλοντα με δικαιώματα read/write στο κλειδί API θα μπορούν να δημιουργούν νέες αλυσίδες προς μετάφραση. Συνιστούμε να έχετε ένα κλειστό και ασφαλές περιβάλλον σταδιοποίησης όπου μπορείτε να δοκιμάσετε την παραγωγική σας εφαρμογή με ένα τέτοιο κλειδί API, προσθέτοντας νέες αλυσίδες προτού την κάνετε διαθέσιμη στο κοινό. Αυτό θα αποτρέψει οποιονδήποτε από το να κλέψει το μυστικό σας κλειδί API και ενδεχομένως να φουσκώσει το πρότζεκτ μετάφρασής σας με νέες, άσχετες αλυσίδες.

Βεβαιωθείτε ότι θα δείτε το πλήρες παράδειγμα στο προφίλ μας στο GitHub. Εκεί, θα βρείτε επίσης ένα παράδειγμα για το πώς να το κάνετε αυτό χρησιμοποιώντας τον App Router! Αν αντιμετωπίσετε οποιοδήποτε πρόβλημα, μη διστάσετε να επικοινωνήσετε μαζί μας, και θα χαρούμε πολύ να βοηθήσουμε.

Το TacoTranslate σας επιτρέπει να τοπικοποιείτε αυτόματα τις εφαρμογές React σας γρήγορα προς και από οποιαδήποτε γλώσσα. Ξεκινήστε σήμερα!

Ένα προϊόν από NattskiftetΚατασκευάστηκε στη Νορβηγία