UNPKG

lunar-typescript-optimize

Version:

A TypeScript library for Solar and Chinese Lunar calendar calculations, with optimized build and browser compatibility

931 lines (930 loc) 26.3 kB
import { LunarUtil } from "./LunarUtil.mjs"; import { SolarUtil } from "./SolarUtil.mjs"; import { TaoUtil } from "./TaoUtil.mjs"; import { FotoUtil } from "./FotoUtil.mjs"; import { NineStarUtil } from "./NineStarUtil.mjs"; export class I18n { static _DEFAULT_LANG = "chs"; static _LANG; static _INIT = false; static _MESSAGES = { "chs": { "wx.jin": "\u91D1", "wx.mu": "\u6728", "wx.shui": "\u6C34", "wx.huo": "\u706B", "wx.tu": "\u571F", "wx.ri": "\u65E5", "wx.yue": "\u6708", "n.zero": "\u3007", "n.one": "\u4E00", "n.two": "\u4E8C", "n.three": "\u4E09", "n.four": "\u56DB", "n.five": "\u4E94", "n.six": "\u516D", "n.seven": "\u4E03", "n.eight": "\u516B", "n.nine": "\u4E5D", "n.ten": "\u5341", "n.eleven": "\u5341\u4E00", "n.twelve": "\u5341\u4E8C", "d.one": "\u521D\u4E00", "d.two": "\u521D\u4E8C", "d.three": "\u521D\u4E09", "d.four": "\u521D\u56DB", "d.five": "\u521D\u4E94", "d.six": "\u521D\u516D", "d.seven": "\u521D\u4E03", "d.eight": "\u521D\u516B", "d.nine": "\u521D\u4E5D", "d.ten": "\u521D\u5341", "d.eleven": "\u5341\u4E00", "d.twelve": "\u5341\u4E8C", "d.thirteen": "\u5341\u4E09", "d.fourteen": "\u5341\u56DB", "d.fifteen": "\u5341\u4E94", "d.sixteen": "\u5341\u516D", "d.seventeen": "\u5341\u4E03", "d.eighteen": "\u5341\u516B", "d.nighteen": "\u5341\u4E5D", "d.twenty": "\u4E8C\u5341", "d.twentyOne": "\u5EFF\u4E00", "d.twentyTwo": "\u5EFF\u4E8C", "d.twentyThree": "\u5EFF\u4E09", "d.twentyFour": "\u5EFF\u56DB", "d.twentyFive": "\u5EFF\u4E94", "d.twentySix": "\u5EFF\u516D", "d.twentySeven": "\u5EFF\u4E03", "d.twentyEight": "\u5EFF\u516B", "d.twentyNine": "\u5EFF\u4E5D", "d.thirty": "\u4E09\u5341", "m.one": "\u6B63", "m.two": "\u4E8C", "m.three": "\u4E09", "m.four": "\u56DB", "m.five": "\u4E94", "m.six": "\u516D", "m.seven": "\u4E03", "m.eight": "\u516B", "m.nine": "\u4E5D", "m.ten": "\u5341", "m.eleven": "\u51AC", "m.twelve": "\u814A", "w.sun": "\u65E5", "w.mon": "\u4E00", "w.tues": "\u4E8C", "w.wed": "\u4E09", "w.thur": "\u56DB", "w.fri": "\u4E94", "w.sat": "\u516D", "ps.dong": "\u4E1C", "ps.nan": "\u5357", "ps.xi": "\u897F", "ps.bei": "\u5317", "ps.zhengDong": "\u6B63\u4E1C", "ps.zhengNan": "\u6B63\u5357", "ps.zhengXi": "\u6B63\u897F", "ps.zhengBei": "\u6B63\u5317", "ps.dongBei": "\u4E1C\u5317", "ps.dongNan": "\u4E1C\u5357", "ps.xiBei": "\u897F\u5317", "ps.xiNan": "\u897F\u5357", "jq.dongZhi": "\u51AC\u81F3", "jq.xiaoHan": "\u5C0F\u5BD2", "jq.daHan": "\u5927\u5BD2", "jq.liChun": "\u7ACB\u6625", "jq.yuShui": "\u96E8\u6C34", "jq.jingZhe": "\u60CA\u86F0", "jq.chunFen": "\u6625\u5206", "jq.qingMing": "\u6E05\u660E", "jq.guYu": "\u8C37\u96E8", "jq.liXia": "\u7ACB\u590F", "jq.xiaoMan": "\u5C0F\u6EE1", "jq.mangZhong": "\u8292\u79CD", "jq.xiaZhi": "\u590F\u81F3", "jq.xiaoShu": "\u5C0F\u6691", "jq.daShu": "\u5927\u6691", "jq.liQiu": "\u7ACB\u79CB", "jq.chuShu": "\u5904\u6691", "jq.baiLu": "\u767D\u9732", "jq.qiuFen": "\u79CB\u5206", "jq.hanLu": "\u5BD2\u9732", "jq.shuangJiang": "\u971C\u964D", "jq.liDong": "\u7ACB\u51AC", "jq.xiaoXue": "\u5C0F\u96EA", "jq.daXue": "\u5927\u96EA", "s.goodLuck": "\u5409", "s.badLuck": "\u51F6", "s.yin": "\u9634", "s.yang": "\u9633", "s.white": "\u767D", "s.black": "\u9ED1", "s.blue": "\u78A7", "s.green": "\u7EFF", "s.yellow": "\u9EC4", "s.red": "\u8D64", "s.purple": "\u7D2B", "jr.chuXi": "\u9664\u5915", "jr.chunJie": "\u6625\u8282", "jr.yuanXiao": "\u5143\u5BB5\u8282", "jr.longTou": "\u9F99\u5934\u8282", "jr.duanWu": "\u7AEF\u5348\u8282", "jr.qiXi": "\u4E03\u5915\u8282", "jr.zhongQiu": "\u4E2D\u79CB\u8282", "jr.chongYang": "\u91CD\u9633\u8282", "jr.laBa": "\u814A\u516B\u8282", "jr.yuanDan": "\u5143\u65E6\u8282", "jr.qingRen": "\u60C5\u4EBA\u8282", "jr.fuNv": "\u5987\u5973\u8282", "jr.zhiShu": "\u690D\u6811\u8282", "jr.xiaoFei": "\u6D88\u8D39\u8005\u6743\u76CA\u65E5", "jr.wuYi": "\u52B3\u52A8\u8282", "jr.qingNian": "\u9752\u5E74\u8282", "jr.erTong": "\u513F\u7AE5\u8282", "jr.yuRen": "\u611A\u4EBA\u8282", "jr.jianDang": "\u5EFA\u515A\u8282", "jr.jianJun": "\u5EFA\u519B\u8282", "jr.jiaoShi": "\u6559\u5E08\u8282", "jr.guoQing": "\u56FD\u5E86\u8282", "jr.wanShengYe": "\u4E07\u5723\u8282\u524D\u591C", "jr.wanSheng": "\u4E07\u5723\u8282", "jr.pingAn": "\u5E73\u5B89\u591C", "jr.shengDan": "\u5723\u8BDE\u8282" }, "en": { "tg.jia": "Jia", "tg.yi": "Yi", "tg.bing": "Bing", "tg.ding": "Ding", "tg.wu": "Wu", "tg.ji": "Ji", "tg.geng": "Geng", "tg.xin": "Xin", "tg.ren": "Ren", "tg.gui": "Gui", "dz.zi": "Zi", "dz.chou": "Chou", "dz.yin": "Yin", "dz.mao": "Mao", "dz.chen": "Chen", "dz.si": "Si", "dz.wu": "Wu", "dz.wei": "Wei", "dz.shen": "Shen", "dz.you": "You", "dz.xu": "Xu", "dz.hai": "Hai", "zx.jian": "Build", "zx.chu": "Remove", "zx.man": "Full", "zx.ping": "Flat", "zx.ding": "Stable", "zx.zhi": "Hold", "zx.po": "Break", "zx.wei": "Danger", "zx.cheng": "Complete", "zx.shou": "Collect", "zx.kai": "Open", "zx.bi": "Close", "jz.jiaZi": "JiaZi", "jz.yiChou": "YiChou", "jz.bingYin": "BingYin", "jz.dingMao": "DingMao", "jz.wuChen": "WuChen", "jz.jiSi": "JiSi", "jz.gengWu": "GengWu", "jz.xinWei": "XinWei", "jz.renShen": "RenShen", "jz.guiYou": "GuiYou", "jz.jiaXu": "JiaXu", "jz.yiHai": "YiHai", "jz.bingZi": "BingZi", "jz.dingChou": "DingChou", "jz.wuYin": "WuYin", "jz.jiMao": "JiMao", "jz.gengChen": "GengChen", "jz.xinSi": "XinSi", "jz.renWu": "RenWu", "jz.guiWei": "GuiWei", "jz.jiaShen": "JiaShen", "jz.yiYou": "YiYou", "jz.bingXu": "BingXu", "jz.dingHai": "DingHai", "jz.wuZi": "WuZi", "jz.jiChou": "JiChou", "jz.gengYin": "GengYin", "jz.xinMao": "XinMao", "jz.renChen": "RenChen", "jz.guiSi": "GuiSi", "jz.jiaWu": "JiaWu", "jz.yiWei": "YiWei", "jz.bingShen": "BingShen", "jz.dingYou": "DingYou", "jz.wuXu": "WuXu", "jz.jiHai": "JiHai", "jz.gengZi": "GengZi", "jz.xinChou": "XinChou", "jz.renYin": "RenYin", "jz.guiMao": "GuiMao", "jz.jiaChen": "JiaChen", "jz.yiSi": "YiSi", "jz.bingWu": "BingWu", "jz.dingWei": "DingWei", "jz.wuShen": "WuShen", "jz.jiYou": "JiYou", "jz.gengXu": "GengXu", "jz.xinHai": "XinHai", "jz.renZi": "RenZi", "jz.guiChou": "GuiChou", "jz.jiaYin": "JiaYin", "jz.yiMao": "YiMao", "jz.bingChen": "BingChen", "jz.dingSi": "DingSi", "jz.wuWu": "WuWu", "jz.jiWei": "JiWei", "jz.gengShen": "GengShen", "jz.xinYou": "XinYou", "jz.renXu": "RenXu", "jz.guiHai": "GuiHai", "sx.rat": "Rat", "sx.ox": "Ox", "sx.tiger": "Tiger", "sx.rabbit": "Rabbit", "sx.dragon": "Dragon", "sx.snake": "Snake", "sx.horse": "Horse", "sx.goat": "Goat", "sx.monkey": "Monkey", "sx.rooster": "Rooster", "sx.dog": "Dog", "sx.pig": "Pig", "dw.long": "Dragon", "dw.niu": "Ox", "dw.gou": "Dog", "dw.yang": "Goat", "dw.tu": "Rabbit", "dw.shu": "Rat", "dw.ji": "Rooster", "dw.ma": "Horse", "dw.hu": "Tiger", "dw.zhu": "Pig", "dw.hou": "Monkey", "dw.she": "Snake", "dw.huLi": "Fox", "dw.yan": "Swallow", "dw.bao": "Leopard", "dw.yuan": "Ape", "dw.yin": "Earthworm", "dw.lu": "Deer", "dw.wu": "Crow", "dw.lang": "Wolf", "dw.fu": "Bat", "wx.jin": "Metal", "wx.mu": "Wood", "wx.shui": "Water", "wx.huo": "Fire", "wx.tu": "Earth", "wx.ri": "Sun", "wx.yue": "Moon", "n.zero": "0", "n.one": "1", "n.two": "2", "n.three": "3", "n.four": "4", "n.five": "5", "n.six": "6", "n.seven": "7", "n.eight": "8", "n.nine": "9", "n.ten": "10", "n.eleven": "11", "n.twelve": "12", "w.sun": "Sunday", "w.mon": "Monday", "w.tues": "Tuesday", "w.wed": "Wednesday", "w.thur": "Thursday", "w.fri": "Friday", "w.sat": "Saturday", "xz.aries": "Aries", "xz.taurus": "Taurus", "xz.gemini": "Gemini", "xz.cancer": "Cancer", "xz.leo": "Leo", "xz.virgo": "Virgo", "xz.libra": "Libra", "xz.scorpio": "Scorpio", "xz.sagittarius": "Sagittarius", "xz.capricornus": "Capricornus", "xz.aquarius": "Aquarius", "xz.pisces": "Pisces", "bg.qian": "Qian", "bg.kun": "Kun", "bg.zhen": "Zhen", "bg.xun": "Xun", "bg.kan": "Kan", "bg.li": "Li", "bg.gen": "Gen", "bg.dui": "Dui", "ps.center": "Center", "ps.dong": "East", "ps.nan": "South", "ps.xi": "West", "ps.bei": "North", "ps.zhong": "Center", "ps.zhengDong": "East", "ps.zhengNan": "South", "ps.zhengXi": "West", "ps.zhengBei": "North", "ps.dongBei": "Northeast", "ps.dongNan": "Southeast", "ps.xiBei": "Northwest", "ps.xiNan": "Southwest", "jq.dongZhi": "Winter Solstice", "jq.xiaoHan": "Lesser Cold", "jq.daHan": "Great Cold", "jq.liChun": "Spring Beginning", "jq.yuShui": "Rain Water", "jq.jingZhe": "Awakening from Hibernation", "jq.chunFen": "Spring Equinox", "jq.qingMing": "Fresh Green", "jq.guYu": "Grain Rain", "jq.liXia": "Beginning of Summer", "jq.xiaoMan": "Lesser Fullness", "jq.mangZhong": "Grain in Ear", "jq.xiaZhi": "Summer Solstice", "jq.xiaoShu": "Lesser Heat", "jq.daShu": "Greater Heat", "jq.liQiu": "Beginning of Autumn", "jq.chuShu": "End of Heat", "jq.baiLu": "White Dew", "jq.qiuFen": "Autumnal Equinox", "jq.hanLu": "Cold Dew", "jq.shuangJiang": "First Frost", "jq.liDong": "Beginning of Winter", "jq.xiaoXue": "Light Snow", "jq.daXue": "Heavy Snow", "sn.qingLong": "Azure Dragon", "sn.baiHu": "White Tiger", "sn.zhuQue": "Rosefinch", "sn.xuanWu": "Black Tortoise", "sn.tianEn": "Serene Grace", "sn.siShen": "Death", "sn.tianMa": "Pegasus", "sn.baLong": "Eight Dragon", "sn.jiuHu": "Nine Tiger", "sn.qiNiao": "Seven Bird", "sn.liuShe": "Six Snake", "s.none": "None", "s.goodLuck": "Good luck", "s.badLuck": "Bad luck", "s.yin": "Yin", "s.yang": "Yang", "s.white": "White", "s.black": "Black", "s.blue": "Blue", "s.green": "Green", "s.yellow": "Yellow", "s.red": "Red", "s.purple": "Purple", "jr.chuXi": "Chinese New Year's Eve", "jr.chunJie": "Luna New Year", "jr.yuanXiao": "Lantern Festival", "jr.duanWu": "Dragon Boat Festival", "jr.qiXi": "Begging Festival", "jr.zhongQiu": "Mid-Autumn Festival", "jr.laBa": "Laba Festival", "jr.yuanDan": "New Year's Day", "jr.qingRen": "Valentine's Day", "jr.fuNv": "Women's Day", "jr.xiaoFei": "Consumer Rights Day", "jr.zhiShu": "Arbor Day", "jr.wuYi": "International Worker's Day", "jr.erTong": "Children's Day", "jr.qingNian": "Youth Day", "jr.yuRen": "April Fools' Day", "jr.jianDang": "Party's Day", "jr.jianJun": "Army Day", "jr.jiaoShi": "Teachers' Day", "jr.guoQing": "National Day", "jr.wanShengYe": "All Saints' Eve", "jr.wanSheng": "All Saints' Day", "jr.pingAn": "Christmas Eve", "jr.shengDan": "Christmas Day", "ts.zhan": "At", "ts.hu": "Household", "ts.zao": "Cooker", "ts.dui": "Pestle", "ts.xi": "Habitat", "ts.win": "Window", "ts.fang": "Room", "ts.chuang": "Bed", "ts.lu": "Stove", "ts.mo": "Mill", "ts.chu": "Kitchen", "ts.ce": "Toilet", "ts.cang": "Depot", "ts.cangKu": "Depot", "ts.daMen": "Gate", "ts.men": "Door", "ts.tang": "Hall", "ly.xianSheng": "Win first", "ly.xianFu": "Lose first", "ly.youYin": "Friend's referral", "ly.foMie": "Buddhism's demise", "ly.daAn": "Great safety", "ly.chiKou": "Chikagoro", "yj.jiSi": "Sacrifice", "yj.qiFu": "Pray", "yj.qiuSi": "Seek heirs", "yj.kaiGuang": "Consecretion", "yj.suHui": "Paint sculptural", "yj.qiJiao": "Build altar", "yj.zhaiJiao": "Taoist rites", "yj.muYu": "Bathing", "yj.chouShen": "Reward gods", "yj.zaoMiao": "Build temple", "yj.siZhao": "Offer kitchen god", "yj.fenXiang": "Burn incense", "yj.xieTu": "Earth gratitude", "yj.chuHuo": "Expel the flame", "yj.diaoKe": "Carving", "yj.jiaQu": "Marriage", "yj.DingHun": "Engagement", "yj.naCai": "Proposing", "yj.wenMing": "Ask name", "yj.naXu": "Uxorilocal marriage", "yj.guiNing": "Visit parents", "yj.anChuang": "Bed placing", "yj.heZhang": "Make up accounts", "yj.guanJi": "Crowning adulthood", "yj.dingMeng": "Make alliance", "yj.jinRenKou": "Adopt", "yj.caiYi": "Dressmaking", "yj.wanMian": "Cosmeticsurgery", "yj.kaiRong": "Open face", "yj.xiuFen": "Grave repair", "yj.qiZuan": "Open coffin", "yj.poTu": "Break earth", "yj.anZang": "Burial", "yj.liBei": "Tombstone erecting", "yj.chengFu": "Formation of clothes", "yj.chuFu": "Mourning clothes removal", "yj.kaiShengFen": "Open grave", "yj.heShouMu": "Make coffin", "yj.ruLian": "Body placing", "yj.yiJiu": "Move coffin", "yj.puDu": "Save soul", "yj.ruZhai": "Enter house", "yj.anXiang": "Incenst placement", "yj.anMen": "Door placing", "yj.xiuZao": "Repair", "yj.qiJi": "Digging", "yj.dongTu": "Break ground", "yj.shangLiang": "Beam placing", "yj.shuZhu": "Erecting pillars", "yj.kaiJing": "Open pond and well", "yj.zuoBei": "Make pond and fill water", "yj.chaiXie": "Smash house", "yj.poWu": "Break house", "yj.huaiYuan": "Demolish", "yj.buYuan": "Mending", "yj.faMuZuoLiang": "Make beams", "yj.zuoZhao": "Make stove", "yj.jieChu": "Removal", "yj.kaiZhuYan": "Build beam", "yj.chuanPing": "Build door", "yj.gaiWuHeJi": "Cover house", "yj.kaiCe": "Open toilet", "yj.zaoCang": "Build depot", "yj.saiXue": "Block nest", "yj.pingZhi": "Repair roads", "yj.zaoQiao": "Build bridge", "yj.zuoCe": "Build toilet", "yj.zhuDi": "Fill", "yj.kaiChi": "Open pond", "yj.faMu": "Lumbering", "yj.kaiQu": "Canalization", "yj.jueJing": "Dig well", "yj.saoShe": "Sweep house", "yj.fangShui": "Drainage", "yj.zaoWu": "Build house", "yj.heJi": "Close ridge", "yj.zaoChuChou": "Livestock thickening", "yj.xiuMen": "Repair door", "yj.dingSang": "Fix stone", "yj.zuoLiang": "Beam construction", "yj.xiuShi": "Decorate wall", "yj.jiaMa": "Erect horse", "yj.kaiShi": "Opening", "yj.guaBian": "Hang plaque", "yj.naChai": "Accept wealth", "yj.qiuCai": "Seek wealth", "yj.kaiCang": "Open depot", "yj.maiChe": "Buy car", "yj.zhiChan": "Buy property", "yj.guYong": "Hire", "yj.chuHuoCai": "Delivery", "yj.anJiXie": "Build machine", "yj.zaoCheQi": "Build car", "yj.jingLuo": "Build loom", "yj.yunNiang": "Brew", "yj.zuoRan": "Dye", "yj.guZhu": "Cast", "yj.zaoChuan": "Build boat", "yj.geMi": "Harvest honey", "yj.zaiZhong": "Farming", "yj.quYu": "Fishing", "yj.jieWang": "Netting", "yj.muYang": "Graze", "yj.anDuiWei": "Build rub", "yj.xiYi": "Learn", "yj.ruXue": "Enter school", "yj.liFa": "Haircut", "yj.tanBing": "Visiting", "yj.jianGui": "Meet noble", "yj.chengChuan": "Ride boat", "yj.duShui": "Cross water", "yj.zhenJiu": "Acupuncture", "yj.chuXing": "Travel", "yj.yiXi": "Move", "yj.fenJu": "Live apart", "yj.TiTou": "Shave", "yj.zhengShou": "Manicure", "yj.naChu": "Feed livestock", "yj.buZhuo": "Catch", "yj.tianLie": "Hunt", "yj.jiaoNiuMa": "Train horse", "yj.huiQinYou": "Meet friends", "yj.fuRen": "Go post", "yj.qiuYi": "See doctor", "yj.zhiBing": "Treat", "yj.ciSong": "Litigation", "yj.qiJiDongTu": "Lay foundation", "yj.poWuHuaiYuan": "Demolish", "yj.gaiWu": "Build house", "yj.zaoCangKu": "Build depot", "yj.liQuanJiaoYi": "Covenant trade", "yj.jiaoYi": "Trade", "yj.liQuan": "Covenant", "yj.anJi": "Install machine", "yj.huiYou": "Meet friends", "yj.qiuYiLiaoBing": "Seek treatment", "yj.zhuShi": "Everything Sucks", "yj.yuShi": "Do nothing else", "yj.xingSang": "Funeral", "yj.duanYi": "Block ant hole", "yj.guiXiu": "Place beam", "xx.bi": "Finish", "xx.yi": "Wing", "xx.ji": "Sieve", "xx.kui": "Qui", "xx.gui": "Ghost", "xx.di": "Foundation", "xx.xu": "Virtual", "xx.wei": "Danger", "xx.zi": "Mouth", "xx.zhen": "Cross-bar", "xx.dou": "Fight", "xx.lou": "Weak", "xx.liu": "Willow", "xx.fang": "House", "xx.xin": "Heart", "xx.shi": "Room", "xx.can": "Join", "xx.jiao": "Horn", "xx.niu": "Ox", "xx.vei": "Stomach", "xx.xing": "Star", "xx.zhang": "Chang", "xx.tail": "Tail", "xx.qiang": "Wall", "xx.jing": "Well", "xx.kang": "Kang", "xx.nv": "Female", "xx.mao": "Mao", "sz.chun": "Spring", "sz.xia": "Summer", "sz.qiu": "Autumn", "sz.dong": "Winter", "yx.shuo": "New", "yx.eMeiXin": "New waxing", "yx.eMei": "Waxing", "yx.xi": "Evening", "yx.shangXian": "First quarter", "yx.jiuYe": "Nine night", "yx.night": "Night", "yx.jianYingTu": "Gibbous", "yx.xiaoWang": "Little full", "yx.wang": "Full", "yx.jianKuiTu": "Disseminating", "yx.xiaXian": "Third quarter", "yx.eMeiCan": "Waning waxing", "yx.can": "Waning", "yx.xiao": "Daybreak", "yx.hui": "Obscure", "ny.sangZhe": "Cudrania", "ny.baiLa": "Wax", "ny.yangLiu": "Willow", "ny.jinBo": "Foil", "ny.haiZhong": "Sea", "ny.daHai": "Ocean", "ny.shaZhong": "Sand", "ny.luZhong": "Stove", "ny.shanXia": "Piedmont", "ny.daLin": "Forest", "ny.pingDi": "Land", "ny.luPang": "Roadside", "ny.biShang": "Wall", "ny.jianFeng": "Blade", "ny.shanTou": "Hilltop", "ny.fuDeng": "Light", "ny.jianXia": "Valleyn", "ny.tianHe": "River", "ny.chengTou": "City", "ny.daYi": "Post", "ny.chaiChuan": "Ornaments", "ny.quanZhong": "Spring", "ny.daXi": "Stream", "ny.wuShang": "Roof", "ny.piLi": "Thunderbolt", "ny.tianShang": "Sky", "ny.songBo": "Coniferin", "ny.shiLiu": "Pomegranate", "ny.changLiu": "Flows" } }; static _OBJS = { "LunarUtil": LunarUtil, "SolarUtil": SolarUtil, "TaoUtil": TaoUtil, "FotoUtil": FotoUtil, "NineStarUtil": NineStarUtil }; static _DICT_STRING = { "LunarUtil": { "TIAN_SHEN_TYPE": {}, "TIAN_SHEN_TYPE_LUCK": {}, "XIU_LUCK": {}, "LU": {}, "XIU": {}, "SHA": {}, "POSITION_DESC": {}, "NAYIN": {}, "WU_XING_GAN": {}, "WU_XING_ZHI": {}, "SHOU": {}, "GONG": {}, "FESTIVAL": {}, "ZHENG": {}, "ANIMAL": {}, "SHI_SHEN": {}, "XIU_SONG": {} }, "SolarUtil": { "FESTIVAL": {} }, "TaoUtil": { "BA_HUI": {}, "BA_JIE": {} } }; static _DICT_NUMBER = { "LunarUtil": { "ZHI_TIAN_SHEN_OFFSET": {}, "CHANG_SHENG_OFFSET": {} } }; static _DICT_ARRAY = { "LunarUtil": { "ZHI_HIDE_GAN": {} } }; static _ARRAYS = { "LunarUtil": { "GAN": [], "ZHI": [], "JIA_ZI": [], "ZHI_XING": [], "XUN": [], "XUN_KONG": [], "CHONG": [], "CHONG_GAN": [], "CHONG_GAN_TIE": [], "HE_GAN_5": [], "HE_ZHI_6": [], "SHENGXIAO": [], "NUMBER": [], "POSITION_XI": [], "POSITION_YANG_GUI": [], "POSITION_YIN_GUI": [], "POSITION_FU": [], "POSITION_FU_2": [], "POSITION_CAI": [], "POSITION_TAI_SUI_YEAR": [], "POSITION_GAN": [], "POSITION_ZHI": [], "JIE_QI": [], "JIE_QI_IN_USE": [], "TIAN_SHEN": [], "SHEN_SHA": [], "PENGZU_GAN": [], "PENGZU_ZHI": [], "MONTH_ZHI": [], "CHANG_SHENG": [], "HOU": [], "WU_HOU": [], "POSITION_TAI_DAY": [], "POSITION_TAI_MONTH": [], "YI_JI": [], "LIU_YAO": [], "MONTH": [], "SEASON": [], "DAY": [], "YUE_XIANG": [] }, "SolarUtil": { "WEEK": [], "XINGZUO": [] }, "TaoUtil": { "AN_WU": [] }, "FotoUtil": { "XIU_27": [] }, "NineStarUtil": { "NUMBER": [], "WU_XING": [], "POSITION": [], "LUCK_XUAN_KONG": [], "YIN_YANG_QI_MEN": [], "COLOR": [] } }; static updateArray(c) { const v = I18n._ARRAYS[c]; const o = I18n._OBJS[c]; for (let k in v) { const arr = v[k]; for (let i = 0, j = arr.length; i < j; i++) { o[k][i] = arr[i].replace(/{(.[^}]*)}/g, ($0, $1) => { return I18n.getMessage($1); }); } } } static updateStringDictionary(c) { const v = I18n._DICT_STRING[c]; const o = I18n._OBJS[c]; for (let k in v) { const dict = v[k]; for (let key in dict) { const i = key.replace(/{(.[^}]*)}/g, ($0, $1) => { return I18n.getMessage($1); }); o[k][i] = dict[key].replace(/{(.[^}]*)}/g, ($0, $1) => { return I18n.getMessage($1); }); } } } static updateNumberDictionary(c) { const v = I18n._DICT_NUMBER[c]; const o = I18n._OBJS[c]; for (let k in v) { const dict = v[k]; for (let key in dict) { const i = key.replace(/{(.[^}]*)}/g, ($0, $1) => { return I18n.getMessage($1); }); o[k][i] = dict[key]; } } } static updateArrayDictionary(c) { const v = I18n._DICT_ARRAY[c]; const o = I18n._OBJS[c]; for (let k in v) { const dict = v[k]; for (let key in dict) { const x = key.replace(/{(.[^}]*)}/g, ($0, $1) => { return I18n.getMessage($1); }); const arr = dict[key]; for (let i = 0, j = arr.length; i < j; i++) { arr[i] = arr[i].replace(/{(.[^}]*)}/g, ($0, $1) => { return I18n.getMessage($1); }); } o[k][x] = arr; } } } static update() { for (let c in I18n._ARRAYS) { I18n.updateArray(c); } for (let c in I18n._DICT_STRING) { I18n.updateStringDictionary(c); } for (let c in I18n._DICT_NUMBER) { I18n.updateNumberDictionary(c); } for (let c in I18n._DICT_ARRAY) { I18n.updateArrayDictionary(c); } } static setMessages(lang, messages) { if (!messages) { return; } if (!I18n._MESSAGES[lang]) { I18n._MESSAGES[lang] = {}; } for (const key in messages) { I18n._MESSAGES[lang][key] = messages[key]; } I18n.update(); } static getMessage(key) { let s = I18n._MESSAGES[I18n._LANG][key]; if (void 0 == s) { s = I18n._MESSAGES[I18n._DEFAULT_LANG][key]; } if (void 0 == s) { s = key; } return s; } static setLanguage(lang) { if (I18n._MESSAGES[lang]) { I18n._LANG = lang; I18n.update(); } } static getLanguage() { return I18n._LANG; } static initArray(c) { const v = I18n._ARRAYS[c]; const o = I18n._OBJS[c]; for (let k in v) { v[k].length = 0; const arr = o[k]; for (let i = 0, j = arr.length; i < j; i++) { v[k].push(arr[i]); } } } static initArrayDictionary(c) { const v = I18n._DICT_ARRAY[c]; const o = I18n._OBJS[c]; for (let k in v) { const dict = o[k]; for (let key in dict) { v[k][key] = dict[key]; } } } static initStringDictionary(c) { const v = I18n._DICT_STRING[c]; const o = I18n._OBJS[c]; for (let k in v) { const dict = o[k]; for (let key in dict) { v[k][key] = dict[key]; } } } static initNumberDictionary(c) { const v = I18n._DICT_NUMBER[c]; const o = I18n._OBJS[c]; for (let k in v) { const dict = o[k]; for (let key in dict) { v[k][key] = dict[key]; } } } static init() { if (I18n._INIT) { return; } I18n._INIT = true; for (let c in I18n._ARRAYS) { I18n.initArray(c); } for (let c in I18n._DICT_STRING) { I18n.initStringDictionary(c); } for (let c in I18n._DICT_NUMBER) { I18n.initNumberDictionary(c); } for (let c in I18n._DICT_ARRAY) { I18n.initArrayDictionary(c); } I18n.setLanguage(I18n._DEFAULT_LANG); } }