Вопрос

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

Это было полезно?

Решение

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

Это имеет смысл, когда вы думаете об этом, потому что локальные ресурсы являются локальными для страницы aspx, а в контроллере вы даже не выбрали свой вид.

Другие советы

Я нашел этот ресурс быть очень полезным

Это обертка вокруг HttpContext.Current.GetGlobalResourceString и HttpContext.Current.GetLocalResourceString это позволяет вам вызывать ресурсы следующим образом...

// default global resource
Html.Resource("GlobalResource, ResourceName")

// global resource with optional arguments for formatting
Html.Resource("GlobalResource, ResourceName", "foo", "bar")

// default local resource
Html.Resource("ResourceName")

// local resource with optional arguments for formatting
Html.Resource("ResourceName", "foo", "bar")

Единственная проблема, которую я обнаружил, заключается в том, что контроллеры не имеют доступа к локальным строкам ресурсов.

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

Site.resx
Site.en.resx
Site.en-US.resx
Site.fr.resx
etc...

Так что вы правы, по-прежнему используйте файлы ресурсов.

Проект Orchard использует сокращенный метод под названием "T" для выполнения всех переводов строк на странице.Таким образом, вы увидите теги с символом @T ("Строка для перевода").

Я намерен посмотреть, как это реализуется за кулисами, и потенциально использовать в будущих проектах.Короткое имя делает код более чистым, поскольку оно будет использоваться очень много.

Что мне нравится в этом подходе, так это то, что исходная строка (в данном случае английская) по-прежнему легко видна в коде и не требует поиска в инструменте ресурсов или в каком-либо другом месте, чтобы расшифровать, какая фактическая строка должна быть здесь.

Видишь http://orchardproject.net для получения дополнительной информации.

Некоторые из других решений, упомянутых в качестве ответа, не работают для выпущенной версии MVC (они работали с предыдущими версиями alpha / beta).

Вот хорошая статья, описывающая способ реализации локализации, который будет строго типизирован и не нарушит модульное тестирование контроллеров и представлений: руководство по локализации для MVC v1

Это еще один вариант, и у вас будет доступ к текущей культуре в контроллере:

Проверить MVC3-многоязычный

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top