精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Vue.js 項目前端多語言方案

開發 前端
前端的國際化是一個比較常見的需求。但網上關于這一方面的直接可用的方案卻不多。最近剛做了一版基于Vue.js的多語言實現,在此簡單作一小結。

  [[412794]]

前端的國際化是一個比較常見的需求。但網上關于這一方面的直接可用的方案卻不多。最近剛做了一版基于Vue.js的多語言實現,在此簡單作一小結。

一、通常有哪些內容需要處理

總的來說,一個Web應用中,需要做多語言切換的內容常見的包括如下方面:

1、模板中的內容,如Vue.js的 <template> 標簽中的文字內容

2、JS代碼中的文字內容

3、圖片中的文案內容

4、頁面 title

5、第三方組件中的文案(比如,我的項目中用到了Vux的組件)

6、后端接口中需要展示到前端的數據內容

7、后端接口返回的錯誤提示

二、基本思路

1、首先,需要確定以什么樣的方式來獲取到當前應該展示何種語言

我采用的是用URL傳遞 ?lang=en 或者 ?lang=zh-CN 這樣的傳遞參數的形式。這樣做的好處在于可以通過鏈接指定用哪種語言。但是,只依賴于地址欄參數也是不方便的。比如,在頁面跳轉的時候,這個地址欄參數可能就丟失了。這會導致你在頁面跳轉之后就不知道該用哪種語言展示了。而理想的的方式應該是,進入某個頁面的時候帶有這個參數(這個時候就獲取到該使用何種語言了),等再跳轉到其它頁面的時候就不必再帶這個 lang 參數了,因為此時你已經知道該用哪種語言了。所以,應該在一進入第一個頁面的時候就把這個參數存下來,比如,存在localstorage中,存在vuex的state中。

這里,就引出來一個語言判斷的優先級問題。

因為地址欄里可能有 lang 參數,localstorage中可能也有相關的存儲字段(因為上次訪問過本應用),你可能還想設置默認的降級語言,等等。其優先級應該如何處理呢?

正確的優先級應該是:

先看地址欄參數中有沒有;

再看localstorage中有沒有;

然后再通過 navigator.language 獲取瀏覽器默認語言,看是否是你的應用所支持的語言,若是,則采用之;

最后才是使用回退語言(例如,比較通用的英語)。

當然,你可以根據你的需求來做一些簡化。

2、其次,采用什么工具來解決語言轉換和打包的問題?

(1)i18n相關工具的選擇——由誰來提供多語言轉換函數(通常是$t)?

目前國際化通用方式多數基于i18n,我們也無需再去造輪子了。但就i18n的具體使用上,有很多不同的NPM模塊。比如vuex-i18n、vue-i18n、simplest-i18n等。因為多數復雜一點的項目都會上vuex,所以復雜一點的項目選擇vuex-i18n會比vue-i18n更方便。

而simplest-i18n這個很小眾的模塊,其實也有它的好處。它支持下面這樣的寫法:

在模板中:

  1. <span>$t('真實姓名''Real Name')</span> 

