如着急寻求解决方案请跳过开头,直接看正文。
***************** 废话 *****************
最近公司搞一个项目,被安排做页面的多语言支持,对 Hystrix Dashboard 界面实现汉化,和中英切换,刚开始真没把这个当事儿,主要是生气,作为一个java程序员,就是再初级呗,让我搞页面翻译?!做呗,那怎么办。最开始没说要求,说实现就行。我把这个功能的源码从jar包里扒出来,按照解压出来的目录结构放在项目路径下(这样会优先加载项目下的同名文件,也就是我修改的,而不是jar里的源码),开始修改,思路很简单,做两套静态页,页面参考微信网页版登陆页的实现方式,将
?lang=zh_CN 和 ?lang=en_US
作为参数传递到后台,修改源码Controller的结果视图跳转,齐活!
我说着简单,其实这中间也挺曲折,最初是这样修改的:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space
// Source File Name: HystrixDashboardController.java
package org.springframework.cloud.netflix.hystrix.dashboard;
import org.springframework.ui.Model;
import org.springframework.web.context.request.WebRequest;
public class HystrixDashboardController
{
public HystrixDashboardController()
{
//源代码
/*public String home(Model model, WebRequest request)
{
model.addAttribute("basePath", extractPath(request));
return "hystrix/index";
}*/
//修改了home方法中结果视图跳转的逻辑
public String home(Model model, WebRequest request)
{
model.addAttribute("basePath", extractPath(request));
String language = request.getParameter("lang");
if ("zh_CN".equals(language)){
return "hystrix/indexCN";
}else{
return "hystrix/indexEN";
}
}
public String monitor(String path, Model model, WebRequest request)
{
model.addAttribute("basePath", extractPath(request));
model.addAttribute("contextPath", request.getContextPath());
return (new StringBuilder()).append(