3

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?

jcw
  • 135
  • 1
  • 4
  • What types of strings? names of things to use in reflection? keys to hashes? values displayed as part of a view? –  Jan 02 '14 at 21:57
  • @Michael - mostly values displayed as parts of views – jcw Jan 02 '14 at 22:00
  • 1
    They're likely ignoring i18n... and should be using [ResourceBundle.getBundle(base,locale)](http://docs.oracle.com/javase/7/docs/api/java/util/ResourceBundle.html#getBundle(java.lang.String,%20java.util.Locale)) –  Jan 02 '14 at 22:11

1 Answers1

3

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.

Karl Bielefeldt
  • 146,727
  • 38
  • 279
  • 479
  • I'll look into this - It certainly looks better to me than putting all the strings directly into the code. – jcw Jan 02 '14 at 22:29