私はzend Framework2を初めて使用し、多言語統合を備えたサイトに取り組んでいます。組み込みライブラリと翻訳ファイルをどのように構成する必要があるか、ビューファイルからどのように呼び出すことができるかについての考えを教えてください
質問する
4760 次
1 に答える
13
ZF2 はすでに I18n ツールを統合しています。
統合する方法
module.config.php
'translator' => array(
'locale' => 'en_US',
'translation_file_patterns' => array(
array(
'type' => 'gettext',
'base_dir' => __DIR__ . '/../language',
'pattern' => '%s.mo',
),
),
),
ファイル *.mo
前の手順に従って、フォルダーを作成し、Poedit (シンプルで優れたアプリケーション)を使用してen_US.mo (たとえば) を追加します。
Module.php
public function onBootstrap($e)
{
$translator = $e->getApplication()->getServiceManager()->get('translator');
$translator
->setLocale(\Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']))
->setFallbackLocale('en_US');
}
rq: 個人的にはセッションを使用してロケールをストックしていますが、言語を使用した SEO が必要かどうかによって異なります
// session container
$sessionContainer = new Container('locale');
// test if session language exists
if(!$sessionContainer->offsetExists('mylocale')){
// if not use the browser locale
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
$sessionContainer->offsetSet('mylocale', Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']));
}else{
$sessionContainer->offsetSet('mylocale', 'en_US');
}
}
// translating system
$translator = $serviceManager->get('translator');
$translator ->setLocale($sessionContainer->mylocale)
->setFallbackLocale('en_US');
$mylocale = $sessionContainer->mylocale;
それの使い方
ビューで、次のように入力します。
<?php echo $this->translate("Translate that!"); ?>
探索するためのいくつかのリンク
于 2013-10-09T12:55:09.540 に答える