2013-03-18 2 views
2

MVC4 및 Entity Framework 5가있는 Visual Studio 2012를 사용하여 웹 사이트를 구축하고 있습니다. 사실, 데이터베이스에 저장된 일부 값에 i18n을 적용해야합니다. 예를 들어 스페인어와 영어로 된 고용 분야 (엔지니어링, 건강, 금융 등)를 보여주는 드롭 다운이 필요합니다.데이터베이스에 저장된 값에 i18n을 적용하는 방법은 무엇입니까?

나는 두 가지 방법을 생각했지만, 그들 중 누구도 나에게 확인을 100 % 소리하지 :

  1. 는 (다른 언어로 지역 이름을 반영하기 위해 "영역"테이블에 열을 추가 예 : AreaId, EnglishName, SpanishName). 내가 2 개 언어 만 갖고있어서 운이 좋았 기 때문에 이것은 설계 상 현명한 것이 아니지만 100 개 언어를 지원한다면 어떨까요?

  2. 영역을 데이터베이스에 저장하지 말고 i18n 키를 사용하고 리소스 파일에서 해당 값을 읽은보기에 추가하십시오. 이것은 뷰에 로직을 추가하는 것입니다 (아마 반복을 사용해야 할 것입니다). 너무 좋지 않은 것 같습니다.

다른 방법이 있습니까? 더 좋은 방법이 있습니까?

감사합니다.

답변

0

우선, 나는 데이터베이스 엔티티와 분리 된 i18n 로직을 유연성과 유지 보수면에서 더 나은 접근이라고 생각한다.

데이터베이스와 별도로 i18n을 유지하려면 열거 형을 사용할 수도 있고 (일부 단점이 있기 때문에) 당신이 각 고용 영역에 대해 i18n 변수를 사용할 수도 있습니다. message.properties.en의 예를 들어 당신이 할 수 : 일부 특정 이유로

employmentArea.engineering = Engineering 
employmentArea.health = Health 
employmentArea.finance = Finance 

을 당신이 정말로 데이터베이스를 사용해야 할 경우, 별도의 언어 테이블을 가질 수 다음과 같이이 문제를 해결할 수 :

테이블을 area

id code  
-- ----  
1 eng  
2 heath 
3 finance 

테이블 area_language

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_code을 필터링 할 수 있습니다. lang_code 필터에 iso 표준을 사용하면 도움이됩니다.

관련 문제