우리 회사에는 기존 번역 ms-sql 테이블이 다음과 같은 문자열을 저장합니다.
Id | Key | Language | Value
1 | hello-world | nl-BE | Hallo Wereld
2 | hello-world | en-GB | Hello World
시스템에는 3 개의 언어가 있으며 앞으로 최대 10 개 언어로 성장할 것으로 예상됩니다.
이 테이블은 번역 데이터베이스에 대한 데이터베이스 연결을 열고 번역을 캐시하는 매우 다른 여러 프로젝트 (약 60 개 프로젝트, 주로 웹 사이트 / 웹 응용 프로그램 및 일부 웹 서비스)에서 읽습니다.
프론트 엔드 개발자들의 의견은 UIto가 번역의 가장 큰 단점은 어떤 프로젝트가 어떤 문자열을 사용하는지 알 수 없다는 것입니다.
그들은 때로는 7 개의 프로젝트를 중단하고 있다는 것을 모르고 문자열을 수정합니다.
이제 그들은 같은 것을 입력 this.Translate("Hello World")
하면 시스템이 나머지를 처리합니다.
나는 물론 그들을 강요 할 수는 this.Translate("Hello World","AwesomeApplication1")
있지만 많은 프로젝트에서 상당히 많은 리팩토링이 필요할 것 같습니다.
이 솔루션을 어떻게 제공 하시겠습니까? 개발자로서 번역에 "프로젝트 이름"을 어떻게 제공 하시겠습니까? 이것을 데이터베이스에 어떻게 저장 하시겠습니까?
중요 사항 : 번역 재사용은 중앙 집중식 데이터베이스의 요점이므로 번역을 통해 하나의 프로젝트로 범위를 지정하십시오.
1|hello-world|nl-BE|Hallo Wereld|MyAwesomeApplicatoin1
5|hello-world|nl-BE|Hallo Wereld!|MyAwesomeApplicatoin2
실제로 원하는 옵션이 아닙니다.
나는 다음과 같은 것을 선호한다 :
1|hello-world|nl-BE|Hallo Wereld|MyAwesomeApplicatoin1,MyAwesomeApplicatoin2
또는 테이블에 이름을 넣는 것과 동등한 외래 키.
최신 정보
데이터베이스 정규화에 대한 조언을 바탕으로 지금까지 다음과 같은 것을 생각해 냈습니다.
//this allows me to distinquish if translations where added by developer or by translator
UPDATE2 : 텍스트 대신 edmx를 추가했습니다. 사람들이 관심이 있다면 WCF 프로젝트를 github 할 수 있다면이 개념을 포장하여 다른 사람들이 테스트하고 사용할 수 있습니다.