0

volt テンプレートを使用して、Phalcon に多言語サポートを追加することができました。

しかし、ボルトで phalcon 多次元 NativeArray にアクセスできません。

ここに私の getTranslation 関数があります:

private function _getTranslation()
{
    global $config;

    if ( isset($config[$_SERVER['HTTP_HOST']]['language']) ) {
        $language = $config[$_SERVER['HTTP_HOST']]['language'];
    } else if ( $this->session->get('auth') ) {
        $language = "pt";
    } else {
        //Ask browser what is the best language
        $language = $this->request->getBestLanguage();
    }

    //Check if we have a translation file for that lang
    if (file_exists(__DIR__ . "/../translations/".$language.".php")) {
       require __DIR__ . "/../translations/".$language.".php";
    } else {
       // fallback to some default
       require __DIR__ . "/../translations/en-US.php";
    }

    //Return a translation object
    return new \Phalcon\Translate\Adapter\NativeArray(array(
       "content" => $messages
    ));
}

次に、変数を設定します。

$this->view->setVar("t", $this->_getTranslation());

次のような翻訳ファイルをロードします。

$messages = array(
"pages" => array(
    "index" => array(
        "title" => "CREATE YOUR ACCOUNT TODAY",
        "call_to_action" => "Join Now!",
        "search_title" => "Find:",
        "search_option" => "I Want To:",
        "search_type" => "Type:",
        "search_where" => "Located On:",
        "search_button" => "GO",
    )
);

ボルトテンプレートでは、次のようなものにアクセスしたいと思います

$t['pages']['index']['call_to_action']

ボルトで次のようになります。

<div class="call_to_action">{{ t._('pages').('index').('call_to_action') }}</div>

しかし、これはうまくいきません!

ボルト テンプレート内の NativeArray 多次元要素にアクセスする方法はありますか?

4

1 に答える 1