import en from './en.json'//英语语言包
import zhHans from './zh-Hans.json'//英语语言包
import Vue from 'vue'
import VueI18n from 'vue-i18n'

// 国际化字段映射
import objectLangMap from './objectLangMap'
Vue.use(VueI18n)


// 获取系统语言
const systemInfo = uni.getSystemInfoSync();
// const systemLang = 'en';
const systemLang = systemInfo.language || 'en';

console.log(systemInfo.language, systemLang);

// 语言映射，将系统语言映射到我们支持的语言包
const langMap = {
    'zh': 'zh-Hans',
    'zh_CN': 'zh-Hans', 
    'zh-Hans': 'zh-Hans',
    'zh-Hant': 'zh-Hans', // 暂时都映射到简体中文
    'zh-TW': 'zh-Hans',
    'zh-HK': 'zh-Hans',
    'en': 'en',
    'en-US': 'en',
    'en-GB': 'en'
};


// 获取语言：优先缓存 -> 系统语言 -> 默认英语
const lang = uni.getStorageSync('language') || langMap[systemLang] || 'en';
// const lang = 'en';
// VueI18n构造函数所需要的配置
const i18nConfig = {
    locale: lang,//当前语言
	// 所需要用的语言包
    messages:{
		en,
		'zh-Hans' : zhHans,
	}
}



//将对象国际化
Vue.prototype.$ot = (obj, type, key) => {
    // 如果对象不存在，返回空字符串
    if (!obj) return '';
    
    // 获取当前语言
    const currentLang = i18n.locale;
    
    // 获取字段映射配置
    const typeConfig = objectLangMap[type];
    if (!typeConfig) return obj[key] || '';
    
    const fieldConfig = typeConfig[key];
    if (!fieldConfig) return obj[key] || '';
    
    // 获取当前语言对应的字段名
    const fieldName = fieldConfig[currentLang];
    if (!fieldName) return obj[key] || '';
    
    // 返回对象中对应字段的值，如果不存在则返回默认字段的值
    return obj[fieldName] || obj[key] || '';
}






const i18n = new VueI18n(i18nConfig)
export default i18n