В то время как я читал статью W3C в разделе "" Повторное использование строк в скриптовом контенте", в котором содержатся полезные советы по интернационализации, но который поражает меня, как противоречит принципу DRY (Do not Repeat Yourself), устраняющему повторяющийся код.
Чтобы взять их пример, у нас может быть такой код, как этот...
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 с интернационализацией своего кода?
Часть меня хочет утверждать, что интернационализация является одним из тех экстремальных программ " вам не нужно это. Однако, с другой стороны, рефакторинг с принципом DRY должен уравновешивать это, упрощая реализацию функциональности по мере необходимости, а не сложнее, чем здесь.