language.js 2.2 KB

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