0

ローカライズされた電子メールをユーザーに送信したいのですが、リソース ファイルから取得したテキストが私のカルチャに基づいているようです。

SmtpClient client = new SmtpClient();
client.Host = "xxx.xxx.xxx";
client.Credentials = new NetworkCredential("name", "password");
MailMessage mm = new MailMessage();
mm.Sender = new MailAddress("xxx@xxx.com");
mm.From = new MailAddress("xxx@xxx.com");
mm.To.Add(new MailAddress(email));
mm.Subject = Localization.EmailUserActiveTitle;
mm.Body = "<div><h3>" + Localization.EmailUserActiveBodyPart1 + "</h3></div></br>" +
            "<div>" + Localization.EmailUserActiveBodyPart2 + "</div>" +
            "<div><b>" + content + "</b></div></br>" +
            "<div>" + Localization.EmailUserActiveBodyPart3 + "</div>" +
            "<div>" + Localization.EmailUserActiveBodyPart4 + "</div>";
mm.IsBodyHtml = true;
mm.Priority = MailPriority.Normal;
client.Send(mm);

しかし、取得Localization.EmailUserActiveBodyPart1すると、現在の文化に基づいてローカライズされています。

指定されたカルチャ リソース ファイルを取得するにはどうすればよいですか?

4

1 に答える 1

1

ResourceManager は Thread.CurrentThread.CurrentUICulture プロパティを使用して、読み込むリソースのローカライズされた言語バージョンを決定します。

そのため、特定の言語 (たとえば、メールの送信先ユーザーに関連付けられている言語設定) へのローカライズを強制する場合は、コードの前に次のようにします。

var previousUICulture = Thread.CurrentThread.CurrentUICulture;
Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-FR"); // Replace with the relevant culture name for your user

コードの直後に*クリーンアップします。

Thread.CurrentThread.CurrentUICulture = previousUICulture;

*明らかに、これは信頼できるクリーンアップではありません。このfinally言語切り替え機能をブロックまたはラップしてブロックIDisposableを使用するとusing、エラーが発生した場合にコードがランダムな言語で実行されるのを防ぐことができますが、それは問題外です。

于 2012-05-22T10:40:20.267 に答える