2014-12-20 4 views
1

백엔드 용 PHP 및 MYSQL을 사용하여 CMS를 만들었습니다. 문제는 사이트를 여러 언어로 사용할 수있게하려는 것입니다. 그래서 난 이미 CMS 자체를 번역하고 같은 파일에 넣어했습니다내 CMS 다국어 작성 방법

  • en.ini
  • nl.ini 관리처럼 CMS '내용 자체를 잘 작동

실제 문제는 웹 사이트를 더 번역하려고 할 때 발생합니다. blogposts 및 페이지는 데이터베이스에 저장되므로 동적입니다. 내 페이지 테이블의 구조는 다음과 같습니다 : I 예를 들어,로 페이지를 번역한다면

urlname | name | id | content | position | hidden | redirect | type | permission 

그래서, 네덜란드어, 나는 새 테이블을 생성하지 않으려는, 예를 들어 pages_nl라는 대부분 때문에 정보는 다른 표와 동일합니다.
페이지의 사용 가능한 언어가 포함 된 행을 추가하고 php가 배열을 읽고 현재 $lang이 페이지의 사용 가능한 언어 중 하나와 일치하면 구문을 분석 한 다음 content_nlname_nl 행을 예로들 수 있습니다.
내 블로그 게시물에 동일한 문제가 발생할 수 있으며 솔루션을 검색했지만 대부분의 결과는 특정 CMS 및 플러그인에 대한 것입니다.

번역 된 버전이없는 경우 언어를 동적으로 추가 할 수있는 다국어 페이지/게시물을 저장하는 가장 좋은 방법 (및 데이터베이스 구조)이 무엇인지 물어보고 있습니다.

+2

나는'language' 또는 다른 것으로 불리는 다른 컬럼을 추가 할 것이다. 언어 당 표가 아닙니다. 다른 CMS가 어떻게하는지보십시오. – putvande

답변

0

은 기본적으로 당신은

urlname | name | id | content | position | hidden | redirect | type | permission | lang 

지금 요청이 5 개 콘텐츠 요소와 페이지에 대한 제공 말할 수 데이터베이스에 LANG 키를 추가합니다. CMS는 먼저 특정 lang-code (예 : nl)의 항목을 검색합니다. 언어 코드가있는 항목을 찾지 못하면 기본 언어로 되돌아 가서 해당 항목을 가져옵니다.

보자는 내용 1, 3, 5를 번역 한 말 :

Content 1  Content 1 nl 
Content 2 
Content 3  Content 3 nl 
Content 4 
Content 5  Content 5 nl 

Result: 

Content 1 nl 
Content 2 
Content 3 nl 
Content 4 
Content 5 nl 

또 다른 방법은 (마 젠토는 그것을하는 것처럼) 템플릿 파일의 변환을 수행하는 것입니다.

"Hello, this is the " . $this->__("English") . " page" 

그리고 번역 파일 : 마 젠토에서 당신은 그런 일이있다. 예를 들어 lang.nl를 들어 :

"English", "Dutch" 

이 경우 당신은 단지 한 내용 요소가되지만 번역되어야 모든 요소를 ​​바꿈됩니다. 이는 이미지와 원하는 모든 작업에도 적용됩니다. 백엔드 RTE 편집기에서 작동하도록이 래퍼를 추상화 할 수도 있습니다. 예를 들어, Hello, this is the English page을 백엔드에 쓰고 English을 표시하고 번역 버튼을 클릭합니다. 이렇게하면 영어를 중심으로 태그가 추가되고 콘텐츠를 렌더링 할 때이 태그를 스캔하여 요청한 언어로이 문자열에 대한 번역을 찾으면이를 대체합니다.

+0

lang-key는 내 상황에서 가장 좋은 것처럼 보입니다. 훌륭한 해결책 인 것 같습니다! –