ARGOMENTO about_Script_Internationalization DESCRIZIONE BREVE Descrive le funzionalità di internazionalizzazione degli script di Windows PowerShell 2.0 che consentono agevolmente agli script di visualizzare messaggi per gli utenti nella lingua dell'interfaccia utente. DESCRIZIONE DETTAGLIATA Le funzionalità di internazionalizzazione degli script di Windows PowerShell consentono di offrire un servizio migliore agli utenti di tutto il mondo mediante la visualizzazione della Guida e dei messaggi utente per script e funzioni nella lingua dell'interfacci a utente. Le funzionalità di internazionalizzazione eseguono una query sulla cultura dell'interfaccia utente del sistema operativo durante l'esecuzione, importano le stringhe di testo tradotte appropriate e le mostrano all'utente. Nella sezione Data è possibile archiviare stringhe di testo separate dal codice per poterle identificare ed estrarre con facilità. Un nuovo cmdlet, ConvertFrom-StringData, converte le stringhe di testo in tabelle hash di tipo dizionario per facilitare la traduzione. Le funzionalità di Windows PowerShell 2.0 utilizzate nell'internazionalizzazione degli script non sono supportate da Windows PowerShell 1.0. Gli script che includono queste funzionalità non verranno eseguiti in Windows PowerShell 1.0 senza modifiche. Per supportare il testo della Guida internazionale, Windows PowerShell 2.0 include le funzionalità seguenti: -- Una sezione Data che separa le stringhe di testo dalle istruzioni di codice. Per ulteriori informazioni sulla sezione Data, vedere about_Data_Sections. -- Nuove variabili automatiche, $PSCulture e $PSUICulture. $PSCulture archivia il nome della lingua dell'interfaccia utente nel sistema per elementi quali data, ora e valuta. La variabile $PSUICulture archivia il nome della lingua dell'interfaccia utente nel sistema per elementi dell'interfaccia utente quali menu e stringhe di testo. -- Un cmdlet, ConvertFrom-StringData, converte le stringhe di testo in tabelle hash di tipo dizionario per facilitare la traduzione. Per ulteriori informazioni, vedere ConvertFrom-StringData. -- Un nuovo tipo di file, .psd1, archivia le stringhe di testo tradotte. I file .psd1 vengono archiviati in sottodirectory specifiche della lingua della directory di script. -- Un cmdlet, Import-LocalizedData, importa le stringhe di testo tradotte per una lingua specifica in uno script in fase di esecuzione. Questo cmdlet riconosce e importa le stringhe in qualsiasi lingua supportata da Windows. Per ulteriori informazioni, vedere Import-LocalizedData. SEZIONE DATA: archiviazione delle stringhe predefinite Utilizzare una sezione Data nello script per archiviare le stringhe di testo nella lingua predefinita. Disporre le stringhe nelle coppie chiave/valore in una stringa here. Ogni coppia chiave/valore deve essere su una riga separata. Se si includono commenti, i commenti devono essere su righe separate. Il cmdlet ConvertFrom-StringData converte le coppie chiave/valore della stringa here in una tabella hash di tipo dizionario archiviata nel valore della variabile della sezione Data. Nell'esempio seguente, la sezione Data dello script World.ps1 include l'insieme di messaggi prompt English-United States (en-US) per uno script. Il cmdlet ConvertFrom-StringData converte le stringhe in una tabella hash e le archivia nella variabile $msgtable. $msgTable = Data { # culture="en-US" ConvertFrom-StringData @' helloWorld = Hello, World. errorMsg1 = You cannot leave the user name field blank. promptMsg = Please enter your user name. '@ } Per ulteriori informazioni sulle stringhe here, vedere about_Quoting_Rules. FILE PSD1: archiviazione delle stringhe tradotte Salvare i messaggi dello script per ogni lingua dell'interfaccia utente nei file di testo separati con lo stesso nome dello script e l'estensione .psd1. Archiviare i file in sottodirectory della directory di script con nomi di impostazioni cultura nel formato seguente: <lingua>-<paese> Esempi: de-DE, ar-SA e zh-Hans Ad esempio, se lo script World.ps1 viene archiviato nella directory C:\Scripts, si viene creata una struttura di directory analoga alla seguente: C:\Scripts C:\Scripts\World.ps1 C:\Scripts\de-DE\World.psd1 C:\Scripts\ar-SA\World.psd1 C:\Scripts\zh-CN\World.psd1 ... Il file World.psd1 nella sottodirectory de-DE della directory di script potrebbe includere l'istruzione seguente: ConvertFrom-StringData @' helloWorld = Hello, World (in tedesco). errorMsg1 = You cannot leave the user name field blank (in tedesco). promptMsg = Please enter your user name (in tedesco). '@ Analogamente, il file World.psd1 nella sottodirectory ar-SA della directory di script potrebbe includere l'istruzione seguente: ConvertFrom-StringData @' helloWorld = Hello, World (in arabo). errorMsg1 = You cannot leave the user name field blank (in arabo). promptMsg = Please enter your user name (in arabo). '@ IMPORT-LOCALIZEDDATA: Recupero dinamico delle stringhe tradotte Per recuperare le stringhe nella lingua dell'interfaccia utente dell'utente corrente, utilizzare il cmdlet Import-LocalizedData. Import-LocalizedData trova il valore della variabile automatica $PSUICulture e importa il contenuto dei file <nome-script>.psd1 della sottodirectory che corrisponde al valore $PSUICulture. Quindi, salva il contenuto importato nella variabile specificata dal valore del parametro BindingVariable. import-localizeddata -bindingVariable msgTable Ad esempio, se il comando Import-LocalizedData è presente nello script C:\Scripts\World.ps1 e il valore di $PSUICulture è "ar-SA", Import-LocalizedData trova il file seguente: C:\Scripts\ar-SA\World.psd1 Quindi, importa le stringhe di testo arabe dal file alla variabile $msgTable, sostituendo qualsiasi stringa predefinita eventualmente definita nella sezione Data dello script World.ps1. Di conseguenza, quando lo script utilizza la variabile di $msgTable per visualizzare i messaggi utente, i messaggi vengono visualizzati in arabo. Lo script seguente, ad esempio, mostra il messaggio "Please enter your user name" in arabo: if (!($username)) { $msgTable.promptMsg } Se Import-LocalizedData non trova un file .psd1 corrispondente al valore di $PSUIculture, il valore di $msgTable non viene sostituito e la chiamata a $msgTable.promptMsg visualizza le stringhe en-US di fallback. ESEMPIO In questo esempio viene illustrato come vengono utilizzate le funzionalità di internazionalizzazione in uno script per visualizzare un giorno della settimana nella lingua impostata nel computer. Di seguito è riportato un elenco completo del file di script Sample1.ps1. Lo script inizia con una sezione Data denominata Day ($Day) che contiene un comando ConvertFrom-StringData. L'espressione inviata a ConvertFrom-StringData è una stringa here che contiene i giorni dei nomi nella cultura dell'interfaccia utente predefinita, en-US, in coppie chiave/valore. Il cmdlet ConvertFrom-StringData converte le coppie chiave/valore della stringa here in una tabella hash e la salva nel valore della variabile $Day. Il comando Import-LocalizedData importa il contenuto del file .psd1 della directory che corrisponde al valore della variabile automatica $PSUICulture, quindi lo salva nella variabile $Day, sostituendo i valori di $Day definiti nella sezione Data. I comandi restanti caricano le stringhe in una matrice e li visualizzano. $Day = DATA { # culture="en-US" ConvertFrom-StringData @' messageDate = Today is d1 = Monday d2 = Tuesday d3 = Wednesday d4 = Thursday d5 = Friday d6 = Saturday d7 = Sunday '@ } Import-LocalizedData -BindingVariable Day # Compila una matrice di giorni della settimana. $a = $Day.d1, $Day.d2, $Day.d3, $Day.d4, $Day.d5, $Day.d6, $Day.d7 # Ottenere il giorno della settimana come numero (lunedì = 1). # Indicizzare in $a per ottenere il nome del giorno. # Utilizzare la formattazione stringa per compilare una frase. "{0} {1}" -f $Day.messageDate, $a[(get-date -uformat %u)] | Out-Host I file .psd1 che supportano lo script vengono salvati in sottodirectory della directory di script con nomi che corrispondono ai valori di $PSUICulture. Di seguito è riportato un elenco completo di .\de-DE\sample1.psd1: # culture="en-US" ConvertFrom-StringData @' messageDate = Today is d1 = Monday (in tedesco) d2 = Tuesday (in tedesco) d3 = Wednesday (in tedesco) d4 = Thursday (in tedesco) d5 = Friday (in tedesco) d6 = Saturday (in tedesco) d7 = Sunday (in tedesco) '@ Come risultato, quando si esegue Sample.ps1 in un sistema il cui il valore di $PSUICulture è de-DE, l'output dello script sarà: Today is Friday (in tedesco) VEDERE ANCHE about_Data_Sections about_Automatic_Variables about_Hash_Tables about_Quoting_Rules ConvertFrom-StringData Import-LocalizedData