Tapestry:起始页使用英文语言环境而非默认语言环境

11

我们使用 Tapestry 5.1.0.5 构建了一个网站,有时候在访问起始页面时会遇到缺失键的问题。

这个问题只出现了4次,是一个偶发性的问题。

实际配置:

  • configuration.add(SymbolConstants.SUPPORTED_LOCALES, "fr"); => 所以默认语言设置为 fr 而不是 en

  • configuration.add("tapestry.start-page-name", "Accueil"); => 所以当我们访问 / 时,Tapestry 会将我们重定向到 /accueil

以下是我们有时见到的问题:

当访问 / 时,Tapestry 会在 *_en.properties 中查找键而不是 *_fr.properties,但如果我们访问 /accueil ,Tapestry 将在*_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).

有人遇到过这个问题吗?

你是否知道为什么当我们访问起始页时,Tapestry 使用en地区设置而不是我们默认的fr地区设置?

1个回答

5

如果您希望确保默认语言环境为法语,则只需将所有的message_fr.properties重命名为message.properties。

另外,请检查浏览器设置。如果浏览器请求站点的英文版本,则Tapestry会遵循此请求。您可以覆盖这种行为,但我建议将其视为一项功能(因为用户获得了与其偏好相关的站点),而非错误。

最后一个提示,如果要支持多种语言,请在支持的语言常量中列出它们所有。

-= 编辑 =- 还值得检查一下全局messages.properties文件是用英语还是法语编写的。


我们曾考虑过这个解决方案,但它并没有帮助我们理解为什么Tapestry搜索“en”语言环境。此外,我们使用浏览器的“fr”语言环境。 - Fabien

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接