成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Autodesk Forge Viewer 信息本地化技術(shù)分析

littleGrow / 1403人閱讀

摘要:默認(rèn)情況下,是英文環(huán)境,調(diào)取的是的資源其實(shí)無(wú)需翻譯。但是,如前面提到的,語(yǔ)言包只是包含了部分常規(guī)字串的翻譯,如果遇到?jīng)]有包含的常規(guī)字串怎么辦呢例如,本例中的語(yǔ)言包并沒(méi)有對(duì),進(jìn)行翻譯,所以即使切換了語(yǔ)言,它們?nèi)耘f是英文。

注:本文是個(gè)人調(diào)試分析所得,非官方文檔,請(qǐng)酌情選用參考。文中分析的數(shù)據(jù)由https://extract.autodesk.io轉(zhuǎn)換下載而來(lái)。

談到信息本地化,個(gè)人覺(jué)得包含三個(gè)方面的內(nèi)容:

1) Forge Viewer的操作菜單名,提示字串,錯(cuò)誤提示字串等

2) 原始模型結(jié)構(gòu)節(jié)點(diǎn)名或構(gòu)件額外屬性的名和值,例如在Navisworks中額外的附加屬性

3) 常規(guī)屬性的名和值, 即任何模型可能會(huì)出現(xiàn)的缺省屬性名和值,例如截圖中的,Item,Color, Material等

Forge在轉(zhuǎn)換原始模型的時(shí)候,對(duì)于#2中的內(nèi)容存儲(chǔ)到objects_attrs.json.gz之中,所以#2中提到的本地化內(nèi)容是直接可以顯示的。應(yīng)該無(wú)需額外的工作。

而談到#1 和 #3,首先Forge轉(zhuǎn)換服務(wù)會(huì)配置不同語(yǔ)言包,在Forge Viewer數(shù)據(jù)包層次結(jié)構(gòu)中位于:reslocales. 每種語(yǔ)言包中有個(gè)allstrings.json,其中包括了#1的所有字串對(duì)應(yīng)的翻譯配對(duì),#3中部分字串的翻譯配對(duì)。Forge Viewer的JavaScript庫(kù)封裝了名為i18n的語(yǔ)言翻譯類(lèi),用于調(diào)用對(duì)應(yīng)語(yǔ)言包資源的和翻譯字串的查詢(xún)。

默認(rèn)情況下,是英文環(huán)境,調(diào)取的是reslocalesen 的資源(其實(shí)無(wú)需翻譯)。當(dāng)切換語(yǔ)言時(shí),i18n會(huì)根據(jù)設(shè)置的語(yǔ)言,刷新i18n,調(diào)取對(duì)應(yīng)的語(yǔ)言包到瀏覽器內(nèi)存。而Forge Viewer怎么又去把界面上顯示出來(lái)的英文字串替換成英文呢?經(jīng)過(guò)調(diào)試分析,發(fā)現(xiàn)在大多數(shù)的界面字串的DOM元素創(chuàng)建過(guò)程中,Viewer的JavaSript庫(kù)都賦予了一個(gè)名為 data-i18n 的屬性,而i18n有個(gè)方法叫做localize,用于遍歷所有含有 data-i18n 的屬性DOM元素,根據(jù)語(yǔ)言包得到本地化字串,再替換div顯示的字串。

所以,如果想切換到某個(gè)語(yǔ)言版本,調(diào)用i18n的setLng和localize方法即可。zh-HANS是簡(jiǎn)體中文版。

Autodesk.Viewing.i18n.setLng("zh-HANS")
Autodesk.Viewing.i18n.localize()

但是,如前面提到的,語(yǔ)言包只是包含了部分常規(guī)字串的翻譯,如果遇到?jīng)]有包含的常規(guī)字串怎么辦呢? 例如,本例中的語(yǔ)言包并沒(méi)有對(duì)Item,Color, Material進(jìn)行翻譯,所以即使切換了語(yǔ)言,它們?nèi)耘f是英文。

首先能想到的折中辦法是:先在對(duì)應(yīng)語(yǔ)言包提供好翻譯,例如allstrings.json添加Item,Color, Material的本地化語(yǔ)言字串,不過(guò)實(shí)際測(cè)試發(fā)現(xiàn),不管用 :( 經(jīng)過(guò)調(diào)試發(fā)現(xiàn),在Viewer的JavaScript庫(kù)新建每一條屬性或?qū)傩灶?lèi)別時(shí),并沒(méi)有設(shè)置賦予了名為 data-i18n 的屬性,雖然代碼里是有這個(gè)分支,但無(wú)法通過(guò)簡(jiǎn)單的方式干預(yù),設(shè)置該選項(xiàng)。也不建議去直接改造Viewer的JavaScript代碼 (官方對(duì)改造后的JavaScript產(chǎn)生的問(wèn)題不保證給予支持)

