class Language {
	constructor() {
		this.languagePackage = null;
	}

	getLanguages(languagecode) {
		return new Promise((resolve) => {
			setTimeout(async () => {
				let res = {
					data: {}
				}
				if (languagecode != 'ZH' || this.languagePackage == null) res = await getApp().globalData.http.base({
					id: 2024062809072801,
					content: {
						date: Date.now()
					}
				})
				console.log("获取语言包", res.data)
				this.languagePackage = res.data[languagecode] || {};
				resolve(this.languagePackage)
				this.languagecode = languagecode;
				wx.removeStorageSync('languagecode');
				wx.setStorageSync('languagecode', languagecode)
			})
		})
	}

	async getLanguagePackage(that, setNavBarTitle) {
		that.setData({
			language: this.languagePackage || await this.getLanguages(wx.getStorageSync('languagecode')),
			sColors: getApp().globalData.http.sColors
		})
		if (setNavBarTitle) this.setNavBarTitle(setNavBarTitle)
	}

	getMapText(text, f = '', r = '') {
		let v = ''
		try {
			v = this.languagePackage[text] || text
		} catch (error) {
			console.log('getMapText:未获取到', text)
			v = text
		}
		return f + v + r
	}
	setNavBarTitle(title) {
		wx.setNavigationBarTitle({
			title: this.getMapText(title)
		})
	}

	modeBoxPrompts(list, title = '提示', confirmText = '确定') {
		wx.showModal({
			title: this.getMapText(title),
			content: this.joint(list),
			showCancel: false,
			confirmText: this.getMapText(confirmText),
		})
	}
	showToast(list) {
		if (list.length) wx.showToast({
			title: this.joint(list),
			icon: "none"
		})
	}
	modeBoxPrompts(list = [], title = '提示', confirmText = '确定') {
		wx.showModal({
			title: this.getMapText(title),
			content: this.joint(list),
			showCancel: false,
			confirmText: this.getMapText(confirmText),
		})
	}

	/* t:translate 是否翻译 v:value 值 f:front 前面 r:rear 后面 */
	joint(list) {
		if (typeof list == 'string') return this.getMapText(list)
		let str = ''
		list.forEach(v => {
			let value = ''
			try {
				value = v.t ? this.getMapText(v.v, v.f || '', v.r || '') : ((v.f || '') + v.v + (v.r || ''))
			} catch (error) {
				value = (v.f || '') + v.v + (v.r || '')
			}
			str += value
		})
		return str
	}
}
export {
	Language
}