我需要本地化mvc应用程序的最佳实践方面的帮助, 我看到Oxite在BaseController中有一个名为Localize的基本方法,但本地化是视图还是Controller的本地化任务? 或者我应该使用resx文件/或使用数据库表?ASP.NET MVC本地化最佳实践?
回答
如果要本地化的字符串是由视图生成的(例如文本字段前面的标签),则其本地化应位于视图中。
如果字符串是由控制器生成的,那么它的本地化也应该在那里。
有这个可here
本文很好的解决方案涵盖了本地化asp.net MVC应用程序
的方方面面MVC是真正了解如何使用正确的看法合适的工作。将所有内容放在资源文件中都非常有用。将资源文件用于小事情是很好的,但对于更大的页面(如描述页面),最好是在每个文化中都有大量内容的视图。例如,使用以下结构: 〜/ Views/en-US/Home/Index.aspx 〜/ Views/pt-BR/Home/Index.aspx or this structure: 〜/ Views/Home/Index.en -US.aspx 〜/浏览/首页/ Index.en-US.aspx
阅读如何做到这一点的博客:http://blog.oimae.com/2011/02/20/cultured-view-engine-for-mvc/
由于这一年的问题,我不知道的范围我的答案在这里。最近我遇到了这样的情况,即我需要在我的mvc网站中实现不同语言的本地化。
我考虑使用Resource
文件。 它很容易实现,但问题是在开发阶段,我们需要指定本地化的字符串。所以如果它支持多语言,我们需要为每种语言制作资源文件。如果客户要更改或添加新语言,那么它非常困难,我们需要提供一个构建。
其次我考虑Satelite Assemblies
。 它也类似于资源,但它给了一个自由来编辑组件,并将其放回bin文件夹。这也需要客户/开发者付出很大的努力。
第三我认为存储在分贝。 这种方法很好,我们有一些机制来从服务器读取数据。这需要一次性努力,客户没有任何可靠的。
我重写自定义DisplayNameAttributre
并从构造我会通过数据库,并获得基于您的要求,它应该显示的视图你
数据来呈现。
资源管理器
/// <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 -- ";
}
视图模型
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; }
}
我会更好地去创建一个自定义MetadataProvider,并使用用于模型的约定。类似于1个资源文件的模型名称空间和一个像ModelName.PropertyName的常规 - >值
对于验证器,常用按钮等资源文件。
对于意见文本我实际上试图找到一个好方法。可能是编译前的视图预处理和本地化文本的自定义范围,因此预处理可以使用默认语言为每个视图创建资源文件。
- 1. 本地化最佳实践
- 2. 本地化最佳实践
- 3. 最佳实践ASP.NET MVC 3
- 4. asp.net mvc viewdata最佳实践
- 5. ASP.NET MVC的最佳实践
- 6. ASP.NET MVC RenderAction最佳实践
- 7. ASP.Net MVC Cookies最佳实践
- 8. 本地化web api odata最佳实践?
- 9. iOS - 本地化的最佳实践
- 10. Silverlight本地化最佳实践?
- 11. 内容本地化最佳实践
- 12. C++本地化最佳实践?
- 13. Java本地化最佳实践
- 14. MVC最佳实践
- 15. asp.net最佳实践
- 16. 香草ASP.NET中本地化的最佳实践或资源?
- 17. ASP.NET Web应用程序本地化的最佳实践
- 18. ASP.NET MVC中的模型最佳实践
- 19. 最佳实践,对象设计ASP.NET MVC
- 20. ASP.Net MVC尝试抓住最佳实践
- 21. ASP.NET MVC 3 - ViewModel最佳实践
- 22. ASP.NET MVC ViewModel集合最佳实践
- 23. ASP.NET MVC视图模型最佳实践
- 24. ASP.NET Mvc - AutoMapper最佳实践 - 性能
- 25. 最佳实践错误处理ASP.Net MVC
- 26. ASP.NET MVC后台工作 - 最佳实践
- 27. ASP.Net MVC存储CustomIdentity的最佳实践
- 28. ASP.NET MVC区域的最佳实践
- 29. ASP.NET MVC主题最佳实践?
- 30. Async与ASP.net MVC 2的最佳实践?
这是一个很好的方法http://stackoverflow.com/questions/381070/asp-net-mvc-localization-best-practice/12936708#12936708 – kbvishnu 2012-11-13 02:21:26