2011-11-06 3 views
1

다른 언어로 CMS에서 관리되는 콘텐츠를 제공하는 웹 사이트에 대한 내 접근 방식이 올바른지 알고 싶습니다.다국어 지원 구현 방법 ERM

페이지 자체 : 사람들은 여행 가이드로 경로를 예약 할 수 있습니다. 아주 간단합니다. 이제 회사는 다른 언어로 데이터베이스에 경로를 추가해야합니다.

기본적으로 경로를 만들고 다른 언어로 설명을 추가 할 수 있다고 생각했습니다. 그래서 기본적으로 루트 ID와 언어 코드가있는 별도의 테이블에 경로의 내용과 제목을 저장합니다.

당신은 어떻게 생각하십니까?

여기 MySQL Workbench에서 내 ERM 그림.

http://imageshack.us/f/194/witchrouteerm.png/

은 아무도 유사한 프로젝트를했고,이 방법은 문제가 발생합니다 또는 당신이 올바른 방법이라고 생각합니까 생각 했습니까? 나는 정말로 다른 방식을 생각할 수 없다. 나는 "lang_code"와 같은 추가 열을 경로에 제공하고 싶지 않습니다. 내가 여러 번 경로 자체를 만들 필요가있을 것입니다. 이것은 분명히 가능하지만 관리하기가 더 어렵고 날짜 설정과 관련하여 더 많은 시간이 소요됩니다.

다국어 지원에 대한 유사한 결정을 내려야하는 사람들의 의견을 기다리고 있습니다.

모든 최선을, 언어를 분리 리처드

답변

0

구체적인 설명은 일반적인 것입니다. 데이터 설명의 "로케일"은 사용자의 "로케일"과 일치해야합니다. ERD에서 사용자 테이블에는 두 개의 열 (국가 및 언어)이 있지만 콘텐츠 테이블에는 하나의 열 (lang_code) 만 있습니다. 당신은 그것들을 일관성있게 만들고 싶을 것이다. 언어와 국가라는 두 개의 열을 찾아 표준을 따르십시오. 모든 텍스트를 분리해야합니다 ("어려움"의 "제목"도 로케일과 동일해야합니까?)

표준은 사용자의 로케일을 결정하는 방법에 따라 다릅니다 (http Accept-Language 헤더? 사용자 입력?). 로켈은 2 자 언어 코드 (ISO 639) 및 2 자의 국가 코드 (ISO 3166)가 될 수 있습니다. 따라서 en_US, en_GB, en_CA, fr_CA, ...

경로에 미국 영어 설명이 항상 있어야한다는 비즈니스 규칙을 시행 할 수 있습니다. 그런 다음 사용자를 위해 선호하는 언어의 계층 구조를 가질 수 있습니다. 예를 들어 사용자의 환경 설정이 포르투갈 브라질 (pt_BR)로 정의되어 있지만 경로 설명이없는 경우 포르투갈 포르투갈 (pt_PT) 대신 포르투갈 포르투갈 (pt_PT)을 시도해 볼 수 있으며,없는 경우 영어 (미국)로 되돌릴 수 있습니다 en_US). 언어와 국가를 별도의 두 열로 유지하고 언어 그룹에 대한 기본 설명을 플래그로 표시하는 다른 필드를 도입하면 (즉, 다른 유사어가없는 경우 플래그 pt_PT가 기본 pt 언어로 표시됨) 이러한 종류의 작업을 좀 더 쉽게 만들 수 있습니다 수행 할.