2016-03-08 97 views
0

我有一個問題,可以使用我的Word資源文件作爲客戶端特定的。不同客戶端的資源文件

我有一個默認文件WordResources.resx和語言特定的資源,例如WordResources.en-GB.resx,WordResources.fr.resx。

例如,我該如何處理客戶端特定的資源文件;
WordResources.client1.resx,WordResources.client2.resx。

根據編譯,例如, client1將與WordResources.client1.resx一起構建,但會替換默認資源文件?

我希望我可以有不同的客戶端特定的資源文件只有幾個字的差異,然後保持默認文件,並使用任何語言與此結合。

回答

2

您可以構建多個版本。我們通常在構建期間重命名resx文件,併爲每個客戶端構建自己的安裝/發佈版本。

您可以在項目的預生成事件中執行此操作,並可以打開環境變量。

+0

我決定採用以下方法。這將是對新方法的慢速遷移,但會根據客戶端請求進行更改。 – KyleK

0

我設法解決我的問題與定製的客戶端文件。遷移到解析字符串以進行本地化的新方法需要一段時間,但每個更改請求都會實現該方法。

我已經在數據庫中定義了一個指定客戶端的全局應用程序設置。

客戶端名稱然後用於查找正確命名的.resx文件,並且無法找到.resx文件中的字符串,它將默認指定文化版本或從缺省資源文件讀取/指定默認文化resx和失敗所有這一切,返回傳遞的字符串。

public static string GetLocalizedString(string text) 
{ 
    System.Reflection.Assembly assembly = System.Reflection.Assembly.GetAssembly(typeof(LocalizationExtensions)); 
    cultureInfo = new CultureInfo(HttpContext.Current.Cache["Culture"].ToString()); 
    string clientName = HttpContext.Current.Cache["ClientName"].ToString();  
    return (new System.Resources.ResourceManager("Resources." + clientName + "." + clientName, assembly)).GetString(text, cultureInfo) 
      ?? (new System.Resources.ResourceManager("Resources.WordResources", assembly)).GetString(text, cultureInfo) 
      ?? text; 
} 

將客戶端名稱的應用程序設置加載到緩存中。

相關問題