intro
Zend_Formを日本語対応してみます。ソースコードはこちらからダウンロードできます。
1.コントローラの作成
以下のように
preDispatch関数内のcsvファイルへのパスは環境に合わせて変更してください。
application/constorllers/IndexController.php
ファイルを作成します。preDispatch関数内のcsvファイルへのパスは環境に合わせて変更してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
<?php require_once 'Zend/Controller/Action.php'; require_once 'Zend/Form.php'; require_once 'Zend/Translate.php'; require_once 'Zend/Locale.php'; require_once 'Zend/Registry.php'; class IndexController extends Zend_Controller_Action { public function preDispatch() { $locale = new Zend_Locale(); $translate = new Zend_Translate('csv', '../application/msg_en.csv', 'en'); $translate->addTranslation('../application/msg_ja.csv', 'ja'); if (! $translate->isAvailable($locale->getLanguage())) { $translate->setLocale('en'); } else { $translate->setLocale('auto'); } Zend_Registry::set('Zend_Translate', $translate); } /** * This function returns the form used for * adding comments in blog application */ public static function getAddCommentForm() { $form = new Zend_Form(array( 'method' => 'post', 'elements' => array( 'comments' => array('textarea', array( 'required' => true, 'label' => 'Write your comments' )), 'submit' => array('submit', array( 'label' => 'Send' )) ), )); return $form; } public function indexAction() { $form = $this->getAddCommentForm(); if ($this->getRequest()->isPost()) { if ($form->isValid($_POST)) { $values = $form->getValues(); $this->view->values = $values; } } $this->view->form = $form; } } |
2.ビューの作成
以下のように
application/views/scripts/index/index.phtml
ファイルを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Zend Framework Quick Start</title> </head> <body> <h1 id="6__1" ><?= $this->translate('Basic Blog'); ?></h1> <?php if($this->values) : ?> <h3 id="6__2" > <?= $this->translate('You just submitted the following values'); ?>: </h3> <ul> <?php foreach ($this->values as $value) :?> <li> <?= $this->escape($value); ?> </li> <?php endforeach; ?> </ul> <?php endif; ?> <?= $this->form; ?> </body> </html> |
3.メッセージファイルの作成
以下のように
以下のように
application/msg_en.csv
ファイルを作成します。
1 2 3 4 5 |
Basic Blog;Basic Blog You just submitted the following values;You just submitted the following values Write your comments;Write your comments Send;Send isEmpty;Value is empty, but a non-empty value is required |
以下のように
application/msg_ja.csv
ファイルを作成します(*必ずUTF-8形式で保存してください*)。
1 2 3 4 5 |
Basic Blog;基本のブログ You just submitted the following values;以下のデータを送信しました Write your comments;コメントをどうぞ Send;送信 isEmpty;コメントを入力してください |