Так как это вопрос на один год, и я не знаю, где мой ответ здесь. Недавно я столкнулся с такой ситуацией, то есть мне нужно реализовать локализацию для разных языков на моем сайте MVC.
Я подумал об использовании Resource
файла.
Его очень легко реализовать, но проблема в том, что на этапе разработки нам нужно указать локализованные строки. Так что, если это мультиязычная поддержка, нам нужно создать файл ресурсов для каждого языка. Если клиенту нужно что-то изменить или добавить новый язык, это очень сложно и нам нужно предоставить сборку.
Второй я считаю Satelite Assemblies
.
Он также похож на Resource, но он дает свободу редактировать сборки снаружи и помещать обратно в папку bin. Это также требует много усилий для клиента / разработчика.
В-третьих, я рассмотрел хранение в БД.
Этот подход хорош, и у нас есть некоторый механизм для чтения данных с сервера. Это требует единовременных усилий, а у клиента нет надежного.
Я переопределяю пользовательский DisplayNameAttributre
, и из конструктора я передам DB и получу данные для рендеринга
По вашему требованию он должен отображать вид для вас.
Диспетчер ресурсов
/// <summary>
/// Extended display attribute which will handles the request
/// It will call every time when the property is rendered (return View() - from controller)
/// </summary>
public class ResourceManagerAttribute : DisplayNameAttribute
{
public ResourceManagerAttribute(string resourceKey, string resourceNameSpace = "")
: base(GetDisplayName(resourceKey, resourceNameSpace))
{ }
private static string GetDisplayName(string resourceKey, string resourceNameSpace = "")
{
// get the browser's prefered language.
string browserLanguage = HttpContext.Current.Request.UserLanguages.First();
// Get the locale data for that property and displays.
switch (browserLanguage)
{
case "en-US": return "Eng " + resourceKey;
// calls db based on resource key
case "hi": return "Hin " + resourceKey;
}
return "-- Not Implemented Now -- ";
}
ViewModel
public class HomeViewModel
{
//calls the resource
[ResourceManager("MID")]
public int MID { get; set; }
[ResourceManager("Name")]
public string Name { get; set; }
[ResourceManager("Addess")]
public string Addess { get; set; }
}