Universal Greeting

A Tcl universal greeting - from a session on tkchat - NEM

 namespace eval universal {
     package require msgcat
     msgcat::mcset en "Good Morning!"
     msgcat::mcset de "Good Morning!" "Guten Morgen!"
     msgcat::mcset es_ES "Good Morning!" "\u00a1Buenas Man~anas!"
     msgcat::mcset fr_FR "Good Morning!" "Bonjour!"
     msgcat::mcset du_NL "Good Morning!" "Goedemorgen!"
     msgcat::mcset sv "Good Morning!" "God morgon!"
     msgcat::mcset en "Good Afternoon!"
     msgcat::mcset de "Good Afternoon!" "Guten Tag!"
     msgcat::mcset es_ES "Good Afternoon!" "\u00a1Buenas Tardes!"
     msgcat::mcset fr_FR "Good Afternoon!" "Bonne Apres-midi!"
     msgcat::mcset du_NL "Good Afternoon!" "Goedemiddag!"
     msgcat::mcset sv "Good Afternoon!" "God kv\u00e4ll!"
     proc greeting {} {
        set timeofday [expr {[clock format [clock seconds] -format %p]\
            == "AM" ? "Morning" : "Afternoon"}]
        return [msgcat::mc "Good $timeofday!"]
     }
 } 

Add other languages. Also, I'm not sure if es_ES is the right code for Spanish. Rule of spanish greetings:

  • From sunrise till noon: Buenos Dias
  • From noon till sunset: Buenas tardes
  • From sundet till sunrise: Buenas noches

US

AvL (at least) in German business-life:

  • From about 11am till 3pm: "Mahlzeit" ;-)

RS Similar in German: "Guten Morgen" until ~11:00; "Guten Tag" until ~17:00; "Guten Abend" after that. So one should maybe better switch on ranges of %H, instead of the binary %p... See Time-dependent greetings for refined versions.

Michael Schlenker In some parts of northern germany, especially where i live, it's very easy. The universal greeting that can be used at all times is "Moin".


This seems terribly broken to me. For example, shouldn't the line

     msgcat::mcset de "Guten Morgen!"

be

     msgcat::mcset de "Good Morning!" "Guten Morgen!"

? -- CLN - RS Right, was too much in a hurry, and more concerned with the ranges problem I wrote below. Thanks for the hint; fixed.

AvL Why aren't the english originals stored in a local variable and reused ? I mean sthg like:

     set str "Good Morning!"
     msgcat::mcset en $str
     msgcat::mcset de $str "Guten Morgen!"
     msgcat::mcset ... $str "..."

Watch out for non-ASCII characters; the Wiki mangles them. :/ - DKF