Aracılığıyla paylaş


Kayıt Kütüğü Dizesi Yeniden Yönlendirmeyi Kullanma

Sabit kodlanmış dizelerin kayıt defterinde depolanması, Windows Vista öncesi yerelleştirme modelinin bir parçasıdır. MUI tarafından desteklenmez. Geçerli modelde, işletim sisteminin kullanıcı arabirimi dile özgü kaynak dosyalarında, dilden bağımsız bir tabanın üzerinde çalışır. İşletim sisteminin bileşenleri, kayıt defterini dilden bağımsız bir şekilde kullanır.

MUI yalnızca temel dil kaynak dosyasında Win32 PE kaynakları tarafından tanımlanan yeniden yönlendirilmiş kayıt defteri dizelerini kullanır. Yeniden yönlendirme, örneğin bir .inf dosyasında ayrı olarak tanımlanır. Bu depolama türü, kaynak yükleyicinin kaynak modülü yüklenirken doğru dil kaynaklarını otomatik olarak seçmesine olanak tanır.

Not

Bu konu yalnızca Win32 PE kaynaklarıyla ilgili. Win32 PE dışı kaynaklar kullanıyorsanız, gerekirse özelleştirilmiş kayıt defteri dizesi yeniden yönlendirmesi sağlamanız gerekir.

 

Language-Neutral Kaynağı Oluştur

Windows Vista ve sonraki sürümlerde çalışan bir MUI uygulaması, bir dize kaynak tablosunda depolanan dile özgü dizelere erişim sağlamak için dilden bağımsız bir dize kaynağı kullanır. Bu değerleri kayıt defterinden okuyan uygulama kodu, Yeniden Yönlendirilen Dizeleri Bulmave Language-Neutral Kayıt Defteri Değeri Yükleme bölümünde açıklanmıştır.

Dilden bağımsız kayıt defteri değerinin verileri "@<PE-path>,-<stringID>[;<comment>]" biçimindedir; burada:

  • PE-path yürütülebilir dosyanın yolunu belirtir. Dağıtımı desteklemek için %ProgramFiles%gibi bir ortam değişkeni kullanarak yolu belirtebilirsiniz. Dize referansınızı oluşturmanın bir alternatifi, dosya yolu bilgilerini hariç tutmaktır. Bu durumda, uygulamanızın kendi yükleme dizinini iletmek için başka bir kayıt defteri değeri gibi bazı araçları olmalıdır.
  • stringID , diğer yerelleştirilebilir dize kaynakları gibi uygulanan ilgili dize kaynağının sayısal kaynak tanımlayıcısını belirtir.
  • comment kayıt defteri değerinin hata ayıklaması veya okunabilirliği için isteğe bağlı bilgileri belirtir. Kayıt defteri API'sinin işlevleri, dizeyi yüklerken açıklamayı yoksayar.

Not

Kayıt defteri değerinin verileri dile özgü kaynak dosyasına açık bir başvuru yapmaz. Geçerli kullanıcı arabirimi dil tercihlerine göre çalışma zamanında doğru dosya belirlenir.

 

"," ve "-" arasında boşluk olmadan bir kayıt defteri değeri girilir. Doğru kayıt defteri değeri:

shell32.dll,-22912

Yanlış kayıt defteri değeri:

shell32.dll, -22912

Windows Vista'dan örnek olarak aşağıdaki verileri içeren kayıt defteri değeri gösteriliyor:

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

Kısayol Dizeleri için Kaynak Oluşturma

MUI uygulaması kullanıcı arabiriminde shell adını görüntülediğinde, uygulama simgesi için bir Bilgi İpucu dizesi görüntülenir. Desteklenen her dil için uygulamanızın görünen adı ve ilişkili Bilgi İpucu dizesi için dize kaynakları oluşturmanız gerekir. Kaynaklar hazır olduğunda, uygulamanız Yeniden Yönlendirilen Dizeleri Bulma'nınKayıt Defteri'nden Kısayol Dizelerini Yüklemek için API Kullanma Shell bölümünde açıklandığı gibi dizeleri kullanabilir.

Windows Installer ile Oluşturulan Kısayol için Kaynakları Hazırlama

