前陣子我在讀關於「Re-using Strings in Scripted Content」的W3C的文章,其中包含國際上一些有用的建議,但它給我的印象相左iwth的DRY(不要重複自己)原則消除重複的代碼。不要重複自己VS國際
採取他們的例子,我們可能有一些像這樣的代碼...
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原則?我的
部分想爭辯說國際化是其中的極端編程「you arent gonna need it」情形之一。然而,在另一方面,考慮到DRY原則的重構應該通過簡單實現功能來實現平衡,因爲它是必需的,而不是像這裏那樣難。
通過使用[i18next](http://i18next.com/pages/doc_features.html#nesting)的嵌套的功能我嘗試重新使用的詞彙,例如:`$ t(打印機)已經打開,所以我在一個地方有打印機這個詞。 – jamuhl 2012-10-22 11:29:25