Stephen,
That is a different issue, and yes we do it in a similar way, although now
one of my colleagues improved on it by using text key mappings, so that when
you look at the source it's easier to see what label will be displayed:
tblMapping
ContentID  MappingID
1                WELCOME_MSG
2                HELP
3                NAME
.....


Then in the code we load all the labels ONCE into an application scope array
and per each request make a copy (Duplicate) of that language's labels into
request scope to avoid needing locking later on each time we access a label.
ending up with:

#Request.Labels.WELCOME_MSG#


Behind the scenes:
Application.Labels[languageIndex]["mapping_key"]

An array of structures.

The generic wrapper pages are just that - wrappers which then include the
index.cfm file with the language flag set and fuse action set.

Hope this clears it up some,
Noam

        ----------
        From:  Stephen Moretti [SMTP:[EMAIL PROTECTED]]
        Sent:  Thursday, 10 May 2001 12:46
        To:  Fusebox
        Subject:  RE: Generic wrapper page [WAS: RE: Advantages of use cfid
and cftoken ?]

        Another, more extensible approach, is to store all your text in the
        database.  If you give each piece of text a reference number, plus a
code
        for language.
        eg.
        tblLanguage
        ==========      ID      Language
        1       English
        2       Spanish
        3       Italian

        tblContent
        =========       ID      LanguageID      ContentText
        1       1               Welcome to my Application
        1       2               Recepci�n a mi aplicaci�n
        1       3               Benvenuto alla mia applicazione


        You can write a tag that picks up the users prefered language from
        cookies/client variables/user preferences in the applications
database and
        then picks up the appropriate content from the content table.

        eg.
        DisplayContent.cfm
        <cfif IsDefined("cookie.languageID")>
                <cfset attributes.languageID = cookie.LanguageID>
        <cfelse>
                <cfparam name="attributes.languageID" default=1>
        </cfif>

        <Cfquery datasource="request.dsn" name="dspContent">
        SELECT ContentText
        FROM tblContent
        WHERE ID = #attributes.objectid#
        AND LanguageID = #attributes.languageID#
        </cfquery>

        <cfif dspContent.recordcount is 1>
                <cfoutput>#dspContent.ContentText#</cfoutput>
        </cfif>

        So

                <cf_displaycontent objectid="1">

        would give you

                Welcome to my Application

        if your language is set to English or not set at all.


        Of course I've just written this off the top of my head as I've
written this
        email, so chances are this won't work straight offf, but you get the
        idea....

        Oh and its definately worth including some query caching in
        displaycontent.cfm

        Regards

        Stephen

        > -----Original Message-----
        > From: BOROVOY Noam [mailto:[EMAIL PROTECTED]]
        > Sent: 10 May 2001 09:57
        > To: Fusebox
        > Subject: Generic wrapper page [WAS: RE: Advantages of use cfid and
        > cftoken ?]
        >
        >
        > We provide a multilingual web site as well, and have chosen a
slightly
        > different approach - a generic wrapper page.
        >
        > This solves other issues as well:
        > - Statistics - you can see access by fuseaction and by language.
        > - Bookmarks keep the language
        >
        > Create a directory - all links will be to this directory, it has
one file
        > for each language and fuseaction. All files are identical, just
the names
        > are different.
        > An example:
        > EN_Login.cfm
        > ES_Login.cfm
        > FR_Login.cfm
        > ....
        > EN_Help.cfm
        > ....
        >
        > The wrapper file contents:
        >
        > <!--- Name: Generic Wrapper page
        > Description:
        > Takes filename and based on it calls the index file with correct
language
        > and fuseaction
        > Parameters:
        >
        > written: 15/07/1999 NB
        > --->
        >
        > <CFSET variables.TemplateName GetFileFromPath(GetCurrentTemplatePath())>
        > <CFSET request.DisplayLanguage = listFirst(variables.TemplateName,
"_")>
        > <CFSET attributes.FuseAction = listGetAt(variables.TemplateName,
2, "_.")>
        >
        > <CFINCLUDE template="../index.cfm" >
        >
        >
        > HTH,
        > Noam
        >
        >       ----------
        >       From:  Toni Trape [SMTP:[EMAIL PROTECTED]]
        >       Sent:  Wednesday, 09 May 2001 9:16
        >       To:  Fusebox
        >       Subject:  RE: Advantages of use cfid and cftoken?
        >
        >       OK, i do that but the question is where i put the language
flag? In
        > a
        >       session variable, in a client variable? client variable
stored into
        > a
        >       cookie? client variable and passed in the URL all time?
        >
        >       This is what i don't know.
        >
        >       Toni
        >
        >       At 10:38 08/05/01 -0600, you wrote:
        >       >No, you set a language flag to tell the db which data to
select.
        > Never
        >       >duplicate structure if you can help it ... just pull the
        > appropriate
        >       >information.
        >
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Structure your ColdFusion code with Fusebox. Get the official book at 
http://www.fusionauthority.com/bkinfo.cfm

Archives: http://www.mail-archive.com/[email protected]/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists

Reply via email to