国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > 綜合 > 正文

資源文件說(shuō)明:resourcefiles

2024-07-21 02:28:04
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
中國(guó)最大的web開(kāi)發(fā)資源網(wǎng)站及技術(shù)社區(qū),
<%@ register tagprefix="acme" namespace="acme" assembly="qstools" %>
<%@ register tagprefix="acme" tagname="sourceref" src="/quickstart/aspplus/util/srcref.ascx"%>

<!-- #include virtual="/quickstart/aspplus/include/header.inc" -->

<h4>使用資源文件</h4>


<div class="indent" > <b> <img align="middle" src="http://edu.cnzz.cn/quickstart/images/bullet.gif">  </b><a class="toc2" href="#create">創(chuàng)建資源</a><br> <b> <img align="middle" src="http://edu.cnzz.cn/quickstart/images/bullet.gif">  </b><a class="toc2" href="#useresource">使用頁(yè)上的資源</a><br> <b> <img align="middle" src="http://edu.cnzz.cn/quickstart/images/bullet.gif">  </b><a class="toc2" href="#satellite">使用附屬程序集</a><br> <b> <img align="middle" src="http://edu.cnzz.cn/quickstart/images/bullet.gif">  </b><a class="toc2" href="#satellitecont">對(duì)控件使用附屬程序集</a><br> <b> <img align="middle" src="http://edu.cnzz.cn/quickstart/images/bullet.gif">  </b><a class="toc2" href="#summary">本節(jié)小結(jié)</a><br>
</div>
<p>
<hr>



<!--begin section--> <a name="create"> <span class="subhead">創(chuàng)建資源</span>
<p>

資源管理是 .net 框架類(lèi)庫(kù)的一個(gè)功能,可用于從源代碼中提取可本地化的元素,并將它們與字符串鍵一起存儲(chǔ)為資源。 運(yùn)行時(shí),可使用 <b>resourcemanager</b> 類(lèi)的一個(gè)實(shí)例將鍵解析為原始資源或本地化版本。 資源可存儲(chǔ)為獨(dú)立(“松散”)文件,或程序集的一部分。
<p> asp.net 頁(yè)可使用資源文件;另外,已編譯的代碼隱藏控件可以使用嵌入或鏈接到它們的程序集中的資源。
<p>

可使用 <b>resourcewriter</b> 類(lèi)以編程方式創(chuàng)建資源,或使用工具 resgen.exe 創(chuàng)建資源。resgen.exe 可使用簡(jiǎn)單的“鍵=值”格式作為輸入,或使用 .resx 格式的 xml 文件。
<div class="code"><xmp> ; ; lines beginning with a semicolon can be used for comments. ;

[strings] greeting=welcome ! more=read more ... ... </xmp></div>

<b>resourcewriter</b> 和 resgen.exe 創(chuàng)建一個(gè) .resources 文件,該文件可單獨(dú)使用,也可用作程序集的一部分。 若要在程序集中包括 .resources 文件,請(qǐng)使用相關(guān)的編譯器開(kāi)關(guān)或 al.exe 工具。 僅包含本地化資源、不包含代碼的程序集稱(chēng)為附屬程序集。



<!--begin section--> <br> <a name="useresource"> <br> <span class="subhead">使用頁(yè)上的資源</span>
<p>

下面的示例僅實(shí)現(xiàn)一個(gè) .aspx 頁(yè),該頁(yè)為每個(gè)請(qǐng)求都被本地化。 支持的語(yǔ)言是英語(yǔ)、德語(yǔ)和日語(yǔ)。 確定語(yǔ)言的方法是檢查 global.asax 文件中 http 標(biāo)頭的 <b>content-language</b> 字段。 該字段的內(nèi)容可通過(guò) <b>userlanguages</b> 集合訪問(wèn):
<p>

<p><acme:tabcontrol runat="server">
<tab name="c#"> thread.currentthread.currentculture = new cultureinfo(request.userlanguages[0]);
</tab>

<tab name="vb"> thread.currentthread.currentculture = new cultureinfo(request.userlanguages(0))
</tab>

<tab name="jscript"> thread.currentthread.currentculture = new cultureinfo(request.userlanguages[0]);
</tab>

</acme:tabcontrol><p>

