Abp框架本地化默认语言设置不起作用问题
问题
Abp vNext框架,后台服务使用IStringLocalizer获得翻译时,与设置的“Abp.Localization.DefaultLanguage”不一致,一直是按服务器的本地语言来的。
分析
Abp中重写了IStringLocalizer,Abp源码简化如下。
public class AbpDictionaryBasedStringLocalizer:IAbpStringLocalizer
{
...
public LocalizedString this[string name] => GetLocalizedString(name,CultureInfo.CurrentUICulture.Name);
...
}
这个索引器实现是用的CultureInfo.CurrentUICulture,所以就是服务器本地语言了。
解决
使用前重新给CultureInfo.CurrentUICulture赋值就可以解决,但我们想全局性修改,就给CultureInfo.DefaultThreadCurrentUICulture赋值。
var defaultLanguage=...//get setting of 'Abp.Localization.DefaultLanguage'
CultureInfo.DefaultThreadCurrentCulture=CultureInfo.GetCultureInfo(defaultLanguage);
CultureInfo.DefaultThreadCurrentUICulture=CultureInfo.GetCultureInfo(defaultLanguage);
作者:Rick Carter
出处:http://pains.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。