2012-10-20 2 views
5

팔콘은 다국어 웹 사이트를위한 시설을 제공합니까?팔콘의 번역 시설

MVC 팔콘 기반 사이트를 개발하는 가장 좋은 방법은 무엇입니까? 뷰 레이어는 어떻게 구현해야합니까?

답변

4

이 샘플 응용 프로그램 (https://github.com/phalcon/php-site)는 Phalcon를 사용하여 변환을 구현한다.

+0

Phalcon 아키텍처에서 gettext를 사용하려면 어떻게해야합니까? – PHPst

+0

내가 당신에게 예제를 만들어 보자 – twistedxtra

+0

그러나 gettext는 스레드 안전하지 않다는 것을 기억하십시오. 아파치와 함께 애플리케이션을 실행하면 문제가 발생할 수 있습니다. – twistedxtra

2

팔콘은 I18n 기능을 제공하지 않습니다. 이러한 종류의 기능을 제공하는 PECL 확장은 intl (manual 참조)입니다. 당신이 다른 언어로 웹 사이트를 제시에 주로 관심이 있다면

그러나, 당신은

\Phalcon\Translate\Adapter\NativeArray 

구성 요소를 사용할 수 있습니다. 이 구성 요소는 언어 인식 문자열이 포함 된 키/값의 배열을 사용합니다. 예를 들어 당신은 당신의 설정이를 사용할 수 있습니다

$trans_config = array(
        'en' => array(
         'bye'  => 'Good Bye', 
         'song-key' => 'This song is %song% (%artist%)', 
        ), 
        'es' => array(
         'bye'  => 'Adiós', 
         'song-key' => 'La canción es %song% (%artist%)', 
        ), 
       ); 

테스트를 위의 사용이 입증 :

public function testVariableSubstitutionTwoEnglish() 
{ 
    $language = $trans_config['en']; 
    $params  = array('content' => $language); 
    $translator = new \Phalcon\Translate\Adapter\NativeArray($params); 

    $vars  = array(
     'song' => 'Dust in the wind', 
     'artist' => 'Kansas', 
    ); 
    $expected = 'This song is Dust in the wind (Kansas)'; 
    $actual = $translator->_('song-key', $vars); 

    $this->assertEquals(
     $expected, 
     $actual, 
     'Translator does not translate English correctly - many parameters' 
    ); 
} 

위는 당신이 자리 변수와 메시지를 번역 얻을 수있는 방법을 보여줍니다. 단순히 다른 언어로 문자열을 얻으려면 번역기에 _()을 해당 키와 변수가 전달되지 않은 상태로 호출하면됩니다.

편집보기에서 원하는대로 작업 할 수 있습니다. 뷰 레이어에 표시되는 변수를 설정하거나 변환 객체를 전달하고 거기에서 변환을 수행 할 수 있습니다. 너까지.

HTH

+0

감사합니다. 구현할 다른 어댑터는 무엇입니까? 그러한 배열을 생성하고 사용하는 것은 조금 어색하며, 또한 '_ ('x ', array ('1 ','2 '))'' a '=>'1 ','b '=>'2 '))'. 뷰를 통해 액세스 할 서비스 이름을 만드는 것이 좋은 일입니까? – PHPst

+0

Gettext 대신'\ Phalcon \ Translate \ Adapter \ NativeArray'를 사용하는 것이 장단점은 무엇입니까? – PHPst

+0

Re Gettext 매우 작음, 주로 성능 및 기본 설정을 기반으로합니다. 성능은 실제로 큰 문제가 아닙니다. –

2

가장 좋은 해결책은 Phalcon Gettext Adapter을 사용하는 것입니다. Gettext의 가장 중요한 장점은 복수형을 다루는 것입니다.