Hello, I have also chosen to write a forum in Ruby, and the solution I came up with for i18n is that the templates should not include program-determined user-visible strings. What that basically means is that the task of translating the message isn't in the template files but in the program. For example, using an Amrita-like system, I would do something like exp_data = { :login_string => i18n("Login") } # Expand <span id="login_string"/> or somesuch. where i18n is just a wrapper for gettext from the Ruby GetText library. This eases the job of reproducing similar messages for template writers, since user-visible strings are now kept in the program. As for different languages via preferences, I originally thought of doing this but a friend has convinced me that it's pointless to have a forum run on more than one language at one time. A forum run in Germany will have all its posts in German anyhow, what's the point of having the menus in English (and vice-versa)? -- Lo-lee-ta: the tip of the tongue taking a trip of three steps down the palate to tap, at three, on the teeth. Lo. Lee. Ta. GUO Shu-yu <shu / rufuran.org>