2012-02-09 94 views
11

我们建立了一个网站,其中Tapestry 5.1.0.5我们遇到了,有时候,我们遇到了一个缺失的关键问题,当我们点击开始页面。挂毯:开始页面使用英语语言环境而不是默认语言环境

此问题只出现了4次,这是一个随机问题。

实际配置:

  • configuration.add(SymbolConstants.SUPPORTED_LOCALES, "fr"); =>所以默认本地IS fr而不是en

  • configuration.add("tapestry.start-page-name", "Accueil"); =>所以,当我们打/挂毯重定向我们/accueil

这是我们有时会看到这个问题:

*_en.properties而不是*_fr.properties/挂毯搜索键,但如果我们打/accueil挂毯搜索键在*_fr.properties

跟踪日志:

Caused by: java.lang.NumberFormatException: For input string: **"[[missing key: prehome.store.opening.delay]]"** 
     at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) 
     at java.lang.Integer.parseInt(Integer.java:447) 
     at java.lang.Integer.parseInt(Integer.java:497) 
     at XXXXXXX.tapestry.components.overlayer.StoreOverlayer.initStoresAndRegions(StoreOverlayer.java:652) 
     at XXXXXXX.tapestry.components.overlayer.StoreOverlayer.setupRender(StoreOverlayer.java) 
     at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$SetupRenderPhase.invokeComponent(ComponentPageElementImpl.java:184) 
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.run(ComponentPageElementImpl.java:164) 
     at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:933) 
     ... 94 more 

01-02-2012 11:55:52:979 23120252 ERROR org.apache.tapestry5.internal.services.InternalModule.PagePool - Page Page[Accueil en] is dirty, and will be discarded (rather than returned to the page pool). 

有没有人有这个问题?

你知道为什么当我们打开起始页面时,挂毯使用en区域代替我们的默认区域fr

回答

5

我想说,如果你想确保默认语言环境是法语,那么只需将所有message_fr.properties重命名为message.properties。

另请看看浏览器设置。如果您的浏览器正在请求英文版本的网站,那么Tapestry会遵守。你可能会重写这个行为,但是我建议把它当作一个功能(因为用户正在获取与他的偏好相关的网站)而不是bug。

最后提示,如果您支持多种语言,则将它们全部列入支持的语言环境常量中。

- =编辑= - 它也可能是值得检查你是否有全球messages.properties文件的英文或法文

+0

我们认为这个解决方案,但它并没有帮助我们理解为什么挂毯搜索“en”语言环境。此外,我们使用“fr”作为浏览器的语言环境。 – Fabien 2012-02-13 13:15:42