Questions tagged «templates»

2
什么是使用替换变量来编辑电子邮件模板的用户友好解决方案?
我正在一个系统上,我们依赖于许多“管理员/经理”通过数据库向用户发送电子邮件。关键功能之一是能够同时向多个人发送电子邮件,并提供与每个人相关的特定信息。另一个关键功能是能够手工制作电子邮件,因为每次都需要对电子邮件进行轻微修改,但是使用基本模板可以节省大量时间。 为此,我们有一个典型的“模板”解决方案,其中有一个看起来像这样的模板: Hello {{recipient.full_name}}, Your application to {{activity.title}} has been accepted. You have requested to participate on dates {{application.dates}}, in role {{application.role}} Blah blah blah 显然,我们遇到的问题是(如我们预期的那样),管理人员没有得到完整的“变量”构想,他们做了诸如覆盖它们的事情,这使得他们一次不能向一个人发送多个电子邮件。它们将不会被替换并且系统已损坏,甚至无法解释,例如“ Hello {{John}}”。 最大的问题是,与往常一样,这并没有降级为“管理员”部分,在该部分中,只有少数高级用户有权编辑自动发送的模板,并且期望他们知道自己在做什么。系统的每个用户都会遇到此问题。 显而易见的解决方案是在显示此模板以供用户编辑之前替换变量,但这在向多个人发送电子邮件时不起作用。 这似乎是一个相当普遍的问题,我们希望有人已经解决了它。 您是否见过任何地方/已创建/可以想到解决此问题的好方法? 更新资料 根据Daniel B的回答,我最终要做的是根据光标位置和代码中{{}}的位置来检测用户当前是“变量内”还是“变量外”。在内部,我在大文本区域下方显示了一小段文字,解释该文字将被替换,并且他们可以根据需要将其完全删除,但无法编辑。 我这样做onClick,onChange,onKeyDown,onKeyUp。对于“键”事件,如果我们位于变量内,则仅当keyCode是一些“导航”键之一时,我才返回TRUE。否则,我返回FALSE,这实际上防止了该变量的版本。 它不是完美的,但是它非常便宜,并且似乎有效。

1
隐式与显式接口
我想我了解编译时多态和运行时多态的实际限制。但是显式接口(运行时多态,即虚拟函数和指针/引用)与隐式接口(编译时多态,即模板)之间在概念上有什么区别。 我的想法是,提供相同显式接口的两个对象必须是相同类型的对象(或具有共同的祖先),而提供相同隐式接口的两个对象不必是相同类型的对象,并且不包括隐式对象他们俩都提供的接口可以具有完全不同的功能。 有什么想法吗? 并且,如果两个对象提供相同的隐式接口,那么还有什么原因(除了不需要动态分配带有虚拟函数查找表的技术好处等)之外,还有其他原因导致这些对象不能从声明该接口的基础对象继承而来。使它成为显式接口?换一种说法:您能给我一个例子吗,两个提供相同隐式接口的对象(因此可以用作示例模板类的类型)不应从使该接口显式的基类继承? 一些相关的帖子: https://stackoverflow.com/a/7264550/635125 https://stackoverflow.com/a/7264689/635125 https://stackoverflow.com/a/8009872/635125 这是使这个问题更具体的示例: 隐式接口: class Class1 { public: void interfaceFunc(); void otherFunc1(); }; class Class2 { public: void interfaceFunc(); void otherFunc2(); }; template <typename T> class UseClass { public: void run(T & obj) { obj.interfaceFunc(); } }; 显式接口: class InterfaceClass { public: virtual void …

2
使用gettext翻译更长的文本(视图和电子邮件模板)
我正在开发一个多语言的PHP Web应用程序,并且有很长的文本需要用gettext进行翻译。这些是电子邮件模板(通常很短,但仍然是几行)和视图模板的一部分(较长的描述性文本块)。这些文本将包括一些简单的HTML(强调的内容如粗体/斜体,可能是此处或此处的链接)。模板是捕获其输出的PHP脚本。 问题在于,gettext对于处理较长的文本似乎非常笨拙。长文本通常会比短文本具有更多的变化-我可以更改msgid并确保在所有翻译中都进行更新(msgid较长时可能需要大量工作,并且容易出错),或者我可以保留msgid保持不变,仅修改翻译(这会在模板中留下误导的过时文本)。另外,我也看到了反对在gettext字符串中包含HTML的建议,但要避免将单个自然文本分成很多块,这将是翻译和重组的更大噩梦,并且我也看到了反对的建议将gettext字符串不必要地拆分为单独的msgids。 我看到的另一种方法是完全忽略这些较长文本的gettext,并为每个语言环境在外部子模板中分离这些块,而只为当前语言环境包括一个。缺点是我将gettext .po文件和位于完全不同位置的单独模板之间的翻译工作分开了。 由于此应用程序将来会被用作其他应用程序的起点,因此我正试图提出长期最佳的方法。在这种情况下,我需要一些最佳实践建议。您如何实施类似案例?哪些结果可行,什么却是坏主意?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.