2013-04-08 50 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; 
     } 
    }