标签:WEBAPI Thread 中英文 preferredLanguage Value ee acceptedLanguage NET Quality
项目添加App_GlobalResources文件夹

文件夹下添加资源文件
Language.resx //为中文资源文件

Language.en-US.resx

新建CultureHandler类
public class CultureHandler: DelegatingHandler
{
private List<string> supportedCulture = new List<string>()
{
"zh-CN", "en-US"
};
protected override System.Threading.Tasks.Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
{
HttpHeaderValueCollection<StringWithQualityHeaderValue> acceptedLanguage = request.Headers.AcceptLanguage;
if (acceptedLanguage != null && acceptedLanguage.Count > 0)
{
StringWithQualityHeaderValue preferredLanguage =
acceptedLanguage.OrderByDescending(e => e.Quality ?? 1.0D)
.Where(e => !e.Quality.HasValue || e.Quality.Value > 0.0D)
.FirstOrDefault(
e => supportedCulture.Contains(e.Value, StringComparer.OrdinalIgnoreCase));
if (preferredLanguage != null)
{
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(preferredLanguage.Value);
// 如需要,此处也可同时设置CurrentCulture属性
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(preferredLanguage.Value);
}
if (acceptedLanguage.Any(e => e.Value == "*" && (!e.Quality.HasValue || e.Quality.Value > 0.0D)))
{
string selectedCulture =
supportedCulture.FirstOrDefault(e => !acceptedLanguage.Any(
ee =>
ee.Value.Equals(e, StringComparison.OrdinalIgnoreCase) && ee.Quality.HasValue &&
ee.Quality.Value == 0.0D));
if (!string.IsNullOrWhiteSpace(selectedCulture))
{
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(preferredLanguage.Value);
// 如需要,此处也可同时设置CurrentCulture属性
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(selectedCulture);
}
}
}
return base.SendAsync(request, cancellationToken);
}
}
WebApiConfig
config.MessageHandlers.Add(new CultureHandler());

引用resource资源文件
Resources.Language.User_name_or_password_wrong

为了调试,我们使用Fiddler来进行,运行项目之后,我们通过设置HTTP请求头信息中的Accept-Lanuage,可以得到不同语言的响应。



标签:WEBAPI,Thread,中英文,preferredLanguage,Value,ee,acceptedLanguage,NET,Quality 来源: https://www.cnblogs.com/wuchaofan1993/p/15433022.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。
