📄 skinutil.java~1~
字号:
package cn.js.fan.web;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import cn.js.fan.base.ISkin;
import cn.js.fan.util.ResBundle;
import org.apache.log4j.Logger;
import cn.js.fan.cache.jcs.RMCache;
import java.util.HashMap;
import cn.js.fan.util.XMLConfig;
import org.jdom.Element;
import java.util.List;
import java.util.Iterator;
import java.util.Date;
import com.redmoon.forum.Privilege;
import cn.js.fan.util.DateUtil;
import java.text.DateFormat;
import java.util.TimeZone;
import com.redmoon.forum.person.UserMgr;
import com.redmoon.forum.person.UserDb;
public class SkinUtil implements ISkin {
static final String resName = "res.common";
static Logger logger = Logger.getLogger("SkinUtil");
public static final String ERR_DB = "err_db";
public static final String PVG_INVALID = "pvg_invalid";
public static final String ERR_SQL = "err_sql";
public static final String ERR_NOT_LOGIN = "err_not_login";
public static final String ERR_ID = "err_id";
// transient RMCache rmCache = RMCache.getInstance();
public SkinUtil() {
}
public static Locale getLocale(HttpServletRequest request) {
if (Global.localeSpecified)
return Global.getLocale();
HttpSession session = request.getSession(true);
Locale locale = (Locale) session.getAttribute("locale");
if (locale != null) {
return locale;
}
// IE中为zh-cn,firefox中为zh-cn,zh;q=0.5 遨游好象不发送这个Accept-Language
String str = request.getHeader("Accept-Language"); // zh-cn
// logger.info("getLocale:str=" + str);
String lang = null;
String country = null;
if (str!=null) {
try {
String[] ary = str.split("-");
lang = ary[0];
country = ary[1];
// 如果是firefox浏览器还需进一步处理country,如果是IE,则country即为cn
int d = country.indexOf(",");
if (d != -1)
country = country.substring(0, d);
// logger.info("getLocale:lang=" + lang + " country=" + country);
}
catch (Exception e) { // 防止数组越界等
logger.error("getLocale: " + e.getMessage());
}
}
if (lang == null || country == null) {
locale = Global.locale; // Locale.getDefault();
}
else {
HashMap hm = getSupportLangCountry();
// 如果不支持则返回CWBBS默认的locale
if (!hm.containsKey(lang + "_" + country)) {
locale = Global.locale;
} else
locale = new Locale(lang, country);
}
// logger.info("getLocale:" + locale);
session.setAttribute("locale", locale);
return locale;
}
public String LoadStr(HttpServletRequest request, String key) {
return LoadString(request, resName, key);
}
public static String LoadString(HttpServletRequest request, String key) {
return LoadString(request, resName, key);
}
public static String LoadString(HttpServletRequest request, String resource, String key) {
String str = "";
try {
ResBundle rb = new ResBundle(resource, getLocale(request));
str = rb.get(key);
// logger.info("LoadString: key=" + key + " str=" + str + " " + getLocale(request));
}
catch (Exception e) {
logger.error("LoadString: resource=" + resource + " key=" + key + " " + e.getMessage());
}
return str;
}
public static String LoadStr(HttpServletRequest request, String resource, String key) {
return LoadString(request, resource, key);
}
public static String makeErrMsg(HttpServletRequest request, String errMsg) {
String str = LoadString(request, "err_display_begin") + errMsg + LoadString(request, "err_display_end");
return str;
}
public static String makeInfo(HttpServletRequest request, String errMsg) {
String str = LoadString(request, "info_display_begin") + errMsg + LoadString(request, "info_display_end");
return str;
}
/**
* 获取支持的lang_country
* @return HashMap
*/
public static HashMap getSupportLangCountry() {
String key = "cwbbs_locales";
HashMap hm = null;
try {
hm = (HashMap) RMCache.getInstance().get(key);
}
catch (Exception e) {
logger.error("getSupportLocales:" + e.getMessage());
}
if (hm==null) {
hm = new HashMap();
XMLConfig xc = new XMLConfig("config_i18n.xml", false, "utf-8");
Element root = xc.getRootElement();
Element child = root.getChild("support");
List list = child.getChildren();
if (list != null) {
Iterator ir = list.iterator();
while (ir.hasNext()) {
Element e = (Element) ir.next();
hm.put(e.getChildText("lang") + "_" + e.getChildText("country"), "");
}
try {
RMCache.getInstance().put(key, hm);
}
catch (Exception e) {
logger.error("getSupportLocales2:" + e.getMessage());
}
}
}
return hm;
}
public static String formatDate(HttpServletRequest request, Date d) {
if (d==null)
return "";
Privilege pvg = new Privilege();
TimeZone tz = Global.timeZone;
if (pvg.isUserLogin(request)) {
String userName = pvg.getUser(request);
UserMgr um = new UserMgr();
UserDb user = um.getUser(userName);
if (user.isLoaded())
tz = user.getTimeZone();
}
return DateUtil.formatDate(d, DateFormat.MEDIUM,
SkinUtil.getLocale(request), tz);
}
public static String formatDateTime(HttpServletRequest request, Date d) {
if (d==null)
return "";
Privilege pvg = new Privilege();
TimeZone tz = Global.timeZone;
if (pvg.isUserLogin(request)) {
String userName = pvg.getUser(request);
UserMgr um = new UserMgr();
UserDb user = um.getUser(userName);
if (user.isLoaded())
tz = user.getTimeZone();
}
// logger.info("formatDateTime:" + tz);
return DateUtil.formatDateTime(d, DateFormat.MEDIUM, DateFormat.MEDIUM, SkinUtil.getLocale(request), tz);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -