多语言

<%
	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="" />

转载于:https://my.oschina.net/u/2342541/blog/614082

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值