0

我有一个在 JBoss AS6 上运行的 SEAM 2.2.2 应用程序

该应用程序设置有多种语言

在 JBoss 部署目录 /jbossweb.sar/server.xml 中,我使用以下主机条目映射了许多不同的域

<Host name="myApp">  
  <Alias>www.myapp.com</Alias>  
  <Alias>myapp.com</Alias>  
  <Alias>www.myapp.sv</Alias>  
  <Alias>myapp.sv</Alias>  
  <Valve className="org.apache.catalina.valves.AccessLogValve"  
  prefix="processor" suffix=".log" pattern="common"  
  directory="${jboss.server.home.dir}/log"/>  
  <Valve className="org.jboss.web.tomcat.service.jca.CachedConnectionValve"  
  cachedConnectionManagerObjectName="jboss.jca:service=CachedConnectionManager"  
  transactionManagerObjectName="jboss:service=TransactionManager" ></Valve>  
</Host>  

我们需要能够确保所有登陆 www.myapp.sv 的访问者都将默认语言设置为瑞典语,即使他们的浏览器默认为英语

实现这一目标的最佳方法是什么?我最初的猜测是在请求页面时检查设置了哪个语言环境,然后使用 Seam 的 localeSelector 来覆盖浏览器的默认设置,但这似乎有点 hack 并且可能会浪费资源包,因为资源包会被加载然后重新加载?

有没有办法“拦截”初始语言环境选择并用基于域扩展名的语言来覆盖它?

谢谢

4

2 回答 2

0

创建一个启动 LocaleBean 并设置所需的语言环境。

因此是这样的:

@Startup
@Scope(APPLICATION)
@Name("LocaleBean")
public class LocaleBean {         

     @Create
     public void init() {
         FacesContext.instance().getViewRoot().setLocale(new Locale("SV"));
     }
}
于 2013-11-11T14:50:24.923 回答
0

通过创建一个会话范围的 bean 并将请求的语言作为查询参数来实现这一点,然后使用 pages.xml 操作在页面呈现之前触发以设置当前语言环境

于 2015-04-21T15:46:12.853 回答