日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Web應(yīng)用程序中ResourceBundle技術(shù)概述

背景概述

創(chuàng)新互聯(lián)主要從事成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)順昌,10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108

世界經(jīng)濟(jì)日益全球化的同時(shí),一個(gè)應(yīng)用程序需要在全球范圍內(nèi)使用勢(shì)在必然。傳統(tǒng)的程序設(shè)計(jì)方法將可翻譯信息如菜單按鈕的標(biāo)簽,提示信息,幫助文檔等文字信息硬編碼在程序代碼中,不能很好的適應(yīng)全球化發(fā)展,程序的擴(kuò)展性差,維護(hù)成本高。一個(gè)能支持全球化的應(yīng)用程序,必須實(shí)現(xiàn)單一可執(zhí)行的程序,動(dòng)態(tài)地使用資源(Single Source Single Executable),圖1 是兩種模型的對(duì)比圖。

圖 1. 傳統(tǒng)的程序模型和支持全球化程序模型

對(duì)于一個(gè)能支持全球化的應(yīng)用程序來說:

一方面需要考慮的是用戶的語言環(huán)境(我們稱作 Language Locale):這里主要就是指翻譯,在不同的國家用他們自己的語言正確運(yùn)作軟件,讓客戶感覺這個(gè)產(chǎn)品是為他們而設(shè)計(jì)的;

另一方面就是用戶的文化環(huán)境(我們稱作 Culture Locale):主要處理的是多元文化的支持,包括貨幣、日歷、時(shí)間、日期、排序、界面方向性(Bi-directional) 等符合各個(gè)國家自己習(xí)慣的顯示方式。

圖2 概述了如何使得一個(gè)應(yīng)用程序(C/S 或者 B/S)支持全球化和本地化。

圖 2. 全球化應(yīng)用程序

本文結(jié)合項(xiàng)目實(shí)踐,總結(jié)了 web 應(yīng)用程序中 Java,JSP,Dojo 和 HTML 四種不同語言是如何管理 Resource Bundle 的,實(shí)現(xiàn)單一可執(zhí)行程序動(dòng)態(tài)讀取資源文件,從而支持全球化和本地化。主要從三個(gè)方面來闡述:資源文件存儲(chǔ)和命名規(guī)則;用戶語言區(qū)域信息的讀取;如何取得對(duì)應(yīng)語言的資源文件中的鍵值。

Java 程序中的 Resource Bundle 管理

ResourceBundle 是一個(gè)機(jī)制,主要用來根據(jù)用戶的語言環(huán)境展示不同的界面文字給用戶,讓用戶感覺這個(gè)應(yīng)用程序?yàn)槲叶ㄖ啤?/p>

然而 Java 中的 ResourceBundle 是一個(gè)類,包含在標(biāo)準(zhǔn)的 Java 發(fā)行版中。圖3總結(jié)了 Java 程序中 ResourceBundle 的管理機(jī)制。

圖 3. Java 程序 Resource Bundle 管理流程

Java 程序中資源文件的存儲(chǔ)和命名

在一個(gè)多模塊的 Java 應(yīng)用程序中,一般每個(gè)模塊都有自己獨(dú)立的資源文件(也叫 Resource Bundles),Resource Bundle 一般存儲(chǔ)在對(duì)應(yīng)模塊的 src/resources/bundles/java/ 目錄下面。通常的命名規(guī)則是:模塊名_語言_國家 .properties({moduleName}_{language}_{country}.properties)。對(duì)應(yīng)資源文件中的每一個(gè) key,一般都是小寫字母開頭,用下劃線表示這個(gè) key 在程序中的層級(jí)結(jié)構(gòu),并且按照字母順序排序,便于管理和查找,如清單1所示的例子。

清單 1. Java properties 文件示例

 
 
 
 
  1. 英文Properties 文件:
  2.     helloKey=Hello!
  3.     goodMorningKey=Good Morning!
  4.     goodEveningKey=Good Evening!
  5.     
  6. 日語Properties 文件:
  7.     helloKey=\u3053\u3093\u306b\u3061\u306f!
  8.     goodMorningKey=\u304a\u306f\u3088\u3046!
  9.     goodEveningKey=\u3053\u3093\u3070\u3093\u306f!

