问题标签 [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.
php - 如何使用 Symfony 4 更改用户区域设置?
我正在尝试使用 Symfony 从数据库中的“区域设置”字段更改用户区域设置。我阅读了 Symfony 手册(例如如何粘贴会话),但在我的应用程序中没有任何作用。翻译器仍然获得默认语言环境...
我创建了侦听器、订阅者...以动态更改语言环境,但是由于它们是在防火墙侦听器之前加载的,因此我无法更改当前值。
我试图更改优先订阅者,但我丢失了用户实体。我试图在控制器中设置语言环境请求,但我认为为时已晚。
我不想在 URL 中添加语言环境。
这是我的订阅者 - 听众 - 代码:
在订阅者中,我添加了:
在这里,我的完整代码:
框架.yml:
服务.yml:
翻译.yml:
LocaleSubscriber.php:
UserLocaleSubscriber.php
前控制器注释:
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,但我没有找到。
forms - Symfony 5:翻译表单错误
我工作的网站是用法语(FR)开发的,我最近开发了多语言方面来翻译英语(EN)网站,为此,我使用了翻译包。这是我的配置文件:
我还创建了一个messages.en.xlf文件,其中将我所有的海关信息从法语翻译成英语,并且它可以工作。这是我的问题:我想翻译所有默认表单错误。
已检测到语言更改并已翻译标题。但我的错误信息还是一样。我能做些什么呢?我是否必须使用一些 JS 手动翻译所有显示的消息?谢谢。
symfony4 - Symfony 4 default_locale 不适用于安全库消息
我正在构建单语言 Symfony (v4.4.7) 应用程序。正如我从文档中了解到的那样,我需要设置
在 config/packages/translation.yaml 中更改整个应用程序中的语言。
使用上述自定义翻译的配置正在工作!然而,Symfony 安全库仍然以英文显示消息(例如Invalid credentials.
,当用户密码不正确时)。删除default_path: '%kernel.project_dir%/translations'
线没有帮助。我尝试将其更改default_locale
为其他语言仍然是相同的结果。
messages.tr.yaml
包含以下几行:
我删除了的内容messages.tr.yaml
并再次尝试,但它仍然无法正常工作。其他tr
翻译文件不包含security
关键字
php - 指定源语言,如果 default_locale 不是英语
我正在为一位法国客户开发一个网站。我的translations.yml
样子是这样的:
我用英文写所有东西,然后运行这个命令:
它生成.xlf
具有以下参数的文件:
它按预期工作。
我也想将登录页面设为法语。当用户尚未登录时,访问该页面,因此default_locale
使用。
我default_locale
改为fr
和。fallbacks
_en
登录页面按预期以法语显示,但现在translation:update
脚本已损坏。如果我运行它,生成的翻译文件有这些不正确的参数:
在用户未登录的情况下,如何使用不同的源语言进行翻译和页面的默认语言环境?或者在这种情况下是否可以使用用户代理的语言环境?
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
最好这可以在某处的捆绑类中设置:
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% 成为翻译字符串中的绝对数字?
谢谢!
php - 使用嵌套关键字更新 Symfony 翻译文件
Symfony 支持翻译文件中的嵌套关键字,例如:
所以现在我可以使用这个:
或这个:
正如官方文档所说,一切正常。
但是,当我调用更新翻译文件的命令时,所有嵌套的关键字都将转换为:
我需要保留和正确生成嵌套关键字。因此,如果我在模板关键字symfony.is.great
和symfony.is.amazing
调用命令中定义php bin/console translation:update --force en
,我需要具有嵌套关键字的文件,正如我在第一个示例中提到的那样。
有可能吗?
php - Symfony UseLocaleSubscriber 和 InMemoryUser
我UserLocaleSubscriber
从 Symfony 文档中获得了用户切换语言环境的信息。但是我的管理员用户存储在“内存中”,并且InMemoryUser
该类没有该getLocale()
方法。
我如何才能仅为用户User
实体运行此订阅者。我试过isGranted()
但无法让它工作。
symfony - 翻译加载器的优先级
我使用 2 种不同的加载器进行 symfony 翻译:
- Yaml 基本加载器(已经实现)。
- 将翻译保存到数据库表中的自定义加载程序。
第一个加载器用于开发人员目的(当代码显示在 localhost 中时进行翻译,而无需维护数据库)。第二个是用于舞台/生产环境。基本上,PO 正在使用这个解决方案,开发人员不必为了更改一两个翻译而触发所有 CI/CD 流程。
所以,我们在两个加载器中有相同的键。如果表中存在翻译键,我希望数据库Loader优先显示,否则yaml Loader带头。
不幸的是,我可以显示某些键的数据库翻译,但是,由于我有多个用于翻译的 yaml 文件,其中一些不会被覆盖。
是否可以在 Symfony 4 中设置默认加载器或定义优先级?如果是,如何?
如果不是,我们是否可以轻松地强制按特定顺序加载所有翻译文件,以确保最后加载的文件是 db 文件?