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

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