若要更改初始語(yǔ)言設(shè)置,可使用以不同的方式本地化的客戶(hù)端,或更改瀏覽器上的語(yǔ)言設(shè)置。 例如,對(duì)于 internet explorer 5.x,從菜單中選擇<b>工具</b>-><b>internet 選項(xiàng)</b>并單擊底部的<b>語(yǔ)言</b>按鈕。 在接下來(lái)的對(duì)話框中,可以添加其他語(yǔ)言,并定義它們的優(yōu)先級(jí)。 為簡(jiǎn)單起見(jiàn),示例總是選擇第一項(xiàng)。
<p> 頁(yè)第一次加載后,用戶(hù)可在下拉列表控件 <b>myuiculture</b> 中選擇其他區(qū)域性。 如果選定的區(qū)域性有效,此值將重寫(xiě)從 <b>userlanguages</b> 獲得的設(shè)置:

<p><acme:tabcontrol runat="server">
<tab name="c#"> string selectedculture = myuiculture.selecteditem.text; if(! selectedculture.startswith("choose")) { // if another culture was selected, use that instead. thread.currentthread.currentculture = new cultureinfo(selectedculture); thread.currentthread.currentuiculture = new cultureinfo(selectedculture); }
</tab>

<tab name="vb"> dim selectedculture as string = myuiculture.selecteditem.text if not(selectedculture.startswith("choose")) then ' if another culture was selected, use that instead. thread.currentthread.currentculture = new cultureinfo(selectedculture) thread.currentthread.currentuiculture = new cultureinfo(selectedculture) end if
</tab>

<tab name="jscript"> var selectedculture:string = myuiculture.selecteditem.text; if(! selectedculture.startswith("choose")) { // if another culture was selected, use that instead. thread.currentthread.currentculture = new cultureinfo(selectedculture); thread.currentthread.currentuiculture = new cultureinfo(selectedculture); }
</tab>

</acme:tabcontrol><p>

<p> 同樣,在 global.asax 文件中,將用應(yīng)用程序范圍初始化 <b>resourcemanager</b> 實(shí)例。 這樣,資源對(duì)每個(gè)應(yīng)用程序僅加載一次。 因?yàn)橘Y源是只讀的,因此不會(huì)發(fā)生鎖爭(zhēng)用。
<p><acme:tabcontrol runat="server">
<tab name="c#"> public void application_start() { application["rm"] = new resourcemanager("articles", server.mappath("resources") + environment.directoryseparatorchar, null); }
</tab>

<tab name="vb"> public sub application_start() application("rm") = new resourcemanager("articles", _ server.mappath("resources") + environment.directoryseparatorchar, _ nothing) end sub
</tab>

<tab name="jscript"> public function application_start() : void { application["rm"] = new resourcemanager("articles", server.mappath("resources") + environment.directoryseparatorchar, null); }
</tab>

</acme:tabcontrol><p>

<p>

于是就可以在頁(yè)上輕松地使用資源管理器。 問(wèn)候字符串僅本地化為:
<div class="code"><pre> <%=rm.getstring("greeting")%>
</pre></div>

<table><tr>
<td>
<acme:sourceref
  viewsource="/quickstart/aspplus/samples/localize/resources/news/global_asax.src"
  icon="/quickstart/images/genicon.gif"
  caption="global.asax"
  runat="server" />
</td>
<td>
<acme:langswitch runat="server">
  <cstemplate>
<acme:sourceref
  runsample="/quickstart/aspplus/samples/localize/resources/news/cs/news.aspx"
  viewsource="/quickstart/aspplus/samples/localize/resources/news/news.src"
  icon="/quickstart/aspplus/images/resources2.gif"
  caption="c# news.aspx"
  runat="server" />
  </cstemplate>
  <vbtemplate>
<acme:sourceref
  runsample="/quickstart/aspplus/samples/localize/resources/news/vb/news.aspx"
  viewsource="/quickstart/aspplus/samples/localize/resources/news/news.src"
  icon="/quickstart/aspplus/images/resources2.gif"
  caption="vb news.aspx"
  runat="server" />
  </vbtemplate>
  <jstemplate>
<acme:sourceref
  runsample="/quickstart/aspplus/samples/localize/resources/news/js/news.aspx"
  viewsource="/quickstart/aspplus/samples/localize/resources/news/news.src"
  icon="/quickstart/aspplus/images/resources2.gif"
  caption="jscript news.aspx"
  runat="server" />
  </jstemplate>
</acme:langswitch>
</td>
</tr></table>

<!--begin section--> <br> <a name="satellite"> <br> <span class="subhead">使用附屬程序集</span>
<p>

查看前一節(jié)示例中的目錄結(jié)構(gòu),可以發(fā)現(xiàn)示例的資源不是從 dll 加載的,而是從 .resource 文件加載。 盡管這確實(shí)是一種解決方案,但還可以將代碼編譯為附屬程序集。 根據(jù)定義,附屬程序集是僅包含資源、不包含可執(zhí)行代碼的程序集。 有關(guān)附屬程序集的更多信息,請(qǐng)參閱<a href="/quickstart/howto/doc/createresources.aspx">如何... 創(chuàng)建資源? </a>一節(jié)。<p> .resources 文件由于不是 dll 而不是影像復(fù)制的,因此 web 站點(diǎn)在使用它們時(shí)可能會(huì)遇到鎖定問(wèn)題。認(rèn)識(shí)到這一點(diǎn),使用附屬程序集的優(yōu)點(diǎn)就變得十分明顯了。 另一種方法是使用應(yīng)用程序資源的并行主程序集。  主程序集包含可依靠的資源;附屬程序集(每區(qū)域性一個(gè))包含本地化資源。 主程序集安裝在 /bin 目錄中,而附屬程序集存儲(chǔ)在普通的 xx-xx 子目錄下(請(qǐng)參閱<a href="/quickstart/howto/doc/createresources.aspx">如何... 創(chuàng)建資源? </a>)。作為程序集,它們是影像復(fù)制的,而且不會(huì)被鎖定。 若要?jiǎng)?chuàng)建程序集識(shí)別的 .asp 應(yīng)用程序:
<p>

