TinyMce 4 util.i18n.translate() 用法
TinyMce 4 util.i18n.translate() usage
我尝试了几个小时并使用(非常有用 API documentation :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;
}
我的 plugin/langs/de.js 看起来像这样
tinymce.addI18n('de', { 'plugin': { "title" : 'Titel' }});
这看起来不对,但目前它可以工作,直到有人启发我。
使用 tinymce.addI18n(langCode, translationMap)
or tinymce.util.I18n.add(langCode, translationMap)
.
注册翻译
第一个参数是语言代码,如 "en"、"en_US" 或 "de"。这应该与用于 language
init property 的值相同。请注意,您不应在此处包含插件前缀。
第二个参数是翻译键到翻译对的映射。翻译可以采用位置参数,如 {0}
和 {1}
。您应该在您的密钥前加上您的插件名称以避免命名冲突。例如:
{
"myplugin.test": "test label",
"myplugin.greeting": "Hello {0}, you are welcome"
}
因此,将所有这些部分组合在一起,您可能会注册英语和德语翻译,例如:
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"
});
然后使用翻译调用 tinymce.translate(translationKey)
其中 returns 翻译的字符串。对于没有参数的字符串,您可以传递您在地图中使用的相同键。例如:
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);
我尝试了几个小时并使用(非常有用 API documentation :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;
}
我的 plugin/langs/de.js 看起来像这样
tinymce.addI18n('de', { 'plugin': { "title" : 'Titel' }});
这看起来不对,但目前它可以工作,直到有人启发我。
使用 tinymce.addI18n(langCode, translationMap)
or tinymce.util.I18n.add(langCode, translationMap)
.
第一个参数是语言代码,如 "en"、"en_US" 或 "de"。这应该与用于 language
init property 的值相同。请注意,您不应在此处包含插件前缀。
第二个参数是翻译键到翻译对的映射。翻译可以采用位置参数,如 {0}
和 {1}
。您应该在您的密钥前加上您的插件名称以避免命名冲突。例如:
{
"myplugin.test": "test label",
"myplugin.greeting": "Hello {0}, you are welcome"
}
因此,将所有这些部分组合在一起,您可能会注册英语和德语翻译,例如:
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"
});
然后使用翻译调用 tinymce.translate(translationKey)
其中 returns 翻译的字符串。对于没有参数的字符串,您可以传递您在地图中使用的相同键。例如:
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);