i18n.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. /**
  2. * @created by helin3 2019-04-09
  3. * @updated by
  4. * @description i18n工具类
  5. */
  6. /* eslint prefer-template:0 */
  7. import { sessionStore } from '@yufp/xy-utils'; // 调用先后顺序问题,直接从xy-utils包中获取
  8. import messages from '@yufp/locale/messages';
  9. import { LANGUAGE } from '@/config/constant/app.data.common';
  10. /**
  11. * 获取当前语言
  12. * 1) 首先获取历史设置的,若不存在,获取config.js中配置的,配置也没有,直接获取浏览器语言;
  13. * 2) 若还是不存在,则获取默认:zh_CN
  14. */
  15. export function getLanguage() {
  16. const chooseLanguage = sessionStore.get(LANGUAGE);
  17. if (chooseLanguage) {
  18. return chooseLanguage;
  19. }
  20. // if has not choose language
  21. const language = (navigator.language || navigator.browserLanguage).toLowerCase();
  22. const locales = Object.keys(messages);
  23. for (const locale of locales) {
  24. if (language.indexOf(locale) > -1) {
  25. return locale;
  26. }
  27. }
  28. return 'zh_CN';
  29. }
  30. /**
  31. * 转换路由route.meta.title,在面包屑、侧边栏、页签
  32. * @param {*} title
  33. */
  34. export function generateTitle(title) {
  35. const hasKey = this.$te('route.' + title);
  36. if (hasKey) {
  37. // $t :this method from vue-i18n, inject in @/locale/index.js,
  38. const translatedTitle = this.$t('route.' + title);
  39. return translatedTitle;
  40. }
  41. return title;
  42. }