Skip to content

Commit

Permalink
Merge pull request #257 from slarosa/master
Browse files Browse the repository at this point in the history
Added i18n for help (Python Console)
  • Loading branch information
timlinux committed Oct 3, 2012
2 parents 5a0feb3 + 35a4f88 commit eeefecf
Show file tree
Hide file tree
Showing 13 changed files with 190 additions and 27 deletions.
4 changes: 4 additions & 0 deletions i18n/qgis_it.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6253,6 +6253,10 @@ Cambiare questa situazione prima, perché il plugin OSM non quale layer è la de
<source>Python Console</source>
<translation>Console python</translation>
</message>
<message>
<source>Help Python Console</source>
<translation>Aiuto Console Python</translation>
</message>
<message>
<source>Import Class</source>
<translation>Importa Modulo</translation>
Expand Down
10 changes: 8 additions & 2 deletions python/help.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from PyQt4 import QtCore, QtGui, QtWebKit
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from qgis.core import *
import os

class HelpDialog(QtGui.QDialog):
Expand All @@ -13,7 +14,7 @@ def __init__(self):
def setupUi(self):
self.setMaximumSize(500, 300)
self.webView = QtWebKit.QWebView()
self.setWindowTitle("Help Python Console")
self.setWindowTitle(QCoreApplication.translate("PythonConsole","Help Python Console"))
self.verticalLayout= QtGui.QVBoxLayout()
self.verticalLayout.setSpacing(2)
self.verticalLayout.setMargin(0)
Expand All @@ -29,7 +30,12 @@ def setupUi(self):
QObject.connect(self.closeButton, QtCore.SIGNAL("clicked()"), self.closeWindow)
self.verticalLayout.addLayout(self.horizontalLayout)
self.setLayout(self.verticalLayout)
filename = os.path.dirname(__file__) + "/helpConsole/help.htm"
jQueryPath = QgsApplication.pkgDataPath()
localeFullName = QSettings().value( "locale/userLocale", QVariant( "" ) ).toString()
filename = os.path.dirname(__file__) + "/helpConsole/help.htm? \
lang=" + localeFullName \
+ "&pkgDir=" + jQueryPath

url = QtCore.QUrl(filename)
self.webView.load(url)

