Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Kısa açıklama
Betiklerin kullanıcılara kullanıcı arabirimi (UI) dillerindeki iletileri ve yönergeleri görüntülemesini kolaylaştıran betik uluslararasılaştırma özelliklerini açıklar.
Uzun açıklama
PowerShell betiğini uluslararası hale getirme özellikleri, yardım ve kullanıcı iletilerini kullanıcının dilinde görüntüleyerek dünyanın her yanındaki kullanıcılara daha iyi hizmet vermenizi sağlar.
Betik uluslararasılaştırma özellikleri yürütme sırasında işletim sisteminin kullanıcı arabirimi kültürünü sorgular, uygun çevrilmiş metin dizelerini içeri aktarır ve kullanıcıya görüntüler. Veri bölümü, kolayca tanımlanıp ayıklanması için metin dizelerini koddan ayrı depolamanıza olanak tanır.
ConvertFrom-StringDatayeni bir cmdlet, çeviriyi kolaylaştırmak için metin dizelerini sözlük benzeri karma tablolara dönüştürür.
Uluslararası Yardım metnini desteklemek için PowerShell aşağıdaki özellikleri içerir:
Metin dizelerini kod yönergelerinden ayıran Bir Veri bölümü. Veri bölümü hakkında daha fazla bilgi için bkz. about_Data_Sections.
yeni otomatik değişkenler,
$PSCultureve$PSUICulture.$PSCulturetarih, saat ve para birimi gibi öğeler için sistemde kullanılan kullanıcı arabirimi dilinin adını depolar.$PSUICulturedeğişkeni, menüler ve metin dizeleri gibi kullanıcı arabirimi öğeleri için sistemde kullanılan kullanıcı arabirimi dilinin adını depolar.Çeviriyi kolaylaştırmak için metin dizelerini sözlük benzeri karma tablolara dönüştüren
ConvertFrom-StringDatacmdlet'i. Daha fazla bilgi için bkz. ConvertFrom-StringData.Çevrilmiş metin dizelerini depolayan
.psd1yeni bir dosya türü..psd1dosyaları betik dizininin dile özgü alt dizinlerinde depolanır.Belirli bir dil için çevrilmiş metin dizelerini çalışma zamanında bir betikte içeri aktaran
Import-LocalizedDatacmdlet'i. Bu cmdlet, Windows tarafından desteklenen herhangi bir dilde dizeleri tanır ve içeri aktarır. Daha fazla bilgi için bkz. Import-LocalizedData.
Veri Bölümü: Varsayılan Dizeleri Depolama
Metin dizelerini varsayılan dilde depolamak için betikteki Veri bölümünü kullanın. Dizeleri bir here-string içindeki anahtar/değer çiftlerinde düzenleyin. Her anahtar/değer çifti ayrı bir satırda olmalıdır. Açıklamaları eklerseniz, açıklamalar ayrı satırlarda olmalıdır.
ConvertFrom-StringData cmdlet'i, buradaki dizedeki anahtar/değer çiftlerini Veri bölümü değişkeninin değerinde depolanan sözlük benzeri bir karma tabloya dönüştürür.
Aşağıdaki örnekte, World.ps1 betiğinin Data bölümü, bir betik için English-United Durumları (en-US) istem iletileri kümesini içerir.
ConvertFrom-StringData cmdlet'i dizeleri karma tabloya dönüştürür ve bunları $msgtable değişkeninde depolar.
$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.
'@
}
Here-strings hakkında daha fazla bilgi için bkz. about_Quoting_Rules.
PSD1 Dosyaları: Çevrilmiş Dizeleri Depolama
Her kullanıcı arabirimi dili için betik iletilerini, betik ve .psd1 dosya adı uzantısıyla aynı ada sahip ayrı metin dosyalarına kaydedin. Dosyaları betik dizininin alt dizinlerinde, kültürlerin adlarıyla aşağıdaki biçimde depolayın:
<language>-<region>
Örnekler: de-DE, ar-SAve zh-Hans
Örneğin, World.ps1 betiği C:\Scripts dizininde depolanıyorsa, aşağıdakine benzer bir dosya dizini yapısı oluşturursunuz:
C:\Scripts
C:\Scripts\World.ps1
C:\Scripts\de-DE\World.psd1
C:\Scripts\ar-SA\World.psd1
C:\Scripts\zh-CN\World.psd1
...
Betik dizininin de-DE alt dizinindeki World.psd1 dosyası aşağıdaki deyimi içerebilir:
ConvertFrom-StringData -StringData @'
helloWorld = Hallo, Welt.
errorMsg1 = Das Feld Benutzername darf nicht leer sein.
promptMsg = Geben Sie Ihren Benutzernamen ein.
'@
Benzer şekilde, betik dizininin ar-SA alt dizinindeki World.psd1 dosyası aşağıdaki deyimi içerebilir:
ConvertFrom-StringData -StringData @'
helloWorld = مرحبًا أيها العالَم
errorMsg1 = لا يمكنك ترك حقل اسم المستخدم فارغًا
promptMsg = يرجى إدخال اسم المستخدم الخاص بك
'@
Import-LocalizedData: Çevrilmiş Dizelerin Dinamik Getirimi
Geçerli kullanıcının kullanıcı arabirimi dilindeki dizeleri almak için Import-LocalizedData cmdlet'ini kullanın.
Import-LocalizedData
$PSUICulture otomatik değişkeninin değerini bulur ve <script-name>.psd1 değeriyle eşleşen alt dizindeki $PSUICulture dosyalarının içeriğini içeri aktarır. Ardından içeri aktarılan içeriği BindingVariable parametresinin değeriyle belirtilen değişkene kaydeder.
Import-LocalizedData -BindingVariable msgTable
Örneğin, Import-LocalizedData komutu C:\Scripts\World.ps1 betiğinde görünüyorsa ve $PSUICulture değeri "ar-SA" ise, Import-LocalizedData aşağıdaki dosyayı bulur:
C:\Scripts\ar-SA\World.psd1
Ardından, dosyadaki Arapça metin dizelerini $msgTable değişkenine aktarır ve World.ps1 betiğinin Data bölümünde tanımlanabilir tüm varsayılan dizeleri değiştirir.
Sonuç olarak, betik kullanıcı iletilerini görüntülemek için $msgTable değişkenini kullandığında, iletiler Arapça olarak görüntülenir.
Örneğin, aşağıdaki betik "Lütfen kullanıcı adınızı girin" iletisini Arapça olarak görüntüler:
if (!($username)) { $msgTable.promptMsg }
Import-LocalizedData
.psd1değeriyle eşleşen bir $PSUICulture dosyası bulamazsa, $msgTable değeri değiştirilmez ve $msgTable.promptMsg çağrısı geri dönüş en-US dizelerini görüntüler.
Örnekler
Bu örnekte, betik uluslararasılaştırma özelliklerinin, kullanıcılara bilgisayarda ayarlanan dilde haftanın gününü görüntülemek için bir betikte nasıl kullanıldığı gösterilmektedir.
Aşağıda, Sample1.ps1 betik dosyasının tam listesi yer alır.
Betik, ConvertFrom-StringData komutu içeren Day ($Day) adlı bir Veri bölümüyle başlar.
ConvertFrom-StringData'a gönderilen ifade, en-USvarsayılan UI kültüründeki gün adlarını anahtar/değer çiftleri şeklinde içeren bir here-string'dir.
ConvertFrom-StringData cmdlet'i, here-string içindeki anahtar/değer çiftlerini bir karma tabloya dönüştürür ve bu sonucu $Day değişkenine kaydeder.
Import-LocalizedData komutu, .psd1 otomatik değişkeninin değeriyle eşleşen dizindeki $PSUICulture dosyasının içeriğini içeri aktarır ve ardından veri bölümünde tanımlanan $Day değerlerini değiştirerek $Day değişkenine kaydeder.
Kalan komutlar dizeleri bir diziye yükler ve görüntüler.
$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
Betiği destekleyen .psd1 dosyaları, $PSUICulture değerleriyle eşleşen adlarla betik dizininin alt dizinlerine kaydedilir.
Aşağıda .\de-DE\sample1.psd1tam listesi yer alamdır:
# culture="de-DE"
ConvertFrom-StringData @'
messageDate = Heute ist
d0 = Sonntag
d1 = Montag
d2 = Dienstag
d3 = Mittwoch
d4 = Donnerstag
d5 = Freitag
d6 = Samstag
'@
Sonuç olarak, $PSUICulture değerinin de-DEolduğu bir sistemde Sample.ps1 çalıştırdığınızda betiğin çıkışı şöyledir:
Heute ist Freitag
Ayrıca bakınız
- about_Data_Sections
- about_Automatic_Variables
- karma_tablosu_hakkında
- about_Quoting_Rules
- Import-LocalizedData
- ConvertFrom-StringData
PowerShell