最后,想出一個(gè)辦法:在切換語(yǔ)言的時(shí)候,搜索出所有屬性或?qū)傩灶?lèi)別的DOM元素,如果沒(méi)有data-i18n 的屬性,則加上,最后再調(diào)用一次i18n.localize。此方法只需額外寫(xiě)一個(gè)函數(shù)調(diào)用即可,不用改動(dòng)Viewer的JavaScript代碼。只是需要在適當(dāng)?shù)臅r(shí)機(jī)觸發(fā)一下。

function swtichLanguage(lng)
        {
            //加載語(yǔ)言資源
            Autodesk.Viewing.i18n.setLng("zh-HANS",{localizeCategory:true},function(cb){
            
                //尋找所有屬性和屬性類(lèi)別的DOM元素  
                
                Array.prototype.forEach.call (document.querySelectorAll ("div.propertyName,div.categoryName"), function (eachDOM){
                 
                    //賦予"data-i18n"屬性
                    var if_i18n = eachDOM.getAttribute("data-i18n");
                    if(if_i18n === null){
                        var text =  eachDOM.innerHTML;
                        eachDOM.setAttribute("data-i18n", text); 
                    }                
                });

                //翻譯替換
                Autodesk.Viewing.i18n.localize(); 

            }); 

        };

注意:

1.由于allstrings.json只在離線模式下能夠修改,所以本法不適用于在線訪問(wèn)模式。已就此向開(kāi)發(fā)部提交了需求

2.也和開(kāi)發(fā)部提交了另外一個(gè)需求,希望在JavaScript庫(kù)中能把屬性和屬性類(lèi)別也加上data-i18n屬性,而不用額外的操作

3.為了提高性能,語(yǔ)言包的加載對(duì)每個(gè)應(yīng)用只加載一次,假設(shè)加載后又去修改是用不了的。因此需要將此緩存的資源剔除掉,再加載。這個(gè)技術(shù)相信各位都有辦法。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/82712.html

相關(guān)文章

  • Forge Viewer 載入外部擴(kuò)展

    摘要:本文章的原作是的在版的里引入了一個(gè)重大的變革,開(kāi)始支持載入外部擴(kuò)展,細(xì)節(jié)可以參考這篇文章重大變更。這個(gè)函數(shù)自此刻起的函數(shù)回傳值不在是布林值,取而代之的是一個(gè)實(shí)例,這表示開(kāi)始支持使用非同步的方法在載入擴(kuò)展。 本文章的原作是 Autodesk ADN 的 Philippe Leefsma 在 v2.15 版的 Forge Viewer API 里引入了一個(gè)重大的變革,Viewer開(kāi)始支持載...

    LinkedME2016 評(píng)論0 收藏0
  • Learn Forge tutorial - 向?qū)?em>Forge進(jìn)階教程

    摘要:團(tuán)隊(duì)陸續(xù)的推出了很多學(xué)習(xí)資料和樣例工程,這些資源在學(xué)習(xí)簡(jiǎn)談做了介紹。近期,團(tuán)隊(duì)制作了一個(gè)向?qū)竭M(jìn)階教程,旨在通過(guò)一步一步的教學(xué),讓初學(xué)者熟悉有關(guān)和的用法。目前上線的有,,即將上線的是。 Autodesk Forge團(tuán)隊(duì)陸續(xù)的推出了很多學(xué)習(xí)資料和樣例工程,這些資源在Autodesk Forge 學(xué)習(xí)簡(jiǎn)談做了介紹。而部分資源由于API本身的變動(dòng),或者代碼的變動(dòng),可能無(wú)法正常使用了,我們會(huì)逐...

    韓冰 評(píng)論0 收藏0
  • Learn Forge tutorial - 向?qū)?em>Forge進(jìn)階教程

    摘要:團(tuán)隊(duì)陸續(xù)的推出了很多學(xué)習(xí)資料和樣例工程,這些資源在學(xué)習(xí)簡(jiǎn)談做了介紹。近期,團(tuán)隊(duì)制作了一個(gè)向?qū)竭M(jìn)階教程,旨在通過(guò)一步一步的教學(xué),讓初學(xué)者熟悉有關(guān)和的用法。目前上線的有,,即將上線的是。 Autodesk Forge團(tuán)隊(duì)陸續(xù)的推出了很多學(xué)習(xí)資料和樣例工程,這些資源在Autodesk Forge 學(xué)習(xí)簡(jiǎn)談做了介紹。而部分資源由于API本身的變動(dòng),或者代碼的變動(dòng),可能無(wú)法正常使用了,我們會(huì)逐...

    wenshi11019 評(píng)論0 收藏0
  • 「翻譯」在Forge Viewer上實(shí)作簡(jiǎn)易的模型版本比較

    摘要:現(xiàn)在讓我們修改這個(gè)示例讓他可以展示兩個(gè)同項(xiàng)目但不同版號(hào)的模型及。示例執(zhí)行結(jié)果如下這邊是這個(gè)比較模型的括展代碼英文原文 showImg(https://segmentfault.com/img/bVOmjp?w=1542&h=925); 熟悉 BIM360 Team 的朋友可能知道他有一個(gè)很牛的模型文檔版本比較的功能,但如果模型是放在 Google 云盤(pán)或是百度云盤(pán)上有可能做到嗎? Au...

    JowayYoung 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<