2010-10-14 42 views
0

如果我在我的ASP.NET(2.0)頁面上有一個單標籤,並且我想在其中存儲錯誤消息;如果我這樣做,在代碼通過使多個IF語句,如:ASP.NET本地化多值消息

if (...) 
value = "..." 
else 
value = "......" 
etc 

我會如何本地化此,這樣我就不必寫:

if (...) 
{ 
    switch(langCase) 
    { 
     case "en-US": 
      value = "englishValue"; 
      break; 
     case "de-CH": 
      value = "german Swiss value"; 
      break; 

      ... 
    } 
} 
else 
{ 
    switch(langCase) 
    { 
     case "en-US": 
      value = "englishValueForElse"; 
      break; 
     case "de-CH": 
      value = "german Swiss value for ELSE"; 
      break; 

      ... 

    } 
} 

如果我創建多個標籤控制每個if-else的情況,我將不得不隱藏除當前語言之外的所有內容(醜陋?)。我想要的是一種資源文件,但每個可能發生的情況都有行,並且每種語言都需要列。

回答

3

您應該使用資源文件(.resx)來存儲您的消息。 ASP.NET使用資源構建了本地化機制。

爲了嚮應用程序添加資源,只需使用添加新項目對話框添加新的「資源元素」。

如果您的RESX文件被稱爲ApplicationStrings.resx,包含在將通過屬性

ApplicationStrings.ErrorLabel 

(VS生成一個類來封裝RESX文件)

在你的網站訪問的ErrorLabel串

通過創建具有足夠命名的新資源,您可以支持使用字符串進行本地化:

ApplicationStrings.fr.resx將包含ApplicationStrings.resx的法語本地化 Applicat ionStrings.fr-fr.resx將包含法國/法國本地化等...

ASP.NET句柄回退,然後如果ErrorLabel從ApplicationStrings.fr-fr.resx(或ApplicationStrings.fr-fr。 resx不存在),它將在ApplicationStrings.fr.resx中查找它,然後在ApplicationStrings.resx中查找它。

值得注意的是,ASP.NET使用當前線程文化來執行資源本地化。 因此,您必須確保System.Threading.Thread.CurrentThread.Culture包含您的客戶端文化,而不是您的服務器文化。

+0

我可以創建消息標題的資源文件,並使用資源管理器連接他們在正確的地方? – 2010-10-14 07:37:38

+0

是的,看到我的消息,事件比這更容易。^_ ^(注意你的資源類自動生成的命名空間,它是計算機的其他自動化類文件生成,根據默認的項目命名空間和資源文件目錄。 – Eilistraee 2010-10-14 07:44:02