Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Úložiště pevně zakódovaných řetězců v registru je součástí modelu lokalizace před Windows Vista. Není podporováno MUI. V aktuálním modelu se uživatelské rozhraní operačního systému spouští v souborech prostředků specifických pro jazyk nad jazykově neutrální základnou. Komponenty operačního systému používají registr jazykově neutrálním způsobem.
Rozhraní MUI používá pouze přesměrované řetězce registru definované prostředky Win32 PE v souboru základních jazykových prostředků. Přesměrování je definováno samostatně, například v souboru INF. Tento typ úložiště umožňuje zavaděči prostředků automaticky vybrat správné jazykové prostředky během načítání modulů prostředků.
Poznámka
Toto téma se týká pouze prostředků prostředí Win32 PE. Pokud používáte jiné zdroje než Win32 PE, musíte, je-li to vyžadováno, poskytnout přizpůsobené přesměrování řetězce registru.
Vytvořte prostředek Language-Neutral
Aplikace MUI spuštěná v systému Windows Vista a novější používá jazykově neutrální řetězcový prostředek, který umožňuje přístup k jazykově specifickým řetězcům uloženým v tabulce řetězcových prostředků. Kód aplikace, který čte tyto hodnoty z registru, je popsán v části Načíst hodnotu registru Language-Neutral Vyhledání přesměrovaných řetězců.
Údaje pro hodnotu registru jazyka neutrální mají formát "@<PE-path>,-<stringID>[;<comment>]", kde:
-
PE-pathurčuje cestu spustitelného souboru. Cestu můžete zadat pomocí proměnné prostředí, například %ProgramFiles%, pro podporu nasazení. Alternativou pro vytvoření odkazu na řetězec je vynechat údaje o cestě k souboru. V takovém případě musí mít vaše aplikace nějaké prostředky, například jinou hodnotu registru, aby komunikovala s vlastním instalačním adresářem. -
stringIDurčuje číselný identifikátor příslušného řetězcového zdroje, který se implementuje stejně jako všechny ostatní lokalizovatelné řetězcové zdroje. -
commenturčuje volitelné informace pro ladění nebo čitelnost hodnoty registru. Funkce API registru při načítání řetězce ignorují komentář.
Poznámka
Data pro hodnotu registru neobsahují explicitní odkaz na soubor prostředků specifický pro jazyk. Správný soubor se určí za běhu na základě aktuálních jazykových předvoleb uživatelského rozhraní.
Hodnota registru je zadána bez mezery mezi znakem "," a "-". Správná hodnota registru je:
shell32.dll,-22912
Nesprávná hodnota registru je:
shell32.dll, -22912
Příkladem z Windows Vista je hodnota registru s následujícími daty:
@%SystemRoot%\system32\input.dll,-5020
Vytváření prostředků pro řetězcové zkratky
Když aplikace MUI zobrazí název v uživatelském shell rozhraní, zobrazí se pro ikonu aplikace řetězec InfoTip. Pro zobrazovaný název aplikace a přidružený text infotipu byste měli vytvořit řetězcové prostředky pro každý podporovaný jazyk. Jakmile jsou prostředky připravené, může vaše aplikace používat řetězce, jak je popsáno v části Použití Shell rozhraní API k načtení řetězců zástupce z registru části Lokalizace přesměrovaných řetězců.
Příprava zdrojů pro zástupce vytvořeného pomocí Windows Installeru
Pokud k vytvoření zástupce použijete Instalační službu systému Windows (MSI), prostředky řetězců obsahují zobrazovaný název a popis zástupce. Ve zkratkové tabulce MSI jsou knihovny DLL prostředků odkazovány v příslušných sloupcích a identifikátory prostředků pro zobrazovaný název a popis vašeho zástupce jsou použity ve sloupcích odpovídajících identifikátorům prostředků.
Aby zástupce aplikace správně fungoval s technologií prostředků MUI, mějte při přípravě klávesových zkratek na paměti následující body:
- K registraci knihovny DLL použijte proměnné prostředí nebo relativní cestu. Můžete zadat @%systemroot%\system32\shell32.dll, pokud je typ řetězce registru REG_EXPAND_SZ. Identifikátor prostředku řetězce "Textový dokument" v Shell32.dll je 12345.
- Nepoužívejte mezery kolem symbolů "," a "-". Správný příklad je "shell32.dll,-22912".
- Nepoužívejte krátký název souboru. Tento typ názvu nefunguje s nahrávačem prostředků.
Příprava prostředků pro použití zástupce pomocí formátu INF
Pokud k vytváření klávesových zkratek použijete formát INF, měl by soubor prostředku nastavit následující nastavení registru. Tyto pokyny předpokládají použití syntaxe ProfileItems rozhraní API pro nastavení.
- Změňte hodnotu InfoTip tak, aby ukazovala na referenci přesměrování řetězce pomocí cesty a identifikátoru prostředku.
- Do instalačních sekcí ProfileItems přidejte novou hodnotu DisplayResource.
Následuje příklad znázorňující přidání aplikace Kalkulačka do nabídky Start:
[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
Syntaxi zobrazenou níže použijte při přidávání položek do nabídky Start, například složku Access Group. Tato syntaxe předpokládá použití podpory [StartMenuItems] z instalačního programu, podobně jako syntaxe použitá v souboru Syssetup.inf.
[StartMenuItems]
<description> = <binary>,<commandline>,<iconfile>,<iconnum>,<infotip>,<resDLL,resID>
Nastavte hodnotu infotipu na odkaz na řetězec "@<path>,-resID".
Zobrazovací název je určen hodnotami resDLL a resID. Hodnota resID určuje identifikátor prostředku pro řetězcový prostředek přidružený k jazykově neutrálnímu souboru. Hodnota resDLL určuje cestu k souboru neutrálního jazyka.
Vytvořit zdroje pro přátelské názvy typů dokumentů
Musíte implementovat popisný název a řetězce informativních bublin jako zdroje pro svou aplikaci. Aby přátelské názvy typů dokumentů mohly reagovat na jazyk uživatelského rozhraní, musí aplikace zaregistrovat názvy pomocí hodnoty FriendlyTypeName pod klíčem identifikátoru programu pro typ souboru. Výchozí hodnota klíče identifikátoru programu by měla být zachována, aby se zachovala zpětná kompatibilita. Podrobné informace o přístupu k názvům z vaší aplikace naleznete v části Dotazování na přívětivé názvy dokumentů v technickém registru v sekci Vyhledání přesměrovaných řetězců.
Konkrétní práce zahrnuje následující kroky:
- Implementujte popisný název a řetězce InfoTip jako jazykově specifické řetězcové zdroje.
- Pod klíč registru typu dokumentu přidejte hodnotu FriendlyTypeName. Data pro tuto hodnotu odpovídají vzoru "
@<path>,-<resID>", kde cesta označuje spustitelný soubor a resID je identifikátor lokalizovatelného řetězce přidruženého ke spustitelnému souboru. - Zadejte hodnotu registru InfoTip podle formátu "
@<path>,-<resID>".
Následující příklad ukazuje nastavení registru pro .txt soubor:
HKCR\.txt
@="txtfile"
"Content Type"="text/plain"
HKCR\txtfile
@="Text Document"
"FriendlyTypeName" = "@%systemroot%\system32\shell32.dll,-12345"
"InfoTip" = "@%systemroot%\system32\shell32.dll,-12346"
Poskytnutí prostředků pro ShellVerb řetězce akcí
Řetězce akcí pro určitá slovesa, například "open" a "edit", se zobrazí v místní nabídce, když uživatel klikne pravým tlačítkem myši na soubor v Průzkumníku Windows. Vaše aplikace nemusí zadávat řetězce pro běžné shell příkazy, protože shell má pro tyto příkazy vlastní výchozí hodnoty s povoleným rozhraním MUI. Pro řetězce představující neobvyklé příkazy byste ale měli poskytnout lokalizovatelné prostředky řetězců.
V operačních systémech starších než Windows XP se řetězce pro shell příkazy v registru vykreslují pomocí následující syntaxe, kde verb určuje skutečný verb název:
HKCR\<progid>\shell\<verb>
@ = <friendly-name>
Tady je příklad:
HKCR\Sample.app\shell\Disc
@ = "Disconnect"
V systému Windows XP a novějších verzích můžete použít úroveň nepřímého volání, aby akční řetězec závisel na jazyce uživatelského rozhraní. Tyto operační systémy podporují hodnotu MUIVerb pro definici řetězce kompatibilního s MUI. Tady je příklad položky registru pro netypické verb:
HKCR\Sample.app\shell\Disc
@ = "Disconnect"
"MUIVerb" = "@%systemroot%\system32\sample.exe,-9875"
Aplikace MUI by také měla být schopná zaregistrovat starou výchozí hodnotu jako lokalizovatelný řetězec, jak je znázorněno níže:
HKCR\Sample.app\shell\Disc
@ = "@%systemroot%\system32\sample.exe,-9875"
Poznámka
Registrace původní výchozí hodnoty se nedoporučuje, protože vyžaduje jinou instalaci v systému Windows XP a novější než instalační program použitý v dřívějších operačních systémech.
Vytvořit prostředky pro Verb, Protocol a řetězce AuxUserType
Pro řetězce Verb, Protocol a AuxUserType byste měli vytvořit lokalizované řetězcové zdroje. Použijte následující nastavení registru:
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"
...
Hodnota zadaná pouze pro LocalizedString obsahuje nebo nahrazuje hodnotu pro Your Verb, nikoli dvě hodnoty příznaku.
Tady je souhrn, který vám pomůže zajistit správné nastavení registru:
- Pokud má CLSID HKCR\CLSID\{clsid}\Insertable key, definujte výchozí hodnotu CLSID pomocí HKCR\CLSID\{clsid}\LocalizedString.
- Pokud má CLSID jeden nebo více podklíčů v rámci HKCR\CLSID\{clsid}\Verb, definujte každý individuální Verb řetězec pomocí HKCR\CLSID\{clsid}\Verb\xxx\LocalizedString.
- Pokud má CLSID jeden nebo více podklíčů pod HKCR\{progid}\Protocol\Stdfileediting\Verb, definujte každý jednotlivý Verb řetězec pomocí HKCR\{progid}\Protocol\Stdfileediting\Verb\xxx\LocalizedString.
- Pokud má CLSID jeden nebo více podklíčů AuxUserType v rámci HKCR\CLSID\{clsid}\AuxUserType, definujte jednotlivé položky AuxUserType pomocí HKCR\CLSID\{clsid}\AuxUserType\xxx\LocalizedString.
Vytvoření prostředku pro odinstalovat program
Chcete-li zaregistrovat odinstalační program pro aplikaci, můžete vytvořit hodnoty registru v podklíči jedinečného identifikátoru pro aplikaci pod klíčem registru HKEY\_LOCAL\_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall. Mezi hodnoty, které chcete nastavit, patří: DisplayName, DisplayVersion, Publisher, ProductID, RegOwner, RegCompany, UrlInfoAbout, HelpTelephone, HelpLink, InstallLocation, InstallSource, InstallDate, Contact, , CommentsDisplayIcon, Readme, UrlUpdateInfo.
Poznámka
Pokud chcete pro každou hodnotu povolit technologii MUI, můžete k názvu hodnoty připojit "_Localized".
Součásti operačního systému jsou potřebné pro poskytnutí hodnoty pro DisplayName_Localized specifickým způsobem pro rozhraní MUI. Měli byste umístit zobrazovaný název do knihovny DLL jako řetězcový prostředek, například Res.dll, za předpokladu, že identifikátor je 1245. Aplikace pak může zobrazovaný název zaregistrovat jako DisplayName_Localized s hodnotou "@\res.DLL,-1245". Všechna ostatní nastavení registru by se měla zachovat tak, jak jsou, včetně původní hodnoty pro DisplayName.
Vytvoření prostředků pro zvukové události
Systém Windows přidruží určité události ke zvukovým souborům, například událost oznámení o nové poště nebo událost kritického alarmu baterie. Názvy událostí musí být zobrazeny uživatelským rozhraním a musí podporovat globalizaci. Proto byste měli implementovat lokalizovatelný řetězcový prostředek pro popis jednotlivých událostí. Kromě pevně zakódované výchozí hodnoty přidejte novou hodnotu registru pro každý název události.
Pokud chcete povolit zvukovou událost, postupujte takto:
- Implementujte popis jako lokalizovatelný řetězcový zdroj.
- Kromě pevně zakódované výchozí hodnoty přidejte novou hodnotu registru pro zobrazovaný název. Rozložení přidruženého registru je znázorněno níže:
HKCR\AppEvents\EventLabels
<event_name>
(Default) REG_SZ "<description>"
DispFileName REG_EXPAND_SZ "@<path>,-<resID>"
Pokud nelze shell najít nebo načíst hodnotu DispFileName, použije výchozí popis.
Vytváření prostředků pro řetězce rozložení klávesnice
Pokud vaše aplikace implementuje rozložení klávesnice, vyžaduje lokalizovatelný řetězcový prostředek pro název rozložení pro zobrazení obrazovky, například v seznamech rozložení klávesnice. Každé rozložení klávesnice má pod HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layoutsklíč registru .
Mezi hodnotami pro tento klíč jsou Layout Text, lidsky čitelný název pro zpětnou kompatibilitu a Layout Display Name. Data poskytnutá pro Layout Display Name by měla být řetězcový odkaz ve formě @<path>,-resIDodkazující na lokalizovatelný řetězcový prostředek přidružený k rozložení klávesnice.
Zde je příklad nastavení registru pro španělské rozložení klávesnice:
HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\
0000040a
Layout Text REG_SZ "Spanish"
Layout Display Name REG_EXPAND_SZ "@%SystemRoot%\system32\input.dll,-5020"
Reprezentovat běžné řetězce dialogového okna pro vložení objektu OLE
Zobrazovaný název vložitelného OLE objektu můžete implementovat jako lokalizovatelný řetězcový prostředek přidružený ke kódu, který tento objekt implementuje. Dialogové okno VLOŽIT objekt OLE získá název k zobrazení z klíče registru HKCR\CLSID\{<GUID>}, kde GUID určuje třídu vloženého objektu OLE. Windows Vista a novější implementují tento typ objektu lokalizovatelným způsobem pomocí zobrazovaného názvu kompatibilního s rozhraním MUI, který umožňuje přizpůsobení jazyka uživatelského rozhraní. Naproti tomu operační systémy pre-Windows Vista implementují zobrazovaný název pro tento typ objektu pomocí výchozí hodnoty odpovídajícího klíče registru. Obvykle se jedná o název anglického jazyka (SPOJENÉ STÁTY) nebo název ve výchozím jazyce uživatelského rozhraní systému.
Poznámka
Ne všechny objekty, které odpovídají podklíčům klíče registru, se dají vložit.
Výchozí hodnota klíče HKCR\CLSID\{<GUID>} by měla zachovat lidsky čitelný název, aby byla zachována zpětná kompatibilita. Měl by však také definovat hodnotu LocalizedString ve formátu "@<path>,-ResID", kde cesta identifikuje spustitelný soubor implementující objekt. Hodnota ResID určuje identifikátor prostředku pro lokalizovatelný řetězec zobrazovaného názvu.
Například registrační skript pro vložitelný objekt Media Clip obsahuje následující řádky:
HKCR,"CLSID\%CLSID_Media_Clip%",,,"%default description%"
HKCR,"CLSID\%CLSID_Media_Clip%","LocalizedString",,"@%systemroot%\system32\mplay32.exe,-9217"
První řádek poskytuje zpětnou kompatibilitu umístěním jednoduchého textového řetězce do registru jako výchozího zobrazovaného názvu. Druhý řádek poskytuje přístup k zobrazovanému názvu kompatibilnímu s rozhraním MUI. Označuje identifikátor řetězce uložený v Mplay32.exe. Řetězec s identifikátorem 9217 v Mplay32.exe může být přidružen k řetězcovým hodnotám prostředků pro libovolný počet jazyků. Jeho název v angličtině (Spojené státy) je "Media Clip".
Vytvoření prostředků řetězců pro konzolu Microsoft Management Console Snap-Ins
Pro každý modul snap-in konzoly MMC (Microsoft Management Console) používaný aplikací MUI byste měli vytvořit lokalizovatelný prostředek řetězce. Vzhledem k tomu, že modul snap-in je součástí konzoly, má uživatelské rozhraní a musí být globalizován, aby fungoval ve více než jednom jazyce.
Moduly snap-in konzoly MMC ve většině případů vyvolávají stejné problémy s globalizací a lokalizací jako samotná aplikace MUI. Modul snap-in konzoly MMC musí mít svůj název zobrazený v registru pro účely zobrazení. Položka registru by měla obsahovat jak nepřímý odkaz na lokalizovatelný zdroj řetězce, tak i literální řetězec pro zpětnou kompatibilitu.
Každý modul snap-in konzoly MMC má klíč registru v části HKEY\_LOCAL\_MACHINE\\Software\\Microsoft\\MMC\\SnapIns. Mezi hodnotami pro tento klíč jsou NameString, zadání čitelného jména pro zpětnou kompatibilitu a NameStringIndirect, určení nepřímého odkazu na lokalizovatelný řetězcový prostředek. V případě NameStringIndirect byste měli zadat odkaz na řetězec ve formátu "@<path>,-resID", který představuje lokalizovatelný prostředek řetězce.
Můžete například provést následující nastavení pro Mymmc.dll, kde 12345 je identifikátor odpovídajícího řetězcového prostředku obsahujícího lokalizovatelný název modulu snap-in.
NameStringIndirect=@%systemroot%@c:\windir\system32\mymmc.dll,-12345
Některé moduly snap-in registrují v registru další řetězcové hodnoty, které konzola MMC nečte. Další informace o použití těchto hodnot naleznete v tématu Registrace konzoly Microsoft Management Console Snap-In řetězce, které nejsou načteny z registru v umístění přesměrovaných řetězců.
Vytvoření řetězcových prostředků pro službu Systému Windows
Přestože služba systému Windows obvykle má malé nebo žádné uživatelské rozhraní, musí zobrazit název kompatibilní s rozhraním MUI a obvykle poskytuje popis specifický pro jazyk kompatibilní s rozhraním MUI. Klíč registru, který popisuje službu systému Windows, podporuje pouze DisplayName hodnotu názvu služby a Description hodnotu popisu služby.
Nastavení služby Systému Windows se provádí z aplikace, jak je popsáno v tématu Nastavení zobrazovaného názvu a popisu služby systému Windows z registru v umístění přesměrovaných řetězců. Pokud vaše aplikace nenastaví hodnoty registru pro uživatelské rozhraní služby, hodnoty v registru zůstanou nastavené na English, i když je uživatelské rozhraní v jiném jazyce.
Související témata