代码拉取完成,页面将自动刷新
用ResourceBundle读取中文配置文件乱码,能不能增加读取setting文件的方式读取国际化配置
Setting本身支持自定义编码的,可以自定义编码。
不是编码,是方便读取配置,比如
import cn.hutool.setting.Setting;
import java.util.concurrent.ConcurrentHashMap;
public class SettingExt {
static final String[] extensionName = new String[]{".setting", ".ini"};
static final ConcurrentHashMap<String, Setting> map = new ConcurrentHashMap<>();
/**
* 名字
*/
String name;
/**
* 分隔符 读取特定语言时, 资源文件名称等于name+separator+locale
*/
String separator;
public SettingExt(String name, String separator) {
this.name = name;
this.separator = separator;
}
public static SettingExt init(String name, String separator) {
SettingExt settingExt = new SettingExt(name, separator);
Setting load = settingExt.load(null);
map.put(name, load);
return settingExt;
}
public String get(String key) {
return get(key, null);
}
public String get(String key, String locale) {
String lk = name;
if (locale != null && !locale.isEmpty()) {
lk = lk + separator + locale;
}
if (map.containsKey(lk)) {
return map.get(lk).getStr(key);
}
Setting def = load(null);
if (locale != null) {
try {
Setting load = load(locale);
Setting setting1 = def.addSetting(load);
map.put(lk, setting1);
} catch (Exception e) {
map.put(lk, def);
}
} else {
map.put(lk, def);
}
return get(key, locale);
}
private Setting load(String locale) {
String lk = name;
if (locale != null && !locale.isEmpty()) {
lk = lk + separator + locale;
}
return new Setting(lk + extensionName[0]);
}
}
这样我读取配置信息,只需要
SettingExt init = SettingExt.init("i18n/localeStr", "_");
String dataPanelAccPauses = init.get("data_panel_acc_pauses");
System.out.println("dataPanelAccPauses = " + dataPanelAccPauses);
String s = init.get("data_panel_acc_pauses", "fv");
System.out.println("s = " + s);
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
可以使用SettingUtil.get(name + "_" + "cn")
登录 后才可以发表评论