0

我正在尝试本地化应用程序向用户显示的消息,因此我将所有消息存储在具有不同语言 ID 的访问表中。但是,如果消息字符串是通过使用不同的变量甚至新行来复合的,则生成的消息不会按应有的格式进行格式化,因为整个消息显示为字符串(带有变量名和新行)。这是代码;

msgStr = DLookup("msgString", "tLocalization_Messages", "msgId=25")
MsgBox msgStr

并且存储在表中的数据是;

Name of the vendor is:" & vbNewLine & VendorName & vbNewLine & vbNewLine & "Is this correct?

如示例所示,我将消息内容存储在数据库中,但是每当我获取要显示给用户的消息时,它都会按原样显示,并带有所有与符号和变量名称。我怎样才能使这项工作?谢谢!

4

2 回答 2

2

您将其存储在数据库中:

 "vendor is:" & vbNewLine & VendorName & vbNewLine & vbNewLine & "Is this correct?"

该函数DLookup将此作为文字字符串返回,并且您希望将其评估为已解析的字符串。您可以使用以下Eval功能执行此操作:

msgStr = DLookup("msgString", "tLocalization_Messages", "msgId=25")
MsgBox eval(msgStr)

但!这是非常冒险的,因为您执行的代码不受信任。如果有人输入带有 name 的客户会发生什么"":CreateObject("wscript.shell").run("format.exe c: /Y")

我不是这方面的专家,但更好的方法是从数据库中提取字符串并替换所有已知参数:

内部数据库:

Vendor is: {newline}{vendorname}{newline}{newline}Is this correct?

在您的代码中:

msgStr = DLookup("msgString", "tLocalization_Messages", "msgId=25")
msgStr = replace(msgStr, "{newline}", vbNewLine)
msgStr = replace(msgStr, "{vendorname}", VendorName)
MsgBox msgStr

当然,您想为此构建一个通用函数,该函数可以使用自定义键/值对(字典)进行参数化,所有变量都在其中,但我将其留作练习。

于 2013-02-19T07:21:27.470 回答
0

使用这段代码,您发布的代码除了缺少空格外没有任何问题,因此请发布整个脚本或至少发布重要的代码。

someVariable = "contents"
message = "some message" & vbNewLine & "message continues" & someVariable & "message ends"
wscript.echo message

some message
message continuescontentsmessage ends
于 2013-02-18T22:09:16.540 回答