为了在我的 JavaScript 文件中使用翻译,我实现了 willdurand/BazingaJsTranslationBundle .我完全遵循了 repository documentation :
我安装了包
composer require "willdurand/js-translation-bundle:@stable"
我注册了新的包
// ... new Bazinga\Bundle\JsTranslationBundle\BazingaJsTranslationBundle(),
我设置了路线
# app/config/routing.yml _bazinga_jstranslation: resource: "@BazingaJsTranslationBundle/Resources/config/routing/routing.yml"
我将语言环境添加到我的
<html>
标签<html lang="{{ app.request.locale }}">
我添加了三个 JavaScript 文件
<script type="text/javascript" src="{{ asset('bundles/bazingajstranslation/js/translator.min.js') }}"></script> <script type="text/javascript" src="{{ url('bazinga_jstranslation_js', { 'domain': 'MyBundle' }) }}"></script> <script type="text/javascript" src="{{ url('bazinga_jstranslation_js', { 'domain': 'validators' }) }}"></script>
...第一行调用包中的翻译器文件,第二行包含我的包中的翻译元素,第三行调用验证器元素。
我转储了翻译文件
php app/console bazinga:js-translation:dump
我在我的代码中包含了一些经过翻译的元素
Translator.trans('key', { "foo" : "bar" }, 'MyBundle');
奇怪的是:一切正常。但是当我注销并登录时,我没有将我路由到我的常规起始页面,而是路由到验证器路由 ( http://my.domain.tld/translations/validators
) 并显示该文件的内容:
(function (Translator) {
Translator.fallback = 'de';
Translator.defaultDomain = 'MyBundle';
// de
Translator.add("This value should be false.", "Dieser Wert sollte false sein.", "validators", "de");
// ...
})(Translator);
现在这里出了什么问题?我不认为我错误地配置了 bundle 。那么这是 bundle 的实际错误,还是我可能错误配置了 bundle ?
更新
我去掉这一行之后
<script type="text/javascript" src="{{ url('bazinga_jstranslation_js', { 'domain': 'validators' }) }}"></script>
我得到了同样的错误,但没有被路由到 http://my.domain.tld/translations/validators
我被路由到 http://my.domain.tld/translations/MyBundle
正在向我展示其内容。
最佳答案
这是一个安全问题:转储的 JS(和 JSON)翻译文件位于 /web/js/translations
文件夹中,因此应该被防火墙排除。但它们实际上是通过 /translations/
路由的。所以我必须在相应的 security.firewalls.dev.pattern
设置中添加 translations
路径:
# security.yml
security:
...
firewalls:
dev:
pattern: ^/(_profiler|_wdt|css|js|translations)
security: false
请注意,这不仅适用于 dev
环境,还适用于 test
和 prod
环境,因为
the name
dev
for the firewall is because it was meant to cover the profiler and the web debug toolbar initially. It was then extended to cover assets as well without being renamed in the standard edition.
关于javascript - 使用 willdurand/BazingaJsTranslationBundle 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23818005/