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