<ol>
<li>創(chuàng)建資源 dll 并將其復(fù)制到 /bin 目錄中。例如:<p> resgen qq.txt qq.resources<br> al /embed:qq.resources, qq.resources, y /out:qq.dll<p> “y”指示 blob 是否應(yīng)對(duì)其他程序集可見(jiàn)。  由于 <b>resourcemanager</b> 位于 mscorlib 中而且是一個(gè)不同于“qq”的程序集,因此 .resources 文件必須是公共可見(jiàn)的。  “y”指示這是否應(yīng)是公共的。<p>
<li>在頁(yè)上包括以下語(yǔ)句。 注意,此處的程序集名稱(chēng)位于在 mscorlib 中定義的 <b>system.reflection</b> 命名空間中(編譯時(shí)總要引用它):
<p><acme:tabcontrol runat="server">
<tab name="c#"> <% assembly a = assembly.load("qq"); resourcemanager rm = new resourcemanager("qq", a); response.write(rm.getstring("key")); %>
</tab>
<tab name="vb"> <% dim a as assembly = assembly.load("qq") dim rm as resourcemanager = new resourcemanager("qq", a) response.write(rm.getstring("key")) %>
</tab>
<tab name="jscript"> <% var a:assembly = assembly.load("qq"); var rm:resourcemanager = new resourcemanager("qq", a); response.write(rm.getstring("key")); %>
</tab>
</acme:tabcontrol>
<p>
<li>將每個(gè)附屬資源編譯到各自的程序集中,并將其放入 /bin 目錄中所需的正確目錄結(jié)構(gòu)中:<p>

        al /embed:qq.en-us.resources,qq.en-us.resources, y /out:qq.resources.dll /c:en-us<p>

        將代碼替換為正在將 <i>en-us</i> 本地化到的區(qū)域性。 記住,<b>/c:</b> 標(biāo)記是區(qū)域性說(shuō)明符。
</ol> 將 dll 放置到正確的位置(上例中的 /bin 和 /bin/en-us)后,即可適當(dāng)?shù)貦z索資源。 注意,一切都通過(guò)程序集緩存得到影像復(fù)制,因此是可替換的,從而避免了潛在的鎖定情況。
<p>

<!--begin section--> <br> <a name="satellitecont"> <br> <span class="subhead">對(duì)控件使用附屬程序集</span>
<p>

已編譯的代碼隱藏控件還可使用附屬程序集提供本地化內(nèi)容。 從部署的角度看,這尤其是一件好事,因?yàn)楦綄俪绦蚣瘜?duì)代碼可以是與版本無(wú)關(guān)的。 因此,只需將附屬程序集的模塊復(fù)制到服務(wù)器,即可提供對(duì)附加語(yǔ)言的支持,而不需要進(jìn)行代碼更改。<p>

下面的示例包含程序集 <b>localizedcontrols</b>(模塊 localizedcontrols.dll)中的 <b>localizedbutton</b> 控件。 編譯控件在頁(yè) showcontrols.aspx 上注冊(cè)并在稍后使用:

<div class="code"><pre> <%@register tagprefix="loc" namespace="localizedcontrols" %> ... <loc:localizedbutton runat="server" text="ok" />
</pre></div>

