如何强制Alfresco Share只使用一种语言,独立于浏览器区域设置?

Hel*_*odo 3 browser share alfresco

很容易找到Alfresco Exlplorer的解决方案,但Alfresco Share只使用一种特定语言,与网络浏览器的语言环境设置无关,哪种方式适合?

Wil*_*son 8

这取决于您如何部署Alfresco,但假设您在生产环境中工作,在您的客户端和Alfresco服务器之间放置HTTP代理/负载平衡器是标准做法,您有一些潜在的选择.

共享响应Accept-LanguageWeb浏览器发送的标头,因此为了防止它基于此切换语言,您可以将代理配置为Accept-Language从传入的客户端请求中删除标头.

例如,使用Apache可以在诸如的配置中mody_proxy一起使用mod_headers

ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
RequestHeader unset Accept-Language
Run Code Online (Sandbox Code Playgroud)

前两行将代理来自Apache的请求(很可能在端口80上运行)到端口8080上托管Alfresco的Tomcat实例,而第三行将删除Accept-Language头.

然后,Share将默认为运行Alfresco的Java进程的语言环境,因此您应确保将其设置为US English(en-US).


小智 6

分享是基于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" />
Run Code Online (Sandbox Code Playgroud)

添加新的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;
        }
    }
Run Code Online (Sandbox Code Playgroud)