Bagikan melalui


tentang_Internasionalisasi_Skrip

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.

Seksyen Data: Menyimpan String Bawaan

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.

cmdlet ConvertFrom-StringData mengonversi pasangan kunci/nilai dalam here-string menjadi tabel hash yang mirip kamus, yang disimpan dalam nilai variabel sektion Data.

Dalam contoh berikut, bagian Data dari skrip World.ps1 menyertakan kumpulan pesan perintah English-United States (en-US) untuk skrip. cmdlet ConvertFrom-StringData mengonversi string menjadi tabel hash dan menyimpannya dalam variabel $msgtable.

$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 lebih lanjut 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 ekstensi nama file .psd1. Simpan file dalam subdirektori direktori skrip dengan nama budaya dalam format berikut:

<language>-<region>

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

Misalnya, jika skrip World.ps1 disimpan di direktori C:\Scripts, 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 di subdirektori de-DE 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, file World.psd1 di subdirektori ar-SA 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 cmdlet Import-LocalizedData.

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

Import-LocalizedData -BindingVariable msgTable

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

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

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

Akibatnya, ketika skrip menggunakan variabel $msgTable 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 file .psd1 yang cocok dengan nilai $PSUICulture, nilai $msgTable tidak diganti, dan panggilan ke $msgTable.promptMsg menampilkan string en-US fallback.

Examples

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 perintah ConvertFrom-StringData. Ekspresi yang dikirimkan ke ConvertFrom-StringData adalah string di sini yang berisi nama hari dalam budaya UI default, en-US, dalam pasangan kunci/nilai. cmdlet ConvertFrom-StringData mengonversi pasangan kunci/nilai dalam string di sini menjadi tabel hash lalu menyimpannya dalam nilai variabel $Day.

Perintah Import-LocalizedData mengimpor konten file .psd1 di direktori yang cocok dengan nilai variabel otomatis $PSUICulture lalu menyimpannya dalam variabel $Day, menggantikan 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 dengan nilai $PSUICulture.

Berikut ini adalah daftar lengkap .\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
'@

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

Heute ist Freitag

Lihat juga