2

私は symfony プロジェクトを持っており、小枝テンプレートを調べて、必要に応じ{% trans %}...{% endtrans %}て翻訳を追加または追加しました。{{ title|trans }}また、messages.de.xliff ファイルを追加しました。これは、私が試したいくつかの翻訳で完全に機能しています。

xliff ファイルにない文字列のリストを取得する方法はありますか? 追加するたびにすべての翻訳を追跡するのは非常に困難です。ログファイルのどこかに翻訳の失敗を記録する必要があるようですが、しばらくグーグルで調べてみましたが、何も見つかりません。

4

5 に答える 5

2

こんにちは 参考になるかもしれません。

https://github.com/schmittjoh/JMSTranslationBundle/blob/master/Resources/doc/index.rst

非常に強力なツールであり、間違いなく問題を解決します。

于 2012-11-08T14:12:53.700 に答える
1

これは、私が必要としているものを適用するのに非常にくだらないパッチvendor/symfonyです。おそらく本番サーバーでは実行しないでください!

diff --git a/src/Symfony/Component/Translation/MessageCatalogue.php b/src/Symfony/Component/Translation/MessageCatalogue.php
index b55676f..98a5cba 100644
--- a/src/Symfony/Component/Translation/MessageCatalogue.php
+++ b/src/Symfony/Component/Translation/MessageCatalogue.php
@@ -128,6 +128,8 @@ class MessageCatalogue implements MessageCatalogueInterface
             return $this->fallbackCatalogue->get($id, $domain);
         }

+        error_log('Translation not found: "' . $id . '"');
+
         return $id;
     }
于 2012-07-03T15:59:33.757 に答える
0

これは古い質問であることは承知していますが、誰かがまだ同じ問題を抱えている場合に備えて、ここに投稿しています。

Symfony 2.6 から、欠けている翻訳の数を示す Web デバッグ ツールバーに非常に便利な機能が追加されました。

ここに画像の説明を入力

それをクリックすると、プロファイラーは不足している翻訳の詳細なリストを表示します。

構成なしですぐに使用できます。

于 2015-09-11T20:34:02.937 に答える
0

Translator私の解決策は、 andMessageCatalogueクラスを上書きすることでした。

翻訳者:

class RegisteringTranslator extends \Symfony\Component\Translation\Translator
{
    protected function loadCatalogue($locale)
    {
        parent::loadCatalogue($locale);

        if ( ! $this->catalogues[$locale] instanceof RegisteringMessageCatalogue) {
            $registeringCatalogue = new RegisteringMessageCatalogue($locale);
            $registeringCatalogue->addCatalogue($this->catalogues[$locale]);
            $this->catalogues[$locale] = $registeringCatalogue;
        }
    }
}

カタログ:

class RegisteringMessageCatalogue extends \Symfony\Component\Translation\MessageCatalogue
{
    public function get($id, $domain = 'messages')
    {
        if ( ! $this->has($id, $domain)) {
            error_log('Translation not found: "' . $id . '"');
        }

        return parent::get($id, $domain);
    }

}

もちろん、新しい Translator クラスを使用する必要があります。

Translatorクラスの保護されたメソッドとプロパティを使用するため、あまり良くありません。しかし、Symfony コードを直接変更するよりはましです。

于 2012-10-18T13:32:00.347 に答える