0

我想知道 ColdFusion 中是否有类似于 Android strings.xml 文件的字符串集中化。因此,如果我想对字符串进行任何更改,我的代码将保持不变

4

1 回答 1

4

ColdFusion 是一种编程语言,而不是用户界面框架。

ColdFusion 中没有内置 Android 的字符串资源管理功能,但您自己可以很容易地实现它。

resources/strings.xml

<!-- keep as a structure with unique element names -->
<strings>
  <heading>This is a test.</heading>
  <greetings>
    <hello>Hello World!</hello>
    <bye>Goodbye World!</bye>
  </greetings>
</strings>

ColdFusion 实用功能(例如在 CFC 组件中util.cfc):

<cffunction name="ReadResouceXml" returntype="struct" access="public" output="no">
  <cfargument name="path"   type="string" required="yes">
  <!--- internal use argument --->
  <cfargument name="xmlDoc" type="xml"    required="no">

  <cfset var xmlElem = "">
  <cfset var output  = StructNew()>

  <!--- read XML file from disk --->
  <cfif not StructKeyExists(arguments, "xmlDoc")>
    <cffile action="read" file="#ExpandPath(path)#" variable="xmlDoc" charset="UTF-8">
    <cfset xmlDoc = XmlParse(xmlDoc).XmlRoot>
  </cfif>      

  <!--- recursively convert XML to a CF struct --->
  <cfloop index="i" from="1" to="#ArrayLen(xmlDoc.XmlChildren)#">
    <cfset xmlElem = xmlDoc.XmlChildren[i]>
    <cfif ArrayLen(xmlElem.XmlChildren) gt 0>
      <cfset output[xmlElem.XmlName] = ReadResouceXml("", xmlElem)>
    <cfelse>
      <cfset output[xmlElem.XmlName] = xmlElem.XmlText>
    </cfif>
  </cfloop>
  <cfreturn output>
</cffunction>

冷熔用法:

<cfobject type="component" name="util" component="util">
<cfset strings = util.ReadResouceXml("resources/strings.xml")>

<cfoutput>
<h1>#strings.heading#</h1>
#strings.greetings.hello# - #strings.greetings.bye#
</cfoutput>
于 2012-07-18T06:34:08.057 回答