Expand Down
5 changes: 5 additions & 0 deletions python/helpConsole/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,7 @@
FILE(GLOB HTML_FILES *.htm)
FILE(GLOB I18N_FILES i18n/*.properties)
FILE(GLOB JS_FILES js/*.js)

INSTALL(FILES ${HTML_FILES} DESTINATION ${QGIS_PYTHON_DIR}/helpConsole)
INSTALL(FILES ${I18N_FILES} DESTINATION ${QGIS_PYTHON_DIR}/helpConsole/i18n)
INSTALL(FILES ${JS_FILES} DESTINATION ${QGIS_PYTHON_DIR}/helpConsole/js)
78 changes: 53 additions & 25 deletions python/helpConsole/help.htm
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Help Python Console</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<!--<script type="text/javascript" src="js/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="js/jquery.i18n.min.js"></script>-->

<style>
body{
font-family: verdana,arial,helvetica,sans-serif;
Expand All @@ -25,28 +29,28 @@
<img src="../iconConsole/imgHelpDialog.png" />
</td>
<td>
<h2>Python Console for QGIS</h2>
<h2 id="headerTitle">Python Console for QGIS</h2>
</td>
</tr>
</table>
<p align="justify">
Python Console based on pyScintilla. (Developed by Salvatore Larosa)
<span id="headerSubject">Python Console based on PyQScintilla2. (Developed by Salvatore Larosa)</span>
<br><br>
To access Quantum GIS environment from this console
<span id="headerSubjectMain">To access Quantum GIS environment from this console
use qgis.utils.iface object (instance of QgisInterface class).
To import the class QgisInterface can also use the dedicated
button on the toolbar on the left.
button on the toolbar on the left.</span>
</p>
<table id="header">
<tr>
<td>
<h4>Features</h4>
<h4 id="features">Features</h4>
</td>
</tr>
</table>
<p align="justify">
<ul>
<li>Auto-completion and highlighting syntax for the following APIs:
<li><span id="featuresTitle">Auto-completion and highlighting syntax for the following APIs:</span>
<ol>
<li>Python</li>
<li>PyQGIS-master</li>
Expand All @@ -56,75 +60,99 @@ <h4>Features</h4>
</ol>
</li>
<br>
<li>CTRL+SPACE to view the auto-completion list.</li>
<li><span id="featuresA">CTRL+SPACE to view the auto-completion list.</span></li>
<br>
<li>CTRL+ALT+SPACE to view the command history list.</li>
<li><span id="featuresB">CTRL+ALT+SPACE to view the command history list.</span></li>
<br>
<li>Saves the command history by typing <b>_save</b> or closing the widget.<br>
This command saves the history command in the file ~/.qgis/console_history.txt
<li><span id="featuresC">Saves the command history by typing <b>_save</b> or closing the widget.<br>
This command saves the history command in the file ~/.qgis/console_history.txt</span>
</li>
<br>
<li>Clears the command history by typing <b>_clear</b>.<br>
This command clears the command history from file ~/.qgis/console_history.txt
<li><span id="featuresD">Clears the command history by typing <b>_clear</b>.<br>
This command clears the command history from file ~/.qgis/console_history.txt</span>
</li>
<br>
<li>Clears completely command history by typing <b>_clearAll</b>.<br>
This command clears completely the command history. It has an irreversible effect.
<li><span id="featuresE">Clears completely command history by typing <b>_clearAll</b>.<br>
This command clears completely the command history. It has an irreversible effect.</span>
</li>
</ul>
</p>
<table id="header">
<tr>
<td>
<h4>Toolbar</h4>
<h4 id="toolbar">Toolbar</h4>
</td>
</tr>
</table>
<p>The following is a description of the tools in the toolbar:</p>
<p><span id="toolbarTitle">The following is a description of the tools in the toolbar:</span></p>
<table width="100%" border="0" id="headerTool">
<tr>
<td><img src="../iconConsole/iconClearConsole.png" /></td>
<td colspan="2">Tool to clear python console</td>
<td colspan="2"><span id="toolbarClear">Tool to clear python console</span></td>
</tr>
<tr>
<td><img src="../iconConsole/iconClassConsole.png" /></td>
<td><img src="../iconConsole/iconIfaceConsole.png" /></td>
<td>Tool to import iface class</td>
<td><span id="toolbarIfaceClass">Tool to import iface class</span></td>
</tr>
<tr>
<td></td>
<td><img src="../iconConsole/iconSextanteConsole.png" /></td>
<td>Tool to import Sextante class</td>
<td><span id="toolbarSextClass">Tool to import Sextante class</span></td>
</tr>
<tr>
<td><img src="../iconConsole/iconScriptConsole.png" /></td>
<td><img src="../iconConsole/iconOpenConsole.png" /></td>
<td>Tool to open a python script and load in console</td>
<td><span id="toolbarScriptOpen">Tool to open a python script and load in console</span></td>
</tr>
<tr>
<td></td>
<td><img src="../iconConsole/iconSaveConsole.png" /></td>
<td>Tool to save a python script</td>
<td><span id="toolbarScriptSave">Tool to save a python script</span></td>
</tr>
<tr>
<td><img src="../iconConsole/iconHelpConsole.png" /></td>
<td colspan="2">Help</td>
<td colspan="2"><span id="toolbarHelp">Help</span></td>
</tr>
<tr>
<td><img src="../iconConsole/iconRunConsole.png" /></td>
<td colspan="2">Run command (like Enter key pressed)</td>
<td colspan="2"><span id="toolbarRun">Run command (like Enter key pressed)</span></td>
</tr>
</table>
<br>
<table id="header">
<tr>
<td>
<h4>Acknowledgments</h4>
<h4 id="thanks">Acknowledgments</h4>
</td>
</tr>
</table>
<p>
Thanks to Larry Shaffer who provided the API files.
<span id="thanksText">Thanks to Larry Shaffer who provided the API files.</span>
</p>
</body>
<script type="text/javascript">
var parameter = window.location.search.replace( "?", "" );
var langPathParameters = parameter.split("&");
var locale = langPathParameters[0].split("=");
var jQueryPath = langPathParameters[1].split("=");
var pathJs = jQueryPath[1];
var lang = locale[1];
var jquery = document.createElement("script");
jquery.type = "text/javascript";
jquery.src = pathJs + "/resources/jQuery/jquery-1.8.2.min.js";
document.body.appendChild(jquery);
var jqueryi18n = document.createElement("script");
jqueryi18n.type = "text/javascript";
jqueryi18n.src = pathJs + "/resources/jQuery/jquery.i18n.min.js";
document.body.appendChild(jqueryi18n);
var properties = document.createElement("script");
properties.type = "text/javascript";
properties.src = "i18n/" + lang + ".properties";
document.body.appendChild(properties);
var encode = document.createElement("script");
encode.type = "text/javascript";
encode.src = "js/encoding.js";
document.body.appendChild(encode);
</script>
</html>
8 changes: 8 additions & 0 deletions python/helpConsole/i18n/README
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
You can contribute at translate this help by creating an file *.properties named like
*.ts files (only the locale suffix) which found in Quantum-GIS\i18n directory.
For example: for Italian translation copy and paste a *.properties file and rename it to "it.properties".
The only thing what you have to do is translate the values of the keys in dictionary.

i18n_dict = {
"key" : "value"
}
29 changes: 29 additions & 0 deletions python/helpConsole/i18n/en_US.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
i18n_dict = {
"header.title" : "Python Console for QGIS",
"header.subject" : "Python Console based on PyQScintilla2. (Developed by Salvatore Larosa)",
"header.subject.main" : "To access Quantum GIS environment from this console \
use qgis.utils.iface object (instance of QgisInterface class). \
To import the class QgisInterface can also use the dedicated \
button on the toolbar on the left.",
"features" : "Features",
"features.title" : "Auto-completion and highlighting syntax for the following APIs:",
"features.a" : "CTRL+SPACE to view the auto-completion list.",
"features.b" : "CTRL+ALT+SPACE to view the command history list.",
"features.c" : "Saves the command history by typing '_save' or closing the widget. \
This command saves the history command in the file ~/.qgis/console_history.txt",
"features.d" : "Clears the command history by typing '_clear'. \
This command clears the command history from file ~/.qgis/console_history.txt",
"features.e" : "Clears completely command history by typing '_clearAll'. \
This command clears completely the command history. It has an irreversible effect.",
"toolbar" : "Toolbar",
"toolbar.title" : "The following is a description of the tools in the toolbar:",
"toolbar.clear" : "Tool to clear python console",
"toolbar.iface" : "Tool to import iface class",
"toolbar.sextante" : "Tool to import Sextante class",
"toolbar.script.open" : "Tool to open a python script and load in console",
"toolbar.script.save" : "Tool to save a python script",
"toolbar.help" : "Help",
"toolbar.run" : "Run command (like Enter key pressed)",
"thanks" : "Acknowledgments",
"thanks.text" : "Thanks to Larry Shaffer who provided the API files."
};
29 changes: 29 additions & 0 deletions python/helpConsole/i18n/it.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
i18n_dict = {
"header.title" : "Console Python per QGIS",
"header.subject" : "Console Python basata su PyQScintilla2. (Sviluppata da Salvatore Larosa)",
"header.subject.main" : "Per accedere all'ambiente Quantum GIS da questa console \
usa l'oggetto qgis.utils.iface (istanza della classe QgisInterface). \
Per importare la classe QgisInterface puoi usare anche il bottone dedicato che si trova \
sulla toolbar.",
"features" : "Funzionalità",
"features.title" : "Completamento automatico ed evidenziazione della sintassi per le seguenti APIs:",
"features.a" : "CTRL+SPACE per visualizzare la lista per l'autocompletamento di classi e metodi.",
"features.b" : "CTRL+ALT+SPACE per visualizzare la lista della cronologia dei comandi.",
"features.c" : "Possibilità di salvare la cronologia dei comandi digitando '_save' o semplicemente chiudendo il widget. \
La cronologia verrà salvata all'interno del file ~/.qgis/console_history.txt",
"features.d" : "Possibilità di cancellare la storia dei comandi digitando '_clear'. \
La cronologia verrà cancellata dal file ~/.qgis/console_history.txt",
"features.e" : "Possibilità di cancellare completamente la cronologia dei comandi digitando '_clearAll'. \
La cronologia verrà cancellata sia dal file che dalla memoria temporanea.",
"toolbar" : "Toolbar",
"toolbar.title" : "Di seguito la descrizione dei comandi disponibile nella toolbar:",
"toolbar.clear" : "Strumento per pulire la console",
"toolbar.iface" : "Strumento per importare la classe iface, per accedere all'ambiente QGIS",
"toolbar.sextante" : "Strumento per importare la classe Sextante",
"toolbar.script.open" : "Strumento per aprire un script python da eseguire in console",
"toolbar.script.save" : "Strumento per salvare uno script python sul disco",
"toolbar.help" : "Aiuto",
"toolbar.run" : "Esegui comando (simile al tasto <Invio>)",
"thanks" : "Ringraziamenti",
"thanks.text" : "Grazie a Larry Shaffer per aver fornito i file con le API."
};
23 changes: 23 additions & 0 deletions python/helpConsole/js/encoding.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
$.i18n.setDictionary(i18n_dict);

$('h2#headerTitle').text($.i18n._('header.title'));
$('span#headerSubject').text($.i18n._('header.subject'));
$('span#headerSubjectMain').text($.i18n._('header.subject.main'));
$('h4#features').text($.i18n._('features'));
$('span#featuresTitle').text($.i18n._('features.title'));
$('span#featuresA').text($.i18n._('features.a'));
$('span#featuresB').text($.i18n._('features.b'));
$('span#featuresC').text($.i18n._('features.c'));
$('span#featuresD').text($.i18n._('features.d'));
$('span#featuresE').text($.i18n._('features.e'));
$('h4#toolbar').text($.i18n._('toolbar'));
$('span#toolbarTitle').text($.i18n._('toolbar.title'));
$('span#toolbarClear').text($.i18n._('toolbar.clear'));
$('span#toolbarIfaceClass').text($.i18n._('toolbar.iface'));
$('span#toolbarSextClass').text($.i18n._('toolbar.sextante'));
$('span#toolbarScriptOpen').text($.i18n._('toolbar.script.open'));
$('span#toolbarScriptSave').text($.i18n._('toolbar.script.save'));
$('span#toolbarHelp').text($.i18n._('toolbar.help'));
$('span#toolbarRun').text($.i18n._('toolbar.run'));
$('h4#thanks').text($.i18n._('thanks'));
$('span#thanksText').text($.i18n._('thanks.text'));
2 changes: 2 additions & 0 deletions python/helpConsole/js/jquery-1.8.2.min.js

Large diffs are not rendered by default.

13 changes: 13 additions & 0 deletions python/helpConsole/js/jquery.i18n.min.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
/*
* jQuery i18n plugin
* @requires jQuery v1.1 or later
*
* See http://recursive-design.com/projects/jquery-i18n/
*
* Licensed under the MIT license:
* http://www.opensource.org/licenses/mit-license.php
*
* Version: 0.9.2 (201204070102)
*/
(function(f){f.i18n={dict:null,setDictionary:function(a){this.dict=a},_:function(a,b){var d=a;if(this.dict&&this.dict[a])d=this.dict[a];return this.printf(d,b)},toEntity:function(a){for(var b="",d=0;d<a.length;d++)b+=a.charCodeAt(d)>128?"&#"+a.charCodeAt(d)+";":a.charAt(d);return b},stripStr:function(a){return a.replace(/^\s*/,"").replace(/\s*$/,"")},stripStrML:function(a){a=a.split("\n");for(var b=0;b<a.length;b++)a[b]=stripStr(a[b]);return stripStr(a.join(" "))},printf:function(a,b){if(!b)return a;
for(var d="",e=/%(\d+)\$s/g;result=e.exec(a);){var c=parseInt(result[1],10)-1;a=a.replace("%"+result[1]+"$s",b[c]);b.splice(c,1)}e=a.split("%s");if(e.length>1)for(c=0;c<b.length;c++){if(e[c].lastIndexOf("%")==e[c].length-1&&c!=b.length-1)e[c]+="s"+e.splice(c+1,1)[0];d+=e[c]+b[c]}return d+e[e.length-1]}};f.fn._t=function(a,b){return f(this).text(f.i18n._(a,b))}})(jQuery);
1 change: 1 addition & 0 deletions resources/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
INSTALL(FILES srs.db qgis.db qgis_help.db symbology-ng-style.db spatialite.db customization.xml
DESTINATION ${QGIS_DATA_DIR}/resources)
INSTALL(DIRECTORY cpt-city-qgis-min DESTINATION ${QGIS_DATA_DIR}/resources)
INSTALL(DIRECTORY jQuery DESTINATION ${QGIS_DATA_DIR}/resources)

ADD_SUBDIRECTORY(context_help)
ADD_SUBDIRECTORY(function_help)
2 changes: 2 additions & 0 deletions resources/jQuery/jquery-1.8.2.min.js

Large diffs are not rendered by default.

13 changes: 13 additions & 0 deletions resources/jQuery/jquery.i18n.min.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
/*
* jQuery i18n plugin
* @requires jQuery v1.1 or later
*
* See http://recursive-design.com/projects/jquery-i18n/
*
* Licensed under the MIT license:
* http://www.opensource.org/licenses/mit-license.php
*
* Version: 0.9.2 (201204070102)
*/
(function(f){f.i18n={dict:null,setDictionary:function(a){this.dict=a},_:function(a,b){var d=a;if(this.dict&&this.dict[a])d=this.dict[a];return this.printf(d,b)},toEntity:function(a){for(var b="",d=0;d<a.length;d++)b+=a.charCodeAt(d)>128?"&#"+a.charCodeAt(d)+";":a.charAt(d);return b},stripStr:function(a){return a.replace(/^\s*/,"").replace(/\s*$/,"")},stripStrML:function(a){a=a.split("\n");for(var b=0;b<a.length;b++)a[b]=stripStr(a[b]);return stripStr(a.join(" "))},printf:function(a,b){if(!b)return a;
for(var d="",e=/%(\d+)\$s/g;result=e.exec(a);){var c=parseInt(result[1],10)-1;a=a.replace("%"+result[1]+"$s",b[c]);b.splice(c,1)}e=a.split("%s");if(e.length>1)for(c=0;c<b.length;c++){if(e[c].lastIndexOf("%")==e[c].length-1&&c!=b.length-1)e[c]+="s"+e.splice(c+1,1)[0];d+=e[c]+b[c]}return d+e[e.length-1]}};f.fn._t=function(a,b){return f(this).text(f.i18n._(a,b))}})(jQuery);

0 comments on commit eeefecf

Please sign in to comment.