Why not have a session id that chooses one language and use <cfinclude> to
add the page in the language the user selects? That way when you go to
another page it brings up only the content for that language.
Richard Ramos
Network Administrator
Softitler Net, Inc.
www.softitler.com
[EMAIL PROTECTED]
----- Original Message -----
From: Peter Theobald <[EMAIL PROTECTED]>
To: Dan Haley <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
Sent: Friday, August 04, 2000 10:15 PM
Subject: Re: Translations on your website . . .
> Dan, I hope you dont mind I decided to share this with the list...
>
> Please tell me how you are currently doing it, as I'd like to hear
everything on the topic.
>
> We were originally just doing the site in English and French, and planned
to have two completely parallel versions of the site. UGH! What a pain to
maintain. We were spending all our time putting changes into both versions
of the page. Now we are doing English, French, German, Italian, and Spanish
so it is out of the question to maintain 5 parallel sites!
>
> We needed a way to efficiently substitute the appropriate text in
whichever language, and to maintain the lists of text.
> We looked at XML/XSL (too complex), we looked at having database queries
pull each and every label out (too slow).
>
> We finally decided to put every single label and text in the entire site
into variables in a structure, and encase the entire page in one long
<CFOUTPUT> do to the substitution (instead of hundreds of little
<CFOUTPUT>s).
> Originally we were going to INCLUDE a file with:
>
> <CFSCRIPT>
> enlabel.welcome = "Welcome";
> delabel.welcome = "Velkommen";
> frlabel.welcome = "Bienvenue";
>
> and so on...
>
> But after the great help of people on the CFTALK list I learned a few
things about scoping variables. Now I can store all the values in the
database for great maintainability and put the values into an Application
scoped variable that only gets loaded once.
>
> table multilingual
> language char[2]
> labelname char[15]
> value varchar[1000]
>
> We will build appropriate admin pages, and an import facility from EXCEL
files.
>
> Now, in the Application.cfm file we do ONE initial load into an
Application scope variable (or a Server scope variable - what is the
difference??) that is only executed ONCE like so:
>
> // Load all multilingual values ONCE
> If (NOT IsDefined("Application.langlabels")) {
> query all rows from multilingual
> lock application
> application.langlabels = new array (two dimensional hash/struct)
> loop for all rows {
> application.langlabels[language][labelname] = value;
> application.langlabels['db'][labelname] = labelname; //
for debugging language 'db' will show labels on page
> }
> unlock application
> }
>
> // for every page, load local variable with appropriate language values
(to avoid locking every access)
> readonly lock application
> label = new array (one dimensional hash/struct)
> label = langlabels[session.currentlanguage]
> unlock
>
> ---------------
> Now in each page I put <CFOUTPUT> at the top and </CFOUTPUT> at the
bottom.
> I got rid of all my old plain <CFOUTPUT>s
> I fixed all my db query <CFOUTPUT QUERY='queryname'> to
</CFOUTPUT><CFOUTPUT QUERY='queryname'>
> and </CFOUTPUT> to </CFOUTPUT><CFOUTPUT>
> I did this because you can't nest CFOUTPUT blocks :-(
> I fixed all # to ##
> And I pulled out all English text and replaced it with #label.varname#
>
> Phwew....
> Pulling out all the English text is a big job and we're not done yet. I'll
let you know how it works!
>
>
>
> At 03:27 PM 8/4/00 -0700, Dan Haley wrote:
> >I'd love to hear more on how you are doing translations . . . we are
> >embarking on a rebuild of both the front-end and the back-end of our
website
> >and we need to come up with a better way of handling translations. Let
me
> >know if you'd rather I call you and I can do that too. I'm PST in the
US.
> >
> >Thanks,
> >Dan Haley
> >Telect, Inc.
>
>
> --------------------------------------------------------------------------
-
> Peter Theobald, Chief Technology Officer
> LiquidStreaming http://www.liquidstreaming.com
> [EMAIL PROTECTED]
> Phone 1.212.545.1232 Fax 1.212.679.8032
>
> --------------------------------------------------------------------------
----
> Archives: http://www.mail-archive.com/[email protected]/
> To Unsubscribe visit
http://www.houseoffusion.com/index.cfm?sidebar=lists&body=lists/cf_talk or
send a message to [EMAIL PROTECTED] with 'unsubscribe' in
the body.
>
------------------------------------------------------------------------------
Archives: http://www.mail-archive.com/[email protected]/
To Unsubscribe visit
http://www.houseoffusion.com/index.cfm?sidebar=lists&body=lists/cf_talk or send a
message to [EMAIL PROTECTED] with 'unsubscribe' in the body.