lang.js 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. const langList = ["zh-cn", "en-us"]
  2. var locale = "zh-cn" //设置语言,uni.getStorageSync('lang') ||
  3. export default {
  4. langList: ["zh-cn", "en-us"],
  5. /**
  6. * 解析多语言
  7. * @param {Object} field 字段
  8. * @param {Object} route 路由对象
  9. */
  10. lang(field, route) {
  11. let name = "",
  12. module = ""
  13. if (route) {
  14. name = route.name
  15. module = route.meta.module
  16. if (route.path == "/" || route.name == "index") {
  17. name = "index"
  18. module = "index"
  19. }
  20. } else {
  21. name = vue.$route.name
  22. module = vue.$route.meta.module
  23. }
  24. if (!name || !module) return
  25. var value = ""
  26. try {
  27. // 公共语言包
  28. var lang = require("../lang/" + locale + "/common.js").lang
  29. // 当前页面语言包
  30. let currentViewLang = require("../lang/" + locale + "/" + module + "/" + name + ".js").lang
  31. Object.assign(lang, currentViewLang)
  32. var arr = field.split(".")
  33. if (arr.length > 1) {
  34. for (let i in arr) {
  35. var next = parseInt(i) + 1
  36. if (next < arr.length) {
  37. value = lang[arr[i]][arr[next]]
  38. }
  39. }
  40. } else {
  41. value = lang[field]
  42. }
  43. } catch (e) {
  44. value = field
  45. }
  46. if (arguments.length > 1) {
  47. //有参数,需要替换
  48. for (var i = 1; i < arguments.length; i++) {
  49. value = value.replace("{" + (i - 1) + "}", arguments[i])
  50. }
  51. }
  52. if (value == undefined || (value == "title" && field == "title")) value = "" // field
  53. return value
  54. },
  55. //切换语言
  56. change(value) {
  57. if (!vue) return
  58. vue.$store.commit("lang", value)
  59. locale = vue.$store.state.lang //设置语言
  60. this.refresh()
  61. },
  62. //刷新标题
  63. refresh(route) {
  64. window.document.title = this.lang("title", route)
  65. },
  66. // 获取语言包列表
  67. list() {
  68. var list = []
  69. try {
  70. //公共语言包
  71. for (var i = 0; i < langList.length; i++) {
  72. let item = require("../lang/" + langList[i] + "/common.js").lang
  73. list.push({
  74. name: item.common.name,
  75. value: langList[i]
  76. })
  77. }
  78. } catch (e) {
  79. // "没有找到语言包:", '../../lang/' + locale + '/common.js'
  80. }
  81. return list
  82. },
  83. // 获取字段语言展示
  84. getLangField(field, route) {
  85. return this.lang(field, route) || ""
  86. }
  87. }