Condividi tramite


Uso del reindirizzamento di stringhe del Registro di sistema

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 indipendente dalla lingua

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 indipendente dalla lingua di Individuazione di stringhe reindirizzate.

I dati per un valore del Registro di sistema indipendente dalla lingua hanno il formato "@<PE-path>,-<stringID>[;<comment>]", dove:

  • PE-path specifica il percorso dell'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, che viene implementata esattamente come qualsiasi altra risorsa stringa localizzabile.
  • comment 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 collegamento

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 in Usare l'API Shell per caricare stringhe di collegamento dalla sezione Registro di sistema di Individuazione di stringhe reindirizzate.

Preparare le risorse per un collegamento creato 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 della risorsa viene fatto riferimento nelle colonne appropriate e gli identificatori di risorsa per il nome visualizzato del collegamento e la descrizione vengono usati nelle colonne corrispondenti dell'identificatore di risorsa.

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 le risorse per un collegamento 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.

  1. Modificare il valore di InfoTip in modo che punti al riferimento di reindirizzamento di stringhe usando il percorso e l'identificatore della risorsa.
  2. 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 la descrizione informazioni sul valore 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 indipendente dalla lingua. Il valore resDLL specifica il percorso del file indipendente dalla lingua.

Creare risorse per nomi descrittivi dei tipi di documento

È necessario implementare stringhe di nome descrittivo e infotip per l'applicazione come risorse 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 Query Friendly Document Type Names nella sezione Registry (Registro di sistema) di Individuazione di stringhe reindirizzate.

Il lavoro specifico prevede i passaggi seguenti:

  1. Implementare il nome descrittivo e le stringhe infoTip come risorse stringa specifiche della lingua.
  2. Aggiungere il valore FriendlyTypeName sotto la chiave del Registro di sistema del tipo di documento. I dati per il valore seguono il modello "@<path>,-<resID>", dove path indica l'eseguibile e resID è l'identificatore della risorsa di una risorsa stringa localizzabile associata a tale eseguibile.
  3. 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 con estensione 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, il rendering delle stringhe per i verbi della shell nel Registro di sistema viene eseguito usando la sintassi seguente, dove il verbo specifica il nome 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 di sistema per un verbo non comune:

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. Usare le impostazioni del Registro di sistema seguenti:

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 Verbo, non i due valori di 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 per l'applicazione, è possibile creare valori del Registro di sistema nella sottochiave identificatore univoco per l'applicazione nella 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.

 

I componenti del sistema operativo sono necessari per fornire un valore per DisplayName_Localized in modo specifico di 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 hardcoded.

Eseguire le operazioni seguenti per abilitare un evento audio:

  1. Implementare la descrizione come risorsa stringa localizzabile.
  2. Aggiungere un nuovo valore del Registro di sistema per il nome visualizzato, oltre al valore predefinito hardcoded. 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 formato @<path>,-resID, che fa riferimento a una risorsa stringa localizzabile associata al layout della tastiera.

Ecco un esempio di impostazione del Registro di sistema per il layout della tastiera spagnola:

HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\
0000040a
    Layout Text REG_SZ "Spanish"
    Layout Display Name REG_EXPAND_SZ "@%SystemRoot%\system32\input.dll,-5020"

Rappresentare stringhe di dialogo comuni dell'oggetto INSERT 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 OLE Insert Object ottiene un nome visualizzato dalla chiave del Registro di sistema HKCR\CLSID\{<GUID}, dove GUID> identifica l'identificatore di classe di un oggetto OLE inseriscibile. 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 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 stringa per gli snap-in di Microsoft Management Console

È 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 nome nel Registro di sistema per la visualizzazione. 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 specificare 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 altre informazioni sull'uso di questi valori, vedere Register Microsoft Management Console Snap-In Strings Not Read from the Registry in Locating Redirected Strings.For more information about using these values, see Register Microsoft Management Console Snap-In Strings Not Read from the Registry in Locating Redirected Strings.

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.

Impostazioni per il servizio Windows vengono creati 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.

Preparazione delle risorse

Individuazione di stringhe reindirizzate