2012-10-20 5 views
5

ファルコンは多言語ウェブサイトのための施設を提供していますか?ファルコンの翻訳施設

MVC phalconベースのサイトを開発するためのベストプラクティスは何ですか?ビューレイヤーはどのように実装すればよいですか?

答えて

4

このサンプルアプリケーション(https://github.com/phalcon/php-site)はPhalconを使用して変換を実装しています。

+0

Phalconアーキテクチャでgettextを使用するにはどうすればよいですか? – PHPst

+0

あなたのための例を作成しましょう – twistedxtra

+0

しかし、Apacheでアプリケーションを実行している場合、gettextはスレッドセーフではないことに注意してください。 – twistedxtra

2

ファルコンはI18n機能を提供しません。 intlmanual参照)と呼ばれるこの種の機能を提供するPECL拡張があります。あなたが別の言語でウェブサイトを提示で、主に興味を持っている場合

しかし、あなたは

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

上記だけでは、プレースホルダ変数とメッセージを翻訳し得ることができます方法を示しています。単に異なる言語の文字列を取得するには、関連するキーと変数を渡さずに翻訳者の_()を呼び出します。

EDITあなたが好きなように作業することができます。ビューレイヤーに表示される変数を設定したり、変換オブジェクトを渡したりして変換を実行することができます。あなた次第。

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の最も重要な利点は複数形を扱うことです。