前阵子有些 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 函数的部份改成这个样子就可以了:

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...


康益昇
748 声望103 粉丝

引用和评论

0 条评论