2012-05-30 85 views
0

我在JBoss上使用縫2.2.2.Final與RichFaces的3.3.3.Final爲6縫2.2.2.Final失去翻譯

我的應用程序被翻譯成2種語言(荷蘭語和英語)。

有時(從幾小時到幾天不等)Web應用程序失去了翻譯。然後它只顯示密鑰的標籤而不是翻譯。

有人會知道是什麼原因造成的嗎?

首先我認爲這可能是由荷蘭語中使用的字符集引起的。然後我用native2ascii.exe將文件轉換爲ascii,但這並沒有解決問題。

我使用seam中的默認messages.properties文件。在我的情況下,這些是messages_nl.properties和messages_en.properties。在JSF中,我使用EL標籤#{messages['key']}。幾個小時或幾天後,似乎應用程序無法再找到這些文件。

我faces-config.xml文件包含以下設置:

<?xml version="1.0" encoding="UTF-8"?> 
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xi="http://www.w3.org/2001/XInclude" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"> 
    <application> 
     <view-handler>com.sun.facelets.FaceletViewHandler</view-handler> 
     <locale-config> 
      <default-locale>nl</default-locale> 
      <supported-locale>nl</supported-locale> 
      <supported-locale>en</supported-locale> 
     </locale-config> 
    </application> 
</faces-config> 

在JSF我用這樣的:

<h:outputText value="#{messages['admin.scheduling.title']}" /> 

在代碼中我使用

Messages.instance().get("admin.scheduling.title"); 

回答

0

我最終通過創建自己的消息組件實現來解決這個問題。

看起來像接縫中的內部緩存被清除(可能是反序列化之後)。如果緩存是(幾乎)空的,我再次讀取捆綁包。

0

是什麼你使用翻譯?一個轉換器?
getAsString方法必須返回翻譯後的字符串。
你能發佈代碼嗎?

+0

嗨@巨人2,我用我的問題的消息捆綁的方式。如果您需要更多信息,請告訴我。 – gadeynebram

+0

JSF需要檢測語言環境的接口(很多時候我看到它被竊聽)。 (手冊第15.2節講述了這一點)。每次調試時都要嘗試檢測使用的語言環境。如果您發現它在同一會話期間發生更改,則可能取決於超時時間。 – Giant2

+0

我已經刪除了faces-config.xml中的配置,並在components.xml中添加了配置''。也許這會讓它工作得更好。 – gadeynebram