React-Internationalisierung react-i18next ausführliche Erklärung

React-Internationalisierung react-i18next ausführliche Erklärung

Bildbeschreibung hier einfügen

Einführung

react-i18next ist ein leistungsstarkes Internationalisierungsframework basierend auf i18next . Es kann in react und react-native Anwendungen verwendet werden. Es ist derzeit eine sehr gängige Internationalisierungslösung.

i18next bietet folgende Vorteile:

  • Basierend auf i18next ist es nicht auf React beschränkt. Sie können es einmal lernen und an anderen Stellen verwenden.
  • Bietet mehrere Komponenten für die Internationalisierung in Hoc-, Hook- und Klassenszenarien
  • Geeignet für serverseitiges Rendering
  • Es hat eine lange Geschichte, die 2011 begann und älter ist als die meisten Front-End-Frameworks.
  • Aufgrund seiner langen Geschichte ist es ausgereifter. Es gibt kein Internationalisierungsproblem, das i18next nicht lösen kann.
  • Es werden viele Plugins unterstützt. Beispielsweise können Plugins verwendet werden, um das Gebietsschema des aktuellen Systems zu erkennen und Übersetzungsressourcen vom Server oder Dateisystem zu laden.

Installieren

Sie müssen sowohl die Abhängigkeiten i18next als auch react-i18next installieren:

npm install react-i18next i18next --save
oder
yarn add react-i18next i18next --save


Konfiguration

Erstellen Sie einen neuen i18n Ordner unter src um internationalisierungsbezogene Konfigurationen zu speichern

Erstellen Sie drei neue Dateien in i18n :

  • config.ts : i18n initialisieren und Plugins konfigurieren
  • en.json : Konfigurationsdatei in englischer Sprache
  • zh.json : Konfigurationsdatei in chinesischer Sprache

Bildbeschreibung hier einfügen

de.json

{
    "Kopfzeile": {
        "register":"Registrieren",
        "signin":"Anmelden",
        "home": "Zuhause"
    },
    "Fußzeile": {
        "Detail" : "Alle Rechte vorbehalten @ React"
    },
    "heim": {
        "hot_recommended": "Heiß empfohlen",
        "new_arrival": "Neuankömmling",
        "joint_venture": "Gemeinschaftsunternehmen"
    }
}

zh.json

{
    "Kopfzeile": {
        "register":"Registrieren",
        "signin":"Anmelden",
        "home": "Zuhause"
    },
    "Fußzeile": {
        "Detail": "Urheberrecht @ React"
    },
    "heim": {
        "hot_recommended": "Heiß empfohlen",
        "new_arrival": "Neuankömmling",
        "joint_venture": "Gemeinschaftsunternehmen"
    }
}

config.ts

importiere i18n von „i18next“;
importiere { initReactI18next } von 'react-i18next';

importiere translation_en aus „./en.json“;
importiere translation_zh aus „./zh.json“;

const Ressourcen = {
    de:
        Übersetzung: translation_en,
    },
    de: {
        Übersetzung: translation_zh,
    },
};

i18n.use(initReactI18next).init({
    Ressourcen,
    lng: "zh",
    Interpolation:
        Escape-Wert: false,
    },
});

Standard-i18n exportieren;

verwenden

Referenzprofil

Referenzieren Sie die i18n -Konfigurationsdatei in index.tsx : import './i18n/config';

importiere React von „react“;
importiere ReactDOM von „react-dom“;
importiere './index.css';
App aus „./App“ importieren;
importiere './i18n/config'; // Referenzkonfigurationsdatei ReactDOM.render(
    <Reagieren.StrictMode>
        <App />
    </React.StrictMode>,
    document.getElementById('root')
);

Verwendung in Komponenten

Methode 1

Verwenden Sie die High-Order-Funktion (HOC) withTranslation in der Klassenkomponente , um die Dateneinfügung der Sprachkonfiguration abzuschließen

importiere React von „react“;
Stile aus „./Home.module.css“ importieren;

