Hogyan váltsunk nyelvet kliens oldalon? - II. rész

Miután megírtam az előző blog bejegyzést a többnyelvű OLAP adatkockákról, illetve arról, hogy hogyan lehet nyelvet váltani kliens oldalon, elkezdett bántani a dolog, hogy vajon miért nem lehetett úgy megírni a nyelvváltást a kliensekben (pl.: Excel vagy ProClarity, …), hogy a nyelvet futásidőben szabadon változtathassuk? Miért nem tettek a kliensekbe egy lenyíló menüt, amiből kiválaszthatom, hogy az elkészített vagy elmentett jelentést milyen nyelven szeretném megnézni? Mert oké, hogy többnyelvű az adatbázis, de hogyan fogok egy elmentett magyar riportot átfordítani angolra?

Nos, még ha lenyíló menü nincs is, és a „translate” gombot sem találjuk meg a klienseken, azért szerencsére lehetőségünk van arra, hogy több különböző nyelven mentsük el, vagy nyissuk meg ugyanazt a riportot.

Excel 2007

Ha Excel 2007-et használunk, és minden egyes adatkockához nyelvenként létrehoztunk egy connection-t úgy, ahogy azt a „Hogyan váltsunk nyelvet kliens oldalon?” című cikkben bemutattam, akkor connection cseréjével megváltoztathatjuk a riport nyelvét.

Nem kell mást tennünk, mint a riport mögött kicserélni a connection fájlt. A connection-t egy riport mögött úgy cserélhetjük ki egy másik nyelvet (Locale Identifier-t) használó connection-re, hogy a Data fülön (ribbon-on) a properties menüpontra nyomunk, majd definition fül, connection file, browse és ki kell választani a kívánt nyelv connection fájlját.

A connection cseréje a riport mögött még nem ekvivalens a futásidőben történő nyelvváltással. (bár tökéletesen működik).

Miért akarom a nyelvet futásidőben (egy connection-ön belül) váltani? Egyfelől azért, hogy ne kelljen nyelvenként létrehoznom új connection fájlt, másfelől azért, mert az Analysis Service 2005 cache-e, illetve annak kalkulációs része (amely a számított mezőket tartalmazza) nem osztható meg. Ez azt jelenti, hogy az egyszer már bekeselt számított mezőt egy másik locale identifier-t tartalmazó connection-ból már nem látom.

MDX

Sajnos a connection string locale identifier tulajdonságát (a nyelvet) futás időben nem változtathatjuk meg. Mindebből arra következtethetnénk, hogy nincs más megoldás: minden nyelvhez új connectiont kell építenünk (új session-t kell nyitnunk).

Szerencsére az Analysis Services 2005-ben létezik egy speciális LCIDxxxx nevű beépített member property, amely segítségével egy connection-ön (session-ön) belül tudjuk változtatni a nyelvet. (az xxxx reprezentálja a megjeleníteni kívánt nyelv azonosítóját. Ha tehát a dimenzió elem magyar megnevezését akarjuk lekérdezni, akkor azt az „LCID1038” member property-n keresztül tudjuk megtenni)

Példa:

WITH

MEMBER Measures.DefaultMemberCaption AS [Time].[Month].CurrentMember.MEMBER_CAPTION

MEMBER Measures.MagyarMemberCaption AS [Time].[Month].CurrentMember.Properties("LCID1038")

SELECT

{Measures.DefaultMemberCaption, Measures.MagyarMemberCaption} ON 0,

[Time].[Month].MEMBERS ON 1

FROM [GL]

A lekérdezés eredménye:

Nyelv váltás OLAP (Többdimenziós) adatbázisokban

 

Kapcsolódó anyagok:

Felhasznált irodalom:

Kővári Attila - BI projekt

Új hozzászólás