Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Krátký popis
Popisuje funkce internacionalizace skriptů, které usnadňují zobrazování zpráv a pokynů uživatelům v jazyce uživatelského rozhraní.
Dlouhý popis
Funkce internationalizace skriptů PowerShellu umožňují lépe obsluhovat uživatele po celém světě zobrazením nápovědy a zpráv uživatelů v jazyce uživatele.
Funkce internacionalizace skriptů dotazují jazykovou verzi uživatelského rozhraní operačního systému během provádění, importují příslušné přeložené textové řetězce a zobrazí je uživateli. Sekce Data umožňuje ukládání textových řetězců oddělených od kódu, aby se snadno identifikovaly a extrahovaly. Nová rutina, ConvertFrom-StringData, převede textové řetězce na tabulky hash podobné slovníku pro usnadnění překladu.
PowerShell obsahuje následující funkce, které podporují mezinárodní text nápovědy:
Část Data, která odděluje textové řetězce od pokynů kódu. Další informace o části Data naleznete v tématu about_Data_Sections.
Nové automatické proměnné,
$PSCulturea$PSUICulture.$PSCultureuloží název jazyka uživatelského rozhraní používaného v systému pro prvky, jako je datum, čas a měna. Proměnná$PSUICultureukládá název jazyka uživatelského rozhraní používaného v systému pro prvky uživatelského rozhraní, jako jsou nabídky a textové řetězce.Cmdlet,
ConvertFrom-StringData, který převádí textové řetězce na tabulky hash podobné slovníku ke snadnějšímu překladu. Pro více informací viz ConvertFrom-StringData.Nový typ souboru,
.psd1, který ukládá přeložené textové řetězce. Soubory.psd1se ukládají v podadresářích skriptů specifických pro jazyk.Cmdlet
Import-LocalizedData, který importuje přeložené textové řetězce pro zadaný jazyk do skriptu během provádění. Tato rutina rozpoznává a importuje řetězce v libovolném jazyce podporovaném systémem Windows. Další informace naleznete v tématu Import-LocalizedData.
Oddíl Dat: Ukládání výchozích řetězců
K uložení textových řetězců ve výchozím jazyce použijte oddíl Data ve skriptu. Uspořádejte řetězce do dvojic klíč/hodnota pomocí here-stringu. Každý pár klíč/hodnota musí být na samostatném řádku. Pokud zahrnete komentáře, musí být komentáře na samostatných řádcích.
Rutina ConvertFrom-StringData převede páry klíč/hodnota v tomto here-stringu na hashovací tabulku typu slovníku, která je uložena v proměnné části Data.
V následujícím příkladu část Data skriptu World.ps1 obsahuje sadu zpráv výzvy pro skript English-United States (en-US). Cmdlet ConvertFrom-StringData převede řetězce na hash tabulku a uloží je do proměnné $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.
'@
}
Další informace o zde-řetězce naleznete v tématu about_Quoting_Rules.
Soubory PSD1: Ukládání přeložených řetězců
Zprávy skriptu pro každý jazyk uživatelského rozhraní uložte do samostatných textových souborů se stejným názvem jako skript a příponu názvu souboru .psd1. Soubory uložte do podadresářů adresáře skriptu s názvy lokalizací v následujícím formátu:
<language>-<region>
Příklady: de-DE, ar-SAa zh-Hans
Pokud je například skript World.ps1 uložen v adresáři C:\Scripts, vytvořili byste strukturu adresářů souborů, která se podobá následující:
C:\Scripts
C:\Scripts\World.ps1
C:\Scripts\de-DE\World.psd1
C:\Scripts\ar-SA\World.psd1
C:\Scripts\zh-CN\World.psd1
...
Soubor World.psd1 v podadresáři de-DE adresáře skriptu může obsahovat následující příkaz:
ConvertFrom-StringData -StringData @'
helloWorld = Hallo, Welt.
errorMsg1 = Das Feld Benutzername darf nicht leer sein.
promptMsg = Geben Sie Ihren Benutzernamen ein.
'@
Podobně může soubor World.psd1 v podadresáři ar-SA adresáře skriptu obsahovat následující příkaz:
ConvertFrom-StringData -StringData @'
helloWorld = مرحبًا أيها العالَم
errorMsg1 = لا يمكنك ترك حقل اسم المستخدم فارغًا
promptMsg = يرجى إدخال اسم المستخدم الخاص بك
'@
Import-LocalizedData: Dynamické načítání přeložených řetězců
K načtení řetězců v jazyce uživatelského rozhraní aktuálního uživatele použijte rutinu Import-LocalizedData.
Import-LocalizedData najde hodnotu $PSUICulture automatické proměnné a importuje obsah souborů <script-name>.psd1 v podadresáři, který odpovídá hodnotě $PSUICulture. Pak uloží importovaný obsah do proměnné určené hodnotou BindingVariable parametru.
Import-LocalizedData -BindingVariable msgTable
Pokud se například příkaz Import-LocalizedData zobrazí ve skriptu C:\Scripts\World.ps1 a hodnota $PSUICulture je "ar-SA", Import-LocalizedData najde následující soubor:
C:\Scripts\ar-SA\World.psd1
Potom naimportuje arabské textové řetězce ze souboru do proměnné $msgTable a nahradí všechny výchozí řetězce, které mohou být definovány v části Data skriptu World.ps1.
V důsledku toho, když skript používá $msgTable proměnnou k zobrazení uživatelských zpráv, zprávy se zobrazí v arabštině.
Například následující skript zobrazí zprávu "Zadejte své uživatelské jméno" v arabštině:
if (!($username)) { $msgTable.promptMsg }
Pokud Import-LocalizedData nemůže najít .psd1 soubor, který odpovídá hodnotě $PSUICulture, hodnota $msgTable se nenahradí a volání $msgTable.promptMsg zobrazí náhradní en-US řetězce.
Examples
Tento příklad ukazuje, jak se ve skriptu používají funkce internacionalizace skriptů k zobrazení dne v týdnu uživatelům v jazyce, který je v počítači nastavený.
Následuje úplný seznam souboru skriptu Sample1.ps1.
Skript začíná oddílem Data s názvem Den ($Day), který obsahuje příkaz ConvertFrom-StringData. Výraz odeslaný do ConvertFrom-StringData je zde jako řetězec, který obsahuje názvy dnů ve výchozím jazyce uživatelského rozhraní en-US, ve formátu dvojic klíč/hodnota. Příkaz ConvertFrom-StringData převede páry klíč/hodnota v řetězci here-string na hashovací tabulku a pak ji uloží do proměnné $Day.
Příkaz Import-LocalizedData naimportuje obsah souboru .psd1 v adresáři, který odpovídá hodnotě $PSUICulture automatické proměnné, a pak ho uloží do proměnné $Day a nahradí hodnoty $Day, které jsou definovány v části Data.
Zbývající příkazy načtou řetězce do pole a zobrazí 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
Soubory .psd1, které podporují skript, jsou uloženy v podadresářích adresáře skriptu s názvy, které odpovídají hodnotám $PSUICulture.
Následuje úplný seznam .\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
'@
Když spustíte Sample.ps1 na systému, na kterém má hodnota $PSUICulture hodnotu de-DE, výstup skriptu je:
Heute ist Freitag