0

ZF2でWebアプリを開発しています。多言語ウェブサイトです。翻訳に ZF2 Translator を使用したいと考えています。管理者は言語変数を変更できるためです。そのため、言語フォルダー ファイルを使用する予定でした。管理者が言語変数を変更している間に、言語ファイルを更新します。誰でもこの実装のアイデアを提案できますか? ありがとう。

4

2 に答える 2

1

ユーザー入力に基づいて翻訳すると、少し面倒になることがあります。現在サポートされている形式はすべてファイル形式であるため、現時点では簡単な方法はありません。配列を含む php ファイル、gettext .po ファイル、または Tmx/Xliff ファイルです。最も簡単にアクセスするには、翻訳をデータベースに保存することをお勧めします。

したがって、データベースから翻訳をロードする独自のローダーを作成する必要があります。別の方法は、翻訳を php 配列に書き込んでファイルにエクスポートすることですが、それはお勧めしません。データベース ローダーの場合は、RemoteLoaderInterface. 非常に簡単に言えば:

use My\DbTable;
use Zend\I18n\Translator\Loader\RemoteLoaderInterface;
Zend\I18n\Translator\TextDoamin;

class DbLoader implements RemoteLoaderInterface
{
    protected $table;

    public function __construct(DbTable $table)
    {
        $this->table = $table;
   }

    public function load($locale, $textDomain)
    {
        $data = $this->table->loadFromLocale($locale);

        // process $data into $messages
        // $messages is array(key=>value) with key translation key

        $domain = new TextDomain($messages);
        return $domain;
    }
}

db テーブルは、指定したロケールでメッセージをロードします。テキスト ドメインを使用している場合は、それも渡します。Translator次に、このローダーを使用してメッセージをロードするように構成する必要があります。それ以外はすべて問題ないはずです。ビューでは、次のような翻訳を作成できます。

<?php echo $this->translate('my original text'); ?>
于 2013-01-11T21:51:33.733 に答える
0

SkeletonApp には翻訳サポートが組み込まれています。ただし、使用方法の詳細はマニュアルにも記載されています -> http://zf2.readthedocs.org/en/latest/modules/zend.i18n.translating.html

私は個人的にすべての言語ファイルを /language というフォルダーに保管しています

ビューでは、単に呼び出すこともできます

$this->translate('text_you_want_to_translate');
于 2013-01-11T18:25:09.533 に答える