<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
//String language = request.getLocale().toString(); 浏览器语言
String language = request.getSession().getAttribute("WW_TRANS_I18N_LOCALE").toString(); 选择的多语言
String imagePathCc = basePath + "resource/theme/default/" +language + "/images/";
%>
<s:if test="#session.WW_TRANS_I18N_LOCALE.toString() == 'en_US'">
<a href="javascript:changeLang('en_US')" style="color: #6d6e71;text-decoration: none;">English</a>
</s:if>
<s:else>
<a href="javascript:changeLang('en_US')" style="color: #a9a9a9;text-decoration: underline;">English</a>
</s:else>
<s:if test="#session.WW_TRANS_I18N_LOCALE.toString()== 'zh_CN'">
<a href="javascript:changeLang('zh_CN')" style="margin-left:30px;color: #6d6e71;text-decoration: none;"><s:text name='coocSimplifiedChinese' /></a>
</s:if>
<s:else>
<a href="javascript:changeLang('zh_CN')" style="margin-left:30px;color: #a9a9a9;text-decoration: underline;"><s:text name='coocSimplifiedChinese' /></a>
</s:else>
<s:if test="#session.WW_TRANS_I18N_LOCALE.toString() == 'zh_TW'">
<a href="javascript:changeLang('zh_TW')" style="margin-left:30px;color: #6d6e71;text-decoration: none;"><s:text name='coocTraditionalChinese' /></a>
</s:if>
<s:else>
<a href="javascript:changeLang('zh_TW')" style="margin-left:30px;color: #a9a9a9;text-decoration: underline;"><s:text name='coocTraditionalChinese' /></a>
</s:else>
function changeLang(lang) {
$.ajax({
async : true,
cache : false,
data:{"locale_language":lang},
type:'POST',
url: '<s:url action="lang!changeLanguage.so" namespace=""/>',
success: function(json) {
window.location.reload(true);
}});
}
<struts>
<package name="comm" namespace="" extends="gloab-package">
<action name="lang" class="com.wistron.wh.ets.cc.action.LangAction">
</action>
</package>
</struts>
@Controller
@Scope("prototype")
public class LangAction extends BaseAction {
private static final long serialVersionUID = 1L;
private static final String LANGUAGE = "language";// application中key
private String locale_language;// 界面选择的语言
public String getLocale_language() {
return locale_language;
}
public void setLocale_language(String localeLanguage) {
locale_language = localeLanguage;
}
public void changeLanguage() throws Exception {
String lang[] = locale_language.split("_");
Locale locale = new Locale(lang[0] , lang[1]);
Map<String , Object> maps = ActionContext.getContext().getSession();
maps.put(I18nInterceptor.DEFAULT_SESSION_ATTRIBUTE, locale.toString());//把当前语种放入sesison中
ServletActionContext.getRequest().getSession().setAttribute(I18nInterceptor.DEFAULT_SESSION_ATTRIBUTE, locale);
ActionContext.getContext().setLocale(locale);//设置struts上下文语种
Map session = ActionContext.getContext().getSession();
String userId = session.get("userId").toString();
CoocWsUtils.updateUserLang(userId, locale_language);
super.response("success");
}
// 写cookie
public void writeLanguage() {
if (locale_language == null) {
locale_language = ServletActionContext.getContext().getLocale().toString();
}
// cookie 中没有语言 默认从application取
ServletActionContext.getContext().getSession()
.put(LANGUAGE, locale_language);
ActionContext.getContext().setLocale(LocaleUtils.toLocale(locale_language));
ActionContext.getContext().getSession().put("WW_TRANS_I18N_LOCALE", LocaleUtils.toLocale(locale_language));
}
// 默认初始语言 或是 找用户计算机上的cookie信息
public String getLanguage() {
// cookie 中没有语言 默认从application取
String language = ServletActionContext.getContext().getSession().get(LANGUAGE).toString();
//ActionContext.getContext().getSession().put("WW_TRANS_I18N_LOCALE", LocaleUtils.toLocale(language));
return language;
}
}
en_US zh_CN zh_TW
message_en_US.properties <s:text name="" />