Menggunakan Pengalihan String Registri

Penyimpanan string yang dikodekan secara permanen dalam registri adalah bagian dari model pelokalan Pra-Windows Vista. Ini tidak didukung oleh MUI. Dalam model saat ini, antarmuka pengguna untuk sistem operasi berjalan dalam file sumber daya khusus bahasa di atas basis netral bahasa. Komponen sistem operasi menggunakan registri dengan bahasa netral.

MUI hanya menggunakan string registri yang dialihkan yang ditentukan oleh sumber daya Win32 PE dalam file sumber daya bahasa dasar. Pengalihan didefinisikan secara terpisah, misalnya, dalam file .inf. Jenis penyimpanan ini memungkinkan pemuat sumber daya untuk memilih sumber daya bahasa yang benar secara otomatis selama pemuatan modul sumber daya.

Catatan

Topik ini hanya berkaitan dengan sumber daya Win32 PE. Jika menggunakan sumber daya PE non-Win32, Anda harus menyediakan pengalihan string registri yang disesuaikan, jika diperlukan.

 

Membuat Sumber Daya Bahasa Netral

Aplikasi MUI yang berjalan di Windows Vista dan yang lebih baru menggunakan sumber daya string netral bahasa untuk memungkinkan akses ke string khusus bahasa yang disimpan dalam tabel sumber daya string. Kode aplikasi yang membaca nilai-nilai ini dari registri dijelaskan di bagian Muat Nilai Registri Bahasa-Netral dari Menemukan String yang Dialihkan.

Data untuk nilai registri netral bahasa memiliki format "@<PE-path>,-<stringID>[;<comment>]", di mana:

  • JALUR PE menentukan jalur yang dapat dieksekusi. Anda dapat menentukan jalur menggunakan variabel lingkungan, seperti %ProgramFiles%, untuk mendukung penyebaran. Alternatif untuk membuat referensi string Anda adalah meninggalkan informasi jalur file. Dalam hal ini, aplikasi Anda harus memiliki beberapa cara, misalnya, nilai registri lain, untuk mengomunikasikan direktori penginstalannya sendiri.
  • stringID menentukan pengidentifikasi sumber daya numerik dari sumber daya string yang relevan, yang diimplementasikan sama seperti sumber daya string lain yang dapat dilokalkan.
  • komentar menentukan informasi opsional untuk penelusuran kesalahan atau keterbacaan nilai registri. Fungsi API registri mengabaikan komentar saat memuat string.

Catatan

Data untuk nilai registri tidak membuat referensi eksplisit ke file sumber daya khusus bahasa. File yang benar ditentukan pada runtime, berdasarkan preferensi bahasa antarmuka pengguna saat ini.

 

Nilai registri dimasukkan tanpa spasi antara "," dan "-". Nilai registri yang benar adalah:

shell32.dll,-22912

Nilai registri yang salah adalah:

shell32.dll, -22912

Contoh dari Windows Vista adalah nilai registri dengan data berikut:

@%SystemRoot%\system32\input.dll,-5020

Membuat Sumber Daya untuk String Pintasan

Saat aplikasi MUI menampilkan namanya di antarmuka pengguna shell, string InfoTip ditampilkan untuk ikon aplikasi. Anda harus membuat sumber daya string untuk nama tampilan aplikasi dan string InfoTip terkait untuk setiap bahasa yang didukung. Saat sumber daya siap, aplikasi Anda dapat menggunakan string seperti yang dijelaskan dalam Gunakan SHELL API untuk Memuat String Pintasan dari bagian Registri dari Menemukan String yang Dialihkan.

Menyiapkan Sumber Daya untuk Pintasan yang Dibuat dengan Penginstal Windows

Jika Anda menggunakan Windows Installer (MSI) untuk membuat pintasan, sumber daya string menyertakan nama tampilan pintasan dan deskripsi. Dalam tabel pintasan MSI, DLL sumber daya dirujuk di kolom yang sesuai dan pengidentifikasi sumber daya untuk nama dan deskripsi tampilan pintasan Anda digunakan di kolom pengidentifikasi sumber daya yang sesuai.

