将Symfony翻译传递给Symfony webpack Encore

Passing Symfony Translation to Symfony Webpack Encore(将Symfony翻译传递给Symfony webpack Encore)
本文介绍了将Symfony翻译传递给Symfony webpack Encore的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对于symfony,我使用translation、Twig和Webpack encore组件。

我可以用以下命令翻译前端小枝:

'my_key'|trans

我使用命令yarn encore dev生成Myapp.js,但PHP translation component在Javascript中无法访问。

我有很多东西要用javascript翻译。

php

遗憾的是,由于js不是由推荐答案处理的,扩展起来也不是由symfony处理的,因此您将无法访问js文件中symfony的翻译组件。

当您没有太多需要传递的翻译时,一种可行的解决方法是在twig模板内创建一个JS数据对象作为symfony应用程序的一部分,然后从js文件访问它。大致如下:

# inside your twig template, e.g. index.html.twig
{% block javascripts %}
    <script type="text/javascript">
    const TRANSLATION_MAP = {
        'my_key': "{{ 'some_key '|trans }}",
        'my_other_key': "{{ 'other_key '|trans }}"
    };
    </script>

    {{ parent() }} # This loads all your js files which can then access the translation map defined above
{% endblock %}

此解决方案的缺点是,您必须决定将哪些键放入您的转换映射中,而实际上并不知道它们是否被使用,因此这可能会变得有点低效且难以遵循。此外,您还必须注意翻译后的内容是有效的json。您可以应用(自定义)转义/筛选来确保这一点,但仍会使其变得有点脆弱。

总而言之,这可能不是最好的解决方案,但对于较小的项目来说,这可能是一个不错的解决方案,直到您发现它变得更加麻烦,并且您必须找到更复杂的解决方案。

这篇关于将Symfony翻译传递给Symfony webpack Encore的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Update another component when Formik form changes(当Formik表单更改时更新另一个组件)
Formik validation isSubmitting / isValidating not getting set to true(Formik验证正在提交/isValiating未设置为True)
React Validation Max Range Using Formik(使用Formik的Reaction验证最大范围)
Validation using Yup to check string or number length(使用YUP检查字符串或数字长度的验证)
Updating initialValues prop on Formik Form does not update input value(更新Formik表单上的初始值属性不会更新输入值)
password validation with yup and formik(使用YUP和Formick进行密码验证)