我有一个ASP.NET 5应用程序,我目前正在实现本地化。
资源位于ASP.NET文件夹App_LocalResources
中,一切正常。至少,它处于开发阶段。我有以下ResourceCultureFilterAttribute
:
using MyProject.App_LocalResources;
public class ResourceCultureFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
string language = GetClientLanguageFromCookiesDoesntMatter();
var culture = new CultureInfo(language);
GlobalResources.Culture = culture;
}
}
现在我在Razor视图中以这种方式访问它:
@GlobalResources.SomeResourceName
现在,我担心Culture
自动生成的资源类属于static
。
是否表示此属性设置为每个帖子或每个应用程序池(请指定正确的属性),但不是每个用户?
如果是,那么几个用户将覆盖并使用单个值,这肯定会导致本地化问题。
我知道如何通过以下方式替换直接访问来解决此问题:
@GlobalResources.ResourceManager.GetString("ResourceName",
new CultureInfo(GetClientLanguageFromCookiesDoesntMatter());
但是,也许,有一个更合适的解决方案 - 一些重要的东西,我只是看不见或不知道。也许,有一个特殊的属性,如CurrentUserCulture
,特殊的多用户资源类,属性或其他东西,可以为ASP.NET项目提供简单明了的本地化。