很容易为Alfresco Exlplorer找到解决方案,但哪种方式适合Alfresco Share只使用一种特定语言,独立于Web浏览器的语言环境设置?如何强制Alfresco共享只使用一种语言,独立于浏览器语言环境?
回答
一个脚本这取决于你如何部署露天的,但假设你是在生产环境中,它是标准的做法,将您的客户端之间的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
)。
最简单的方法是删除所有其他* .properties文件。
对于web-client-config.xml文件,共享不像Explorer。
所以像find . -name *_<language>.properties -exec rm -rf {} \;
您可以检查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
头,否则英语将被设置。 但为什么不重写它,那么我们可以把我们想要的语言环境放到整个共享应用程序中。
这个解决方案对我来说就像一个魅力。对不起我的英语不好。
分享基于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;
}
}
- 1. 检测浏览器语言环境/语言并生成输出
- 2. 如何强制Grails只使用一种语言?
- 3. Alfresco的多语言文档共享?
- 4. 语言环境语言缩减器
- 5. 如何在Java中的所有类中共享使用哪种语言环境?
- 6. 使用硒webdriver测试浏览器语言环境
- 7. 使用Java的struts2中的浏览器语言环境
- 8. 如何在Chrome浏览器中更改语言环境
- 9. 如何强制一个语言环境部件
- 10. 使XSLT语言独立
- 11. Facebook Javascript SDK语言环境语言
- 12. Android:默认语言环境语言“hd”
- 13. 如何用同一种语言实现一种语言比语言更快?
- 14. Symfony2语言环境
- 15. 浏览器语言检测
- 16. 谷歌浏览器扩展国际化,转换语言环境
- 17. 如何在Android中使用多种语言,如多种语言
- 18. C++:sprintf认为哪种语言环境?
- 19. AJAX是一种独立于Javascript的语言,还是JavaScript框架?
- 20. 如何使用FastGettext将一个字符串从一个语言环境转换为另一个语言环境?
- 21. 以独立于语言环境的方式访问Windows性能计数器
- 22. 如果语言环境没有代码页,如何检测语言环境/语言?
- 23. 使用I18n语言环境的Rails语言名称
- 24. 反编译代码(独立于语言)
- 25. CMS是否独立于编程语言?
- 26. 如何获得没有语言环境类的Django的语言环境日期?
- 27. 如何检索实际的语言环境/语言
- 28. 如何获取语言环境的ISO2语言代码?
- 29. 如何获得programmaticaly Liferay默认语言或语言环境?
- 30. 跨语言共享常量