いい質問です!私はまったく同じ問題を抱えています。私の定数は基本的に、アプリケーションでサポートされている言語と、アプリの機能に関連する言語に関する追加情報です。
残念ながら、(あなたが持っているように)私が見つけた最良のことは、あなたが現在しているように、単に各言語の定数を再定義することです(間違いなく、あなたはそれを聞きたかったのです)。
DRY(WET ??)の反対なので、明らかに間違っているように感じます。ただし、定数はまれにしか変更されないため、言語ごとに5〜10分間定義し直してもそれほど気になりません。結局のところ、共有構成やコード生成などの「エレガントな」ソリューションに関する小さな問題の解決には、数時間から数日かかる可能性があります。修正にさらに労力を要する可能性のある何かがうまくいかないリスクを伴う複雑さを追加したのは、私が対処したいものではありません。
さらに、アプリケーションに非常に多くの定数があり、それらを追加または変更するときに言語ごとに再定義するのにかなりの時間がかかる場合、対処する必要のあるコードの匂いが大きくなる可能性があり、その時点で、より複雑なものに。
要するに、言語ごとにそれらを再定義することが私の最善の解決策であり、私が対処したい以上のリスク要因を持たないDRYについてはまだ考えていません。
ただし、間違いなく行うべきことの1つは、定数が一般化された(および言語に依存しない)方法で文書化されていることを保証することです(仕様、その他のドキュメント、「図面ボード」ドキュメントなどを含む会社ドキュメンタリーリポジトリがあります)このドキュメント)。また、定義の同期を維持するためのメカニズムがあることを確認してください。これは、意図的なコードの重複によるわずかな心理的苦痛を除けば、重複アプローチの問題と同じくらい大きな問題です。しかし、最終的には、絶え間ない変更は非常に意図的で頻繁ではないため、同期の問題は本質的にゼロになります。
また、長年にわたって、言語自体で常に定数が定義されている同じグループによって書かれたさまざまなライブラリの多言語移植版(現時点ではそれらが何であるか思い出せないほど疲れている)を見てきました。共有設定もコード生成もありません(Google APIクライアントライブラリを除く...しかし、今後、Googleにはそのような複雑さを許容するリソースがあります)。だから、私たちはこれにレンガの壁を打ったと思います。たぶん誰かがこの問題に対処するためのライブラリを思い付くでしょう;)