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