2012-10-20 24 views
5

Phalcon çok dilli web siteleri için herhangi bir tesis sağlar mı?Tercüme merkezi Phalcon

MVC phalcon tabanlı bir site geliştirmek için en iyi uygulama nedir? Görünüm katmanını nasıl uygulamalıyım?

cevap

4

Bu örnek uygulama, (https://github.com/phalcon/php-site) phalcon kullanılarak tercüme uygular.

+0

Pletcon mimarisinde gettext'i nasıl kullanabilirim? – PHPst

+0

Sizin için bir örnek oluşturmama izin verin – twistedxtra

+0

Ancak, gettext'in iş parçacığı güvenli olmadığını unutmayın, eğer Apache ile uygulamayı çalıştırıyorsanız, sorunlarınız olabilir – twistedxtra

2

Phalcon, I18n işlevselliğini sunmamaktadır. intl adı verilen bu tür bir işlev sunan bir PECL uzantısı vardır (bkz. manual). farklı dillerde web sitesi sunulması çoğunlukla ilgileniyorsanız

Ancak,

\Phalcon\Translate\Adapter\NativeArray 

bileşeni kullanabilirsiniz. Bu bileşen, dil farkında dizeleri içeren bir dizi anahtar/değer kullanır. Mesela, config kullanabilirsiniz:

$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%)', 
        ), 
       ); 

Bir test yukarıdaki kullanım olduğunu göstermeleri:

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' 
    ); 
} 

yukarıda sadece tutucu değişkenleri ile mesajlar tercüme alabilirsiniz gösterir. Farklı bir dilde bir dize almak için, çeviricideki _()'u ilgili anahtar ile çağırırsınız ve hiçbir değişken geçmez.

EDIT Görünümde istediğiniz gibi çalışabilirsiniz. Görünüm katmanında görüntülenen değişkenleri ayarlayabilir veya çeviri nesnesini iletebilir ve çeviriyi orada gerçekleştirebilirsiniz. Sana bağlı.

HTH

+0

Teşekkürler, Hangi başka adaptörleri kullanmayı planlıyorsunuz? Bu dizileri yaratmak ve kullanmak biraz endişeli, ayrıca '_ (' x ', array (' 1 ',' 2 ')) 'nin ek olarak kullanabileceği daha iyi olurdu. _ (' X ', array (') bir '=>' 1' , 'b' => '2')) '. Görünümler aracılığıyla erişilmesi gereken bir hizmet adı oluşturmak iyi bir iş midir? – PHPst

+0

Gettext yerine '\ Phalcon \ Translate \ Adapter \ NativeArray' kullanmanın artıları ve eksileri nedir? – PHPst

+0

Re Gettext çok küçük, çoğunlukla performans ve tercih tabanlı. Performans aslında çok büyük bir sorun değil. –