2014-03-07 54 views
2

綁定使用C#中的枚舉使用本地化值下拉。綁定下拉使用C中的枚舉的本地化值#

我對所有的語言都有價值。所以我不需要從其他地方取它。 我可以用不同語言的resx文件編寫所有的值。但我不確定它是如何工作的。

我正在使用C#窗體。框架3.5

+0

您在這裏使用的是什麼UI框架? WPF,asp.net,winforms等... – JaredPar

+0

是的。你有什麼嘗試?這並不像.NET框架中的大多數UI技術都沒有本地化的鉤子,有時候可用編輯器。 – TomTom

回答

2

我用下面的代碼,它爲我

using System.Globalization; 
using System.ComponentModel; 
using System.Threading; 

工作得很好.......

.......

。 ......

Thread.CurrentThread.CurrentUICulture = new CultureInfo(DDLLang.SelectedValue); 
ComponentResourceManager resource = new ComponentResourceManager(typeof(Default)); 
resource.ApplyResources(LblName, "LblName"); 
LblName.ID = "LblName"; 
Response.Write(resource.GetString("strMsg",CultureInfo.CurrentUICulture)??resource.GetString("strMsg")); 

在上面的代碼中,LblName是一個標籤, StrMsg一個簡單的字符串。

在資源文件中,我會寫這樣的:

名稱值


Lbl.Name標籤................

StrMsg anycustom msg ............

1
private static ResourceManager _resources = new ResourceManager("MyClass.myResources", 
    System.Reflection.Assembly.GetExecutingAssembly()); 

public static IEnumerable<string> GetLocalizedNames(this IEnumerable enumValues) 
{ 
    foreach(var e in enumValues) 
    { 
     string localizedDescription = _resources.GetString(String.Format("{0}.{1}", e.GetType(), e)); 
     if(String.IsNullOrEmpty(localizedDescription)) 
     { 
      yield return e.ToString(); 
     } 
     else 
     { 
      yield return localizedDescription; 
     } 
    } 
}