The `Message` class is concerned with an aspect of globalizing static message strings
throughout the framework and applications. When referring to message globalization the
phrase of ""translating a message" is widely used. This leads to the assumption that it's
a single step process whereas it' a multi step one. A short description of each step is
given here in order to help understanding the purpose of this class through the context
of the process as a whole.
1. Marking messages as translatable. `$t()` and `$tn()` (implemented in `aliases()`)
are recognized as message marking and picked up by the extraction parser.
2. Extracting marked messages. Messages can be extracted through the `g11n`
command which in turn utilizes the `Catalog` class with the built-in `Code`
adapter or other custom adapters which are concerned with extracting
translatable content.
3. Creating a message template from extracted messages. Templates are created
by the `g11n` command using the `Catalog` class with an adapter for a format
you prefer.
4. Translating messages. The actual translation of messages by translators
happens outside using external applications.
5. Storing translated messages. Translations are most often stored by the external
applications itself.
6. Retrieving the translation for a message. See description for `Message::translate()`.