Sehingga pintasan aplikasi berfungsi dengan baik dengan teknologi sumber daya MUI, ingatlah poin-poin berikut saat menyiapkan string pintasan:

  • Gunakan variabel lingkungan atau jalur relatif untuk mendaftarkan DLL. Anda dapat menentukan @%systemroot%\system32\shell32.dll selama tipe string registri REG_EXPAND_SZ. Pengidentifikasi sumber daya string untuk "Dokumen Teks" di Shell32.dll adalah 12345.
  • Jangan gunakan spasi di sekitar simbol "," dan "-". Contoh yang benar adalah "shell32.dll,-22912".
  • Jangan gunakan nama file pendek. Jenis nama ini tidak berfungsi dengan pemuat sumber daya.

Menyiapkan Sumber Daya untuk Pintasan Menggunakan Format INF

Jika Anda menggunakan format file INF untuk membuat string pintasan, file sumber daya harus membuat pengaturan registri berikut. Instruksi ini mengasumsikan penggunaan sintaks ProfileItems dari Api Penyiapan.

  1. Ubah nilai InfoTip untuk mengarahkan ke referensi pengalihan string, menggunakan jalur dan pengidentifikasi sumber daya.
  2. Tambahkan nilai baru DisplayResource di bawah bagian penginstalan ProfileItems.

Berikut ini adalah contoh yang menunjukkan penambahan aplikasi Kalkulator ke menu Mulai :

[CalcInstallItems]
"Name" = %Calc_DESC%
"CmdLine" = 11, calc.exe
"SubDir" = %Access_GROUP%
"WorkingDir" = 11

"InfoTip" = "@%systemroot%\system32\shell32.dll,-22531"

"DisplayResource" = "%systemroot%\system32\shell32.dll",22019

Gunakan sintaks yang ditunjukkan di bawah ini saat menggunakan INF untuk menambahkan item, misalnya, folder Grup Akses, ke menu Mulai . Sintaks ini mengasumsikan penggunaan dukungan [StartMenuItems] dari Penyiapan, mirip dengan sintaks yang digunakan dalam Syssetup.inf.

[StartMenuItems]
<description> = <binary>,<commandline>,<iconfile>,<iconnum>,<infotip>,<resDLL,resID>

Atur infotip nilai ke referensi string "@<path>,-resID".

Nama tampilan ditentukan oleh nilai resDLL dan resID . Nilai resID menentukan pengidentifikasi sumber daya untuk sumber daya string yang terkait dengan file netral bahasa. Nilai resDLL menentukan jalur ke file netral bahasa.

Buat Sumber Daya untuk Nama Jenis Dokumen yang Mudah Diingat

Anda harus menerapkan nama yang mudah diingat dan string InfoTip untuk aplikasi Anda sebagai sumber daya string. Untuk mengizinkan nama jenis dokumen yang mudah diingat bereaksi terhadap bahasa antarmuka pengguna, aplikasi harus mendaftarkan nama menggunakan nilai FriendlyTypeName di bawah kunci pengidentifikasi program untuk jenis file. Nilai default untuk kunci pengidentifikasi program harus dipertahankan untuk menjaga kompatibilitas mundur. Untuk informasi tentang mengakses nama dari aplikasi Anda, lihat Nama Jenis Dokumen Ramah Kueri di bagian Registri dari Menemukan String yang Dialihkan.

Pekerjaan tertentu melibatkan langkah-langkah berikut:

  1. Terapkan nama yang mudah diingat dan string InfoTip sebagai sumber daya string khusus bahasa.
  2. Tambahkan nilai FriendlyTypeName di bawah kunci registri jenis dokumen. Data untuk nilai mengikuti pola "@<path>,-<resID>", di mana jalur menunjukkan executable dan resID adalah pengidentifikasi sumber daya dari sumber daya string yang dapat dilokalkan yang terkait dengan yang dapat dieksekusi.
  3. Tentukan nilai registri InfoTip sesuai dengan format "@<path>,-<resID>".

Contoh berikut menunjukkan pengaturan registri untuk file .txt:

HKCR\.txt
@="txtfile"
"Content Type"="text/plain"

HKCR\txtfile
@="Text Document"

"FriendlyTypeName" = "@%systemroot%\system32\shell32.dll,-12345"

"InfoTip" = "@%systemroot%\system32\shell32.dll,-12346"

Menyediakan Sumber Daya untuk String Tindakan Kata Kerja Shell