Kısayol oluşturmak için Windows Installer (MSI) kullanıyorsanız, dize kaynakları kısayol görünen adını ve açıklamasını içerir. MSI kısayol tablosunda uygun sütunlarda kaynak DLL'sine başvurulur ve ilgili kaynak tanımlayıcı sütunlarında kısayol görünen adınız ve açıklamanız için kaynak tanımlayıcıları kullanılır.

Uygulama kısayolunun MUI kaynak teknolojisiyle düzgün çalışması için, kısayol dizelerini hazırlarken aşağıdaki noktaları göz önünde bulundurun:

  • DLL'yi kaydetmek için ortam değişkenlerini veya göreli yolu kullanın. Kayıt defteri dize türü REG_EXPAND_SZ olduğu sürece @%systemroot%\system32\shell32.dll belirtebilirsiniz. Shell32.dll'daki "Metin Belgesi" için dize kaynak tanımlayıcısı 12345'tir.
  • "," ve "-" simgelerinin çevresinde boşluk kullanmayın. Doğru örnek: "shell32.dll,-22912".
  • Kısa bir dosya adı kullanmayın. Bu ad türü kaynak yükleyicide çalışmaz.

INF Biçimini Kullanarak Kaynakları Kısayola Hazırlama

Kısayol dizeleri oluşturmak için INF dosya biçimini kullanırsanız, kaynak dosyası aşağıdaki kayıt defteri ayarlarını yapmalıdır. Bu yönergelerde, Kurulum API'sinin ProfileItems söz diziminin kullanıldığı varsayılır.

  1. Yol ve kaynak tanımlayıcısını kullanarak Bilgi İpucu değerini dizenin yeniden yönlendirme referansına işaret edecek şekilde değiştirin.
  2. ProfileItems yükleme bölümlerinin altına yeni DisplayResource değerini ekleyin.

Aşağıda Hesap Makinesi uygulamasının Başlangıç menüsüne eklenmesini gösteren bir örnek verilmiştir:

