摘要:前言最近加入到新項(xiàng)目組負(fù)責(zé)前端技術(shù)預(yù)研和選型,其中涉及到一個(gè)熟悉又陌生的需求國際化本地化。因此不是表示存在多個(gè)選擇而是表示沒有適合的選項(xiàng)。
前言
?最近加入到新項(xiàng)目組負(fù)責(zé)前端技術(shù)預(yù)研和選型,其中涉及到一個(gè)熟悉又陌生的需求——國際化&本地化。熟悉的是之前的項(xiàng)目也玩過,陌生的是之前的實(shí)現(xiàn)僅僅停留在"有"的階段而已。趁著這個(gè)機(jī)會(huì)好好學(xué)習(xí)整理一下,為后面的技術(shù)選型做準(zhǔn)備。
?本篇作為系列的最后一篇,打算和大家一起看看HTTP的Content Negotiation機(jī)制和更多關(guān)于本地化的應(yīng)用方向。
?記得第一次接觸國際化和本地化時(shí)是指服務(wù)端根據(jù)請(qǐng)求頭字段Accept-Language獲取language-tag然后向用戶返回相應(yīng)的內(nèi)容,這其實(shí)是利用HTTP提供的Content Negotiation機(jī)制。
?所謂Content Negotiation機(jī)制其實(shí)就是通過Accept,Accept-Language和Accept-Encoding等請(qǐng)求頭字段作為依據(jù)對(duì)存在多個(gè)可用展現(xiàn)方式的某一資源選擇最優(yōu)的展現(xiàn)方式返回給用戶,如語言文化、適合在屏幕上瀏覽還是用于打印等。
?這里又分為服務(wù)端協(xié)商(Server-driven Negotiation)和代理端協(xié)商(Agent-driven Negotiation)
Server-driven Negotiation
?就是擇優(yōu)返回展現(xiàn)方式的算法由服務(wù)端提供的Content Negotiation就是Server-driven Negotiation了。
?一般通過Accept,Accept-Language,Accept-Encoding和User-Agent等請(qǐng)求頭字段作為依據(jù)去選擇最優(yōu)解。
缺點(diǎn):
服務(wù)端永遠(yuǎn)無法精準(zhǔn)地計(jì)算出最優(yōu)解,部分原因是因?yàn)閮?nèi)容如何展現(xiàn)是由代理端決定,而請(qǐng)求中無法獲取代理端的所有信息,若允許獲取代理端的所有信息,那么網(wǎng)絡(luò)傳送的數(shù)據(jù)量將變大而且會(huì)涉及隱私安全的問題;
服務(wù)端實(shí)現(xiàn)復(fù)雜度提高;
由于對(duì)于同一個(gè)url可能會(huì)返回不同的響應(yīng)報(bào)文,因此不能利用公用的緩存去暫存響應(yīng)報(bào)文,從而喪失進(jìn)一步的優(yōu)化空間。
Agent-driven Negotiation
?就是代理端從服務(wù)端接收到一個(gè)基本的響應(yīng)后,然后擇優(yōu)展現(xiàn)方式的算法由代理端(實(shí)際上就是讓用戶自行選擇最優(yōu)展現(xiàn)方式)提供的Content Negotiation就是Agent-driven Negotiation了。
?注意這里是先從服務(wù)端接收一個(gè)基本的響應(yīng),然后代理根據(jù)這個(gè)響應(yīng)再計(jì)算最優(yōu)的展現(xiàn)方式。那么這個(gè)基本的響應(yīng)是什么呢?HTTP/1.1定義300(Multiple Choices)和406(Not Acceptable)兩個(gè)HTTP status code來通知代理端這個(gè)請(qǐng)求是的采用Agent-driven Negotiation.
?300 Multiple Choices
?當(dāng)請(qǐng)求的資源在多個(gè)位置找到時(shí),這些位置將以列表的形式作為響應(yīng)報(bào)文返回給用戶,由用戶自行選擇具體要訪問哪個(gè)位置。若服務(wù)端打算推薦某個(gè)位置作為優(yōu)先選擇時(shí),可將該位置作為響應(yīng)頭字段Location的值返回.
?406 Not Acceptable
?當(dāng)服務(wù)端發(fā)現(xiàn)無法滿足請(qǐng)求頭的Accept,Accept-Charset,Accept-Encoding或Accept-Language時(shí),則會(huì)返回406狀態(tài)編碼。因此406不是表示存在多個(gè)選擇而是表示沒有適合的選項(xiàng)。
缺點(diǎn):
經(jīng)過代理端計(jì)算后,需要發(fā)起第二個(gè)請(qǐng)求來獲取最優(yōu)展現(xiàn)形式的具體內(nèi)容,響應(yīng)延遲提高。
?綜合上述兩種方式得到一種稱為透明協(xié)商(Transparent Negotiation)的方式,其實(shí)就是對(duì)緩存系統(tǒng)作修改,讓其除URL外還可以識(shí)別其他請(qǐng)求頭字段等信息,來映射特定展現(xiàn)方式的響應(yīng)報(bào)文。也就是說擇優(yōu)算法部分還是由服務(wù)端提供。
這里看來國際化/本地化是Content Negotiation的子集哦!
樣式因文化而不同 by :langSelectors Level 4已經(jīng)加入對(duì)BCP 47高級(jí)匹配算法的支持,即有以下玩法
En janvier, toutes les boutiques de Londres affichent des panneaux SALE, mais en fait ces magasins sont bien propres!
BIG SALE
甚至還有支持通配符*(雖然現(xiàn)在未被瀏覽器支持)
總結(jié)Hi guy!
Hi man!
本系列粗略歸納了國際化&本地化相關(guān)內(nèi)容,若有紕漏請(qǐng)各位指正,謝謝!
尊重原創(chuàng),轉(zhuǎn)載請(qǐng)注明來自: http://www.cnblogs.com/fsjohn... ^_^肥仔John
HTTP 請(qǐng)求406如何解決?有截圖
趣解HTTP狀態(tài)碼
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/80526.html
摘要:前言最近加入到新項(xiàng)目組負(fù)責(zé)前端技術(shù)預(yù)研和選型,其中涉及到一個(gè)熟悉又陌生的需求國際化本地化。注意蘋果官網(wǎng)采用的是的機(jī)制提供本地化功能,和本篇主打前端實(shí)現(xiàn)有所區(qū)別。它們分別是處理排序的處理日期格式化的和處理數(shù)字貨幣等格式化的。 前言 ?最近加入到新項(xiàng)目組負(fù)責(zé)前端技術(shù)預(yù)研和選型,其中涉及到一個(gè)熟悉又陌生的需求——國際化&本地化。熟悉的是之前的項(xiàng)目也玩過,陌生的是之前的實(shí)現(xiàn)僅僅停留在有的階段而...
摘要:前言最近加入到新項(xiàng)目組負(fù)責(zé)前端技術(shù)預(yù)研和選型,其中涉及到一個(gè)熟悉又陌生的需求國際化本地化。本篇將闡述國際化和本地化的概念,以及其中一個(gè)很重要的概念也叫或。語法注意一般采用首字母大寫,后續(xù)字母全小寫指定與國家地域?qū)?yīng)的語言方言文化。 前言 ?最近加入到新項(xiàng)目組負(fù)責(zé)前端技術(shù)預(yù)研和選型,其中涉及到一個(gè)熟悉又陌生的需求——國際化&本地化。熟悉的是之前的項(xiàng)目也玩過,陌生的是之前的實(shí)現(xiàn)僅僅停留在有...
摘要:一前言圖片上傳是一個(gè)普通不過的功能,而圖片預(yù)覽就是就是上傳功能中必不可少的子功能了。偶然從上找到純前端圖片預(yù)覽的相關(guān)資料,經(jīng)過整理后記錄下來以便日后查閱。類型為,表示在讀取文件時(shí)發(fā)生的錯(cuò)誤,只讀。 一、前言 圖片上傳是一個(gè)普通不過的功能,而圖片預(yù)覽就是就是上傳功能中必不可少的子功能了。在這之前,我曾經(jīng)通過訂閱input[type=file]元素的onchange事件,一旦更改路徑...
摘要:一鋪搞定一鋪清袋粵語的一鋪搞定其實(shí)就是一次完成全部工作的意思,上面關(guān)于的屬性,要是每次都逐個(gè)設(shè)置那要敲多少次鍵盤啊。。。語法粵語的一鋪清袋其實(shí)就是把之前的成果一次性歸零。 前言 ?當(dāng)CSS3推出border-radius屬性時(shí)我們是那么欣喜若狂啊,一想到終于不用再添加額外元素來模擬圓角了,但發(fā)現(xiàn)border-radius還分水平半徑和垂直半徑,然后又發(fā)現(xiàn)border-top-left/...
摘要:也就是說我們操作的幾何公式中的未知變量,而具體的畫圖操作則由渲染引擎處理,而不是我們苦苦哀求設(shè)計(jì)師幫忙。 前言 ?當(dāng)CSS3推出border-radius屬性時(shí)我們是那么欣喜若狂啊,一想到終于不用再添加額外元素來模擬圓角了,但發(fā)現(xiàn)border-radius還分水平半徑和垂直半徑,然后又發(fā)現(xiàn)border-top-left/right-radius的水平半徑之和大于元素寬度時(shí),實(shí)際值會(huì)按比...
閱讀 3045·2023-04-25 20:09
閱讀 3321·2021-11-23 09:51
閱讀 1976·2021-11-22 15:25
閱讀 3353·2021-11-18 10:02
閱讀 2756·2021-09-27 13:56
閱讀 1309·2019-08-30 15:44
閱讀 1153·2019-08-30 13:21
閱讀 3326·2019-08-30 11:05