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.psd1
lengkap 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