ASP MVC 3 - Локализация с помощью LocalizationDisplayNameAttribute - PullRequest
1 голос
/ 18 октября 2011

Может кто-нибудь сказать мне, что я делаю неправильно в этом коде:

    public class LocalizationDisplayNameAttribute : DisplayNameAttribute
    {


    public LocalizationDisplayNameAttribute(string resourceKey)
    {
        ResourceKey = resourceKey;
    }


    public override string DisplayName
    {
        get
        {
            string displayName = App_GlobalResources.Global.ResourceManager.GetString(ResourceKey);

            return string.IsNullOrEmpty(displayName)
                ? string.Format("[[{0}]]", ResourceKey)
                : displayName;
        }
    }

    private string ResourceKey { get; set; }


}

Культура установлена ​​в CS. У меня есть два ресурса: Global.resx и Global.cs.resx, но когда я запускаю это приложение, я всегда получаю строку из Global.resx (это должно быть Global.cs.resx)

1 Ответ

1 голос
/ 18 октября 2011

У меня отлично работает следующее:

public class LocalizationDisplayNameAttribute : DisplayNameAttribute
{
    public LocalizationDisplayNameAttribute(string resourceKey)
    {
        ResourceKey = resourceKey;
    }

    public override string DisplayName
    {
        get
        {
            string displayName = Global.ResourceManager.GetString(ResourceKey);
            return string.IsNullOrEmpty(displayName)
                ? string.Format("[[{0}]]", ResourceKey)
                : displayName;
        }
    }
    private string ResourceKey { get; set; }
}

Просмотр модели:

public class MyViewModel
{
    [LocalizationDisplayName("foo")]
    public string Foo { get; set; }
}

Контроллер:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View(new MyViewModel());
    }
}

Просмотр:

@model MyViewModel
@Html.LabelFor(x => x.Foo)
@Html.EditorFor(x => x.Foo)

Ресурсы:

~/App_GlobalResources/Global.resx:

foo: foo

~/App_GlobalResources/Global.cs.resx:

foo: localized foo

~/web.config:

<system.web>
    <globalization culture="cs" uiCulture="cs"/>
    ...
</system.web>

печатает правильное локализованное значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...