extensies met locales: hoe maak je de js localizeable?

Met extensies en thema's kun je Mozilla-software vrijwel eindeloos uitbreiden. Kun je anderen een bepaalde extensie/thema aanbevelen? Of heb je vragen over of problemen met een bepaalde extensie/thema dan kun je die hier plaatsen.
Plaats reactie
Gebruikersavatar
Tjaard
Berichten: 710
Lid geworden op: 6 november 2004, 17:26
Locatie: In Christ
    unknown unknown
Contacteer:

extensies met locales: hoe maak je de js localizeable?

Bericht door Tjaard »

Ik ben bezig met het vertalen van de laatste sessionsaver, waar ik tegenaanloop is dat bepaalde dingen hard coded in javascript zitten. Wat ik geprobeerd heb is entities maken in de DTD (javascript wordt geincluded in een XUL, die DTD heb ik dus genomen), maar dat lijkt niet te werken (kan overigens ook zijn omdat ik de &entity; in een replacefunctie had staan). Wat ik ook zie is met user agent switcher en web developer is dat er in de locale directory een file is met de naam extensie.properties. Dit is geen DTD, maar heeft een structuur als

Code: Selecteer alles

bepaalde_melding=Hoi, dit is een melding.
Wat ik zie in een van de js-files is dat er op een bepaald element de functie getstring wordt aangeroepen met als argument "bepaalde_melding". Ik heb het al in de .js van sessionsaver met this.getstring() geprobeerd, maar dan krijg ik helemaal niks te zien...

Kan iemand die er verstand van heeft z'n licht erop laten schijnen? Ik wil het ding vertaald en gelokaliseerd hebben, OOK de javascript :x !
Maak zelf goeie adblockfilters, mail veilig met OpenPGP in Thunderbird!
As for me and my house, we will serve the LORD (Jozua 24:14).
Gebruikersavatar
Gert-Paul
Berichten: 2358
Lid geworden op: 4 maart 2004, 17:48
    unknown unknown
Contacteer:

Bericht door Gert-Paul »

Voor Nvu waren ook veel teksten hard-coded en daar heb ik het opgelost door een functie GetString te gebruiken. Zoals te vinden is op http://forum.nvudev.org/viewtopic.php?t=216.

In extensies zie je die functie echter nooit terugkomen en dus heb ik even naar een extensie zelf gekeken. Toen kwam ik het volgende tegen.

In de hoofd.dtd van de extensie (in het geval van ContactSidebar contactsPanel.dtd):

Code: Selecteer alles

  <stringbundleset id="stringbundleset">
    <stringbundle id="bundle_addressBook" src="chrome://messenger/locale/addressbook/addressBook.properties"/>
    <stringbundle id="bundle_contactsPanel" src="chrome://contactssidebar/locale/contactsPanel.properties"/>
  </stringbundleset>
In een .js bestand

Code: Selecteer alles

var gContactsPanelBundle;
  gContactsPanelBundle = document.getElementById("bundle_contactsPanel");
Daarna wordt dan bv gContactsPanelBundle.getString("contactsSidebar.email"); aangeroepen.

Probeer het dus eens zo. Als dit ook niet werkt zal denk ik toch Jeroen p, of misschien een andere echte extensie-ontwikkelaar je moeten helpen.
Plaats reactie