[+] 编码控制功能
This commit is contained in:
		@@ -1,21 +1,39 @@
 | 
				
			|||||||
package cn.glycol.t18n;
 | 
					package cn.glycol.t18n;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.nio.charset.Charset;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class I18n {
 | 
					public class I18n {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private static LanguageMap map;
 | 
						private static LanguageMap map;
 | 
				
			||||||
 | 
						private static Charset charset;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						static {
 | 
				
			||||||
 | 
							charset = Charset.forName(System.getProperty("file.encoding"));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public static void setLanguageMap(LanguageMap map) {
 | 
						public static void setLanguageMap(LanguageMap map) {
 | 
				
			||||||
		I18n.map = map;
 | 
							I18n.map = map;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						public static void setEncoding(String charset) {
 | 
				
			||||||
 | 
							I18n.charset = Charset.forName(charset);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	public static String format(String key, Object...format) {
 | 
						public static String format(String key, Object...format) {
 | 
				
			||||||
		return tryFormat(getLanguageMapSafe().get(key), format);
 | 
							return tryFormat(
 | 
				
			||||||
 | 
									reEncode(getLanguageMapSafe().get(key), charset),
 | 
				
			||||||
 | 
									format);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public static boolean hasKey(String key) {
 | 
						public static boolean hasKey(String key) {
 | 
				
			||||||
		return getLanguageMapSafe().containsKey(key);
 | 
							return getLanguageMapSafe().containsKey(key);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						private static String reEncode(String bef, Charset charset) {
 | 
				
			||||||
 | 
							byte[] bytes = bef.getBytes();
 | 
				
			||||||
 | 
							return new String(bytes, charset);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	private static String tryFormat(String context, Object...format) {
 | 
						private static String tryFormat(String context, Object...format) {
 | 
				
			||||||
		try {
 | 
							try {
 | 
				
			||||||
			return String.format(context, format);
 | 
								return String.format(context, format);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,10 @@
 | 
				
			|||||||
package cn.glycol.t18n;
 | 
					package cn.glycol.t18n;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.BufferedReader;
 | 
				
			||||||
import java.io.File;
 | 
					import java.io.File;
 | 
				
			||||||
 | 
					import java.io.IOException;
 | 
				
			||||||
 | 
					import java.io.InputStream;
 | 
				
			||||||
 | 
					import java.io.InputStreamReader;
 | 
				
			||||||
import java.nio.charset.Charset;
 | 
					import java.nio.charset.Charset;
 | 
				
			||||||
import java.nio.file.Files;
 | 
					import java.nio.file.Files;
 | 
				
			||||||
import java.util.ArrayList;
 | 
					import java.util.ArrayList;
 | 
				
			||||||
@@ -78,4 +82,36 @@ public class LanguageMapBuilder {
 | 
				
			|||||||
		return s[0] == null;
 | 
							return s[0] == null;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						public static LanguageMap fromJarResource(String path) {
 | 
				
			||||||
 | 
							return fromJarResource(path, LanguageMapConfiguration.DEFAULT);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public static LanguageMap fromJarResource(String path, LanguageMapConfiguration config) {
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(path);
 | 
				
			||||||
 | 
							if(is == null) {
 | 
				
			||||||
 | 
								return new LanguageMap();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							BufferedReader br = new BufferedReader(new InputStreamReader(is));
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							String cache;
 | 
				
			||||||
 | 
							List<String> strs = new ArrayList<>();
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								while(true) {
 | 
				
			||||||
 | 
									if((cache = br.readLine()) != null) {
 | 
				
			||||||
 | 
										strs.add(cache);
 | 
				
			||||||
 | 
									} else {
 | 
				
			||||||
 | 
										break;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							} catch(IOException e) {
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							return getLanguageMapFromLines(config, strs);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user