Subject: Re: [boost] Boost.Locale and the standard "message" facet
From: Steve Bush (sb2_at_[hidden])
Date: 2011-05-01 08:54:48
>Use of integer identifiers is the best
>way to screw the localization in the software.
>What does 3456 means? Do you really think
>it is good to write translate(MY_MESSAGE_OPENING_FILE)
>No, never - never - never - never - never
>use such "constant" or "integer" identifiers.
>Always use natural text.
I am not sure I fully understand this, but definitely I disagree with the
idea that messages should never be integer identifiers.
There is a principle in the database world that primary keys to records
should be meaningless where the meaning can change over time. Imagine a text
identifier "Close your hatch now" and over time, the very concept of "hatch"
becomes meaningless - yet for all time the source code is condemned to have
the original, now meaningless if not downright confusing identifier "Close
your hatch now".
In the windows world messages are generally numbers and there is
considerable value in being able to search the web/documentation for error
-23756472536476523 instead of some local language string which will only
turn up comments in one language.
Any text compiled into a program is essentially a constant exactly like any
integer. Therefore the same rules apply equally to
Generally I think the idea of compiling any meaningful text whatsoever into
object code is questionable from a theoretical basis and is usually just a
hangover from when gettext/translate was a quick and dirty way to largely
automate the localisation of existing mono-lingual programs - by simply
wrapping all quoted text with a call to translate.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk