2016-05-28 9 views
0

私はOlCategoryColorを使用できるMicrosoft.Office.Interop.Outlook;を使用しています。特に、私はこのてきた:OlCategoryColorの翻訳方法は?

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

それはRedを返しますが、イタリア語や他の言語を取ることが可能である:

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

は、色の名前を取得するには、私は単にこれを行います?ここで

+0

'Enum.ToString'は、ソースコードのように列挙型の名前を返します。イタリア語に翻訳したい場合は、自分で行う必要があります - 単純な辞書マッピングenglish - >少しのイタリア語名Google翻訳は – 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用のグローバリゼーションソリューションに関するチュートリアルを確認する必要があります。 - 言語ごとに1つずつ、そしてThread.CurrentCultureに基づいて文字列をロードするために、ResourceManagerまたは他のクラスを使用します。その場合、リソース名として、例えば、 color_redと各言語用の適切な翻訳を提供します。ここでの簡単なチュートリアル:http://www.aspsnippets.com/Articles/What-is-Globalization-and-Localization-and-their-differences-in-ASPNet.aspx

+0

非常に興味深いソリューションありがとう:)しかし、私は事を理解していません:あなたは 'GetColorName'の中に' color'変数を宣言しましたが、決してそれを使用しません、なぜですか? – D3bug

+0

@ D3bug - ありがとう、もちろんバグでした – csharpfolk

+0

ありがとうございました:) – D3bug

関連する問題