String tindakan untuk kata kerja tertentu, misalnya, "buka" dan "edit", ditampilkan di menu pop-up yang ditampilkan saat pengguna mengklik kanan file di Windows Explorer. Aplikasi Anda tidak perlu menentukan string untuk kata kerja shell umum, karena shell memiliki default yang diaktifkan MUI sendiri untuk kata kerja ini. Namun, Anda harus menyediakan sumber daya string yang dapat dilokalkan untuk string yang mewakili kata kerja yang jarang.

Pada sistem operasi XP pra-Windows, string untuk kata kerja shell dalam registri dirender menggunakan sintaks berikut, di mana kata kerja menentukan nama kata kerja aktual:

HKCR\<progid>\shell\<verb>
@ = <friendly-name>

Berikut contohnya:

HKCR\Sample.app\shell\Disc
@ = "Disconnect"

Pada Windows XP dan yang lebih baru, Anda dapat menggunakan tingkat tidak langsung untuk membuat string tindakan bergantung pada bahasa antarmuka pengguna. Sistem operasi ini mendukung nilai MUIVerb untuk definisi string yang kompatibel dengan MUI. Berikut adalah contoh entri registri untuk kata kerja yang tidak biasa:

HKCR\Sample.app\shell\Disc
@ = "Disconnect"
"MUIVerb" = "@%systemroot%\system32\sample.exe,-9875"

Aplikasi MUI Anda juga harus dapat mendaftarkan nilai default lama sebagai string yang dapat dilokalkan, seperti yang ditunjukkan di bawah ini:

HKCR\Sample.app\shell\Disc
@ = "@%systemroot%\system32\sample.exe,-9875"

Catatan

Pendaftaran nilai default lama tidak disarankan karena memerlukan pengaturan yang berbeda pada Windows XP dan yang lebih baru dari penyiapan yang digunakan pada sistem operasi sebelumnya.

 

Membuat Sumber Daya untuk String Kata Kerja, Protokol, dan AuxUserType

Anda harus membuat sumber daya string yang dapat dilokalkan untuk string Verb, Protocol, dan AuxUserType. Gunakan pengaturan registri berikut:

HKCR\CLSID\{<Your_CLSID>}\Verb\<number> @="<Your Verb>, <menu_flag>, <verb_flag>"
"LocalizedString"="@<resDLLpath\resDLL.DLL>,-resStrID"
...

HKCR\CLSID\{<Your_CLSID>}\AuxUserType\<number>
@="<Your Short Name>"
"LocalizedString"="@<resDLLpath\resDLL.DLL>,-resStrID1"
...

HKCR\<Your_Name>\protocol\StdFileEditing\verb\<number>
@="<Your Verb>"
"LocalizedString"="@<resDLLpath\resDLL.DLL>,-resStrID"
...

Nilai yang ditentukan untuk LocalizedString hanya berisi atau mengganti nilai untuk Kata Kerja Anda, bukan dua nilai bendera.

Berikut adalah ringkasan untuk membantu Anda memastikan pengaturan registri yang benar:

  • Jika CLSID memiliki kunci HKCR\CLSID\{clsid}\Insertable, tentukan nilai CLSID default menggunakan HKCR\CLSID\{clsid}\LocalizedString.
  • Jika CLSID memiliki satu atau beberapa subkunci di bawah HKCR\CLSID\{clsid}\Verb, tentukan setiap string Verb individual menggunakan HKCR\CLSID\{clsid}\Verb\xxx\LocalizedString.
  • Jika CLSID memiliki satu atau beberapa subkunci di bawah HKCR\{progid}\Protocol\Stdfileediting\Verb, tentukan setiap string Verb individual menggunakan HKCR\{progid}\Protocol\Stdfileediting\Verb\xxx\LocalizedString.
  • Jika CLSID memiliki satu atau beberapa subkunci AuxUserType yang terdaftar di bawah HKCR\CLSID\{clsid}\AuxUserType, tentukan setiap entri AuxUserType menggunakan HKCR\CLSID\{clsid}\AuxUserType\xxx\LocalizedString.

Membuat Sumber Daya untuk Program Penghapusan Instalasi

Untuk mendaftarkan program penghapusan instalasi untuk aplikasi, Anda dapat membuat nilai registri di subkunci pengidentifikasi unik untuk aplikasi di bawah kunci registri HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall. Nilai yang akan diatur meliputi: DisplayName, DisplayVersion, Publisher, ProductID, RegOwner, RegCompany, UrlInfoAbout, HelpTelephone, HelpLink, InstallLocation, InstallSource, InstallDate, Contact, Comments, DisplayIcon, Readme, UrlUpdateInfo.

