Holy cow, I wrote a book!
Somebody in a comment asked, "Why not draw the text vertically?"
Ah, now you get to learn about the exciting world of vertical text.
We originally intended to run text vertically in the new XP Start menu. In original
designs for the menu, your name ran vertically up the left side of the menu instead
of running across the top.
Rotating text is problematic in languages that traditionally run vertically, such
as Chinese. Since you probably don't have Chinese fonts installed, pretend that %, &,
and ' are the Chinese characters for your name. In traditional
vertical text, it would be written as shown in Example 1 below. Notice that the English
text is rotated clockwise. This preserves the top-to-bottom reading order.
As a concession to Western influences, it is permissible to render Chinese characters
left-to-right, in which case your name would be written as "%&' (Amy
Compare this to the traditional Western way of rotating text. Text which would normally
be rendered as "Amy Smith" is rotated counter-clockwise and rendered as shown
in Example 2.
Now consider what happens if you take a Chinese name rendered the Western way, "%&' (Amy
Smith)", then rotate the Western way, resulting in Example 3. Notice that from a Chinese
point of view, everything is upside-down! The character that is supposed to be at
the top (%) is now at the bottom.
Windows for many years now has been multilingual.
This means that the same underlying code runs regardless of language. Changing a language
merely changes the strings being displayed. This means that there can be no language-specific
UI. In this case, it means that we can't have separate rotation rules for Chinese
as opposed to English or German.
(And even if we were allowed to have separate rotation rules, we would have to be
able to tell whether the name was in the form above or was in the form "Amy Smith
(%&')". In this form, we should rotate it as in
example 2, since this is an English string with Chinese characters embedded; as opposed
to our example above where we had a Chinese string with English characters embedded.
Those of you who have seen Arabic and English mixed together get to see punctuation
marks bandied about with similar degrees of confusion.)
Multilingual support also explains why you see things like "1 folder(s)" instead of
"1 folder" and "2 folders". Why not have two format strings, one for when the number
of items is exactly one, and one for when the number of items is two or more?
Well, for one, that would significantly increase the number of strings we would have
to carry around. (If you say "just add s to make the plural" then you really need
to get out more!)
For two, some languages (such as Slovene) have a "dual" number in addition to singular
and plural. The Lahir language has singular (one), dual (two), trial (three), paucal
(a few), and plural (many). So now you have to have perhaps five versions of every
string that contains a replacable number.
This also explains why you see a lot of strings of the form "Property: Value" (for
example, "Last modified: Monday, September 29, 2003") instead of a phrase ("Last modified
on Monday, September 29, 2003"). This is necessary to avoid problems caused by grammar.
If you attempt to compose a phrase, you have to worry about subject/verb agreement,
gender and number agreement, declensions, all sorts of things that computers aren't
good at. The only safe solution is to avoid it entirely and use the "Property: Value"
We did get one special exception to the "grammar independence" rule: Personalized
folders. When you view somebody else's "My Documents" folder, it says "Chris's Documents".
We made this request to the translators and they worked really hard to make sure that
the templates for possessive forms were accurate in all the languages we support.
(Fortunately, we didn't have to deal with languages where the form of the template
depended on us knowing whether Chris is a man or a woman.)