[+/-] 对方法进行了调整

1. 添加了 translateList 和 flattenList 方法
2. 修改了 formatList 方法
master
Taskeren 2019-06-30 15:26:41 +08:00
parent ce04f7487e
commit 4b01a2e58d
1 changed files with 30 additions and 13 deletions

View File

@ -9,6 +9,8 @@ public class I18n {
private static LanguageMap map; private static LanguageMap map;
private static Charset charset; private static Charset charset;
public static final int LOOP_MAX_COUNT = 1000;
static { static {
charset = Charset.forName(System.getProperty("file.encoding")); charset = Charset.forName(System.getProperty("file.encoding"));
} }
@ -21,6 +23,11 @@ public class I18n {
I18n.charset = Charset.forName(charset); I18n.charset = Charset.forName(charset);
} }
/** 自动从语言文件中提取翻译,空翻译时返回原键值 */
public static String translate(String key) {
return reEncode(getLanguageMapSafe().get(key), charset);
}
/** 自动翻译translate后再执行格式化format */ /** 自动翻译translate后再执行格式化format */
public static String format(String key, Object...format) { public static String format(String key, Object...format) {
return tryFormat( return tryFormat(
@ -28,24 +35,19 @@ public class I18n {
format); format);
} }
/** 自动从语言文件中提取翻译,空翻译时返回原键值 */ /**
public static String translate(String key) { * translate
return reEncode(getLanguageMapSafe().get(key), charset); * @param keyRegular %s0welcome.%swelcome.0welcome.1...
}
/** translateformat<br>
* @param key format key<code>app.message.welcome.%s</code><code>%s</code><code>0</code>1000
*/ */
public static String format2(String key, Object...format) { public static List<String> translateList(String keyRegular) {
List<String> vlist = new ArrayList<String>(); List<String> vlist = new ArrayList<String>();
int i = 0; int i = 0;
int max = 1000;
while(true) { while(true) {
if(i >= max) break; if(i >= LOOP_MAX_COUNT) break;
String k = tryFormat(key, i); String k = tryFormat(keyRegular, i);
if(hasKey(k)) { if(hasKey(k)) {
vlist.add(translate(k)); vlist.add(translate(k));
} else { } else {
@ -54,18 +56,33 @@ public class I18n {
i++; i++;
} }
return vlist;
}
/** 使字符串列表扁平化。 */
public static String flattenList(List<String> vlist) {
String v = ""; String v = "";
for(String o : vlist) { for(String o : vlist) {
v += o + "\n"; v += o + "\n";
} }
v = v.trim(); v = v.trim();
v = tryFormat(v, format);
return v; return v;
} }
/**
* format
* @see #translateList(String)
*/
public static String formatList(String keyRegular, Object...format) {
return tryFormat(flattenList(translateList(keyRegular)), format);
}
public static boolean hasKey(String key) { public static boolean hasKey(String key) {
return getLanguageMapSafe().containsKey(key); return getLanguageMapSafe().containsKey(key);
} }