在 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。

在 DevExpress 打印预览中进行了本地化分页

为了解决这个问题,你应该能够使用设计器本身及其本地化过程,不需要直接在代码中进行更改。

若要访问设计器中的本地化,请在设计模式下打开报表,然后从该模式打开其中一个属性是 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)

这应该会为你设置的语言提供正确的格式字符串。

-

-莱因哈德