about_Script_Internationalization

Deskripsi singkat

Menjelaskan fitur internasionalisasi skrip yang memudahkan skrip untuk menampilkan pesan dan instruksi kepada pengguna dalam bahasa antarmuka pengguna (UI) mereka.

Deskripsi panjang

Fitur internasionalisasi skrip PowerShell memungkinkan Anda melayani pengguna dengan lebih baik di seluruh dunia dengan menampilkan bantuan dan pesan pengguna dalam bahasa pengguna.

Fitur internasionalisasi skrip mengkueri budaya UI sistem operasi selama eksekusi, mengimpor string teks yang diterjemahkan yang sesuai, dan menampilkannya kepada pengguna. Bagian Data memungkinkan Anda menyimpan string teks terpisah dari kode sehingga mudah diidentifikasi dan diekstrak. Cmdlet baru, ConvertFrom-StringData, mengonversi string teks menjadi tabel hash seperti kamus untuk memfasilitasi terjemahan.

Untuk mendukung teks Bantuan internasional, PowerShell menyertakan fitur berikut:

  • Bagian Data yang memisahkan string teks dari instruksi kode. Untuk informasi selengkapnya tentang bagian Data, lihat about_Data_Sections.

  • Variabel otomatis baru, $PSCulture dan $PSUICulture. $PSCulture menyimpan nama bahasa UI yang digunakan pada sistem untuk elemen seperti tanggal, waktu, dan mata uang. Variabel $PSUICulture menyimpan nama bahasa UI yang digunakan pada sistem untuk elemen antarmuka pengguna seperti menu dan string teks.

  • Cmdlet, ConvertFrom-StringData, yang mengonversi string teks menjadi tabel hash seperti kamus untuk memfasilitasi terjemahan. Untuk informasi selengkapnya, lihat ConvertFrom-StringData.

  • Jenis file baru, .psd1, yang menyimpan string teks yang diterjemahkan. File .psd1 disimpan dalam subdirektori khusus bahasa direktori skrip.

  • Cmdlet, Import-LocalizedData, yang mengimpor string teks yang diterjemahkan untuk bahasa tertentu ke dalam skrip saat runtime. Cmdlet ini mengenali dan mengimpor string dalam bahasa apa pun yang didukung Windows. Untuk informasi selengkapnya, lihat Import-LocalizedData.

Bagian Data: Menyimpan String Default

Gunakan bagian Data dalam skrip untuk menyimpan string teks dalam bahasa default. Atur string dalam pasangan kunci/nilai dalam string di sini. Setiap pasangan kunci/nilai harus berada di baris terpisah. Jika Anda menyertakan komentar, komentar harus berada di baris terpisah.

ConvertFrom-StringData Cmdlet mengonversi pasangan kunci/nilai dalam string di sini menjadi tabel hash seperti kamus yang disimpan dalam nilai variabel bagian Data.

Dalam contoh berikut, bagian Data dari World.ps1 skrip menyertakan kumpulan pesan perintah Amerika Serikat Bahasa Inggris (id-ID) untuk skrip. ConvertFrom-StringData Cmdlet mengonversi string menjadi tabel hash dan menyimpannya dalam $msgtable variabel.

$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.
'@
}

Untuk informasi selengkapnya tentang here-string, lihat about_Quoting_Rules.

File PSD1: Menyimpan String Yang Diterjemahkan

Simpan pesan skrip untuk setiap bahasa UI dalam file teks terpisah dengan nama yang sama dengan skrip dan .psd1 ekstensi nama file. Simpan file dalam subdirektori direktori skrip dengan nama budaya dalam format berikut:

<language>-<region>

Contoh: de-DE, ar-SA, dan zh-Hans

Misalnya, jika World.ps1 skrip disimpan di C:\Scripts direktori, Anda akan membuat struktur direktori file yang menyerupai berikut ini:

C:\Scripts
C:\Scripts\World.ps1
C:\Scripts\de-DE\World.psd1
C:\Scripts\ar-SA\World.psd1
C:\Scripts\zh-CN\World.psd1
...

File World.psd1 dalam subdirektori de-DE dari direktori skrip mungkin menyertakan pernyataan berikut:

