cfml, Datenbank und eine mehrsprachige Website

  • Ich habe eine Datenbank mit vier Spalten id, languageid, name, text

    Abhängig von den Benutzern Standardsprache, ich erstelle eine Abfrage, die alle Texte für die festgelegte Sprache enthält (where languageid=#user.defaultlanguageid#)

    Wie lassen sich diese am einfachsten abrufen, wenn die erforderliche Zeichenfolge angezeigt wird.

    Anscheinend ist das Erstellen einer Unterabfrage jedes Mal ein bisschen Arbeit.

    Ist das Erstellen einer Funktion der beste Weg?

    18 July 2015
    marc_suser1374841
1 answer
  • Sie könnten nur eine einzige Abfrage haben, die eine Struktur auffüllt (möglicherweise eine Struktur auf Anwendungsebene) - etwa so:

     <cfif not IsDefined("application.langMap")>
    
    <cfquery name="langNames" datasource="...">SELECT * from langTable</cfquery>
    
    <cfset application.langMap = {}>
    <cfloop query="langNames">
       <cfif not StructKeyExists(application.langMap, languageid)>
           <cfset application.langMap[languageid] = {}>
       </cfif>
       <cfset application.langMap[languageid][name] = text>
    </cfloop>
    
    </cfif>
     

    Und dann, wenn Sie eine bestimmte Zeichenfolge in der Anzeige benötigen:

     #application.langMap[mylanguageid][name]#
     
    22 November 2011
    Jake Feasel