Preventing fragmentation of messages

Messages and all other forms of UI tend to occupy much storage space. It is only natural that developers try to economize the storage requirement by using some truly inventive techniques, such as, using English phrases or parts of words as building blocks for complete messages.

However, if the final form of a message relies on the composition of several parts, that message may not be translatable at all. Translation can change the order of parts of speech, and words can acquire different forms depending on the context.

Guideline A7

Ensure that messages and other UI information are complete sentences; do not construct sentences from parts of sentences; do not construct words from parts of words.

A phrase or word that can be inserted into several English messages may require a different case, gender, or plural ending when translated into other languages. The small amount of space saved cannot compensate for the confusion and trouble caused in translation.


Example: To report the operational status of the peripheral devices, a programmer creates the following two columns of terms:

Device Status
Display operational
Control unit off line
Printer busy
Serial port defective

By selecting one item from each column, the application can generate 16 messages by just storing 8 terms.Two of these messages would be:

In French, however, the nouns display and control unitare of different gender, thus requiring different forms of the adjective operational:

Example: In English, the word day can be prefixed with the following word fragments to form the seven days of the week:

This technique, however, does not work in most other languages. In the table below, it will not work for Sunday in French and Wednesday in German.

English French German
Monday lundi Montag
Tuesday mardi Dienstag
Wednesday mercredi Mittwoch
Thursday jeudi Donnerstag
Friday vendredi Freitag
Saturday samedi Samstag
Sunday dimanche Sonntag

Another technique that is similar to the one above is the practice of attaching an ‘s’ to the message to form plurals as illustrated in the C code example below that uses the strcat function.

Example: This C program would concatenate strings to form the message “We shipped %n orders”.
/* BAD - add an ‘s’ to get the plural form */
{ char makeplural[20];
Strcpy (makeplural,”We shipped %n order”);
Strcat (makeplural,”s“);
Return 0; }

This technique will also not work and should be avoided since plural forms are handled differently between language families. See Guideline B4-2 for more information on forming plurals. You can use the International Components for Unicode (ICU) to properly format messages so that they can be easily translated.

Concatenation of words, phrases or parts of sentences to construct messages often leads to these message fragments being translated independently of each other. While combining these fragments may make sense in English, they may be difficult to translate or will be meaningless when translated in other languages. An example would be to concatenate the strings “first” or “last” with “name”, “page” or “record”. We recommend that message format functions such as the MessageFormat class in Java be used to produce concatenated messages in a language-neutral way.

Darwin Information Typing Architecture (DITA) provides a mechanism for reuse of content from other topics or maps through content referencing (conref). Conref improves an author’s productivity by allowing writers to pull by reference a fragment of content in one topic or map into any other topic or map where the content is allowed. It is a powerful tool, but can make content difficult to translate if misused in content produced for globalization.