Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Internationalization 如何将i18n应用于存储在数据库中的值?_Internationalization - Fatal编程技术网

Internationalization 如何将i18n应用于存储在数据库中的值?

Internationalization 如何将i18n应用于存储在数据库中的值?,internationalization,Internationalization,我正在使用Visual Studio 2012和MVC4以及Entity Framework 5构建一个网站。 问题是,我必须对存储在数据库中的一些值应用i18n。例如,我需要一个下拉列表,用西班牙语和英语显示就业领域(工程、卫生、金融等) 我想了两种不同的方法,但没有一种对我来说100%合适: 在“区域”表中添加列,以反映不同语言的区域名称(例如:AreaId、EnglishName、SpanishName)。这听起来不是很好的设计智慧,因为我很幸运只有两种语言,但如果我有100种语言支持呢

我正在使用Visual Studio 2012和MVC4以及Entity Framework 5构建一个网站。 问题是,我必须对存储在数据库中的一些值应用i18n。例如,我需要一个下拉列表,用西班牙语和英语显示就业领域(工程、卫生、金融等)

我想了两种不同的方法,但没有一种对我来说100%合适:

  • 在“区域”表中添加列,以反映不同语言的区域名称(例如:AreaId、EnglishName、SpanishName)。这听起来不是很好的设计智慧,因为我很幸运只有两种语言,但如果我有100种语言支持呢

  • 不要将区域保存在数据库中,而是使用i18n键将它们添加到视图中,并从资源文件中读取它们的值。这是在给视图添加逻辑(我可能不得不在那里使用迭代),所以看起来也不太好

  • 还有什么我遗漏的,那会是更好的方法吗


    谢谢

    首先,就灵活性和维护而言,我确实认为将i18n逻辑与数据库实体分开是一种更好的方法

    所以,为了将i18n与数据库分开,您可以使用枚举(这取决于您,因为它也有一些缺点),也可以为每个就业领域使用i18n变量。例如,在
    message.properties.en
    中,您可以有:

    employmentArea.engineering = Engineering
    employmentArea.health = Health
    employmentArea.finance = Finance
    
    出于某些原因,如果您确实需要使用数据库,您可以有一个单独的语言表,这可以解决您的问题,如下所示:

    表格
    区域

    id code    
    -- ----    
    1  eng     
    2  heath   
    3  finance 
    
    表格
    区域语言

    id area_id lang_code name
    -- ------- --------- ----
    1  1       en        Engineering
    2  2       en        Health
    3  3       en        Finance
    4  1       es        Ingeniería
    5  2       es        Salud
    6  3       es        Financiar
    
    因此,通过这种方式,您可以通过
    lang\u code
    进行过滤。为语言代码过滤器使用iso标准将对您有所帮助