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

Lösung für die Auswirkungen leerer Pfade auf die Seitenleistung

Vor ein paar Tagen habe ich einen von Yu Bo getei...

Praktische Lösung für die Bereitstellung von Prometheus-Containern

Umfeld Hostname IP-Adresse Aufschlag Prometheus 1...

Transplantieren des Befehls mkfs.vfat in Busybox unter Linux

Um die Lebensdauer der Festplatte zum Speichern v...

JavaScript implementiert die Eingabeüberprüfung im Kennwortfeld

Manchmal ist es notwendig, bei Benutzereingaben e...

Zabbix3.4-Methode zum Überwachen des MongoDB-Datenbankstatus

Mongodb verfügt über einen Befehl db.serverStatus...

Vue+el-table realisiert das Zusammenführen von Zellen

In diesem Artikelbeispiel wird der spezifische Co...

JavaScript fügt Prototyp-Methodenimplementierung für integrierte Objekte hinzu

Die Reihenfolge, in der Objekte Methoden aufrufen...

Die Implementierung der Ereignisbindung in React verweist auf drei Methoden

1. Pfeilfunktion 1. Nutzen Sie die Tatsache, dass...

Das Linux-System verbietet den Remote-Login-Befehl des Root-Kontos

PS: So deaktivieren Sie die Remote-Anmeldung des ...