本文将教您如何动态本地化TinyMCE编辑器。 如果您不熟悉TinyMCE是什么,它将是您所见即所得的,内置JavaScript的Web富文本编辑器。
问题
本教程假定您已经构建了PHP多语言站点/框架,并且您(无论管理员是谁)都希望TinyMCE自动切换到您网站的当前语言。 一个实际的例子是:您刚刚将站点的界面切换为西班牙语,但是您意识到编辑器的界面仍然是英语,而您希望它使用西班牙语。
尽管TinyMCE是一款出色的所见即所得编辑器,几乎可以为每种已知语言提供本地化文件,但它仍然没有自动语言切换功能。 但是,将自己的解决方案推出该问题非常容易,所以这就是我们现在要做的。
解决方案
首先,从此处获取您需要的其他语言文件,并将其相应地上传到TinyMCE目录。
假设在您的站点/框架上,保存当前语言的变量称为$current_lang
。 您需要检查$current_lang
变量是否具有与TinyMCE的语言代码匹配的值。 简单来说,TinyMCE的西班牙语代码是'es',如果$current_lang
在需要时返回'sp'而不是'es',它将无法正常工作。 因此,在这种情况下,您需要添加一两行:
<?php
...
if($current_lang == 'sp') {
$current_lang = 'es';
} else {
$current_lang = 'en'; //or whatever the default lang you wish
}
...
您可以在此处查找代码,查看它们是否与您在网站/框架上已使用的代码相对应。
现在,让我们进入您之前初始化TinyMCE的站点/框架的标题部分。 我们将把php $current_lang
变量导入到我们的JS代码中,就在您初始化tinyMCE.js的位置的上方,如下所示:
<script type="text/javascript">
var cur_lang = "<?php echo $current_lang; ?>"; // do not forget the double quotes
tinyMCE.init({
...
最后,我们将语言参数/值添加到
常规选项部分,如果该选项尚不存在。
<script type="text/javascript">
var cur_lang = "<?php echo $current_lang; ?>"; // do not forget the double quotes
tinyMCE.init({
// General options
width : "480",
height : "680",
mode : "textareas",
theme : "advanced",
language : cur_lang, // Here we have added our language parameter, the value of which corresponds to our current language on the site.
plugins :
...
注意:如果已经安装了TinyMCE压缩程序, 请不要忘记对其进行修改。
就是这样,从现在开始,您的TinyMCE编辑器的界面将以您网站当前使用的语言显示。
结论
TinyMCE是一个很棒的工具,但是人们经常跳过各种效率低下的圈,以使其支持本地化。 在本教程中,我们仅用几行代码就实现了一种通用的方法。 您是否使用其他方法? 让我们知道!
From: https://www.sitepoint.com/dynamically-localize-tinymce/