我无法弄清楚如何将国际化添加到 PrimeFaces 编辑器(版本 3.2)。我需要翻译工具提示、组合框中的文本并更改工具栏的图标。在旧用户指南http://www.scribd.com/doc/49595285/46/Editor中,我发现了一个名为“语言”的属性,但这对于实际版本似乎已被禁用或删除。
我的项目设置是带有 PrimeFaces 3.2 和 GlassFish 3.1.2 的 JSF 2
如果你能告诉我如何解决这个问题,我会很高兴。
谢谢和亲切的问候,
佩德罗
我无法弄清楚如何将国际化添加到 PrimeFaces 编辑器(版本 3.2)。我需要翻译工具提示、组合框中的文本并更改工具栏的图标。在旧用户指南http://www.scribd.com/doc/49595285/46/Editor中,我发现了一个名为“语言”的属性,但这对于实际版本似乎已被禁用或删除。
我的项目设置是带有 PrimeFaces 3.2 和 GlassFish 3.1.2 的 JSF 2
如果你能告诉我如何解决这个问题,我会很高兴。
谢谢和亲切的问候,
佩德罗
JMelnik 是对的。不过有一个解决方法!
您可以通过从 primefaces 颠覆存储库下载 editor.js 文件来做到这一点:3_3_1/src/main/resources/META-INF/resources/primefaces/editor/editor.js并将其放在项目的META-INF/resources/primefaces/editor
文件夹中。
现在您可以编辑文件并根据您的语言环境进行更改。我为pt_BR中的一些按钮做了它:
buttons: {
// name,title,command,popupName (""=use name)
init:
"bold,Negrito,|" +
"italic,Itálico,|" +
"underline,Sublinhado,|" +
"strikethrough,Tachado,|" +
"subscript,Subscrito,|" +
"superscript,Sobrescrito,|" +
"font,Fonte,fontname,|" +
"size,Tamanho da Fonte,fontsize,|" +
"style,Estilo,formatblock,|" +
"color,Cor da fonte,forecolor,|" +
"highlight,Cor de Destaque do Texto,hilitecolor,color|" +
"removeformat,Remove Formatting,|" +
"bullets,Marcadores,insertunorderedlist|" +
"numbering,Numeração,insertorderedlist|" +
"outdent,Diminuir Recuo,|" +
"indent,Aumentar Recuo,|" +
"alignleft,Alinhar à Esquerda,justifyleft|" +
"center,Centralizar,justifycenter|" +
"alignright,Alinhar à Direita,justifyright|" +
"justify,Justificar,justifyfull|" +
"undo,,|" +
"redo,,|" +
"rule,Insert Horizontal Rule,inserthorizontalrule|" +
"image,Insert Image,insertimage,url|" +
"link,Insert Hyperlink,createlink,url|" +
"unlink,Remove Hyperlink,|" +
"cut,,|" +
"copy,,|" +
"paste,,|" +
"pastetext,Paste as Text,inserthtml,|" +
"print,,|" +
"source,Mostrar Código Fonte"
},
一个 i18n 解决方案会很棒,因为这种方法不支持多个语言环境,并使您的代码依赖于特定的编码(因为它可能使用特殊字符)。
如果我们查看PrimeFaces 3.2 文档,编辑器组件没有语言这样的属性,本地化章节中也没有提到任何内容。
PrimeFaces 不提供本地化 Editor 的方法,因为它们提供了 Calendar。很明显,他们确实为日历提供了它,因为它是 jQuery datePicker 的开箱即用功能,它是 caledar 的基础。
在PrimeFaces 3.2 源代码中查找editor.js。有一个部分,所有编辑器按钮都被初始化:
buttons: {
// name,title,command,popupName (""=use name)
init:
.....
"font,,fontname,|" +
"size,Font Size,fontsize,|" +
.....
}
提供了单独按钮设置的格式:name,title,command,popupName
. 该title
部分是您可以使用的部分。
您可以做什么,您可以使用提供的自己的标题构建 primefaces 源,或者以我想不到的其他方式覆盖它们。
如果您使用的是 maven,您可以在自己的本地或集中存储库中安装自定义的 primefaces,并使用它来代替原始依赖项。
当您使用较新版本时,您不应该寻找旧文档。查找您正在使用的版本的文档。
由于 JSF2 和 Primefaces 有 jQuery,您可以简单地在您的页面上运行以下代码:
$(function(){
$(".ui-editor-group>.ui-editor-button").each(function(){
var title = $(this).attr("title").toLowerCase();
switch(title){
case "bold": title = "Negrito"; break;
case "italic": title = "Itálico"; break;
case "underline": title = "Sublinhado"; break;
case "align text left": title = "Alinhado à esquerda"; break;
case "center": title = "Centralizado"; break;
case "align text right": title = "Alinhado à direita"; break;
case "justify": title = "Justificado"; break;
case "insert hyperlink": title = "Inserir link"; break;
case "remove hyperlink": title = "Remover link"; break;
}
$(this).attr("title", title);
})
})
这个小 jQuery 代码可以将 Primefaces 编辑器的字符串更改为您想要的任何位置。我只为一些编辑器的组件制作了它,因为我没有使用所有它们。
如果您需要翻译其他选项,只需将它们添加到 switch 命令中。不要忘记 switch 命令中的所有标题都是小写的,因为第三行的“.toLowerCase()”方法。我这样做是为了简化字符串管理。
您也可以将其放在外部 JavaScript 文件内的函数中以对其进行缓存。
这是我为希腊语(el_GR 语言环境)制作的一个工作示例,所有按钮:
$(".ui-editor-group>.ui-editor-button").each(function () {
var title = $(this).attr("title").toLowerCase();
switch (title) {
case "bold":
title = "Έντονα";
break;
case "italic":
title = "Πλάγια";
break;
case "underline":
title = "Υπογραμμισμένα";
break;
case "align text left":
title = "Στοίχιση αριστερά";
break;
case "center":
title = "Στοίχιση στο κέντρο";
break;
case "align text right":
title = "Στοίχiση δεξιά";
break;
case "justify":
title = "Στοίχιση";
break;
case "insert hyperlink":
title = "Εισαγωγή συνδέσμου";
break;
case "remove hyperlink":
title = "Αφαίρεση συνδέσμου";
break;
case "strikethrough":
title = "Διεγραμμένα";
break;
case "subscript":
title = "Δείκτης";
break;
case "superscript":
title = "Εκθέτης";
break;
case "font":
title = "Γραμματοσειρά";
break;
case "font size":
title = "Μέγεθος γραμματοσειράς";
break;
case "style":
title = "Στυλ";
break;
case "font color":
title = "Χρώμα γραμματοσειράς";
break;
case "text highlight color":
title = "Χρώμα επισήμανσης κειμένου";
break;
case "remove formatting":
title = "Κατάργηση μορφοποίησης";
break;
case "bullets":
title = "Λίστα με κουκκίδες";
break;
case "numbering":
title = "Αριθμητική λίστα";
break;
case "outdent":
title = "Προεξοχή";
break;
case "indent":
title = "Εσοχή";
break;
case "undo":
title = "Αναίρέση";
case "redo":
title = "Επαναφορά";
break;
case "insert horizontal rule":
title = "Eισαγωγή οριζόντιας γραμμής";
break;
case "insert image":
title = "Εισαγωγή εικόνας";
break;
case "cut":
title = "Κόψιμο";
break;
case "copy":
title = "Αντιγραφή";
break;
case "paste":
title = "Επικόλληση";
break;
case "paste as text":
title = "Επικόλληση ως απλό κείμενο";
break;
case "print":
title = "Εκτύπωση";
break;
case "show source":
title = "Εμφάνιση κώδικα";
break;
case "Show Rich Text":
title = "Εμφάνιση εύκολης επεξεργασίας άρθρου";
break;
}
$(this).attr("title", title);
});