2013-10-29 1 views
0

를 참조하는 방법 : CakePHP의 번역 - 나는 다음과 같은 CakePHP의 기능을 사용하는 사이트 개발하고 있어요 언어

  • 하는 데이터베이스에 저장된 문자열
  • 을위한 행동을 번역 CTP 파일 정적 문자열

    • 와 .po 파일을

    문서를 읽었을 때 한 가지 확실한 점은 여러 위치에서 언어를 일률적으로 참조하는 방법입니다. 예를 들어 독일어 촬영

    , 무엇 ? 아래 대체 할 것이다 :

    을 CakePHP를 사용하는 포 파일 알 수 있도록 로케일을 설정

    Configure::write('Config.language', '?'); 
    

    내 생각

    DEU한다 po 파일의 경로

    /app/locale/?/LC_MESSAGES/default.po 
    

    내 생각

    As per the docs.

    $this->Post->locale = '?'; 
    

    예는 De_DE 만 표시로이 사람이 나를 혼란을 특정 언어로

    저장을 DEU된다. 자동으로 내 Config.language에 매핑 되나요?

    그렇다면이 매핑은 어디에서 찾을 수 있습니까? 케이크 1.3에서

    +1

    항상 정확한 CakePHP 버전을 언급하십시오! – ndm

    답변

    1

    , 나는

    /locale/ger/LC_MESSAGES/default.po을 찾습니다
    Configure::write ('Config.language', 'ger'); 
    

    을 사용했다; 뒤늦은 지켜 보았을 때, 당신이 지적했듯이 독일어에 대한 '공식'코드가 'deu'인 것처럼 잘못되었습니다. 그러나 적절한 하위 디렉토리에 있으면 언어에 대한 식별자를 사용할 수 있다고 생각합니다. 그러나

    setlocale (LC_TIME, 'de_DE'); 
        setlocale (LC_MONETARY, 'de_DE'); 
    

    setlocale에 사용에 대한 http://php.net/manual/en/function.setlocale.php에서 경고를주의 : 당신이 형식 번호, 날짜 등으로 로케일() 함수를 사용하고자 할 때

    흥미로운 부분이 발생합니다.

    ---

    당신은 로케일이 언어와 완전히 다른 무언가가 있음을 기억해야 Amendement. 로켈은 숫자, 시간, 돈을 형식화하고 문자열을 비교하고 정렬하는 방법을 지정합니다. 네, 로케일에는 번역에 사용되는 LC_MESSAGES 범주가 있습니다. 하지만 내 말을 들으세요.

    많은 국가에서 언어를 사용할 수 있으므로 모든 국가에서 번역을 사용할 수 있다고 생각됩니다. 그러나 당신은 빨리 문제를 겪습니다. 예를 들어, 영어는 영국, 미국, 캐나다 및 사소한 차이가있는 많은 국가에서 사용됩니다.그러나 을 인쇄하는 것은 다른 문제입니다. 미국은 월/일/년 형식을 사용하고 영국은 일/월/년을 사용합니다. 일부 국가에서는 필드 사이에 슬래시를 사용하고 다른 국가에서는 대시 또는 점을 사용합니다. 일부는 월이 아닌 숫자를 사용합니다. 등등.

    따라서 현지화는 특정 언어 인 에 사용됩니다. 그러나 하나 이상의 언어가 사용되는 국가가 있습니다. 이 때문에 현지화 문자열은 두 부분으로 나뉩니다. 첫 번째 부분은 언어이고 두 번째 부분은 국가입니다 (예 : de_BE, fr_BE, nl_BE 및 심지어 wa_BE).

    IMO 혼란스러운 부분은 메시지 번역도 로캘의 일부라는 것입니다. 예를 들어, 포르투갈어는 포르투갈과 브라질에서 사용되지만 다른 번역 파일 (pt_PT 대 pt_BR)을 보증 할만큼 충분히 다릅니다. 반면에 프랑스어는 99.99 %가 동일하지만 프랑스, ​​캐나다, 스위스, 벨기에, 룩셈부르크에 동일한 언어 파일을 복제하는 것이 다소 번거로울 수 있습니다. 따라서 대부분의 프로그래머는 다국어 사이트를 구축하고 국가를 하나로 묶을 때 '언어'파일을 결정합니다. CakePHP는 언어 파일과 로컬라이제이션과 비슷한 방식으로 접근합니다 (말장난이라면 ...).

    게시물로 돌아가려면 : 현지화에 관해 이야기하는 경우 'de_DE'스타일 문자열을 사용해야합니다. 단순히 언어에 대해 이야기 할 때, ISO 639 : 2의 3 글자 코드가 작동해야합니다. 또한 두 언어를 구분하는 데 도움이 될 수 있습니다.

    +0

    고맙습니다. 특히 로케일과 언어 간의 차별화에 대한 설명. – timstermatic