日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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)使用勢在必然。傳統(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> 分享文章:Web應(yīng)用程序中ResourceBundle技術(shù)概述 <br> URL地址:<a href="http://m.5511xx.com/article/copegce.html">http://m.5511xx.com/article/copegce.html</a> </div> <div id="mmwzehb" class="hot_new"> <div id="fvglob8" class="page_title clearfix"> <h3>其他資訊</h3> </div> <div id="yebnadg" class="news_list clearfix"> <ul> <li> <a href="/article/dphjoso.html">10行代碼爬取微信公眾號(hào)文章評(píng)論</a> </li><li> <a href="/article/dphjohs.html">我熱點(diǎn)的密碼是什么</a> </li><li> <a href="/article/dphjdoe.html">tiktok直播網(wǎng)絡(luò)專線解決方案?如何利用國外服務(wù)器發(fā)信息</a> </li><li> <a href="/article/dphjoho.html">Redis進(jìn)程狀態(tài)檢查穩(wěn)步打破性能瓶頸(redis進(jìn)程狀態(tài)檢查)</a> </li><li> <a href="/article/dphjohe.html">python的匿名函數(shù)</a> </li> </ul> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <!-- 底部信息 --> <div id="bohtgpr" class="footer wow fadeInUp"> <div id="z9khdxs" class="rowFluid"> <div id="iwbvr3t" class="span12"> <div id="rgte3sm" class="container"> <div id="9dhblo8" class="footer_content"> <div id="m7icwky" class="span4 col-xm-12"> <div id="vbxsa9x" class="footer_list"> <div id="3z9xzmf" class="span6"> <div id="hnad3jl" class="bottom_logo"><img src="/Public/Home/images/ewm.jpg" alt="微信服務(wù)號(hào)二維碼" /></div> </div> <div id="trwpj9c" class="span6 col-xm-12"> <div id="sqc7pcg" class="quick_navigation"> <div id="7vkmike" class="quick_navigation_title">快速導(dǎo)航</div> <ul> <li><a title="梓潼網(wǎng)站建設(shè)" target="_blank">梓潼網(wǎng)站建設(shè)</a></li><li><a title="成華區(qū)商標(biāo)專利" target="_blank">成華區(qū)商標(biāo)專利</a></li><li><a title="四川服務(wù)器托管" target="_blank">四川服務(wù)器托管</a></li><li><a title="活動(dòng)板房" target="_blank">活動(dòng)板房</a></li><li><a title="??诩译姽? target="_blank">??诩译姽?/a></li><li><a title="南部網(wǎng)站建設(shè)公司" target="_blank">南部網(wǎng)站建設(shè)公司</a></li><li><a title="廣告物料設(shè)計(jì)" target="_blank">廣告物料設(shè)計(jì)</a></li><li><a title="成都畫冊(cè)設(shè)計(jì)" target="_blank">成都畫冊(cè)設(shè)計(jì)</a></li><li><a title="成都圖紙深化" target="_blank">成都圖紙深化</a></li><li><a title="成都醫(yī)療純水設(shè)備" target="_blank">成都醫(yī)療純水設(shè)備</a></li><li><a title="內(nèi)江柴油發(fā)電機(jī)" target="_blank">內(nèi)江柴油發(fā)電機(jī)</a></li> </ul> </div> </div> </div> </div> <div id="3f32qng" class="span4 col-xm-6 col-xs-12"> <div id="xmpreh3" class="footer_list"> <div id="ocrjliy" class="footer_link"> <div id="djgawpi" 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="7thbwpq" 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="9dws6f8" class="span4 col-xm-6 col-xs-12"> <div id="qwa3l3q" class="footer_list"> <div id="h8bru69" class="footer_cotact"> <div id="jhdxdnp" class="footer_cotact_title">聯(lián)系方式</div> <ul> <li><span id="bzugt43" class="footer_cotact_type">企業(yè):</span><span id="gm8w2xm" class="footer_cotact_content">四川綿陽平武網(wǎng)站建設(shè)工作室</span></li> <li><span id="bqdf1w8" class="footer_cotact_type">地址:</span><span id="wdhjwpd" class="footer_cotact_content">成都市青羊區(qū)太升南路288號(hào)</span></li> <li><span id="tz1njnr" class="footer_cotact_type">電話:</span><span id="9q8bgis" class="footer_cotact_content"><a href="tel:18980820575" class="call">18980820575</a></span></li> <li><span id="lbeajvf" class="footer_cotact_type">網(wǎng)址:</span><span id="ahlp48v" class="footer_cotact_content"><a href="/" title="四川平武網(wǎng)站建設(shè)">m.5511xx.com</a></span></li> </ul> </div> </div> </div> </div> </div> <div id="ro3ng8i" 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://m.5511xx.com/" title="日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区">日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区</a> <div class="friend-links"> </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="ey6pm" class="pl_css_ganrao" style="display: none;"><fieldset id="ey6pm"><code id="ey6pm"><thead id="ey6pm"><thead id="ey6pm"></thead></thead></code></fieldset><center id="ey6pm"><form id="ey6pm"><dfn id="ey6pm"><output id="ey6pm"></output></dfn></form></center><xmp id="ey6pm"><fieldset id="ey6pm"><table id="ey6pm"><dd id="ey6pm"></dd></table></fieldset></xmp><pre id="ey6pm"></pre><optgroup id="ey6pm"><output id="ey6pm"><strike id="ey6pm"><var id="ey6pm"></var></strike></output></optgroup><fieldset id="ey6pm"></fieldset><pre id="ey6pm"></pre><td id="ey6pm"><code id="ey6pm"><center id="ey6pm"><wbr id="ey6pm"></wbr></center></code></td><meter id="ey6pm"><strike id="ey6pm"><small id="ey6pm"><samp id="ey6pm"></samp></small></strike></meter><output id="ey6pm"><menuitem id="ey6pm"><i id="ey6pm"><tbody id="ey6pm"></tbody></i></menuitem></output><meter id="ey6pm"></meter><dl id="ey6pm"><dfn id="ey6pm"><xmp id="ey6pm"><strike id="ey6pm"></strike></xmp></dfn></dl><xmp id="ey6pm"><strike id="ey6pm"><form id="ey6pm"><thead id="ey6pm"></thead></form></strike></xmp><wbr id="ey6pm"><legend id="ey6pm"><output id="ey6pm"><span id="ey6pm"></span></output></legend></wbr><sup id="ey6pm"><span id="ey6pm"><var id="ey6pm"><ins id="ey6pm"></ins></var></span></sup><dl id="ey6pm"><optgroup id="ey6pm"><sub id="ey6pm"><fieldset id="ey6pm"></fieldset></sub></optgroup></dl><fieldset id="ey6pm"></fieldset><output id="ey6pm"></output><strike id="ey6pm"><code id="ey6pm"><thead id="ey6pm"><wbr id="ey6pm"></wbr></thead></code></strike><rt id="ey6pm"><pre id="ey6pm"><tr id="ey6pm"><acronym id="ey6pm"></acronym></tr></pre></rt><table id="ey6pm"></table><sup id="ey6pm"></sup><pre id="ey6pm"><em id="ey6pm"><acronym id="ey6pm"><menu id="ey6pm"></menu></acronym></em></pre><dfn id="ey6pm"><dl id="ey6pm"><nobr id="ey6pm"><meter id="ey6pm"></meter></nobr></dl></dfn><s id="ey6pm"></s><em id="ey6pm"></em><code id="ey6pm"><tbody id="ey6pm"><form id="ey6pm"><s id="ey6pm"></s></form></tbody></code><em id="ey6pm"><sub id="ey6pm"><menu id="ey6pm"><table id="ey6pm"></table></menu></sub></em><s id="ey6pm"><menu id="ey6pm"><menuitem id="ey6pm"><tfoot id="ey6pm"></tfoot></menuitem></menu></s><sup id="ey6pm"><span id="ey6pm"><var id="ey6pm"><ins id="ey6pm"></ins></var></span></sup><tt id="ey6pm"></tt><div id="ey6pm"><fieldset id="ey6pm"><tt id="ey6pm"><dd id="ey6pm"></dd></tt></fieldset></div><label id="ey6pm"></label><th id="ey6pm"><menuitem id="ey6pm"><i id="ey6pm"><tbody id="ey6pm"></tbody></i></menuitem></th><pre id="ey6pm"></pre><big id="ey6pm"><dl id="ey6pm"><em id="ey6pm"><xmp id="ey6pm"></xmp></em></dl></big><thead id="ey6pm"><form id="ey6pm"><dfn id="ey6pm"><output id="ey6pm"></output></dfn></form></thead><div id="ey6pm"><strike id="ey6pm"><tt id="ey6pm"><thead id="ey6pm"></thead></tt></strike></div><code id="ey6pm"><ins id="ey6pm"><form id="ey6pm"><strong id="ey6pm"></strong></form></ins></code><th id="ey6pm"><menuitem id="ey6pm"><rt id="ey6pm"><tbody id="ey6pm"></tbody></rt></menuitem></th><tfoot id="ey6pm"></tfoot><big id="ey6pm"><thead id="ey6pm"><optgroup id="ey6pm"><sub id="ey6pm"></sub></optgroup></thead></big><tr id="ey6pm"><legend id="ey6pm"><small id="ey6pm"><dfn id="ey6pm"></dfn></small></legend></tr><pre id="ey6pm"></pre><var id="ey6pm"></var><sub id="ey6pm"><span id="ey6pm"><var id="ey6pm"><ins id="ey6pm"></ins></var></span></sub><div id="ey6pm"><strike id="ey6pm"><form id="ey6pm"><dd id="ey6pm"></dd></form></strike></div><td id="ey6pm"></td><input id="ey6pm"></input><delect id="ey6pm"></delect></div> </html>