2016-05-28 133 views
0

我使用的Microsoft.Office.Interop.Outlook;允許我使用OlCategoryColor。特別是我有這樣的:如何翻譯OlCategoryColor?

Dictionary<OlCategoryColor, KeyValuePair<string, string>> CategoryColor; 
CategoryColor = new Dictionary<OlCategoryColor, KeyValuePair<string, string>> 
{ 
    {OlCategoryColor.olCategoryColorRed, new KeyValuePair<string, string>("#E7A1A2", "7")} 
}; 

,使色彩的名字,我只是這樣做:

foreach (var outlookColor in CategoryColor) 
{ 
    outlookColor.Key.ToString().Remove(0, "olCategoryColor".Length); 
} 

它返回Red,但有可能採取意大利語言或其他語言?

+0

'Enum.ToString'返回源代碼中的枚舉名稱,如果你想將它翻譯成意大利語,你必須自己做 - 一個簡單的字典映射英語 - >意大利名字與一點谷歌翻譯應該做 – csharpfolk

+0

@csharpfolk請給我一個示例代碼,如果你可以。 – D3bug

回答

0

這裏是簡單解決方案,您可能需要調整它一點取決於無論你想支持多國語言,或只是意大利語:

public enum Language { 
    English, 
    Italian 
} 

public static class LocalizationHelper { 

    private static IDictionary<string, string> eng2ItalianColor = new Dictionary<string, string> { 
     { "Red", "Rosso" }, 
     { "Black", "Nero" }, 
     { "Blue", "Azzurro" }, 
     // other ... 
    }; 

    public static string GetColorName(OlCategoryColor color, Language language) { 
     var englishColorName = 
      color.ToString().Remove(0, "olCategoryColor".Length); 

     if (language == Language.English) { 
      return englishColorName; 
     } 
     else if (language == Language.Italian) { 
      if (eng2ItalianColor.ContainsKey(englishColorName)) 
       return eng2ItalianColor[englishColorName]; 
      else 
       throw new ArgumentException(
        "missing translation from english to italian for color: " + englishColorName); 
     } 
     else { 
      throw new ArgumentException("unsupported language: " + language); 
     } 
    } 
} 

// Then use: 
var colorName = 
    LocalizationHelper.GetColorName(outlookColor.Key, Language.Italian); 

如果谷歌一點點,也許你會發現爲顏色準備好的翻譯表,我使用簡單的dict Linux實用程序,它允許從命令行翻譯單詞。

根據您正在編寫的應用程序,可能會出現這種情況,您還需要翻譯其他字符串/消息,在這種情況下,您應該查看一些關於.NET全球化解決方案的教程 - 通常您會創建多個資源文件 - 每種語言一個,然後使用ResourceManager或其他類根據Thread.CurrentCulture加載字符串。在這種情況下,您可以使用例如資源名稱。 color_red併爲每種語言提供適當的翻譯。快速教程在這裏:http://www.aspsnippets.com/Articles/What-is-Globalization-and-Localization-and-their-differences-in-ASPNet.aspx

+0

非常有趣的解決方案謝謝:)但我不明白的一件事:你已經在'GetColorName'內聲明瞭一個'color'變量,但是你從來沒有使用它,爲什麼? – D3bug

+0

@ D3bug - 謝謝,當然這是一個bug – csharpfolk

+0

好的,謝謝:) – D3bug