2012-06-17 3 views
0

올바른 방향으로 밀어 넣기 만하면됩니다.여러 언어 js 파일을 PHP 파일에 포함

저는 PHP와 JavaScript로 다국어 웹 사이트를 구축하고 있습니다. 자바 스크립트 (AJAX)를 사용하여 설명/메시지를 데이터베이스에 보낼 때 사용자에게 성공 또는 오류 메시지를 표시해야합니다. 3 가지 언어를 사용하기 때문에 각 페이지에서 코드를 작성하고 PHP 언어 변수를 사용하여 성공/오류 메시지를 번역합니다.

모든 것이 잘 작동하지만 사용자가 페이지 소스를 살펴볼 때 웹 사이트에서 여러 가지 기능을 사용하고 있습니다.

그러나 PHP 언어 변수가 작동하지 않을 것입니다 :

은 내가 JS 파일에 모든 것을 포함 할 것이다.

다른 언어와 다른 JS 파일을 만드는 지금 내 마음에 오는 유일한 것은 : myjs_en.js

myjs_fr.js

myjs_nl.js

그리고 언어 검사 3 개의 파일 중 하나를 포함하여 사용자가 선택했습니다.

아니면 여기에 사용할 수있는 다른 옵션이 있습니까?

도움 주셔서 감사합니다.

답변

3

아마도 서버 측에서 언어 지원을 제공하는 것이 가장 좋을 것입니다. 원하는 경우 Zend_Framework의 Zend_Translate 구성 요소를 독립 실행 형 라이브러리로 사용할 수 있습니다.

문서에 따르면.

"다국어 애플리케이션에서 콘텐츠를 사용자의 언어에 따라 여러 언어 및 표시 내용으로 변환해야 PHP는 이러한 문제를 처리하기 위해 이미 여러 가지 방법을 제공합니다, 그러나 PHP 솔루션을 가지고 몇 가지 문제 :

  • 일관성 API :.. 다른 소스 형식에 대해 단일 API는 예를 들어, gettext에의 사용은 매우 복잡하지가

  • PHP는 gettext와 native array만을 지원합니다 : PHP는 array 나 gettext만을 지원합니다. 네이티브 지원이 없으므로 다른 모든 소스 형식을 수동으로 코딩해야합니다.

  • 기본 언어가 탐지되지 않음 : 다른 웹 브라우저에 대한 배경 지식이 없으면 사용자의 기본 언어가 감지되지 않습니다.

    Gettext는 스레드로부터 안전하지 않습니다. PHP의 gettext 라이브러리는 스레드로부터 안전하지 않으며 다중 스레드 환경에서는 사용하지 않아야합니다. 이는 PHP가 아닌 gettext 자체의 문제점으로 인해 발생하지만 기존 문제입니다.

Zend_Translate에는 위와 같은 문제가 없습니다. PHP의 기본 함수 대신 Zend_Translate를 사용하는 것이 좋습니다.Zend_Translate의 장점은 다음과 같습니다

  • 여러 소스 형식을 지원합니다 Zend_Translate는 PHP에서 지원하는 등 여러 가지 소스 형식과 TMX 및 CSV 파일을 포함한 다른 형식을 지원합니다.

  • 스레드 안전 gettext : Zend_Translate의 gettext 판독기는 스레드로부터 안전합니다. 멀티 쓰레 디드 환경에서 사용하는 데 문제가 없습니다.

  • 쉽고 일반적인 API : Zend_Translate의 API는 매우 간단하며 몇 가지 기능 만 필요합니다. 따라서 쉽게 배우고 유지하기 쉽습니다. 모든 소스 형식은 동일한 방식으로 처리되므로 원본 파일 형식이 Gettext에서 TMX로 변경되면 저장소 어댑터를 지정하기 위해 한 줄의 코드 만 변경하면됩니다.

  • 사용자의 표준 언어 검색 : 사이트에 액세스하는 사용자의 기본 언어를 감지하여 Zend_Translate에서 사용할 수 있습니다.

  • 자동 소스 감지 : Zend_Translate는 디렉토리 나 파일 이름에 따라 사용하는 로케일을 감지하고 여러 소스 파일을 통합하고 추가로 감지 할 수있다 "

+0

감사 Cillosis 도와 불행하게도 난.. 프로젝트가 이미 완료되었으므로 .JS 파일을 포함시키고 모든 페이지에 삽입하지 않기를 바란다. 그러나 다음 프로젝트에서이 구성 요소를 사용하기 시작한다. – moonwalker

+1

아마도 뭔가 템플릿 엔진과 같은 것이 더 좋을 것입니다. 자바 스크립트 내에서 PHP 변수를 사용하고 필요한 파일을 출력 할 수있게 해줍니다 : http : // stackoverflo w.com/questions/6004060/template-engine-both-for-js-and-php –

+0

좋은 아이디어. 고마워요! – moonwalker

관련 문제