2009-10-04 61 views
0

我將着眼於如何實現ASP.NET MVC項目的國際化。我正在研究如何讓用戶更改語言。我的初始是一個包含每個支持的語言的下拉列表。無論誰想到幾個問題:在ASP.NET MVC應用程序中緩存和訪問配置數據

  1. 如何存儲支持的語言列表? (例如,「en」,「English」,「fr」,「French」等)xml文件? .config文件?
  2. 如果我把它存儲在一個文件中,我將不得不緩存這個(我猜想在啓動時)。那麼,最好是將XML數據加載到列表中(以某種方式)並將此列表存儲在System.Web.Cache中?申請狀態?
  3. 那麼如何將這些數據加載到視圖中(用於在下拉菜單中顯示)?讓視圖直接訪問緩存?

只是想確保我在這裏正確的方向前進......

謝謝。

回答

1

請首先告訴我們您在「國際化」下的理解嗎?

一)你想只有UI幾種語言

b)你想有幾種語言

看一看,我做了專題一些解釋這個其他問題的內容: Advice on ASP.NET Multi-Lingual Strategy

您的問題:

  1. 我會建議存儲數據庫,你所支持的語言列表可以用2個字符的代碼來識別它們。見ISO 3166-1 alpha-2 country codes

  2. 如果您來自ASP.NET WebForms世界,那麼當您處理ASP.NET MVC時,首先要注意的將是狀態性和緩存。您可以在session或cookie中存儲簡單的單個值,以指示當前活動的語言。服務器端將根據此提交的值以所需語言生成視圖。

  3. 您在您的控制器中實例化一個模型以傳遞給視圖。在模型中,您可以擁有一個屬性 - 一個包含可用語言的列表。視圖可以(並且應該)使用從其模型顯示的數據。

關於您可以在哪裏存儲緩存版本的語言。你可以考慮在某個地方有一個靜態列表,它將在第一個請求時被初始化(如弱引用)。它將在給定應用程序域的所有請求之間共享,這意味着您的Web應用程序的所有用戶將看到相同的值(直到域被回收或服務器重新啓動)。如果您要使用服務器會話,那麼將爲每個新用戶會話重新創建列表。

+0

我剛纔提到國際化部分只是作爲背景,這裏的問題比這個更普遍 - 國際化並沒有真正涉及到它,而只是如何最好地填充下拉菜單。 – UpTheCreek 2009-10-04 14:31:40

+0

謝謝,只是澄清了幾點... 1)我寧願不去數據庫的這一點。它將在每個頁面上都需要,而且變化不大。2)關於緩存,我的意思是緩存可用語言列表,而不是用戶選擇(將存儲在cookie中) – UpTheCreek 2009-10-04 14:36:58

+0

在最後看到更新。 – 2009-10-04 14:48:08

相關問題