【发布时间】:2015-12-14 00:22:13
【问题描述】:
我有这个资源本地化属性:
public class LocalizedDisplayNameAttribute : DisplayNameAttribute
{
public LocalizedDisplayNameAttribute(string resourceId)
: base(GetMessageFromResource(resourceId))
{
}
private static string GetMessageFromResource(string resourceId)
{
var ioc = Abp.Dependency.IocManager.Instance;
var localizationManager = ioc.IocContainer.Resolve<ILocalizationManager>();
return localizationManager.GetString(MMMConsts.LocalizationSourceName, resourceId, Thread.CurrentThread.CurrentUICulture);}
当我在 WEB 应用程序中切换语言并对此进行调试时,在 Thread.CurrentThread.CurrentUICulture 中我仍然是相同的值。
但是在 Razor 视图文化中何时执行此操作已正确更改。
如何在我的属性类中设置 currencu 文化,我需要它来从资源中加载多语言文本。
模型属性在应用启动之前初始化?感谢您的帮助!
通过此代码解决:
public LocalizedDisplayNameAttribute(string resourceKey)
: base(resourceKey)
{
ResourceKey = resourceKey;
}
public string ResourceKey { get; set; }
public override string DisplayName
{
get
{
string value = null;
var ioc = Abp.Dependency.IocManager.Instance;
var localizationManager = ioc.IocContainer.Resolve<ILocalizationManager>();
value = localizationManager.GetString(MMConsts.LocalizationSourceName, ResourceKey, Thread.CurrentThread.CurrentUICulture);
return value;
}
}
【问题讨论】:
-
请将答案作为答案发布,请勿编辑问题以发布答案。它使问题和答案对未来的读者更有用。
标签: c# asp.net-mvc