package com.hzs.common.core.enums;

import com.hzs.common.core.constant.EnumsPrefixConstants;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 语言
 */
@AllArgsConstructor
@Getter
public enum ELanguages {

    /**
     * 简体中文
     */
    CN(0, "简体中文", "zh-CN", "chinese", EnumsPrefixConstants.LANGUAGES + 0, "zh"),

//    /**
//     * 繁体中文
//     */
//    TC(1, "繁体中文", "zh-TC", "traditional", EnumsPrefixConstants.LANGUAGES + 1, "cht"),
//
//    /**
//     * 英语
//     */
//    US(2, "English", "en-US", "english", EnumsPrefixConstants.LANGUAGES + 2, "en"),

    ;

    /**
     * 实际值
     */
    private final int value;
    /**
     * 显示标签
     */
    private final String label;
    /**
     * 语言对应LocalTag
     */
    private final String local;
    /**
     * 对应数据列（用于反射生成资源）
     */
    private final String column;
    /**
     * 国际化翻译key值
     */
    private final String key;
    /**
     * 对应API使用
     */
    private final String apiKey;

    /**
     * 根据语种值，获取语种
     *
     * @param value
     * @return
     */
    public static ELanguages getLanguagesByValue(Integer value) {
        if (null == value) {
            return null;
        }
        for (ELanguages eLanguages : ELanguages.values()) {
            if (eLanguages.getValue() == value) {
                return eLanguages;
            }
        }
        return null;
    }

    /**
     * 根据语种LocalTag，获取语种
     *
     * @param local
     * @return
     */
    public static ELanguages getLanguagesByLocal(String local) {
        for (ELanguages eLanguages : ELanguages.values()) {
            if (eLanguages.getLocal().equals(local)) {
                return eLanguages;
            }
        }
        return null;
    }

    /**
     * 根据语种column，获取语种
     *
     * @param column
     * @return
     */
    public static ELanguages getLanguagesByColumn(String column) {
        for (ELanguages eLanguages : ELanguages.values()) {
            if (eLanguages.getColumn().equals(column)) {
                return eLanguages;
            }
        }
        return null;
    }

    /**
     * 根据语种apiKey，获取语种
     *
     * @param apiKey
     * @return
     */
    public static ELanguages getLanguagesByApiKey(String apiKey) {
        for (ELanguages eLanguages : ELanguages.values()) {
            if (eLanguages.getApiKey().equals(apiKey)) {
                return eLanguages;
            }
        }
        return null;
    }

}
