我正在编写向用户发送邮件的代码。邮件文本包含日期。正确计算日期时,即使所有用户都使用德语Windows操作系统并在Notes首选项中将德语设置为其语言,日期也会以英语显示。这是我的代码:
$mform->addRule('title', 'Only Numerics Allowed', 'numeric', null, 'client');
在邮件中,日期显示为,例如
2015年12月9日星期三
何时显示为
Mittwoch,09。Dezember 2015
用户单击Notes客户端中的按钮后执行代码。并非所有邮件都有此问题,但我无法检测到遇到此问题的用户的操作系统和Notes首选项设置中的任何错误。如何才能将此日期显示为德语而非英语?
答案 0 :(得分:2)
我经常在PC受限制的敏感客户端遇到类似的问题。
我的答案不准确,只是为了指导你:
基本上,Lotus Notes客户端函数的Format
执行以下操作:
尝试阅读用户的区域设置。 (“locale”,而不是“local”)这些存储在HKEY_CURRENT_USER\Control Panel\International
下的注册表中。
如果步骤1失败,则该函数会读取所谓的 DefaultFallback 。
它存储在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MUI\UILanguages
下。如果你仔细观察,你会发现对于德语的DefaultFallBack“英语”
如果步骤2也失败了,那么该函数使用所谓的中性语言,它始终是英语,并且在API中是硬编码的。
在正常环境中,步骤1始终成功。但是,在敏感区域,可能会发生注册表过度安全,并且这些数据未存储在注册表中,或者客户端具有访问它的权限不足。然后,使用英语的默认回退。
另外,不要忘记,漫游配置文件和默认配置文件也可能会产生交叉影响!
最后,有多种方法可以访问注册表。因此,Excel可能会在步骤1中成功并正确格式化日期,而Lotus Notes会收到错误并使用默认回退。
在Windows中,存在一个用于访问国际设置的可怕复杂API。这已经发展了20多年!在MSDN参考中,您可以在关键字“locale”,“international”和“MUI”(多语言用户界面)下找到所有这些功能,这可能对您有所帮助。
答案 1 :(得分:0)
检查注册表,不仅要确保
HKEY_USERS\Control Panel\International
设置为德语,但也
HKEY_USERS.DEFAULT\Control Panel\International
我认为这是一个古老的已知问题。
答案 2 :(得分:0)
我通过使用LotusScript函数来解决这个问题来翻译日期,但仍然无法找出问题出现在第一位的原因