我有一个symfony项目,我已经浏览了我的树枝模板并添加了{% trans %}...{% endtrans %}
或在适当的位置添加{{ title|trans }}
等翻译。我还添加了一个messages.de.xliff文件,这对我尝试过的几个翻译工作非常有效。
有没有办法可以从xliff文件中获取字符串列表?我添加它时很难跟踪每个翻译。看起来它应该记录在某个地方的日志文件中获取翻译的失败,但我一直在谷歌搜索一段时间,找不到任何东西。
答案 0 :(得分:2)
您好试试以下可能会有所帮助。
https://github.com/schmittjoh/JMSTranslationBundle/blob/master/Resources/doc/index.rst
非常强大的工具,绝对能解决您的问题。
答案 1 :(得分: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;
}
答案 2 :(得分:0)
我的解决方案是覆盖Translator
和MessageCatalogue
类。
<强>译者:强>
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
类的受保护方法和属性。但比直接更改Symfony代码要好。
答案 3 :(得分:0)
我知道这是一个老问题,但我在这里张贴以防万一有人仍有同样的问题。
从Symfony 2.6开始,您将在Web调试工具栏中找到一个非常好的补充,它可以显示您缺少多少翻译。
通过单击它,探查器将显示缺失翻译的详细列表。
开箱即用,无需任何配置。
答案 4 :(得分:0)
通常,您应该能够通过debug:translation
使用Symfony命令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