cfml, база данных и многоязычный сайт - PullRequest
0 голосов
/ 22 ноября 2011

У меня есть база данных, которая имеет четыре столбца id, languageid, name, text

В зависимости от языка пользователя по умолчанию я создаю запрос со всеми текстами для заданного языка (where languageid=#user.defaultlanguageid#)

Какой самый простой способ получить их, когда дело доходит до отображения требуемой строки.

Похоже, что создание подзапроса каждый раз требует много работы.

Является ли создание функции лучшим способом?

1 Ответ

3 голосов
/ 22 ноября 2011

Вы могли бы просто иметь один запрос, который заполняет структуру (возможно, структуру уровня приложения) - что-то вроде этого:

<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>

И затем, когда вам нужна конкретная строка на дисплее:

#application.langMap[mylanguageid][name]#
...