2013-04-17 29 views
0

我有一個本地化的網站,我用LINQ調用一些程序 - 那些程序包含一些我需要在語言切換後進行翻譯的文本。這是我的過程調用一個:如何檢查「本地化=英語」否則如果「本地化=其他語言」...在代碼後面 - (ASP.NET C#)

public static IQueryable VyhledejCPN() 
     { 
      LINQDataContext db = new LINQDataContext(); 
      IQueryable result = db.spSearchPartNumber(PartNumber).AsQueryable(); 
      return result; 
     } 

我需要這樣的:

if (localize == english) 
      { 
       public static IQueryable VyhledejCPN() 
        { 
         LINQDataContext db = new LINQDataContext(); 
         IQueryable resultEN = db.spSearchPartNumberEN(PartNumber).AsQueryable(); 
         return resultEN; 
        } 
      } 

      else if (localize == czech) 
      { 
       public static IQueryable VyhledejCPN() 
        { 
         LINQDataContext db = new LINQDataContext(); 
         IQueryable resultCZ = db.spSearchPartNumberCZ(PartNumber).AsQueryable(); 
         return resultCZ; 
        } 
      } 

還是有一些其他的方式?

非常感謝。

回答

1

如果您想了解客戶端的文化,可以使用HttpRequest.UserLanguages Property(瀏覽器的Accept-Language header作爲語言優先級)。

獲取客戶端語言首選項的排序字符串數組。

語言名稱由瀏覽器提供,並且沒有 所有可能的代碼的確切清單。典型地,這些文件由針對該文化的雙字符代碼(連字符)和雙字符 組成,如美國英語中的「en-us」和加拿大法語中的「fr-ca」 。

int count; 
String[] userLang = Request.UserLanguages;  

for (count = 0; count < userLang.Length; count++) 
{ 
    Response.Write("User Language " + count +": " + userLang[count] + "<br>"); 
} 

所以你的情況:

if (Request.UserLanguages.Contains("en-US")) 
{ 
    // ... 
} 
+0

非常感謝你。有用!你能指點我如何使這個作品也相對於語言的變化 - 因爲我讓用戶更改其langueage manualy只是要舒爾,這樣的: '保護無效btnLangChange_Click(對象發件人,EventArgs的){ LinkBut​​ton languageButton =發件人爲LinkBut​​ton; Session [「Culture」] = languageButton.CommandArgument; //用最新的文化重新載入上次請求的頁面。 Response.Redirect(Request.Path); }' – Morignus

+1

然後,您必須首先檢查是否設置了'Session'變量以及在使用上述代碼之前它包含的語言。 if(Session [「Culture」]!= null){//檢查這個lang} else {//我上面的代碼}'。 –