前陣子有些 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; }