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 $PSUIcultureeş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.