Files
timi-lang/src/main/java/com/imyeyu/lang/mapper/AbstractLanguageMapper.java
T
2026-10-08 08:39:54 +08:00

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);
}
}