2013-04-08 91 views

回答

8

一个脚本这取决于你如何部署露天的,但假设你是在生产环境中,它是标准的做法,将您的客户端之间的HTTP代理/负载均衡器工作Alfresco服务器,你有一些潜在的选择。

响应由Web浏览器发送的Accept-Language标题,因此为了防止它根据此切换语言,可以配置代理以从传入的客户端请求中删除Accept-Language标题。

例如,使用Apache你可以用mod_headers在配置一起使用mody_proxy

ProxyPass/http://localhost:8080/ 
ProxyPassReverse/http://localhost:8080/ 
RequestHeader unset Accept-Language 

前两行将从Apache代理请求到Tomcat实例(最有可能运行在80端口)托管端口8080上的Alfresco,而第三行将删除Accept-Language标题。

然后,共享将默认为Alfresco正在运行的Java进程的语言环境,因此您应确保将其设置为美国英语(en-US)。

1

最简单的方法是删除所有其他* .properties文件。

对于web-client-config.xml文件,共享不像Explorer。

所以像find . -name *_<language>.properties -exec rm -rf {} \;

2

您可以检查MTAuthenticationFilter.java

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) 
    throws IOException, ServletException 
{ 
    if (req instanceof HttpServletRequest) 
    { 
     requestHolder.set((HttpServletRequest)req); 

     /*if (((HttpServletRequest) req).getHeader(ACCEPT_LANGUAGE_HEADER) == null) 
     { 
      req = new SlingshotServletRequestWrapper((HttpServletRequest) req); 
      ((SlingshotServletRequestWrapper) req).addHeader(ACCEPT_LANGUAGE_HEADER, "en_US"); 
     }*/ 

     //locale will be always 'french' (fr) 
     req = new SlingshotServletRequestWrapper((HttpServletRequest) req); 
     ((SlingshotServletRequestWrapper) req).addHeader(ACCEPT_LANGUAGE_HEADER, "fr"); 
    } 
    try 
    { 
     chain.doFilter(req, res); 
    } 
    finally 
    { 
     requestHolder.remove(); 
    } 
} 

该过滤器检查Accept-language头,否则英语将被设置。 但为什么不重写它,那么我们可以把我们想要的语言环境放到整个共享应用程序中。

这个解决方案对我来说就像一个魅力。对不起我的英语不好。

5

分享基于Spring Surf它是Spring MVC的书架顶端。默认情况下,使用内置的AcceptHeaderLocaleResolver。要覆盖它只是定义如上延伸org.springframework.extensions.surf.mvc.LocaleResolver一个bean:

添加Bean声明由slingshot-application-context.xml

<!-- Override Locale Resolver --> 
<bean id="localeResolver" class="mypackage.CustomLocaleResolver" /> 

进口任何配置文件添加新的LocaleResolver实现类

package mypackage; 

    import java.util.Locale; 
    import javax.servlet.http.HttpServletRequest; 
    import org.springframework.extensions.surf.mvc.LocaleResolver; 
    import org.springframework.extensions.surf.util.I18NUtil; 

    public class CustomLocaleResolver extends LocaleResolver { 

    public Locale resolveLocale(HttpServletRequest request) { 
     Locale locale = Locale.FRENCH; 
     I18NUtil.setLocale(locale); 

     return locale; 
     } 
    } 
相关问题