`
javashop
  • 浏览: 46831 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

电商系统中实现国际化

阅读更多

 

摘要:vue的电商系统我们需要支持多种语言切换,满足国际化需求。 vue-i18n是一个vue插件,主要作用就是让项目支持国际化多语言,使用方便快捷,能很轻松的将我们的项目国际化。主要介绍使用vue-i18n实现切换中英文效果。

 

一、 先安装vue-i18n

使用npm安装vue-i18n

 

npm install vue vue-i18n --save

 

二、 引入vue-i18n

在main.js里引入vue-i18n和相关用到的文件

import Vue from 'vue'

import 'babel-polyfill'

import 'normalize.css/normalize.css' // A modern alternative to CSS resets
import Element from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'

import UIComponents from 'ui-components'
import EnComponents from '@/components'
import VueAwesomeSwiper from 'vue-awesome-swiper'
import 'swiper/dist/css/swiper.css'

import '@/styles/index.scss' // global css
import App from './App'
import router from './router'
import store from './store'

import i18n from './lang' // Internationalization
import './icons' // icon
import './permission' // permission control
// 全局注册echarts、jsonp
import echarts from 'echarts'
import axios from 'axios'
// register global utility filters.
import * as filters from './filters' // global filter
// register global utility mixins.
import mixin from './utils/mixin'
import * as API_Common from './api/common'
import Cookies from 'js-cookie'

Vue.use(Element, {
  size: 'small',
  i18n: (key, value) => i18n.t(key, value)
})

Vue.use(UIComponents)
Vue.use(EnComponents)
Vue.use(VueAwesomeSwiper)

Vue.prototype.$echarts = echarts
Vue.prototype.$http = axios

Vue.prototype.$message.success = function(text) {
  Vue.prototype.$message({
    showClose: true,
    message: text,
    type: 'success',
    duration: 5000
  })
}
Vue.prototype.$message.error = function(text) {
  Vue.prototype.$message({
    showClose: true,
    message: text,
    type: 'error',
    duration: 5000
  })
}

Object.keys(filters).forEach(key => {
  Vue.filter(key, filters[key])
})

Vue.mixin(mixin)

Vue.config.productionTip = false
API_Common.getLanguage(Cookies.get('adminLanguage') || 'zh').then(response => {
  new Vue({
    el: '#app',
    beforeCreate() { this.$i18n.setLocaleMessage(Cookies.get('adminLanguage') || 'zh', response) },
    router,
    store,
    i18n,
    template: '<App/>',
    components: { App }
  })
}).catch(() => {
  Element.Message.error('设置语言失败,请刷新页面重试!')
  new Vue({
    el: '#app',
    router,
    store,
    i18n,
    template: '<App/>',
    components: { App }
  })
})

 

三、 从后台获取语言包数据

1.新建文件夹lang并在里index.js里引入vue-i18n并且创建带有选项的 VueI18n 实例
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import Cookies from 'js-cookie'
Vue.use(VueI18n)

const messages = {
}

const i18n = new VueI18n({
  locale: Cookies.get('adminLanguage') || 'zh', // set locale  
  messages // set locale messages
})

export default i18n

 注意:文中有js-cookie 实例中加载了从后台请求过来的语言包

 

2.在vuex store里modules新建APP.js里切换的时候,根据语言加载各个国家的语言
import Cookies from 'js-cookie'
const app = {
  state: {
    sidebar: {
      opened: !+Cookies.get('adminSidebarStatus'),
      withoutAnimation: false
    },
    device: 'desktop',
    language: Cookies.get('adminLanguage') || 'zh'
  },
  mutations: {
    TOGGLE_SIDEBAR: state => {
      if (state.sidebar.opened) {
        Cookies.set('adminSidebarStatus', 1)
      } else {
        Cookies.set('adminSidebarStatus', 0)
      }
      state.sidebar.opened = !state.sidebar.opened
      state.sidebar.withoutAnimation = false
    },
    CLOSE_SIDEBAR: (state, withoutAnimation) => {
      Cookies.set('adminSidebarStatus', 1)
      state.sidebar.opened = false
      state.sidebar.withoutAnimation = withoutAnimation
    },
    TOGGLE_DEVICE: (state, device) => {
      state.device = device
    },
    SET_LANGUAGE: (state, language) => {
      state.language = language
      Cookies.set('adminLanguage', language)
    }
  },
  actions: {
    toggleSideBar({ commit }) {
      commit('TOGGLE_SIDEBAR')
    },
    closeSideBar({ commit }, { withoutAnimation }) {
      commit('CLOSE_SIDEBAR', withoutAnimation)
    },
    toggleDevice({ commit }, device) {
      commit('TOGGLE_DEVICE', device)
    },
    setLanguage({ commit }, language) {
      commit('SET_LANGUAGE', language)
    }
  }
}

export default app

 

3.在utils里新建文件转换router.meta.title,用于面包屑侧边栏标签视图
 
export function generateTitle(title) {
return this.$t('route.' + title) // $t :this method from vue-i18n ,inject in @/lang/index.js
}

 

4.在utils里新建文件request.js 在request方法里加 如果是刷新token或者登录,不需要检查token直接请求语言包
export default function request(options) {
  console.log(11, options)
  // 如果是刷新token或者登录,不需要检查token直接请求。
  if (options.url.indexOf('systems/admin-users/login') + options.url.indexOf('systems/admin-users/token') + options.url.indexOf('validator') + options.url.indexOf('language') > -4) {
    // console.log(options.url + ' | 请求的刷新token或是登录,不需要检查token直接请求。')
    return service(options)
  }
  return new Promise((resolve, reject) => {
    checkToken(options).then(() => {
      service(options).then(resolve).catch(reject)
    })
  })
}

 

四、根据vuex切换语言动态加载语言包

<script>
  import * as API_Common from '../../api/common'
  export default {
    computed: {
      language() {
        return this.$store.getters.language
      }
    },
    methods: {
      handleSetLanguage(lang) {
        API_Common.getLanguage(lang).then(async response => {
          this.$i18n.setLocaleMessage(lang, response)
          await this.$nextTick()
          this.$i18n.locale = lang //通过切换locale的值来实现语言切换
          this.$store.dispatch('setLanguage', lang)
          this.$message({
            message: lang === 'zh' ? '语言切换成功' : 'switch language success',
            type: 'success'
          })
        })
      }
    }
}
</scrip

五、页面使用

 

{{$t('group.text1')}}
vue 组件form表单使用 :label="$t('group.text1')"

 

分享到:
评论

相关推荐

    我国跨境电商支付平台品牌国际化转型的问题及对策--以PingPong网为例.pdf

    为了顺利实现国际化转型,PingPong网需要从品牌建设、市场拓展、人才引进、知识产权保护等多个方面进行优化和提升,以适应国际市场的竞争需要。同时,国家相关战略的推动以及行业整体的增长趋势,为PingPong网等跨境...

    绍兴跨境电商茶叶企业品牌国际化策略分析.pdf

    但是,绍兴的茶叶企业却未能充分借助跨境电商的优势实现国际化发展,这与其品牌策略有着紧密的关联。绍兴的茶叶企业想要在国际市场上占据一席之地,必须采用恰当的国际化策略与运作。 首先,绍兴的茶叶企业应当重视...

    电商企业国际化战略分析--以阿里巴巴集团为例.pdf

    因此,分析阿里巴巴集团的国际化战略对于指导其他电商企业实现国际化具有重要的现实意义。 阿里巴巴集团自1999年成立以来,凭借其在国际交易市场的拓展,逐步成为全球最大的零售交易平台之一。其业务涵盖了跨境电子...

    跨境电商出口与品牌国际化——基于马德里商标注册的VAR模型分析.zip

    2. 品牌国际化策略:讨论品牌如何通过跨境电商实现国际化,包括市场定位、营销策略和品牌故事等。 3. 马德里商标注册的优势:解释马德里体系的工作原理,对比传统逐一国家申请商标的差异,展示其在跨境电商中的应用...

    中国跨境电商出口企业品牌国际化策略分析.pdf

    从上述内容可以了解到,跨境电商出口企业要想实现品牌国际化,必须从多个维度去考虑和执行策略,包括但不限于加强品牌意识、优化产品研发、强化知识产权保护、深入了解目标市场以及塑造具有吸引力的品牌故事等。...

    跨境电商出口与品牌国际化——基于马德里商标注册的VAR模型分析.pdf

    跨境电商出口与品牌国际化之间存在着紧密的联系。随着跨境电商的兴起,我国品牌有了更加便利的渠道去...未来,随着跨境电商平台的不断优化和全球市场环境的变化,我国品牌通过跨境电商出口实现国际化的步伐将更加稳健。

    跨境电商中小卖家依托自营模式实现品牌化运营的路径研究.pdf

    自营平台模式,又称外贸独立站模式,为跨境电商中小卖家提供了品牌国际化的机会。通过自建站,企业能够构建起自己的品牌故事,摆脱第三方平台的限制,更为灵活地进行品牌推广和客户互动。此外,外贸独立站可以更好地...

    基于javaweb电商系统设计的开题报告.pdf

    《基于Java Web技术的电商系统设计与实现》 在当今社会,互联网的快速发展极大地改变了我们的生活,特别是购物方式。电商网站如淘宝、京东等已成为主流购物平台,它们以高效便捷的特性深受用户喜爱。例如,2016年双...

    国际电商下的国际货运代理行业发展.pdf

    一、国际电商对货运代理行业的影响及...综上所述,在国际电商的快速推进下,国际货运代理行业需要不断适应新的市场和技术变革,提高服务质量,降低成本,并加强行业自律与合作,以充分发挥其在电商全球化中的桥梁作用。

    人民币国际化对跨境电商的影响分析.pdf

    人民币国际化是指人民币作为支付手段、交易手段和价值贮藏手段在国际贸易和金融活动中得到更广泛的认可和使用。随着中国经济的持续增长和对外开放的不断扩大,人民币国际化进程加快,对跨境电子商务(跨境电商)产生...

    跨境电商网站系统的设计与分析.pdf

    跨境电商网站系统的设计与分析是当前电商行业中的一个热门议题。随着经济全球化和网络技术的发展,跨境电商已成为推动国际贸易的重要力量,具有非常重要的现实意义和商业价值。本文将深入探讨跨境电商网站系统的设计...

    中国跨境电商出口企业品牌国际化策略分析.zip

    在中国跨境电商出口企业品牌国际化策略分析中,我们探讨的是如何在全球市场中建立和推广中国品牌的议题。随着互联网技术的发展,跨境电商已成为中国出口企业拓展海外市场的重要途径。以下是对这一主题的详细分析: ...

    跨境电商中小卖家依托自营模式实现品牌化运营的路径研究

    这有助于中小卖家在竞争中找到差异化的定位,逐步实现品牌的国际化和高端化。 6. 提出的五条路径:虽然文章内容未完全给出五条路径的具体内容,但从上下文可以推断,这些路径可能涉及如何自建网站、如何利用社交...

    跨境电商环境下国际物流模式研究 (1).pdf

    国际物流方式多样,包括国际快递、海外仓、跨境专线物流、国内快递的国际化服务以及直邮等。这些模式旨在缩短运输时间,降低成本,减少丢失或损坏的风险。其中,海外仓模式通过集中运输降低单件配送成本,但可能导致...

    基于vue开发的电商管理系统源码.zip

    7. **国际化**:对于面向全球用户的电商系统,国际化的支持是必须的。Vue-i18n提供了一套完整的解决方案,可以根据用户设置切换语言环境。 8. **测试**:为了保证系统的健壮性,单元测试和集成测试也是重要的环节。...

    今年离不开电商系统了

    同时,随着全球电商的融合,多语言、多币种、跨国结算等国际化功能,也将成为电商系统必须考虑的要素。因此,紧跟技术发展的步伐,对于任何想要在电商领域取得成功的企业来说,都是一个永恒不变的话题。

    我国跨境电商支付平台品牌国际化转型的问题及对策--以PingPong网为例.zip

    通过以上分析,我们可以看出,中国的跨境电商支付平台,如PingPong网,要想成功实现国际化转型,需要克服法规、竞争、技术以及文化等多方面的挑战。通过制定有针对性的战略,不断调整和优化自身,才能在全球市场上...

    java电商源代码.

    Java电商系统通常采用Model-View-Controller(MVC)设计模式,这种架构将业务逻辑(Model)、用户界面(View)和数据控制(Controller)分离,有利于代码的维护和扩展。 2. **Spring框架**: Spring作为Java企业...

    支付类跨境电商生态系统的构建.pdf

    基于此,支付类跨境电商生态系统可以理解为,通过跨境电商平台实现国际贸易支付结算服务的参与者,包括消费者、供应商、平台企业、政府、金融机构等,它们相互作用,形成一个多维度、动态平衡的生态系统。...

Global site tag (gtag.js) - Google Analytics