在 DevExpress 打印预览中进行了本地化分页
本文关键字:本地化 分页 DevExpress 打印 | 更新日期: 2023-09-27 18:35:03
我正在尝试在打印预览中所有页面的页脚中进行本地化分页。我以这种方式设置分页:
var PageOfPages = "[Page # of Pages #]";
//On n'a pas vraiment le choix de faire ça pour que ça fonctionne dans les différentes langues... :
//http://www.devexpress.com/Support/Center/p/CQ48170.aspx
switch (CultureManager.GetInstance().TwoLetterISOCultureName)
{
case "fr":
PageOfPages = "[Page # de pages #]";
break;
case "es":
PageOfPages = "[Página # de Páginas #]";
break;
}
var PageHeaderArea = new PageHeaderArea();
PageHeaderArea.Content.AddRange(new[] { "", "", "[Image 0]" });
var HeaderFooter = (PageHeaderFooter)LinkBase.PageHeaderFooter;
HeaderFooter = new PageHeaderFooter(
PageHeaderArea,
new PageFooterArea(new[] { dateString, "", PageOfPages }, SystemFonts.DefaultFont, BrickAlignment.Far)
);
它适用于英语,但不适用于法语或西班牙语。也尝试过XtraPrinting Resources dll。
为了解决这个问题,你应该能够使用设计器本身及其本地化过程,不需要直接在代码中进行更改。
若要访问设计器中的本地化,请在设计模式下打开报表,然后从该模式打开其中一个属性是 Language。 更改此设置将创建包含本地化资源字符串的新 .resx 文件。 这应该根据用户的"CurrentUICulture"System.Threading.Thread.CurrentThread.CurrentUICulture
自动导入正确的资源文件。 这一切都在我的系统上自动运行。
但是,这是假设您具有设计器中定义的所有结构。 这不适用于代码生成的控件。
对于那些...你真的想手动处理它...
在 BeforePrint 事件中,您应该能够根据要查找的任何内容检查CurrentUICulture
,并相应地更改各种控件的文本。
如果您不想在报告运行时执行此操作,而是在声明本身期间执行此操作,那么您的代码应该可以正常工作。 我会检查您是否在 switch 语句中引用了正确的值。 您应该从正在运行的线程中查找CurrentUICulture
。 我不确定CultureManager.GetInstance()
是否真的会让你得到正确的值。
更新:添加了代码示例
对交换机使用此值:
switch( System.Threading.Thread.CurrentThread.CurrentUICulture.TwoLetterISOCultureName )
{
...
}
只需使用
using DevExpress.XtraPrinting.Localization
PreviewLocalizer.GetString(PreviewStringId.PageInfo_PageNumberOfTotal)
这应该会为你设置的语言提供正确的格式字符串。
--莱因哈德