[ADD] lazy translation function, to correctly translate strings in contexts evaluated before the translation db has been loaded

bzr revid: xmo@openerp.com-20111216130000-56qd717d79529opy
This commit is contained in:
Xavier Morel 2011-12-16 14:00:00 +01:00
parent a8abafcd61
commit a8286263ff
21 changed files with 100 additions and 80 deletions

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2011-12-16 12:21+0100\n"
"POT-Creation-Date: 2011-12-16 13:54+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -20,8 +20,8 @@ msgstr ""
#: addons/web/static/src/js/chrome.js:162
#: addons/web/static/src/js/chrome.js:175
#: addons/web/static/src/js/chrome.js:369
#: addons/web/static/src/js/view_form.js:342
#: addons/web/static/src/js/view_form.js:1056
#: addons/web/static/src/js/view_form.js:355
#: addons/web/static/src/js/view_form.js:1069
#: addons/web/static/src/xml/base.xml:0
msgid "Ok"
msgstr ""
@ -44,14 +44,14 @@ msgstr ""
#: addons/web/static/src/js/view_editor.js:97
#: addons/web/static/src/js/view_editor.js:778
#: addons/web/static/src/js/view_editor.js:907
#: addons/web/static/src/js/view_form.js:1063
#: addons/web/static/src/js/view_form.js:1076
#: addons/web/static/src/xml/base.xml:0
msgid "Cancel"
msgstr ""
#: addons/web/static/src/js/chrome.js:761
#: addons/web/static/src/js/view_editor.js:75
#: addons/web/static/src/js/views.js:859 addons/web/static/src/xml/base.xml:0
#: addons/web/static/src/js/views.js:871 addons/web/static/src/xml/base.xml:0
msgid "Save"
msgstr ""
@ -67,8 +67,8 @@ msgstr ""
#: addons/web/static/src/js/data_import.js:73
#: addons/web/static/src/js/view_editor.js:49
#: addons/web/static/src/js/view_editor.js:387
#: addons/web/static/src/js/view_form.js:2742
#: addons/web/static/src/js/views.js:860
#: addons/web/static/src/js/view_form.js:2755
#: addons/web/static/src/js/views.js:872
msgid "Close"
msgstr ""
@ -200,7 +200,7 @@ msgid "ViewEditor"
msgstr ""
#: addons/web/static/src/js/view_editor.js:46
#: addons/web/static/src/js/view_list.js:16
#: addons/web/static/src/js/view_list.js:17
#: addons/web/static/src/xml/base.xml:0
msgid "Create"
msgstr ""
@ -247,58 +247,58 @@ msgstr ""
msgid "Update"
msgstr ""
#: addons/web/static/src/js/view_form.js:16
#: addons/web/static/src/js/view_form.js:17
msgid "Form"
msgstr ""
#: addons/web/static/src/js/view_form.js:385
#: addons/web/static/src/js/view_form.js:398
msgid "Warning, the record has been modified, your changes will be discarded."
msgstr ""
#: addons/web/static/src/js/view_form.js:593
#: addons/web/static/src/js/view_form.js:606
msgid "Attachments"
msgstr ""
#: addons/web/static/src/js/view_form.js:631
#: addons/web/static/src/js/view_form.js:644
#, python-format
msgid "Do you really want to delete the attachment %s?"
msgstr ""
#: addons/web/static/src/js/view_form.js:1053
#: addons/web/static/src/js/view_form.js:1066
msgid "Confirm"
msgstr ""
#: addons/web/static/src/js/view_form.js:1816
#: addons/web/static/src/js/view_form.js:1829
msgid "<em>   Search More...</em>"
msgstr ""
#: addons/web/static/src/js/view_form.js:1829
#: addons/web/static/src/js/view_form.js:1842
#, python-format
msgid "<em>   Create \"<strong>%s</strong>\"</em>"
msgstr ""
#: addons/web/static/src/js/view_form.js:1835
#: addons/web/static/src/js/view_form.js:1848
msgid "<em>   Create and Edit...</em>"
msgstr ""
#: addons/web/static/src/js/view_form.js:2378
#: addons/web/static/src/js/view_form.js:2391
#: addons/web/static/src/xml/base.xml:0
msgid "Add"
msgstr ""
#: addons/web/static/src/js/view_list.js:7
#: addons/web/static/src/js/view_list.js:8
msgid "List"
msgstr ""
#: addons/web/static/src/js/view_list.js:268
#: addons/web/static/src/js/view_list.js:269
msgid "Unlimited"
msgstr ""
#: addons/web/static/src/js/view_list.js:491
#: addons/web/static/src/js/view_list.js:516
msgid "Do you really want to remove these records?"
msgstr ""
#: addons/web/static/src/js/view_list.js:1177
#: addons/web/static/src/js/view_list.js:1202
msgid "Undefined"
msgstr ""
@ -318,76 +318,76 @@ msgstr ""
msgid "Tree"
msgstr ""
#: addons/web/static/src/js/views.js:583
#: addons/web/static/src/js/views.js:590
msgid "Search: "
msgstr ""
#: addons/web/static/src/js/views.js:698
#: addons/web/static/src/js/views.js:710
msgid "Customize"
msgstr ""
#: addons/web/static/src/js/views.js:701
#: addons/web/static/src/js/views.js:713
msgid "Manage Views"
msgstr ""
#: addons/web/static/src/js/views.js:703 addons/web/static/src/js/views.js:707
#: addons/web/static/src/js/views.js:712
#: addons/web/static/src/js/views.js:715 addons/web/static/src/js/views.js:719
#: addons/web/static/src/js/views.js:724
msgid "Manage views of the current object"
msgstr ""
#: addons/web/static/src/js/views.js:705
#: addons/web/static/src/js/views.js:717
msgid "Edit Workflow"
msgstr ""
#: addons/web/static/src/js/views.js:710
#: addons/web/static/src/js/views.js:722
msgid "Customize Object"
msgstr ""
#: addons/web/static/src/js/views.js:714
#: addons/web/static/src/js/views.js:726
msgid "Translate"
msgstr ""
#: addons/web/static/src/js/views.js:716
#: addons/web/static/src/js/views.js:728
msgid "Technical translation"
msgstr ""
#: addons/web/static/src/js/views.js:721
#: addons/web/static/src/js/views.js:733
msgid "Other Options"
msgstr ""
#: addons/web/static/src/js/views.js:724 addons/web/static/src/xml/base.xml:0
#: addons/web/static/src/js/views.js:736 addons/web/static/src/xml/base.xml:0
msgid "Import"
msgstr ""
#: addons/web/static/src/js/views.js:727 addons/web/static/src/xml/base.xml:0
#: addons/web/static/src/js/views.js:739 addons/web/static/src/xml/base.xml:0
msgid "Export"
msgstr ""
#: addons/web/static/src/js/views.js:730
#: addons/web/static/src/js/views.js:742
msgid "View Log"
msgstr ""
#: addons/web/static/src/js/views.js:739
#: addons/web/static/src/js/views.js:751
msgid "Reports"
msgstr ""
#: addons/web/static/src/js/views.js:739
#: addons/web/static/src/js/views.js:751
msgid "Actions"
msgstr ""
#: addons/web/static/src/js/views.js:739
#: addons/web/static/src/js/views.js:751
msgid "Links"
msgstr ""
#: addons/web/static/src/js/views.js:819
#: addons/web/static/src/js/views.js:831
msgid "You must choose at least one record."
msgstr ""
#: addons/web/static/src/js/views.js:820
#: addons/web/static/src/js/views.js:832
msgid "Warning"
msgstr ""
#: addons/web/static/src/js/views.js:854
#: addons/web/static/src/js/views.js:866
msgid "Translations"
msgstr ""

