Giriş yapmak

Nuxt'un nihai uluslararasılaştırma çözümü: I18n+Nuxt İçeriği

Yazar:neo-yang Zaman:2023/12/06 Okumak: 8007
Yurt dışına açılma dalgasıyla birlikte Çin'de yaygın olarak kullanılan Vue ve Nuxt, sıklıkla uluslararasılaşma sorunlarıyla karşı karşıya kalıyor. Eğer wordpress ise basit, kurulumu yapın […]

Yurt dışına açılma dalgasıyla birlikte Çin'de yaygın olarak kullanılan Vue ve Nuxt, sıklıkla uluslararasılaşma sorunlarıyla karşı karşıya kalıyor.

Eğer WordPress ise, basittir. Bir eklenti yükleyin, Google'ın çeviri arayüzünü yapılandırın ve ardından sistem her gün yeni içeriği otomatik olarak çeşitli dil sürümlerine çevirecektir.

Ancak diğer sistemler için bu o kadar uygun değil.

Kod açık kaynaktır: https://github.com/aigc-projects/nuxt-i18n-starter

1. Temel uluslararasılaşma-I18n

nuxt-i18n

1. I18n nedir?

I18n, Nuxt'un uluslararasılaşması için bir zorunluluktur. Esas olarak, uluslararasılaştırma yönlendirmesi ve uluslararasılaştırma yönlendirmesine dayalı dil değiştirme yöntemleri de dahil olmak üzere eksiksiz bir uluslararasılaştırma çözümleri seti sağlar.

2. I18n'yi yükleyin

Aşağıdakilerin hepsi iyi.

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

