Condividi tramite


about_Script_Internationalization

Descrizione breve

Descrive le funzionalità di internazionalizzazione dello script che semplificano la visualizzazione di messaggi e istruzioni agli utenti nel linguaggio dell'interfaccia utente.

Descrizione lunga

Le funzionalità di internazionalizzazione degli script di PowerShell consentono di offrire un servizio migliore agli 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, importano le stringhe di testo tradotte appropriate e le visualizzano all'utente. La sezione Dati consente di archiviare stringhe di testo separate dal codice in modo che vengano facilmente identificate ed estratte. Un nuovo cmdlet, ConvertFrom-StringData, converte le stringhe di testo in tabelle hash simili a 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 di 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 usata nel sistema per elementi quali data, ora e valuta. La $PSUICulture variabile archivia il nome della lingua dell'interfaccia utente usata nel sistema per elementi dell'interfaccia utente, ad esempio menu e stringhe di testo.

  • Cmdlet , ConvertFrom-StringData, che converte le stringhe di testo in tabelle hash simili a dizionario per facilitare la traduzione. Per altre informazioni, vedere ConvertFrom-StringData.

  • Nuovo tipo di file, .psd1, che archivia le stringhe di testo tradotte. I .psd1 file vengono archiviati nelle sottodirectory specifiche della lingua della directory script.

  • Cmdlet , Import-LocalizedData, che importa stringhe di testo tradotte per una lingua specificata 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 Data nello script per archiviare le stringhe di testo nella lingua predefinita. Disporre le stringhe in coppie chiave/valore in una stringa here.Arrange the strings in key/value pair in a here-string. 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 here in una tabella hash simile al dizionario archiviata nel valore della variabile della sezione Dati.

Nell'esempio seguente la sezione Dati dello World.ps1 script include il set inglese-Stati Uniti (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 i nomi delle 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 può 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 di 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 Import-LocalizedData comando viene visualizzato nello C:\Scripts\World.ps1 script e il valore di $PSUICulture è "ar-SA", Import-LocalizedData trova il file seguente:

C:\Scripts\ar-SA\World.psd1

Importa quindi le stringhe di testo in arabo dal file nella $msgTable variabile, sostituendo tutte le 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 riesce a trovare un .psd1 file che corrisponde al valore di $PSUIculture, il valore di $msgTable non viene sostituito e la chiamata a $msgTable.promptMsg visualizza le stringhe en-US di fallback.

Esempi

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 nella lingua impostata nel computer.

Di seguito è riportato un elenco completo del file script Sample1.ps1.

Lo script inizia con una sezione Data denominata Day ($Day) che contiene un ConvertFrom-StringData comando. L'espressione inviata a ConvertFrom-StringData è una stringa di tipo here che contiene i nomi dei giorni nelle impostazioni cultura predefinite dell'interfaccia utente, en-US, in coppie chiave/valore. Il ConvertFrom-StringData cmdlet converte le coppie chiave/valore nella stringa here 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

Vedi anche