Korábban bemutattuk, hogy az OpenSocial üzenet sablonok hogyan használhatóak csoportosított hírfolyam elemek küldéséhez, de nem ejtettünk szót arról, hogy milyen egyéb felhasználási lehetőségeik vannak: lehetőség van az alkalmazások többnyelvűvé tételére, illetve ezt a lehetőséget használhatjuk az alkalmazáson belül megjelenített szövegekhez akkor is, ha nem célünk a többnyelvűség.
Alkalmazáson belüli felhasználás
Ha az alkalmazáson belül egy üzenetet, szöveget szeretnénk valahol megjeleníteni, és szeretnénk betartani az MVC mintát, akkor jól jöhetnek az üzenet sablonok. A sablonok tartalma (definiálásukat lásd a korábbi bejegyzésünknél) egyszerűen lekérdezhető a következő JavaScript kódrészlettel:
var prefs = new gadgets.Prefs(); var text = prefs.getMsg("hello_world");
A “text” változóban a “hello_world” name paraméterű üzenet szövegét fogjuk megkapni. Az OpenSocial nem kínál olyan függvényt, mely segítségével sablon változók feloldhatóak lennének, de egy ilyet könnyen írhatunk saját magunk is:
if (!iWiW) iWiW = {}; iWiW.getMsg = function(name, parameters) { var prefs = new gadgets.Prefs(); var template = prefs.getMsg(name); if (parameters) for (var p in parameters) { template = template.replace('${' + p + '}', parameters[p]; } return template; }
Ha a “szorzas” nevű sablonunk szövege “Az ${a}*${b} szorzás eredménye ${c}”, akkor a függvény az iWiW.getMsg(”szorzas”, { ‘a’: 2, ‘b’: 2, ‘c’: 5 }); formában hívható meg.
Az sablonok szövege azonban nem csak JavaScriptből kérdezhető le, az alkalmazás XML-jében bárhol tudunk hivatkozni rá, és az OpenSocial előfeldolgozó lecseréli a hivatkozást a megfelelő szövegre. Avagy a fent elsőként bemutatott “bonyolult” kódrészlet helyett írhatjuk ezt is:
var text = '__MSG_hello_world__';
A “__MSG_azonosító__” (az egyértelműség kedvéért: az idézőjelet nem kell köréírni) szerepelhet bárhol az alkalmazás XML-jében, tehát a HTML vagy a CSS részekben is. Amire figyelni kell, hogy a fenti példa nem működik jól, ha az üzenet szövegében aposztróf is szerepel, hiszen ekkor nincsen megfelelően escape-elve az aposztróf karakter, s JavaScript hibát fogunk kapni (JavaScript kódrészbe az előbb ismertetett módon célszerű használni a sablonokat).
Többnyelvű alkalmazások
Bár az iWiW kapcsán jellemzően csak magyar nyelvű alkalmazások készülnek, de a sablonok jól használhatóak többnyelvű alkalmazások készítéséhez is (ráadásul eredetileg ebből a célból lett implementálva a funkció). Ha más OpenSocialt támogató oldallal is szeretnénk kompatibilissé tenni alkalmazásunkat, akkor mindenképpen célszerű a sablonok használatát választanunk.
A sablonok definiálásakor kell megadnunk a nyelvet:
<ModulePrefs> <Locale messages="http://example.hu/messages_HU.xml"/> <Locale messages="http://example.hu/messages_EN.xml" lang="EN"/> </ModulePrefs>
Ebben a példában a magyar nyelvű üzenet definíciókhoz nem adtunk meg nyelvet - ezt választottuk alapértelmezettnek -, az angol nyelvű üzeneteknél a “lang” paramétert használtuk az nyelv megadásához. Ha az alkalmazást angol nyelvű környezetben töltik be, akkor a “messages_EN.xml” lép érvénybe, minden más esetben pedig a magyar nyelvű szövegek.
A témakörről itt bővebben is lehet olvasni.
Legutóbbi hozzászólások