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