新增 UI 的翻譯字辭到 Forge Viewer 裏

前陣子有些 Autodesk Forge 的小夥伴們在詢問 viewer 的屬性窗都是英文的,沒有被翻譯成中文,就算用中文的 Revit 文檔去轉換也是同樣。在我調適了 Forge Viewer 的代碼後,發現形成這個的主要緣由估計是 Viewer 所使用的 i18next 的翻譯字典沒有對應的字辭,因此當時我建議小夥伴們去調用 Autodesk.Viewing.i18n.addResourceBundle 這個函數來新增自個的對應字辭到 Viewer 裏,不過這可能對不熟 i18next 的小夥伴們形成了困擾,上手難度又增長了。慶幸的是如今版號 2.16 的 Forge Viewer 已經針對這個需求新增了一個對應的接口 extendLocalization,小夥伴們不須要去了解 i18next 也能夠新增對應字辭到 Viewer 裏了,使用方法以下:函數

class MyAwesomeExtension extends Autodesk.Viewing.Extension {
    constructor( viewer, options ) {
        super( viewer, options );
    }
    
    load() {
        // 定義翻譯字辭
        const locales = {       
          en: {
            'Hello": "Hello!',
          },
          zh-HANS: {
            'Hello': '哈摟!',
          }
        };
        
        // 新增翻譯字辭到 viewer 裏
        this.extendLocalization( locales );
        
        return true;
    }
    
    unload() {
        return true;
    }
}

Autodesk.Viewing.theExtensionManager.registerExtension( 'Autodesk.ADN.MyAwesomeExtension', MyAwesomeExtension );

但是個人 Viewer 的版號不是 2.16 的怎麼辦?這很容易,小夥伴們只要這樣作就好,修改上面 load 函數的部份改爲這個樣子就能夠了:this

load() {
    // 定義翻譯字辭
    const locales = {       
      en: {
        'Hello": "Hello!',
      },
      zh-HANS: {
        'Hello': '哈摟!',
      }
    };
    
    // 新增翻譯字辭到 viewer 裏,參考自 viewer3D.js?v=2.16
    Object.keys( locales )
            .forEach(( language ) => {
                Autodesk.Viewing.i18n.addResourceBundle(
                    language,
                    "allstrings",
                    locales[language],
                    true,
                    true
                );
            });
    
    return true;
}

參考:https://forge.autodesk.com/bl...翻譯

相關文章
相關標籤/搜索