ConvertFrom-StringData -StringData @'
helloWorld = Hallo, Welt.
errorMsg1 = Das Feld Benutzername darf nicht leer sein.
promptMsg = Geben Sie Ihren Benutzernamen ein.
'@

Demikian pula, World.psd1 file dalam subdirektori ar-SA dari direktori skrip mungkin menyertakan pernyataan berikut:

ConvertFrom-StringData -StringData @'
helloWorld = مرحبًا أيها العالَم
errorMsg1 = لا يمكنك ترك حقل اسم المستخدم فارغًا
promptMsg = يرجى إدخال اسم المستخدم الخاص بك
'@

Import-LocalizedData: Pengambilan Dinamis String Yang Diterjemahkan

Untuk mengambil string dalam bahasa UI pengguna saat ini, gunakan Import-LocalizedData cmdlet .

Import-LocalizedData menemukan nilai $PSUICulture variabel otomatis dan mengimpor konten <script-name>.psd1 file dalam subdirektori yang cocok dengan $PSUICulture nilai. Kemudian, ia menyimpan konten yang diimpor dalam variabel yang ditentukan oleh nilai parameter BindingVariable .

Import-LocalizedData -BindingVariable msgTable

Misalnya, jika Import-LocalizedData perintah muncul dalam C:\Scripts\World.ps1 skrip dan nilainya $PSUICulture adalah "ar-SA", Import-LocalizedData temukan file berikut:

C:\Scripts\ar-SA\World.psd1

Kemudian, ini mengimpor string teks Arab dari file ke dalam $msgTable variabel, menggantikan string default apa pun yang mungkin ditentukan di bagian Data dari World.ps1 skrip.

Akibatnya, ketika skrip menggunakan $msgTable variabel untuk menampilkan pesan pengguna, pesan ditampilkan dalam bahasa Arab.

Misalnya, skrip berikut menampilkan pesan "Silakan masukkan nama pengguna Anda" dalam bahasa Arab:

if (!($username)) { $msgTable.promptMsg }

Jika Import-LocalizedData tidak dapat menemukan .psd1 file yang cocok dengan nilai $PSUIculture, nilai $msgTable tidak diganti, dan panggilan untuk $msgTable.promptMsg menampilkan string en-US fallback.

Contoh

Contoh ini menunjukkan bagaimana fitur internasionalisasi skrip digunakan dalam skrip untuk menampilkan hari dalam seminggu kepada pengguna dalam bahasa yang diatur di komputer.

Berikut ini adalah daftar lengkap file skrip Sample1.ps1.

Skrip dimulai dengan bagian Data bernama Day ($Day) yang berisi ConvertFrom-StringData perintah. Ekspresi yang dikirimkan ke ConvertFrom-StringData adalah string di sini yang berisi nama hari dalam budaya UI default, en-US, dalam pasangan kunci/nilai. ConvertFrom-StringData Cmdlet mengonversi pasangan kunci/nilai dalam string di sini menjadi tabel hash lalu menyimpannya dalam nilai $Day variabel.

Perintah Import-LocalizedData mengimpor konten .psd1 file di direktori yang cocok dengan nilai $PSUICulture variabel otomatis lalu menyimpannya dalam $Day variabel, mengganti nilai $Day yang ditentukan di bagian Data.

Perintah yang tersisa memuat string ke dalam array dan menampilkannya.

$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

File .psd1 yang mendukung skrip disimpan dalam subdirektori direktori skrip dengan nama yang cocok $PSUICulture dengan nilai.

Berikut ini adalah daftar .\de-DE\sample1.psd1lengkap dari :

# culture="de-DE"
ConvertFrom-StringData @'
    messageDate = Heute ist
    d0 = Sonntag
    d1 = Montag
    d2 = Dienstag
    d3 = Mittwoch
    d4 = Donnerstag
    d5 = Freitag
    d6 = Samstag
'@

Akibatnya, ketika Anda menjalankan Sample.ps1 pada sistem tempat nilai $PSUICulture de-DE, output skrip adalah:

Heute ist Freitag

Lihat juga