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       




Argomenti della Guida