import {LDayutsLocale} from '../../types/date.uts'
import en from './locale/en'
import zhCn from './locale/zh-cn'

const localesMap = new Map<string, LDayutsLocale>()
//定义一个大写的State类型
type LocaleState = {
  lang: string;
  locales: Map<string, LDayutsLocale>
}
export let localeState = reactive({
  lang: 'en',
  locales: localesMap
} as LocaleState)
localeState.locales.set('en', en)
localeState.locales.set('zh-cn', zhCn)

class DayutsIntl {
	constructor(){}
	use(locale:LDayutsLocale):DayutsIntl{
		localeState.locales.set(locale.name, locale)
		return this
	}
	set locale(locale: string){
		if(localeState.locales.has(locale)){
			localeState.lang = locale
		} else {
			let list:string[] = []
			localeState.locales.forEach(function(_:any,key:string){
			   list.push(key)
			})
			console.warn(`未知语言: "${locale}". 请使用以下已知语言之一:${list.join(', ')}`);
		}
	}
	get locale(): string{
		return localeState.lang
	}
	set(name: string, locale:LDayutsLocale){
		localeState.locales.set(name, locale)
	}
	has(name: string):boolean{
		return localeState.locales.has(name)
	}
}
export const dayutsIntl = new DayutsIntl()


// const dyauts = use(xx).use(xx).use(xx).use(xx)
// dyauts.locale ='zh'