在我的MVC 3应用程序中,我需要进行本地化。我想问一些建议是什么是最好的方法。还有一个问题。我在我的应用程序中使用这样的模型:
public class MyModel
{
[HiddenInput(DisplayValue = false)]
public Guid? DepartmentId { get; set; }
[Display(Name = "Caption")]
public string Caption { get; set; }
[Display(Name = "Owner")]
public string Owner { get; set; }
[Display(Name = "Enabled")]
public bool Enabled { get; set; }
}
如何在此模型类中使用本地化?
更新
我决定创建一个自定义resource.xml而不是使用asp.net的Resource .resx实现,如何在这个模型类中使用本地化?
答案 0 :(得分:4)
使用[Display]属性中的以下设置:
[Display(Name = "Caption", ResourceType = typeof(SomeResource))]
其中SomeResource是资源文件的类名。要正确获取命名空间和类名,只需打开添加资源文件时生成的 designer.cs 文件。确保资源文件的自定义工具设置为 PublicResXFileCodeGenerator 。这可以在资源文件的“属性”窗口中完成。
如果你去找一个resources.xml文件,那么可能会出现重载或新属性,例如你可以使用XPath表达式和xml文件的位置。
你可以连接一个新的提供者,如:
ModelValidatorProviders.Providers.Add(new CustomMetadataValidationProvider());
,其中
public class CustomMetadataValidationProvider : DataAnnotationsModelValidatorProvider
{
}
您可能也会对Orchard CMS解决问题的方式感兴趣。他们使用.po files。
答案 1 :(得分:0)
您可以使用资源文件来存储字符串的本地化版本。查看following guide。
答案 2 :(得分:0)
您无需修改模型即可完成此操作:
public class MyModel
{
[HiddenInput(DisplayValue = false)]
public Guid? DepartmentId { get; set; }
public string Caption { get; set; }
public string Owner { get; set; }
public bool Enabled { get; set; }
}
如果您在我的Griffin.MvcContrib中使用 自定义元数据提供商 :http://www.codeproject.com/Articles/352583/Localization-in-ASP-NET-MVC-with-Griffin-MvcContri
源代码:https://github.com/jgauffin/griffin.mvccontrib
<强>更新强>
您可以使用XML作为数据源。只需实现接口ILocalizedStringProvider并使用它从XML文件加载字符串。
然后像这样配置MVC:
var stringProvider = new MyXmlProvider(@"C:\AppData\MyStrings.xml");
ModelMetadataProviders.Current = new LocalizedModelMetadataProvider(stringProvider);
答案 3 :(得分:0)
如果要将本地化字符串存储在自定义文件中而不是RESX中,则可以实现资源提供程序。有关详细信息,请查看以下文章:
http://msdn.microsoft.com/en-us/library/aa905797.aspx#exaspnet20rpm_topic4