2015-12-09 15 views
11

Scrivo codice che invia una mail agli utenti. Il testo della posta contiene una data. Mentre la data viene calcolata correttamente, la data viene visualizzata in inglese, anche se tutti gli utenti hanno il sistema operativo Windows in lingua tedesca e il tedesco impostato come lingua nelle preferenze di Notes. Qui è il mio codice:Lotus Notes/LotusScript - Come impostare la data in tedesco anziché inglese?

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

Nella posta elettronica appare la data come, ad esempio,

Mercoledì, 09. Dicembre 2015

quando dovrebbe apparire come

Mittwoch, 09. Dezember 2015

Il codice viene eseguito dopo che un utente fa clic su un pulsante nel client Notes. Non tutte le mail hanno questo problema ma non riesco a rilevare alcun errore nelle impostazioni delle preferenze del sistema operativo e di Notes degli utenti che hanno riscontrato questo problema. Come posso visualizzare questa data in tedesco anziché inglese?

+1

duplicato della mia domanda vedere http://stackoverflow.com/questions/24178211/how-to-specificare-months-language-cultureinfo-in-lotusscript-format-now-dd-mm –

+1

Grazie, ma la mia domanda, sebbene simile, non è un duplicato in quanto l'impostazione regionale predefinita in uso nel client LOCAL dovrebbe essere utilizzato –

+0

hai provato a creare un campo Data nel modulo, specificare Personalizza tutto e provare a ottenere il valore come testo: uidoc.FieldGetText (fieldName) –

risposta

2

Spesso ho problemi simili a clienti sensibili in cui i PC sono limitati.

La mia risposta qui non è precisa, è solo lo scopo di guidare l'utente:

In sostanza, il Format della funzione client Lotus Notes esegue le seguenti operazioni:

  1. Si cerca di leggere il impostazioni locali dell'utente. ("locale", non "locale") Questi sono memorizzati nel registro sotto HKEY_CURRENT_USER\Control Panel\International.

  2. Se il passaggio 1 non riesce, la funzione legge il cosiddetto DefaultFallback. Questo è memorizzato in HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MUI\UILanguages. Se si guarda da vicino, si trova per il tedesco la DefaultFallBack "inglese"

  3. Se il passaggio 2 non funziona, allora la funzione utilizza la cosiddetta neutro Lingua, che è sempre l'inglese e che è hard-coded nell'API.

In ambienti normali, il passaggio 1 ha sempre esito positivo. Tuttavia, in aree sensibili, potrebbe accadere che il registro sia protetto eccessivamente e che questi dati non siano memorizzati nel registro o che il client abbia privilegi insuffi ci per accedervi. E poi, viene usata la fallback predefinita dell'inglese.

Inoltre, per non dimenticare, arrivano i profili di roaming e i profili di default, che potrebbero anche avere un'influenza incrociata!

Finalmente, ci sono molti modi per accedere al registro. Pertanto, potrebbe succedere che Excel abbia successo nel passaggio 1 e formatta correttamente la data, mentre Lotus Notes riceve un errore e utilizza il fallback predefinito.

In Windows esiste un'orribile API complessa per l'accesso alle impostazioni internazionali. Questo è cresciuto da oltre 20 anni! Nel riferimento MSDN, trovi tutte queste funzioni sotto le parole chiave "locale", "internazionale" e "MUI" (Multilingual User Interface), questo potrebbe aiutarti ulteriormente.

+0

Grazie, non ho ancora risolto definitivamente questo problema, ma andrò con questa risposta. –

+0

@TonyGuiheen Grazie! Per favore, scrivi dei tuoi progressi in merito. –

+1

Alla fine, ho risolto questo problema aggiungendo una nuova funzione LotusScript per "correggere" la data. Non è il modo ideale ma non ho trovato nessun altro. –

0

controllare il registro, e assicurarsi che non solo

HKEY_USERS\Control Panel\International 

è impostata su tedesco, ma anche

HKEY_USERS.DEFAULT\Control Panel\International 

Penso che questo è un vecchio problema noto con le note.

0

Ho risolto questo utilizzando una funzione LotusScript di tradurre le date, ancora non riesce a trovare il motivo per cui il problema si verifica in primo luogo

Problemi correlati