2010-10-14 41 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