Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Korte beschrijving
Hierin worden de internationaliseringsfuncties van scripts beschreven waarmee scripts berichten en instructies voor gebruikers in hun gebruikersinterfacetaal (UI) gemakkelijk kunnen weergeven.
Lange beschrijving
Met de internationaliseringsfuncties van PowerShell-scripts kunt u gebruikers overal ter wereld beter bedienen door help- en gebruikersberichten weer te geven in de taal van de gebruiker.
De script internationalisatiefuncties voeren een query uit op de UI-cultuur van het besturingssysteem tijdens de uitvoering, importeren van de juiste vertaalde tekenreeksen en deze weergeven aan de gebruiker. In de sectie Gegevens kunt u teksttekenreeksen gescheiden van code opslaan, zodat ze eenvoudig kunnen worden geïdentificeerd en geëxtraheerd. Een nieuwe cmdlet, ConvertFrom-StringData
converteert teksttekenreeksen naar woordenlijstachtige hashtabellen om vertaling te vergemakkelijken.
PowerShell biedt de volgende functies om internationale Help-tekst te ondersteunen:
Een gegevenssectie die teksttekenreeksen scheidt van code-instructies. Zie about_Data_Sections voor meer informatie over de sectie Gegevens.
Nieuwe automatische variabelen en
$PSCulture
$PSUICulture
.$PSCulture
slaat de naam op van de gebruikersinterfacetaal die in het systeem wordt gebruikt voor elementen zoals de datum, tijd en valuta. De$PSUICulture
variabele slaat de naam op van de gebruikersinterfacetaal die in het systeem wordt gebruikt voor elementen van de gebruikersinterface, zoals menu's en tekenreeksen.Een cmdlet,
ConvertFrom-StringData
waarmee teksttekenreeksen worden geconverteerd naar hashtabellen die lijken op woordenlijst, om de vertaling te vergemakkelijken. Zie ConvertFrom-StringData voor meer informatie.Een nieuw bestandstype,
.psd1
waarin vertaalde teksttekenreeksen worden opgeslagen. De.psd1
bestanden worden opgeslagen in taalspecifieke submappen van de scriptmap.Een cmdlet,
Import-LocalizedData
waarmee vertaalde teksttekenreeksen voor een opgegeven taal tijdens runtime worden geïmporteerd in een script. Deze cmdlet herkent en importeert tekenreeksen in elke door Windows ondersteunde taal. Zie Import-LocalizedData voor meer informatie.
De sectie Gegevens: Standaardtekenreeksen opslaan
Gebruik een sectie Gegevens in het script om de tekenreeksen in de standaardtaal op te slaan. Rangschik de tekenreeksen in sleutel-waardeparen in een hier-tekenreeks. Elk sleutel-/waardepaar moet op een afzonderlijke regel staan. Als u opmerkingen opneemt, moeten de opmerkingen op afzonderlijke regels staan.
De ConvertFrom-StringData
cmdlet converteert de sleutel-waardeparen in de hier-tekenreeks naar een woordenlijstachtige hash-tabel die is opgeslagen in de waarde van de sectievariabele Gegevens.
In het volgende voorbeeld bevat de sectie Gegevens van het World.ps1
script de set promptberichten in het Engels-Verenigde Staten (en-US) voor een script. De ConvertFrom-StringData
cmdlet converteert de tekenreeksen naar een hash-tabel en slaat deze op in de $msgtable
variabele.
$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.
'@
}
Zie about_Quoting_Rules voor meer informatie over deze tekenreeksen.
PSD1-bestanden: vertaalde tekenreeksen opslaan
Sla de scriptberichten voor elke gebruikersinterfacetaal op in afzonderlijke tekstbestanden met dezelfde naam als het script en de .psd1
bestandsnaamextensie. Sla de bestanden op in submappen van de scriptmap met namen van culturen in de volgende indeling:
<language>-<region>
Voorbeelden: de-DE, ar-SA en zh-Hans
Als het World.ps1
script bijvoorbeeld is opgeslagen in de C:\Scripts
map, maakt u een bestandsmapstructuur die er ongeveer als volgt uitziet:
C:\Scripts
C:\Scripts\World.ps1
C:\Scripts\de-DE\World.psd1
C:\Scripts\ar-SA\World.psd1
C:\Scripts\zh-CN\World.psd1
...
Het World.psd1
bestand in de submap de-DE van van de scriptmap kan de volgende instructie bevatten:
ConvertFrom-StringData -StringData @'
helloWorld = Hallo, Welt.
errorMsg1 = Das Feld Benutzername darf nicht leer sein.
promptMsg = Geben Sie Ihren Benutzernamen ein.
'@
Op dezelfde manier kan het World.psd1
bestand in de submap ar-SA van de scriptmap de volgende instructie bevatten:
ConvertFrom-StringData -StringData @'
helloWorld = مرحبًا أيها العالَم
errorMsg1 = لا يمكنك ترك حقل اسم المستخدم فارغًا
promptMsg = يرجى إدخال اسم المستخدم الخاص بك
'@
Import-LocalizedData: Dynamisch ophalen van vertaalde tekenreeksen
Gebruik de Import-LocalizedData
cmdlet om de tekenreeksen op te halen in de gebruikersinterfacetaal van de huidige gebruiker.
Import-LocalizedData
zoekt de waarde van de $PSUICulture
automatische variabele en importeert de inhoud van de <script-name>.psd1
bestanden in de submap die overeenkomt met de $PSUICulture
waarde. Vervolgens wordt de geïmporteerde inhoud opgeslagen in de variabele die is opgegeven door de waarde van de parameter BindingVariable .
Import-LocalizedData -BindingVariable msgTable
Als de Import-LocalizedData
opdracht bijvoorbeeld wordt weergegeven in het C:\Scripts\World.ps1
script en de waarde $PSUICulture
'ar-SA' is, Import-LocalizedData
zoekt u het volgende bestand:
C:\Scripts\ar-SA\World.psd1
Vervolgens worden de Arabische tekenreeksen uit het bestand geïmporteerd in de $msgTable
variabele, waarbij alle standaardtekenreeksen worden vervangen die kunnen worden gedefinieerd in de sectie Gegevens van het World.ps1
script.
Als het script de variabele gebruikt $msgTable
om gebruikersberichten weer te geven, worden de berichten in het Arabisch weergegeven.
In het volgende script wordt bijvoorbeeld het bericht 'Voer uw gebruikersnaam in' in het Arabisch weergegeven:
if (!($username)) { $msgTable.promptMsg }
Als Import-LocalizedData
er geen .psd1
bestand kan worden gevonden dat overeenkomt met de waarde van $PSUIculture
, wordt de waarde $msgTable
ervan niet vervangen en wordt de aanroep om $msgTable.promptMsg
de terugvaltekenreeksen en-US weer te geven.
Voorbeelden
In dit voorbeeld ziet u hoe de internationalisatiefuncties van scripts worden gebruikt in een script om een dag van de week weer te geven aan gebruikers in de taal die op de computer is ingesteld.
Hier volgt een volledige lijst van het scriptbestand Sample1.ps1.
Het script begint met een gegevenssectie met de naam Day ($Day) die een ConvertFrom-StringData
opdracht bevat. De expressie waarnaar wordt verzonden ConvertFrom-StringData
, is een hier-tekenreeks die de dagnamen bevat in de standaard-UI-cultuur, en-US, in sleutel-/waardeparen. De ConvertFrom-StringData
cmdlet converteert de sleutel-waardeparen in de hier-tekenreeks naar een hash-tabel en slaat deze vervolgens op in de waarde van de $Day
variabele.
De Import-LocalizedData
opdracht importeert de inhoud van het .psd1
bestand in de map die overeenkomt met de waarde van de $PSUICulture
automatische variabele en slaat deze vervolgens op in de $Day
variabele, waarbij de waarden $Day
worden vervangen die zijn gedefinieerd in de sectie Gegevens.
De overige opdrachten laden de tekenreeksen in een matrix en geven ze weer.
$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
De .psd1
bestanden die het script ondersteunen, worden opgeslagen in submappen van de scriptmap met namen die overeenkomen met de $PSUICulture
waarden.
Hier volgt een volledige lijst met .\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
'@
Als u Sample.ps1 uitvoert op een systeem waarvan de waarde $PSUICulture
de-DE is, is de uitvoer van het script:
Heute ist Freitag