RetrieveAttributeRequest
を取得してからEnumAttributeMetadata
、言語コードに基づいて正しい値を検索する必要があります。
string languageCode = germanLanguageCode; // Set
int optSetValue = 0; // Set
RetrieveAttributeRequest attributeRequest = new RetrieveAttributeRequest
{
EntityLogicalName = entityLogicalName,
LogicalName = attributeName,
RetrieveAsIfPublished = true
};
var response = (RetrieveAttributeResponse)service.Execute(attributeRequest);
var optionList = ((EnumAttributeMetadata)response.AttributeMetadata).OptionSet.Options;
return optionList.GetFirst(o => o.Value == optSetValue).Label.LocalizedLabels.First(l => l.LanguageCode == languageCode).Label;
または、サービスがドイツ語ユーザーとして実行されている場合は、次の方法でドイツ語のテキストにアクセスできますreturn optionList.GetFirst(o => o.Value == optSetValue).Label.UserLocalizedLabel.Label;
私は、テキスト情報のために CRM サーバーに絶えずアクセスするよりも、メタデータをキャッシュする方が好きです。しかし、繰り返しになりますが、私は英語のみの組織に所属しており、人々が使用している言語について心配する必要はありません...
コメントからの追加回答
GetFirst()
は単なる標準の Linq メソッドです。System.Linq 名前空間を using ステートメントに追加している限り、すべての IEnumerable にそれが含まれます。
ドイツ語は1031にあります。より正しいルートは、ユーザーの UsersSetting.UILanguageId を検索することですが。テストしていませんが、正しいコードが含まれているはずです...