2010-01-02 106 views
4

我有一個非常奇怪的問題與基於resx的本地化。首先,請讓我解釋一下,現在是如何爲我完成的。
這是ASP.NET MVC項目。我有兩個程序集:web和域。 Web包含所有與MVC相關的東西,以及域,以及contans域類。另外,在域名彙編中,我存儲了很多用於本地化的靜態資源(我用三種不同的語言編寫站點)。本地化使用資源文件

所以我在這個領域組裝本地化文件夾,有喜歡的文件:
CheckoutStrings.resx,CheckoutStrings.en-US.resx,CheckoutStrings.et-EE.resx等。

現在奇怪的是,這是使用VS開發服務器和IIS 7.5在我的本地機器上非常好地工作。但是,當我將解決方案上傳到我的Web服務器(即Windows Server 2008 R2),因此它也是IIS 7.5時,我的本地化突然停止工作。

我試圖輸出

Thread.CurrentThread.CurrentUICulture

在我的意見,只是輸出本地化字符串之前。
它給了我選擇的文化,這是正確的,但字符串呈現爲一個後備值,而不是本地化。

我真的堅持在這裏,希望任何人有一個線索是怎麼回事...

回答

3

難道是本地化的文件根本沒有發現,你是回落至「默認語言」?你可能在服務器上部署到GAC中,但是在開發機器上使用子文件夾從/ bin文件夾運行它? 您是否嘗試過使用fuslogvw.exe來查看代碼的來源?

注意,看你有沒有做一些註冊表「黑客」的衛星組件的負荷 - http://msdn.microsoft.com/en-us/library/e74a18c4(VS.71).aspx

要登錄綁定失敗衛星 組件的 HKLM\Software\Microsoft\Fusion\LogResourceBinds 註冊表值設置爲1(該值是一個 DWORD)。

+0

1.它怎麼會沒有被發現? 2.不,我沒有部署到gac 3.從來沒有聽說過fuslogvw,謝謝你的提示! – user231481 2010-01-02 18:47:34

+0

我已經設置LogResourceBinds爲1像你說的那樣,之後fuslogvw顯示了一些綁定日誌,但沒有具體到我的應用程序。而我的域名程序集中的其他內容也能夠正常工作,所以我想不出任何嵌入式資源無法加載的原因。 真正讓我感到震驚的是它在本地機器上運行,並且不在服務器上運行。 – user231481 2010-01-03 11:47:26

+1

我發現,像往常一樣,這是我的錯誤。我們使用svn/export來部署網站,並且svn沒有看到新生成的sattelite程序集。所以IIS只加載了沒有衛星的域dll。 – user231481 2010-01-10 12:10:08