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

Häufig verwendete HTML-Meta-Enzyklopädie (empfohlen)

Der Meta-Tag ist ein Hilfstag im Head-Bereich der...

Detaillierte Erklärung der Verwendung von JSON.parse und JSON.stringify

Inhaltsverzeichnis JSON.parse JSON.parse-Syntax R...

Warum DOCTYPE HTML verwenden?

Sie wissen, dass der Browser ohne diese Option bei...

So ändern Sie schnell die Tabellenstruktur einer MySQL-Tabelle

Tabellenstruktur einer MySQL-Tabelle schnell ände...

Detaillierte Erklärung der Nodejs-Array-Warteschlange und der forEach-Anwendung

In diesem Artikel werden hauptsächlich die Proble...

Tutorial zur Installation von MySQL 5.7.18 mit einem RPM-Paket

System: CentOS 7 RPM-Pakete: mysql-community-clie...

Tutorial zur Installation von MySQL auf Alibaba Cloud Centos 7.5

Es scheint, dass die MySQL-Server-Datei zur norma...

CSS-Beispielcode zum Zeichnen eines Lutschers

Hintergrund: Machen Sie jeden Tag ein wenig Forts...

Tiefgreifendes Verständnis der verschiedenen Sperren von MySQL

Inhaltsverzeichnis Schlossübersicht Sperrklassifi...