Гобелен: На ​​начальной странице используется английский язык вместо стандартного языка - PullRequest
11 голосов
/ 09 февраля 2012

Мы создали веб-сайт с Tapestry 5.1.0.5 , и иногда мы сталкиваемся с проблемой пропущенного ключа при попадании на стартовую страницу.

Эта проблема появлялась только 4 раза, этаэто случайная проблема.

Фактическая конфигурация:

  • configuration.add(SymbolConstants.SUPPORTED_LOCALES, "fr"); =>, поэтому по умолчанию локальным является 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 localeнашей локали по умолчанию fr?

1 Ответ

5 голосов
/ 12 февраля 2012

Я бы сказал, что если вы хотите, чтобы языковой стандарт по умолчанию был французский, просто переименуйте все message_fr.properties в message.properties.

Также ознакомьтесь с настройками браузера. Если ваш браузер запрашивает английскую версию сайта, то Tapestry подчиняется. Вы можете изменить это поведение, но я бы посоветовал рассматривать его как функцию (так как пользователь получает сайт, связанный с его предпочтениями), а не как ошибку.

И последний совет: если вы поддерживаете несколько языков, перечислите их все в константе поддерживаемых локалей.

- = Редактировать = - также, вероятно, стоит проверить, есть ли у вас глобальный файл messages.properties на английском или французском языке

...