2

我有一个 symfony 项目,我在其中浏览了我的 twig 模板,并在适当的地方添加{% 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

我的解决方案是覆盖TranslatorandMessageCatalogue类。

译者:

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 回答
0

通常你应该能够debug:translation通过app/console.

像这样的东西:

$ php app/console debug:translation --only-missing <locale> <Bundle Name>

一个具体的例子是:

$ php app/console debug:translation --only-missing nl AppBundle

那将输出:

 ----------- ---------- ------------------------------------------------------------------------------------------------------- ------------------------------------------
  State       Domain     Id                                                                                                      Message Preview (nl)
 ----------- ---------- ------------------------------------------------------------------------------------------------------- ------------------------------------------
   missing    messages   Create a clean selection                                                                                Create a clean selection
   missing    messages   New Selection                                                                                           New Selection
   missing    messages   login.labels.geoserver_url                                                                              login.labels.geoserver_url
于 2016-07-08T08:59:37.330 回答
0

我知道这是一个老问题,但我在这里发帖以防万一有人仍然有同样的问题。

从 Symfony 2.6 开始,您会发现 Web 调试工具栏添加了一个非常不错的功能,可以显示您缺少多少翻译。

在此处输入图像描述

通过单击它,分析器将显示缺失翻译的详细列表。

开箱即用,无需任何配置。

于 2015-09-11T20:34:02.937 回答