Accessing messages.properties on the client-side

Correct. You would be safe to make the member variable non-static. You’ll also probably want to make sure you’re generating the initial value one time on context refresh (or in a synchronized block), since singleton controllers server multiple threads.

(Incidentally it would be nice if openmrs-core provided some equivalent to Spring’s @PostConstruct that is called after the whole context is refreshed, and services are instantiated.)