language.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. class Language {
  2. constructor() {
  3. this.languagePackage = null;
  4. this.getLanguages = this.getLanguages.bind(this);
  5. }
  6. getLanguages(languagecode) {
  7. return new Promise((resolve) => {
  8. setTimeout(async () => {
  9. let res = {
  10. data: {}
  11. }
  12. if (languagecode != 'ZH' || this.languagePackage == null) res = await getApp().globalData.http.base({
  13. id: 2024062809072801,
  14. content: {
  15. date: Date.now()
  16. }
  17. })
  18. console.log("获取语言包", res.data)
  19. this.languagePackage = res.data[languagecode] || {};
  20. resolve(this.languagePackage)
  21. this.languagecode = languagecode;
  22. wx.removeStorageSync('languagecode');
  23. wx.setStorageSync('languagecode', languagecode)
  24. })
  25. })
  26. }
  27. async getLanguagePackage(that, setNavBarTitle) {
  28. that.setData({
  29. language: this.languagePackage || await this.getLanguages(wx.getStorageSync('languagecode')),
  30. sColors: getApp().globalData.sColors
  31. })
  32. if (setNavBarTitle) this.setNavBarTitle(setNavBarTitle)
  33. }
  34. getMapText(text, f = '', r = '') {
  35. let v = ''
  36. try {
  37. v = this.languagePackage[text] || text
  38. } catch (error) {
  39. if (wx.getStorageSync('languagecode') != 'ZH') console.log('getMapText:未获取到', text)
  40. v = text
  41. }
  42. return f + v + r
  43. }
  44. setNavBarTitle(title) {
  45. wx.setNavigationBarTitle({
  46. title: this.getMapText(title)
  47. })
  48. }
  49. showToast(list, mask = false) {
  50. if (list.length) wx.showToast({
  51. title: this.joint(list),
  52. icon: "none",
  53. mask: mask
  54. })
  55. }
  56. modeBoxPrompts(list = [], title = '提示', confirmText = '确定') {
  57. wx.showModal({
  58. title: this.getMapText(title),
  59. content: this.joint(list),
  60. showCancel: false,
  61. confirmText: this.getMapText(confirmText),
  62. })
  63. }
  64. /* t:translate 是否翻译 v:value 值 f:front 前面 r:rear 后面 */
  65. joint(list) {
  66. if (typeof list == 'string') return this.getMapText(list)
  67. let str = ''
  68. list.forEach(v => {
  69. let value = ''
  70. try {
  71. value = v.t ? this.getMapText(v.v, v.f || '', v.r || '') : ((v.f || '') + v.v + (v.r || ''))
  72. } catch (error) {
  73. value = (v.f || '') + v.v + (v.r || '')
  74. }
  75. str += value
  76. })
  77. return str
  78. }
  79. }
  80. export {
  81. Language
  82. }