Lotus Notes/LotusScript - Как установить дату на немецком, а не на английском?

Я пишу код, который отправляет почту пользователям. Текст письма содержит дату. Хотя дата рассчитана правильно, дата отображается на английском языке, хотя все пользователи имеют ОС Windows на немецком языке и имеют немецкий язык в качестве своего языка в настройках Notes. Вот мой код:

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

В письме дата отображается как, например,

Среда, 09. Декабрь 2015

когда он должен выглядеть как

Mittwoch, 09. Dezember 2015

Код выполняется после нажатия пользователем кнопки в клиенте Notes. Не все письма имеют эту проблему, но я не могу обнаружить никаких ошибок в настройках настроек ОС и Notes для пользователей, которые испытали это. Как я могу получить эту дату для показа на немецком, а не на английском?

Ответ 1

У меня часто возникают подобные проблемы у чувствительных клиентов, где ПК ограничены.

Мой ответ здесь не точен, он предназначен только для вас:

В принципе, функция Format для функции Lotus Notes Client выполняет следующие действия:

  • Он пытается прочитать настройки пользовательских локалей. ( "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" (многоязычный пользовательский интерфейс), это может помочь вам в дальнейшем.

Ответ 2

Проверьте реестр и убедитесь, что не только

HKEY_USERS\Control Panel\International

устанавливается в немецкий, но также

HKEY_USERS.DEFAULT\Control Panel\International

Я думаю, что это давняя известная проблема с заметками.

Ответ 3

Я решил это, используя функцию LotusScript для перевода дат, но не могу понять, почему проблема возникает в первую очередь