Principy lokalizace pomocí technologie ASP.NET AJAX
Lokalizace je proces návrhu a integrace podpory konkrétního jazyka a jazykové verze do aplikace nebo komponenty aplikace. Platforma Microsoft ASP.NET poskytuje rozsáhlou podporu lokalizace pro standardní aplikace ASP.NET integrací standardního lokalizačního modelu .NET. Rozhraní Microsoft AJAX framework využívá integrovaný model pro podporu různých scénářů, ve kterých lze provést lokalizaci.
Úvod
Technologie ASP.NET od Microsoftu přináší objektově orientovaný programovací model řízený událostmi a spojuje ho s výhodami zkompilovaného kódu. Model zpracování na straně serveru má však několik nevýhod spojených s technologií, z nichž mnohé lze vyřešit pomocí nových funkcí zahrnutých v oboru názvů System.Web.Extensions, který zapouzdřuje služby Microsoft AJAX v rozhraní .NET Framework 3.5. Tato rozšíření umožňují mnoho bohatých klientských funkcí, které byly dříve k dispozici jako součást rozšíření ASP.NET 2.0 AJAX, ale nyní jsou součástí knihovny základních tříd rozhraní. Ovládací prvky a funkce v tomto oboru názvů zahrnují částečné vykreslování stránek bez nutnosti aktualizace celé stránky, možnost přístupu k webovým službám prostřednictvím klientského skriptu (včetně rozhraní API pro profilaci ASP.NET) a rozsáhlé rozhraní API na straně klienta navržené tak, aby zrcadlily mnoho schémat ovládacích prvků, která se zobrazují v ASP.NET sadě ovládacích prvků na straně serveru.
Tento dokument white paper zkoumá lokalizační funkce v rozhraní Microsoft AJAX Framework a Knihovně skriptů Microsoft AJAX v kontextu obchodní potřeby podpory lokalizace a kontroly již integrované podpory lokalizace ve webových aplikacích poskytovaných rozhraním .NET Framework. Knihovna skriptů Microsoft AJAX využívá formát souboru .resx, který již používají aplikace .NET, který poskytuje integrovanou podporu integrovaného vývojového prostředí (IDE) a typ prostředku, který lze sdílet.
Tento dokument white paper je založený na verzi Beta 2 sady Microsoft Visual Studio 2008. Tento dokument white paper také předpokládá, že budete pracovat se sadou Visual Studio 2008, nikoli se sadou Visual Web Developer Express, a poskytnete návody podle uživatelského rozhraní sady Visual Studio. Některé ukázky kódu budou využívat šablony projektů, které můžou být ve Visual Web Developer Express nedostupné.
Potřeba lokalizace
Zejména pro vývojáře podnikových aplikací a vývojáře komponent je schopnost vytvářet nástroje, které si můžou uvědomovat rozdíly mezi jazykovými verzemi a jazyky, stále důležitější. Navrhování komponent se schopností přizpůsobit se národnímu prostředí klienta zvyšuje produktivitu vývojářů a snižuje množství práce potřebné k přizpůsobení součásti tak, aby fungovala globálně.
Lokalizace je proces návrhu a integrace podpory konkrétního jazyka a jazykové verze do aplikace nebo komponenty aplikace. Platforma Microsoft ASP.NET poskytuje rozsáhlou podporu lokalizace pro standardní aplikace ASP.NET integrací standardního lokalizačního modelu .NET. Rozhraní Microsoft AJAX framework využívá integrovaný model pro podporu různých scénářů, ve kterých lze provést lokalizaci. S rozhraním Microsoft AJAX Framework mohou být skripty lokalizovány buď nasazením do satelitních sestavení, nebo použitím struktury statického systému souborů.
Vkládání skriptů pomocí satelitních sestavení
V souladu se standardní strategií lokalizace rozhraní .NET Framework mohou být prostředky zahrnuty do satelitních sestavení. Satelitní sestavení poskytují oproti tradičnímu zahrnutí prostředků do binárních souborů několik výhod – libovolnou lokalizaci lze aktualizovat bez aktualizace větší bitové kopie, další lokalizace lze nasadit jednoduše instalací satelitních sestavení do složky projektu a satelitní sestavení lze nasadit bez opětovného načtení sestavení hlavního projektu. Zejména v ASP.NET projektech je to výhodné, protože může výrazně snížit množství systémových prostředků využívaných přírůstkových aktualizací a minimálně narušit využití produkčních webů.
Skripty jsou vloženy do sestavení jejich zahrnutím do spravovaných souborů .resx (nebo kompilovaných .resources), které jsou zahrnuty do sestavení v době kompilace. Jejich prostředky jsou pak zpřístupněny skriptovací aplikaci prostřednictvím kódu generovaného modulem runtime AJAX, prostřednictvím atributů na úrovni sestavení.
Zásady vytváření názvů pro soubory vložených skriptů
Správa skriptů Rozhraní Microsoft AJAX podporuje různé možnosti použití při nasazování a testování skriptů a jsou k dispozici pokyny, které tyto možnosti usnadňují.
Pro usnadnění ladění:
Skripty vydané verze (produkční) by neměly v názvu souboru obsahovat .debug
kvalifikátor. Skripty navržené pro ladění by měly v názvu souboru obsahovat .debug
.
Pro usnadnění lokalizace:
Skripty neutrální jazykové verze by neměly v názvu souboru obsahovat žádný identifikátor jazykové verze. Pro skripty, které obsahují lokalizované prostředky, by měl být kód jazyka ISO zadán v názvu souboru. Například es-CO
znamená španělština, Kolumbie.
Následující tabulka shrnuje zásady vytváření názvů souborů s příklady:
Název_souboru | Význam |
---|---|
Script.js | Skript neutrální pro jazykovou verzi vydané verze. |
Script.debug.js | Skript neutrální pro jazykovou verzi ladění. |
Script.en-US.js | Anglická verze verze USA skript. |
Script.debug.es-CO.js | Ladicí verze španělského skriptu v Kolumbii. |
Návod: Vytvoření lokalizovaného vloženého skriptu
Poznámka: Tento návod vyžaduje použití sady Visual Studio 2008, protože Visual Web Developer Express neobsahuje šablonu projektu pro projekty knihovny tříd.
- Vytvořte nový projekt webu s integrovanými rozšířeními ASP.NET AJAX. V rámci řešení s názvem LocalizingResources vytvořte další projekt, projekt knihovny tříd.
- Do projektu LocalizingResources přidejte soubor JScript s názvem VerifyDeletion.js a také soubory prostředků .resx s názvem DeletionResources.resx a DeletionResources.es.resx. První bude obsahovat zdroje neutrální z jazykové verze; ty budou obsahovat zdroje pro španělštinu.
- Do VerifyDeletion.js přidejte následující kód:
function VerifyDeletion(fileName)
{
if (confirm(Message.VerifyDelete.replace(/FILENAME/, fileName)))
{
Delete(fileName);
return true;
}
return false;
}
function Delete(fileName)
{
alert (Message.Deleted.replace(/FILENAME/, fileName));
}
Pro uživatele, kteří syntaxi regulárního výrazu JavaScriptu neznají, text v rámci jednoduchých lomítek (v předchozím příkladu je například /FILENAME/) označuje objekt RegExp. Knihovna MSDN obsahuje rozsáhlý javascriptový odkaz a zdroje informací o nativních objektech JavaScriptu najdete online.
Do souboru DeletionResources.resx přidejte následující řetězce prostředků:
VerifyDelete: Opravdu chcete odstranit NÁZEV SOUBORU?
Odstraněno: Název souboru byl odstraněn.
Do souboru DeletionResources.es.resx přidejte následující řetězce prostředků:
VerifyDelete: Est seguro que desee quitar FILENAME?
Odstraněno: FILENAME se ha quitado.
Do souboru AssemblyInfo přidejte následující řádky kódu:
[assembly: System.Web.UI.WebResource("LocalizingResources.VerifyDeletion.js",
"text/javascript")]
[assembly: System.Web.UI.ScriptResource("LocalizingResources.VerifyDeletion.js",
"LocalizingResources.DeletionResources", "Message")]
- Přidejte odkazy na System.Web a System.Web.Extensions do projektu LocalizingResources.
- Přidejte odkaz na projekt LocalizingResources z projektu webu.
- V souboru default.aspx v projektu webu aktualizujte ovládací prvek ScriptManager následujícím dalším kódem:
<asp:ScriptManager ID="ScriptManager1" runat="server" EnableScriptLocalization="true">
<Scripts>
<asp:ScriptReference Assembly="LocalizingResources" Name="LocalizingResources.VerifyDeletion.js"/>
</Scripts>
</asp:ScriptManager>
- V souboru default.aspx uveďte kdekoli na stránce tento kód:
<asp:Button ID="btnDelete" runat="Server" OnClientClick="VerifyDeletion('a.txt');" Text="Delete" />
- Stiskněte klávesu F5. Pokud se zobrazí výzva, povolte ladění. Po načtení stránky stiskněte tlačítko Odstranit. Všimněte si, že se zobrazí výzva k potvrzení v angličtině (pokud není váš počítač ve výchozím nastavení nastavený tak, aby upřednostňoval španělské jazykové prostředky).
- Zavřete okno prohlížeče a vraťte se do souboru default.aspx. V direktivě @Page header nahraďte auto jako Culture a UICulture za es-ES. Opětovným stisknutím klávesy F5 znovu spusťte webovou aplikaci v prohlížeči. Tentokrát si všimněte, že se zobrazí výzva k odstranění souboru ve španělštině:
(Kliknutím zobrazíte obrázek v plné velikosti.)
(Kliknutím zobrazíte obrázek v plné velikosti.)
Všimněte si, že pro tento názorný postup existuje několik variant. Například skripty mohou být registrovány pomocí ovládacího prvku ScriptManager programově během načítání stránky.
Zahrnutí struktury souboru statického skriptu
Při použití souborů statických skriptů pro nasazení ztratíte některé výhody použití vlastního lokalizačního schématu .NET. Primárně viditelné je, že ztratíte automatický typ vygenerovaný ze zahrnutí souborů prostředků skriptu; ve výše uvedeném návodu byly například prostředky zpřístupněny automaticky generovaným typem s názvem Message z ovládacího prvku ScriptManager.
Použití struktury souborů statických skriptů má ale určité výhody. Aktualizace lze provést bez opětovného zkompilování a opětovného nasazení satelitních sestavení a pomocí statické struktury souborů lze také přepsat vložený skript, aby se integrovala menší část funkce, která nemusela být dodána s komponentou.
Microsoft doporučuje vyhnout se problémům se správou verzí automatickým generováním prostředků skriptu během kompilace projektu. Při údržbě rozsáhlého základu kódu skriptu může být stále obtížnější zajistit, aby se změny kódu projevily v každém lokalizovaného skriptu. Alternativně můžete jednoduše udržovat jeden skript logiky a několik lokalizačních skriptů a slučovat soubory při sestavování projektu.
Vzhledem k tomu, že neexistují prostředky k deklarativnímu zahrnutí, statické soubory skriptů by měly být odkazovány buď přidáním <asp:ScriptElement>
prvků jako podřízenou <Scripts>
značkou ovládacího prvku ScriptManager, nebo programovým přidáním ScriptReference
objektů do Scripts
vlastnosti ScriptManager
ovládacího prvku na stránce za běhu.
ScriptManager a jeho role v lokalizaci
Správce skriptů umožňuje pro lokalizované aplikace několik automatických chování:
- Automaticky vyhledá soubory skriptů na základě nastavení a zásad vytváření názvů; například načítá skripty s povoleným laděním v režimu ladění a načítá lokalizované skripty na základě výběru uživatelského rozhraní prohlížeče.
- Umožňuje definici jazykových verzí, včetně vlastních jazykových verzí.
- Umožňuje kompresi souborů skriptu přes HTTP.
- Ukládá skripty do mezipaměti, aby bylo možné efektivně spravovat mnoho požadavků.
- Přidává do skriptů vrstvu indirectionu tím, že je propojí přes šifrovanou adresu URL.
Odkazy na skripty lze přidat do ovládacího prvku ScriptManager buď programově, nebo deklarativním kódem. Deklarativní značky jsou užitečné zejména při práci se skripty vloženými do jiných sestavení než samotného webového projektu, protože název skriptu se při prosílách revizí pravděpodobně nezmění.
Souhrn
S tím, jak se webové aplikace rozrůstají, aby oslovily větší cílovou skupinu, stává se potřeba mít přístup k širším kulturám a komunitám jádrem obchodního modelu. Webové aplikace elektronického obchodování musí být schopné pracovat s cizími měnami, systémy správy obsahu musí být schopny nejen prezentovat svůj obsah, ale také jejich navigační rady a pole formulářů v jiných jazycích a společnosti potřebují vědět, že tato potřeba je přístupná.
Rozhraní .NET Framework vnitřně podporuje bohatou lokalizační architekturu a využívá satelitní sestavení a soubory prostředků XML (.resx) k vytvoření jednotného způsobu vyhledávání řetězců prostředků a obrázků. Rozšíření ASP.NET AJAX, včetně rozhraní Microsoft AJAX Framework a Knihovny skriptů Microsoft AJAX, poskytují podporu pro tento programovací model v kódu na straně klienta a umožňují snadné vyhledávání řetězců prostředků. Satelitní sestavení podporují automatické zahrnutí prostředků skriptu (skutečných souborů .js) prostřednictvím ScriptResource.axd, pokud názvy souborů dodržují dané schéma pojmenování. Díky této podpoře rozšíření ASP.NET AJAX zjednodušuje lokalizaci skriptů a globalizaci aplikací.
Životopis
Scott Cate pracuje s webovými technologiemi microsoftu od roku 1997 a je prezidentem myKB.com (www.myKB.com), kde se specializuje na psaní ASP.NET aplikací zaměřených na softwarová řešení znalostní báze Knowledge Base. Scotta můžete kontaktovat e-mailem na adrese scott.cate@myKB.com nebo na jeho blogu na ScottCate.com