Catatan

Untuk mengaktifkan teknologi MUI untuk setiap nilai, Anda dapat menambahkan "_Localized" ke nama nilai.

 

Komponen sistem operasi diperlukan untuk memberikan nilai untuk DisplayName_Localized dengan cara khusus MUI. Anda harus menempatkan nama tampilan di DLL, seperti Res.dll, sebagai sumber daya string, dengan asumsi pengidentifikasi menjadi 1245. Kemudian aplikasi dapat mendaftarkan nama tampilan sebagai DisplayName_Localized dengan nilai "@\res.DLL,-1245". Semua pengaturan registri lainnya harus dipertahankan apa adanya, termasuk nilai asli untuk DisplayName.

Membuat Sumber Daya untuk Peristiwa Suara

Windows mengaitkan peristiwa tertentu dengan file suara, misalnya, peristiwa Pemberitahuan Email Baru atau peristiwa Alarm Baterai Kritis. Nama peristiwa harus ditampilkan oleh antarmuka pengguna dan harus mendukung globalisasi. Oleh karena itu, Anda harus menerapkan sumber daya string yang dapat dilokalkan untuk deskripsi setiap deskripsi peristiwa. Tambahkan nilai registri baru untuk setiap nama peristiwa, selain nilai default yang dikodekan secara permanen.

Lakukan hal berikut untuk mengaktifkan peristiwa suara:

  1. Terapkan deskripsi sebagai sumber daya string yang dapat dilokalkan.
  2. Tambahkan nilai registri baru untuk nama tampilan, selain nilai default yang dikodekan secara permanen. Tata letak registri terkait ditunjukkan di bawah ini:
HKCR\AppEvents\EventLabels
<event_name>
    (Default) REG_SZ "<description>"
    DispFileName REG_EXPAND_SZ "@<path>,-<resID>"

Jika shell tidak dapat menemukan atau mengambil nilai DispFileName, shell akan menggunakan deskripsi default.

Membuat Sumber Daya untuk String Tata Letak Keyboard

Jika aplikasi Anda menerapkan tata letak keyboard, aplikasi memerlukan sumber daya string yang dapat dilokalkan untuk nama tata letak untuk tampilan layar, misalnya, dalam daftar tata letak keyboard. Setiap tata letak keyboard memiliki kunci registri di bawah HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts.

Di antara nilai untuk kunci tersebut adalah Layout Text, nama yang dapat dibaca manusia untuk kompatibilitas mundur, dan Layout Display Name. Data yang disediakan untuk Layout Display Name harus menjadi referensi string formulir @<path>,-resID, mengacu pada sumber daya string yang dapat dilokalisasi yang terkait dengan tata letak keyboard.

Berikut adalah contoh pengaturan registri untuk tata letak keyboard Spanyol:

HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\
0000040a
    Layout Text REG_SZ "Spanish"
    Layout Display Name REG_EXPAND_SZ "@%SystemRoot%\system32\input.dll,-5020"

Mewakili OLE Sisipkan String Dialog Umum Objek

Anda dapat menerapkan nama tampilan objek yang dapat disisipkan OLE sebagai sumber daya string yang dapat dilokalkan yang terkait dengan kode yang mengimplementasikan objek tersebut. Kotak dialog Sisipkan Objek OLE mendapatkan nama tampilan dari kunci registri HKCR\CLSID\{<GUID}, di mana GUID> mengidentifikasi pengidentifikasi kelas objek OLE yang dapat disisipkan. Windows Vista dan yang lebih baru mengimplementasikan jenis objek ini dengan cara yang dapat dilokalkan, menggunakan nama tampilan yang sesuai dengan MUI yang memungkinkan penyesuaian ke bahasa antarmuka pengguna. Sebaliknya, sistem operasi Pra-Windows Vista menerapkan nama tampilan untuk jenis objek ini menggunakan nilai default kunci registri yang sesuai. Biasanya nama ini adalah nama bahasa Inggris (Amerika Serikat) atau nama dalam bahasa UI default sistem.

Catatan

Tidak semua objek yang sesuai dengan subkuntang kunci registri dapat disisipkan.

 

