March 2008 - Posts

ASP.NET AJAX un javaskriptu lokalizācija

Sveiki!

Sen neesat neko no manis dzirdējuši? Jūsu pazemīgais kalps steidzas labot situāciju un pastāstīt par jaunāko, kas tam liekas uzmanības vērts. Šoreiz par ASP.NET AJAX un kādu no tā piedāvātajām iespējām.

Pēdējās pāris nedēļas strādāju ar tīmekļa aplikāciju izstrādi, un regulāri uzduros šāda veida konstrukcijām:

aspx failā:

<script type="text/javascript" src="JS/<%=Language%>/Greeting.js" />

cs failā:

    protected string Language
{
get
{ return System.Threading.Thread.CurrentThread.CurrentUICulture.IetfLanguageTag; }
}

Izrādās, ka ASP.NET AJAX ļauj šo pašu funkcionalitāti realizēt bez īpašām papildus konstrukcijām. Protams, paši skripti joprojām būs jāpielāgo, toties to izmantošana notiks automaģiski.

Sākotnēji sagatavosim skriptu failus. Pirmais ir skripts, kurš tiek izmantots pēc noklusējuma un gadījumos, kad neeksistē lokalizēto skriptu. Manā piemērā tas būs Greeting.js, kurš satur vienkāršu funkciju lietotāja sveicināšanai.

Greeting.js

function GreetUser(name)
{
alert("Hello " + name + "!");
}

Nākošajā solī ir jāsagatavo lokalizētie skripti, kuru nosaukumiem, līdzīgi kā lokalizēto resursu nosaukumiem, jābūt formā <Nosaukums>.<valodas kods>.js. Ja noklusētais skripts saucās Greeting.js, tad latviskotajam ir jāsaucas Greeting.lv.js.

Greeting.lv.js

function GreetUser(name)
{
alert("Sveicināts(a), " + name + "!");
}

Lai gan pēc standarta, valodas un valsts kods ir formātā xx-YY, kur xx ir valodas kods un YY valsts (apgabala) kods, izskatās, ka labāk ir izmantot tikai pirmos divus simbolus. Tas tādēļ, ka teiksim, Mozilla Firefox pārlūkprogramma, vismaz latviešu valodu, norāda tieši šādā formā un skripts ar pilno pierakstu nestrādās. Savukārt, gadījumos, kad pārlūkprogramma norāda pilno formātu, daļējā formā definētie skripti strādā.

Pēc skriptu izveidošanas ievietojam lapā ASP.NET AJAX javaskript pārvaldīšana objektu ScriptManager, kuram norādam, ka ir atļauta skriptu lokalizēšana (pasvītrotais fragments).

<asp:ScriptManager ID="scriptManager" runat="server" EnableScriptLocalization="true">
</
asp:ScriptManager>

Tajā ievietojam atsauci uz skriptu, norādot pieejamo lokalizāciju kodus, atdalītus ar komatu.

<Scripts>
<
asp:ScriptReference Path="JS/Greeting.js" ResourceUICultures="lv" />
</
Scripts>

Pēdējais darbs, kas atlicis, lai pieslēgtu lokalizēšanas funkcionalitāti - norādīt lapai, ka tai ir automātiski jānosaka izmantojamā kultūra. Lai to izdarīt, lapas "galvā" ir jānorāda papildus UICulture atribūts.

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default"  UICulture="auto"%>

Tālāk jau atliek izveidot formu, kas izsauc GreetUser funkciju un priecāties par rezultātu. Tā kā šis kods ir vienkāršs, tad sīkāk to neapskatīšu. Ja ir interese, tad ierakstam ir pievienots pabeigts projekts. Nobeigumam tikai ekrānšāviņi, kuros redzams rezultāts.

Valoda lv

javascript_localization_lv

Valoda ru-RU

 javascript_localization_ru_RU