Java 程序?qū)Y源文件的回滾機(jī)制:當(dāng)對(duì)應(yīng)翻譯的資源文件不存在時(shí),將使用"默認(rèn)"的資源文件(通常為英文),圖 4 是 Java 資源文件的組織方式。

圖 4. Java 資源文件組織方式

Java 中用戶語言環(huán)境(Locale)和資源文件的讀取

根據(jù)用戶使用的區(qū)域信息來決定從哪個(gè) Resource Bundle 里面讀取對(duì)應(yīng)的 key 值。Java 語言通過 java.util.Locale 類來表示區(qū)域,一個(gè) Locale 實(shí)例就代表了一個(gè)特定的區(qū)域。在實(shí)際的項(xiàng)目中,通常將讀取資源文件包裝成一個(gè)類,方便后續(xù)代碼的重用和管理,如清單 2 的示例所示。

清單 2. Java 中 ResourceBundleService 使用

 
 
 
 
  1. public class LocalizedPropertyResources extends MessageResources { 
  2. private static final String MODULE_NAME = "resourceBundle.module.name"; 
  3. public String getProperty(String key, Object... parameters) { 
  4. Locale locale = getUserLocale(); 
  5. String value = getProperty(key, locale, parameters); 
  6. Return value; 
  7. public String getProperty(String key, Locale locale, Object... parameters) { 
  8. ResourceBundle resourceBundle = ResourceBundle.getBundle(MODULE_NAME, locale); 
  9. String value resourceBundle.getString(key, parameters); 
  10. return value; 
  11. }

JSP 中的 Resource Bundle 管理

資源文件管理:JSP 是基于 Java 技術(shù),所以 Java 中的 ResourceBundle 機(jī)制也可以應(yīng)用于 JSP,同樣以 .properties 形式存儲(chǔ)資源文件,資源文件的命名規(guī)則、資源文件的存儲(chǔ)結(jié)構(gòu),key 的命名規(guī)則等都可以遵循 Java 程序中的 Resource Bundle 管理機(jī)制。

用戶語言環(huán)境的設(shè)定:HTTP 協(xié)議通過 Accept-Language 請(qǐng)求頭將本地化信息從瀏覽器傳遞至服務(wù)器, JSTL fmt 庫中的定制標(biāo)記又會(huì)利用這些方法來自動(dòng)地確定用戶的語言環(huán)境,從而相應(yīng)地調(diào)整它們的輸出。同時(shí)用戶也可以通過 來設(shè)置用戶語言環(huán)境。

對(duì)于 JSP 中資源文件的讀取有以下三種情況:

1、使用 fmt 消息標(biāo)簽:JSP 標(biāo)準(zhǔn)標(biāo)簽庫(JSP Standard Tag Library,JSTL)中的 fmt標(biāo)簽支持通過資源文件(ResourceBundle)對(duì)文本內(nèi)容進(jìn)行本地化,該功能可以對(duì)一個(gè)特定的語言請(qǐng)求作出相應(yīng)的響應(yīng),它使用了 J2SE 的 ResourceBundle 來保持各種翻譯過的語言編碼。另外用來設(shè)置地區(qū),比如,這等于設(shè)定了語言和國家代碼。默認(rèn) JPS 將讀取 Accept-Language 信息。還可以指定 ResourceBundle,比如: 。一旦設(shè)定了 locale(地區(qū))或 ResourceBundle,就可以使用 來把原文進(jìn)行相應(yīng)的轉(zhuǎn)化,同時(shí)還可以使用< fmt:requestEncoding/>來設(shè)定請(qǐng)求的字符編碼。如清單3 示例所示:

清單 3. JSTL fmt 標(biāo)簽示例

 
 
 
 
  1. //myTest.jsp
  2. <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
  3.   
  4.     JSTL fmt: Localized tag testing
  5.   
  6.  
  7.   
  8.   
  9.   
  10.   
  11.       
  12.       
  13.   
  14. //也可以通過下面的方式獲取資源文件
  15.   
  16.     …
  17.     
  18.     
  19.      …
  20.   

2、被 Spring 管理的 JSP,通常 JSP 中有這樣的 taglig"",這種情況下可以使用 Spring message 標(biāo)簽。

 
 
 
 
  1. <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 

3、對(duì)于由 Struts 操作類提供的JSP,可以使用 Struts bean 消息標(biāo)簽:

 
 
 
 
  1. <%@ taglib uri="/tags/struts-bean" prefix="bean" %> 

Dojo 中的 Resource Bundle 管理

Dojo 是一個(gè) JavaScript 庫,提供了一個(gè)有用的工具來創(chuàng)建豐富的 Web 客戶端界面。同時(shí) Dojo 也提供了 API 支持全球化功能,如翻譯資源包,函數(shù)的格式化和解析日期、數(shù)字和貨幣,Dojo 對(duì)全球化的支持主要基于 CLDR (Common Locale Data Repository) 和 ICU 的使用。 這一小節(jié)總結(jié)了 Dojo 中資源文件的管理,用戶區(qū)域信息(locale)和資源文件的讀取,如圖5所示。

圖 5. Dojo 中資源文件管理

Dojo 中資源文件的存儲(chǔ)和命名

UTF-8 是 Dojo 程序編碼的先決條件,Dojo 腳本一般將使用 HTML,JSP,Servlet,js等編寫,所以這些文件必須以 UTF-8 編碼。Dojo 用 JSON 格式來組織資源文件,首先在 /nls 目錄下有一個(gè)主資源文件(一般是英文),主資源文件中定義了支持的區(qū)域,區(qū)域的值設(shè)置為 true 或者 false,如清單4所示。

清單 4. Dojo 主資源文件的定義

 
 
 
 
  1. define({
  2.       root: {
  3.         OK: "Ok",
  4.         CANCEL: "Cancel",
  5.         OK_CANCEL: "${OK}, ${CANCEL}"
  6.       },
  7.       "ko": true,
  8.       "ja": true,
  9.       "ru": false,
  10.       "zh-cn": true
  11.     });

翻譯的資源文件應(yīng)放在/ nls / 目錄中,目錄的命名需要符合下面的規(guī)范:

  • 目錄的名稱必須要全部小寫
  • 用橫線(而不是下劃線)分割語言和國家,比如 zh-cn,zh-tw 等,如清單5所示。

清單 5. 翻譯資源文件的目錄結(jié)構(gòu)

 
 
 
 
  1. /src/web/js/nls/menu.js       ... 主資源文件,用于默認(rèn)的消息顯示
  2.     /src/web/js/nls/ko/menu.js    ... 韓語的翻譯文件
  3.                     /ja/menu.js    ... 日語的翻譯文件
  4.                     /ru/menu.js    ...俄語的翻譯文件
  5.                      /zh-cn/menu.js  ...簡中的翻譯文件
  6.                     ...

Dojo 資源文件的回滾機(jī)制為:在 / nls 目錄的根目錄下如果檢測到區(qū)域設(shè)置,但 nls 目錄中不存在特定于區(qū)域設(shè)置的資源,則將使用主包;當(dāng)主資源文件中某個(gè)語言設(shè)置為 false 時(shí),即使該語言的資源文件存在,也將使用主包。

Dojo 中用戶語言環(huán)境(Locale)和資源文件的讀取

Dojo 和 Java 以相同的方式支持用戶區(qū)域信息,但 Dojo 和 Java 實(shí)現(xiàn)之間存在微小差異。

  • "Dojo 和 Java 對(duì)區(qū)域設(shè)置命名約定有一些區(qū)別,Dojo 使用" - "(連字符)作為連接語言代碼,國家代碼和變體的分隔符,而 Java 使用"_"(下劃線)。例如,Java 中的 "zh_CN" 與 Dojo 中的 "zh-cn" 相似。
  • 像 Java 中的默認(rèn)用戶語言區(qū)域一樣,Dojo 有一個(gè)全局變量 dojo.locale 用來存儲(chǔ)默認(rèn) locale 值,但是我們不能直接修改 dojo.locale,可以通過 dojoConfig.locale 來對(duì) dojo.locale 做初始化工作。
  • 如果 dojoConfig.locale 未定義,Dojo 使用瀏覽器的顯示語言作為用戶區(qū)域設(shè)置。另外 dojoConfig.locale 的設(shè)定需要在加載 dojo.js 之前,這樣設(shè)置的 dojoConfig.locale 才會(huì)起效果。如清單 6 是一個(gè)示例將用戶的 locale 信息保存在 sessionScope,然后傳遞給 dojoConfig。

清單 6. 將用戶 locale 保存在 sessionScope 傳遞給 dojoConfig

 
 
 
 
  1. var dojoConfig = {
  2.             async: 'sync',
  3.             baseUrl: '',
  4.             locale: '${sessionScope.userLanguageLocale}',
  5.             
  6.              bindEncoding: "utf-8",
  7.                 …
  8.         };

userLanguageLocale:是應(yīng)用程序中用戶所設(shè)定的 locale,每個(gè)應(yīng)用程序可能不太一樣。

Dojo 中有兩種方式讀取資源文件:

方式 1:又叫 AMD 方式,通過 dojo/i18n! 這個(gè)插件加載資源文件,首先檢測 dojoConifg.locale 是否設(shè)置,如果設(shè)置了就讀取 dojoConfig.locale,否則就會(huì)使用瀏覽器的顯示語言讀取對(duì)應(yīng)的翻譯資源文件。清單 7 是 dojo/i18n! 的使用示例。

清單 7. Dojo/i18n!使用示例

 
 
 
 
  1. ... 
  2.  
  3.  
  4. ...

方式 2: 使用 dojo.requireLocalization 加載資源文件,dojo.i18n.getLocalization 讀取資源文件,這個(gè)是舊的資源加載方式,新的 Dojo 版本都將采用 AMD 的方式,不過這種方式用戶可以指定 locale 信息,缺省 locale 的時(shí)候,采用和 AMD 同樣的 locale 解析方式。清單8 是一個(gè)示例。

清單 8. Dojo. requireLocalization 使用示例

 
 
 
 
  1.  
  2.  
  3. ...

HTML 中的 Resource Bundle 管理

HTML 中的硬編碼(Hard Code)通常分為兩種情況:一種情況是 HTML 頁面不涉及任何編程邏輯,這時(shí)候可以翻譯整個(gè) HTML 文件(這種方式在開發(fā)過程中不需要特殊處理),或者將 HTML 變更為 JSP,這樣就可以利用 JSP 中 fmt 標(biāo)簽將 Hard Code 提取出來,如清單 9 示例所示。

清單 9. HTML 更改為 JSP

 
 
 
 
  1. //Index.html 
  2.  
  3.  
  4.  
  5.  Welcome Page  
  6.  
  7.  
  8. … 
  9.  
  10.  
  11. //將 Index.html 更改為 Index.jsp,這樣就可以利用 JSP 中 fmt 標(biāo)簽 
  12. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
  13. <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 
  14.  
  15.  
  16.  
  17.  <fmt:message key="common_welcome" /></ title> </li> <li></head> </li> <li><body> </li> <li>… </li> <li></body> </li> <li></html> </li> <li>//test.properties</li> <li> Common_welcome=Welcome Page </li> <li>…</li> </ol></pre><p>//將 Index.html 更改為 Index.jsp,這樣就可以利用 JSP 中 fmt 標(biāo)簽</p><p>另外一種情況是 HTML 作為 Dojo widget 模板文件,這種情況下可以使用 dojo API 的 i18n 庫來處理硬編碼消息,其處理方式和 Dojo 很類似,模板 HTML 文件中使用的 Key 需要在 Widget 的 js 文件中定義和獲取。下面將通過示例介紹 HTML 作為 Dojo 模板文件時(shí),如何抽取當(dāng)中的 hard code 信息。通常分三個(gè)步驟完成模板 HTML 文件中的字符串抽取。</p><p>***步: 將 HTML 中的字符串放到一個(gè)資源文件如 message.js 中,資源文件的組織方式和 Dojo 是一樣的;</p><p>第二步: 在 Dojo widget 的 js 文件中使用 Dojo Resource Bundle 獲取資源文件,定義變量獲取對(duì)應(yīng)的Key值;</p><p>第三步: 在HTML模板文件中使用 Dojo .js 文件中定義的變量。如清單 10 所示。</p><p><strong>清單 10. HTML 作為 Dojo Widget 模板</strong></p><pre> <ol> <li>Test.html </li> <li><div dojoAttachPoint="testNode" style="display:inline"> </li> <li><table style="position: relative; margin: 20px 0 0 120px; padding: 0;"> </li> <li><tr> </li> <li><td style="text-align: right;">Username:</td> //原來的 hard code </li> <li><td style="text-align: right;">${usernameLabel}</td> //Resource out 之后的變量引用 </li> <li>…. </li> <li></tr> </li> <li></div> </li> <li>Test.js </li> <li>dojo.requireLocalization("js", "message"); </li> <li>dojo.declare("Test") { </li> <li>templatePath: dojo.moduleUrl("common", " /html/Test.html"), </li> <li>usernameLabel: "", </li> <li>postMixInProperties: function(){ </li> <li>this.inherited(arguments); </li> <li>var resources = dojo.i18n.getLocalization("js", "message"); </li> <li>this.usernameLabel = resources.labels.username; //獲取資源文件 </li> <li>} </li> <li>}</li> </ol></pre><p>清單 11. HTML 中特殊硬編碼處理</p><pre> <ol> <li>// Hard Code </li> <li><html> </li> <li><body> </li> <li><select id="Product"> </li> <li><option>Is Not</option> </li> <li><option>Is</option> </li> <li></select> </li> <li></body> </li> <li></html> </li> <li>//處理后的 HTML </li> <li><html> </li> <li><body> </li> <li><select id="Product"> </li> <li><option value="Is Not"> ${ Label.IS_NOT}</option></li> <li><option value="Is">${Label.IS}</option> </li> <li></select> </li> <li></body> </li> <li></html></li> </ol></pre><p><strong>總結(jié)</strong></p><p>本文總結(jié)了如何存儲(chǔ) web 應(yīng)用程序中使用不同框架時(shí)的資源文件及其命名規(guī)則,如何取得資源文件中的鍵值。希望這篇文章能為正在開發(fā)國際化 Web 應(yīng)用程序的讀者提供一定的參考價(jià)值。</p> <br> 文章標(biāo)題:Web應(yīng)用程序中ResourceBundle技術(shù)概述 <br> URL網(wǎng)址:<a href="http://www.dlmjj.cn/article/copegce.html">http://www.dlmjj.cn/article/copegce.html</a> </div> <div id="pkqe9jq" class="hot_new"> <div id="aapu97d" class="page_title clearfix"> <h3>其他資訊</h3> </div> <div id="vo8z4ds" class="news_list clearfix"> <ul> <li> <a href="/article/dpjijop.html">筆記本藍(lán)屏怎么解決</a> </li><li> <a href="/article/dpjijoh.html">如何自己搭建海外服務(wù)器,以滿足個(gè)人或商業(yè)需求</a> </li><li> <a href="/article/dpjijdi.html">什么是Linux高防服務(wù)器程序規(guī)范?</a> </li><li> <a href="/article/dpjijdp.html">windows喚醒硬盤?(如何喚醒硬盤)</a> </li><li> <a href="/article/dpjijcj.html">日本服務(wù)器目前過載</a> </li> </ul> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <!-- 底部信息 --> <div id="xq7digd" class="footer wow fadeInUp"> <div id="g9jszwd" class="rowFluid"> <div id="vedqo8e" class="span12"> <div id="ypundbg" class="container"> <div id="7flzvlb" class="footer_content"> <div id="gnlu89k" class="span4 col-xm-12"> <div id="gifm3yx" class="footer_list"> <div id="xzpv3zf" class="span6"> <div id="jsrf2vf" class="bottom_logo"><img src="/Public/Home/images/ewm.jpg" alt="微信服務(wù)號(hào)二維碼" /></div> </div> <div id="4ixl6vl" class="span6 col-xm-12"> <div id="x9apxf2" class="quick_navigation"> <div id="arwmcif" class="quick_navigation_title">快速導(dǎo)航</div> <ul> <li><a title="成都車身改色" target="_blank">成都車身改色</a></li><li><a title="簡陽服務(wù)器托管" target="_blank">簡陽服務(wù)器托管</a></li><li><a title="成都柴油發(fā)電機(jī)租賃" target="_blank">成都柴油發(fā)電機(jī)租賃</a></li><li><a title="樹脂發(fā)光字" target="_blank">樹脂發(fā)光字</a></li><li><a title="成都logo設(shè)計(jì)公司" target="_blank">成都logo設(shè)計(jì)公司</a></li><li><a title="宣威網(wǎng)站建設(shè)" target="_blank">宣威網(wǎng)站建設(shè)</a></li><li><a title="阿壩柴油發(fā)電機(jī)" target="_blank">阿壩柴油發(fā)電機(jī)</a></li><li><a title="成都導(dǎo)視系統(tǒng)設(shè)計(jì)" target="_blank">成都導(dǎo)視系統(tǒng)設(shè)計(jì)</a></li><li><a title="成都網(wǎng)站推廣公司" target="_blank">成都網(wǎng)站推廣公司</a></li><li><a title="成都出口托盤" target="_blank">成都出口托盤</a></li><li><a title="led顯示屏" target="_blank">led顯示屏</a></li> </ul> </div> </div> </div> </div> <div id="4kaomj3" class="span4 col-xm-6 col-xs-12"> <div id="rtzxcja" class="footer_list"> <div id="8pn1wdb" class="footer_link"> <div id="pyoomt3" class="footer_link_title">友情鏈接</div> <ul id="frientLinks"> <a title="網(wǎng)站制作" target="_blank">網(wǎng)站制作</a> <a title="網(wǎng)站建設(shè)" target="_blank">網(wǎng)站建設(shè)</a> <a title="成都網(wǎng)絡(luò)推廣" target="_blank">網(wǎng)絡(luò)推廣</a> <a title="成都網(wǎng)站推廣" target="_blank">網(wǎng)站推廣</a> <a title="成都微信小程序開發(fā)" target="_blank">小程序開發(fā)</a> <a title="創(chuàng)新互聯(lián)網(wǎng)站欄目導(dǎo)航" target="_blank">網(wǎng)站導(dǎo)航</a> </ul> <div id="mzpvtjz" class="footer_link_title">網(wǎng)站建設(shè)</div> <ul id="frientLinks"> <li><a href="/">四川平武建站</a></li> <li><a title="創(chuàng)新互聯(lián)網(wǎng)站欄目導(dǎo)航" target="_blank">網(wǎng)站導(dǎo)航</a></li> </ul> </div> </div> </div> <div id="vjh7tho" class="span4 col-xm-6 col-xs-12"> <div id="ubzvsz3" class="footer_list"> <div id="iiy977k" class="footer_cotact"> <div id="gpmchgf" class="footer_cotact_title">聯(lián)系方式</div> <ul> <li><span id="4f3pyfm" class="footer_cotact_type">企業(yè):</span><span id="sjywubq" class="footer_cotact_content">四川綿陽平武網(wǎng)站建設(shè)工作室</span></li> <li><span id="tcroujq" class="footer_cotact_type">地址:</span><span id="7p99ebh" class="footer_cotact_content">成都市青羊區(qū)太升南路288號(hào)</span></li> <li><span id="ypdrxe4" class="footer_cotact_type">電話:</span><span id="4rp4bpw" class="footer_cotact_content"><a href="tel:18980820575" class="call">18980820575</a></span></li> <li><span id="ww7pfkr" class="footer_cotact_type">網(wǎng)址:</span><span id="yh4kihe" class="footer_cotact_content"><a href="/" title="四川平武網(wǎng)站建設(shè)">www.dlmjj.cn</a></span></li> </ul> </div> </div> </div> </div> </div> <div id="dzflsyo" class="copyright"> <p>公司名稱:四川綿陽平武網(wǎng)站建設(shè)工作室 聯(lián)系電話:18980820575</p> <p><a target="_blank" rel="nofollow">網(wǎng)站備案號(hào):蜀ICP備2024061352號(hào)-3</a></p> <p>四川平武建站 四川平武網(wǎng)站建設(shè) 四川平武網(wǎng)站設(shè)計(jì) 四川平武網(wǎng)站制作 <a target="_blank">成都做網(wǎng)站</a></p> </div> </div> </div> </div> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://www.dlmjj.cn/" title="日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区">日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区</a> <div class="friend-links"> <a href="http://www.mozom.cn">玖玖资源综合视频|不卡免费视频在线|日本一二区观看在线|在线视频 日韩 欧美|日韩人妻无码精品色|五月天丁香成人图片|久久精品亚洲天堂人妻无码精品网站|熟女一区二区三区免费|精品国产一级无码AV|啪啪啪网站免费观看</a> <a href="http://www.sdshangyuan.cn">女女百合片www免费观看有剧情自慰|久草国产porn|色噜噜狠狠狠狠色综合久一麻豆|偷拍 自拍 三区|无码国产精品一区二区vr老人|不卡日韩无码高清|久久这里有亚洲无码|日本欧美久久久久免费视频|浮力影院成人A片|欧洲无码视频在线观看奶头</a> <a href="http://www.hamihami.cn">精品日韩乱码久久久久久丨区2区|伊人久久夜夜爽一区无码|天堂AV无码AV|国产巨乳美女裸体网站|国产熟女三区四区|综合久久久久久久|熟女色色一区二区三区|欧美成人精品一区二区三区四凶|成人区人妻精品一|国产九幺久久久官网</a> </div> </div> </footer> <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body><div id="iojac" class="pl_css_ganrao" style="display: none;"><button id="iojac"><big id="iojac"><label id="iojac"><em id="iojac"></em></label></big></button><thead id="iojac"></thead><fieldset id="iojac"><button id="iojac"><dd id="iojac"><dl id="iojac"></dl></dd></button></fieldset><kbd id="iojac"></kbd><big id="iojac"></big><div id="iojac"></div><s id="iojac"><ul id="iojac"><dfn id="iojac"><rt id="iojac"></rt></dfn></ul></s><kbd id="iojac"></kbd><var id="iojac"></var><div id="iojac"></div><tr id="iojac"><s id="iojac"><dfn id="iojac"><menuitem id="iojac"></menuitem></dfn></s></tr><dl id="iojac"><dfn id="iojac"><sub id="iojac"><td id="iojac"></td></sub></dfn></dl><fieldset id="iojac"><var id="iojac"><dd id="iojac"><thead id="iojac"></thead></dd></var></fieldset><delect id="iojac"></delect><tt id="iojac"><tfoot id="iojac"><input id="iojac"><delect id="iojac"></delect></input></tfoot></tt><meter id="iojac"><s id="iojac"><dfn id="iojac"><dfn id="iojac"></dfn></dfn></s></meter><form id="iojac"></form><menuitem id="iojac"><tfoot id="iojac"><small id="iojac"><delect id="iojac"></delect></small></tfoot></menuitem><video id="iojac"><output id="iojac"><fieldset id="iojac"><code id="iojac"></code></fieldset></output></video><thead id="iojac"><video id="iojac"><sub id="iojac"><strike id="iojac"></strike></sub></video></thead><kbd id="iojac"><form id="iojac"><legend id="iojac"><output id="iojac"></output></legend></form></kbd><ul id="iojac"></ul><rt id="iojac"></rt><ul id="iojac"><span id="iojac"><i id="iojac"><kbd id="iojac"></kbd></i></span></ul><meter id="iojac"><s id="iojac"><dfn id="iojac"><dfn id="iojac"></dfn></dfn></s></meter><output id="iojac"><menuitem id="iojac"><i id="iojac"><small id="iojac"></small></i></menuitem></output><video id="iojac"></video><delect id="iojac"><acronym id="iojac"><label id="iojac"><samp id="iojac"></samp></label></acronym></delect><rt id="iojac"><input id="iojac"><meter id="iojac"><strike id="iojac"></strike></meter></input></rt><span id="iojac"><code id="iojac"><ins id="iojac"><wbr id="iojac"></wbr></ins></code></span><samp id="iojac"></samp><fieldset id="iojac"><button id="iojac"><thead id="iojac"><label id="iojac"></label></thead></button></fieldset><center id="iojac"><thead id="iojac"><dfn id="iojac"><sup id="iojac"></sup></dfn></thead></center><sub id="iojac"><td id="iojac"><rp id="iojac"><center id="iojac"></center></rp></td></sub><small id="iojac"><delect id="iojac"><acronym id="iojac"><label id="iojac"></label></acronym></delect></small><em id="iojac"><sub id="iojac"><sup id="iojac"><rp id="iojac"></rp></sup></sub></em><s id="iojac"><menu id="iojac"><menuitem id="iojac"><dl id="iojac"></dl></menuitem></menu></s><menu id="iojac"></menu><input id="iojac"></input><td id="iojac"><i id="iojac"><center id="iojac"><form id="iojac"></form></center></i></td><tt id="iojac"><dd id="iojac"><label id="iojac"><pre id="iojac"></pre></label></dd></tt><strike id="iojac"></strike><dl id="iojac"></dl><sup id="iojac"><rp id="iojac"><big id="iojac"><dl id="iojac"></dl></big></rp></sup><tr id="iojac"><acronym id="iojac"><dfn id="iojac"><menuitem id="iojac"></menuitem></dfn></acronym></tr><pre id="iojac"></pre><div id="iojac"></div><s id="iojac"></s><sup id="iojac"></sup><dl id="iojac"></dl></div> </html>