i18n.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. import langEn from './en'
  2. import zhHans from './zh-Hans'
  3. import langPt from './pt'
  4. import langUz from './uz'
  5. import langRu from './korcemAPP'
  6. import uniStarterConfig from '../uni-starter.config.js'
  7. const {
  8. i18n: {
  9. enable: i18nEnable
  10. }
  11. } = uniStarterConfig
  12. const messages = {
  13. 'en': langEn,
  14. 'zh-Hans': zhHans,
  15. 'pt': langPt,
  16. 'uz':langUz,
  17. 'ru':langRu,
  18. }
  19. let currentLang
  20. if (i18nEnable) {
  21. currentLang = uni.getStorageSync('CURRENT_LANG')
  22. } else {
  23. currentLang = "zh-Hans"
  24. }
  25. // console.log(uni.getStorageSync('CURRENT_LANG'),currentLang);
  26. if (!currentLang) {
  27. if (uni.getLocale) {
  28. console.log('获取应用语言:', uni.getLocale());
  29. let language = 'en'
  30. if (uni.getLocale() != 'en' && uni.getLocale() != 'pt') {
  31. language = 'zh-Hans'
  32. } else if (uni.getLocale() != 'zh-Hans' && uni.getLocale() != 'en') {
  33. language = 'pt'
  34. } else if (uni.getLocale() != 'zh-Hans'&&uni.getLocale() != 'pt' && uni.getLocale() != 'en') {
  35. language = 'ru'
  36. }
  37. uni.setStorageSync('CURRENT_LANG', language)
  38. currentLang = language
  39. } else {
  40. uni.getSystemInfo({
  41. success: function(res) {
  42. console.log('获取设备信息:', res);
  43. let language = 'zh-Hans'
  44. if (res.language == 'en') {
  45. language = 'en'
  46. } else if (res.language == 'pt') {
  47. language = 'pt'
  48. } else if (res.language == 'uz') {
  49. language = 'uz'
  50. }else if (res.language == 'ru') {
  51. language = 'ru'
  52. }
  53. uni.setStorageSync('CURRENT_LANG', language)
  54. currentLang = language
  55. },
  56. fail: (err) => {
  57. console.error(err)
  58. }
  59. })
  60. }
  61. }
  62. let i18nConfig = {
  63. locale: currentLang, // set locale
  64. messages // set locale messages
  65. }
  66. // #ifdef VUE2
  67. import Vue from 'vue'
  68. import VueI18n from 'vue-i18n'
  69. Vue.use(VueI18n)
  70. const i18n = new VueI18n(i18nConfig)
  71. // #endif
  72. // #ifdef VUE3
  73. import {
  74. createI18n
  75. } from 'vue-i18n'
  76. const i18n = createI18n(i18nConfig)
  77. // #endif
  78. export default i18n
  79. if (i18nEnable) {
  80. console.log(`
  81. 你已开启多语言国际化,将自动根据语言获取【lang/en.js】或【lang/en.js】文件中配置的tabbar的值,
  82. 覆盖你在pages.json中的tabbar的值
  83. 如果你不需要多语言国际化,请打开配置文件uni-starter.config.js找到 -> i18n -> enable把值设置为false
  84. `);
  85. let initLanguageAfter = () => {
  86. function $i18n(e) {
  87. // #ifdef VUE3
  88. return i18n.global.messages[i18n.global.locale][e]
  89. // #endif
  90. return i18n.messages[i18n.locale][e]
  91. }
  92. setTimeout(function() {
  93. try {
  94. //底部tabbar更新
  95. $i18n('tabbar').split(',').forEach((text, index) => {
  96. // console.log(text);
  97. uni.setTabBarItem({
  98. index,
  99. text,
  100. complete: e => {
  101. // console.log("e: " + JSON.stringify(e));
  102. }
  103. })
  104. })
  105. } catch (e) {
  106. }
  107. }, 1)
  108. //更新 uni-starter.config agreements
  109. let agreementsTitle = $i18n('agreementsTitle').split(',')
  110. let agreements = uniStarterConfig.about.agreements
  111. agreements[0].title = agreementsTitle[0]
  112. agreements[1].title = agreementsTitle[1]
  113. uniStarterConfig.about.agreements = agreements
  114. }
  115. initLanguageAfter()
  116. uni.$on('changeLanguage', e => {
  117. console.log('changeLanguage', e);
  118. initLanguageAfter(e)
  119. })
  120. }