//Einführung der HOC-High-Order-Funktion withTranslation und der i18n ts-Typdefinition WithTranslation 
importiere { mitÜbersetzung, MitÜbersetzung } von "react-i18next"

Klasse HomeComponent erweitert React.Component<WithTranslation> {
    rendern() {
        const { t } = diese.props;
        Rückkehr <>
           <h1>{t('header.home')}</h1>
           <ul>
               <li>{t('home.hot_recommended')}</li>
               <li>{t('home.neue_Ankunft')}</li>
               <li>{t('Heimat.Joint_Venture')}</li>
           </ul>
        </>
    }
}

export const Home = withTranslation()(HomeComponent); // Verwenden Sie die höherwertige Funktion withTranslation, um die Dateneinfügung der Sprachkonfiguration abzuschließen.

Methode 2

Verwenden Sie useTranslation Hook in Funktionskomponenten , um die Internationalisierung zu handhaben

importiere React von „react“;
importiere { useTranslation, Trans } von 'react-i18next'

exportiere const Home: React.FC = () => {
    const { t } = useTranslation()
    zurückkehren (
		<div>
			<h1>{t('header.home')}</h1>
			<ul>
				<li>{t('home.hot_recommended')}</li>
				{/* Es gibt einen anderen Weg */}
				<li><Trans>Zuhause.Neuankömmling</Trans></li>
			</ul>
		</div>    
    );
};

Sprache wechseln

importiere i18n von „i18next“;

const changeLanguage= (Wert) => {
	i18n.changeLanguage(val); // der Wert des Parameters val ist „en“ oder „zh“
};

oder

importiere React von „react“;
importiere { useTranslation } von 'react-i18next'

export const Home: React.FC = () => {
    const { t, i18n } = useTranslation()
    zurückkehren (
		<button onClick={()=>i18n.changeLanguage(i18n.language=='en'?'zh':'en')}>{i18n.language=='en'?'zh':'en'}</button>
    );
};

Dies ist das Ende dieses Artikels über die Internationalisierung von React react-i18next. Weitere relevante Inhalte zu React internationalization react-i18next finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • react-intl implementiert React-Internationalisierung und Mehrsprachenmethode
  • Detaillierte Erklärung zur Verwendung von react-i18n-auto, einem Plugin zur Internationalisierung von react
  • React-Internationalisierungsimplementierungscodebeispiel

<<:  Beispielcode zum Erzielen eines dreidimensionalen Bildplatzierungseffekts mit reinem CSS

>>:  Zusammenfassung des Wissens zum MySQL-Protokoll

Artikel empfehlen

Zusammenfassung der Methoden zum Schreiben von Urteilsaussagen in MySQL

So schreiben Sie Urteilsaussagen in MySQL: Method...

Gegenseitiger Wertetransfer und Aufruf von Vue-Eltern-Kind-Komponenten

Inhaltsverzeichnis 1. Übergeordnetes Element über...

So verwenden Sie den Fuser-Befehl im Linux-System

Was ist Fuser Command? Der Befehl fuser ist ein s...

Analyse der MySQL-Absturzwiederherstellung basierend auf Redo Log und Undo Log

Inhaltsverzeichnis MySQL-Absturzwiederherstellung...

Warum wird in React nicht empfohlen, einen Index als Schlüssel zu verwenden?

1. Vergleichen Sie den alten virtuellen DOM mit d...

Zusammenfassung von 28 gängigen JavaScript-String-Methoden und Verwendungstipps

Inhaltsverzeichnis Vorwort 1. Ermitteln Sie die L...

Allgemeine Shell-Skriptbefehle und zugehöriges Wissen unter Linux

Inhaltsverzeichnis 1. Einige Punkte, die Sie beac...

Asynchrone Programmierung in Javascript: Verstehen Sie Promise wirklich?

Inhaltsverzeichnis Vorwort Grundlegende Verwendun...

Aktivieren und Konfigurieren des MySQL-Protokolls für langsame Abfragen

Einführung Das MySQL-Protokoll für langsame Abfra...

Tutorial zur Installation von VMWare15.5 unter Linux

Um VMWare unter Linux zu installieren, müssen Sie...