이 기본 multilang 디자인 구현 문제가 있습니다.다국어 테이블 디자인 문제
content_id bigint(20) NOT NULL,
lang_id int(5) NOT NULL,
word varchar (500) NOT NULL,
created datatime,
표 함량은 이제 문제는이를 구현하는 것입니다. 나는 응용 프로그램에서 1,2,3,4,5와 같은 content_id로 페이지의 각 단어를 선언한다고 가정합니다. 1 = "Hello"2 = "Welcome to xxxxx"등등. 그래서 문제는 코드에서 "Hello"= 1을 제공하는 것입니다. 그래서 테이블에 그것은 1, 23 (영문), 안녕하십니까.
하지만 지금 스페인어 세션이있는 경우 테이블에서 "Hello"를 어떻게 찾을 수 있습니까? 왜냐하면 나는 코드에서 1을 "Hello"가되도록 하드 코드했기 때문에 시스템은 항상 이것을 찾아서 영어 텍스트를 찾습니다. 주위에 유일한 작품은 언어 당 별도의 테이블을 가지고하는 것입니다?
하나의 언어를 번역 된 "기본"언어로 사용하지 말고 대신 (언어 ID와 함께) 언어 항목에 매핑하는 ID (숫자 일 필요는 없습니다!)를 사용하는 것이 좋습니다. 예를 들어 홈페이지에 표시되는 Hello의 ID는 "homepage.greeting"입니다. – Paul
복합 PK는 데이터베이스 용이지만 코드에서 참조 할 필요가 있습니다. 코드에서이를 수행 할 수 없다는 것을 알고 있습니다. Hello = (1,1)을 선언 할 수 없다는 것을 말하지 않으면 코드에서 Hello = 1을 선언해야합니다. 이 스키마는 다음과 같은 용도로 사용할 수 있습니다. "언어 번역이 없으면 해당 단어의 영어로 기본 설정됩니다" – JonnyK
자, 정식 이름을 원하는대로 지정하십시오. 영어로 된 값을 쿼리하지 않아도됩니다. 원하는 언어 값을 사용하는 대신 개발자에게 익숙한 식별자가 포함 된 테이블에 참여할 수 있습니다. –