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

动态修改前为英文

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

动态修改后为韩文

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

点击查看更多

目录
相关文章
|
7月前
|
JSON JavaScript 前端开发
国际化:实现Vue应用的多语言支持
【4月更文挑战第23天】本文阐述了在Vue应用中实现多语言支持的重要性及步骤。使用vue-i18n插件,结合明确的语言需求和资源管理,实现文本翻译。配置路由和语言检测以支持用户切换,动态加载语言包以优化性能。同时考虑日期和货币格式化,确保全面的国际化体验。经过测试和持续维护,打造尊重文化多样性的全球化应用。
335 0
|
前端开发 JavaScript API
020 Umi@4 中如何实现动态菜单
020 Umi@4 中如何实现动态菜单
1073 0
020 Umi@4 中如何实现动态菜单
|
2月前
|
前端开发 JavaScript
乾坤qiankun(微前端)样式隔离解决方案--使用插件替换前缀
乾坤qiankun(微前端)样式隔离解决方案--使用插件替换前缀
477 8
|
4月前
|
自然语言处理 JavaScript 前端开发
【走向世界】Vue.js国际化:打造无国界应用,让爱与信息跨越语言的边界!
【8月更文挑战第30天】本文详细介绍了Vue.js中实现国际化的多种方法及最佳实践。通过使用`vue-i18n`等第三方库,开发者能够轻松地为应用添加多语言支持,优化用户体验并扩大市场覆盖范围。文章涵盖从基本配置、动态加载语言包到考虑文化差异等方面的内容,帮助读者构建真正全球化且无缝多语言体验的应用程序。
128 0
|
7月前
|
开发框架 前端开发 搜索推荐
标题:【专栏:CSS进阶篇】CSS样式重置与框架:快速构建统一风格的网页
【4月更文挑战第30天】本文探讨了CSS样式重置和框架在确保网页跨浏览器一致性中的作用。样式重置通过消除默认样式差异实现一致外观,而CSS框架如Bootstrap提供预设样式和组件,加速开发并保证页面一致性。框架还有响应式设计和易于维护的优点,但也可能限制自定义和增加性能开销。选择使用哪种工具应根据项目需求、团队技能和设计复杂度来决定。开发者可结合使用两者以平衡灵活性和控制。
67 0
|
7月前
|
前端开发 JavaScript 安全
【亮剑】探讨了在React TypeScript应用中如何通过道具(props)传递CSS样式,以实现模块化、主题化和动态样式
【4月更文挑战第30天】本文探讨了在React TypeScript应用中如何通过道具(props)传递CSS样式,以实现模块化、主题化和动态样式。文章分为三部分:首先解释了样式传递的必要性,包括模块化、主题化和动态样式以及TypeScript集成。接着介绍了内联样式的基本用法和最佳实践,展示了一个使用内联样式自定义按钮颜色的例子。最后,讨论了使用CSS模块和TypeScript接口处理复杂样式的方案,强调了它们在组织和重用样式方面的优势。结合TypeScript,确保了样式的正确性和可维护性,为开发者提供了灵活的样式管理策略。
80 0
|
7月前
|
存储 JavaScript
如何在 Vue 中进行国际化和多语言支持?
如何在 Vue 中进行国际化和多语言支持?
58 3
|
7月前
|
小程序 IDE TensorFlow
【社区每周】插件开发支持“静态懒加载”模式;小程序新增“占位组件”(2022年5月第三期)
【社区每周】插件开发支持“静态懒加载”模式;小程序新增“占位组件”(2022年5月第三期)
52 0
|
JavaScript 前端开发
【Vue】了解这些类和样式绑定就够了!
【Vue】了解这些类和样式绑定就够了!
|
存储 前端开发
Vue+Vuex配合实现动态换肤| 青训营
Vue+Vuex配合实现动态换肤| 青训营
217 0