3. nuxt.config.ts'yi yapılandırın

 modüller: [ '@nuxtjs/i18n', ], i18n: { locales: [ { name: "English",code: "en", iso: "en-US", dir: "ltr" }, { name: " español",kod: "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", tespitBrowserLanguage: false, // 👇 Vue I18n'ye referans verin yapılandırma dosyası vueI18n: "./i18n.config.js", }, 

4. i18n.config.ts'yi yapılandırın

Yeni i18n.config.ts veya i18n.config.js oluşturun

Bu dosya çeviri alanlarını yapılandırmak için kullanılır.

varsayılanı dışa aktar defineI18nConfig(() => ({ eski: yanlış, // 👇 Çeviri mesajlarını ekle: { "en": { nav_about: "Hakkında", }, "es": { nav_about: "sobre", }, "ar ": { nav_about: "Yeni Bilgiler", }, "fr": { nav_about: "Hakkında", }, }, }))

5. Bileşenleri bağlayın

kod

kullanım

{{ $t('nav_home') }}

6. Dil değiştirme bileşeni

kod

<!-- 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">
        {{ konum.adı }}
      </option>
    </select>
  </div>
</template>

kullanım

Etiketleri bir sayfada veya düzende kullanma:

7. Mevcut dili edinin

context.app.i18n.locale // NuxtContext'e erişebileceğiniz yer this.$i18n.locale // şablondaki $i18n.locale bileşeninde //

2. Belge içeriğinin uluslararasılaştırılması

I18n'yi tek başına kullanmak, tüm sitenin tamamen uluslararası hale getirilmesini sağlayabilir. Ancak web sitesinde çok sayıda makale varsa, i18n.config.ts dosyasına çok sayıda yapılandırma öğesinin yazılması gerekir ve bu oldukça zahmetlidir.

Elbette makale içeriği arka uç veritabanından geliyorsa, bunu dikkate almanıza gerek yoktur. Yalnızca çevrilmiş içeriği veritabanında saklamanız ve farklı dildeki sayfalar için ilgili dilde makale sürümünü almanız gerekir.

Burada söylenen, makale içeriğinin back-end veritabanında değil, front-end'de olduğudur.

Nuxt için en iyi yol nuxt içeriğini kullanmaktır. Basitçe söylemek gerekirse, tüm makaleler işaretleme dosyalarında saklanır ve ardından belirli bir rota açıldığında bu rotaya karşılık gelen sayfa ve işaretleme dosyası yüklenir.

Çünkü aynı sayfa, örneğin ana sayfa, farklı dillerde farklı rotalar kullanıyor.

Örneğin, varsayılan İngilizce'dir. Ana sayfa www.xxx.com'dur ve İspanyolca versiyonu www.xxx.com/es'dir.

Yani www.xxx.com, sayfalar dizininde index.vue'yu çağıracak ve içerik dizinine index.md'yi yükleyecektir. Ancak www.xxx.com/es, sayfalar dizininde index.vue'yu çağıracak ve es.md belgesini içerik dizinine yükleyecektir.

Bu nedenle aynı makalenin farklı dil versiyonları için içerik dizinindeki rotaya göre çeviri dosyasının karşılık gelen versiyonunu oluşturmanız yeterlidir.

1. Nuxt içeriğini yükleyin

pnpm @nuxt/içerik ekle

2. nuxt.config.ts yapılandırması

modüller: [ '@nuxt/content' ], içerik: { // ... seçenekler }

3. Sayfadaki ilgili çeviri belgesini çağırın

Ana sayfa varsayılan olarak İngilizce'dir ve İspanyolca rotalar ve sayfalar yapılandırılmıştır.

Son rota şu şekilde:

Varsayılan ana sayfa (İngilizce): www.xxx.com

İspanyolca ana sayfası: www.xxx.com/es

İlk olarak içerik dosyası dizinini tasarlayın

//içerik dizini tasarımı | index.vue içeriği .

Daha sonra ana sayfanın makalenin çağrılması gereken kısmına etiketler ekleyin.

 <ContentDoc />

3. Uluslararası yönlendirme için en iyi uygulamalar

en-US, en İngilizce, US ise ülke anlamına gelir: Amerika Birleşik Devletleri. Bu standart bir dil kodudur. Rota doğrudan şu şekilde yazılabilir: www.xxx.com/en-US

Ancak çoğu zaman bunu ülke düzeyine ayırmamıza gerek kalmıyor, yalnızca dil düzeyi yeterli oluyor. Bu nedenle şu şekilde yazmak en doğrusu: www.xxx.com/en

Tabii ki, bu durum aşağıdakileri içeren Çince için geçerli olamaz: zh-CN (Basitleştirilmiş Çince), zh-HK (Geleneksel Hong Kong), zh-TW (Geleneksel Tayvan).

Yani Çinliler için tek yol bu: www.xxx.com/zh-cn

4. Ek: Uluslararası Standart Dil Kodları

dil kodudil ülkesi
afAfrikaans
af-ZAAfrikaans
arArapça
ar-AEArapça (BAE)
ar-BHArapça (Bahreyn)
ar-DZArapça (Cezayir)
ar-EGArapça (Mısır)
ar-IQArapça (Irak)
ar-JOArapça (Ürdün)
ar-KWArapça (Kuveyt)
ar-LBArapça (Lübnan)
ar-LYArapça (Libya)
ar-MAArapça (Fas)
ar-OMArapça (Umman)
ar-QAArapça (Katar)
ar-SAArapça (Suudi Arabistan)
ar-SYArapça (Suriye)
ar-TNArapça (Tunus)
ar-YEArapça (Yemen)
azAzerice
az-AZAzerice (Latince)
az-AZAzerice (Kiril)
olmakBelçikalı
be-BYBelçikalı
bgBulgarca
bg-BGBulgarca
bs-BABoşnakça (Latince, Bosna-Hersek)
CAKatalanca
ca-ESKatalanca
CSÇek
cs-CZÇek
cyGalce
cy-GBGalce
daDanimarkalı
da-DKDanimarkalı
deAlmanca
de-ATAlmanca(Avusturya)
de-CHAlmanca (İsviçre)
de-DEAlmanca(Almanya)
ŞarküteriAlmanca (Lihtenştayn)
de-LUAlmanca (Lüksemburg)
dvTiwiese
dv-MVTiwiese
elYunan
el-GRYunan
trİngilizce
tr-AUİngilizce (Avustralya)
tr-BZİngilizce(Belize)
tr-CAİngilizce (Kanada)
tr-CBİngilizce(Karayipler)
tr-TRİngilizce(İngiltere)
tr-IEİngilizce (İrlanda)
tr-JMİngilizce (Jamaika)
tr-NZİngilizce (Yeni Zelanda)
tr-PHİngilizce (Filipinler)
tr-TTİngilizce (Trinidad)
tr-TRİngilizce (Amerika Birleşik Devletleri)
tr-ZAİngilizce(Güney Afrika)
tr-ZWİngilizce (Zimbabve)
eoEsperanto
esİspanyol
es-ARİspanyolca (Arjantin)
es-BOİspanyolca (Bolivya)
es-CLİspanyolca (Şili)
es-COİspanyolca (Kolombiya)
es-CRİspanyolca (Kosta Rika)
es-DOİspanyolca (Dominik Cumhuriyeti)
es-ECİspanyolca (Ekvador)
es-ESİspanyolca (Geleneksel)
es-ESİspanyolca(Uluslararası)
es-GTİspanyolca (Guatemala)
es-HNİspanyolca (Honduras)
es-MXİspanyolca (Meksika)
es-NIİspanyolca(Nikaragua)
es-PAİspanyolca(Panama)
es-PEİspanyolca (Peru)
es-PRİspanyolca(Porto Riko(ABD))
es-PYİspanyolca (Paraguay)
es-SVİspanyolca (El Salvador)
es-UYİspanyolca (Uruguay)
es-VEİspanyolca (Venezuela)
veEstonyalı
et-EEEstonyalı
ABBask
AB-ESBask
faFransızca
köknarFransızca
fiFince
fi-FIFince
foFaroe dili
fo-FOFaroe dili
FrFransızca
fr-BEFransızca(Belçika)
fr-CAFransızca (Kanada)
fr-CHFransızca (İsviçre)
fr-FRFransızca Fransa)
fr-LUFransızca (Lüksemburg)
fr-MCFransızca(Monako)
güzelGaliçyaca
gl-ESGaliçyaca
gugujarati dili
gu-INgujarati dili
Oİbranice
o-ILİbranice
MERHABAHintçe
MerhabaHintçe
saatHırvat
saat-BAHırvatça (Bosna Hersek)
saat-İKHırvat
haMacarca
hu-HUMacarca
selamErmeni
selam-AMErmeni
İDEndonezya dili
yaptımEndonezya dili
dır-dirİzlandaca
is-ISİzlandaca
BTİtalyan
kaşıntıİtalyanca (İsviçre)
o-BTİtalyanca (İtalya)
evetJaponca
ja-JPJaponca
kaGürcüce
ka-GEGürcüce
kkKazak
kk-KZKazak
biliyorumkanara
kn-INkanara
evetKorece
ko-KRKorece
kokKonkani
kok-INKonkani
kyKırgız
ky-KGKırgız (Kiril)
ltLitvanyalı
lt-LTLitvanyalı
seviyeLetonca
seviye-LVLetonca
miMaori dili
mi-Yeni ZelandaMaori dili
mkMakedonca
mk-MKMakedonca (FYROM)
milyonMoğolca
mn-MNMoğolca (Kiril)
Baymarathi dili
Bay-INmarathi dili
HanımMalayca
ms-BNMalayca (Brunei Sultanlığı)
ms-benimMalayca (Malezya)
mtmalta dili
mt-MTmalta dili
notNorveççe (Berkemeier)
nb-HAYIRNorveççe (Berkemeier) (Norveç)
nlFlemenkçe
nl-BEHollandaca (Belçika)
nl-NLFelemenkçe (Hollanda)
n-HAYIRNorveççe (Nynosk) (Norveç)
nsKuzey Sotho
n-ZAKuzey Sotho
babaPencap
ağrıPencap
lütfenLehçe
pl-PLLehçe
puanPortekizce
pt-BRPortekiz Brezilyası)
pt-PTPortekizce (Portekiz)
pekiKeçuva
qu-BOQuechua (Bolivya)
qu-ECQuechua (Ekvador)
qu-PEKeçuva (Peru)
roRomen
Ro-RORomen
ruRusça
ru-RURusça
saSanskritçe
sa-INSanskritçe
seKuzey Samos
se-FIKuzey Samoa (Finlandiya)
se-FIScott Samos (Finlandiya)
se-FIInari Samos (Finlandiya)
se-HAYIRKuzey Samoa (Norveç)
se-HAYIRLulea Samos (Norveç)
se-HAYIRGüney Samos (Norveç)
se-SEKuzey Samian (İsveç)
se-SELulea Samos (İsveç)
se-SEGüney Samos (İsveç)
SkSlovak
sk-SKSlovak
slSloven
sl-SISloven
metrekareArnavut
kare-ALArnavut
sr-BASırpça (Latince, Bosna-Hersek)
sr-BASırpça (Kiril, Bosna-Hersek)
sr-SPSırbistan (Latince)
sr-SPSırbistan (Kiril)
svİsveççe
sv-FIİsveççe (Finlandiya)
sv-SEİsveççe
swSvahili
sw-KESvahili
efendimSüryanice
syr-SYSüryanice
tatamilce
ta-INtamilce
Tetelugu dili
te-INtelugu dili
buTay dili
th-THTay dili
TLTagalogca
tl-PHTagalogca (Filipinler)
tnTsvana
tn-ZATsvana
TRTürkçe
tr-TRTürkçe
tsDzonga
ttTatar
tt-RUTatar
İngiltereUkrayna
İngiltere-BAUkrayna
seninUrduca
ur-PKUrduca
uzÖzbekçe
uz-UZÖzbekçe (Latince)
uz-UZÖzbekçe (Kiril)
viVietnam
vi-VNVietnam
xhbantu dili
xh-ZAbantu dili
zhÇince
zh-CNBasitleştirilmiş Çince)
zh-HKÇince (Hong Kong)
zh-MOÇince(Makao)
zh-SGÇince (Singapur)
zh-TWGeleneksel çince)
zuZuluca
zu-ZAZuluca

Bağlantı

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



telif hakkı © www.lyustu.com tüm hakları saklıdır.
Tema: TheMoon V3.0.Yazar:neo yang