Некоторое время назад я читал статью W3C на тему « Повторное использование строк в скриптовом контенте », в которой содержится несколько полезных советов по интернационализации, но мне кажется, что шансы на СУШКУ (Дон t Повторите себя) принцип устранения повторяющегося кода.
Чтобы взять их пример, у нас может быть такой код ...
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 к интернационализации своего кода?
Часть меня хочет утверждать, что интернационализация - это одна из тех экстремальных программных ситуаций, " вам не понадобится ". С другой стороны, рефакторинг с учетом принципа СУХОЙ должен сбалансировать это, упрощая реализацию функциональности по мере необходимости, а не сложнее, как здесь.