很容易找到Alfresco Exlplorer的解决方案,但Alfresco Share只使用一种特定语言,与网络浏览器的区域设置无关,哪种方式适合?
答案 0 :(得分:8)
这取决于您如何部署Alfresco,但假设您在生产环境中工作,在您的客户端和Alfresco服务器之间放置HTTP代理/负载平衡器是标准做法,您有一些潜在的选择。
共享响应Web浏览器发送的Accept-Language
标头,因此为了防止它根据此情况切换语言,您可以配置代理以从中删除Accept-Language
标头传入的客户请求。
例如,使用Apache,您可以在{/ p>等配置中将mody_proxy
与mod_headers
一起使用
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
RequestHeader unset Accept-Language
前两行将代理来自Apache的请求(很可能在端口80上运行)到端口8080上托管Alfresco的Tomcat实例,而第三行将删除Accept-Language
标头。
Share将默认为运行Alfresco的Java进程的语言环境,因此您应确保将其设置为US English(en-US
)。
答案 1 :(得分:6)
分享基于Spring Surf
,Spring MVC
位于AcceptHeaderLocaleResolver
之上。默认情况下,使用内置org.springframework.extensions.surf.mvc.LocaleResolver
。要覆盖它,只需定义一个扩展slingshot-application-context.xml
的bean,如上所述:
将bean声明添加到<!-- Override Locale Resolver -->
<bean id="localeResolver" class="mypackage.CustomLocaleResolver" />
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;
}
}
添加新的LocaleResolver实现类
{{1}}
答案 2 :(得分: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
标头,否则将设置英语。
但是为什么不覆盖它,那么我们可以将我们想要的语言环境放在整个共享应用程序中。
这个解决方案对我来说就像一个魅力。抱歉我的英文。
答案 3 :(得分:1)
删除所有其他* .properties文件的最简单方法。
分享对于web-client-config.xml文件看起来不像资源管理器。
所以像find . -name *_<language>.properties -exec rm -rf {} \;