或者在JS中:

  1. this.$t('真實姓名''Real Name'

即將語言寫在一起,$t函數的每一個參數都是一種語言,一目了然,還是比較方便閱讀的。對小項目來說,不失為一種選擇。

其基本使用如下:

t.js文件:

  1. import i18n from 'simplest-i18n'
  2. import getLang from '../../getLang'
  3.  
  4. const t = i18n({ 
  5.   locale: getLang.lang, // 當前語言 
  6.   locales: getLang.langs // 支持的語言列表 
  7. }); 
  8. export default t; 

然后在應用的入口文件中對Vue.js進行擴展:

  1. import t from './t'
  2. Vue.$t = Vue.prototype.$t = t; 

這樣就把 $t 這個方法掛載到了Vue.js的全局。Vue實例中也可以通過 this.$t 訪問到,使用上還是非常簡單的。

但是,對于大項目來說,把語言包都寫在代碼里面,對維護并不友好。而且,靠它也解決不了我所用到的Vux組件的多語言化的問題。

所以最終,我選擇了vuex-i18n作為基礎。

(2)組織和處理語言包的工具——語言包怎么組織,怎么打包處理?

對于這個問題,我首先需要解決Vux第三方組件的多語言化問題。

首先,在語言包的組織方面,比較常見的是寫成JSON配置文件。不過,我最終采用了Yaml這種格式,它支持將多語言字段寫在一起。比如:

config.yml

  1. confirm: 
  2.   zh-CN: 確認 
  3.   en: confirm 

而不是像下面那樣將一個字段的多語言拆成幾處,比如:

  1. confirm: 確認 


  1. confirm: confirm 

這樣帶來的好處就是,可以方便地對照一個字段的不同語言版本,而且要修改或刪除某一個字段時,也可以在一處完成,無需切換。況且,Yaml文件的語法也更加簡單明了,省去了JSON文件必須寫雙引號、不可以出現注釋等諸多麻煩。

其次,在語言包的打包方面,我找到了vux-loader。它可以和現有的webpack配置結合,不僅能完成Vux組件多語言配置的打包,還允許在自定義的Vue組件中使用 <i18n> 標簽。比如,在自定義組件中我可以這么寫:

  1. <i18n> 
  2. confirm: 
  3.   zh-CN: 確認 
  4.   en: confirm 
  5. <i18n> 

打包時,vux-loader會將 <i18n> 標簽中的多語言配置信息導出至我們所配置的一個Yaml文件中,而把 <i18n> 標簽從我們的自定義組件中移除。

那么,對于Yaml文件如何處理呢?可以用json-loader和yaml-loader。它們可以將Yaml文件轉換成我們所需要的json格式,方便在JS函數中使用,就像這樣:

  1. const componentsLocales = require('json-loader!yaml-loader!../../locales/components.yml'); // 這就得到了一個語言包的json格式 

3、如何通知后端接口返回何種語言的數據?

因為涉及到許多接口都要通知后端采用哪種語言,所以,我選擇了使用header頭的方式。在axios的interceptor中給請求統一添加了header頭: Accept-Language , 并把這個值的內容設置成前端所獲得應使用的語言(如,zh-CN 或 en 等)。這樣,就集中在一處把這個問題處理掉了。

三、具體實踐中的一些細節

1、獲取當前應該采用何種語言的getLang模塊的實現

  1. import { getQueryObj } from '../utils/url'
  2. import { setItem, getItem } from '../utils/storage'
  3.  
  4. const langs = ['zh-CN''en']; // 支持哪些語言 
  5. const defaultLang = 'en'// 默認語言,暫時并沒有對外拋出 
  6.  
  7. function getLang() { 
  8.   let queries = getQueryObj(); 
  9.   let storeLang = getItem('lang'); 
  10.   let rawLang; 
  11.   let flag = false
  12.  
  13.   if (queries && queries['lang']) { 
  14.     rawLang = queries['lang']; 
  15.     setItem('lang', rawLang); 
  16.   } else { 
  17.     rawLang = storeLang || navigator.language; 
  18.   } 
  19.  
  20.   langs.map(item => { 
  21.     if (item === rawLang) { 
  22.       flag = true
  23.     } 
  24.   }); 
  25.   return flag ? rawLang : defaultLang; 
  26.  
  27. const lang = getLang(langs, defaultLang); 
  28.  
  29. export default { 
  30.     lang, // 獲取到當前語言 
  31.     langs // 所支持的語言列表 

2、Vux組件的多語言包的配置

可以從Vux的官方github中找到 src/locales/all.yml 拷貝過來(同一目錄下的 src/locales/zh-CN.yml 、 src/locales/en.yml 分別是其中文部分和英文部分),根據你自己的需要略作修改即可。

然后在你的應用的應用的入口文件中引入:

  1. const vuxLocales = require('json-loader!yaml-loader!../../locales/all.yml'); 

3、vux-loader的配置

webpack.dev.conf.js 中:

  1. resolve(vuxLoader.merge(devWebpackConfig, { 
  2.     plugins_dir: [ 
  3.         'vux-ui'
  4.         { 
  5.             name: 'i18n'
  6.             vuxStaticReplace: false
  7.             staticReplace: false
  8.             extractToFiles: 'src/locales/components.yml'
  9.             localeList: ['en','zh-CN'
  10.         } 
  11.     ] 
  12. })) 

webpack.prod.conf.js中:

  1. resolve(vuxLoader.merge(buildWebpackConfig, { 
  2.     plugins_dir: [ 
  3.         'vux-ui'
  4.         { 
  5.             name: 'i18n'
  6.             vuxStaticReplace: false
  7.             staticReplace: false
  8.             extractToFiles: 'src/locales/components.yml'
  9.             localeList: ['en','zh-CN'
  10.         } 
  11.     ] 
  12. })) 

其中的 localeList: ['en','zh-CN'] 就是指定你的應用支持哪幾種語言。

而 extractToFiles: 'src/locales/components.yml' 就是指定你的自定義組件中所用到的那些 <i18n> 標簽中的語言包信息,應該導出到哪個Yaml文件中。也就是說,你在各個自定義組件中使用的 <i18n> 標簽中的語言包信息都會被vux-loader集中抽取到這個文件中。

然后在應用的入口文件中引入這個語言包文件:

  1. const componentsLocales = require('json-loader!yaml-loader!../../locales/components.yml'); 

4、自定義組件內外文案的多語言化

(1)對于自定義組件內部的文案的多語言化信息,寫在組件的 <i18n> 標簽中即可。同時,為了避免不同的自定義組件中多語言字段的命名沖突,在每個字段的名字前面加上以組件名-式的前綴。

(2)對于頁面的標題、一些錯誤提示等文案,它們是出現在組件之外的,因此不適合寫在組件的 <i18n> 標簽中,所以我們單獨新建一個 global.yml 來存放這些全局性的多語言信息。這些內容直接寫在 global.yml 中即可,并且,為了表面與其它的語言包字段相沖突,我們在每個字段的前面加上 global- 前綴。

然后在應用的入口文件中引入這個語言包文件:

  1. const componentsLocales = require('json-loader!yaml-loader!../../locales/global.yml'); 

5、vuex-i18n的實現

在src/store/index.js文件中:

  1. import VuexI18n from 'vuex-i18n'

export default new Vuex.Store 中增加:

  1. i18n: VuexI18n.store 

在應用的入口文件中:

  1. import VuexI18n from 'vuex-i18n'
  2. import getLang from '../../getLang'
  3.  
  4. Vue.use(VuexI18n.plugin, store); 
  5.  
  6. const vuxLocales = require('json-loader!yaml-loader!../../locales/all.yml'); 
  7. const componentsLocales = require('json-loader!yaml-loader!../../locales/components.yml'); 
  8.  
  9. const finalLocales = { 
  10.   'en': Object.assign(vuxLocales['en'], componentsLocales['en']), 
  11.   'zh-CN': Object.assign(vuxLocales['zh-CN'], componentsLocales['zh-CN']) 
  12.  
  13. for (let i in finalLocales) { 
  14.   Vue.i18n.add(i, finalLocales[i]) 
  15.  
  16. Vue.i18n.set(globalVars.lang); 

6、圖片的多語言化

對于圖片中的文案信息,多語言化主要有這么兩種方式:一是根據不同的語言展示不同的圖片;二是盡將文字從圖片背景中分離出來,采用文字層加背景圖片層的方式,這樣文字層就可以作為普通文本來實現多語言化了。都比較簡單,不再贅述。

7、在當前頁面通過按鈕切換當前語言后,如何更新當前頁面的內容?

如果你的應用并不需要在頁面內部切換語言版本,那么直接通過URL中傳入不同的 lang 參數就可以了,并不涉及到此問題。

第一種方式:刷新頁面

  1. <button @click="changeLang('zh-CN')">中文</button> 
  2. <button @click="changeLang('en')">英文</button> 
  1. changeLang(lang){ 
  2.     location.href = this.$utils.url.replaceParam(this.$router.history.current.path, 'lang', lang); 
  3. }, 

第二種方式:watch當前頁data中 lang 字段的變化,通過 v-if 局部刷新某些相關組件:

  1. data(){ 
  2.     return { 
  3.         lang: this.$i18n.locale() 
  4.     } 
  5.  
  6. changeLang(lang){ 
  7.     this.$i18n.set(lang); 
  8.     this.lang = this.$i18n.locale(); 
  9. }, 
  10.  
  11. watch: { 
  12.     lang(newVal, oldVal) { 
  13.         if(newVal === oldVal) { 
  14.             return
  15.         } 
  16.  
  17.         // 在這里通過改變某個標志位 結合 v-if 來觸發某個局部組件的重新渲染 
  18.     } 

第三種方式:結合vuex派發全局的語言狀態,接收到狀態變化時進行更新,或者自己簡單地改寫vuex-i18n的實現。這種方式相對復雜一些。

具體根據自己的業務需求選擇。

8、Yaml中特殊字符的轉義

對于一些包含特殊字符的yaml鍵值,比如 [、] 等,需要進行轉義。轉的方式是給鍵值加上單引號引起來。

如果你的語言包信息中有單引號,則必須連續使用兩個單引號轉義。例如:

  • str: 'labor''s day' 

 

 

責任編輯:張燕妮 來源: Vue中文社區
相關推薦

2020-09-16 14:01:10

Vue.js項目語言

2016-11-02 18:43:02

javascripthtml5vue.js

2017-12-15 10:00:46

前端框架Vue.js

2016-11-01 19:10:33

vue.js前端前端框架

2020-11-06 07:30:36

JS文件

2014-04-16 14:50:20

Spark

2022-10-27 22:11:40

react擴展庫語言

2020-04-14 09:50:02

2009-08-25 10:44:50

C#實現多語言

2011-08-05 17:54:33

Cocoa Touch 多語言

2012-04-19 11:40:21

Titanium

2014-07-09 09:20:06

WPFWPF應用

2017-09-27 16:44:23

前端

2023-04-27 08:23:38

JavaScriptVue.jsMVVC

2024-05-09 08:14:09

系統設計語言多語言

2022-08-09 07:22:15

語言數據庫程序

2013-10-16 15:50:01

iOS優化本地化

2023-08-04 10:18:15

2021-09-07 10:17:35

iOS多語言適配設計

2021-06-29 21:48:32

開源語言架構
點贊
收藏

51CTO技術棧公眾號

中文字幕乱码无码人妻系列蜜桃| 天堂网成人在线| 福利视频在线导航| 激情五月激情综合网| 久久久久国产一区二区三区| 受虐m奴xxx在线观看| 97精品资源在线观看| 激情成人中文字幕| 超碰97免费观看| 亚洲色图另类小说| 国产美女精品在线| 国产激情视频一区| 久一视频在线观看| 久久社区一区| 亚洲美女动态图120秒| 91网址在线观看精品| 欧美午夜精品| 精品久久久视频| 亚洲伊人婷婷| 天堂资源最新在线| 国产一区欧美日韩| 国产成人精品午夜| 日韩精品国产一区二区| 91精品综合| 一区二区欧美亚洲| 亚洲狠狠婷婷综合久久久久图片| 日本99精品| 91久久精品国产91性色tv| 色综合伊人色综合网站| 9.1在线观看免费| 美女视频一区| 色94色欧美sute亚洲13| 九九爱精品视频| 性欧美videoshd高清| 国产精品免费视频一区| 欧美另类高清视频在线| 天堂网2014av| 粉嫩嫩av羞羞动漫久久久| 成人国产在线视频| 中文字幕一区二区在线视频| 美国一级片在线观看| 色呦呦在线播放| 亚洲人成亚洲人成在线观看图片| 亚洲福利av在线| 黄色av网站在线免费观看| 91蝌蚪porny| 久久久久久九九九九| 日本激情一区二区三区| 成人爱爱电影网址| 国产一区二区免费在线观看| 亚洲第一成年人网站| 国产酒店精品激情| 亚洲综合社区网| 99久久夜色精品国产亚洲| 狠狠色综合播放一区二区| 国产精品专区h在线观看| 麻豆成人免费视频| 性欧美长视频| 国产精品对白刺激| 中文人妻熟女乱又乱精品| 日本午夜一本久久久综合| 国产成人精品久久| 国产美女www| 九九视频精品免费| 亚洲综合色激情五月| 亚洲精品国产精| 99热99精品| 久久久久一区二区三区| 国产在线一二| 国产精品灌醉下药二区| 老司机午夜免费福利视频| 国产色婷婷在线| 欧美性精品220| 一区二区三区网址| 香港久久久电影| 亚洲国产精品成人va在线观看| 久久久久久久久免费看无码| 精品一区不卡| 久久综合九色九九| 四虎成人精品永久免费av| 久久三级福利| 91精品视频在线播放| 天堂在线中文网| 国产日韩精品视频一区| 久久久天堂国产精品| 精品众筹模特私拍视频| 色综合视频一区二区三区高清| 日日躁夜夜躁aaaabbbb| 日本一二三区视频| 色老太综合网| 欧美精品乱人伦久久久久久| 国产乱国产乱老熟300部视频| 蜜桃成人av| 久久综合色88| 色老头一区二区| 国产精品一区二区你懂的| 欧美精品中文字幕一区二区| 视频在线这里都是精品| 91久久精品一区二区二区| 在线观看免费看片| 精品美女久久久| 久久免费国产精品1| 中文字幕+乱码+中文乱码91| 成人午夜大片免费观看| 一区二区日本| 黄色综合网址| 欧美电影精品一区二区| 国产毛片欧美毛片久久久| 欧美色图首页| 国产欧美 在线欧美| 性插视频在线观看| 亚洲乱码国产乱码精品精98午夜 | 香蕉视频网站在线| 亚洲免费看黄网站| jizz大全欧美jizzcom| 香蕉久久精品| 欧美激情精品久久久久| 一级做a爰片久久毛片16| 久久人人爽爽爽人久久久| a天堂资源在线观看| 日韩欧美专区| 在线日韩中文字幕| 亚洲av无码精品一区二区| av不卡在线观看| 99在线免费视频观看| 国产精品亚洲四区在线观看| 中文字幕欧美亚洲| 波多野结衣网站| 久久嫩草精品久久久久| 国产视频九色蝌蚪| 在线视频亚洲欧美中文| 久久夜色精品国产欧美乱| 中文字幕欧美在线观看| 久久久精品国产免大香伊 | 精品亚洲国产成人av制服丝袜 | 亚洲韩国精品一区| 日本高清一区二区视频| 青青草国产成人a∨下载安卓| 日本精品视频在线观看| 国产欧美日韩专区发布| 国产成人无码av| av福利精品导航| 3d动漫一区二区三区| 美女视频亚洲色图| 91av在线播放| 日本中文字幕电影在线观看 | 日韩视频永久免费观看| 在线免费看av的网站| 国产精品日产欧美久久久久| 香港日本韩国三级网站| 欧美第一精品| 91久久精品在线| 91麻豆国产福利在线观看宅福利| 日韩写真欧美这视频| 国产这里有精品| 国产成人av电影在线观看| 成人av在线播放观看| a看欧美黄色女同性恋| 97久久超碰福利国产精品…| 亚洲欧美日本在线观看| 国产精品国产三级国产aⅴ中文| 污污的网站免费| 国产精品激情| 免费在线成人av电影| 天堂久久午夜av| 精品国产区一区二区三区在线观看| 国产精品久久久久久久成人午夜| 亚洲美女视频在线观看| 无码人妻aⅴ一区二区三区玉蒲团| 激情视频一区二区三区| 欧美色图亚洲自拍| 少妇精品视频在线观看| 久久91超碰青草是什么| 亚洲人视频在线观看| 一本大道久久a久久精二百| 肉色超薄丝袜脚交69xx图片| 国产福利精品导航| 国产又大又硬又粗| 婷婷伊人综合| 国产日韩欧美综合精品| 国产成人精品123区免费视频| 日韩中文字幕免费| 粉嫩av一区二区夜夜嗨| 大荫蒂欧美视频另类xxxx| 男人的天堂官网| 国产成人精品亚洲日本在线桃色| 国内性生活视频| 久久国产亚洲精品| 国产精品99久久久久久久| 姬川优奈av一区二区在线电影| 精品国产欧美成人夜夜嗨| 刘亦菲毛片一区二区三区| 欧美在线观看18| 国产小视频在线看| 亚洲国产精品成人综合色在线婷婷 | 蜜臀av在线| 尤物yw午夜国产精品视频明星| www.蜜臀av| 欧美最猛性xxxxx直播| 国产性猛交普通话对白| 国产精品视频线看| 真人bbbbbbbbb毛片| 国产在线一区二区| 日日碰狠狠丁香久燥| 亚洲国产高清一区| 伊人久久大香线蕉av一区| 四虎884aa成人精品最新| 国产精品视频自在线| 三级中文字幕在线观看| 久久91精品国产| 黄色在线视频网站| 中日韩美女免费视频网站在线观看| 精品久久在线观看| 欧美日韩黄色一区二区| aaaaaa毛片| 一区二区三区色| 91精品国自产在线| 久久这里都是精品| 欧美变态tickle挠乳网站| 国产aⅴ爽av久久久久| 国产精品视频| 成人在线免费观看视频网站| 国产一区二区三区网| 欧美高清videos高潮hd| 国模一区二区三区私拍视频| 精品孕妇一区二区三区| 成人写真视频| 欧美韩国日本精品一区二区三区| 中文字幕亚洲在线观看| 91麻豆桃色免费看| 欧洲午夜精品| 国产精品私拍pans大尺度在线| 成人性生活视频| 欧美一级大片在线观看| av岛国在线| 97香蕉超级碰碰久久免费的优势| 美女网站视频在线| 欧美成人午夜剧场免费观看| 岛国成人毛片| 欧美大成色www永久网站婷| 国产日韩一级二级三级| 蜜臀久久99精品久久久酒店新书| 亚洲区国产区| 日韩不卡一二区| 91精品精品| 日本丰满大乳奶| 在线精品国产| 91亚洲精品国产| 亚洲国产裸拍裸体视频在线观看乱了中文 | av一区二区在线播放| 日韩av一区二区三区美女毛片| 国产精品亚洲二区| 日韩中文字幕一区二区| 成人同人动漫免费观看| 一级做a爰片久久| 伊人久久大香线蕉精品组织观看| 国产四区在线观看| 亚洲性感美女99在线| 日本中文字幕网址| 久久精品毛片| 邪恶网站在线观看| 久久国产精品99精品国产| 国产一级片中文字幕| 国产成人精品综合在线观看 | 97热精品视频官网| 成人在线爆射| 夜夜嗨一区二区三区| 蜜桃传媒视频麻豆一区| 国产亚洲电影| 亚洲自拍偷拍一区二区三区| 在线观看视频日韩| 人妻少妇被粗大爽9797pw| 久久精品72免费观看| 亚洲av无码久久精品色欲| 成人在线视频首页| 国产av自拍一区| 亚洲精品中文字幕乱码三区| 日韩女同强女同hd| 欧美视频一区二| 成人黄色免费视频| 亚洲日韩欧美视频一区| 国产黄色小视频在线| 国模叶桐国产精品一区| 不卡亚洲精品| 国产成人免费电影| 精品久久91| 欧美日韩福利在线| 日韩专区中文字幕一区二区| 色黄视频免费看| 国产亚洲欧美在线| 日本老熟俱乐部h0930| 色婷婷综合久久久中文一区二区 | 亚洲精品suv精品一区二区| 第九色区av在线| 欧美精品久久久久a| www.久久| 久久精精品视频| 你懂的国产精品永久在线| 成人精品视频一区二区| 国产不卡高清在线观看视频| 成熟人妻av无码专区| 亚洲成人久久影院| 国产一区二区三区三州| 日韩精品视频免费| 青春草视频在线观看| 国产精品美女av| 牛牛精品成人免费视频| 水蜜桃在线免费观看| 日韩国产在线一| youjizz.com国产| 亚洲精品视频在线观看免费| 最新中文字幕免费| 精品五月天久久| 黄页网站在线| 91影视免费在线观看| 波多野结衣在线观看一区二区| 2018国产在线| 成人一区二区在线观看| 永久免费看片直接| 欧美午夜不卡视频| 国产在线观看免费网站| 91国语精品自产拍在线观看性色 | 国产又粗又猛又爽| 亚洲视频777| 亚洲精品中文字幕| 国产精品一区二区免费看| 欧美日本亚洲韩国国产| 亚洲av毛片在线观看| 午夜小视频在线| 日韩av快播网址| 任我爽精品视频在线播放| 成人区一区二区| 国产精品一区二区91| 日韩激情小视频| 在线观看91av| 久草免费在线| 成人免费网站在线观看| 日韩情爱电影在线观看| 日本超碰在线观看| 国产精品美女久久久久aⅴ| 亚洲第一区av| xvideos亚洲| 9.1麻豆精品| 女女百合国产免费网站| 国产精品一区在线| 久视频在线观看| 亚洲精品videossex少妇| 不卡一二三区| 日韩亚洲欧美精品| 蜜桃一区二区三区在线| 手机在线中文字幕| 欧美一区二区三区啪啪| 主播国产精品| 国产在线观看一区| 国产亚洲一级| 国产高潮呻吟久久| 欧美日韩精品专区| jizzjizz亚洲| 国产视频一区二区不卡| 久久九九免费| 婷婷丁香综合网| 欧美一区二区私人影院日本| 欧美人体视频xxxxx| 韩国成人动漫在线观看| 久久人人超碰| 中文字幕电影av| 精品久久国产字幕高潮| 涩涩涩视频在线观看| 先锋在线资源一区二区三区| 久久se精品一区精品二区| 69av.com| 亚洲免费影视第一页| 国产精品高潮久久| 日韩欧美猛交xxxxx无码| 91一区二区在线| 伊人亚洲综合网| 欧美国产乱视频| 国产成人三级| 亚洲AV无码久久精品国产一区| 欧美网站在线观看| 麻豆免费在线观看| 精品久久精品久久| 久久精品国产99国产精品| 久久精品一级片| 一本久久综合亚洲鲁鲁| 视频国产精品| 色悠悠久久综合网| 亚洲尤物视频在线| eeuss影院www在线观看| 超碰97在线人人| 日韩精品三区四区| 国产主播在线观看| 中文字幕av一区| 亚洲精华一区二区三区| www.欧美激情.com| 色综合天天在线| av丝袜在线| 国产精品一区在线免费观看| 久久亚洲精品小早川怜子| www.天堂av.com|