Messages generated by the server should be translated before being
displayed by the client.

This depends on knowing which language to use.  On GNU systems the
GNU gettext internationalisation and localisation library determines
this.

For messages that are in encoded by short packets, the translations can
be client-side, per short.c.

For messages that are not encoded by short packets, the translations can
be server-side.

Therefore the server needs to know the language choice of the client
user.

So I propose a CP_FEATURE packet with name LC_MESSAGES, and value set to
the the client's value of LC_MESSAGES, LANGUAGES, or LANG.  On receipt
of this the server will begin to use translated messages if available,
and the server will assume the client has the short packet translations.
If no translation is available, the default English messages will be
used.

Not only that, but because the translation must be done as early as
possible, this CP_FEATURE packet will need to be sent before the SP_MOTD
begins to flow, so that a translated MOTD can be sent.

With reference to the protocol description in include/packets.h of the
server ... any comments as to how to achieve a translated MOTD without
destroying backward compatibility or adding delays?

-- 
James Cameron    mailto:quozl at us.netrek.org     http://quozl.netrek.org/