<p> <b>localizedbutton</b> 控件存儲(chǔ) <b>resourcemanager</b> 實(shí)例,該實(shí)例由 <b>localizedbutton</b> 的所有實(shí)例共享。 每當(dāng)呈現(xiàn)一個(gè)控件時(shí),<b>text</b> 屬性的值便由本地化版本替換:

<p><acme:tabcontrol runat="server">
<tab name="c#"> _rm = new resourcemanager("localizedstrings", assembly.getexecutingassembly(), null, true ); ... override protected void render(htmltextwriter writer) { text = resourcefactory.rmanager.getstring(text); base.render(writer); }
</tab>

<tab name="vb"> _rm = new resourcemanager("localizedstrings", _ assembly.getexecutingassembly(), _ nothing, _ true ) ... overrides protected sub render (writer as htmltextwriter) text = resourcefactory.rmanager.getstring(text) base.render(writer) end sub
</tab>

<tab name="jscript"> _rm = new resourcemanager("localizedstrings", assembly.getexecutingassembly(), null, true ); ... override protected function render(writer:htmltextwriter) : void { text = resourcefactory.rmanager.getstring(text); base.render(writer); }
</tab>

</acme:tabcontrol><p>

<b>resourcemanager</b> 實(shí)例負(fù)責(zé)將鍵解析為本地化資源。 如果具有正確區(qū)域性的附屬程序集不可用,并且找不到相關(guān)的區(qū)域性,則使用主程序集的非特定語(yǔ)言資源(“en-us”<nobr>-></nobr>“en”<nobr>-></nobr>“非特定語(yǔ)言”)。 只需將新附屬程序集的模塊文件復(fù)制到適當(dāng)?shù)奈恢茫纯商峁┝硪环N語(yǔ)言支持。
<p>

<table><tr>
<td>
<acme:sourceref
  viewsource="/quickstart/aspplus/samples/localize/resources/controls/controls.src"
  icon="/quickstart/images/genicon.gif"
  caption="localized controls"
  runat="server" />
</td>
<td>
<acme:langswitch runat="server">
  <cstemplate>
<acme:sourceref
  runsample="/quickstart/aspplus/samples/localize/resources/showcontrols/cs/showcontrols.aspx"
  viewsource="/quickstart/aspplus/samples/localize/resources/showcontrols/showcontrols.src"
  icon="/quickstart/aspplus/images/resources1.gif"
  caption="c# using localized controls"
  runat="server" />
  </cstemplate>
  <vbtemplate>
<acme:sourceref
  runsample="/quickstart/aspplus/samples/localize/resources/showcontrols/vb/showcontrols.aspx"
  viewsource="/quickstart/aspplus/samples/localize/resources/showcontrols/showcontrols.src"
  icon="/quickstart/aspplus/images/resources1.gif"
  caption="vb using localized controls"
  runat="server" />
  </vbtemplate>
  <jstemplate>
<acme:sourceref
  runsample="/quickstart/aspplus/samples/localize/resources/showcontrols/js/showcontrols.aspx"
  viewsource="/quickstart/aspplus/samples/localize/resources/showcontrols/showcontrols.src"
  icon="/quickstart/aspplus/images/resources1.gif"
  caption="jscript using localized controls"
  runat="server" />
  </jstemplate>
</acme:langswitch>
</td>
</tr></table>

<p>


<h4><a name="summary">本節(jié)小結(jié)</a></h4>
<ol>
<li>asp.net 頁(yè)可使用資源類(lèi)將資源中可本地化的內(nèi)容分離出來(lái),這部分內(nèi)容在運(yùn)行時(shí)被選定。
<li>另一個(gè)好辦法是使用附屬程序集而不是中間的 .resources 文件加載資源,因?yàn)檫@樣可避免鎖定問(wèn)題。
<li>已編譯控件可包含它們自己的資源,并將根據(jù)宿主頁(yè)的 <b>uiculture</b> 來(lái)選擇正確的本地化內(nèi)容。
</ol>


<!-- #include virtual="/quickstart/aspplus/include/footer.inc" -->
 


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 建宁县| 安仁县| 吕梁市| 三明市| 通山县| 涞水县| 耒阳市| 沙坪坝区| 克什克腾旗| 宝应县| 江陵县| 合肥市| 靖江市| 福泉市| 瓦房店市| 宁蒗| 寿宁县| 阿克苏市| 邹平县| 池州市| 千阳县| 正蓝旗| 诸暨市| 沙洋县| 枣阳市| 宜宾县| 玉龙| 阜平县| 仁寿县| 安义县| 英超| 墨竹工卡县| 鸡西市| 互助| 盐池县| 改则县| 镇雄县| 富宁县| 县级市| 上高县| 长汀县|