Orchardcms 在Orchard CMS中重写字符串的最佳实践是什么?

Orchardcms 在Orchard CMS中重写字符串的最佳实践是什么?,orchardcms,Orchardcms,我经常会遇到这样的情况:Orchard CMS中的特定租户和主题需要更改来自不同模块或核心功能的特定字符串的措辞 例如,我可能有一个客户希望购物车结帐按钮显示“立即结帐”,而不是“转到结帐”,后者是购物模块视图中包含的字符串 我可以简单地在我的主题中覆盖razor视图并更改字符串,但是视图通常非常复杂,而且仅仅更改一个字符串来覆盖视图是不对的 我尝试过的另一种方法是在我的主题中定义一个po翻译文件,以覆盖模块中的字符串。这是因为模块中的字符串是使用T()语法定义的。但是,我注意到,一旦我在我的主

我经常会遇到这样的情况:Orchard CMS中的特定租户和主题需要更改来自不同模块或核心功能的特定字符串的措辞

例如,我可能有一个客户希望购物车结帐按钮显示“立即结帐”,而不是“转到结帐”,后者是购物模块视图中包含的字符串

我可以简单地在我的主题中覆盖razor视图并更改字符串,但是视图通常非常复杂,而且仅仅更改一个字符串来覆盖视图是不对的

我尝试过的另一种方法是在我的主题中定义一个po翻译文件,以覆盖模块中的字符串。这是因为模块中的字符串是使用T()语法定义的。但是,我注意到,一旦我在我的主题中定义了一个字符串覆盖,这个覆盖就会影响所有租户,而不仅仅是启用了这个主题的一个租户。我倾向于认为模块/主题中的翻译应该被租户忽略,因为他们没有启用

所以我想知道这个场景的最佳方法是什么


如果租户忽略了未启用主题中的po文件,本地化/po文件方法就可以了,但是,如果core中有一个模块或功能,允许您通过管理界面指定字符串覆盖,那就太好了。我想这更像是一个“重写”任务,而不是一个“翻译”任务。

实现这一点的首选方法是通过模板覆盖。如果不想这样做,实际上可以分解形状,并将渲染委托给更容易覆盖的较小模板。这是通过简单地将模板中希望能够单独重写的部分重构为单独的模板来实现的。这篇文章解释了如何做到这一点:


如果您不愿意这样做,您可以使用此模块从数据库而不是po文件中获取字符串:应该可以修改它以适合您的sceanrio。

谢谢Bertrand。我不知道那个模块。乍一看,它似乎适合我的目的。我真的只想让我的租户有一个简单的方法来重写字符串,而不必修改代码/主题。