0

我知道如果我想创建一个多语言 MVC4 应用程序,我会根据CultureInfo,但这对于应用程序的标签、消息、标题等很有用,但是我正在考虑定义县名及其城市的列表在许多语言中,现在我应该在资源文件中定义它们(这可能会让人筋疲力尽)还是应该为每种语言使用一个包含许多列的表?

如果我使用资源文件,我如何知道用户在系统中注册时来自哪个国家?

哪一个是最佳实践?还有其他方法吗?

4

1 回答 1

1

为每种语言使用多个列是可行的,但随着未来需要添加更多列和语言,它也会很快失控。所以我建议不要使用这种方法。

但是,您可以做的是将需要本地化的列移动到具有复合主键的不同表中。这是一个带有城市表的简单示例:

在此处输入图像描述

您将拥有看起来像这样的类:

// 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; }
}

然后用您需要的语言查询数据变得相当简单。

于 2013-08-01T14:19:48.890 回答