Πώς να υλοποιήσετε τη διεθνοποίηση σε μια εφαρμογή Next.js που χρησιμοποιεί τον Pages Router
Κάντε την εφαρμογή React σας πιο προσβάσιμη και φτάστε σε νέες αγορές με τη διεθνοποίηση (i18n).
Καθώς ο κόσμος γίνεται πιο παγκοσμιοποιημένος, είναι όλο και πιο σημαντικό για τους προγραμματιστές ιστού να δημιουργούν εφαρμογές που μπορούν να ανταποκριθούν σε χρήστες από διαφορετικές χώρες και κουλτούρες. Ένας από τους βασικούς τρόπους για να το πετύχετε αυτό είναι μέσω της διεθνοποίησης (i18n), η οποία σας επιτρέπει να προσαρμόσετε την εφαρμογή σας σε διαφορετικές γλώσσες, νομίσματα και μορφές ημερομηνίας.
Σε αυτό το σεμινάριο, θα εξερευνήσουμε πώς να προσθέσετε διεθνοποίηση στην εφαρμογή σας React Next.js, με απόδοση από την πλευρά του διακομιστή. TL;DR: Δείτε το πλήρες παράδειγμα εδώ.
Αυτός ο οδηγός είναι για εφαρμογές Next.js που χρησιμοποιούν τον Pages Router.
Εάν χρησιμοποιείτε τον App Router, παρακαλώ δείτε αυτόν τον οδηγό αντί αυτού.
Βήμα 1: Εγκαταστήστε μια βιβλιοθήκη i18n
Για να υλοποιήσετε τη διεθνοποίηση (internationalization) στην εφαρμογή Next.js σας, θα επιλέξουμε πρώτα μια βιβλιοθήκη i18n. Υπάρχουν διάφορες δημοφιλείς βιβλιοθήκες, συμπεριλαμβανομένης της next-intl. Ωστόσο, σε αυτό το παράδειγμα, θα χρησιμοποιήσουμε την TacoTranslate.
Η TacoTranslate μεταφράζει αυτόματα τις συμβολοσειρές σας σε οποιαδήποτε γλώσσα χρησιμοποιώντας την πιο σύγχρονη τεχνητή νοημοσύνη, και σας απαλλάσσει από τη χρονοβόρα διαχείριση των αρχείων JSON.
Ας την εγκαταστήσουμε χρησιμοποιώντας npm στο τερματικό σας:
npm install tacotranslate
Βήμα 2: Δημιουργήστε έναν δωρεάν λογαριασμό TacoTranslate
Τώρα που έχετε εγκαταστήσει το module, είναι ώρα να δημιουργήσετε τον λογαριασμό σας στο TacoTranslate, ένα έργο μετάφρασης και τα αντίστοιχα κλειδιά API. Δημιουργήστε λογαριασμό εδώ. Είναι δωρεάν και δεν απαιτεί την προσθήκη κάρτας.
Μέσα στο UI της εφαρμογής TacoTranslate, δημιουργήστε ένα έργο και μεταβείτε στην καρτέλα με τα API keys του. Δημιουργήστε ένα κλειδί read
και ένα κλειδί read/write
. Θα τα αποθηκεύσουμε ως μεταβλητές περιβάλλοντος. Το κλειδί read
είναι αυτό που ονομάζουμε public
και το κλειδί read/write
είναι secret
. Για παράδειγμα, θα μπορούσατε να τα προσθέσετε σε ένα αρχείο .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 του ιστότοπού σας. Διαβάστε περισσότερα για τις καταγωγές εδώ.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com
Βήμα 3: Ρύθμιση του TacoTranslate
Για να ενσωματώσετε το TacoTranslate στην εφαρμογή σας, θα χρειαστεί να δημιουργήσετε έναν client χρησιμοποιώντας τα API κλειδιά από πριν. Για παράδειγμα, δημιουργήστε ένα αρχείο με όνομα /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
σύντομα.
Η δημιουργία του πελάτη σε ξεχωριστό αρχείο καθιστά πιο εύκολη τη χρήση του ξανά αργότερα. Τώρα, χρησιμοποιώντας ένα custom /pages/_app.tsx
, θα προσθέσουμε τον πάροχο TacoTranslate
.
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 επιτρέπει την απομακρυσμένη απόδοση (server side rendering) των μεταφράσεών σας. Αυτό βελτιώνει σημαντικά την εμπειρία χρήστη, εμφανίζοντας το μεταφρασμένο περιεχόμενο αμέσως, αντί για ένα σύντομο φλας με μη μεταφρασμένο περιεχόμενο πρώτα. Επιπλέον, μπορούμε να παραλείψουμε τα δίκτυα αιτήματα στον πελάτη, επειδή ήδη διαθέτουμε όλες τις μεταφράσεις που χρειαζόμαστε.
Θα ξεκινήσουμε δημιουργώντας ή τροποποιώντας το /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
.
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: Ανέβασε σε λειτουργία και δοκίμασε!
Εχουμε τελειώσει! Η εφαρμογή React σας θα μεταφράζεται αυτόματα όταν προσθέτετε οποιεσδήποτε συμβολοσειρές σε ένα Translate
component. Σημειώστε ότι μόνο περιβάλλοντα με δικαιώματα read/write
στο API key θα μπορούν να δημιουργούν νέες συμβολοσειρές προς μετάφραση. Συνιστούμε να έχετε ένα κλειστό και ασφαλές περιβάλλον staging όπου μπορείτε να δοκιμάσετε την παραγωγική εφαρμογή σας με ένα τέτοιο API key, προσθέτοντας νέες συμβολοσειρές πριν από την επίσημη κυκλοφορία. Αυτό θα αποτρέψει οποιονδήποτε από την κλοπή του μυστικού σας API key και ενδεχομένως το φούσκωμα του πρότζεκτ μετάφρασης, προσθέτοντας νέες, μη σχετικές συμβολοσειρές.
Φροντίστε να ρίξετε μια ματιά στο πλήρες παράδειγμα στο προφίλ μας στο GitHub. Εκεί, θα βρείτε επίσης ένα παράδειγμα για το πώς να το κάνετε αυτό χρησιμοποιώντας τον App Router! Εάν αντιμετωπίσετε οποιοδήποτε πρόβλημα, μη διστάσετε να επικοινωνήσετε μαζί μας, και θα χαρούμε πολύ να βοηθήσουμε.
Το TacoTranslate σας επιτρέπει να εντοπίζετε αυτόματα τις εφαρμογές React γρήγορα από και προς πάνω από 75 γλώσσες. Ξεκινήστε σήμερα!