Good morning Reuben,
You name your way of using localized strings "best practice". This is your personal taste.
I have a different one. It's also personal taste.
...
I just want to correct you. I linked to a page whose title was "best practice", I did not name what I suggested best practise. (although if I was starting from scratch a lot of what is there is my starting point)
Anything in Ask Reuben is not a "you must do this" but should be treated as a "you can do this" and is typically something you should take into your decision making processes and consider the pros and cons for your individual requirements.
With localization you have to consider factors such as ...
readability of code
volume of entries to translate
quality of translated product
functionality of your application
Utilising SFMT will allow you to cut down on entries to translate, and increase the functionality of your application (i.e. allowing you to choose between interchangeable terms e.g. Product/Item/Stock/SKU, Branch/Warehouse/Store) but that may come at a cost of making the code slightly less readable.
You also tend to be scarred by bad experiences. I have seen strings file that needed translating that had lots of duplicates because there were entries such as "Password", "Password:", "&Password". Similarly abbreviations leads to lots of duplicates "Account Closed", "Acct Closed", "Act Closed", "A/c Closed", "Acct Clsd", "Acct Cl", "A/C Cl" etc. In both cases the same entries being translated multiple times. With the m*n cases, I am thinking how can this be m+n entries to translate instead.
A little bit of investment and thought at the beginning can save you down the line.