Aracılığıyla paylaş


hakkında_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. 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, $PSCulture ve $PSUICulture. $PSCulture tarih, saat ve para birimi gibi öğeler için sistemde kullanılan kullanıcı arabirimi dilinin adını depolar. $PSUICulture değ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ü. .psd1 dosyaları 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