64 lines
1.5 KiB
Java
64 lines
1.5 KiB
Java
package com.imyeyu.lang.mapper;
|
|
|
|
import com.imyeyu.lang.bean.Language;
|
|
import com.imyeyu.lang.bean.LanguageMapping;
|
|
import com.imyeyu.utils.StringInterpolator;
|
|
import lombok.Getter;
|
|
import lombok.Setter;
|
|
|
|
import java.util.Map;
|
|
|
|
/**
|
|
* 抽象语言映射器,提供语言映射的基础实现,提供字符串插值、调试模式等基础功能
|
|
*
|
|
* @author 夜雨
|
|
* @version 2024-04-01 16:25
|
|
*/
|
|
public abstract class AbstractLanguageMapper implements LanguageMapping {
|
|
|
|
/** 字符串插值器,用于处理占位符替换 */
|
|
protected final StringInterpolator INTERPOLATOR = StringInterpolator.createDollarInterpolator();
|
|
|
|
/** 当前映射器所属语言 */
|
|
@Getter
|
|
protected final Language.Enum language;
|
|
|
|
/** true 为启用调试模式 */
|
|
@Setter
|
|
protected boolean isDebugging = false;
|
|
|
|
/**
|
|
* 构造语言映射器
|
|
*
|
|
* @param language 所属语言
|
|
*/
|
|
public AbstractLanguageMapper(Language.Enum language) {
|
|
this.language = language;
|
|
}
|
|
|
|
/**
|
|
* 获取文本
|
|
*
|
|
* @param key 键
|
|
* @param def 默认值(没有找到映射值时)
|
|
* @return 获取结果
|
|
*/
|
|
@Override
|
|
public String message(String key, String def) {
|
|
String result = message(key);
|
|
return result.equals(key) ? def : result;
|
|
}
|
|
|
|
/**
|
|
* 插入参数获取文本,使用 ${key} 格式进行占位符替换
|
|
*
|
|
* @param key 键
|
|
* @param args 参数映射表
|
|
* @return 替换占位符后的文本
|
|
*/
|
|
@Override
|
|
public String message(String key, Map<String, Object> args) {
|
|
return INTERPOLATOR.inject(message(key), args);
|
|
}
|
|
}
|