Anmeldung

Nuxts ultimative Internationalisierungslösung: I18n+Nuxt Content

Autor:Neo-Yang Zeit:2023/12/06 Lesen: 7499
Da Vue und Nuxt, die in China weit verbreitet sind, zunehmend ins Ausland gehen, stehen sie oft vor Internationalisierungsproblemen. Wenn es sich um WordPress handelt, ist es ganz einfach: Installieren Sie […]

Da Vue und Nuxt, die in China weit verbreitet sind, zunehmend ins Ausland gehen, stehen sie häufig vor Internationalisierungsproblemen.

Wenn es sich um WordPress handelt, ist es ganz einfach: Installieren Sie ein Plug-in, konfigurieren Sie die Übersetzungsschnittstelle von Google und dann übersetzt das System jeden Tag automatisch neue Inhalte in verschiedene Sprachversionen.

Aber für andere Systeme ist es nicht so praktisch.

Der Code ist Open Source: https://github.com/aigc-projects/nuxt-i18n-starter

1. Grundlegende Internationalisierung-I18n

nuxt-i18n

1. Was ist I18n?

I18n ist ein Muss für die Nuxt-Internationalisierung. Es bietet hauptsächlich einen vollständigen Satz von Internationalisierungslösungen, einschließlich Internationalisierungsrouting und Methoden zum Ändern von Sprachen basierend auf Internationalisierungsrouting.

2. Installieren Sie I18n

Alles Folgende ist in Ordnung.

Garn add @nuxtjs/i18n # Garn npm i @nuxtjs/i18n # npm pnpm i @nuxtjs/i18n pnpm add @nuxtjs/i18n@next --save-dev

