2012-10-20 21 views
5

Czy Phalcon udostępnia dowolne narzędzie do wielojęzycznych stron internetowych?Ośrodek tłumaczeń w Phalcon

Co to jest najlepsza praktyka w tworzeniu witryny opartej na phalconie MVC? Jak powinienem zaimplementować warstwę widoku?

Odpowiedz

2

Phalcon nie oferuje funkcjonalności I18n. Istnieje rozszerzenie PECL, które oferuje tę funkcję, o nazwie intl (patrz manual).

Jednakże, jeśli jesteś zainteresowany głównie w prezentacji na stronie internetowej w różnych językach, można użyć komponentu

\Phalcon\Translate\Adapter\NativeArray 

. Ten składnik wykorzystuje tablicę kluczy/wartości, które zawierają ciągi zawierające język. Na przykład można użyć tego w config:

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

test wykazać powyższe użycie jest:

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

Powyższy tylko pokazuje, w jaki sposób można uzyskać tłumaczone wiadomości ze zmiennymi zastępczymi. Aby uzyskać ciąg znaków w innym języku, wystarczy zadzwonić pod numer _() za pomocą odpowiedniego klucza i nie przekazać żadnych zmiennych.

EDYTOWANIE W widoku możesz pracować tak, jak lubisz. Możesz ustawić zmienne, które są wyświetlane w warstwie widoku lub przekazać obiekt tłumaczenia i wykonać tam tłumaczenie. Zależy od Ciebie.

HTH

+0

Dzięki, Jaki inny adapter zamierzasz zaimplementować? Tworzenie i używanie takich tablic jest trochę rozwlekłe, także lepiej było, jeśli można użyć '_ ('x', array ('1', '2'))' oprócz '_ ('x', array (' a '=>' 1 ',' b '=>' 2 ')) '. Czy dobrze jest utworzyć nazwę usługi 't', do której można uzyskać dostęp za pomocą widoków? – PHPst

+0

Co to są plusy i minusy używania '\ Phalcon \ Translate \ Adapter \ NativeArray' zamiast Gettext? – PHPst

+0

Re Gettext jest bardzo mały, głównie na podstawie wydajności i preferencji. Wydajność w rzeczywistości nie jest wielkim problemem. –

2

Myślę, że najlepszym rozwiązaniem jest użycie Phalcon Gettext Adapter. Najważniejszą zaletą Gettext jest obsługa liczby mnogiej.