Lotus Notes/LotusScript - 如何用德语而不是英语设置日期?

Ton*_*een 11 lotus-notes lotusscript lotus-domino

我正在编写向用户发送邮件的代码.邮件文本包含日期.正确计算日期时,即使所有用户都使用德语Windows操作系统并在Notes首选项中将德语设置为其语言,日期也会以英语显示.这是我的代码:

Set dt = New NotesDateTime(doc.GetItemValue("abc")(0))          
dts = Format$(dt.LSLocalTime, "dddd, dd. MMMM yyyy")
mailText = replaceSubstring(mailText, "Datum", dts, True)
Run Code Online (Sandbox Code Playgroud)

在邮件中,日期显示为,例如,

2015年12月9日星期三

什么时候应该出现

Mittwoch,09.Dezember 2015

用户单击Notes客户端中的按钮后执行代码.并非所有邮件都有此问题,但我无法在遇到此问题的用户的操作系统和Notes首选项设置中检测到任何错误.我怎样才能让这个日期以德语而不是英语出现?

SQL*_*ice 2

我经常在电脑受到限制的敏感客户端遇到类似的问题。

我的回答并不准确,仅供参考:

基本上,FormatLotus Notes 客户端功能执行以下操作:

  1. 它尝试读取用户的区域设置。(“locale”,而不是“local”)它们存储在注册表中的HKEY_CURRENT_USER\Control Panel\International.

  2. 如果步骤 1 失败,则该函数将读取所谓的DefaultFallback。这存储在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MUI\UILanguages. 如果仔细观察,您会发现德语的 DefaultFallBack“英语”

  3. 如果步骤 2 也失败,则该函数将使用所谓的Neutral Language,该语言始终为英语,并且在 API 中硬编码。

在正常环境下,步骤 1 总是成功的。然而,在敏感区域,可能会出现注册表过度安全的情况,这些数据要么没有存储在注册表中,要么客户端没有足够的权限来访问它。然后,使用默认的英语后备。

另外,不要忘记,还有漫游配置文件和默认配置文件,它们也可能会产生交叉影响!

最后,访问注册表的方法有多种。因此,Excel 可能会在步骤 1 中成功并正确设置日期格式,而 Lotus Notes 会出现错误并使用默认回退。

在 Windows 中,存在一个可怕的复杂 API 用于访问国际设置。这已经增长了20多年了!在 MSDN 参考中,您可以在关键字“locale”、“international”和“MUI”(多语言用户界面)下找到所有这些功能,这可能会为您提供进一步帮助。