2013-04-07 80 views
2

我一直在尋找類似問題的答案,但問題要麼相當陳舊,要麼沒有答案。C#中的多個資源文件

背景

我們有幾個不同的網站共享相同的代碼庫,他們分別主持。所有的網站都是英文的,但都有本地化的內容(如英國,澳大利亞&新西蘭)。本地化的內容可能包括電子郵件地址,電話號碼和不同的公司。

該代碼已硬編碼以將本地化控件(如lit_PhoneAU,lit_PhoneNZ &)與lit_PhoneUK分開。有代碼隱藏&根據位置配置顯示這些控件。

問題 什麼是編碼爲我們以前需要的工作,但它有其侷限性,不能擴展。

我們喜歡使用由數據庫表填充的資源文件和對象屬性的混合。使用數據庫調用加載一些常見的東西是相當直接的,但最好使用類似資源文件的東西來存儲更具體和實際的東西。

問題 我的C#資源文件的理解是,我們可以根據定位切換資源文件EN-AU設置這樣,EN-UK,FR-FR等。但是,它們不適合我們的目的,因爲我們可能有多個站點用於一個位置。

難道我們可以輕鬆地切換資源文件嗎?或者我誤解了資源文件的使用?或者有什麼其他方式可以建議管理文字內容。

更新

我必須非常清楚。我的問題不是關於切換UiCulture,因爲我們已經有代碼來處理這個問題。這是關於處理同一文化中的多個資源。例如,我們在英國的兩個不同站點有相同的代碼庫。網站A關於A部分,它可能是SiteA.co.uk,網站標題爲A公司,然後網站B是公司的另一個部門,網站可能是siteB.co.uk。目前管理內容的效率非常低,所以我們試圖將內容移動到由數據庫調用填充的資源文件或業務對象中。

+0

經過一些相當廣泛的研究後,我發現這篇文章非常接近我所需要的。 http://stackoverflow.com/questions/3402451/how-can-i-change-resource-files-for-a-c-sharp-winform-app-without-changing-the它表明有創建自定義文化的方法。 http://msdn.microsoft.com/en-us/library/ms172469(v=vs.90).aspx。我仍然希望聽到有人有更好的答案 – Jack 2013-04-07 12:00:04

回答

0

您可以使用谷歌翻譯(免費)到您的網站。它會自動將內容轉換爲所需的語言。只需瀏覽文檔。否則,我認爲可以使用一些付費翻譯器。

+0

您可以使用調用Google Translater Web服務的C#代碼進行演示嗎? – 2013-04-07 05:21:27

+0

經過一些相當廣泛的研究後,我認爲我發現這篇文章是類似於我需要的東西。 – Jack 2013-04-07 11:58:59

+0

傑克。 Jeremy瀏覽這個[link](http://www.labnol.org/internet/google-translation-widgets/10135/)。首先,您將通過google [link](https://translate.google.com/經理/網站/)如下所示 – manuthalasseril 2013-04-08 06:49:28

0

在請求發生之前,您可以在Global.asax.cs中選擇所需的本地化版本。

protected void Application_AcquireRequestState(object sender, EventArgs e) 
{ 
    //Sets default culture to en-UK 
    string culture = "en-UK"; 

    //Here you can choose the culture as you want. 
    //If you don't want to have another culture, you can specify a default of any culture, and .resx files will use it. 

    //In this example, I check if the culture is the fr-fr we use it, otherwise use en-UK. 
    //Try to get values from Accept lang HTTP header 
    if (HttpContext.Current.Request.UserLanguages != null && 
     HttpContext.Current.Request.UserLanguages.Length != 0) 
    { 
     //Gets accepted list 
     string name = HttpContext.Current.Request.UserLanguages[0]; 
     if (name.Equals("fr-fr", StringComparison.CurrentCultureIgnoreCase)) 
      culture = "fr-fr"; 
    } 

    CultureInfo info = CultureInfo.CreateSpecificCulture(culture); 
    //Finally setting culture for each request 
    Thread.CurrentThread.CurrentUICulture = info; 
    Thread.CurrentThread.CurrentCulture = info; 
} 

然後你可以使用Thread.CurrentThread.CurrentUICulture從符合文化數據庫中檢索數據。

+0

'我必須使它重新清楚。這與資源的位置無關。我們已經有了代碼來切換UiCulture,但這不是關於切換文化。我已經更新了我的問題 – Jack 2013-04-07 07:24:21

+0

以上我可能會破解它併爲不同的實例使用不同的文化,但這並不理想,可能會有一些意想不到的結果。因此,en-AU用於siteA,然後fr-fr用於站點B. – Jack 2013-04-07 07:30:43