Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Krótki opis
Opisuje funkcje internacjonalizacji skryptów, które ułatwiają 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 internacjonalizacji skryptów sprawdzają kulturę interfejsu użytkownika systemu operacyjnego w trakcie 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ąca ciągi tekstowe od instrukcji kodu. Aby uzyskać więcej informacji na temat sekcji Dane, zobacz about_Data_Sections.
Nowe zmienne automatyczne,
$PSCulturei$PSUICulture.$PSCultureprzechowuje nazwę języka interfejsu użytkownika używanego w systemie dla elementów, takich jak data, godzina i waluta. Zmienna$PSUICultureprzechowuje 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-StringData, które konwertuje ciągi tekstowe na tabele skrótów przypominające słownik, aby ułatwić tłumaczenie. Aby uzyskać więcej informacji, zobacz ConvertFrom-StringData.Nowy typ pliku,
.psd1, który przechowuje przetłumaczone ciągi tekstowe. Pliki.psd1są przechowywane w podkatalogach specyficznych dla języka katalogu skryptów.Polecenie cmdlet,
Import-LocalizedData, któ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 dosłownym ciągu tekstowym. Każda para klucz/wartość musi znajdować się w osobnym wierszu. W przypadku uwzględnienia komentarzy komentarze muszą znajdować się w osobnych wierszach.
Polecenie cmdlet ConvertFrom-StringData 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 dla skryptu „English-United States” („en-US”). Polecenie cmdlet ConvertFrom-StringData 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 here-string, zapoznaj się z 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 tej samej nazwie co skrypt i rozszerzenie nazwy pliku .psd1. Zapisz pliki w podkatalogach katalogu script z nazwami kultur w następującym formacie:
<language>-<region>
Przykłady: de-DE, ar-SAi zh-Hans
Jeśli na przykład skrypt World.ps1 jest przechowywany w katalogu C:\Scripts, 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.
'@
Podobnie plik World.psd1 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 aktualnie zalogowanego użytkownika, użyj polecenia cmdlet Import-LocalizedData.
Import-LocalizedData znajduje wartość zmiennej automatycznej $PSUICulture i importuje zawartość plików <script-name>.psd1 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 polecenie Import-LocalizedData pojawi się w skryfcie C:\Scripts\World.ps1, 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 zmiennej $msgTable, 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źć pliku .psd1 zgodnego z wartością $PSUICulture, wartość $msgTable nie zostanie zamieniona, a wywołanie $msgTable.promptMsg wyświetla ciągi en-US rezerwowych.
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 polecenie ConvertFrom-StringData. Wyrażenie przesłane do ConvertFrom-StringData jest ciągiem tutaj zawierającym nazwy dni w domyślnej kulturze interfejsu użytkownika, en-US, w parach klucz/wartość. Polecenie cmdlet ConvertFrom-StringData konwertuje pary klucz/wartość w tym ciągu na tabelę skrótów, a następnie zapisuje je w wartości zmiennej $Day.
Polecenie Import-LocalizedData importuje zawartość pliku .psd1 w katalogu zgodnym z wartością zmiennej automatycznej $PSUICulture, a następnie zapisuje ją w zmiennej $Day, zastępując wartości $Day zdefiniowanych 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 skryptu z nazwami zgodnymi z wartościami $PSUICulture.
Poniżej znajduje się pełna 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 Sample.ps1 w systemie, w którym wartość $PSUICulture jest de-DE, dane wyjściowe skryptu to:
Heute ist Freitag