about_Script_Internationalization

Krótki opis

Opisuje funkcje międzynarodowych skryptów, które ułatwiają skryptom wyświetlanie komunikatów i instrukcji dla użytkowników w języku interfejsu użytkownika.

Długi opis

Funkcje międzynarodowych skryptów programu PowerShell umożliwiają lepszą obsługę użytkowników na całym świecie dzięki wyświetlaniu komunikatów pomocy i użytkowników w języku użytkownika.

Funkcje międzynarodowych skryptów wysyłają zapytania do kultury interfejsu użytkownika systemu operacyjnego podczas wykonywania, importują odpowiednie przetłumaczone ciągi tekstowe i wyświetlają je użytkownikowi. Sekcja Dane umożliwia przechowywanie ciągów tekstowych oddzielnych od kodu, dzięki czemu można je łatwo zidentyfikować i wyodrębnić. Nowe polecenie cmdlet ConvertFrom-StringData, konwertuje ciągi tekstowe na tabele skrótów przypominające słownik, aby ułatwić tłumaczenie.

Aby obsługiwać międzynarodowy tekst pomocy, program PowerShell zawiera następujące funkcje:

  • Sekcja Dane oddzielającą ciągi tekstowe od instrukcji kodu. Aby uzyskać więcej informacji na temat sekcji Dane, zobacz about_Data_Sections.

  • Nowe zmienne $PSCulture automatyczne i $PSUICulture. $PSCulture przechowuje nazwę języka interfejsu użytkownika używanego w systemie dla elementów, takich jak data, godzina i waluta. Zmienna $PSUICulture przechowuje nazwę języka interfejsu użytkownika używanego w systemie dla elementów interfejsu użytkownika, takich jak menu i ciągi tekstowe.

  • Polecenie cmdlet , ConvertFrom-StringDataktóre konwertuje ciągi tekstowe na tabele skrótów przypominające słownik w celu ułatwienia tłumaczenia. Aby uzyskać więcej informacji, zobacz ConvertFrom-StringData.

  • Nowy typ pliku , .psd1który przechowuje przetłumaczone ciągi tekstowe. Pliki .psd1 są przechowywane w podkatalogach specyficznych dla języka katalogu script.

  • Polecenie cmdlet , Import-LocalizedDataktóre importuje przetłumaczone ciągi tekstowe dla określonego języka do skryptu w czasie wykonywania. To polecenie cmdlet rozpoznaje i importuje ciągi w dowolnym języku obsługiwanym przez system Windows. Aby uzyskać więcej informacji, zobacz Import-LocalizedData.

Sekcja danych: przechowywanie ciągów domyślnych

Użyj sekcji Dane w skryscie, aby przechowywać ciągi tekstowe w języku domyślnym. Rozmieść ciągi w parach klucz/wartość w ciągu tutaj. Każda para klucz/wartość musi znajdować się w osobnym wierszu. W przypadku uwzględnienia komentarzy komentarze muszą znajdować się w osobnych wierszach.

Polecenie ConvertFrom-StringData cmdlet konwertuje pary klucz/wartość w tym ciągu na tabelę skrótów przypominającą słownik, która jest przechowywana w wartości zmiennej sekcji Dane.

W poniższym przykładzie sekcja Dane skryptu World.ps1 zawiera zestaw komunikatów monitów dla skryptu w języku angielskim Stany Zjednoczone (en-US). Polecenie ConvertFrom-StringData cmdlet konwertuje ciągi na tabelę skrótów i przechowuje je w zmiennej $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.
'@
}

Aby uzyskać więcej informacji na temat ciągów tutaj, zobacz about_Quoting_Rules.

Pliki PSD1: przechowywanie przetłumaczonych ciągów

Zapisz komunikaty skryptu dla każdego języka interfejsu użytkownika w osobnych plikach tekstowych o takiej samej nazwie jak skrypt i .psd1 rozszerzenie nazwy pliku. Zapisz pliki w podkatalogach katalogu script z nazwami kultur w następującym formacie:

<language>-<region>

Przykłady: de-DE, ar-SA i zh-Hans

Jeśli na przykład World.ps1 skrypt jest przechowywany w C:\Scripts katalogu, należy utworzyć strukturę katalogów plików podobną do następującej:

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

Plik World.psd1 w podkatalogu de-DE katalogu script może zawierać następującą instrukcję:

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

World.psd1 Podobnie plik w podkatalogu ar-SA katalogu script może zawierać następującą instrukcję:

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

Import-LocalizedData: dynamiczne pobieranie przetłumaczonych ciągów

Aby pobrać ciągi w języku interfejsu użytkownika bieżącego użytkownika, użyj Import-LocalizedData polecenia cmdlet .

Import-LocalizedData znajduje wartość zmiennej automatycznej $PSUICulture i importuje zawartość <script-name>.psd1 plików w podkatalogu zgodnym z wartością $PSUICulture . Następnie zapisuje zaimportowaną zawartość w zmiennej określonej przez wartość parametru BindingVariable .

Import-LocalizedData -BindingVariable msgTable

Jeśli na przykład Import-LocalizedData polecenie zostanie wyświetlone w C:\Scripts\World.ps1 skry skrycie, a wartość $PSUICulture to "ar-SA", Import-LocalizedData znajdzie następujący plik:

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

Następnie importuje arabskie ciągi tekstowe z pliku do $msgTable zmiennej, zastępując wszystkie ciągi domyślne, które mogą być zdefiniowane w sekcji Dane skryptu World.ps1 .

W związku z tym, gdy skrypt używa zmiennej $msgTable do wyświetlania komunikatów użytkownika, komunikaty są wyświetlane w języku arabskim.

Na przykład poniższy skrypt wyświetla komunikat "Wprowadź nazwę użytkownika" w języku arabskim:

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

Jeśli Import-LocalizedData nie można odnaleźć .psd1 pliku zgodnego $PSUIculturez wartością , wartość $msgTable elementu nie zostanie zamieniona, a wywołanie w celu $msgTable.promptMsg wyświetlania rezerwowych ciągów en-US.

Przykłady

W tym przykładzie pokazano, w jaki sposób funkcje międzynarodowych skryptów są używane w skrycie do wyświetlania dnia tygodnia użytkownikom w języku ustawionym na komputerze.

Poniżej znajduje się pełna lista pliku skryptu Sample1.ps1.

Skrypt rozpoczyna się od sekcji Dane o nazwie Day ($Day), która zawiera ConvertFrom-StringData polecenie. Wyrażenie przesłane do ConvertFrom-StringData elementu to ciąg here-string, który zawiera nazwy dni w domyślnej kulturze interfejsu użytkownika, en-US, w parach klucz/wartość. Polecenie ConvertFrom-StringData cmdlet konwertuje pary klucz/wartość w tym ciągu na tabelę skrótów, a następnie zapisuje ją w wartości zmiennej $Day .

Polecenie Import-LocalizedData importuje zawartość .psd1 pliku w katalogu, który odpowiada wartości $PSUICulture zmiennej automatycznej, a następnie zapisuje ją w $Day zmiennej, zastępując wartości $Day zdefiniowane w sekcji Dane.

Pozostałe polecenia ładują ciągi do tablicy i wyświetlają je.

$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

Pliki .psd1 , które obsługują skrypt, są zapisywane w podkatalogach katalogu script z nazwami zgodnymi z wartościami $PSUICulture .

Poniżej znajduje się kompletna lista:.\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
'@

W związku z tym po uruchomieniu pliku Sample.ps1 w systemie, w którym wartość $PSUICulture jest de-DE, dane wyjściowe skryptu to:

Heute ist Freitag

Zobacz też