about_Script_Internationalization
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. Yeni cmdlet'i, ConvertFrom-StringData
ç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
$PSCulture
ve$PSUICulture
.$PSCulture
tarih, saat ve para birimi gibi öğeler için sistemde kullanılan kullanıcı arabirimi dilinin adını depolar. değişkeni,$PSUICulture
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 bir cmdlet
ConvertFrom-StringData
. Daha fazla bilgi için bkz . ConvertFrom-StringData.Çevrilmiş metin dizelerini depolayan yeni bir dosya türü
.psd1
. Dosyalar.psd1
, betik dizininin dile özgü alt dizinlerinde depolanır.Belirtilen bir dil için çevrilmiş metin dizelerini çalışma zamanında bir betikte içeri aktaran bir cmdlet
Import-LocalizedData
' 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.
cmdlet'i ConvertFrom-StringData
, 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, betiğin World.ps1
Data bölümü bir betik için İngilizce Birleşik Devletler (en-US) istem iletileri kümesini içerir. cmdlet'i ConvertFrom-StringData
dizeleri karma tabloya dönüştürür ve değişkende $msgtable
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 dosya adı uzantısıyla aynı ada sahip ayrı metin dosyalarına .psd1
kaydedin. Dosyaları betik dizininin alt dizinlerinde, kültürlerin adlarıyla aşağıdaki biçimde depolayın:
<language>-<region>
Örnekler: de-DE, ar-SA ve zh-Hans
Örneğin, betik dizinde C:\Scripts
depolanıyorsaWorld.ps1
, aşağıdakine benzer bir dosya dizin 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
...
World.psd1
Betik dizininin de-DE alt dizinindeki dosya 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, World.psd1
betik dizininin ar-SA alt dizinindeki dosya aşağıdaki deyimi içerebilir:
ConvertFrom-StringData -StringData @'
helloWorld = مرحبًا أيها العالَم
errorMsg1 = لا يمكنك ترك حقل اسم المستخدم فارغًا
promptMsg = يرجى إدخال اسم المستخدم الخاص بك
'@
Import-LocalizedData: Çevrilmiş Dizelerin Dinamik Alınması
Geçerli kullanıcının kullanıcı arabirimi dilindeki dizeleri almak için cmdlet'ini Import-LocalizedData
kullanın.
Import-LocalizedData
otomatik değişkenin $PSUICulture
değerini bulur ve alt dizinde yer alan <script-name>.psd1
ve değerle eşleşen $PSUICulture
dosyaları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 komut betikte görünüyorsa Import-LocalizedData
ve değeri $PSUICulture
"ar-SA" ise aşağıdaki Import-LocalizedData
dosyayı C:\Scripts\World.ps1
bulur:
C:\Scripts\ar-SA\World.psd1
Ardından, dosyadaki Arapça metin dizelerini değişkenine $msgTable
aktarır ve betiğin Data bölümünde World.ps1
tanımlanabilir tüm varsayılan dizeleri değiştirir.
Sonuç olarak, betik kullanıcı iletilerini görüntülemek için değişkenini $msgTable
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 }
değeriyle $PSUIculture
eşleşen bir .psd1
dosya bulunamazsa Import-LocalizedData
değeri $msgTable
değiştirilmez ve çağrısı $msgTable.promptMsg
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 verilmiştir.
Betik, komut içeren Day ($Day) adlı bir ConvertFrom-StringData
Veri bölümüyle başlar. adresine ConvertFrom-StringData
gönderilen ifade, anahtar/değer çiftlerinde varsayılan kullanıcı arabirimi kültüründeki (en-US) gün adlarını içeren bir here-string'dir. cmdlet'i ConvertFrom-StringData
, buradaki dizedeki anahtar/değer çiftlerini karma tabloya dönüştürür ve ardından değişkeninin $Day
değerine kaydeder.
komutu, Import-LocalizedData
otomatik değişkenin .psd1
değeriyle $PSUICulture
eşleşen dizinindeki dosyanın içeriğini içeri aktarır ve ardından Veri bölümünde tanımlanan değerlerini $Day
değiştirerek değişkenine kaydeder$Day
.
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 .psd1
destekleyen dosyalar, betik dizininin alt dizinlerine değerlerle eşleşen $PSUICulture
adlarla kaydedilir.
Aşağıdakiler tam bir listesidir .\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
'@
Sonuç olarak, değerinin $PSUICulture
de-DE olduğu bir sistemde Sample.ps1'i çalıştırdığınızda betiğin çıktısı şöyledir:
Heute ist Freitag
Ayrıca bkz.
PowerShell