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

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

36 голосов
/ 07 июня 2011

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

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

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

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

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

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

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

Ответы [ 2 ]

6 голосов
/ 06 октября 2011

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

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

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

Редактировать

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

6 голосов
/ 15 июня 2011

Тогда я нашел пост, который предупреждал о используя App_GlobalResouces и App_LocalResources. (Link)

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

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

<h1>@Index.Title</h1>

Я не думаю, что существует какой-то определенный метод «сделай это или так», поэтому мне кажется, что поиск самого чистого метода - хорошая сделка.

...