about_Script_Internationalization

Rövid leírás

Ismerteti a szkriptek nemzetközisítési funkcióit, amelyek megkönnyítik a szkriptek számára az üzenetek és utasítások megjelenítését a felhasználói felület (UI) nyelvén.

Hosszú leírás

A PowerShell-szkriptek nemzetközisítési funkciói lehetővé teszik a felhasználók jobb kiszolgálását világszerte azáltal, hogy súgót és felhasználói üzeneteket jelenít meg a felhasználó nyelvén.

A szkriptek nemzetközisítési funkciói lekérdezik az operációs rendszer felhasználói felületi kultúráját a végrehajtás során, importálják a megfelelő lefordított szöveges sztringeket, és megjelenítik őket a felhasználónak. Az Adatok szakasz lehetővé teszi a kódtól eltérő szöveges sztringek tárolását, hogy azok könnyen azonosíthatók és kinyerhetők legyenek. Egy új parancsmag ConvertFrom-StringDataa szövegsztringeket szótárszerű kivonattáblákká alakítja a fordítás megkönnyítése érdekében.

A nemzetközi súgószöveg támogatásához a PowerShell a következő funkciókat tartalmazza:

  • Adatszakasz, amely elválasztja a szöveges sztringeket a kódutasításoktól. További információ az Adatok szakaszról: about_Data_Sections.

  • Új automatikus változók és $PSCulture$PSUICulture. $PSCulture a rendszerben használt felhasználói felület nyelvének nevét tárolja olyan elemek esetében, mint a dátum, az idő és a pénznem. A $PSUICulture változó a felhasználói felület elemei, például menük és szöveges sztringek esetében tárolja a rendszerben használt felhasználói felület nyelvének nevét.

  • Egy parancsmag, ConvertFrom-StringDataamely a szövegsztringeket szótárszerű kivonattáblákká alakítja a fordítás megkönnyítése érdekében. További információ: ConvertFrom-StringData.

  • Egy új fájltípus, .psd1amely lefordított szöveges sztringeket tárol. A .psd1 fájlok a szkriptkönyvtár nyelvspecifikus alkönyvtáraiban vannak tárolva.

  • Egy parancsmag, Import-LocalizedDataamely lefordított szöveges sztringeket importál egy adott nyelvhez egy szkriptbe futásidőben. Ez a parancsmag felismeri és importálja a sztringeket bármely Windows által támogatott nyelven. További információ: Import-LocalizedData.

Az adatszakasz: Alapértelmezett sztringek tárolása

A szkript Adat szakaszával a szövegsztringeket az alapértelmezett nyelven tárolhatja. Rendezze el a sztringeket kulcs-érték párokban egy itt található sztringben. Minden kulcs-érték párnak külön sorban kell lennie. Ha megjegyzéseket is tartalmaz, a megjegyzéseknek külön sorokban kell lenniük.

A ConvertFrom-StringData parancsmag az itt szereplő sztring kulcs-érték párjait szótárszerű kivonatoló táblává alakítja, amelyet az Adatszakasz változó értéke tárol.

Az alábbi példában a szkript Adat szakasza World.ps1 tartalmazza az angol-Egyesült Államok (en-US) parancssori üzenetek készletét egy szkripthez. A ConvertFrom-StringData parancsmag kivonattáblává alakítja a sztringeket, és a $msgtable változóban tárolja őket.

$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.
'@
}

Az itt szereplő sztringekről további információt a about_Quoting_Rules talál.

PSD1-fájlok: Lefordított sztringek tárolása

Mentse a szkriptüzeneteket az egyes felhasználói felületi nyelvekhez külön szövegfájlokban, ugyanazzal a névvel, mint a szkript és a .psd1 fájlnévkiterjesztés. Tárolja a fájlokat a szkriptkönyvtár alkönyvtáraiban a kultúrák neveivel a következő formátumban:

<language>-<region>

Példák: de-DE, ar-SA és zh-Hans

Ha például a World.ps1 szkript a C:\Scripts könyvtárban van tárolva, a következőhöz hasonló fájlkönyvtár-struktúrát hozna létre:

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

A World.psd1 szkriptkönyvtár de-DE alkönyvtárában található fájl a következő utasítást tartalmazhatja:

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

Hasonlóképpen, a World.psd1 szkriptkönyvtár ar-SA alkönyvtárában található fájl a következő utasítást is tartalmazhatja:

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

Import-LocalizedData: Lefordított sztringek dinamikus lekérése

Az aktuális felhasználó felhasználói felületi nyelvének sztringjeinek lekéréséhez használja a Import-LocalizedData parancsmagot.

Import-LocalizedData megkeresi az $PSUICulture automatikus változó értékét, és importálja a <script-name>.psd1 fájlok tartalmát az alkönyvtárban, amely megfelel az értéknek $PSUICulture . Ezután menti az importált tartalmat a BindingVariable paraméter értéke által megadott változóban.

Import-LocalizedData -BindingVariable msgTable

Ha például a Import-LocalizedData parancs megjelenik a C:\Scripts\World.ps1 szkriptben, és az értéke $PSUICulture "ar-SA", Import-LocalizedData a következő fájlt keresi:

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

Ezután importálja az arab szöveges sztringeket a fájlból a $msgTable változóba, lecserélve a szkript Adat szakaszában World.ps1 esetleg definiált alapértelmezett sztringeket.

Ennek eredményeképpen, amikor a szkript a változót használja a $msgTable felhasználói üzenetek megjelenítésére, az üzenetek arab nyelven jelennek meg.

A következő szkript például arab nyelven jeleníti meg a "Adja meg a felhasználónevet" üzenetet:

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

Ha Import-LocalizedData nem található olyan .psd1 fájl, amely megfelel az értéknek$PSUIculture$msgTable, az érték nem lesz lecserélve, és a tartalék en-US sztringek megjelenítésére irányuló $msgTable.promptMsg hívás.

Példák

Ez a példa bemutatja, hogy a szkriptek nemzetközisítési funkciói hogyan jelennek meg a hét egy napján a felhasználók számára a számítógépen beállított nyelven.

Az alábbiakban a Sample1.ps1 szkriptfájl teljes listája található.

A szkript egy Day ($Day) nevű adatszakaszsal kezdődik, amely egy parancsot ConvertFrom-StringData tartalmaz. A megadott ConvertFrom-StringData kifejezés egy olyan here-sztring, amely az alapértelmezett felhasználói felületi kultúrában (en-US) lévő napneveket tartalmazza kulcs-érték párokban. A ConvertFrom-StringData parancsmag az itt-sztring kulcs-érték párjait kivonattáblává alakítja, majd menti a változó értékébe $Day .

A Import-LocalizedData parancs importálja a fájl tartalmát a .psd1 könyvtárban, amely megfelel az $PSUICulture automatikus változó értékének, majd menti azt a $Day változóba, lecserélve $Day az Adatok szakaszban definiált értékeket.

A többi parancs betölti a sztringeket egy tömbbe, és megjeleníti őket.

$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

A .psd1 szkriptet támogató fájlokat a szkriptkönyvtár alkönyvtárában menti a rendszer az $PSUICulture értékeknek megfelelő névvel.

A következők teljes listája .\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
'@

Ennek eredményeképpen, ha a Sample.ps1 fájlt olyan rendszeren futtatja, amelyen az érték $PSUICulture de-DE, a szkript kimenete a következő:

Heute ist Freitag

Lásd még