Commit 08d69b3a authored by JC Brand's avatar JC Brand

Add a note to docs about locales.js

parent 4d9b9a7b
...@@ -304,7 +304,7 @@ CSS can be minimized with Yahoo's yuicompressor tool: ...@@ -304,7 +304,7 @@ CSS can be minimized with Yahoo's yuicompressor tool:
Translations Translations
============ ============
The gettext POT file located in ./locales/converse.pot is the template The gettext POT file located in ./locale/converse.pot is the template
containing all translations and from which for each language an individual PO containing all translations and from which for each language an individual PO
file is generated. file is generated.
...@@ -327,7 +327,7 @@ You can then create or update the PO file for a specific language by doing the f ...@@ -327,7 +327,7 @@ You can then create or update the PO file for a specific language by doing the f
:: ::
msgmerge ./locales/af/LC_MESSAGES/converse.po ./locales/converse.pot -U msgmerge ./locale/af/LC_MESSAGES/converse.po ./locale/converse.pot -U
This PO file is then what gets translated. This PO file is then what gets translated.
...@@ -339,7 +339,7 @@ that we're using. ...@@ -339,7 +339,7 @@ that we're using.
:: ::
"domain: converse\n" "domain: converse\n"
"lang: af\n", "lang: af\n"
"plural_forms: nplurals=2; plural=(n != 1);\n" "plural_forms: nplurals=2; plural=(n != 1);\n"
...@@ -358,7 +358,7 @@ You can then convert the translations into JSON format: ...@@ -358,7 +358,7 @@ You can then convert the translations into JSON format:
:: ::
po2json locales/af/LC_MESSAGES/converse.po locales/af/LC_MESSAGES/converse.json po2json locale/af/LC_MESSAGES/converse.po locale/af/LC_MESSAGES/converse.json
Now from converse.json paste the data as a value for the "locale_data" key in the Now from converse.json paste the data as a value for the "locale_data" key in the
object in the language's .js file. object in the language's .js file.
...@@ -383,6 +383,11 @@ create or update the file ./locale/LC_MESSAGES/de.js with the following code: ...@@ -383,6 +383,11 @@ create or update the file ./locale/LC_MESSAGES/de.js with the following code:
making sure to also paste the JSON data as value to the "locale_data" key. making sure to also paste the JSON data as value to the "locale_data" key.
.. Note ::
If you are adding translations for a new language that is not already supported,
you'll have to make one more edit in ./locale/locales.js to make sure the
language is loaded by require.js.
Congratulations, you've now succesfully added your translations. Sorry for all Congratulations, you've now succesfully added your translations. Sorry for all
those hoops you had to jump through. those hoops you had to jump through.
......
...@@ -315,7 +315,7 @@ manager, NPM.</p> ...@@ -315,7 +315,7 @@ manager, NPM.</p>
</div> </div>
<div class="section" id="translations"> <div class="section" id="translations">
<h1><a class="toc-backref" href="#id22">Translations</a><a class="headerlink" href="#translations" title="Permalink to this headline"></a></h1> <h1><a class="toc-backref" href="#id22">Translations</a><a class="headerlink" href="#translations" title="Permalink to this headline"></a></h1>
<p>The gettext POT file located in ./locales/converse.pot is the template <p>The gettext POT file located in ./locale/converse.pot is the template
containing all translations and from which for each language an individual PO containing all translations and from which for each language an individual PO
file is generated.</p> file is generated.</p>
<p>The POT file contains all translateable strings extracted from converse.js.</p> <p>The POT file contains all translateable strings extracted from converse.js.</p>
...@@ -328,7 +328,7 @@ function like so:</p> ...@@ -328,7 +328,7 @@ function like so:</p>
<div class="highlight-python"><pre>make pot</pre> <div class="highlight-python"><pre>make pot</pre>
</div> </div>
<p>You can then create or update the PO file for a specific language by doing the following:</p> <p>You can then create or update the PO file for a specific language by doing the following:</p>
<div class="highlight-python"><pre>msgmerge ./locales/af/LC_MESSAGES/converse.po ./locales/converse.pot -U</pre> <div class="highlight-python"><pre>msgmerge ./locale/af/LC_MESSAGES/converse.po ./locale/converse.pot -U</pre>
</div> </div>
<p>This PO file is then what gets translated.</p> <p>This PO file is then what gets translated.</p>
<p>If you&#8217;ve created a new PO file, please make sure to add the following <p>If you&#8217;ve created a new PO file, please make sure to add the following
...@@ -336,7 +336,7 @@ attributes at the top of the file (under <em>Content-Transfer-Encoding</em>). Th ...@@ -336,7 +336,7 @@ attributes at the top of the file (under <em>Content-Transfer-Encoding</em>). Th
required as configuration settings for Jed, the Javascript translations library required as configuration settings for Jed, the Javascript translations library
that we&#8217;re using.</p> that we&#8217;re using.</p>
<div class="highlight-python"><div class="highlight"><pre><span class="s">&quot;domain: converse</span><span class="se">\n</span><span class="s">&quot;</span> <div class="highlight-python"><div class="highlight"><pre><span class="s">&quot;domain: converse</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="s">&quot;lang: af</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="s">&quot;lang: af</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="s">&quot;plural_forms: nplurals=2; plural=(n != 1);</span><span class="se">\n</span><span class="s">&quot;</span> <span class="s">&quot;plural_forms: nplurals=2; plural=(n != 1);</span><span class="se">\n</span><span class="s">&quot;</span>
</pre></div> </pre></div>
</div> </div>
...@@ -348,7 +348,7 @@ following command to install it (npm being the node.js package manager):</p> ...@@ -348,7 +348,7 @@ following command to install it (npm being the node.js package manager):</p>
<div class="highlight-python"><pre>npm install po2json</pre> <div class="highlight-python"><pre>npm install po2json</pre>
</div> </div>
<p>You can then convert the translations into JSON format:</p> <p>You can then convert the translations into JSON format:</p>
<div class="highlight-python"><pre>po2json locales/af/LC_MESSAGES/converse.po locales/af/LC_MESSAGES/converse.json</pre> <div class="highlight-python"><pre>po2json locale/af/LC_MESSAGES/converse.po locale/af/LC_MESSAGES/converse.json</pre>
</div> </div>
<p>Now from converse.json paste the data as a value for the &#8220;locale_data&#8221; key in the <p>Now from converse.json paste the data as a value for the &#8220;locale_data&#8221; key in the
object in the language&#8217;s .js file.</p> object in the language&#8217;s .js file.</p>
...@@ -368,6 +368,12 @@ create or update the file ./locale/LC_MESSAGES/de.js with the following code:</p ...@@ -368,6 +368,12 @@ create or update the file ./locale/LC_MESSAGES/de.js with the following code:</p
}));</pre> }));</pre>
</div> </div>
<p>making sure to also paste the JSON data as value to the &#8220;locale_data&#8221; key.</p> <p>making sure to also paste the JSON data as value to the &#8220;locale_data&#8221; key.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">If you are adding translations for a new language that is not already supported,
you&#8217;ll have to make one more edit in ./locale/locales.js to make sure the
language is loaded by require.js.</p>
</div>
<p>Congratulations, you&#8217;ve now succesfully added your translations. Sorry for all <p>Congratulations, you&#8217;ve now succesfully added your translations. Sorry for all
those hoops you had to jump through.</p> those hoops you had to jump through.</p>
</div> </div>
......
Search.setIndex({objects:{},terms:{all:0,code:0,partial:0,queri:0,webchat:0,follow:0,middl:0,depend:0,sensit:0,sorri:0,those:0,under:0,string:0,fals:0,mechan:0,jack:0,veri:0,list:0,pleas:0,prevent:0,past:0,second:0,pass:0,download:0,further:0,fullnam:0,even:0,index:0,what:0,hide:0,section:0,current:0,version:0,"new":0,net:0,"public":0,gener:0,here:0,valu:0,box:0,convert:0,convers:0,mysit:0,implement:0,via:0,extra:0,apach:0,releas:0,href:0,org:0,auto_list_room:0,instal:0,from:0,zip:0,commun:0,doubl:0,two:0,websit:0,stylesheet:0,call:0,recommend:0,type:0,until:0,tightli:0,more:0,yahoo:0,must:0,room:0,setup:[],xhr:0,can:0,lc_messag:0,purpos:0,root:0,fetch:0,control:0,quickstart:0,share:0,templat:0,tag:0,proprietari:0,explor:0,occup:0,end:0,goal:0,write:0,how:0,sid:0,instead:0,css:0,updat:0,npm:0,regener:0,product:0,resourc:0,after:0,usabl:0,befor:0,underscor:0,data:0,demonstr:0,man:0,practic:0,bind:0,django:0,inform:0,order:0,xmpp:0,over:0,through:0,streamlin:0,snippet:0,jid:0,directli:0,fit:0,pend:0,therefor:0,might:0,them:0,anim:0,"return":0,thei:0,initi:0,front:0,now:0,introduct:0,name:0,authent:0,ejabberd:0,each:0,side:0,mean:0,domain:0,individu:0,realli:0,legwork:0,connect:0,extract:0,variabl:0,open:0,content:0,rel:0,internet:0,plural:0,factori:0,po2json:0,proxi:0,insid:0,standard:0,standalon:0,put:0,succesfulli:0,blogpost:0,keep:0,yui:0,first:0,origin:0,softwar:0,render:0,onc:0,hoop:0,lastnam:0,number:0,yourself:0,restrict:0,alreadi:0,owner:0,jabber:0,differ:0,script:0,top:0,messag:0,attach:0,attack:0,jed:0,luckili:0,option:0,tool:0,specifi:0,compressor:0,part:0,exactli:0,than:0,serv:0,jump:0,kind:0,provid:0,remov:0,bridg:0,toward:[],browser:0,sai:0,saa:0,modern:0,ani:0,packag:0,have:0,tabl:0,need:0,moffitt:0,bosh_service_url:0,prebind:0,min:0,latter:0,also:0,exampl:0,build:0,which:0,singl:0,sure:0,though:0,track:0,object:0,most:0,deploi:0,homepag:0,don:0,url:0,request:0,face:0,runtim:0,xdomainrequest:0,show:0,german:0,text:0,session:0,fine:0,find:0,onli:0,locat:0,just:0,configur:0,solut:0,should:0,folder:0,local:0,meant:0,get:0,opkod:0,cannot:0,requir:0,enabl:0,method:0,reload:0,integr:0,contain:0,where:0,set:0,stroph:0,see:0,close:0,state:0,between:0,experi:0,hide_muc_serv:0,attribut:0,kei:0,screen:0,javascript:0,job:0,bosh:0,cor:0,instant:0,shortliv:0,conversej:0,etc:0,grain:0,mani:0,login:0,com:0,load:0,pot:0,backend:0,creat:0,json:0,much:0,besid:0,subscrib:0,msgmerg:0,great:0,minifi:0,togeth:0,i18n:0,present:0,multi:0,servic:0,plugin:0,defin:0,file:0,helper:0,demo:0,auto_subscrib:0,site:0,rid:0,minim:0,media:0,make:0,minif:0,cross:0,same:0,html:0,signon:0,http:0,webserv:0,optim:0,upon:0,hand:0,user:0,xhr_user_search:0,recent:0,stateless:0,person:[],contact:0,command:0,wherebi:0,thi:0,choos:0,usual:0,plural_form:0,protocol:0,firstnam:0,languag:0,web:0,xmlhttprequest:0,had:0,add:0,valid:0,input:0,yuicompressor:0,match:0,applic:0,format:0,read:0,nginx:0,traffic:0,like:0,xss:0,success:0,specif:0,server:0,benefit:0,either:0,page:0,deal:0,nplural:0,some:0,back:0,librari:0,deploy:0,overcom:0,refer:0,run:0,host:0,panel:0,src:0,about:0,controlbox:0,unfortun:0,act:0,own:0,encod:0,automat:0,wrap:0,your:0,manag:0,log:0,wai:0,transfer:0,support:0,custom:0,avail:0,start:[],includ:0,lot:0,suit:0,"function":0,properli:0,form:0,bundl:0,link:0,translat:0,synonym:0,"true":0,congratul:0,requirej:0,info:0,made:0,locale_data:0,possibl:0,"default":0,below:0,otherwis:0,problem:0,expect:0,featur:0,onconnect:0,exist:0,chat:0,want:0,when:0,detail:0,gettext:0,field:0,other:0,test:0,you:0,nice:0,node:0,stai:0,lang:0,longer:0},objtypes:{},titles:["Introduction"],objnames:{},filenames:["index"]}) Search.setIndex({objects:{},terms:{all:0,code:0,partial:0,queri:0,webchat:0,follow:0,middl:0,depend:0,sensit:0,sorri:0,those:0,under:0,string:0,fals:0,mechan:0,jack:0,veri:0,list:0,pleas:0,prevent:0,past:0,second:0,pass:0,download:0,further:0,fullnam:0,even:0,index:0,what:0,hide:0,section:0,current:0,version:0,"new":0,net:0,"public":0,gener:0,here:0,valu:0,box:0,convert:0,convers:0,mysit:0,implement:0,via:0,extra:0,apach:0,releas:0,href:0,org:0,auto_list_room:0,instal:0,from:0,zip:0,commun:0,doubl:0,two:0,websit:0,stylesheet:0,call:0,recommend:0,type:0,until:0,tightli:0,more:0,yahoo:0,must:0,room:0,setup:[],xhr:0,can:0,lc_messag:0,purpos:0,root:0,fetch:0,control:0,quickstart:0,share:0,templat:0,tag:0,proprietari:0,explor:0,occup:0,end:0,goal:0,write:0,how:0,sid:0,instead:0,css:0,updat:0,npm:0,regener:0,product:0,resourc:0,after:0,usabl:0,befor:0,underscor:0,data:0,demonstr:0,man:0,practic:0,bind:0,django:0,inform:0,order:0,xmpp:0,over:0,through:0,streamlin:0,snippet:0,jid:0,directli:0,fit:0,pend:0,therefor:0,might:0,them:0,anim:0,"return":0,thei:0,initi:0,front:0,now:0,introduct:0,name:0,edit:0,authent:0,ejabberd:0,each:0,side:0,mean:0,domain:0,individu:0,realli:0,legwork:0,connect:0,extract:0,variabl:0,open:0,content:0,rel:0,internet:0,plural:0,factori:0,po2json:0,proxi:0,insid:0,standard:0,standalon:0,put:0,succesfulli:0,blogpost:0,keep:0,yui:0,first:0,origin:0,softwar:0,render:0,onc:0,hoop:0,lastnam:0,number:0,yourself:0,restrict:0,alreadi:0,owner:0,jabber:0,differ:0,script:0,top:0,messag:0,attach:0,attack:0,jed:0,luckili:0,option:0,tool:0,specifi:0,compressor:0,part:0,exactli:0,than:0,serv:0,jump:0,kind:0,provid:0,remov:0,bridg:0,toward:[],browser:0,sai:0,saa:0,modern:0,ani:0,packag:0,have:0,tabl:0,need:0,moffitt:0,bosh_service_url:0,prebind:0,min:0,latter:0,note:0,also:0,exampl:0,build:0,which:0,singl:0,sure:0,though:0,track:0,object:0,most:0,deploi:0,homepag:0,don:0,url:0,request:0,face:0,runtim:0,xdomainrequest:0,show:0,german:0,text:0,session:0,fine:0,find:0,onli:0,locat:0,just:0,configur:0,solut:0,should:0,folder:0,local:0,meant:0,get:0,opkod:0,cannot:0,requir:0,enabl:0,method:0,reload:0,integr:0,contain:0,where:0,set:0,stroph:0,see:0,close:0,state:0,between:0,experi:0,hide_muc_serv:0,attribut:0,kei:0,screen:0,javascript:0,job:0,bosh:0,cor:0,instant:0,shortliv:0,conversej:0,etc:0,grain:0,mani:0,login:0,com:0,load:0,pot:0,backend:0,creat:0,json:0,much:0,besid:0,subscrib:0,msgmerg:0,great:0,minifi:0,togeth:0,i18n:0,present:0,multi:0,servic:0,plugin:0,defin:0,file:0,helper:0,demo:0,auto_subscrib:0,site:0,rid:0,minim:0,media:0,make:0,minif:0,cross:0,same:0,html:0,signon:0,http:0,webserv:0,optim:0,upon:0,hand:0,user:0,xhr_user_search:0,recent:0,stateless:0,person:[],contact:0,command:0,wherebi:0,thi:0,choos:0,usual:0,plural_form:0,protocol:0,firstnam:0,languag:0,web:0,xmlhttprequest:0,had:0,add:0,valid:0,input:0,yuicompressor:0,match:0,applic:0,format:0,read:0,nginx:0,traffic:0,like:0,xss:0,success:0,specif:0,server:0,benefit:0,either:0,page:0,deal:0,nplural:0,some:0,back:0,librari:0,deploy:0,overcom:0,refer:0,run:0,host:0,panel:0,src:0,about:0,controlbox:0,unfortun:0,act:0,own:0,encod:0,automat:0,wrap:0,your:0,manag:0,log:0,wai:0,transfer:0,support:0,custom:0,avail:0,start:[],includ:0,lot:0,suit:0,"function":0,properli:0,form:0,bundl:0,link:0,translat:0,synonym:0,"true":0,congratul:0,requirej:0,info:0,made:0,locale_data:0,possibl:0,"default":0,below:0,otherwis:0,problem:0,expect:0,featur:0,onconnect:0,exist:0,chat:0,want:0,when:0,detail:0,gettext:0,field:0,other:0,test:0,you:0,nice:0,node:0,stai:0,lang:0,longer:0},objtypes:{},titles:["Introduction"],objnames:{},filenames:["index"]})
\ No newline at end of file \ No newline at end of file
...@@ -304,7 +304,7 @@ CSS can be minimized with Yahoo's yuicompressor tool: ...@@ -304,7 +304,7 @@ CSS can be minimized with Yahoo's yuicompressor tool:
Translations Translations
============ ============
The gettext POT file located in ./locales/converse.pot is the template The gettext POT file located in ./locale/converse.pot is the template
containing all translations and from which for each language an individual PO containing all translations and from which for each language an individual PO
file is generated. file is generated.
...@@ -327,7 +327,7 @@ You can then create or update the PO file for a specific language by doing the f ...@@ -327,7 +327,7 @@ You can then create or update the PO file for a specific language by doing the f
:: ::
msgmerge ./locales/af/LC_MESSAGES/converse.po ./locales/converse.pot -U msgmerge ./locale/af/LC_MESSAGES/converse.po ./locale/converse.pot -U
This PO file is then what gets translated. This PO file is then what gets translated.
...@@ -358,7 +358,7 @@ You can then convert the translations into JSON format: ...@@ -358,7 +358,7 @@ You can then convert the translations into JSON format:
:: ::
po2json locales/af/LC_MESSAGES/converse.po locales/af/LC_MESSAGES/converse.json po2json locale/af/LC_MESSAGES/converse.po locale/af/LC_MESSAGES/converse.json
Now from converse.json paste the data as a value for the "locale_data" key in the Now from converse.json paste the data as a value for the "locale_data" key in the
object in the language's .js file. object in the language's .js file.
...@@ -383,6 +383,11 @@ create or update the file ./locale/LC_MESSAGES/de.js with the following code: ...@@ -383,6 +383,11 @@ create or update the file ./locale/LC_MESSAGES/de.js with the following code:
making sure to also paste the JSON data as value to the "locale_data" key. making sure to also paste the JSON data as value to the "locale_data" key.
.. Note ::
If you are adding translations for a new language that is not already supported,
you'll have to make one more edit in ./locale/locales.js to make sure the
language is loaded by require.js.
Congratulations, you've now succesfully added your translations. Sorry for all Congratulations, you've now succesfully added your translations. Sorry for all
those hoops you had to jump through. those hoops you had to jump through.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment