DI injecting is not that hard to build on top of for example resx - but indeed - is it worth it? There is no single answer to that. I would for example be tempted to use it for supporting pseudo-translation tests directly in the app without having to go through the localization tools to get the pseudo-translated resources for a quick I18N test. If I have translations with the UI or not depends on a lot of things - for example, if it is a WinForm application (not that I do those anymore) then the size of the controls is typically in the resource file along with the translation - typically making it more of a view thing than entity/business logic. Even in WPF/HTML the layout can effect the chosen translation (i.e. a less accurate but more concise translation being chosen for a label). In reality I think you always end up with plenty of strings throughout the layers. I understand both the translation and programming workflows, which makes it a bit easier for me to know when to customize and when to stick to standards. If you do not understand the translation workflow, stick to standards. Your little "optimization" could end up being rather problematic. This is less of a problem if you do not use professional translators with access to proper tools though (they won't know when you are wasting their time) :)