如何高效替换网站文本?

我阅读到,唯一能够获取所有需要替换文本的方法是使用站点文本设置,然后逐一替换。我试图更改措辞:

Topics → 话题
Categories → 版块
Subcategories → 子版块

因为这样更符合我对留言板的理解。我能够用站点文本更改很多内容,但这是一种非常低效的方法。还有其他方法吗?

(另外,由于它只返回前50条结果,我实际上也无法用站点文本全部更改。)

如果你想坚持这一点(而且你在这里提问时,是会用你的语言还是我们的语言?),你可以查看 discourse/config/locales/client.en.yml at main · discourse/discourse · GitHub 并查看所有这些。

3 个赞

这是否能派上用场,取决于您是否可以使用第三方插件?

哈哈,我会用你的语言让事情保持理智!关于这个文件,我可以只更改它的内容,然后在本地安装中更改的内容会在整个网站上生效吗?

哦,谢谢你的分享。我担心会根据评论破坏界面元素……

1 个赞

这主要是让你看看它们都是什么。

你可以编辑那个文件,然后想办法将你的版本复制到容器中的那个文件里面。

你还可以编辑它,然后试图通过API更新数据库中的内容。或者你也可以在Rails中操作。实际上,让一些AI写一个脚本来执行这些更新可能并不太难。

我真的不推荐这样做,但这可能挺有趣的。

所以你的意思是,这个文件是应用程序用来填充数据库的实际值的?也就是说,这是系统读取的"默认值"?

不,我不这么认为。

这不会命中数据库(我认为这会太慢)。

我相信大部分本地化内容都是在内存中处理以提高速度的,使用 Redis 作为缓存(如果我说错了,请纠正我)。

唯一存储在数据库中的是您的修改(在 translation_overrides 表中),当您初始化应用程序时会读取这些修改,或者在您在线进行单个修改时会逐个读取。

我只想指出几点:

  • 显著增加修改数量可能会延长您的应用程序初始化时间(我不确定是否有人对此进行过基准测试)。
  • 随着 Discourse 的发展但保持其自身的命名法,这些可能会成为维护上的麻烦。您在这里是在给自己制造额外的工作。
  • 鉴于它现在可以说是最受欢迎的论坛平台,很多人已经在使用至少一个 Discourse 站点,并且非常习惯于其命名法,所以请考虑不要通过将用户已经习惯的东西改回先前的规范来混淆他们?

另请参阅:

这暗示每个 Category 都有自己的管理员、URL、设置、目的……例如,Meta 是一个论坛。它不是由几个论坛组成的……我真的不确定你怎么争辩?但离题了。

不。

是的。

所以如果你想改变它们,这是一个糟糕的主意,你可以编辑那个文件,把它放在 /var/discourse/shared/standalone/whatever

然后将一个 exec 添加到 app.yml 中,将它从 /shared/whatever 复制到 /var/www/discourse/config/locales/

但你还需要关注提交,看看它是否曾被更改过,以便你可以添加任何被更改的内容。

所以,通过 API 或 rails 的方式将值放入数据库可能更好。

恭敬地说,你们不了解我的用例。说它是一个“糟糕的想法”或者我可能会损害用户体验,而不知道为什么我要这样做,假设我是出于无知。我不想就分类法或用户体验进行辩论。对于我的用例和受众,Discourse用来描述其内容类型的术语没有意义。

所以总结一下:

  • Discourse读取这个文件以默认填充其标签;我在翻译中所做的任何更改都会覆盖它,并最终保存在数据库中。因此,最有效的方式是修改这个文件并将其移动到 /locales/ 文件夹中。
  • 看起来唯一的担忧是这个文件是否会被核心更新。我假设任何新的文本会从 /standalone/ 版本的文件读取,而不是我的那个,所以我需要更新我的文件以适应这种变化。我不确定在这种情况下性能是否会成为问题,因为数据库不涉及,只是从文件中读取?

谢谢。

1 个赞

这是一种方法。您需要编辑您的 app.yml 以便在每次构建新容器时都这样做。

如果您按我上面描述的方式操作,您的版本将覆盖当前版本随附的版本。 locales 目录中的版本是我认为您所说的“独立版本”。所以,如果您这样做,该文件最终会缺少东西,除非您留意它何时发生变化。不过,最糟糕的情况是,您只会看到缺失内容的名称,所以也许您不在乎。它不会崩溃,只会看起来令人困惑。

我说这是一个坏主意,因为这些东西如果您不理解可能会引起问题,所以当它最终变成一场灾难时,我已记录在案,我并不推荐我告诉您如何做的那些更改。

1 个赞

你可以在 app.yml 中发出一堆 sed 命令来自动化更新。

这样你可能会更“容错”一些。

如果你只更改大约20个条目,那就在管理员在线操作吧!

有趣的挑战!

1 个赞

谢谢你的提示!

看起来我通过网站文本获取了大部分(如果不是全部的话)面向公众的引用。但如果我开发出更全面的方法,我会记住这一点。

2 个赞

说得好!这肯定比我建议的覆盖整个文件要好……只要那些 sed 操作不改变文本的名称!

1 个赞

是的,需要仔细查看差异!:sweat_smile:

1 个赞