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-StringData
któ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 ,
.psd1
który przechowuje przetłumaczone ciągi tekstowe. Pliki.psd1
są przechowywane w podkatalogach specyficznych dla języka katalogu script.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 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 $PSUIculture
z 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