— Thomas M. Tuerke
The upshot of this—that the smallest unit of text should be the sentence—is that code should not concatenate parts of a sentence with a hard-coded assumption about word order. For example, it would be wrong to code the following:
sAppointment = sDateTime + " you have an " + sApptType
+ " with " + sClient + "."
The primary reason is that the word order might vary in other languages. For example, some languages might require "With client on datetime you have an appttype."
For this reason, it's better to use the various string formatting functions (such as Windows' FormatMessage, or the .NET runtime's System.String.Format methods) along with your sentence as a format string, and all the variables filled in. For example:
sAppointment = String.Format("{0} you have an {1} with {2}.",
sDateTime, sApptType, sClient);
Note that printf, from the C runtime, is almost—but not quite—adequate for the job, since the format specifiers (%s, etc) are sequential: you can't rearrange the second specifier to come before the first, without also rewriting the actual printf statement (something you don't want to have to do for each language.)
Once you've gotten over that hurdle, you'll also need to store that format string in an resource somewhere, so the localization engineers can translate that string without having to get into the code, (in the process invalidating all that wonderful testing the code has undergone.)
So, the important thing to remember here: the smallest unit should be the complete sentence, because constituent elements may vary in order, and the source code should be devoid of any explicit human-language strings.