Maison > interface Web > js tutoriel > le corps du texte

Utilisez vue-i18n pour basculer entre le chinois et l'anglais

不言
Libérer: 2018-07-04 11:31:33
original
1489 Les gens l'ont consulté

Cet article présente principalement l'effet de l'utilisation de vue-i18n pour basculer entre le chinois et l'anglais. Il est très bon et a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer

Adresse de l'entrepôt vue-i18n : https:// github.com/kazupon/vue-i18n

Compatibilité :

Supporte Vue.js 2.x ou supérieur

Méthode d'installation : (ce Only npm est démontré partout)

npm install vue-i18n
Copier après la connexion

Utilisation :

1 Introduisez vue-i18n dans main.js (la condition préalable est que vue doit être introduit en premier)

import VueI18n from 'vue-i18n'
Vue.use(VueI18n)
Copier après la connexion

2. Préparez les informations de traduction locales

const messages = {
 zh: {
  message: {
  hello: '好好学习,天天向上!'
  }
 },
 en: {
  message: {
  hello: 'good good study, day day up!'
  }
 }
}
Copier après la connexion

3 Créez une instance VueI18n avec les options

const i18n = new VueI18n({
 locale: 'en', // 语言标识
 messages
})
Copier après la connexion

4. vue root Par exemple,

const app = new Vue({
 router,
 i18n,
 ...App
}).$mount('#app')
Copier après la connexion

5. Utilisez

<p id="app">
 <h1 style="font-size: 16px; text-align: center;">{{ $t("message.hello") }}</h1>
 </p>
Copier après la connexion

dans le modèle HTML pour afficher l'effet en cours :

Nous venons de sélectionner L'identifiant de langue est "en" anglais, changez-le maintenant en "zh" chinois et vérifiez l'effet

const i18n = new VueI18n({
 locale: &#39;zh&#39;, // 语言标识
 messages
})
Copier après la connexion

De cette façon, l'internationalisation peut être facilement réalisé, et c'est actuellement en cours de développement, il doit y avoir beaucoup de contenu de page, on peut sauvegarder les informations dans la langue correspondante sous différents objets json

const i18n = new VueI18n({
 locale: &#39;en&#39;, // 语言标识
 messages: {
  &#39;zh&#39;: require(&#39;./common/lang/zh&#39;),
  &#39;en&#39;: require(&#39;./common/lang/en&#39;)
 }
})
Copier après la connexion

zh.js

// 注意:一定是 exports,不是 export,否则会报错,报错信息是下列的中的内容不是 string
module.exports = {
 message: {
  title: &#39;运动品牌&#39;
 },
 placeholder: {
  enter: &#39;请输入您喜欢的品牌&#39;
 },
 brands: {
  nike: &#39;耐克&#39;,
  adi: &#39;阿迪达斯&#39;,
  nb: &#39;新百伦&#39;,
  ln: &#39;李宁&#39;
 }
}
Copier après la connexion

en.js

module.exports = {
 message: {
  title: &#39;Sport Brands&#39;
 },
 placeholder: {
  enter: &#39;Please type in your favorite brand&#39;
 },
 brands: {
  nike: &#39;Nike&#39;,
  adi: &#39;Adidas&#39;,
  nb: &#39;New Banlance&#39;,
  ln: &#39;LI Ning&#39;
 }
}
Copier après la connexion

Ensuite, lorsque vous l'utilisez dans un modèle HTML, portez une attention particulière à l'écriture internationale en js

// HTML
<p id="app">
 <p style="margin: 20px;">
  <h1>{{$t("message.title")}}</h1>
  <input style="width: 300px;" class="form-control" :placeholder="$t(&#39;placeholder.enter&#39;)">
  <ul>
  <li v-for="brand in brands">{{brand}}</li>
  </ul>
 </p>
</p>
// JS
data () {
 return {
  brands: [this.$t(&#39;brands.nike&#39;), this.$t(&#39;brands.adi&#39;), this.$t(&#39;brands.nb&#39;), this.$t(&#39;brands.ln&#39;)]
 }
 },
Copier après la connexion

Voir l'effet de compilation :

Maintenant, passez à l'anglais :

Dans les opérations ci-dessus, nous changeons de langue en modifiant manuellement la valeur de l'attribut locale In. en fait, nous préférons que le navigateur s'identifie automatiquement, ici vous pouvez utiliser cookie

1 Créez un nouveau fichier cookie.js pour lire le cookie

function getCookie(name,defaultValue) {
 var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
 if (arr = document.cookie.match(reg))
 return unescape(arr[2]);
 else
 return defaultValue;
}
export {
 getCookie
}
Copier après la connexion

2. Introduisez ce js dans main. js et transmettez l'attribut PLAY_LANG pour obtenir la langue du navigateur

const i18n = new VueI18n({
 locale: getCookie(&#39;PLAY_LANG&#39;,&#39;zh&#39;), // 语言标识
 messages: {
  &#39;zh&#39;: require(&#39;./common/lang/zh&#39;),
  &#39;en&#39;: require(&#39;./common/lang/en&#39;)
 }
})
Copier après la connexion

Vous devez faire attention à deux endroits extrêmement sujets aux erreurs ici :

(1), écrivez $t() as $()

(2) Il y a des attributs avec le même nom dans le même objet en json

<🎜. >vue-i18n fournit un paramètre de configuration global Il s'appelle "locale". En modifiant la valeur de locale, vous pouvez basculer entre différentes langues

Le cas suivant emprunte le style de fenêtre contextuelle d'Element UI. Les étapes ci-dessus ne seront pas répétées. Téléchargez directement le code principal

// template
<h2>{{$t(&#39;test&#39;)}}</h2>
<button type="button" class="btn btn-success" @click="changeLocale">中文/EN</button>  

// js方法
changeLocale () {
 this.$confirm(this.$t(&#39;layer.toggle&#39;), this.$t(&#39;layer.tips&#39;), {
  confirmButtonText: this.$t(&#39;button.ok&#39;),
  cancelButtonText: this.$t(&#39;button.cancel&#39;),
  type: &#39;warning&#39;
  }).then(() => {
   let locale = this.$i18n.locale
   locale === &#39;zh&#39; ? this.$i18n.locale = &#39;en&#39; : this.$i18n.locale = &#39;zh&#39;
  }).catch(() => {
    this.$message({
     type: &#39;info&#39;,
     })  
  })
},
Copier après la connexion
Effet :

Le. ci-dessus est l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'apprentissage de tout le monde. Plus de contenu connexe Veuillez faire attention au site Web PHP chinois !

Recommandations associées :

Le projet vue-cli produit des packages de test et des packages de production séparément en fonction de l'environnement en ligne

Comment utiliser Redux avec Vue

Introduction à l'interception d'itinéraire de vue et aux paramètres de saut de page

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal