ASP.NET MVC Глобализация представлений
-
03-07-2019 - |
Вопрос
Я рассматриваю возможность глобализации приложения, которое я разработал в asp.net mvc.
В настоящее время я использую файлы ресурсов для хранения сообщений, которые я представляю пользователю (т. Е. Когда я сохраняю что-либо в базе данных, и пользователю отображается сообщение "То, что было сохранено правильно", этот текст сохраняется в файле ресурсов, так что я могу легко локализовать сообщение для другого языка.
У меня вопрос в том, как сделать это в представлении в целом?Прямо сейчас у меня есть несколько представлений, которые в основном представляют собой HTML с небольшим количеством логики представления.
Какова наилучшая практика для локализации представления?Я взглянул сюда:
Подход, описанный в этом посте, кажется интересным, но мне интересно, насколько легко будет поддерживать отдельные представления для каждого языка.
ПРИМЕЧАНИЕ:Я не особо занимался глобализацией или локализацией в asp.net в целом, поэтому могут быть некоторые лучшие практики из мира, отличного от mvc, которых мне не хватает.
Решение
Мы столкнулись с той же проблемой с нашим новым приложением MVC и наше решение здесь.Поддерживать отдельные виды может быть тяжелой работой, но поддерживать один и тот же вид на разных языках, по-видимому, так же сложно, поэтому мы решили, что сохранение общего вида даст нам больше возможностей, которые потребуются для выпуска релиза для азиатских стран.
Надеюсь, это поможет вам.
Другие советы
Используйте App_LocalResources для каждой папки просмотра и размещайте ресурсы для каждого представления в папке и для каждого языка.
Подробная информация здесь.
Вы могли бы попробовать настроить свои маршруты так, чтобы они были чем-то вроде:
RouteTable.Routes.MapRoute(
"Globalization",
"{localization}/{controller}/{action}/{id}",
new { localization = "en-us", controller = "Globalization", action = "Index", id = "" }
);
и затем используйте localization в качестве параметра для ваших действий, точно так же, как id является параметром.