大家好。
在我大约一周前进行的更新之后,用户个人资料页面上出现了如下的按钮显示问题。我曾以为可以在接下来的几天进行的更新中修复它,并且虽然我进行了持续的更新,但问题并未得到改善。
您是否尝试过使用其他浏览器或隐私浏览/无痕标签页?
感谢您的关心。
我在 4 种不同的浏览器和移动设备上都试过了。我可以明确地说,它不起作用。
那么您可能已经尝试过安全模式了。
我认为这与以下内容有关:
我能够重现土耳其语中“preferences”字符串损坏的问题。在更新之前,我自定义了 js.user.preferences,更新后,新的 js.user.preferences.title 出现了问题。
然后我运行了:
TranslationOverride.where(translation_key: "js.user.preferences").delete_all
TranslationOverride.send(:reload_locale!)
这解决了问题 ![]()
不过,在生产环境上自行尝试之前,我会等待更有知识的人进行确认。
在生产环境中这样做安全吗?有人能指导一下吗?
论坛上的文本自定义不起作用。这不仅仅适用于这个区域。
TL;DR:现有的翻译覆盖项会粗鲁地用新翻译覆盖过时的自定义翻译,导致类型问题。或者,在这里,未能将过时的翻译覆盖项更新为“过时”。
问题
我管理的论坛有一个 js.user.preferences 翻译的覆盖项。在此提交 此提交 之前,它是一个字符串,因此翻译覆盖项工作正常。
在此提交之后,该键变成了一个对象。但是,翻译覆盖项无法检测到键类型,而是直接将其覆盖为旧定义的字符串。这导致界面中该键的翻译丢失。
复现步骤
对于最新的论坛,这似乎需要手动插入一个过时的记录来触发
INSERT INTO translation_overrides
(locale, translation_key, value, created_at, updated_at)
VALUES
('en', 'js.user.preferences', 'test', current_timestamp, current_timestamp);
然后随机修改一个站点文本以触发更新
似乎不知何故,此覆盖项的状态未更新为“过时”
[5] pry(main)> TranslationOverride.last
TranslationOverride Load (1.2ms) SELECT "translation_overrides".* FROM "translation_overrides" ORDER BY "translation_overrides"."id" DESC LIMIT 1
=> #<TranslationOverride:0x00007f0b20a31e20
id: 18,
locale: "en",
translation_key: "js.user.preferences",
value: "test",
created_at: Tue, 23 Jul 2024 17:08:17.317404000 UTC +00:00,
updated_at: Tue, 23 Jul 2024 17:08:17.317404000 UTC +00:00,
compiled_js: nil,
original_translation: nil,
status: "up_to_date">
我已将您的修复程序移至之前的报告,以便将它们分组在一起。 ![]()
哇,我没看到这里有同样的 bug 报告()
我正在追踪它,但很奇怪,我认为这应该可以正常工作……我不知道这里发生了什么。
在生产站点上这样做应该是安全的。
(不过在尝试修改 rails console 之前请务必备份,因为意外可能会发生)
不过,如果所有文本自定义都不起作用,您确定这是同一个问题吗?
此问题已在最新更新中得到解决。(3.4.0.beta1-dev)
是的,我也确认该问题已在当前更新中得到解决。
此主题已在 14 小时后自动关闭。不再允许回复。












