Dela via


about_Script_Internationalisering

Kort beskrivning

Beskriver de funktioner för skriptinternationalisering som gör det enkelt för skript att visa meddelanden och instruktioner för användare på det språk som används i användargränssnittet.

Lång beskrivning

Med internationaliseringsfunktionerna för PowerShell-skript kan du bättre hantera användare över hela världen genom att visa hjälp- och användarmeddelanden på användarens språk.

Internationella funktioner för skript frågar operativsystemets språkinställningar under körning, importerar lämpliga översatta textsträngar och visar dem för användaren. I avsnittet Data kan du lagra textsträngar separat från kod så att de enkelt identifieras och extraheras. En ny cmdlet, ConvertFrom-StringData, konverterar textsträngar till ordlisteliknande hash-tabeller för att underlätta översättningen.

För att stödja internationell hjälptext innehåller PowerShell följande funktioner:

  • Ett dataavsnitt som skiljer textsträngar från kodinstruktioner. Mer information om avsnittet Data finns i about_Data_Sections.

  • Nya automatiska variabler, $PSCulture och $PSUICulture. $PSCulture lagrar namnet på det användargränssnittsspråk som används i systemet för element som datum, tid och valuta. Variabeln $PSUICulture lagrar namnet på det användargränssnittsspråk som används i systemet för användargränssnittselement som menyer och textsträngar.

  • En cmdlet, ConvertFrom-StringData, som konverterar textsträngar till ordlisteliknande hash-tabeller för att underlätta översättningen. Mer information finns i ConvertFrom-StringData.

  • En ny filtyp, .psd1, som lagrar översatta textsträngar. De .psd1 filerna lagras i språkspecifika underkataloger i skriptkatalogen.

  • En cmdlet, Import-LocalizedData, som importerar översatta textsträngar för ett angivet språk till ett skript under körning. Den här cmdleten identifierar och importerar strängar på alla Windows-språk som stöds. Mer information finns i Import-LocalizedData.

Avsnittet Data: Lagring av standardsträngar

Använd ett dataavsnitt i skriptet för att lagra textsträngarna på standardspråket. Ordna strängarna i nyckel/värde-par i en här-sträng. Varje nyckel/värde-par måste finnas på en separat rad. Om du inkluderar kommentarer måste kommentarerna finnas på separata rader.

Cmdleten ConvertFrom-StringData konverterar nyckel/värde-paren i here-stringen till en ordlisteliknande hashtabell som lagras i värdet för variabeln Data-sektionen.

I följande exempel innehåller avsnittet Data i World.ps1-skriptet uppsättningen English-United states (en-US) med promptmeddelanden för ett skript. Cmdleten ConvertFrom-StringData konverterar strängarna till en hash-tabell och lagrar dem i variabeln $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.
'@
}

Mer information om här-strängar finns i about_Quoting_Rules.

PSD1-filer: Lagra översatta strängar

Spara skriptmeddelandena för varje gränssnittsspråk i separata textfiler med samma namn som skriptet och filnamnstillägget .psd1. Lagra filerna i underkataloger i skriptkatalogen med namn på kulturer i följande format:

<language>-<region>

Exempel: de-DE, ar-SAoch zh-Hans

Om skriptet World.ps1 till exempel lagras i katalogen C:\Scripts skapar du en filkatalogstruktur som liknar följande:

C:\Scripts
C:\Scripts\World.ps1
C:\Scripts\de-DE\World.psd1
C:\Scripts\ar-SA\World.psd1
C:\Scripts\zh-CN\World.psd1
...

Den World.psd1 filen i underkatalogen de-DE i skriptkatalogen kan innehålla följande instruktion:

ConvertFrom-StringData -StringData @'
helloWorld = Hallo, Welt.
errorMsg1 = Das Feld Benutzername darf nicht leer sein.
promptMsg = Geben Sie Ihren Benutzernamen ein.
'@

På samma sätt kan den World.psd1 filen i underkatalogen ar-SA i skriptkatalogen innehålla följande instruktion:

ConvertFrom-StringData -StringData @'
helloWorld = مرحبًا أيها العالَم
errorMsg1 = لا يمكنك ترك حقل اسم المستخدم فارغًا
promptMsg = يرجى إدخال اسم المستخدم الخاص بك
'@

Import-LocalizedData: Dynamisk hämtning av översatta strängar

Om du vill hämta strängarna i användargränssnittsspråket för den aktuella användaren använder du cmdleten Import-LocalizedData.

Import-LocalizedData hittar värdet för den $PSUICulture automatiska variabeln och importerar innehållet i de <script-name>.psd1 filerna i underkatalogen som matchar $PSUICulture-värdet. Sedan sparas det importerade innehållet i variabeln som anges av värdet för parametern BindingVariable.

Import-LocalizedData -BindingVariable msgTable

Om kommandot Import-LocalizedData till exempel visas i skriptet C:\Scripts\World.ps1 och värdet för $PSUICulture är "ar-SA", hittar Import-LocalizedData följande fil:

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

Sedan importeras de arabiska textsträngarna från filen till variabeln $msgTable och ersätter eventuella standardsträngar som kan definieras i avsnittet Data i skriptet World.ps1.

När skriptet använder variabeln $msgTable för att visa användarmeddelanden visas därför meddelandena på arabiska.

Följande skript visar till exempel meddelandet "Ange ditt användarnamn" på arabiska:

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

Om Import-LocalizedData inte kan hitta en .psd1 fil som matchar värdet för $PSUICultureersätts inte värdet för $msgTable och anropet till $msgTable.promptMsg visar reservsträngarna en-US.

Examples

Det här exemplet visar hur funktionerna för skript internationalisering används i ett skript för att visa en dag i veckan för användare på det språk som anges på datorn.

Följande är en fullständig lista över Sample1.ps1-skriptfilen.

Skriptet börjar med ett dataavsnitt med namnet Day ($Day) som innehåller ett ConvertFrom-StringData kommando. Uttrycket som skickas till ConvertFrom-StringData är en här-sträng som innehåller dagnamnen i standardgränssnittskulturen en-USi nyckel/värde-par. Cmdleten ConvertFrom-StringData konverterar nyckel/värde-paren i här-strängen till en hash-tabell och sparar den sedan i värdet för variabeln $Day.

Kommandot Import-LocalizedData importerar innehållet i .psd1-filen i katalogen som matchar värdet för den $PSUICulture automatiska variabeln och sparar den sedan i variabeln $Day och ersätter värdena för $Day som definieras i avsnittet Data.

De återstående kommandona läser in strängarna i en matris och visar dem.

$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

De .psd1 filer som stöder skriptet sparas i underkataloger i skriptkatalogen med namn som matchar $PSUICulture värden.

Följande är en fullständig lista över .\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
'@

När du kör Sample.ps1 på ett system där värdet för $PSUICulture är de-DEär resultatet av skriptet därför:

Heute ist Freitag

Se även