Как лучше сделать многоязычность в приложении? На данный момент использую файлы ресурсов и там перевожу нужные мне слова на разные языки, но для длинного текста делать это неудобно. Я прочитал, что есть несколько способов реализации многоязычности:
View.Я хочу использовать 3 вариант.
Вопрос: Как правильно выводить нужный View, если выбранный язык хранится в Cookies? И как быть с новостями, они у меня хранятся в БД на английском. Надо делать другую таблицу для новостей на русском?
В asp.net mvc 5 настроить зависимость view от контекста запроса (в том числе и от cookie) можно через DisplayModeProvider в файле Global.asax
protected void Application_Start()
{
RegisterLanguageDisplayModeProvider("Ru");
RegisterLanguageDisplayModeProvider("En");
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
protected void RegisterLanguageDisplayModeProvider(string languageName)
{
DisplayModeProvider.Instance.Modes.Insert(1, new DefaultDisplayMode(languageName)
{
ContextCondition = context => context.Request.Cookies["Language"] != null && context.Request.Cookies["Language"].Value.ToString() == languageName
});
}
Теперь в названиях разных версий view можно указывать Ru.ViewName.cshtml En.ViewName.cshtml. Это же работает и для layout-ов
По поводу дизайна базы данных есть хорошая статья. Там используется MySql, но подходы спокойно применяются и для MsSql
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости