// 在 index.js 文件进行配置
// 导入所需的库和资源： 代码中导入了 Vue.js 框架、Vue I18n 扩展以及各种语言版本的翻译资源，包括 Element UI 组件库的翻译。
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import Cookies from 'js-cookie'
import elementViLocale from 'element-ui/lib/locale/lang/vi'// element-ui lang
import elementEnLocale from 'element-ui/lib/locale/lang/en' // element-ui lang
import elementZhLocale from 'element-ui/lib/locale/lang/zh-CN'// element-ui lang
import elementTwLocale from 'element-ui/lib/locale/lang/zh-TW'// element-ui lang
import viLocale from './vi'
import enLocale from './en'
import zhLocale from './zh'
import twLocale from './tw'


// 启用 Vue I18n：使其可以在 Vue 应用中使用。
Vue.use(VueI18n)

// 定义翻译信息： 创建一个名为 messages 的对象，其中包含不同语言的翻译信息。每个语言都由一个键值对表示，包括自定义的应用文本翻译和 Element UI 组件库的翻译信息。
const messages = {
	// vi: {
	// 	...viLocale,
	// 	...elementViLocale
	// },
	tw: {
		...twLocale,
		...elementTwLocale
	},
	en: {
		...enLocale,
		...elementEnLocale
	},
	zh: {
		...zhLocale,
		...elementZhLocale
	}

}
// 确定用户语言偏好： 定义名为 getLanguage 的函数，根据用户选择的语言和浏览器语言设置来确定应该使用的语言。如果用户未选择语言或浏览器语言无匹配项，则默认使用英语。
export function getLanguage() {
  const chooseLanguage = Cookies.get('language')
  if (chooseLanguage) return chooseLanguage

  // if has not choose language
  const language = (navigator.language || navigator.browserLanguage).toLowerCase()
  const locales = Object.keys(messages)
  for (const locale of locales) {
    if (language.indexOf(locale) > -1) {
      return locale
    }
  }
  return 'vi'
}

// 创建 Vue I18n 实例： 使用 VueI18n 的构造函数创建一个名为 i18n 的实例。在构造函数中，通过传递当前语言代码和翻译信息来初始化实例。
const i18n = new VueI18n({
  // set locale
  // options: en | zh | es
  locale: getLanguage(),
  // set locale messages
  messages
})

// 导出 I18n 实例
export default i18n

