Design considerations 3 : Don't divide sentences in translation files.

As people who write a program in their own language don't usually need to use the localization support, they usually are unaware of this problem. Parts of a sentence may need to be placed in a different order for another language. So;

X users are online

may need to be ordered as;

online are X users

in another language.

Avoid using a translation string like 'users are online' and making a concatenation.  This will make it hard for people who try to make a translation, and if used in core, they'll need to modify the core for translation.

Instead, use a parameter in the string, like;

'%s users are online'

and inject the parameter on the go as;

sprintf(elgg_echo('users:online'), $users)

As a side note; I find shorter descriptions (like 'X users are online'), even description & value pairs (like 'users online: X') more readable, especially in multiple indicators, it also fits better in a theme design.