我知道如果我想创建一个多语言 MVC4 应用程序,我会根据CultureInfo
,但这对于应用程序的标签、消息、标题等很有用,但是我正在考虑定义县名及其城市的列表在许多语言中,现在我应该在资源文件中定义它们(这可能会让人筋疲力尽)还是应该为每种语言使用一个包含许多列的表?
如果我使用资源文件,我如何知道用户在系统中注册时来自哪个国家?
哪一个是最佳实践?还有其他方法吗?
我知道如果我想创建一个多语言 MVC4 应用程序,我会根据CultureInfo
,但这对于应用程序的标签、消息、标题等很有用,但是我正在考虑定义县名及其城市的列表在许多语言中,现在我应该在资源文件中定义它们(这可能会让人筋疲力尽)还是应该为每种语言使用一个包含许多列的表?
如果我使用资源文件,我如何知道用户在系统中注册时来自哪个国家?
哪一个是最佳实践?还有其他方法吗?
为每种语言使用多个列是可行的,但随着未来需要添加更多列和语言,它也会很快失控。所以我建议不要使用这种方法。
但是,您可以做的是将需要本地化的列移动到具有复合主键的不同表中。这是一个带有城市表的简单示例:
您将拥有看起来像这样的类:
// City.cs
public class City
{
public int CityId { get; set; }
public string UnlocalizedField1 { get; set; }
public string UnlocalizedField2 { get; set; }
// Optional
public virtual List<CityTranslation> Translations { get; set; }
}
// CityTranslation.cs
public class CityTranslation
{
public int CityId { get; set; }
public string LanguageId { get; set; }
public string LocalizedField1 { get; set; }
public string LocalizedField2 { get; set; }
}
然后用您需要的语言查询数据变得相当简单。