0

I'm trying to have a localized pagination in the footer of all my pages in my print preview. I set my paging this way :

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)
);

It works in english, but not in french or spanish. Tried with XtraPrinting Resources dll too.

4

2 回答 2

0

您应该能够使用设计器本身及其本地化过程来处理此问题,无需直接在代码中进行更改。

要在设计器中访问本地化,请在设计模式下打开报表,然后其中一个属性是语言。更改将创建包含本地化资源字符串的新 .resx 文件。那应该根据用户 "CurrentUICulture" 自动导入正确的资源文件System.Threading.Thread.CurrentThread.CurrentUICulture。这一切都在我的系统上自动运行。

然而,这是假设您拥有设计器中定义的所有结构。这不适用于代码生成的控件。

对于那些......你真的想手动处理它......

在 BeforePrint 事件中,您应该能够检查CurrentUICulture您要查找的内容,并相应地更改各种控件的文本。

如果您不想在报告运行时执行此操作,而是在声明本身期间执行此操作,那么您的代码应该可以正常工作。我会检查您是否在 switch 语句中引用了正确的值。您应该CurrentUICulture从正在运行的线程中寻找。我不确定是否真的CultureManager.GetInstance()会给你正确的价值。

更新:添加代码示例

将此值用于开关:

switch( System.Threading.Thread.CurrentThread.CurrentUICulture.TwoLetterISOCultureName )
{
    ...
}
于 2013-10-11T17:00:22.467 回答
0

只需使用

using DevExpress.XtraPrinting.Localization
PreviewLocalizer.GetString(PreviewStringId.PageInfo_PageNumberOfTotal)

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

——莱因哈德

于 2013-12-13T14:29:16.630 回答