Як локалізувати додаток 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.


Дякую за цю оновлену відповідь! Рік тому я використав підхід Метта Хоулі, але зіткнувся з серйозними проблемами з тестами Unit. Я спробував знущатися над контекстом контролера, але щось ще не вистачало, і я відмовився. Я пройду цей MVC2 шлях і сподіваюся, що вони це зрозуміли.
Lauri Larjo

Раніше я використовував цей підхід у своїх проектах, я повинен сказати, що такий підхід кращий.
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
Хоча ваша стаття може насправді відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки. Переповнення стека є настільки ж корисним, як і його запитання та відповіді, і якщо ваш хост блогу знижується або ваші URL-адреси переміщуються, ця відповідь стає марною. Дякую!
sarnold

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.