前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >tinymce 如何实现动态国际化

tinymce 如何实现动态国际化

作者头像
Fivecc
发布2022-11-21 11:28:05
1.3K0
发布2022-11-21 11:28:05
举报
文章被收录于专栏:前端ACE

tinymce 如何实现动态国际化

tinymce 是一个非常强大的富文本编辑器,tinymce是支持开启通过配置 language 来决定 tinymce 的语言版本 例如 下面配置 日文 英文 中文 且在同一个页面

代码语言:javascript
复制
 tinymce.init({
    selector: 'textarea.tinymce',
    plugins: `code image imagetools media`,
    toolbar: `code`,
    skin: false,
    language: 'ja',
    min_height:240,
    skeletonScreen: true,
    content_css: false,
  }).then(()=>{
	tinymce.init({
	      selector: 'div#mytextarea',
	      menubar: 'file edit  insert view format table tools help',
	      skin: false,
	      plugins: 'tpImportword',
	      toolbar: 'tpImportword',
	      content_css: false,
	      min_height:240,
	      skeletonScreen: true
	    }).then(()=>{
	      tinymce.init({
	        selector: 'div#mytextarea3',
	        skin: false,
	        language: 'zh_CN',
	        content_css: false,
	        min_height:240,
	        skeletonScreen: true,
	        plugins: `code`,
	        toolbar: `code`,
	      })
	  })
  });

注意 需要每一个tinymce editor 实例 完成之后才能进行实例下一个 所有需要采用 tinymce.init({...}).then(()=>{ tinymce.init({...}).then(()=>{ ... })... }) 的用法。 否则只能得到 最后一个实例的语言版本

但是问题来了 因为 tinymce 的菜单面板 是动态生成 , tinymce 官方 这一块的逻辑并没有考虑到 不同语言实例在 同一页面,【具体,可以近似看成 原型链的问题 】,所以菜单面板的语言就会出现 生成的是最后一个语言配置, 如下图 英文实例 菜单 生成 结果为中文

那么这个问题该 如何解决

解决方案就是 当鼠标 在每个tinymce 实列上方,立即进行一次语言重置。

具体方案 ,通过 如下代码

代码语言:javascript
复制
     editor.editorContainer.onmouseover = () => {
          let _language = editor.settings.language 
          let _currentCodeVal = editor.editorManager.i18n.getCode()
          _currentCodeVal != _language && editor.editorManager.i18n.setCode(_language)
      };

解决方案 我已经集成 到了 Tinymce-plugin

你可以通过下载tinymce-plugin, 并配置 tp_i18n 为 true 来实现 优雅的同时渲染多语言版本, 实现代码如下:

代码语言:javascript
复制
tinymce.init({
    language: 'zh_CN',
    content_css: false,
    tp_i18n: true,
    min_height:240,
    plugins: `code`,
    toolbar: `code`,
  })

同时 tinymce-plugin 也集成实现了 tinymce动态国际化

通过配置 tp_i18n_langs: true 然后自定义菜单项 加入 tpI18n 来开启此项功能

实现如下

代码语言:javascript
复制
   tinymce.init({
      selector: 'div#mytextarea',
      menubar: 'file edit  insert view format table tools help mymenubar',
      skin: false,
      tp_i18n: true,
      plugins: 'tpImportword',
      toolbar: 'tpImportword',
      tp_i18n_langs: true,
      content_css: false,
      menu: {
          mymenubar: { title: 'Extension', items: 'tpI18n'  },
      },
      min_height:240,
      skeletonScreen: true,
      setup: (
        editor
      )=>{
      }
    })

动态修改前为英文

动态修改后为韩文

点击查看更多

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • tinymce 如何实现动态国际化
    • 那么这个问题该 如何解决
      • 同时 tinymce-plugin 也集成实现了 tinymce动态国际化
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档