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);
posted @ 2024-11-27 21:55  Rick Carter  阅读(89)  评论(0)    收藏  举报