React-Internationalisierung – Verwendung von react-intl

React-Internationalisierung – Verwendung von react-intl

Wie erreicht man Internationalisierung in React? Das React-Intl-Plug-In bietet eine Reihe von Methoden zum Implementieren der React-Internationalisierung. Die spezifische Implementierung ist wie folgt ~~

1. Erstellen Sie die Reaktionsumgebung und laden Sie die entsprechenden Plug-Ins herunter

Standardmäßig haben Sie nodejs bereits installiert. Wenn Sie es nicht installiert haben, installieren Sie es von Baidu. Ich werde hier nicht ins Detail gehen.

Verwenden Sie das offizielle React-Gerüst, um ein React-Projekt zu erstellen. Wenn Sie bereits ein vorhandenes React-Projekt haben, können Sie diesen Schritt überspringen. Laden Sie dann die zugehörige Abhängigkeit react-intl herunter

npx erstellen-reagieren-app reagieren-intl-demo  
npm ich reagiere-intl -S

Warten Sie, bis der Download abgeschlossen ist

Suchen Sie den Ordner src im Stammverzeichnis des Projekts und erstellen Sie darin einen neuen Ordner mit dem Namen locale, um die Einstellungsdateien für das Sprachpaket zu speichern. Hier werden nur Chinesisch und Englisch umgeschaltet, und die nachfolgenden Vorgänge für andere Sprachen sind dieselben

Bildbeschreibung hier einfügen

Zweitens schreiben Sie die relevanten Konfigurationsdateien

Suchen Sie die lokale intl.js-Datei und führen Sie die entsprechenden Plug-Ins ein, um sie einzukapseln und verfügbar zu machen.

importiere React, { useContext } von 'react'
import { IntlProvider } from 'react-intl' // Eingebunden in die äußerste Schicht von Komponenten, die eine Internationalisierung der Sprache benötigen, genau wie der Provider von react-redux. Lassen Sie Komponenten und Unterkomponenten innerhalb von Komponenten die von react-intl bereitgestellten APIs und Methoden verwenden. import { mainContext } from '../reducer' // Hier verwenden wir useReducer, um einfach einen im Stammverzeichnis zu erstellen, um die globale Statusverwaltung der Sprache zu steuern. import zh_CN from './cn' // Chinesisches Paket import en_US from './en' // Englisches Paket const Inter = (props) => {
    // Holen Sie sich die Standardspracheinstellungen. Sie können es auch in Verbindung mit einer globalen Statusverwaltung wie Redux Mobx oder useReducer verwenden, die von React selbst bereitgestellt werden. const { state } = useContext(mainContext)
  const wähleLocale = (val) => { 
    let _val = val || navigator.language.split('_')[0]
    Schalter (_val) {
      Fall 'en':
        zurück de_US
      Fall 'zh':
        Rückgabe zh_CN
      Standard:
        Rückgabe zh_CN
    }
  }
  let locale = state.locale // Gebietsschema abrufen
  let { Kinder } = Requisiten
  // Unterkomponenten umschließen, um die API von react-intl zu teilen und so eine mehrsprachige Rückgabe zu erreichen (
    <InternationalerAnbieter
      Schlüssel={Gebietsschema}
      Gebietsschema={Gebietsschema}
      Standardgebietsschema='zh'
      Nachrichten={wähleGebietsschema(Gebietsschema)}
    >
      {Kinder}
    </IntlProvider>
  )
}

Export Standard Inter

cn.js

const zh_CN = {
    start: "Start",
    Schalter: 'Schalter'
  }
  Export-Standard zh_CN
  

de.js

const en_US = {
    start: "Start",
    Schalter: 'Schalter'
  }
  Exportstandard en_US
  

reducer.js (erstellen Sie eine neue im src-Verzeichnis)

importiere React, { useReducer } von 'react'
const CHANGE_LOCALE = "LOCALE ÄNDERN"

const mainContext = React.createContext()

const Reducer = (Status, Aktion) => {
  Schalter (Aktion.Typ) {
    Fall CHANGE_LOCALE:
      return { ...Status, Gebietsschema: Aktion.Gebietsschema || 'zh' }
    Standard:
      Rückgabestatus
  }
}

const ContextProvider = (Eigenschaften) => {
  const [Status, Versand] = useReducer(Reducer, {
    Gebietsschema: „zh“
  })
  zurückkehren (
    <mainContext.Provider-Wert={{ Status, Dispatch }}>
      {props.children}
    </mainContext.Provider>
  )
}

export { Reduzierer, Hauptkontext, Kontextanbieter }

3. Importieren Sie zugehörige Dateien und verwenden Sie sie in App.js

App.js