View File

@ -1128,12 +1128,26 @@ if ($.blockUI) {
/** Configure default qweb */
openerp.web._t = new openerp.web.TranslationDataBase().build_translation_function();
/**
* Lazy translation function, only performs the translation when actually
* printed (e.g. inserted into a template)
*
* Useful when defining translatable strings in code evaluated before the
* translation database is loaded, as class attributes or at the top-level of
* an OpenERP Web module
*
* @param {String} s string to translate
* @returns {Object} lazy translation object
*/
openerp.web._lt = function (s) {
return {toString: function () { return openerp.web._t(s); }}
};
openerp.web.qweb = new QWeb2.Engine();
openerp.web.qweb.debug = (window.location.search.indexOf('?debug') !== -1);
openerp.web.qweb.default_dict = {
'_' : _,
'_t' : openerp.web._t
}
};
openerp.web.qweb.format_text_node = function(s) {
// Note that 'this' is the Qweb Node of the text
var translation = this.node.parentNode.attributes['t-translation'];

View File

@ -1,6 +1,7 @@
openerp.web.form = function (openerp) {
var _t = openerp.web._t;
var _t = openerp.web._t,
_lt = openerp.web._lt;
var QWeb = openerp.web.qweb;
openerp.web.views.add('form', 'openerp.web.FormView');
@ -13,7 +14,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
readonly : false,
form_template: "FormView",
identifier_prefix: 'formview-',
display_name: {toString: function () { return _t('Form'); }},
display_name: _lt('Form'),
/**
* @constructs openerp.web.FormView
* @extends openerp.web.View

View File

@ -1,10 +1,11 @@
openerp.web.list = function (openerp) {
var _t = openerp.web._t;
var _t = openerp.web._t,
_lt = openerp.web._lt;
var QWeb = openerp.web.qweb;
openerp.web.views.add('list', 'openerp.web.ListView');
openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView# */ {
_template: 'ListView',
display_name: {toString: function () { return _t('List'); }},
display_name: _lt('List'),
defaults: {
// records can be selected one by one
'selectable': true,
@ -13,7 +14,7 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView#
// whether the column headers should be displayed
'header': true,
// display addition button, with that label
'addable': {toString: function () { return _t("Create"); }},
'addable': _lt("Create"),
// whether the list view can be sorted, note that once a view has been
// sorted it can not be reordered anymore
'sortable': true,

View File

@ -1,11 +1,11 @@
openerp.web.page = function (openerp) {
var _t = openerp.web._t;
var QWeb = openerp.web.qweb;
var _t = openerp.web._t,
_lt = openerp.web._lt;
openerp.web.views.add('page', 'openerp.web.PageView');
openerp.web.PageView = openerp.web.FormView.extend({
form_template: "PageView",
display_name: {toString: function () { return _t('Page'); }},
display_name: _lt('Page'),
init: function () {
this._super.apply(this, arguments);
this.registry = openerp.web.page.readonly;

View File

@ -4,11 +4,11 @@
openerp.web.view_tree = function(openerp) {
var QWeb = openerp.web.qweb,
_t = openerp.web._t;
_lt = openerp.web._lt;
openerp.web.views.add('tree', 'openerp.web.TreeView');
openerp.web.TreeView = openerp.web.View.extend(/** @lends openerp.web.TreeView# */{
display_name: {toString: function () { return _t('Tree'); }},
display_name: _lt('Tree'),
/**
* Indicates that this view is not searchable, and thus that no search
* view should be displayed (if there is one active).

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2011-12-16 12:21+0100\n"
"POT-Creation-Date: 2011-12-16 13:54+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -17,15 +17,15 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.6\n"
#: addons/web_calendar/static/src/js/calendar.js:10
#: addons/web_calendar/static/src/js/calendar.js:11
msgid "Calendar"
msgstr ""
#: addons/web_calendar/static/src/js/calendar.js:445
#: addons/web_calendar/static/src/js/calendar.js:446
msgid "Responsible"
msgstr ""
#: addons/web_calendar/static/src/js/calendar.js:474
#: addons/web_calendar/static/src/js/calendar.js:475
msgid "Navigator"
msgstr ""

View File

@ -3,11 +3,12 @@
*---------------------------------------------------------*/
openerp.web_calendar = function(openerp) {
var _t = openerp.web._t;
var _t = openerp.web._t,
_lt = openerp.web._lt;
var QWeb = openerp.web.qweb;
openerp.web.views.add('calendar', 'openerp.web_calendar.CalendarView');
openerp.web_calendar.CalendarView = openerp.web.View.extend({
display_name: {toString: function () { return _t('Calendar'); }},
display_name: _lt('Calendar'),
// Dhtmlx scheduler ?
init: function(parent, dataset, view_id, options) {
this._super(parent);

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2011-12-16 12:21+0100\n"
"POT-Creation-Date: 2011-12-16 13:54+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2011-12-16 12:21+0100\n"
"POT-Creation-Date: 2011-12-16 13:54+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2011-12-16 12:21+0100\n"
"POT-Creation-Date: 2011-12-16 13:54+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -17,15 +17,15 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.6\n"
#: addons/web_diagram/static/src/js/diagram.js:10
#: addons/web_diagram/static/src/js/diagram.js:11
msgid "Diagram"
msgstr ""
#: addons/web_diagram/static/src/js/diagram.js:209
#: addons/web_diagram/static/src/js/diagram.js:210
msgid "Cancel"
msgstr ""
#: addons/web_diagram/static/src/js/diagram.js:210
#: addons/web_diagram/static/src/js/diagram.js:211
msgid "Save"
msgstr ""

View File

@ -4,10 +4,11 @@
openerp.web_diagram = function (openerp) {
var QWeb = openerp.web.qweb,
_t = openerp.web._t;
_t = openerp.web._t,
_lt = openerp.web._lt;
openerp.web.views.add('diagram', 'openerp.web.DiagramView');
openerp.web.DiagramView = openerp.web.View.extend({
display_name: {toString: function () { return _t('Diagram'); }},
display_name: _lt('Diagram'),
searchable: false,
init: function(parent, dataset, view_id, options) {
this._super(parent);

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2011-12-16 12:21+0100\n"
"POT-Creation-Date: 2011-12-16 13:54+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -17,15 +17,15 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.6\n"
#: addons/web_gantt/static/src/js/gantt.js:9
#: addons/web_gantt/static/src/js/gantt.js:10
msgid "Gantt"
msgstr ""
#: addons/web_gantt/static/src/js/gantt.js:50
#: addons/web_gantt/static/src/js/gantt.js:51
msgid "date_start is not defined "
msgstr ""
#: addons/web_gantt/static/src/js/gantt.js:109
#: addons/web_gantt/static/src/js/gantt.js:110
msgid "date_start is not defined"
msgstr ""

View File

@ -2,11 +2,12 @@
* OpenERP web_gantt
*---------------------------------------------------------*/
openerp.web_gantt = function (openerp) {
var _t = openerp.web._t;
var _t = openerp.web._t,
_lt = openerp.web._lt;
var QWeb = openerp.web.qweb;
openerp.web.views.add('gantt', 'openerp.web_gantt.GanttView');
openerp.web_gantt.GanttView = openerp.web.View.extend({
display_name: {toString: function () { return _t('Gantt'); }},
display_name: _lt('Gantt'),
init: function(parent, dataset, view_id) {
this._super(parent);

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2011-12-16 12:21+0100\n"
"POT-Creation-Date: 2011-12-16 13:54+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -13,10 +13,10 @@ var COLOR_PALETTE = [
'#cc0000', '#d400a8'];
var QWeb = openerp.web.qweb,
_t = openerp.web._t;
_lt = openerp.web._lt;
openerp.web.views.add('graph', 'openerp.web_graph.GraphView');
openerp.web_graph.GraphView = openerp.web.View.extend({
display_name: {toString: function () { return _t('Graph'); }},
display_name: _lt('Graph'),
init: function(parent, dataset, view_id, options) {
this._super(parent);

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2011-12-16 12:21+0100\n"
"POT-Creation-Date: 2011-12-16 13:54+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -1,12 +1,13 @@
openerp.web_kanban = function (openerp) {
var _t = openerp.web._t;
var _t = openerp.web._t,
_lt = openerp.web._lt;
var QWeb = openerp.web.qweb;
openerp.web.views.add('kanban', 'openerp.web_kanban.KanbanView');
openerp.web_kanban.KanbanView = openerp.web.View.extend({
template: "KanbanView",
display_name: {toString: function () { return _t('Kanban'); }},
display_name: _lt('Kanban'),
default_nr_columns: 3,
init: function (parent, dataset, view_id, options) {
this._super(parent);

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2011-12-16 12:21+0100\n"
"POT-Creation-Date: 2011-12-16 13:54+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2011-12-16 12:21+0100\n"
"POT-Creation-Date: 2011-12-16 13:54+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -47,7 +47,7 @@ then
extract_module web_rpc
elif [ -n "$2" ]
then
./npybabel.py extract -F babel.cfg -o $2 -k _t --no-default-keywords $1
./npybabel.py extract -F babel.cfg -o $2 -k _t -k _lt --no-default-keywords $1
else
usage
fi