问题标签 [symfony-translator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4499 浏览

php - 如何使用 Symfony 4 更改用户区域设置?

我正在尝试使用 Symfony 从数据库中的“区域设置”字段更改用户区域设置。我阅读了 Symfony 手册(例如如何粘贴会话),但在我的应用程序中没有任何作用。翻译器仍然获得默认语言环境...

我创建了侦听器、订阅者...以动态更改语言环境,但是由于它们是在防火墙侦听器之前加载的,因此我无法更改当前值。

我试图更改优先订阅者,但我丢失了用户实体。我试图在控制器中设置语言环境请求,但我认为为时已晚。

我不想在 URL 中添加语言环境。

这是我的订阅者 - 听众 - 代码:

在订阅者中,我添加了:

在这里,我的完整代码:

框架.yml:

服务.yml:

翻译.yml:

LocaleSubscriber.php:

UserLocaleSubscriber.php

前控制器注释:

0 投票
0 回答
414 浏览

symfony - Symfony 4 - 未检测到 Twig 过滤器“trans”

我有一些树枝文件,在里面我使用了 trans 过滤器,不幸的是我得到了类似的错误

未知的“反式”过滤器。

当我跑步时

bin/console 调试:twig --filter trans

我可以在那里看到过滤器,甚至可以看到我的自定义“trans2”过滤器,这给了我与 trans2 过滤器未知相同的错误。

我正在运行安装了 api-platform 的 symfony 4。

如果有帮助,其他过滤器(如“raw”)正在工作。

我的 twig.yaml 配置

我的整个 symfony 都是自动装配的,我使用自动装配初始化了 twig:


我发现如果我使用 $this->container->get("twig") 而不是控制器操作参数,它就可以工作。有没有办法让它以某种方式与控制器动作参数一起工作?我试图找到一些我认为可能有用的 TwigInterface 或 TemplatingInterface,但我没有找到。

0 投票
2 回答
381 浏览

forms - Symfony 5:翻译表单错误

我工作的网站是用法语(FR)开发的,我最近开发了多语言方面来翻译英语(EN)网站,为此,我使用了翻译包。这是我的配置文件:

翻译.yaml

服务.yaml

我还创建了一个messages.en.xlf文件,其中将我所有的海关信息从法语翻译成英语,并且它可以工作。这是我的问题:我想翻译所有默认表单错误。

我的默认语言环境表单:FR

我的默认语言环境 EN 表单

已检测到语言更改并已翻译标题。但我的错误信息还是一样。我能做些什么呢?我是否必须使用一些 JS 手动翻译所有显示的消息?谢谢。

0 投票
0 回答
91 浏览

symfony4 - Symfony 4 default_locale 不适用于安全库消息

我正在构建单语言 Symfony (v4.4.7) 应用程序。正如我从文档中了解到的那样,我需要设置

在 config/packages/translation.yaml 中更改整个应用程序中的语言。

使用上述自定义翻译的配置正在工作!然而,Symfony 安全库仍然以英文显示消息(例如Invalid credentials.,当用户密码不正确时)。删除default_path: '%kernel.project_dir%/translations'线没有帮助。我尝试将其更改default_locale为其他语言仍然是相同的结果。

编辑 1 更多细节:翻译目录的内容: 在此处输入图像描述

messages.tr.yaml包含以下几行:

我删除了的内容messages.tr.yaml并再次尝试,但它仍然无法正常工作。其他tr翻译文件不包含security关键字

0 投票
1 回答
163 浏览

php - 指定源语言,如果 default_locale 不是英语

我正在为一位法国客户开发一个网站。我的translations.yml样子是这样的:

我用英文写所有东西,然后运行这个命令:

它生成.xlf具有以下参数的文件:

它按预期工作。

我也想将登录页面设为法语。当用户尚未登录时,访问该页面,因此default_locale使用。

default_locale改为fr和。fallbacks_en

登录页面按预期以法语显示,但现在translation:update脚本已损坏。如果我运行它,生成的翻译文件有这些不正确的参数:

在用户未登录的情况下,如何使用不同的源语言进行翻译和页面的默认语言环境?或者在这种情况下是否可以使用用户代理的语言环境?

0 投票
0 回答
50 浏览

symfony5 - 为整个包设置 Symfony 翻译域

是否可以为整个包设置 Symfony 默认翻译域?默认情况下,捆绑包使用messages域,这显然会破坏 Symfony > 4 ( https://github.com/symfony/symfony/issues/40014 ) 中的翻译。如果整个捆绑包具有类似my-bundle.<Translation file extension>. 可以在translations/my-bundle.xliff.

或者您是否需要在此捆绑包中看到的{% trans_default_domain 'FOSUserBundle' %}每个文件中插入例如: https ://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/views/Registration/register_content.html.twig (此外,它还需要在每次调用控制器和服务中的翻译器之前设置)。.twig

最好这可以在某处的捆绑类中设置:

0 投票
0 回答
34 浏览

symfony - 有没有办法在翻译中获得 %count% 的绝对数量?

我正在尝试为日期时间间隔获取一个很好的格式化字符串。

基本上我的 %count% 为 -2 表示“两天前”,4 表示“4 天内”,0 表示“今天”,1 表示“明天”等等。

我的翻译字符串如下所示:

dateinterval: '{0} today|{1} tomorrow|{1} the day after tomorrow |{-1} yesterday|[2,Inf[ In %count% days|]-Inf,-2]%count% days ago'

这很好用,除了我在区间 ]-Inf,-2] 中有一个负号:

-3 天前 -43 天前

有没有办法让 %count% 成为翻译字符串中的绝对数字?

谢谢!

0 投票
1 回答
106 浏览

php - 使用嵌套关键字更新 Symfony 翻译文件

Symfony 支持翻译文件中的嵌套关​​键字,例如:

所以现在我可以使用这个:

或这个:

正如官方文档所说,一切正常。

但是,当我调用更新翻译文件的命令时,所有嵌套的关键字都将转换为:

我需要保留和正确生成嵌套关键字。因此,如果我在模板关键字symfony.is.greatsymfony.is.amazing调用命令中定义php bin/console translation:update --force en,我需要具有嵌套关键字的文件,正如我在第一个示例中提到的那样。

有可能吗?

0 投票
1 回答
104 浏览

php - Symfony UseLocaleSubscriber 和 InMemoryUser

UserLocaleSubscriber从 Symfony 文档中获得了用户切换语言环境的信息。但是我的管理员用户存储在“内存中”,并且InMemoryUser该类没有该getLocale()方法。

我如何才能仅为用户User实体运行此订阅者。我试过isGranted()但无法让它工作。

0 投票
1 回答
63 浏览

symfony - 翻译加载器的优先级

我使用 2 种不同的加载器进行 symfony 翻译:

  • Yaml 基本加载器(已经实现)。
  • 将翻译保存到数据库表中的自定义加载程序。

第一个加载器用于开发人员目的(当代码显示在 localhost 中时进行翻译,而无需维护数据库)。第二个是用于舞台/生产环境。基本上,PO 正在使用这个解决方案,开发人员不必为了更改一两个翻译而触发所有 CI/CD 流程。

所以,我们在两个加载器中有相同的键。如果表中存在翻译键,我希望数据库Loader优先显示,否则yaml Loader带头。

不幸的是,我可以显示某些键的数据库翻译,但是,由于我有多个用于翻译的 yaml 文件,其中一些不会被覆盖。

是否可以在 Symfony 4 中设置默认加载器或定义优先级?如果是,如何?

如果不是,我们是否可以轻松地强制按特定顺序加载所有翻译文件,以确保最后加载的文件是 db 文件?