importiere './App.css';
importiere { ContextProvider } von './reducer'
importiere Inter aus './locale/intl'
Ansicht aus „./views“ importieren

Funktion App() {
  zurückkehren (
    <Kontextprovider>
      <Inter>
        <Anzeigen />
      </Inter>
    </ContextProvider>
  );
}
Standard-App exportieren;

Viertens: Erstellen Sie ein neues Ansichtsverzeichnis und verwenden Sie zugehörige Plug-Ins und APIs, um eine Internationalisierung zu erreichen

Erstellen Sie eine neue Datei index.jsx in Ansichten, um den Effekt auszuprobieren

importiere react, { useContext} von 'react'
importiere { Hauptkontext } von '../Reducer'
importiere { FormattedMessage } von 'react-intl'
 
Funktion Index() {
    const { Dispatch, Status } = useContext(Hauptkontext)
    const { locale } = Status
    const changeLang = () => { // Ändere die Sprache im zu wechselnden Status dispatch({
            Typ: 'CHANGE_LOCALE',
            Gebietsschema: Gebietsschema === 'zh' ? 'en' : 'zh'
        })
    }
    zurückkehren (
        <div>
           <div>
            <FormattedMessage id="start" ></FormattedMessage>
           </div>
           <div>
                <button onClick={changeLang} > <FormattedMessage id="switch" ></FormattedMessage></button>
           </div>
        </div>
    );
}
Standardindex exportieren;

Die rote Box im endgültigen Verzeichnis wurde neu hinzugefügt

Bildbeschreibung hier einfügen

Damit ist eine einfache React-Internationalisierung abgeschlossen!
Sie können es ausprobieren. Wenn das Projekt es benötigt, können Sie es auch auf diese Weise übertragen. Diese Demo wurde auf GitHub hochgeladen: Sie können sie unter der GitHub-Adresse selbst klonen und ausführen

Dies ist das Ende dieses Artikels über die Verwendung von react-intl bei der React-Internationalisierung. Weitere relevante Inhalte zur React-Internationalisierung finden Sie in früheren Artikeln auf 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:
  • So führen Sie SCSS in ein React-Projekt ein
  • So führen Sie Angular-Komponenten in React ein
  • React führt Containerkomponenten und Anzeigekomponenten in Vue ein
  • Erläuterung synthetischer React-Ereignisse
  • Ein kurzer Vergleich von Props in React
  • Detaillierte Erklärung der Lösung zur Migration von Antd+React-Projekten nach Vite
  • Gründe und Lösungen für das Versagen des React-Ereignisdrosselungseffekts
  • React-Implementierungsbeispiel mit Amap (react-amap)
  • Eine kurze Einführung in React

<<:  Beispiel für den Aufbau eines Redis-Sentinel-Clusters basierend auf Docker

>>:  Zusammenfassung des Betriebs und der Wartung von Linux von grundlegenden bis zu fortgeschrittenen Wissenspunkten

Artikel empfehlen

Vue implementiert Bildverifizierungscode beim Anmelden

In diesem Artikelbeispiel wird der spezifische Co...

Zwei Möglichkeiten, den Zeichensatz der HTML-Seite anzugeben

1. Zwei Möglichkeiten, den Zeichensatz der HTML-S...

So richten Sie eine automatische tägliche Datenbanksicherung in Linux ein

Dieser Artikel verwendet das Centos7.6-System und...

Die beste Lösung zum Zurücksetzen des Root-Passworts von MySQL 8.0.23

Diese Methode wurde am 7. Februar 2021 bearbeitet...

Einführung in ApplicationHost.config (IIS-Speicherkonfigurationsbereichsdatei)

Nehmen Sie für eine neu erstellte Website ASP.NET...

So ändern Sie schnell die Tabellenstruktur einer MySQL-Tabelle

Tabellenstruktur einer MySQL-Tabelle schnell ände...

So installieren Sie Linux Flash

So installieren Sie Flash unter Linux 1. Besuchen...

10 HTML-Tabellen-bezogene Tags

Tatsächlich werden viele Leute sagen: „Ich habe ge...

Zabbix-Überwachungslösung – die neueste offizielle Version 4.4 [empfohlen]

Zabbix 12.10.2019 Chenxin siehe https://www.zabbi...

Vue 2.0 Grundlagen im Detail

Inhaltsverzeichnis 1. Funktionen 2. Beispiele 3. ...

Das WeChat-Applet implementiert eine einfache Taschenrechnerfunktion

WeChat-Applet: Einfacher Rechner. Zu Ihrer Inform...

Beispiel für die Implementierung eines Skeleton-Bildschirms mit Vue

Inhaltsverzeichnis Verwendung des Skelettbildschi...