当前位置:   article > 正文

国际化——Vue-i18n的使用_类型“i18n<{ en: { message: { hello: string; }; }; cn

类型“i18n<{ en: { message: { hello: string; }; }; cn: { message: { hello: s

Vue-i18n安装

  • npm install vue-i18n --save

Vue-i18n的使用

  • 在入口main.js文件配置使用
  1. import Vue from 'vue'
  2. import VueI18n from 'vue-i18n'
  3. Vue.use(VueI18n);
  4. /*---------基本使用-----------*/
  5. const i18n = new VueI18n({
  6. locale: 'CN', // 语言标识
  7. messages : {
  8. en: {
  9. message: {
  10. hello: 'hello world'
  11. }
  12. },
  13. cn: {
  14. message: {
  15. hello: '你好、世界'
  16. }
  17. }
  18. }
  19. })
  20. /*---------使用语言包-----------*/
  21. const i18n = new VueI18n({
  22. locale: 'CN', // 语言标识
  23. messages: {
  24. 'CN': require('./assets/common/lang/cn'), // 中文语言包
  25. 'EN': require('./assets/common/lang/en') // 英文语言包
  26. },
  27. })
  28. /*---------语言包内部语法star-----------*/
  29. export const message = {
  30. language:'语言',
  31. hello: '你好,世界'
  32. }
  33. /*---------语言包内部语法end-----------*/
  34. /*---------挂载全局使用-----------*/
  35. new Vue({
  36. el: '#app',
  37. i18n,
  38. router,
  39. template: '<App/>',
  40. components: { App }
  41. })
  42. /*---------vue组件模板的使用-----------*/
  43. <template>
  44. <p>{{ $t("message.hello") }}</p>
  45. </template>

单独组件的使用

  • 在单个vue组件中使用,要用到i18n自定义块,需要配置webpack文件webpack.base.conf.js
  1. module.exports = {
  2. // ...
  3. module: {
  4. rules: [
  5. {
  6. test: /\.vue$/,
  7. loader: 'vue-loader',
  8. options: {
  9. loaders: {
  10. // you need to specify `i18n` loaders key with `vue-i18n-loader` (https://github.com/kazupon/vue-i18n-loader)
  11. i18n: '@kazupon/vue-i18n-loader'
  12. }
  13. }
  14. },
  15. // ...
  16. ]
  17. },
  18. // ...
  19. }
  • 示例
  1. <i18n>
  2. {
  3. "en": {
  4. "hello": "hello world!"
  5. },
  6. "ja": {
  7. "hello": "你好,世界!"
  8. }
  9. }
  10. </i18n>
  11. <template>
  12. <div id="app">
  13. <label for="locale">locale</label>
  14. <select v-model="locale">
  15. <option>en</option>
  16. <option>ja</option>
  17. </select>
  18. <p>message: {{ $t('hello') }}</p>
  19. </div>
  20. </template>
  21. <script>
  22. export default {
  23. name: 'app',
  24. data () { return { locale: 'en' } },
  25. watch: {
  26. locale (val) {
  27. this.$i18n.locale = val
  28. }
  29. }
  30. }
  31. </script>


作者:前端小兵
链接:https://www.jianshu.com/p/0324115fcd4e
 

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/418131
推荐阅读
相关标签
  

闽ICP备14008679号