Uso del reindirizzamento delle stringhe di registro
L'archiviazione di stringhe hardcoded nel Registro di sistema fa parte di un modello di localizzazione pre-Windows Vista. Non è supportato da MUI. Nel modello corrente, l'interfaccia utente per il sistema operativo viene eseguita nei file di risorse specifici della lingua sopra una base indipendente dalla lingua. I componenti del sistema operativo usano il Registro di sistema in modo indipendente dalla lingua.
MUI usa solo stringhe del Registro di sistema reindirizzate definite dalle risorse Win32 PE nel file di risorse della lingua di base. Il reindirizzamento viene definito separatamente, ad esempio in un file con estensione inf. Questo tipo di archiviazione consente al caricatore delle risorse di selezionare automaticamente le risorse di lingua corrette durante il caricamento del modulo di risorse.
Nota
Questo argomento riguarda solo le risorse Win32 PE. Se si usano risorse PE non Win32, è necessario fornire il reindirizzamento personalizzato della stringa del Registro di sistema, se necessario.
Creare una risorsa Language-Neutral
Un'applicazione MUI in esecuzione in Windows Vista e versioni successive usa una risorsa stringa indipendente dalla lingua per consentire l'accesso a stringhe specifiche della lingua archiviate in una tabella di risorse stringa. Il codice dell'applicazione che legge questi valori dal Registro di sistema è descritto nella sezione Caricare un valore del Registro di sistema Language-Neutral individuare stringhe reindirizzate.
I dati per un valore del Registro di sistema indipendente dalla lingua hanno il formato "@<PE-path>,-<stringID>[;<comment>]
", dove:
- percorso PE specifica il percorso del file eseguibile. È possibile specificare il percorso usando una variabile di ambiente, ad esempio %ProgramFiles%, per supportare la distribuzione. Un'alternativa per fare riferimento alla stringa consiste nell'escludere le informazioni sul percorso del file. In questo caso, l'applicazione deve avere alcuni mezzi, ad esempio un altro valore del Registro di sistema, per comunicare la propria directory di installazione.
- stringID specifica l'identificatore numerico della risorsa stringa pertinente, implementato esattamente come qualsiasi altra risorsa stringa localizzabile.
- commento specifica informazioni facoltative per il debug o la leggibilità del valore del Registro di sistema. Le funzioni API del Registro di sistema ignorano il commento durante il caricamento della stringa.
Nota
I dati per il valore del Registro di sistema non fanno riferimento esplicito al file di risorse specifico della lingua. Il file corretto viene determinato in fase di esecuzione, in base alle preferenze correnti della lingua dell'interfaccia utente.
Un valore del Registro di sistema viene immesso senza uno spazio tra "," e "-". Un valore corretto del Registro di sistema è:
shell32.dll,-22912
Un valore del Registro di sistema non corretto è:
shell32.dll, -22912
Un esempio di Windows Vista è il valore del Registro di sistema con i dati seguenti:
@%SystemRoot%\system32\input.dll,-5020
Creare risorse per le stringhe di scorciatoia
Quando l'applicazione MUI visualizza il nome nell'interfaccia utente della shell, viene visualizzata una stringa infotip per l'icona dell'applicazione. È consigliabile creare risorse stringa per il nome visualizzato dell'applicazione e la stringa infotip associata per ogni lingua supportata. Quando le risorse sono pronte, l'applicazione può usare le stringhe come descritto nella sezione "Usa l'API Shell per caricare le stringhe di collegamento dal Registro" della documentazione Localizzazione delle stringhe reindirizzate.
Preparare le risorse per una scorciatoia creata con Windows Installer
Se si usa Windows Installer (MSI) per creare un collegamento, le risorse stringa includono il nome visualizzato del collegamento e la descrizione. Nella tabella di scelta rapida MSI , la DLL delle risorse è indicata nelle colonne appropriate e gli identificatori delle risorse per il nome visualizzato del collegamento e la descrizione sono usati nelle colonne degli identificatori delle risorse corrispondenti.
In modo che il collegamento all'applicazione funzioni correttamente con la tecnologia delle risorse MUI, tenere presente quanto segue quando si preparano le stringhe di scelta rapida:
- Usare variabili di ambiente o un percorso relativo per registrare la DLL. È possibile specificare @%systemroot%\system32\shell32.dll purché il tipo di stringa del Registro di sistema sia REG_EXPAND_SZ. L'identificatore della risorsa stringa per "Documento di testo" in Shell32.dll è 12345.
- Non usare spazi intorno ai simboli "," e "-". Un esempio corretto è "shell32.dll,-22912".
- Non usare un nome di file breve. Questo tipo di nome non funziona con il caricatore di risorse.
Preparare risorse per una scorciatoia usando il formato INF
Se si usa il formato di file INF per creare stringhe di collegamento, il file di risorse deve impostare le impostazioni del Registro di sistema seguenti. Queste istruzioni presuppongono l'uso della sintassi ProfileItems dell'API di installazione.
- Modificare il valore di InfoTip in modo che punti al riferimento di reindirizzamento di stringhe usando il percorso e l'identificatore della risorsa.
- Aggiungere il nuovo valore DisplayResource nelle sezioni di installazione di ProfileItems.
Di seguito è riportato un esempio che mostra l'aggiunta dell'applicazione Calculator al menu Start:
[CalcInstallItems]
"Name" = %Calc_DESC%
"CmdLine" = 11, calc.exe
"SubDir" = %Access_GROUP%
"WorkingDir" = 11
"InfoTip" = "@%systemroot%\system32\shell32.dll,-22531"
"DisplayResource" = "%systemroot%\system32\shell32.dll",22019
Usare la sintassi illustrata di seguito quando si usa INF per aggiungere elementi, ad esempio una cartella del gruppo di accesso, al menu Start. Questa sintassi presuppone l'uso del supporto di [StartMenuItems] dal programma di installazione, simile alla sintassi usata in Syssetup.inf.
[StartMenuItems]
<description> = <binary>,<commandline>,<iconfile>,<iconnum>,<infotip>,<resDLL,resID>
Impostare il valore descrizione informazioni sul riferimento stringa "@<path>,-resID
".
Il nome visualizzato è determinato dai valori resDLL e resID. Il valore resID specifica l'identificatore della risorsa per una risorsa stringa associata al file neutro rispetto alla lingua. Il valore resDLL specifica il percorso del file indipendente dalla lingua.
Creare risorse per nomi facili da comprendere dei tipi di documento.
È necessario implementare le stringhe del nome descrittivo e dell'infotip per l'applicazione come risorse di stringa. Per consentire ai nomi descrittivi dei tipi di documento di reagire alla lingua dell'interfaccia utente, l'applicazione deve registrare i nomi usando il valore FriendlyTypeName nella chiave dell'identificatore di programma per il tipo di file. Il valore predefinito per la chiave dell'identificatore di programma deve essere mantenuto per mantenere la compatibilità con le versioni precedenti. Per informazioni sull'accesso ai nomi dall'applicazione, vedere la sezione Nomi di tipi di documento compatibili con le query nel Registro di sistema alla sezione Individuazione delle stringhe reindirizzate.
Il lavoro specifico prevede i passaggi seguenti:
- Implementare il nome descrittivo e le stringhe infoTip come risorse stringa specifiche della lingua.
- Aggiungere il valore FriendlyTypeName nella chiave di registro relativa al tipo di documento. I dati per il valore seguono il modello "
@<path>,-<resID>
", dove percorso indica l'eseguibile e resID è l'identificatore della risorsa di una risorsa stringa localizzabile associata a tale eseguibile. - Specificare il valore del Registro di sistema InfoTip in base al formato "
@<path>,-<resID>
".
L'esempio seguente mostra le impostazioni del Registro di sistema per un file .txt:
HKCR\.txt
@="txtfile"
"Content Type"="text/plain"
HKCR\txtfile
@="Text Document"
"FriendlyTypeName" = "@%systemroot%\system32\shell32.dll,-12345"
"InfoTip" = "@%systemroot%\system32\shell32.dll,-12346"
Fornire risorse per le stringhe di azione verbo shell
Le stringhe di azione per determinati verbi, ad esempio "apri" e "modifica", vengono visualizzate nel menu a comparsa visualizzato quando l'utente fa clic con il pulsante destro del mouse su un file in Esplora risorse. L'applicazione non deve specificare stringhe per i verbi della shell comuni, perché la shell ha le proprie impostazioni predefinite abilitate per MUI per questi verbi. Tuttavia, è necessario fornire risorse stringa localizzabili per le stringhe che rappresentano verbi non comuni.
Nei sistemi operativi pre-Windows XP, le stringhe dei verbi della shell nel Registro di sistema vengono rese usando la sintassi seguente, dove verbo specifica il nome del verbo effettivo:
HKCR\<progid>\shell\<verb>
@ = <friendly-name>
Ecco un esempio:
HKCR\Sample.app\shell\Disc
@ = "Disconnect"
In Windows XP e versioni successive è possibile usare un livello di riferimento indiretto per fare in modo che una stringa di azione dipenda dal linguaggio dell'interfaccia utente. Questi sistemi operativi supportano un valore MUIVerb per la definizione di una stringa compatibile con MUI. Di seguito è riportato un esempio di voce del registro per un verbo insolito.
HKCR\Sample.app\shell\Disc
@ = "Disconnect"
"MUIVerb" = "@%systemroot%\system32\sample.exe,-9875"
L'applicazione MUI deve anche essere in grado di registrare il valore predefinito precedente come stringa localizzabile, come illustrato di seguito:
HKCR\Sample.app\shell\Disc
@ = "@%systemroot%\system32\sample.exe,-9875"
Nota
La registrazione del valore predefinito precedente non è consigliata perché richiede un'installazione diversa in Windows XP e versioni successive dalla configurazione usata nei sistemi operativi precedenti.
Creare risorse per stringhe verbo, protocollo e AuxUserType
È consigliabile creare risorse stringa localizzabili per stringhe Verb, Protocol e AuxUserType. Utilizzare le seguenti impostazioni del Registro di sistema:
HKCR\CLSID\{<Your_CLSID>}\Verb\<number> @="<Your Verb>, <menu_flag>, <verb_flag>"
"LocalizedString"="@<resDLLpath\resDLL.DLL>,-resStrID"
...
HKCR\CLSID\{<Your_CLSID>}\AuxUserType\<number>
@="<Your Short Name>"
"LocalizedString"="@<resDLLpath\resDLL.DLL>,-resStrID1"
...
HKCR\<Your_Name>\protocol\StdFileEditing\verb\<number>
@="<Your Verb>"
"LocalizedString"="@<resDLLpath\resDLL.DLL>,-resStrID"
...
Il valore specificato per LocalizedString contiene o sostituisce solo il valore per Your Verb, non i due valori flag.
Di seguito è riportato un riepilogo che consente di verificare le impostazioni corrette del Registro di sistema:
- Se CLSID ha una chiave HKCR\CLSID\{clsid}\Insertable, definire il valore CLSID predefinito usando HKCR\CLSID\{clsid}\LocalizedString.
- Se CLSID ha una o più sottochiavi in HKCR\CLSID\{clsid}\Verb, definire ogni singola stringa verbo usando HKCR\CLSID\{clsid}\Verb\xxx\LocalizedString.
- Se CLSID ha una o più sottochiavi in HKCR\{progid}\Protocol\Stdfileediting\Verb, definire ogni singola stringa verbo usando HKCR\{progid}\Protocol\Stdfileediting\Verb\xxx\LocalizedString.
- Se CLSID include una o più sottochiavi AuxUserType elencate in HKCR\CLSID\{clsid}\AuxUserType, definire ogni voce AuxUserType usando HKCR\CLSID\{clsid}\AuxUserType\xxx\LocalizedString.
Creare una risorsa per il programma di disinstallazione
Per registrare il programma di disinstallazione dell'applicazione, è possibile creare valori nel Registro di sistema nella sottochiave dell'identificatore univoco per l'applicazione sotto la chiave del Registro di sistema HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall. I valori da impostare includono: DisplayName, DisplayVersion, Publisher, ProductID, RegOwner, RegCompany, UrlInfoAbout, HelpTelephone, HelpLink, InstallLocation, InstallSource, InstallDate, Contact, Comments, DisplayIcon, Readme, UrlUpdateInfo.
Nota
Per abilitare la tecnologia MUI per ogni valore, è possibile aggiungere "_Localized" al nome del valore.
È necessario che i componenti del sistema operativo forniscano un valore per DisplayName_Localized in modo specifico MUI. È necessario inserire il nome visualizzato in una DLL, ad esempio Res.dll, come risorsa stringa, presupponendo che l'identificatore sia 1245. L'applicazione può quindi registrare il nome visualizzato come DisplayName_Localized con valore "@\res.DLL,-1245". Tutte le altre impostazioni del Registro di sistema devono essere mantenute così come sono, incluso il valore originale per DisplayName.
Creare risorse per gli eventi sonori
Windows associa determinati eventi ai file audio, ad esempio un evento New Mail Notification o un evento Di allarme batteria critico. I nomi degli eventi devono essere visualizzati dall'interfaccia utente e devono supportare la globalizzazione. Pertanto, è necessario implementare una risorsa stringa localizzabile per la descrizione di ogni descrizione dell'evento. Aggiungere un nuovo valore del registro di sistema per ogni nome di evento, oltre al valore predefinito codificato in modo fisso.
Eseguire le operazioni seguenti per abilitare un evento audio:
- Implementare la descrizione come risorsa stringa localizzabile.
- Aggiungere un nuovo valore del Registro di sistema per il nome visualizzato, oltre al valore predefinito *hard-coded*. Il layout del Registro di sistema associato è illustrato di seguito:
HKCR\AppEvents\EventLabels
<event_name>
(Default) REG_SZ "<description>"
DispFileName REG_EXPAND_SZ "@<path>,-<resID>"
Se la shell non riesce a trovare o recuperare il valore di DispFileName, usa la descrizione predefinita.
Creare risorse per le stringhe di layout della tastiera
Se l'applicazione implementa un layout di tastiera, richiede una risorsa stringa localizzabile per il nome del layout per la visualizzazione dello schermo, ad esempio, negli elenchi di layout della tastiera. Ogni layout della tastiera ha una chiave del Registro di sistema in HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts
.
Tra i valori per tale chiave sono Layout Text
, un nome leggibile per la compatibilità con le versioni precedenti e Layout Display Name
. I dati forniti per Layout Display Name
devono essere un riferimento stringa del modulo @<path>,-resID
, che fa riferimento a una risorsa stringa localizzabile associata al layout della tastiera.
Di seguito è riportato un esempio di impostazione del Registro di sistema per il layout di tastiera spagnolo :
HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\
0000040a
Layout Text REG_SZ "Spanish"
Layout Display Name REG_EXPAND_SZ "@%SystemRoot%\system32\input.dll,-5020"
Visualizzare le comuni stringhe di dialogo dell'oggetto di inserimento OLE
È possibile implementare il nome visualizzato di un oggetto inseriscibile OLE come risorsa stringa localizzabile associata al codice che implementa tale oggetto. La finestra di dialogo Inserisci Oggetto OLE ottiene un nome visualizzato dalla chiave del Registro di sistema HKCR\CLSID\{<GUID>}, dove il GUID identifica il Class ID di un oggetto OLE inseribile. Windows Vista e versioni successive implementano questo tipo di oggetto in modo localizzabile, usando un nome visualizzato conforme a MUI che consente la personalizzazione della lingua dell'interfaccia utente. Al contrario, i sistemi operativi pre-Windows Vista implementano il nome visualizzato per questo tipo di oggetto usando il valore predefinito della chiave del Registro di sistema corrispondente. In genere questo nome è un nome inglese (Stati Uniti) o un nome nella lingua predefinita dell'interfaccia utente del sistema.
Nota
Non tutti gli oggetti che corrispondono alle sottochiavi della chiave del Registro di sistema sono inseriscibili.
Il valore predefinito della chiave HKCR\CLSID\{<GUID>} deve mantenere un nome leggibile per la compatibilità con le versioni precedenti. Tuttavia, deve anche definire il valore LocalizedString, nel formato "@<path>,-ResID
", dove il percorso identifica il file eseguibile che implementa l'oggetto. Il valore ResID specifica l'identificatore della risorsa della stringa localizzabile per il nome visualizzato.
Ad esempio, lo script di registrazione per l'oggetto Clip multimediale insertable include le righe seguenti:
HKCR,"CLSID\%CLSID_Media_Clip%",,,"%default description%"
HKCR,"CLSID\%CLSID_Media_Clip%","LocalizedString",,"@%systemroot%\system32\mplay32.exe,-9217"
La prima riga garantisce la compatibilità con le versioni precedenti inserendo una stringa di testo semplice nel Registro di sistema come nome visualizzato predefinito. La seconda riga fornisce l'accesso al nome visualizzato conforme a MUI. Indica l'identificatore di stringa archiviato in Mplay32.exe. La stringa con identificatore 9217 in Mplay32.exe può essere associata ai valori di risorsa stringa per un numero qualsiasi di lingue. Il nome inglese (Stati Uniti) è "Media Clip".
Creare risorse di stringa per Microsoft Management Console Snap-Ins
È consigliabile creare una risorsa stringa localizzabile per ogni snap-in di Microsoft Management Console (MMC) usato dall'applicazione MUI. Poiché uno snap-in fa parte di una console, ha un'interfaccia utente e deve essere globalizzato per operare in più lingue.
Per la maggior parte, gli snap-in MMC generano gli stessi problemi di globalizzazione e localizzazione dell'applicazione MUI stessa. Uno snap-in MMC deve riflettere il suo nome nel registro per essere visualizzato. La voce del Registro di sistema deve includere sia un riferimento indiretto a una risorsa stringa localizzabile che una stringa letterale per la compatibilità con le versioni precedenti.
Ogni snap-in MMC ha una chiave del Registro di sistema in HKEY_LOCAL_MACHINE\Software\Microsoft\MMC\SnapIns. Tra i valori per tale chiave sono NameString, specificando un nome leggibile per la compatibilità con le versioni precedenti e NameStringIndirect, specificando un riferimento indiretto a una risorsa stringa localizzabile. Per NameStringIndirect è necessario fornire un riferimento stringa del formato "@<path>,-resID
", che rappresenta una risorsa stringa localizzabile.
Ad esempio, è possibile impostare l'impostazione seguente per Mymmc.dll, dove 12345 è l'identificatore della risorsa stringa corrispondente contenente il nome localizzabile dello snap-in:
NameStringIndirect=@%systemroot%@c:\windir\system32\mymmc.dll,-12345
Alcuni snap-in registrano altri valori di stringa del Registro di sistema che MMC non legge dal Registro di sistema. Per ulteriori informazioni sull'uso di questi valori, consultare il registro della Microsoft Management Console, la sezione Snap-In Stringhe non lette dal registro, all'interno della sezione Localizzazione delle stringhe reindirizzate.
Creare risorse stringa per un servizio Windows
Sebbene un servizio Windows abbia in genere un'interfaccia utente minima o nessuna interfaccia utente, deve visualizzare un nome conforme a MUI e in genere fornisce una descrizione specifica del linguaggio conforme a MUI. La chiave del Registro di sistema che descrive un servizio di Windows supporta solo il valore DisplayName per il nome del servizio e il valore Description per la descrizione del servizio.
Le impostazioni per il servizio Windows vengono eseguite dall'applicazione, come descritto in Impostare il nome visualizzato e la descrizione per un servizio di Windows dal Registro di sistema in Individuazione di stringhe reindirizzate. Se l'applicazione non imposta i valori del Registro di sistema per l'interfaccia utente del servizio, i valori nel Registro di sistema rimangono impostati su Inglese, anche se l'interfaccia utente si trova in un'altra lingua.
Argomenti correlati