Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

In Android, final strings are stored in a strings.xml file, which makes it easy to update text, reuse strings and to translate an app to a different locale -- because everything is in one place.

However, in all the examples that I have seen of desktop applications all the strings have been hardcoded into each class.

Is hardcoding strings into files standard practice for desktop applications? Or is there a better way to do this?

share|improve this question
What types of strings? names of things to use in reflection? keys to hashes? values displayed as part of a view? – user40980 Jan 2 '14 at 21:57
@Michael - mostly values displayed as parts of views – jcw Jan 2 '14 at 22:00
They're likely ignoring i18n... and should be using ResourceBundle.getBundle(base,locale) – user40980 Jan 2 '14 at 22:11
up vote 2 down vote accepted

What you're referring to is called internationalization (often abbreviated as i18n), which in desktop Java is accomplished by creating properties files for each locale, then using resource bundles to get strings from those files as needed (see this tutorial). It's not universally used, because there is some setup involved, and it's shorter to type "greetings" compared to messages.getString("greetings"). Usually you only see it when people actually need to have their program translated into different languages.

You can hard code strings in Android too, if you want, but they emphasized using the xml from the start in all their documentation and tutorials, and set up the tools to make it easier.

share|improve this answer
I'll look into this - It certainly looks better to me than putting all the strings directly into the code. – jcw Jan 2 '14 at 22:29

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.