Zend_LocaleとZend_Translate

今回は、PHPアプリケーションを英語化するために、Zend_Localeと Zend_Translateを利用してみます。
(ZendFramework 1.11.11を使用)

<?php
// 翻訳ファイルのキャッシュを有効にします。
// 今回は、ファイルにします。
$frontendOptions = array(
        'lifetime' => 3600,     // 秒
        'automatic_serialization' => true,
);
$backendOptions = array();
$cache = Zend_Cache::factory(
        'Core',
        'File', 
        $frontendOptions,
        $backendOptions
);
Zend_Translate::setCache($cache);

// Localeを設定します。
// これによって、Zend_Dateで日付のフォーマットが変わります。
$locale = new Zend_Locale("en_US");
Zend_Registry::set('Zend_Locale', $locale);

// 翻訳ファイル
$langfile = "/your/path/en/language.xlf";
$adapter = new Zend_Translate(
        Zend_Translate::AN_XLIFF,   // 翻訳ファイルのフォーマット
        $langfile,               // 翻訳ファイル
        "en"                      // 言語
);

$adapter->setLocale($locale);

Zend_Registry::set('Zend_Translate', $adapter);
?>

XLIFF形式の翻訳ファイルの例は以下のようになります。

<?xml version="1.0" encoding="UTF-8"?>                                                                                  
<!DOCTYPE xliff PUBLIC "-//XLIFF//DTD XLIFF//EN" "http://www.oasis-open.org/committees/xliff/documents/xliff.dtd">
<xliff version="1.0">
    <file original="global" datatype="x-STR#"
        source-language="ja" target-language="en"
        product-name="xxxxxxx" product-version="1.0">
        <body>
            <group resname="Button">
                <trans-unit id="button1">
                    <source>保存</source>
                    <target>Save</target>
                </trans-unit>
            </group>
        </body>
    </file>
</xliff>

これで準備が整いました。

<?php
$adapter = Zend_Registory::get('Zend_Translate');
echo $adapter->_("保存"); 

?>

を実行すると、
Save
と表示されます。

また、

<?php
$date = new Zend_Date();
echo $date->toString(Zend_Date::DATE_MEDIUM);

?>

を実行すると、
Oct 27, 2011
のように英語圏での表記になります。
(Zend_Localeがja_JPの場合には、2011/10/27のように表示されます。)

The following two tabs change content below.

taira

Sofrware Engineer.

Comments are closed.