3. Konfigurieren Sie nuxt.config.ts

 module: [ '@nuxtjs/i18n', ], i18n: { locales: [ { name: "English",code: "en", iso: "en-US", dir: "ltr" }, { name: " español",code: "es", iso: "es-LA", dir: "ltr" }, { name: "En français",code: "fr", iso: "fr-FR", dir: "ltr " }, { name: "العربية", code: "ar", iso: "ar-EG", dir: "rtl" },], defaultLocale: "en", discoverBrowserLanguage: false, // 👇 Referenzieren Sie den Vue I18n Konfigurationsdatei vueI18n: „./i18n.config.js“, }, 

4. Konfigurieren Sie i18n.config.ts

Erstellen Sie eine neue i18n.config.ts oder i18n.config.js

Diese Datei wird zum Konfigurieren von Übersetzungsfeldern verwendet.

export default defineI18nConfig(() => ({ Legacy: false, // 👇 Übersetzungen hinzufügen message: { "en": { nav_about: "About", }, "es": { nav_about: "sobre", }, "ar ": { nav_about: "About", }, "fr": { nav_about: "About", }, }, }))

5. Komponenten verknüpfen

Code

Verwendung

{{ $t('nav_home') }}

6. Sprachumschaltkomponente

Code

<!-- components/LangSwitcher.vue -->

<script setup lang="ts">
// Used for type casting
// Used for type casting
import type { LocaleObject } from "@nuxtjs/i18n/dist/runtime/composables";

// Get active locale and supported locales
const { locale, locales } = useI18n()
// Cast to avoid TypeScript errors in template
const supportedLocales = locales.value as Array<LocaleObject>

const router = useRouter()
const switchLocalePath = useSwitchLocalePath()

// When the visitor selects a new locale, route to
// to the new locale's path e.g. /en-CA/foo → /ar-EG/foo
function onLocaleChanged(event: Event) {
  const target = event.target as HTMLInputElement
  
  // switchLocalePath('ar-EG') will return Arabic equivalent
  // for the *current* URL path e.g. if we're at /en-CA/about,
  // switchLocalePath('ar-EG') will return '/ar-EG/about'
  router.push({ path: switchLocalePath(target.value) })
}
</script>

<template>
  <div>
    🌐
    <select :value="locale" @change="onLocaleChanged">
      <option v-for="loc in supportedLocales" :key="loc.code" :value="loc.code">
        {{ loc.name }}
      </option>
    </select>
  </div>
</template>

Verwendung

Verwenden Sie Tags auf einer Seite oder einem Layout:

7. Holen Sie sich die aktuelle Sprache

context.app.i18n.locale // wo Sie Zugriff auf NuxtContext haben this.$i18n.locale //in Komponente $i18n.locale // in Vorlage

2. Internationalisierung des Dokumentinhalts

Allein durch die Verwendung von I18n kann die Internationalisierung der gesamten Website vollständig erreicht werden. Wenn die Website jedoch viele Artikel enthält, müssen viele Konfigurationselemente in i18n.config.ts geschrieben werden, was ziemlich mühsam ist.

Wenn der Artikelinhalt aus der Back-End-Datenbank stammt, muss dies natürlich nicht berücksichtigt werden. Sie müssen lediglich den übersetzten Inhalt in der Datenbank speichern und die Artikelversion in der entsprechenden Sprache für verschiedene Sprachseiten abrufen.

Hier wird gesagt, dass der Inhalt des Artikels nicht in der Back-End-Datenbank, sondern im Front-End liegt.

Für Nuxt ist es am besten, Nuxt-Inhalte zu verwenden. Einfach ausgedrückt werden alle Artikel in Markdown-Dateien gespeichert. Wenn dann eine bestimmte Route geöffnet wird, werden die Seite und die Markdown-Datei geladen, die dieser Route entsprechen.

Denn die gleiche Seite, etwa die Homepage, nutzt unterschiedliche Routen in unterschiedlichen Sprachen.

Die Standardeinstellung ist beispielsweise Englisch. Die Homepage ist www.xxx.com und die spanische Version ist www.xxx.com/es.

Daher ruft www.xxx.com index.vue im Seitenverzeichnis auf und lädt index.md im Inhaltsverzeichnis. Allerdings ruft www.xxx.com/es index.vue im Seitenverzeichnis auf und lädt das es.md-Dokument in das Inhaltsverzeichnis.

Daher müssen Sie für verschiedene Sprachversionen desselben Artikels nur die entsprechende Version der Übersetzungsdatei entsprechend der Route im Inhaltsverzeichnis erstellen.

1. Nuxt-Inhalte installieren

pnpm @nuxt/content hinzufügen

2. nuxt.config.ts-Konfiguration

Module: [ '@nuxt/content' ], Inhalt: { // ... Optionen }

3. Rufen Sie auf der Seite das entsprechende Übersetzungsdokument auf

Die Startseite ist standardmäßig auf Englisch eingestellt und spanische Routen und Seiten sind konfiguriert.

Die endgültige Route sieht so aus:

Standard-Homepage (Englisch): www.xxx.com

Spanische Homepage: www.xxx.com/es

Entwerfen Sie zunächst das Inhaltsdateiverzeichnis

//Inhaltsverzeichnisdesign | Seiten .index.vue Inhalt .index.md .es.md

Fügen Sie dann Tags zu dem Teil der Homepage hinzu, in dem der Artikel aufgerufen werden soll

 <ContentDoc />

3. Best Practices für internationales Routing

en-US, en bedeutet Englisch, US bedeutet Land: Vereinigte Staaten. Dies ist ein Standard-Sprachcode. Die Route kann direkt so geschrieben werden: www.xxx.com/en-US

Meistens müssen wir es jedoch nicht auf die Länderebene herunterbrechen, es reicht nur das Sprachniveau. Daher ist es am besten, es so zu schreiben: www.xxx.com/en

Dies kann natürlich nicht auf Chinesisch zutreffen. Chinesisch umfasst: zh-CN (vereinfachtes Chinesisch), zh-HK (traditionelles Hongkong), zh-TW (traditionelles Taiwan)

Für Chinesen ist dies also der einzige Weg: www.xxx.com/zh-cn

4. Anhang: Internationale Standardsprachencodes

SprachcodeSprachland
afAfrikaans
af-ZAAfrikaans
arArabisch
ar-AEArabisch (VAE)
ar-BHArabisch (Bahrain)
ar-DZArabisch (Algerien)
ar-EGArabisch (Ägypten)
ar-IQArabisch (Irak)
ar-JOArabisch (Jordanien)
ar-KWArabisch (Kuwait)
ar-LBArabisch (Libanon)
ar-LYArabisch (Libyen)
ar-MAArabisch (Marokko)
ar-OMArabisch (Oman)
ar-QAArabisch (Katar)
ar-SAArabisch (Saudi-Arabien)
ar-SYArabisch (Syrien)
ar-TNArabisch (Tunesien)
ar-YEArabisch (Jemen)
azAserbaidschanisch
az-AZAserbaidschanisch (Latein)
az-AZAserbaidschanisch (Kyrillisch)
SeiBelgier
be-BYBelgier
bgbulgarisch
bg-BGbulgarisch
bs-BABosnisch (Latein, Bosnien und Herzegowina)
cakatalanisch
ca-ESkatalanisch
csTschechisch
cs-CZTschechisch
cyWalisisch
cy-GBWalisisch
dadänisch
da-Weiß nichtdänisch
deDeutsch
de-ATDeutsch (Österreich)
de-CHDeutsch (Schweiz)
de-DEDeutsches Deutschland)
DelikatessenDeutsch (Liechtenstein)
de-LUDeutsch (Luxemburg)
dvTiwiese
dv-MVTiwiese
elgriechisch
el-GRgriechisch
deEnglisch
en-AUEnglisch (Australien)
de-BZEnglisch (Belize)
en-CAEnglisch (Kanada)
en-CBEnglisch (Karibik)
en-GBEnglisch UK)
en-IEEnglisch (Irland)
de-JMEnglisch (Jamaikanisch)
en-NZEnglisch (Neuseeland)
en-PHEnglisch (Philippinen)
de-TTEnglisch (Trinidad)
en-USEnglisch (USA)
de-ZAEnglisch (Südafrika)
de-ZWEnglisch (Simbabwe)
eoEsperanto
esSpanisch
es-ARSpanisch (Argentinien)
es-BOSpanisch (Bolivien)
es-CLSpanisch (Chile)
es-COSpanisch (Kolumbien)
es-CRSpanisch (Costa Rica)
es-DOSpanisch (Dominikanische Republik)
es-ECSpanisch (Ecuador)
es-ESSpanisch (traditionell)
es-ESSpanisch (International)
es-GTSpanisch (Guatemala)
es-HNSpanisch (Honduras)
es-MXSpanisch (Mexiko)
es-NISpanisch (Nicaragua)
es-PASpanisch (Panama)
es-PESpanisch (Peru)
es-PRSpanisch (Puerto Rico (USA))
erspähenSpanisch (Paraguay)
es-SVSpanisch (El Salvador)
es-UYSpanisch (Uruguay)
es-VESpanisch (Venezuela)
etestnisch
et-EEestnisch
EUbaskisch
eu-ESbaskisch
FaFranzösisch
TanneFranzösisch
fifinnisch
fi-FIfinnisch
fofäröisch
fo-FOfäröisch
frFranzösisch
fr-BEFranzösisch (Belgien)
fr-CAFranzösisch (Kanada)
fr-CHFranzösisch (Schweiz)
fr-FRFranzösisch Frankreich)
fr-LUFranzösisch (Luxemburg)
fr-MCFranzösisch (Monaco)
glgalizisch
gl-ESgalizisch
guGujarati
gu-INGujarati
Erhebräisch
er-ILhebräisch
HiHindi
Hallo-INHindi
Stdkroatisch
hr-BAKroatisch (Bosnien und Herzegowina)
HR-HRkroatisch
Huungarisch
Hu-HUungarisch
hyArmenisch
hy-AMArmenisch
AUSWEISIndonesisch
Ich tatIndonesisch
Istisländisch
ist-ISTisländisch
EsItalienisch
juckenItalienisch (Schweiz)
es esItalienisch (Italien)
jajapanisch
ja-JPjapanisch
kageorgisch
ka-GEgeorgisch
kkKasachisch
kk-KZKasachisch
knCanara
kn-INCanara
kokoreanische Sprache
ko-KRkoreanische Sprache
kokKonkani
kok-INKonkani
kyKirgisisch
ky-KGKirgisisch (Kyrillisch)
ltlitauisch
lt-LTlitauisch
lvlettisch
lv-LVlettisch
miMaori
mi-NZMaori
mkmazedonisch
mk-MKMazedonisch (EJRM)
mnmongolisch
mn-MNMongolisch (Kyrillisch)
HerrMarathi
Herr-INMarathi
MSmalaiisch
ms-BNMalaiisch (Brunei Darussalam)
ms-MYMalaiisch (Malaysia)
mtmaltesisch
mt-MTmaltesisch
nbNorwegisch (Berkemeier)
Hinweis: NeinNorwegisch (Berkemeier) (Norwegen)
nlNiederländisch
nl-BENiederländisch (Belgien)
nl-NLNiederländisch (Niederlande)
n-NEINNorwegisch (Nynosk) (Norwegen)
nsNord-Sotho
n-ZANord-Sotho
paPunjabi
SchmerzPunjabi
plPolieren
pl-PLPolieren
ptPortugiesisch
pt-BRPortugiesisch (Brasilien)
pt-PTPortugiesisch (Portugal)
quQuechua
qu-BOQuechua (Bolivien)
que CQuechua (Ecuador)
qu-PEQuechua (Peru)
rorumänisch
ro-ROrumänisch
ruRussisch
ru-RURussisch
saSanskrit
sa-INSanskrit
seNördliches Samos
se-FINord-Samoan (Finnland)
se-FIScott Samos (Finnland)
se-FIInari Samos (Finnland)
se-NRNordsamoan (Norwegen)
se-NRLulea Samos (Norwegen)
se-NRSüd-Samos (Norwegen)
se-SENordsamian (Schweden)
se-SELulea Samos (Schweden)
se-SESüd-Samos (Schweden)
skslowakisch
sk-SKslowakisch
slSlowenisch
sl-SISlowenisch
Quadratalbanisch
sq-ALalbanisch
SR-BASerbisch (Latein, Bosnien und Herzegowina)
SR-BASerbisch (Kyrillisch, Bosnien und Herzegowina)
SR-SPSerbien (Latein)
SR-SPSerbien (Kyrillisch)
svSchwedisch
SV-FISchwedisch (Finnland)
SV-SESchwedisch
swSuaheli
sw-KESuaheli
SirSyrisch
syr-SYSyrisch
taTamil
ta-INTamil
TeTelugu
te-INTelugu
ThThailändisch
Th-THThailändisch
tlTagalog
tl-PHTagalog (Philippinen)
tnTswana
tn-ZATswana
trTürkisch
tr-TRTürkisch
tsDzonga
ttTatarisch
tt-RUTatarisch
Vereinigtes Königreichukrainisch
UK-UAukrainisch
urUrdu
ur-PKUrdu
uzUsbekisch
uz-UZUsbekisch (Latein)
uz-UZUsbekisch (Kyrillisch)
viVietnamesisch
vi-VNVietnamesisch
xhBantusprache
xh-ZABantusprache
zhChinesisch
zh-CNVereinfachtes Chinesisch)
zh-HKChinesisch (Hongkong)
zh-MOChinesisch (Macao)
zh-SGChinesisch (Singapur)
zh-TWtraditionelles Chinesisch)
zuZulu
zu-ZAZulu

Verknüpfung

https://github.com/aigc-projects/nuxt-i18n-starter



Copyright © www.lyustu.com, alle Rechte vorbehalten.
Thema: TheMoon V3.0. Autor: neo yang