language.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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') res = await getApp().globalData.http.base({
  13. id: 2024062809072801,
  14. content: {
  15. date: Date.now()
  16. }
  17. })
  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. getLanguagePackage(that, setNavBarTitle) {
  27. if (this.languagecode == null) {
  28. setTimeout(() => {
  29. this.getLanguagePackage(that, setNavBarTitle)
  30. }, 100)
  31. } else {
  32. that.setData({
  33. language: this.languagePackage,
  34. sColors: getApp().globalData.sColors
  35. })
  36. if (setNavBarTitle) this.setNavBarTitle(setNavBarTitle)
  37. }
  38. }
  39. getMapText(text, f = '', r = '') {
  40. let v = ''
  41. try {
  42. v = this.languagePackage[text] || text
  43. } catch (error) {
  44. if (wx.getStorageSync('languagecode') != 'ZH') console.log('getMapText:未获取到', text)
  45. v = text
  46. }
  47. return f + v + r
  48. }
  49. setNavBarTitle(title) {
  50. wx.setNavigationBarTitle({
  51. title: this.getMapText(title)
  52. })
  53. }
  54. showToast(list, mask = false) {
  55. if (list.length) wx.showToast({
  56. title: this.joint(list),
  57. icon: "none",
  58. mask: mask
  59. })
  60. }
  61. modeBoxPrompts(list = [], title = '提示', confirmText = '确定') {
  62. wx.showModal({
  63. title: this.getMapText(title),
  64. content: this.joint(list),
  65. showCancel: false,
  66. confirmText: this.getMapText(confirmText),
  67. })
  68. }
  69. /* t:translate 是否翻译 v:value 值 f:front 前面 r:rear 后面 */
  70. joint(list) {
  71. if (typeof list == 'string') return this.getMapText(list)
  72. let str = ''
  73. list.forEach(v => {
  74. let value = ''
  75. try {
  76. value = v.t ? this.getMapText(v.v, v.f || '', v.r || '') : ((v.f || '') + v.v + (v.r || ''))
  77. } catch (error) {
  78. value = (v.f || '') + v.v + (v.r || '')
  79. }
  80. str += value
  81. })
  82. return str
  83. }
  84. }
  85. export {
  86. Language
  87. }