about_Script_Internationalization

Aggiornamento: maggio 2014

Si applica a: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

ARGOMENTO

about_Script_Internationalization

DESCRIZIONE BREVE

Questo articolo descrive le funzionalità di internazionalizzazione di script di Windows PowerShell® 2.0 che consentono agli script di visualizzare messaggi e istruzioni agli utenti nella relativa lingua dell'interfaccia utente.

DESCRIZIONE LUNGA

Le funzionalità di internazionalizzazione degli script di Windows PowerShell consentono di soddisfare al meglio gli utenti in tutto il mondo visualizzando i messaggi della Guida e per gli utenti relativi a script e funzioni nella lingua dell'interfaccia utente dell'utente.

Le funzionalità di internazionalizzazione degli script chiedono le 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 memorizzare le stringhe di testo separate dal codice per poterle facilmente identificare ed estrarre. Un nuovo cmdlet, ConvertFrom-StringData, converte le stringhe di testo in tabelle hash simili ai dizionari per facilitare la traduzione.

Le funzionalità di Windows PowerShell 2.0 usate 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 modifica.

Per il supporto del testo della Guida internazionale, Windows PowerShell 2.0 include le funzionalità seguenti:

  • -- Una sezione Dati che separa le stringhe di testo da istruzioni del codice. Per altre informazioni sulla sezione Dati, vedere about_Data_Sections.

  • -- Nuove variabili automatiche, $PSCulture e $PSUICulture. $PSCulture archivia il nome della lingua dell'interfaccia utente usata nel sistema per elementi quali la data, l'ora e la valuta. La variabile $PSUICulture archivia il nome della lingua dell'interfaccia utente usata nel sistema per gli elementi dell'interfaccia utente quali menu e stringhe di testo.

  • -- Un nuovo cmdlet, ConvertFrom-StringData, converte le stringhe di testo in tabelle hash simili ai dizionari per facilitare la traduzione. Per altre informazioni, vedere ConvertFrom-StringData.

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

  • -- Un cmdlet, Import-LocalizedData, che 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 altre informazioni vedere Import-LocalizedData.

LA SEZIONE DI DATI: MEMORIZZAZIONE DI STRINGHE PREDEFINITE

Usare una sezione Dati nello script per archiviare le stringhe di testo nella lingua predefinita. Disporre le stringhe in coppie chiave/valore in una stringa here. Ogni coppia chiave/valore deve trovarsi su una riga separata. Se si includono commenti, i commenti devono trovarsi su righe separate.

Il cmdlet ConvertFrom-StringData converte coppie chiave/valore nella stringa here in una tabella hash simile a un dizionario che viene archiviata nel valore della variabile della sezione Dati.

Nell'esempio seguente, la sezione Dati dello script World.ps1 include il set Stati Uniti (en-US) dei messaggi del prompt dei comando di 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 altre informazioni sulle stringhe here, vedere about_Quoting_Rules.

FILE .PSD1: ARCHIVIAZIONE DELLE STRINGHE TRADOTTE

Salvare i messaggi degli script per ogni lingua dell'interfaccia utente in file di testo separati con lo stesso nome dello script e l'estensione del nome file .psd1. Archiviare i file nelle sottodirectory della directory dello script con i nomi delle impostazioni cultura nel formato seguente:

        <language>–<region>

Esempi: de-DE, ar-SA e zh-Hans

Ad esempio, se lo script World.ps1 viene archiviato nella directory C:\Scripts, verrà creata una struttura di directory 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 file World.psd1 nella sottodirectory de-DE della directory dello script potrebbe includere l'istruzione seguente:

        ConvertFrom-StringData @'
            helloWorld = Hello, World (in German).
            errorMsg1 = You cannot leave the user name field blank (in German).
            promptMsg = Please enter your user name (in German).
        '@

Allo stesso modo, il file World.psd1 nella sottodirectory ar-SA della directory dello script potrebbe includere l'istruzione seguente:

        ConvertFrom-StringData @'
            helloWorld = Hello, World (in Arabic).
            errorMsg1 = You cannot leave the user name field blank (in Arabic).
            promptMsg = Please enter your user name (in Arabic).
        '@

IMPORT-LOCALIZEDDATA: RECUPERO DINAMICO DELLE STRINGHE TRADOTTE

Per recuperare le stringhe nella lingua dell'interfaccia utente dell'utente corrente, usare il corpo della sezione Import-LocalizedData cmdlet.Insert qui.

Import-LocalizedData trova il valore della variabile automatica $PSUICulture e importa il contenuto dei file <nome-script>.psd1 nella 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 viene visualizzato il comando Import-LocalizedData 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 in arabo dal file nella variabile $msgTable, sostituendo eventuali stringhe predefinite che potrebbero essere definite nella sezione Dati dello script World.ps1.

Di conseguenza, quando lo script usa la variabile $msgTable per visualizzare i messaggi dell'utente, i messaggi vengono visualizzati in arabo.

Ad esempio, lo script seguente consente di visualizzare il messaggio "Immettere il nome utente" in arabo:

        if (!($username)) { $msgTable.promptMsg }

Se Import-LocalizedData non è in grado di trovare 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 le funzionalità di internazionalizzazione di script vengono usate in uno script per visualizzare agli utenti un giorno della settimana nella lingua impostata nel computer.

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

Lo script inizia con una sezione Dati denominata Giorno ($Day) che contiene un comando ConvertFrom-StringData. L'espressione inviata a ConvertFrom-StringData è una stringa here che contiene i nomi dei giorni nella lingua predefinita dell'interfaccia utente, en-US, in coppie chiave/valore. Il cmdlet ConvertFrom-StringData converte le coppie chiave/valore nella stringa here in una tabella hash e quindi le salva nel valore della variabile $Day.

Il comando Import-LocalizedData importa il contenuto del file. psd1 nella directory che corrisponde al valore della variabile automatica $PSUICulture e quindi lo salva nella variabile $Day, 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 @'
        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 file .psd1 che supportano lo script vengono salvati in sottodirectory della directory di script con nomi corrispondenti ai valori di $PSUICulture.

Di seguito è riportato un elenco completo di .\de-DE\sample1.psd1:

        # culture=\"de-DE\"
        ConvertFrom-StringData @'
        messageDate = Today is 
            d0 = Sunday (in German)
            d1 = Monday (in German)
            d2 = Tuesday (in German)
            d3 = Wednesday (in German)
            d4 = Thursday (in German)
            d5 = Friday (in German)
            d6 = Saturday (in German)
        '@

Di conseguenza, quando si esegue Sample.ps1 in un sistema in cui il valore di $PSUICulture è de-DE, l'output dello script è:

        Today is Friday (in German)

VEDERE ANCHE

about_Data_Sections

about_Automatic_Variables

about_Hash_Tables

about_Quoting_Rules

ConvertFrom-StringData

Import-LocalizedData