tinymce 如何实现动态国际化

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

tinymce 如何实现动态国际化

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

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 实列上方,立即进行一次语言重置。

具体方案 ,通过 如下代码

editor.editorContainer.onmouseover= () => {
let_language=editor.settings.languagelet_currentCodeVal=editor.editorManager.i18n.getCode()
_currentCodeVal!=_language&&editor.editorManager.i18n.setCode(_language)
  };

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

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

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 来开启此项功能

实现如下

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      )=>{
      }
    })

动态修改前为英文

网络异常,图片无法展示
|

动态修改后为韩文

网络异常,图片无法展示
|

点击查看更多

目录
相关文章
|
前端开发 JavaScript 安全
|
6月前
|
设计模式 JavaScript 前端开发
Vue.js 组件设计模式:在前端热潮中找到归属感,打造可复用组件库,开启高效开发之旅!
【8月更文挑战第22天】Vue.js 以其高效构建单页应用著称,更可通过精良的组件设计打造可复用组件库。组件应职责单一、边界清晰,如一个显示文本并触发事件的按钮组件,通过 props 传递标签文本,利用插槽增强灵活性,允许父组件注入动态内容。结合 CSS 预处理器管理和封装独立模块,配以详尽文档,有效提升开发效率及代码可维护性。合理设计模式下,组件库既灵活又强大,持续实践可优化项目工作流。
74 1
|
9月前
|
开发框架 前端开发 搜索推荐
标题:【专栏:CSS进阶篇】CSS样式重置与框架:快速构建统一风格的网页
【4月更文挑战第30天】本文探讨了CSS样式重置和框架在确保网页跨浏览器一致性中的作用。样式重置通过消除默认样式差异实现一致外观,而CSS框架如Bootstrap提供预设样式和组件,加速开发并保证页面一致性。框架还有响应式设计和易于维护的优点,但也可能限制自定义和增加性能开销。选择使用哪种工具应根据项目需求、团队技能和设计复杂度来决定。开发者可结合使用两者以平衡灵活性和控制。
81 0
|
9月前
|
存储 JavaScript
如何在 Vue 中进行国际化和多语言支持?
如何在 Vue 中进行国际化和多语言支持?
72 3
|
存储 前端开发
Vue+Vuex配合实现动态换肤| 青训营
Vue+Vuex配合实现动态换肤| 青训营
225 0
|
前端开发 API
前端(十五)——开源一个用react封装的图片预览组件
前端(十五)——开源一个用react封装的图片预览组件
276 0
|
自然语言处理 编译器 C#
【WPF】实现动态切换语言(国际化)以及动态换肤功能
以下内容,手把手从搭建到最终实现,完成多语言切换以及换装功能。
477 0
【WPF】实现动态切换语言(国际化)以及动态换肤功能
|
JavaScript 前端开发 数据格式
TaggingJS – 可以灵活定制的 jQuery 标签系统插件
  TaggingJS 是一款 jQuery 插件,用来创建高度可定制的前端标签系统。这款插件不到3KB ,支持主流浏览器。有几种方法来定制 TaggingJS 的默认行为:一是使用  custom_options 定制全局的 TaggingJS 行为;二是给标签框加上 data 属性;三是结合前面两种方式。
954 0
|
JavaScript
js:无缝轮播实现原理
js:无缝轮播实现原理
106 0
js:无缝轮播实现原理