Subject: Re: Beginner question: performance problems with a simple program From: Erik Naggum <erik@naggum.net> Date: Wed, 02 Jan 2002 00:30:08 GMT Newsgroups: comp.lang.lisp Message-ID: <3218920202329027@naggum.net> * Duane Rettig <duane@franz.com> | As for yes-or-no-p et al, it is true that we have not implemented the | LC_MESSAGES category, but it is entirely possible. And I may be wrong, | but my reading of the definition of yes-or-no-p in the spec doesn't | preclude an implementor from basing either the message string or the | actual "yes"/"no" responses on the locale. Fixing yes-or-no-p in the locale is the wrong place to do it. This is clearly a user-interface function that depends on a particular mode of user interaction with specific programmer and user expectations. Making it more general is a mistake. A more elaborate user interface would need more than just yes-or-no-p and y-or-n-p. _If_ these functions match the user interface needs, they will be used, and then all parties involved expect them to be exactly as they were when they got into the language. If they are not satisfactory for user interaction, some other functions will be written and used in their place. Please do not bother making "localized" versions of these functions. I work in two languages all the time -- have been since I were a kid, and I consider myself fluent in both. I am constantly deeply annoyed by the incompetence of the fools who think they can translate movies and books, and can only imagine what kind of mistakes are made in translations of languages I cannot read in the original. Not many years ago, fluency in several European languages were common among academics and the lingua franca (!) was Latin _long_ after that language had ceased to be spoken. It is somewhat unfortunate that computer science uses a living language for its lingua franca, in contrast to law and medicine, which are both firmly based in much older languages and cultures, because that makes a lot of people who fail to grasp the function of a common language think it is a natural language and can be replaced by another, particularly those who speak it naturally and are overcome with political correctness and think they should be guilty of the fact that historic accidents favored their language. The common language is, however, _not_ a natural language except by accident, and it cannot be replaced by another natural language without replacing the whole culture with it. Those who think _their_ natural language should be the common language should just get over their egoistic provincialism and learn to deal with reality. And speaking as a user of Norwegian software, I do not accept some two-bit "translation". If I have to translate the incompetent Norwegian back to what I think the natural English would have been in order to understand what the Norwegian probably means, all parties involved would have been better off with the original. Like the other day, I saw "IP header compression" translated on a cell phone to what best translates back to "reduced headlines". I think translation between English and Norwegian is important enough that I contribute to dictionaries and try to help companies who pay their translators basically nothing to write the local version of text that somebody else paid a large sum of money to get just right in English. Thankfully, however, original-language paperbacks in British and American English are now outselling translated versions, and several major film releases are available in original versions, so there is hope for this undersized country. English is now taught from the first grade. The more I have worked with software in these two different languages, the more I am convinced that message catalogs is one of the worst non-solutions. It works OK only if you have a primary language and subordinate languages that you do not care if suffer from stilted expression and phony flow of logic. We have to realize that the logic flow of the primary language is deeply engrained in the program itself and that "translating" what appears to be a step-by-step procedure in one language may require fewer or more steps and with a different order in another language, like in which order you provide the components of your name and postal address, etc. The whole user interface/experience needs to be tailored to each culture and language. "Translation" must be done by programming. This naturally leads to the conclusion that software should not speak natural languages to users, but formalized protocols to user interface engines. In other words, yes-or-no-p would be a protocol element, not a _specific_ user interaction in my view. /// --