Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript TinyMce 4 util.i18n.translate()用法_Javascript_Tinymce 4 - Fatal编程技术网

Javascript TinyMce 4 util.i18n.translate()用法

Javascript TinyMce 4 util.i18n.translate()用法,javascript,tinymce-4,Javascript,Tinymce 4,我从几个小时开始尝试使用(非常没有帮助的API:S)来翻译我的插件 tinymce.translate('Cut'); // returns Ausschneiden for de 到目前为止,一切顺利 tinymce.translate('myplugin.test'); // returns myplugin.test 我检查了tinymce.i18n.data,通过inspector可以看出它包含我添加的数据 tinymce.addI18n('de.myplugin', { "

我从几个小时开始尝试使用(非常没有帮助的API:S)来翻译我的插件

tinymce.translate('Cut'); // returns Ausschneiden for de
到目前为止,一切顺利

tinymce.translate('myplugin.test'); // returns myplugin.test
我检查了tinymce.i18n.data,通过inspector可以看出它包含我添加的数据

tinymce.addI18n('de.myplugin', {
    "test": 'test label'
});
以前

这可能是件愚蠢的事,但我想不出来

更新

现在,我添加了自己的功能来手动执行此操作,因为我不知道如何执行此操作:

plugin_translate = function(val) {
  return (eval('tinymce.i18n.data.' + tinymce.settings.language + '.' + val) != undefined)
  ? eval('tinymce.i18n.data.' + tinymce.settings.language + '.' + val)
  : val;
}
我的插件/langs/de.js如下所示

tinymce.addI18n('de', { 'plugin': { "title" : 'Titel' }});

这看起来不正确,但目前它可以工作,直到有人告诉我。

翻译是使用或注册的

第一个参数是类似“en”、“en_US”或“de”的语言代码。该值应与用于的值相同。请注意,此处不应包含插件前缀

第二个参数是翻译密钥到翻译对的映射。翻译可以采用位置参数,如
{0}
{1}
。你应该在你的键前面加上你的插件名,以避免命名冲突。例如:

{
  "myplugin.test": "test label",
  "myplugin.greeting": "Hello {0}, you are welcome"
}
var title = tinymce.translate("myplugin.title");
var name = getName(); // get the name from the user
var greeting = tinymce.translate(["myplugin.greeting", name]);
var name = getName(); // get the name from the user
var key = name === "James" ? {"raw": "Go away!"} : ["myplugin.greeting", name];
var greeting = tinymce.translate(key);
因此,将所有这些部分结合在一起,您可以注册英语和德语翻译,如:

tinymce.addI18n("en", {
    "myplugin.title": "My Plugin",
    "myplugin.greeting": "Hello {0}, you are welcome"
});
tinymce.addI18n("de", {
    "myplugin.title": "Mein Plugin",
    "myplugin.greeting": "Hallo {0}, du bist willkommen"
});
然后使用转换调用返回转换后的字符串。对于没有参数的字符串,只需传递映射中使用的相同键即可。例如:

{
  "myplugin.test": "test label",
  "myplugin.greeting": "Hello {0}, you are welcome"
}
var title = tinymce.translate("myplugin.title");
var name = getName(); // get the name from the user
var greeting = tinymce.translate(["myplugin.greeting", name]);
var name = getName(); // get the name from the user
var key = name === "James" ? {"raw": "Go away!"} : ["myplugin.greeting", name];
var greeting = tinymce.translate(key);
如果您的转换具有参数,则必须将密钥包装在数组中。例如:

{
  "myplugin.test": "test label",
  "myplugin.greeting": "Hello {0}, you are welcome"
}
var title = tinymce.translate("myplugin.title");
var name = getName(); // get the name from the user
var greeting = tinymce.translate(["myplugin.greeting", name]);
var name = getName(); // get the name from the user
var key = name === "James" ? {"raw": "Go away!"} : ["myplugin.greeting", name];
var greeting = tinymce.translate(key);
如果出于某种原因需要覆盖转换,可以为对象提供原始字符串。例如:

{
  "myplugin.test": "test label",
  "myplugin.greeting": "Hello {0}, you are welcome"
}
var title = tinymce.translate("myplugin.title");
var name = getName(); // get the name from the user
var greeting = tinymce.translate(["myplugin.greeting", name]);
var name = getName(); // get the name from the user
var key = name === "James" ? {"raw": "Go away!"} : ["myplugin.greeting", name];
var greeting = tinymce.translate(key);

你好,詹姆斯,谢谢你的回答。我在github.com上发布了一个插件,在那里我有你描述的lang文件=>。但这不起作用,因为tinymce.translate('myplugin.test')不返回转换后的值。有什么提示吗?在您链接的文件中,您嵌套了对象“`{imgmap':{”title:“'Image Map Editor',…}}``但是从我对源代码()的阅读来看,我认为TinyMCE不支持这一点。你需要写一些类似的东西:``{“imgmap.title”:“图像地图编辑器”,…}``谢谢你的帮助,有了你的答案和评论,我就能够修复它了。