[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

Başlat menüsüne bir Erişim Grubu klasörü gibi öğeler eklemek için INF kullanırken aşağıda gösterilen söz dizimini kullanın. Bu söz diziminde, Syssetup.inf dosyasında kullanılan söz dizimine benzer şekilde Kurulum'dan [StartMenuItems] desteğinin kullanıldığı varsayılır.

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

bilgi ipucu değerini "@<path>,-resID" dize başvurusuna ayarlayın.

Görünen ad, resDLL ve resID değerleri tarafından belirlenir. resID değeri, dilden bağımsız dosyayla ilişkilendirilmiş bir dize kaynağının kaynak tanımlayıcısını belirtir. resDLL değeri, dilden bağımsız dosyanın yolunu belirtir.

Kullanıcı Dostu Belge Türü Adları için Kaynak Oluşturma

Uygulamanız için kolay ad ve Bilgi İpucu dizelerini dize kaynakları olarak uygulamanız gerekir. Kolay belge türü adlarının kullanıcı arabirimi diline tepki vermesine izin vermek için, uygulamanın dosya türü için program tanımlayıcı anahtarı altındaki FriendlyTypeName değerini kullanarak adları kaydetmesi gerekir. Geriye dönük uyumluluğu korumak için program tanımlayıcı anahtarı için varsayılan değer korunmalıdır. Uygulamanızdan adlara erişme hakkında bilgi için, yeniden yönlendirilen dizeleri bulma kayıt defteri bölümündeki Sorgu Dostu Belge Türü Adları bölümüne bakın.

Belirli bir çalışma aşağıdaki adımları içerir:

  1. Kolay ad ve Bilgi İpucu dizelerini dile özgü dize kaynakları olarak uygulayın.
  2. Belge türü kayıt defteri anahtarının altına FriendlyTypeName değerini ekleyin. Değerin verileri "@<path>,-<resID>" desenini izler; burada yol yürütülebilir dosyayı gösterir ve resID bu yürütülebilir dosyayla ilişkilendirilmiş yerelleştirilebilir dize kaynağının kaynak tanımlayıcısıdır.
  3. InfoTip kayıt defteri değerini "@<path>,-<resID>" biçimine göre belirtin.

Aşağıdaki örnekte, .txt dosyasının kayıt defteri ayarları gösterilmektedir:

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

HKCR\txtfile
@="Text Document"

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

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

Eylem Dizeleri için ShellVerb Kaynak Sağlama

Kullanıcı Windows Gezgini'nde bir dosyaya sağ tıkladığında görüntülenen açılır menüde "open" ve "edit" gibi belirli fiiller için eylem dizeleri gösterilir. Uygulamanızın yaygın shell fiiller için dizeler belirtmesi gerekmez, bu shell fiiller için kendi MUI özellikli varsayılanları vardır. Ancak, yaygın olmayan fiilleri temsil eden dizeler için yerelleştirilebilir dize kaynakları sağlamanız gerekir.

Windows XP öncesi işletim sistemlerinde, kayıt defterindeki shell fiillerine ait dizeler, gerçek verb adını belirten verb söz dizimini kullanarak işlenir.

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

İşte bir örnek:

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

Windows XP ve sonraki sürümlerde, bir eylem dizesinin kullanıcı arabirimi diline bağlı olmasını sağlamak için bir dolaylılık düzeyi kullanabilirsiniz. Bu işletim sistemleri, MUI uyumlu bir dizenin tanımı için BIR MUIVerb değerini destekler. Aşağıda, yaygın olmayan bir kayıt defteri girdisi örneği verilmiştir verb:

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

MUI uygulamanız, aşağıda gösterildiği gibi eski varsayılan değeri yerelleştirilebilir bir dize olarak da kaydedebilmelidir:

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

Not

Eski varsayılan değerin kaydı önerilmez çünkü Windows XP'de ve daha sonraki sürümlerde önceki işletim sistemlerinde kullanılan kurulumdan farklı bir kurulum gerektirir.

 

Verb, Protocol ve AuxUserType Dizeleri için Kaynaklar Oluşturma

, Protocol, ve AuxUserType dizeleri için Verbyerelleştirilebilir dize kaynakları oluşturmanız gerekir. Aşağıdaki kayıt defteri ayarlarını kullanın:

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"
...

LocalizedString için belirtilen değer, iki bayrak değerini değil, yalnızca Your Verb için değeri içerir veya değiştirir.

Doğru kayıt defteri ayarlarını sağlamanıza yardımcı olacak bir özet aşağıdadır:

  • CLSID'nin HKCR\CLSID\{clsid}\Insertable anahtarı varsa, HKCR\CLSID\{clsid}\LocalizedString kullanarak varsayılan CLSID değerini tanımlayın.
  • CLSID'nin HKCR\CLSID\{clsid}\Verb altında bir veya daha fazla alt anahtarı varsa, HKCR\CLSID\{clsid}\Verb\xxx\LocalizedString kullanarak her dizeyi tek tek Verb tanımlayın.
  • CLSID'nin HKCR\{progid}\Protocol\Stdfileediting\Verb altında bir veya daha fazla alt anahtarı varsa, HKCR\{progid}\Protocol\Stdfileediting\Verb\xxx\LocalizedString kullanarak her dizeyi tek tek Verb tanımlayın.
  • CLSID'nin HKCR\CLSID\{clsid}\AuxUserType altında listelenen bir veya daha fazla AuxUserType alt anahtarı varsa, HKCR\CLSID\{clsid}\AuxUserType\xxx\LocalizedString kullanarak her AuxUserType girdisini tanımlayın.

Kaldırma Programı için Kaynak Oluşturma

Uygulamanın kaldırma programını kaydetmek için, kayıt defteri anahtarı HKEY\_LOCAL\_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstallaltında uygulamanın benzersiz tanımlayıcı alt anahtarında kayıt defteri değerleri oluşturabilirsiniz. Ayarlanacağı değerler şunlardır: DisplayName, DisplayVersion, Publisher, ProductID, RegOwner, RegCompany, UrlInfoAbout, HelpTelephone, HelpLink, InstallLocation, InstallSource, InstallDate, Contact, Comments, DisplayIcon, Readme, UrlUpdateInfo.

Not

Her değer için MUI teknolojisini etkinleştirmek için değer adına "_Localized" ekleyebilirsiniz.

 

DisplayName_Localized için işletim sistemi bileşenlerinin, MUI'ye özgü bir şekilde bir değer sağlaması gerekmektedir. Tanımlayıcının 1245 olduğu varsayılarak, görünür adı örneğin Res.dllgibi bir dize kaynağı olarak bir DLL'ye yerleştirmelisiniz. Ardından uygulama DisplayName_Localized olarak görünüm ismini "@\res.DLL,-1245" değeriyle kaydedebilir. DisplayName için özgün değer de dahil olmak üzere diğer tüm kayıt defteri ayarları olduğu gibi tutulmalıdır.

Ses Olayları için Kaynak Oluşturma

Windows, belirli olayları yeni posta bildirimi olayı veya Kritik Pil Uyarısı olayı gibi ses dosyalarıyla ilişkilendirir. Olay adları kullanıcı arabirimi tarafından görüntülenmelidir ve genelleştirmeyi desteklemelidir. Bu nedenle, her olay açıklamasının açıklaması için yerelleştirilebilir bir dize kaynağı uygulamanız gerekir. Sabit kodlanmış varsayılan değere ek olarak her olay adı için yeni bir kayıt defteri değeri ekleyin.

Ses olayını etkinleştirmek için aşağıdakileri yapın:

  1. Açıklamayı yerelleştirilebilir dize kaynağı olarak uygulayın.
  2. Sabit kodlanmış varsayılan değere ek olarak görünen ad için yeni bir kayıt defteri değeri ekleyin. İlişkili kayıt defteri düzeni aşağıda gösterilmiştir:
HKCR\AppEvents\EventLabels
<event_name>
    (Default) REG_SZ "<description>"
    DispFileName REG_EXPAND_SZ "@<path>,-<resID>"

shell DispFileName değerini bulamazsa veya alamazsa, varsayılan açıklamayı kullanır.

Klavye Düzeni Dizeleri için Kaynak Oluşturma

Uygulamanız bir klavye düzeni uyguluyorsa, örneğin klavye düzenleri listelerinde ekran görüntüsü düzeninin adı için yerelleştirilebilir bir dize kaynağı gerektirir. Her klavye düzeninin HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layoutsaltında bir kayıt defteri anahtarı vardır.

Bu anahtarın değerleri arasında Layout Text, geriye dönük uyumluluk için okunabilir bir ad ve Layout Display Namevardır. Layout Display Name için sağlanan veriler, klavye düzeniyle ilişkilendirilmiş yerelleştirilebilir bir dize kaynağına başvuran @<path>,-resIDformatında bir dize referansı olmalıdır.

İspanyolca klavye düzeniiçin bir kayıt defteri ayarı örneği aşağıda verilmiştir:

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

OLE Ekle Nesnesi Ortak İletişim Kutusu Dizelerini Temsil Eder

Ole eklenebilir bir nesnenin görünen adını, bu nesneyi uygulayan kodla ilişkilendirilmiş yerelleştirilebilir bir dize kaynağı olarak uygulayabilirsiniz. OLE Nesne Ekle iletişim kutusu, HKCR\CLSID\{<GUID>} kayıt defteri anahtarından bir görünen ad alır; burada GUID eklenebilir bir OLE nesnesinin sınıf tanımlayıcısını tanımlar. Windows Vista ve daha sonraki sürümler, MUI uyumlu bir görünen ad kullanarak, kullanıcı arabirimi dilinde özelleştirmeye olanak tanıyan bu nesne türünü yerelleştirilebilir bir şekilde uygular. Buna karşılık, Windows Vista öncesi işletim sistemleri ilgili kayıt defteri anahtarının varsayılan değerini kullanarak bu nesne türü için görünen adı uygular. Bu ad genellikle bir İngilizce (ABD) adı veya sistem varsayılan kullanıcı arabirimi dilindeki bir addır.

Not

Kayıt defteri anahtarının alt anahtarlarına karşılık gelen tüm nesneler eklenebilir değildir.

 

HKCR\CLSID\{<GUID>} anahtarının varsayılan değeri geriye dönük uyumluluk için okunabilir bir ad içermelidir. Ancak LocalizedString değerini de "@<path>,-ResID" biçiminde tanımlamalıdır; burada yol, nesneyi uygulayan yürütülebilir dosyayı tanımlar. ResID değeri, görünen ad için yerelleştirilebilir dizenin kaynak tanımlayıcısını belirtir.

Örneğin, eklenebilir Media Clip nesnesinin kayıt betiği aşağıdaki satırları içerir:

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

İlk satır, kayıt defterine varsayılan görünen ad olarak basit bir metin dizesi yerleştirerek geriye dönük uyumluluk sağlar. İkinci satır, MUI ile uyumlu görünüm adına erişim sağlar. Mplay32.exeiçinde depolanan dize tanımlayıcısını gösterir. Mplay32.exe'da 9217 tanımlayıcısı olan dize, herhangi bir sayıda dilin dize kaynak değerleriyle ilişkilendirilebilir. İngilizce (ABD) adı "Media Clip" şeklindedir.

Microsoft Yönetim Konsolu Snap-Ins için Dize Kaynakları Oluşturma

MUI uygulamanız tarafından kullanılan her Microsoft Yönetim Konsolu (MMC) ek bileşeni için yerelleştirilebilir bir dize kaynağı oluşturmanız gerekir. Ek bileşen bir konsolun parçası olduğundan, bir kullanıcı arabirimine sahiptir ve birden fazla dilde çalışacak şekilde genelleştirilmesi gerekir.

Çoğunlukla MMC ek bileşenleri, MUI uygulamasının kendisiyle aynı genelleştirme ve yerelleştirme sorunlarını oluşturur. MMC ek bileşeninin (snap-in), görüntülenmesi için kayıt defterindeki adını yansıtması gerekir. Kayıt defteri girdisi hem yerelleştirilebilir bir dize kaynağına dolaylı başvuru hem de geriye dönük uyumluluk için sabit bir dize içermelidir.

Her MMC ek bileşeninin altında HKEY\_LOCAL\_MACHINE\\Software\\Microsoft\\MMC\\SnapInsbir kayıt defteri anahtarı vardır. Bu anahtarın değerleri arasında geriye dönük uyumluluk için insan tarafından okunabilir bir ad belirten NameString ve yerelleştirilebilir dize kaynağına dolaylı başvuru belirten NameStringIndirect yer alır. NameStringIndirect için, yerelleştirilebilir dize kaynağını temsil eden "@<path>,-resID" formunun dize referansını sağlamanız gerekir.

Örneğin, Mymmc.dlliçin aşağıdaki ayarı yapabilirsiniz; burada 12345, araç eklentisinin yerelleştirilebilir adını içeren ilgili dize kaynağının tanımlayıcısıdır.

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

Bazı ek bileşenler MMC'nin kayıt defterinden okumadığı diğer kayıt defteri dizesi değerlerini kaydeder. Bu değerleri kullanma hakkında daha fazla bilgi için bkz. Yeniden Yönlendirilen Dizeleri Bulma bölümünde Kayıt Defterinden Okunmayan Dizeler Snap-In Microsoft Yönetim Konsolunu Kaydetme.

Windows Hizmeti için Dize Kaynakları Oluşturma

Bir Windows hizmetinin genellikle çok az kullanıcı arabirimi olsa da, MUI uyumlu bir ad görüntülemesi ve genellikle MUI uyumlu dile özgü bir açıklama sağlaması gerekir. Bir Windows hizmetini açıklayan kayıt defteri anahtarı yalnızca DisplayName hizmet adı değerini ve Description hizmet açıklaması değerini destekler.

Windows hizmeti ayarları, Yeniden Yönlendirilen Dizeleri Bulma bölümünde Kayıt Defterinden Bir Windows Hizmeti için Görünen Ad ve Açıklama ayarlama bölümünde açıklandığı gibi uygulamadan yapılır. Uygulamanız hizmet kullanıcı arabirimi için kayıt defteri değerlerini ayarlamazsa, kullanıcı arabirimi başka bir dilde olsa bile kayıt defterindeki değerler olarak kalır English.

Kaynakları Hazırlama

Yeniden Yönlendirilen Dizeleri Bulma