|
|
ASP.NET QuickStart Príručka
Lokalizácia
Vytvorenie webovej aplikácie, ktorá môže byť viacjazyčná, bolo jednou z priorít
ASP.NET v2.0. Ak ste použili zdrojové súbory (RESX) a ResourceManager, potrebovali
ste oddeliť lokalizačné elementy manuálne a uskutočniť Vaše vlastné načítanie zdrojov,
čo si vyžadovalo veľa úsilia a kódu. ASP.NET v2.0 značne zjednodušuje tento proces
a prináša veľké množstvo funkcii ako:
- Automatická detekcia Accept-Language HTTP request header field odosielaného prehliadačom
užívateľa
- Deklaratívne lokalizačné výrazy pre zviazanie ovládacích prvkov alebo ich vlastností
ku zdrojom
- Programový prístup ku zdrojom a ručne písaným (strongly-typed) zdrojom
- Automatická kompilácia a spojenie RESX alebo RESOURCE súborov do (runtime satellite
assemblies)
- Ďalšia dizajnová podpora (design-time support) pre vytváranie zdrojov
- Plne rozšíriteľný model, tak že RESX model môže byť úplne odložený (swapped out)
Pri vytváraní viacjazyčnej webovej aplikácie ťažíte zo zdroja na jednej stránke,
ktorý si vyžaduje omnoho menej údržby v porovnaní s jazykovo-oddeleným sídlom alebo
stránkovou štruktúrou. ASP.NET v2.0 to dosahuje poskytovaním deklaratívneho modelu
pre spracovanie zdrojov cez zdrojové výrazy. Zdrojové
výrazy sú podfunkciou súhrnných zdrojových funkcií, ktoré môžu byť považované za
dátovo-spajajúce výrazy z ASP.NET v1.0. Výrazy sú, avšak, nastavovače časovo-analyzačných
vlastností, ktoré nevyžadujú od užívateľa explicitne zavolať metódu ako je DataBind().
ASP.NET v2.0 poskytuje automatickú podporu pre zdrojové súbory (RESX alebo RESOURCE),
ktorá vyplýva zo špecifickej menovacej dohody a ktorá sídli v špecializovaných adresároch
v rámci aplikácie. Toto Vám dovoľuje pridávať zdrojové súbory bez nejakých kompilačných
krokov alebo satelitných assemblies a dovoľuje Vám poskytovať zdroje, ktoré sa môžu
uplatniť na stránke alebo aplikácii. ASP.NET využíva .NET Framework ResourceManager
pre uskutočnenie vyhľadávanie zdrojov. Tento model má veľa výhod ako podporu pre
vlastné kultúry.
Ak zdrojové súbory RESX nie sú Vami uprednostňovaným zdrojovým formátom pre uchovávanie
prekladov, uvítate rozšíriteľnosť celého modelu.
Ukážky tu opisované môžu byť vyhotovené pre americkú angličtinu (en-US), francúzštinu
(fr), nemčinu (de), španielčinu (es), japončinu (ja) a arabčinu (ar) (arabčina iba
pre dve posledné ukážky na stránke). Ostatné jazyky sa podrobia svojim ústupným
kultúram alebo napokon americkej angličtine. Pozrite sa do
Nastavenie uprednostňovaného jazyka v Internet Exploreri v predošlej kapitole,a
by ste mohli vidieť používanie zdrojov v akcii.
Jednoduchý príklad Novinka v 2.0
Nasledujúci príklad ukazuje lokalizáciu ovládacieho prvku Label v stránke nazvanej
LabelLocalization.aspx.
<%@ Page UICulture="auto" Culture="auto" %>
<form runat="server">
<asp:Label ID="Label1" runat="server" Text="<%$ Resources:Label1TextKey %>"
Font-Name="<%$ Resources:Label1FontNameKey %>"/>
</form>
Stránka definuje direktívu Page so špecifickými atribútmi UICulture
a Culture. Hodnoty atribútu sú automatické. Toto nariaďuje ASP.NET
detekovať a nastaviť súčasnú kultúru vlákna a kultúru užívateľského rozhrania pre
spracovanie stránky založené uprednostňovanej kultúre prehliadača užívateľa. Pre
detailne vysvetlenie fungovania pozrite Automatické
detekovanie jazyka prehliadača pre formátovanie závisle od kultúry. Ako
bolo spomenuté v už predošlej kapitole Culture kontroluje formátovanie
dátumov a čísel, zatiaľ čo UICulture kontroluje načítavanie zdrojov
- teda preložený text a lokalizované ovládacie vlastnosti ako farba a písmo.
Vlastnosti Text a Font-Nameovládacieho prvku Label sú
pripojené so zdrojovými výrazmi, ktoré rozlúštia zdrojový kľúč, ktorý sa používa
na vykonávanie priradenia vlastnosti do formulára hodnôt, v tomto prípade, lokálneho
zdroja.
Popri stránke LabelLocalization.aspx je partnerský adresár App_LocalResources. To
je miesto, kde sú lokálne zdroje sídla a sú pomenované náležito pre stránku, napríklad:
- LabelLocalization.aspx.resx. Kultúrne nezávislý zdrojový súbor
- LabelLocalization.aspx.fr.resx. Kultúrne určený zdrojový súbor, (francúzština)
- LabelLocalization.aspx.de.resx. Kultúrne určený zdrojový súbor, (nemčina)
- LabelLocalization.aspx.ja.resx. Kultúrne určený zdrojový súbor, (japončina)
-
LabelLocalization.aspx.ar.resx. Kultúrne určený zdrojový súbor, (arabčina)
Tieto RESX súbory obsahujú (keyname-value mapping). Napríklad v súbore LabelLocalization.aspx.resx
<data name="Label1TextKey">
<value xml:space="preserve">Welcome to ASP.NET Localization</value>
</data>
Spustenie tejto stránky vytvorí prevedenie pre Label použitím vlastnosti Text
zo zdrojov pre nemčinu, francúzštinu, japončinu a iné jazyky.
Zdrojové výrazy Novinka v 2.0
Existujú dve formy zdrojových výrazov, explicitná a implicitná.
|
Formulár zdrojových výrazov |
Popis |
|
Explicitné |
<%$ Resources:[filename prefix,]resource-key %>
Explicitné výrazy sa používajú na definovanie hodnôt pre riadiace vlastnosti v deklaratívnej
syntaxi, a resource-key, ktorý je požadovaný, je použitý na mapovanie hodnôt
zo zdroja. Parameter filename prefix je nepovinný, ale filename udáva
meno zdrojového(ých) súboru(ov), ktoré sídlia v adresári global
resources.
|
|
Implicitné |
<asp:Label ID="Label1" runat="server" meta:resourcekey="resource-key-prefix"
/>
Implicitné výrazy sa používajú ako atribút pre ovládací prvok alebo objekt v deklaratívnej
syntaxi a definuje resource-key-prefix, ktorý sa používa pre vykonávanie
množstva pridelení vlastnosti pre ovládací prvok. Zdrojový súbor obsahuje mnoho
potenciálnych resource-keys hlavného formulára resource-key-prefix.Property
- napríklad: Label1KeyPrefix.Text a Label1KeyPrefix.Font-name. Všetky zdroje sú
získané iba z lokálnych zdrojov. O výrazoch môžete pomýšľať
ako o skrátenej poznámke pre mapovanie od jednej po množstvo ovládacích vlastností
bez explicitného definovania vlastností v stránke. |
Globálne a lokálne zdroje Novinka v 2.0
Globálne zdroje sídlia v špeciálnom adresári nazývanom /App_GlobalResources,
ktorý sa nachádza v koreňovom adresári aplikácie. Všetky stránky, užívateľské prvky,
atď. môžu pristupovať k týmto zdrojom, takže sú zvyčajne používané ako zdieľané
zdroje. Meno zdrojového súboru sa používa v explicitných výrazoch, ale tak isto
tvorí namespace.classname pre silne typový prístup pod namespace-om Resources
vo Vašej aplikácii.
Lokálne zdroje sú definované v adresári rovnakej úrovne
/App_LocalResources. RESX súbory vyplývajú zo špecifickej menovacej dohody
s pridruženou stránkou, užívateľským prvkom, alebo stránkou master-page, spolu s
definíciou kultúry. Napríklad foo.aspx sa bude vzťahovať na kultúrne
nezávislý zdrojový súbor /App_LocalResources/foo.aspx.resx a na kultúrne
určené zdrojové súbory /App_LocalResources/foo.aspx.fr.resx a /App_LocalResources/foo.aspx.ja.resx.
Iba pridružená stránka môže pristupovať k tieto zdroje použitím explicitných alebo
implicitných zdrojových výrazov. Existuje metóda, ktorá je prístupná pre programový
prístup k týmto zdrojom v kóde.
Implicitné výrazy pre lokálne zdroje Novinka v 2.0
Táto ukážka bola vytvorená z ukážky ukazujúcej správne formátovanie kultúr využívaním
programu Visual Web Developer na vytvorenie lokálnych zdrojov. Celý text na stránke
bol konvertovaný do ASP.NET ovládacích prvkov Label, a potom príkaz "Generate Local
Resource" menu Nástroje v dizajnovom zobrazení vygeneroval zdrojové súbory pre predvolený
jazyk (v tomto prípade americká angličtina). Tento zdrojový súbor bol potom preložený
do japončiny, nemčiny, francúzštiny a španielčiny. Žiadne ďalšie písanie kódu nebolo
potrebné pre povolenie lokalizácie stránky.
Dizajnér pridal atribút UICulture do direktívy Page a
implicitné zdrojové výrazy ako
<asp:Label ID="LabelTitle" runat="server" Text="Currency Exchange Calculator" meta:resourcekey="LabelResource1">
</asp:Label>
pre povolenie načítavania zdrojov počas behu programu.
Dizajnér analyzuje ovládacie prvky na stránke pre lokalizačné zdroje. Tak ako sú
názvy peňažných mien na stránke programovo vyplňované, nie je možné detekovať, že
by tak isto mali byť pridané ku lokalizačným zdrojov - ako toto docieliť manuálne
je ukázané vo vzorke viac nižšie.
Lokalizovanie použitím implicitných výrazov (VB)
Explicitné výrazy pre lokálne zdroje Novinka v 2.0
Stránka predvedená vyššie používajúca implicitné výrazy stále nie je úplne preložená
- názvy peňažných mien v (drop down) a zoznam výmenných hodnôt sú stále v angličtine.
Tak isto stránka nie je ešte preložená do arabčiny a nemecká verzia by mala mať
inú farbu pozadia označenia nadpisov a dátum.
Arabčina je jazyk, ktorý je písaný sprava doľava. Aby sme nariadili prehliadaču
zobrazovať stránku v správnom smere, bol pridaný na ďalší zdroj nazývaný HTMLDirectionality.
Použitím explicitných výrazov na tento lokálny zdroj je nastavený atribút dir
elementu stránky html.
Nasledujúca vzorka používa taktiež explicitné výrazy pre zmenenie parametrov Text
a BackColor patriacim k označeniam nadpisov a dátumu. Všimnite si,
že zdroje pre jazyky, ktoré nepotrebujú meniť tieto hodnoty nepotrebujú obsahovať
zdroje - mechanizmus ústupu zdrojov .NET Frameworku vždy vyberie predvolenú hodnotu
obsiahnutú v uprednostňovaných zdrojoch.
Programový prístup ku globálnym a lokálnym zdrojom Novinka v
2.0
Text, ktorý je generovaný programovo nemôže byť načítaný použitím zdrojových výrazov,
tak isto ako Visual Web Developer designer automaticky generuje pre neho zdroje.
ASP.NET ponúka funkcie GetGlobalResourceObject() a GetLocalResourceObject(),
aby ste sa mohli s týmito prípadmi programovo zaoberať. Týmto spôsobom nasledujúca
ukážka načítava názvy peňažných mien z pridaných zdrojov CurrencyNames,
ktoré sú aplikačné voľne prístupné.
Lokalizácia statického obsahu Novinka v 2.0
Zvyčajne vývojári vytvoria webovú aplikáciu, ktorá obsahuje statický text, napríklad
disclaimer na stránke. Nie je potrebné to deklarovať ako ovládací prvok Label,
pretože pre tento účel je k dispozícii ovládací prvok Localize. Tento
ovládací prvok povoľuje editovanie textu nielen vo vlastnostiach mriežky, ale aj
priamo v dizajnovom zobrazení (design view).
Lokalizácia použitím implicitných a explicitných výrazov ako aj programového prístupu (VB)
Ukladanie jazykových preferencii Novinka v 2.0
V niektorých prípadoch nemusia byť predvolené označenia Culture a
UICulture, vybrané automatickou detekciou, vhodné pre užívateľa (napr.
španielsky hovoriaci užívateľ používajúci počítač v čínskej internetovej kaviarni).
V takýchto prípadoch potrebuje dať webová aplikácia užívateľom možnosť zmeniť zobrazený
jazyk a/alebo nastavenia kultúry. Nasledujúca vzorka ukazuje ako vytvoriť ovládací
prvok DropDownList, ktorý zobrazuje všetky dostupné jazyky. Mení jazyk
podľa označenia v drop-down a ukladá výber použitím nových ASP.NET v2.0 Profiles
feature.
Je dôležité pripomenúť, že zmeny do Thread.CurrentThread.CurrentCulture
a Thread.CurrentThread.CurrentUICulture je potrebné vykonať v metóde
InitializeCulture(), pretože automatická detekcia jazyka preferovaného
prehliadačom nastáva na začiatku životného cyklu stránky.
Označenie a ukladanie jazykových preferencii použitím personalizácie (VB)
|
|