如何编写
的等价物<cfset lang = Evaluate("SERVER.Locale.#LocaleName#.#SESSION.Locale#")>
,不使用评估。
我试过像
这样的东西<cfset lang = SERVER[Locale][#LocaleName#][#SESSION.Locale#]>
在引用this后,但它无效。
更新
<cfset localename = "test">
<cfset session.locale = "en">
<cfif Not IsDefined("SERVER.LOCALE")>
<cfset SERVER.Locale = StructNew()>
</cfif>
<cfif IsDefined("SERVER.Locale.#LocaleName#")>
<cfset StructDelete(SERVER.Locale, "#LocaleName#")>
</cfif>
<cfset "SERVER.Locale.#LocaleName#" = StructNew()>
<!---<cfset lang = Evaluate("SERVER.Locale.#LocaleName#.#SESSION.Locale#")>--->
<!---<cfset lang = SERVER["Locale.#LocaleName#.#SESSION.Locale#"]>--->
<cfset lang = SERVER.Locale[LocaleName][SESSION.Locale]>
<cfoutput>#lang#</cfoutput>
错误:
元素en在作为表达式一部分引用的CFML结构中未定义。
答案 0 :(得分:11)
此:
<cfset lang = Evaluate("SERVER.Locale.#LocaleName#.#SESSION.Locale#")>
应修改为:
<cfset lang = SERVER.Locale[LocaleName][SESSION.Locale]>
您不应该将[Locale]
放在方括号中。
我认为错误信息(你应该总是用你的问题发帖)可能实际上解释了你,dunnit?