Home > Zend_Form > Zend_Formの使用(i18n)

Zend_Formの使用(i18n)

intro
Zend_Formを日本語対応してみます。ソースコードはこちらからダウンロードできます。

1.コントローラの作成
以下のようにapplication/constorllers/IndexController.phpファイルを作成します。
preDispatch関数内のcsvファイルへのパスは環境に合わせて変更してください。

<?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ファイルを作成します。

<!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) <img src='http://www.oplabo.jp/wp-includes/images/smilies/icon_confused.gif' alt=':?' class='wp-smiley' /> >
<li>
        <?= $this->escape($value); ?>
      </li>
 
      <?php endforeach; ?>
    </ul>
 
    <?php endif; ?>
    <?= $this->form; ?>
  </body>
</html>
3.メッセージファイルの作成
以下のようにapplication/msg_en.csvファイルを作成します。

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形式で保存してください*)。

Basic Blog;基本のブログ
You just submitted the following values;以下のデータを送信しました
Write your comments;コメントをどうぞ
Send;送信
isEmpty;コメントを入力してください

4.確認
Webサーバにアクセスしてみてください。ブラウザの言語設定に応じてメッセージが変わればOKです。
入力チェックのエラーメッセージも変わります。
日本語の画面例:

英語の画面例:

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://www.oplabo.jp/article/6/trackback
Listed below are links to weblogs that reference
Zend_Formの使用(i18n) from Open Programming Laboratory

Home > Zend_Form > Zend_Formの使用(i18n)

English
Search
Feeds

Return to page top