Nilai default kunci HKCR\CLSID\{<GUID>} harus mempertahankan nama yang dapat dibaca manusia untuk kompatibilitas mundur. Namun, itu juga harus menentukan nilai LocalizedString, dalam format "@<path>,-ResID", di mana jalur mengidentifikasi file yang dapat dieksekusi yang mengimplementasikan objek. Nilai ResID menentukan pengidentifikasi sumber daya string yang dapat dilokalkan untuk nama tampilan.

Misalnya, skrip pendaftaran untuk objek Klip Media yang dapat disisipkan mencakup baris berikut:

HKCR,"CLSID\%CLSID_Media_Clip%",,,"%default description%"
HKCR,"CLSID\%CLSID_Media_Clip%","LocalizedString",,"@%systemroot%\system32\mplay32.exe,-9217"

Baris pertama memberikan kompatibilitas mundur dengan menempatkan string teks sederhana di registri sebagai nama tampilan default. Baris kedua menyediakan akses ke nama tampilan yang sesuai dengan MUI. Ini menunjukkan pengidentifikasi string yang disimpan di Mplay32.exe. String dengan pengidentifikasi 9217 di Mplay32.exe dapat dikaitkan dengan nilai sumber daya string untuk sejumlah bahasa. Nama bahasa Inggrisnya (Amerika Serikat) adalah "Media Clip".

Membuat Sumber Daya String untuk Snap-In Konsol Manajemen Microsoft

Anda harus membuat sumber daya string yang dapat dilokalkan untuk setiap snap-in Microsoft Management Console (MMC) yang digunakan oleh aplikasi MUI Anda. Karena snap-in adalah bagian dari konsol, snap-in memiliki antarmuka pengguna dan harus di globalisasi untuk beroperasi dalam lebih dari satu bahasa.

Sebagian besar, snap-in MMC meningkatkan masalah globalisasi dan pelokalan yang sama dengan aplikasi MUI itu sendiri. Snap-in MMC harus mencerminkan namanya di registri untuk ditampilkan. Entri registri harus menyertakan referensi tidak langsung ke sumber daya string yang dapat dilokalkan dan string harfiah untuk kompatibilitas mundur.

Setiap snap-in MMC memiliki kunci registri di bawah HKEY_LOCAL_MACHINE\Software\Microsoft\MMC\SnapIns. Di antara nilai untuk kunci tersebut adalah NameString, menentukan nama yang dapat dibaca manusia untuk kompatibilitas mundur, dan NameStringIndirect, menentukan referensi tidak langsung ke sumber daya string yang dapat dilokalisasi. Untuk NameStringIndirect, Anda harus memberikan referensi string formulir "@<path>,-resID", mewakili sumber daya string yang dapat dilokalkan.

Misalnya, Anda mungkin membuat pengaturan berikut untuk Mymmc.dll, di mana 12345 adalah pengidentifikasi sumber daya string yang sesuai yang berisi nama snap-in yang dapat dilokalkan:

NameStringIndirect=@%systemroot%@c:\windir\system32\mymmc.dll,-12345

Beberapa snap-in mendaftarkan nilai string registri lain yang tidak dibaca MMC dari registri. Untuk informasi selengkapnya tentang menggunakan nilai-nilai ini, lihat Mendaftarkan String Snap-In Konsol Manajemen Microsoft yang Tidak Dibaca dari Registri di Menemukan String yang Dialihkan.

Membuat Sumber Daya String untuk Layanan Windows

Meskipun layanan Windows biasanya memiliki sedikit atau tanpa antarmuka pengguna, layanan tersebut harus menampilkan nama yang mematuhi MUI dan biasanya memberikan deskripsi khusus bahasa yang sesuai dengan MUI. Kunci registri yang menjelaskan layanan Windows hanya mendukung nilai DisplayName untuk nama layanan dan nilai Deskripsi untuk deskripsi layanan.

Pengaturan untuk layanan Windows dibuat dari aplikasi, seperti yang dijelaskan dalam Mengatur Nama Tampilan dan Deskripsi untuk Layanan Windows dari Registri di Menemukan String yang Dialihkan. Jika aplikasi Anda tidak mengatur nilai registri untuk antarmuka pengguna layanan, nilai dalam registri tetap diatur ke bahasa Inggris, bahkan jika antarmuka pengguna dalam bahasa lain.

Menyiapkan Sumber Daya

Menemukan String yang Dialihkan