しばらく前に、「スクリプト化されたコンテンツでの文字列の再利用」に関する W3C の記事を読んでいました。この記事には、国際化に関する有益なアドバイスが含まれていますが、繰り返しコードを排除するという DRY (Don't 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";
}
}
...しかし、スペイン語にローカライズする必要がある場合、コードに問題が生じる可能性があります。これは、これら 2 つのケースでは「on」を表す単語が明らかに異なるためです。
私の質問は、他の開発者はどのように DRY 原則とコードの国際化のバランスを取ることに取り組んできたのでしょうか?
私の一部は、国際化は「<a href="http://www.extremeprogramming.org/rules/early.html" rel="noreferrer">あなたはそれを必要としない」状況の極端なプログラミングの1つであると主張したい. ただし、反対に、DRY 原則を念頭に置いたリファクタリングは、必要に応じて機能を簡単に実装できるようにすることで、このバランスを取ることになっています。