about_Script_Internationalization
Breve descrizione
Descrive le funzionalità di internazionalizzazione dello script che semplificano la visualizzazione di messaggi e istruzioni agli utenti nella lingua dell'interfaccia utente.
Descrizione lunga
Le funzionalità di internazionalizzazione script di PowerShell consentono di servire meglio gli utenti in tutto il mondo visualizzando i messaggi della Guida e degli utenti nella lingua dell'utente.
Le funzionalità di internazionalizzazione dello script eseguono query sulle impostazioni cultura dell'interfaccia utente del sistema operativo durante l'esecuzione, importare le stringhe di testo tradotte appropriate e visualizzarle all'utente. La sezione Dati consente di archiviare stringhe di testo separate dal codice in modo che siano facilmente identificate ed estratte. Un nuovo cmdlet, ConvertFrom-StringData
, converte le stringhe di testo in tabelle hash simili al dizionario per facilitare la traduzione.
Per supportare il testo della Guida internazionale, PowerShell include le funzionalità seguenti:
Sezione Dati che separa le stringhe di testo dalle istruzioni del codice. Per altre informazioni sulla sezione Dati, vedere about_Data_Sections.
Nuove variabili
$PSCulture
automatiche e$PSUICulture
.$PSCulture
archivia il nome della lingua dell'interfaccia utente utilizzata nel sistema per gli elementi, ad esempio data, ora e valuta. La$PSUICulture
variabile archivia il nome della lingua dell'interfaccia utente utilizzata nel sistema per gli elementi dell'interfaccia utente, ad esempio menu e stringhe di testo.Cmdlet,
ConvertFrom-StringData
, che converte le stringhe di testo in tabelle hash simili al dizionario per facilitare la traduzione. Per altre informazioni, vedere ConvertFrom-StringData.Nuovo tipo di file, ,
.psd1
che archivia stringhe di testo tradotte. I.psd1
file vengono archiviati nelle sottodirectory specifiche del linguaggio della directory dello script.Cmdlet, che
Import-LocalizedData
importa stringhe di testo tradotte per un linguaggio specificato in uno script in fase di esecuzione. Questo cmdlet riconosce e importa le stringhe in qualsiasi linguaggio supportato da Windows. Per altre informazioni, vedere Import-LocalizedData.
Sezione Dati: Archiviazione di stringhe predefinite
Usare una sezione Dati nello script per archiviare le stringhe di testo nella lingua predefinita. Disporre le stringhe nelle coppie chiave/valore in una stringa qui. Ogni coppia chiave/valore deve trovarsi in una riga separata. Se si includono commenti, i commenti devono trovarsi in righe separate.
Il ConvertFrom-StringData
cmdlet converte le coppie chiave/valore nella stringa qui in una tabella hash simile al dizionario archiviata nel valore della variabile di sezione Dati.
Nell'esempio seguente, la sezione Dati dello World.ps1
script include il set di English-United States (en-US) di messaggi di richiesta per uno script. Il ConvertFrom-StringData
cmdlet converte le stringhe in una tabella hash e le archivia nella $msgtable
variabile.
$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 altre informazioni sulle stringhe qui, vedere about_Quoting_Rules.
File PSD1: archiviazione di stringhe tradotte
Salvare i messaggi di script per ogni lingua dell'interfaccia utente in file di testo separati con lo stesso nome dello script e l'estensione del .psd1
nome file. Archiviare i file nelle sottodirectory della directory script con nomi di impostazioni cultura nel formato seguente:
<language>-<region>
Esempi: de-DE, ar-SA e zh-Hans
Ad esempio, se lo World.ps1
script viene archiviato nella C:\Scripts
directory, si creerebbe una struttura di directory di file simile 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 World.psd1
file nella sottodirectory de-DE della directory script potrebbe includere l'istruzione seguente:
ConvertFrom-StringData -StringData @'
helloWorld = Hallo, Welt.
errorMsg1 = Das Feld Benutzername darf nicht leer sein.
promptMsg = Geben Sie Ihren Benutzernamen ein.
'@
Analogamente, il World.psd1
file nella sottodirectory ar-SA della directory script potrebbe includere l'istruzione seguente:
ConvertFrom-StringData -StringData @'
helloWorld = مرحبًا أيها العالَم
errorMsg1 = لا يمكنك ترك حقل اسم المستخدم فارغًا
promptMsg = يرجى إدخال اسم المستخدم الخاص بك
'@
Import-LocalizedData: Recupero dinamico delle stringhe tradotte
Per recuperare le stringhe nella lingua dell'interfaccia utente dell'utente corrente, usare il Import-LocalizedData
cmdlet.
Import-LocalizedData
trova il valore della $PSUICulture
variabile automatica e importa il contenuto dei <script-name>.psd1
file nella sottodirectory corrispondente al $PSUICulture
valore. Salva quindi il contenuto importato nella variabile specificata dal valore del parametro BindingVariable .
Import-LocalizedData -BindingVariable msgTable
Ad esempio, se il comando viene visualizzato nello C:\Scripts\World.ps1
script e il Import-LocalizedData
valore di $PSUICulture
è "ar-SA", Import-LocalizedData
trova il file seguente:
C:\Scripts\ar-SA\World.psd1
Importa quindi le stringhe di testo arabo dal file $msgTable
nella variabile, sostituendo eventuali stringhe predefinite che potrebbero essere definite nella sezione Dati dello World.ps1
script.
Di conseguenza, quando lo script usa la $msgTable
variabile per visualizzare i messaggi utente, i messaggi vengono visualizzati in arabo.
Ad esempio, lo script seguente visualizza il messaggio "Immettere il nome utente" in arabo:
if (!($username)) { $msgTable.promptMsg }
Se Import-LocalizedData
non è possibile trovare un .psd1
file corrispondente al valore di , il valore di $PSUIculture
$msgTable
non viene sostituito e la chiamata per $msgTable.promptMsg
visualizzare le stringhe en-US di fallback.
Esempio
In questo esempio viene illustrato come vengono usate le funzionalità di internazionalizzazione dello script in uno script per visualizzare un giorno della settimana agli utenti nel linguaggio impostato nel computer.
Di seguito è riportato un elenco completo del file di script Sample1.ps1.
Lo script inizia con una sezione Dati denominata Day ($Day) che contiene un ConvertFrom-StringData
comando. L'espressione inviata a ConvertFrom-StringData
è una stringa qui contenente i nomi dei giorni nelle impostazioni cultura dell'interfaccia utente predefinite, en-US, in coppie chiave/valore. Il ConvertFrom-StringData
cmdlet converte le coppie chiave/valore nella stringa qui in una tabella hash e quindi la salva nel valore della $Day
variabile.
Il Import-LocalizedData
comando importa il contenuto del .psd1
file nella directory che corrisponde al valore della $PSUICulture
variabile automatica e quindi lo salva nella $Day
variabile, sostituendo i valori di $Day
definiti nella sezione Dati.
I comandi rimanenti caricano le stringhe in una matrice e le visualizzano.
$Day = Data {
#culture="en-US"
ConvertFrom-StringData -StringData @'
messageDate = Today is
d0 = Sunday
d1 = Monday
d2 = Tuesday
d3 = Wednesday
d4 = Thursday
d5 = Friday
d6 = Saturday
'@
}
Import-LocalizedData -BindingVariable Day
#Build an array of weekdays.
$a = $Day.d0, $Day.d1, $Day.d2, $Day.d3, $Day.d4, $Day.d5, $Day.d6
# Get the day of the week as a number (Monday = 1).
# Index into $a to get the name of the day.
# Use string formatting to build a sentence.
"{0} {1}" -f $Day.messageDate, $a[(Get-Date -UFormat %u)] | Out-Host
I .psd1
file che supportano lo script vengono salvati nelle sottodirectory della directory script con nomi corrispondenti ai $PSUICulture
valori.
Di seguito è riportato un elenco completo di .\de-DE\sample1.psd1
:
# culture="de-DE"
ConvertFrom-StringData @'
messageDate = Heute ist
d0 = Sonntag
d1 = Montag
d2 = Dienstag
d3 = Mittwoch
d4 = Donnerstag
d5 = Freitag
d6 = Samstag
'@
Di conseguenza, quando si esegue Sample.ps1 in un sistema in cui il valore di $PSUICulture
è de-DE, l'output dello script è:
Heute ist Freitag