如何在wix和DTF中本地化自定义操作的错误消息?

BdN3504

我已经在DTF中编写了一个自定义操作,并希望为其生成本地化的错误消息。到目前为止,我已经通过以下方式进行了处理:自定义操作包括一个方法,该方法显示已在字符串表中定义的消息,如下所示:

public static string getError(Session session, short errorNo)
    {
        Database db = session.Database;
        string errorMessage = (string)db.ExecuteScalar("SELECT `Message` FROM `Error` WHERE `Error` = {0}", errorNo);
        db.Close();
        return errorMessage;
    }

要利用此错误消息,Error必须在这样的UI元素下创建一个元素:

<UI>
  <Error Id="42042">!(loc.Error42042)</Error>
</UI>

然后可以将实际错误消息存储在本地化变量中,Error42042如下所示:

<String Id="Error42042">My localized Error Message.</String>

尽管这种方法有一个严重的局限性,但它的效果很好:它不会替换字符串中的属性。所以字符串

<String Id="Error42043">[MY_PROPERTY] is broken</String>

将逐字显示为[MY_PROPERTY] is broken

我是否需要扩展getError方法以手动替换属性(即借助正则表达式或其他一些文本替换技术)?

我可以用于属性替换的wix源代码中是否存在预定义的函数?

这是完全错误的方法吗?

我看过以下形式的琴弦

<String Id="Error2227">Param: [2]. Invalid param "[3]" in action: [4].</String>

在其他安装包中。能够像这样将参数传递给String表也是解决此问题的一种可行方法,但是我还没有弄清楚如何将参数传递给String表。你知道怎么做吗?

BdN3504

感谢PhilDW的评论,我找到了DTF解决方案,它非常简单。使用该Session.Format方法,该方法是MsiFormatRecord周围的DTF包装,可以简单地替换本地化字符串中的属性。在以上示例的基础上,必须将getError方法扩展为以下内容:

public static string getError(Session session, short errorNo)
    {
        Database db = session.Database;
        string errorMessage = (string)db.ExecuteScalar("SELECT `Message` FROM `Error` WHERE `Error` = {0}", errorNo);
        db.Close();
        errorMessage = session.Format(errorMessage);
        return errorMessage;
    }

现在,可以使用格式语法替换本地化字符串中的属性,如下所示:

<String Id="Error42043">{[MY_PROPERTY]} is broken</String>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

SiriKit:自定义意图-本地化问题

无法本地化自定义键盘iOS

FluentValidation自定义消息本地化不适用于When()条件

如何在Laravel中自定义错误消息?

自定义keycloak登录主题的本地化

如何在自定义渲染器中更改Timepicker的标题和本地化

如何在python3中使用错误消息和状态代码创建自定义异常

如何在Sitecore 9表单提交操作中自定义错误消息(不是WFFM表单)

自定义Azure Pipelines构建任务的本地化

ASP.NET Core自定义验证错误消息未本地化

如何在Django的PasswordChangeForm中自定义和翻译错误消息?

如何在Wix安装程序代码中记录自定义消息?

自定义号码(价格)格式与本地化无关

如何在Yii中自定义错误显示消息?

如何获取本地化的错误消息?

Struts 1自定义本地化

在安装服务之前,如何在wix中执行自定义操作?

使用自定义的本地化资源进行构建

如何覆盖自定义操作中出现的错误消息

如何在DropzoneJS中显示自定义错误消息?

如何在wix安装程序中通过自定义操作设置安装目录?

在自定义表格视图单元格中本地化按钮和标签[swift]

XPage:自定义/本地化默认验证错误消息(此字段不是有效的整数)

如何在Android中的自定义异常类中将错误消息的字符串外部化

如何在自定义操作 DLL (MSI/Wix) 中获取“已安装”属性?

自定义验证的本地化

如何在 Python 中创建自定义错误消息

B2C 自定义策略中 RestAPI 错误响应的本地化消息

如何本地化在 Hybris 的 trainingcore-items.xml 中创建的自定义类型?