不久前,我正在阅读关于“在脚本内容中重用字符串”的 W3C 文章,其中包含一些关于国际化的有用建议,但让我觉得与消除重复代码的 DRY(不要重复自己)原则不一致.
以他们为例,我们可能有一些这样的代码......
print "The printer is ";
if (printer.working) {
print "on.\n";
} else {
print "off.\n";
}
print "The stapler is ";
if (stapler.working) {
print "on.\n";
} else {
print "off.\n";
}
我的直觉是大致如下消除重复......
report-state(printer, "printer");
report-state(stapler, "stapler");
function report-state(name, object) {
print "The "+name+" is ";
if (object.working) {
print "on\n";
} else {
print "off\n";
}
}
...但是如果我们需要将其本地化为西班牙语,这样做会导致代码出现困难,因为在这两种情况下,“on”这个词显然是不同的。
所以,我想我的问题是,其他开发人员如何平衡 DRY 原则和他们的代码国际化?
我的一部分想争辩说,国际化是那些极端编程“<a href="http://www.extremeprogramming.org/rules/early.html" rel="noreferrer">你不需要它”的情况之一。然而,另一方面,考虑到 DRY 原则的重构应该通过使其易于实现所需的功能来平衡这一点,而不是像这里那样更难。