很容易为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. 检测浏览器语言环境/语言并生成输出
- 3. 如何使grep [A-Z]独立于语言环境?
- 4. 如何强制Grails只使用一种语言?
- 5. Alfresco的多语言文档共享?
- 6. 强制语言环境和新的语言
- 7. 语言环境语言缩减器
- 8. 如何基于浏览器的语言
- 9. 如何通过语言环境获取各种语言的语言名称?
- 10. 如何在Java中的所有类中共享使用哪种语言环境?
- 11. XPages:使用浏览器语言环境显示DateTime值
- 12. 使用硒webdriver测试浏览器语言环境
- 13. 使用Java的struts2中的浏览器语言环境
- 14. Laravel使用语言环境的语言环境代码
- 15. 如何在Chrome浏览器中更改语言环境
- 16. 如何强制一个语言环境部件
- 17. 使XSLT语言独立
- 18. 强制URL中的语言。如果URL没有语言,根据浏览器语言重定向
- 19. 语言环境切换器
- 20. Facebook Javascript SDK语言环境语言
- 21. Android - 更改语言环境(语言)
- 22. 系统语言环境语言设置
- 23. Android:默认语言环境语言“hd”
- 24. Android语言环境语言支持
- 25. 如何用同一种语言实现一种语言比语言更快?
- 26. Alfresco用户语言
- 27. NSDateFormatter语言环境
- 28. Symfony2语言环境
- 29. swprintf语言环境
- 30. 如何建立一个基于浏览器语言的多语言网站和重定向用户?