|
|
@@ -1,49 +1,97 @@
|
|
|
class Language {
|
|
|
constructor() {
|
|
|
- this.languagecode = null;
|
|
|
- this.languagePackage = null;
|
|
|
this.getLanguages = this.getLanguages.bind(this);
|
|
|
+ this.languagecode = wx.getStorageSync('languagecode') || 'ZH';
|
|
|
+ this.languageRequestInProgress = null; // 新增:用于标识请求是否正在进行
|
|
|
+ if (this.languagecode != 'ZH') {
|
|
|
+ setTimeout(() => {
|
|
|
+ this.getLanguages(this.languagecode)
|
|
|
+ }, 300)
|
|
|
+ } else {
|
|
|
+ wx.removeStorageSync('languagePackage');
|
|
|
+ wx.setStorageSync('languagePackage', {
|
|
|
+ "新建": "新建"
|
|
|
+ })
|
|
|
+ }
|
|
|
}
|
|
|
+ async getLanguages(languagecode) {
|
|
|
+ if (this.languageRequestInProgress) return this.languageRequestInProgress;
|
|
|
|
|
|
- getLanguages(languagecode) {
|
|
|
- return new Promise((resolve) => {
|
|
|
- setTimeout(async () => {
|
|
|
+ // 先创建请求 Promise
|
|
|
+ let requestPromise = (async () => {
|
|
|
+ try {
|
|
|
let res = {
|
|
|
data: {}
|
|
|
+ };
|
|
|
+ if (languagecode !== 'ZH') {
|
|
|
+ res = await getApp().globalData.http.base({
|
|
|
+ id: 2024062809072801,
|
|
|
+ content: {
|
|
|
+ date: Date.now()
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
- if (languagecode != 'ZH') res = await getApp().globalData.http.base({
|
|
|
- id: 2024062809072801,
|
|
|
- content: {
|
|
|
- date: Date.now()
|
|
|
- }
|
|
|
- })
|
|
|
- this.languagePackage = res.data[languagecode] || {};
|
|
|
+
|
|
|
+ // 更新语言包和语言代码
|
|
|
+ wx.removeStorageSync('languagePackage');
|
|
|
+ wx.setStorageSync('languagePackage', res.data[languagecode] || {
|
|
|
+ "新建": "新建"
|
|
|
+ });
|
|
|
this.languagecode = languagecode;
|
|
|
- resolve(this.languagePackage)
|
|
|
+
|
|
|
+ // 保存到本地存储
|
|
|
wx.removeStorageSync('languagecode');
|
|
|
- wx.setStorageSync('languagecode', languagecode)
|
|
|
- })
|
|
|
- })
|
|
|
+ wx.setStorageSync('languagecode', languagecode);
|
|
|
+
|
|
|
+ } catch (error) {
|
|
|
+ throw error;
|
|
|
+ }
|
|
|
+ })();
|
|
|
+
|
|
|
+ // 🔑 把 this.languageRequestInProgress 设为一个带 finally 的 Promise
|
|
|
+ this.languageRequestInProgress = requestPromise.finally(() => {
|
|
|
+ this.languageRequestInProgress = null;
|
|
|
+ });
|
|
|
+
|
|
|
+ return this.languageRequestInProgress;
|
|
|
}
|
|
|
|
|
|
- getLanguagePackage(that, setNavBarTitle) {
|
|
|
- if (this.languagecode == null) {
|
|
|
- setTimeout(() => {
|
|
|
- this.getLanguagePackage(that, setNavBarTitle)
|
|
|
- }, 100)
|
|
|
- } else {
|
|
|
+
|
|
|
+ getLanguagePackage(that, setNavBarTitle, count = 0) {
|
|
|
+ if (count == 10) return;
|
|
|
+ if (this.languagecode == 'ZH') {
|
|
|
that.setData({
|
|
|
- language: this.languagePackage,
|
|
|
+ language: {
|
|
|
+ "新建": "新建"
|
|
|
+ },
|
|
|
sColors: getApp().globalData.sColors
|
|
|
- })
|
|
|
- if (setNavBarTitle) this.setNavBarTitle(setNavBarTitle)
|
|
|
+ });
|
|
|
+ if (setNavBarTitle) this.setNavBarTitle(setNavBarTitle);
|
|
|
+ } else {
|
|
|
+ if (!wx.getStorageSync('languagePackage')['新建']) {
|
|
|
+ if (count == 0) that.setData({
|
|
|
+ sColors: getApp().globalData.sColors,
|
|
|
+ language: {
|
|
|
+ "新建": "新建"
|
|
|
+ },
|
|
|
+ });
|
|
|
+ setTimeout(() => {
|
|
|
+ this.getLanguagePackage(that, setNavBarTitle, count + 1);
|
|
|
+ }, count == 0 ? 400 : 100);
|
|
|
+ } else {
|
|
|
+ that.setData({
|
|
|
+ language: wx.getStorageSync('languagePackage'),
|
|
|
+ sColors: getApp().globalData.sColors
|
|
|
+ });
|
|
|
+ if (setNavBarTitle) this.setNavBarTitle(setNavBarTitle);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
getMapText(text, f = '', r = '') {
|
|
|
let v = ''
|
|
|
try {
|
|
|
- v = this.languagePackage[text] || text
|
|
|
+ v = wx.getStorageSync('languagePackage')[text] || text
|
|
|
} catch (error) {
|
|
|
if (wx.getStorageSync('languagecode') != 'ZH') console.log('getMapText:未获取到', text)
|
|
|
v = text
|
|
|
@@ -70,7 +118,6 @@ class Language {
|
|
|
confirmText: this.getMapText(confirmText),
|
|
|
})
|
|
|
}
|
|
|
-
|
|
|
/* t:translate 是否翻译 v:value 值 f:front 前面 r:rear 后面 */
|
|
|
joint(list) {
|
|
|
if (typeof list == 'string') return this.getMapText(list)
|