Sorry, I wasn't too specific. Here's what we do.
Use one generic page and a value between 1 and 5 to choose languages. Now
if you have one or two words then retrieve them from a table, but if you
have some paragraphs of text, put them together in a folder and have them
end with a corresponding value, same goes for images. Now on your generic
page is all of your code. This is just one way of doing this, but could be
a little slow if you have a lot of traffic. The other option to take into
consideration is how often do you plan on updating you site? Our site uses
seven languages but we have different text files for each language. But I
guess it helps that I know Spanish, French, Italien and some Japanese.
By the way, shameless plug, we do web site translations in addition to our
subtitling service for DVD's and streaming media.
Richard Ramos
Network Administrator
Softitler Net, Inc.
www.softitler.com
[EMAIL PROTECTED]
----- Original Message -----
From: Peter Theobald <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
Sent: Friday, August 04, 2000 10:54 PM
Subject: Re: Translations on your website . . .
> I'm not sure what you mean. It sounds like you are saying to keep 5
different versions of every page.
> The pages are composed of many small elements, buttons, labels, form
fields, free text, etc. layed out in various places on the page. There is no
ONE big piece of text to be included in one place. All of the labels and
buttons and text must be substituted.. The CF code and HTML code is
interspersed all in and around these. To make all of the elements with
English text as separate include files would mean having hundreds of include
files each only one or two words long.
> Did I misinterpret what you said?
>
> At 10:51 PM 8/4/00 -0700, Richard Ramos wrote:
> >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.
>
>
> --------------------------------------------------------------------------
-
> 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.