2013-05-29 4 views
-1

여러 언어로 번역 할 필요가있는 CakePHP를 사용하여 웹 사이트를 만들고 있지만 로그인 한 사용자의 유형에 따라 언어마다 여러 구를 사용해야합니다. 이렇게하면 동일한 기능을 사용할 수 있지만 더 정식 또는 더 친숙한 언어로 복제하지 않아도됩니다.cakephp에서 언어마다 여러 구.

  • 유형 1 : 매우 간단한 예를 들어

    "고객", "구매", "쇼핑 카트"

  • 유형 2 : "클라이언트",
  • 을 "바구니" "구매"
  • 유형 3 : '사용자', '주문', '인보이스'

이러한 유형은 각각 여러 언어로 제공됩니다.

CakePHP에서 표준화 된 로컬 리 제이션 (내가 선택한 이유 중 하나!)/Locale/[lang]/LC_MESSAGES/디렉토리에 적절한 default.po 파일이 있으며 모두 잘 작동합니다. (ger가 일하기 위하여 deu 일 필요가 있던이 위치에주의 한 사용자에게 고맙다;)).

어플을 너무 많이 사용하기 전에 구문을 추가하여 예를 들어 설정할 수 있습니다. 언어는 프랑스어로 표현하고 유형 2로 표현합니다. 프레임 워크 외부에서이 작업을 수행했다면 언어 및 구문 키를 기반으로 올바른 문자열을 찾을 수있는 행렬 검색을 할 수 있지만 CakePHP의 현지화 작업을 수행하는 방법은 확실하지 않습니다.

현재 표준 __ ([문자열]) 규칙을 사용하고 있지만 개발주기의 초기 단계이므로 필요한 경우 변경하는 것이 간단합니다.

내가 ([문구] [문자열]) __d 사용을 고려했지만 플러그인으로 내 응용 프로그램을 작성하지 않고이를 설정하는 방법을 볼 수 없습니다 그리고 내가/로케일/

에 다시 같은 문제에있어

SO 또는 cakePHP 커뮤니티 사이트에 대한 내 검색 결과를 찾을 수 없었으므로 제안 사항에 대해 감사하게 생각합니다.

cakePHP에서 이것을 수행하는 표준 방법이 있습니까? 그렇지 않다면 이것을 구현하는 좋은 "우수 사례"방법은 무엇입니까?

편집 - 여기 아래의 대답 다음은이 구현 방법은 다음과 같습니다

가/응용 프로그램/로케일/[랭]에서/LC_MESSAGES는/내가 phrase1로의 새로운 말씨와 새와 .po 파일을 만들었습니다. 포, phrase2.po 등

나는 또한 구문 파일이 포 파일의 이름과 일치하는 말씨 설정된 언어 설정 :

Configure::write('Config.language', 'deu'); 
Configure::write('App.langDomain', 'phrase1'); 

을 모든 문자열로 포장했다 :

__d(Configure::read('App.langDomain', 'string') 

그리고 그냥 작동합니다. 이 같은

+0

내가 왜 이것이 투표에 실패했는지에 대한 피드백을 보내 주시면 감사하겠습니다. 질문이 명확하고 복제본을 찾을 수 없다고 생각합니다. 미리 감사드립니다. – Yssybyl

답변

0

사용 __d은() : bootstrap.php에서

는 조건을 확인하고 당신이 필요로하는 무엇을 기준으로 App.langDomain 설정합니다.

__d()는 플러그인과 아무 관련이 없으며 어디에서나 사용할 수 있습니다.

그리고 대안은 배열이 langDomain => stringForThatDomain 매핑의 배열입니다

__dd(Configure::read('App.langDomain'), array('foo' => __('String1', 'bar' => __('String2')); 

처럼, 사용자 정의 방식으로 뭔가를 당신의 번역을 마무리하는 것입니다. __dd() 메서드는 첫 번째 인수에서 전달 된 메서드를 사용합니다.

+0

많은 감사합니다 - "그냥 일할"간단한 뭔가가있을 줄 알았습니다 :). – Yssybyl

+0

@Yssybyl'__d (..)'를 사용하여 모든 문자열에 대해 도메인을 설정하지 않으려면 기본 도메인을 변경할 수도 있습니다. 예 : 'I18n :: $ defaultDomain = '내 도메인'; – thaJeztah