Как локализовать приложение ASP.NET MVC?


121

Как лучше всего локализовать приложение ASP.NET MVC?

Я хотел бы осветить две ситуации:

  • одно развертывание приложения в IIS, которое будет обрабатывать несколько языков
  • развертывание одного языка / приложения.

В первой ситуации следует ли вам использовать какие-то вещи, основанные на представлении, например ~ / View / EN, ~ / View / FI, ~ / View / SWE или что-то другое?

Как насчет второго случая, просто конфигурации на основе приложения через Web.config и указания этих разных языков на разные URL-адреса?


В качестве альтернативы дублированным представлениям вы можете использовать стандартные файлы ResX для хранения строк, специфичных для языка и региональных параметров. К сожалению, управлять этими файлами и редактировать их, особенно переводчикам, немного неудобно и сложно. Его можно упростить, сохранив ресурсы в базе данных и используя какой-либо внешний инструмент локализации. Вы можете посмотреть эту бесплатную библиотеку, предоставляющую ресурсы для базы данных: globsite.net/GlobsiteGlobalizationLibrary
Kryszal

Ответы:


72

Вы также можете посмотреть здесь ASP.NET MVC 2 Localization полного руководства и ASP.NET MVC 2 модели Validation с локализацией этих заходы помогут вам , если вы работаете с ASP.NET MVC 2.


Спасибо за обновленный ответ! Год назад я использовал подход Мэтта Хоули, но столкнулся с серьезными проблемами с модульными тестами. Я попытался издеваться над контекстом контроллера, но чего-то еще не хватало, и я сдался. Я пройдусь по этому пути MVC2 и надеюсь, что они это поняли.
Лаури Ларджо,

Раньше я использовал этот подход в своих проектах, должен сказать, что этот подход лучше.
fyasar

@fyasar привет, у нас есть веб-сайт покупок в asp mvc, поэтому, когда пользователь выбирает арабский язык, мы хотим сделать весь сайт арабским, можем ли мы использовать переводчик microsoft bing или API переводчика Microsoft, или я должен купить localize.js, чтобы достичь этого быстро ?
Shaijut

22

Вы должны локализовать свое приложение ASP.NET MVC во многом так же, как классическое приложение веб-формы ASP.NET.

Вы не будете использовать разные страницы / представления для каждого языка, но каждая страница будет поддерживать несколько языков с использованием вспомогательных сборок.

Вы можете посмотреть запись в блоге Мэтта Хоули для получения дополнительных объяснений и примеров.


9

К сожалению, исходный код Мэтта Хоули не работает в окончательной версии ASP.NET MVC. Ознакомьтесь с обновленным сообщением: http://blog.eworldui.net/post/2008/10/ASPNET-MVC-Localization-via-View-Engines.aspx

В общем, в мире VS 2008 / ASP.NET MVC процесс локализации не такой гладкий, как в традиционных веб-формах. http://www.guysmithferrier.com/post/2009/05/Localizing-ASPNET-MVC.aspx



2

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

Я только начинаю с MVC, но использую метод развязки, который вы хотели бы использовать, чтобы использовать один и тот же контроллер независимо от языка (рассматривая язык как представление) - тогда это даст вам / Controller / Action / language / form


2

Есть хороший учебник с недавним обновлением о том, как локализовать приложение asp.net mvc, охватывающий все аспекты, включая локализацию DisplayName, проверку, использование маршрутизации (сохранение имени культуры в URL-адресе), проблемы с кешем вывода и так далее ... Блог Алекса Адамяна - Хотя моя клавиатура нежно плачет


1

На самом деле мы пошли совершенно иначе, переопределив DataAnnotationsMetadaDataProvider . Здесь вы можете убедиться, что значения DisplayNameAttribute разрешены на правильном языке. На самом деле вы даже можете избавиться от этого атрибута и разрешить его по именам полей, только если это поможет.


0

Я написал эту статью некоторое время назад. Он использует настраиваемый движок просмотра. http://blog.oimae.com/2011/02/20/cultured-view-engine-for-mvc/


1
Хотя ваша статья на самом деле может дать ответ на вопрос, было бы предпочтительнее включить здесь основные части ответа и предоставить ссылку для справки. Stack Overflow полезен ровно настолько, насколько полезны его вопросы и ответы, и если ваш блог-хост выходит из строя или ваши URL-адреса перемещаются, этот ответ становится бесполезным. Спасибо!
sarnold

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.