[英]Can a Domain Specific Language (DSL) be localized (i.e. translated)?
我从来没有写过 DSL,但我正在考虑将它作为一个新项目的特性(假设)。 最终用户将能够用自然语言概念来表达,例如10 到 11 之间的工作日(每月的第一个星期一除外) 。
荷兰用户可能会写weekdagen tussen 10 en 11 behalve op de eerste maandag van de maand 。 在这种情况下,单词的位置似乎匹配,但可能存在动词/名词等位置在语言之间不同的表达式。
我意识到显而易见的答案(这取决于)。 我是一名 .NET 开发人员,我考虑使用 Boo,但我愿意接受建议。 我需要了解每个翻译是否需要重写实现的一部分(哪一部分),或者是否有办法进行实际翻译,可能是在某种预处理器中。
您不会找到能够为多种语言(例如在一种或两种语言和英语之间)执行此操作的翻译器,尤其是考虑到英语本身可能至少有 3 种书写方式。
如果你想写一个DSL,你需要先想出产生式规则(你能写什么),然后把它变成一种用英语/荷兰语/火星语等表达的方式。
例如:Schedule := Frame Inclusion [Exception]
这将是:
然后,您可以担心词法分析器/解析器会纠正特定语法并将其放入该形式的产品中。
这些不在我的脑海中,甚至不接近,但应该足以开始。
可以本地化使用领域特定语言工具创建的 DSL。 他们将所有字符串放入 .resx 文件中。
看看openVALIDATION
https://github.com/openvalidation/openvalidation
这是验证规则的自然语言(当前为英语或德语)dsl / compiler。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.