Подтвердить что ты не робот

ASP.NET - MVC 3: Локализация

Я собираюсь реализовать локализацию для своего веб-приложения MVC3. Гуляя по моему пути с помощью большого количества способов сделать это, я остался не уверен, какой способ реализовать это. Я нашел несколько способов, как это сделать:

Первый вариант, который я нашел, - использовать App_GlobalResources и ViewData и выбрать культуру с помощью Map Routing. (Ссылка)

Во-вторых, чтобы создать отдельную папку "Ресурсы" в моем проекте и создать ее как папки "Модель" и "Просмотр". Затем создайте файлы ресурсов в этих папках. Использовать эти строки ресурсов можно было бы, используя Viewbag. Затем отредактируйте файл Global.asax, чтобы обработать изменение культуры и создать частичное представление, позволяющее изменять культуры. Инструкции для этого очень тщательно, поэтому это может быть лучшим выбором. (Ссылка)

Третий должен был использовать DisplayAttribute и resx файлы. Это было немного туманно, я не мог найти такую ​​информацию, чтобы я мог понять, как это реализовано и какие ограничения. (Ссылка)

В-четвертых, нужно было создать собственный класс для обработки ресурсов. Это казалось довольно привлекательным и простым в использовании и использовании, но реальной информации не было обнаружено, если оно действительно сработало. (Ссылка)

Затем я нашел сообщение, которое предупреждало об использовании App_GlobalResouces и App_LocalResources. (Ссылка)

Пройдя через возможные способы локализации. Я не мог найти способ, который был бы общепринятым или принятым. Это заставило меня задуматься, какой из них или какой-то я не нашел, был бы лучшим способом реализовать локализацию в ASP.NET MVC3?

4b9b3361

Ответ 1

Затем я нашел сообщение, которое предупреждало о используя App_GlobalResouces и App_LocalResources. (Ссылка)

Я нашел, что сообщение чрезвычайно полезно. Метод, объясненный там, очень чистый. Ниже приведен фрагмент моего недавно созданного индексного представления с помощью этого метода:

@using Resources.Index
@{
    ViewBag.Title = "Index";
}

<h1>@Index.Title</h1>

Я не думаю, что существует окончательный метод do-it-this-way-or-else, поэтому переход на самый чистый метод кажется мне очень хорошим.

Ответ 2

Я придумал более простой способ обработки локализации, где вам не нужно использовать файлы ресурсов или атрибуты. Он включает пользовательских поставщиков метаданных.

MVC3 использует поставщиков метаданных для получения всех текстовых строк. Мой подход позволяет вам использовать строковые таблицы, базу данных, плоские файлы или любой другой источник, чтобы обеспечить переводы. Все, что вам нужно сделать, это наследовать два интерфейса.

Читайте об этом здесь: http://blog.gauffin.org/2011/09/easy-model-and-validation-localization-in-asp-net-mvc3/

Edit

Все теперь задокументировано в github и есть пакеты nuget: https://github.com/jgauffin/griffin.mvccontrib