package cn.iocoder.yudao.framework.i18n.core;

import cn.hutool.core.util.StrUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Locale;
import java.util.Objects;

/**
 * 国际化 语言枚举类
 *
 * @author LGH
 */
@Getter
@AllArgsConstructor
public enum LangEnum {
    /*** 简体中文 */
    ZH("zh", 0),

    /*** 英文 */
    EN("en", 1),

    /*** 法文 */
    FR("fr", 2);


    private String language;

    private Integer lang;

    /**
     * 获取指定语言类型(如果没有对应的语言类型,则返回中文)
     *
     * @param language 语言类型
     * @return
     */
    public static String getLanguageType(String language) {
        if (StrUtil.isEmpty(language)) {
            return ZH.language;
        }
        for (LangEnum langEnum : LangEnum.values()) {
            if (langEnum.language.equalsIgnoreCase(language)) {
                return langEnum.language;
            }
        }
        return ZH.language;
    }


    public static LangEnum valueOf(int lang) {
        for (LangEnum langEnum : values()) {
            if (langEnum.lang == lang) {
                return langEnum;
            }
        }
        return LangEnum.ZH;
    }

    public static LangEnum valueOf(Locale locale) {
        if (Objects.nonNull(locale)) {
            for (LangEnum langEnum : values()) {
                if (Objects.equals(langEnum.language, locale.getLanguage())) {
                    return langEnum;
                }
            }
        }
        return LangEnum.ZH;
    }
}
