Mark strings to be translated.

Maybe some missed, but most of them marked.

bzr revid: tsabi-20121129002200-20tppzvh0ap5tfwe
This commit is contained in:
tsabi 2012-11-29 01:22:00 +01:00
parent 93091dad79
commit 92e87f7e6f
11 changed files with 80 additions and 76 deletions

View File

@ -28,6 +28,7 @@ except ImportError:
xlwt = None xlwt = None
import openerp import openerp
from openerp.tools.translate import _
from .. import http from .. import http
from .. import nonliterals from .. import nonliterals
@ -821,7 +822,7 @@ class Database(openerpweb.Controller):
except xmlrpclib.Fault, e: except xmlrpclib.Fault, e:
if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied': if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied':
return {'error': e.faultCode, 'title': 'Drop Database'} return {'error': e.faultCode, 'title': 'Drop Database'}
return {'error': 'Could not drop database !', 'title': 'Drop Database'} return {'error': _('Could not drop database !'), 'title': _('Drop Database')}
@openerpweb.httprequest @openerpweb.httprequest
def backup(self, req, backup_db, backup_pwd, token): def backup(self, req, backup_db, backup_pwd, token):
@ -839,7 +840,7 @@ class Database(openerpweb.Controller):
{'fileToken': int(token)} {'fileToken': int(token)}
) )
except xmlrpclib.Fault, e: except xmlrpclib.Fault, e:
return simplejson.dumps([[],[{'error': e.faultCode, 'title': 'backup Database'}]]) return simplejson.dumps([[],[{'error': e.faultCode, 'title': _('Backup Database')}]])
@openerpweb.httprequest @openerpweb.httprequest
def restore(self, req, db_file, restore_pwd, new_db): def restore(self, req, db_file, restore_pwd, new_db):
@ -860,8 +861,8 @@ class Database(openerpweb.Controller):
return req.session.proxy("db").change_admin_password(old_password, new_password) return req.session.proxy("db").change_admin_password(old_password, new_password)
except xmlrpclib.Fault, e: except xmlrpclib.Fault, e:
if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied': if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied':
return {'error': e.faultCode, 'title': 'Change Password'} return {'error': e.faultCode, 'title': _('Change Password')}
return {'error': 'Error, password not changed !', 'title': 'Change Password'} return {'error': _('Error, password not changed !'), 'title': _('Change Password')}
class Session(openerpweb.Controller): class Session(openerpweb.Controller):
_cp_path = "/web/session" _cp_path = "/web/session"
@ -897,16 +898,16 @@ class Session(openerpweb.Controller):
old_password, new_password,confirm_password = operator.itemgetter('old_pwd', 'new_password','confirm_pwd')( old_password, new_password,confirm_password = operator.itemgetter('old_pwd', 'new_password','confirm_pwd')(
dict(map(operator.itemgetter('name', 'value'), fields))) dict(map(operator.itemgetter('name', 'value'), fields)))
if not (old_password.strip() and new_password.strip() and confirm_password.strip()): if not (old_password.strip() and new_password.strip() and confirm_password.strip()):
return {'error':'You cannot leave any password empty.','title': 'Change Password'} return {'error':_('You cannot leave any password empty.'),'title': _('Change Password')}
if new_password != confirm_password: if new_password != confirm_password:
return {'error': 'The new password and its confirmation must be identical.','title': 'Change Password'} return {'error': _('The new password and its confirmation must be identical.'),'title': _('Change Password')}
try: try:
if req.session.model('res.users').change_password( if req.session.model('res.users').change_password(
old_password, new_password): old_password, new_password):
return {'new_password':new_password} return {'new_password':new_password}
except Exception: except Exception:
return {'error': 'The old password you provided is incorrect, your password was not changed.', 'title': 'Change Password'} return {'error': _('The old password you provided is incorrect, your password was not changed.'), 'title': _('Change Password')}
return {'error': 'Error, password not changed !', 'title': 'Change Password'} return {'error': _('Error, password not changed !'), 'title': _('Change Password')}
@openerpweb.jsonrequest @openerpweb.jsonrequest
def sc_list(self, req): def sc_list(self, req):
@ -918,7 +919,7 @@ class Session(openerpweb.Controller):
try: try:
return req.session.proxy("db").list_lang() or [] return req.session.proxy("db").list_lang() or []
except Exception, e: except Exception, e:
return {"error": e, "title": "Languages"} return {"error": e, "title": _("Languages")}
@openerpweb.jsonrequest @openerpweb.jsonrequest
def modules(self, req): def modules(self, req):
@ -1450,7 +1451,7 @@ class SearchView(View):
if not isinstance(parsed_domain, nonliterals.BaseDomain) if not isinstance(parsed_domain, nonliterals.BaseDomain)
else req.session.eval_domain(parsed_domain)) else req.session.eval_domain(parsed_domain))
except Exception: except Exception:
logger.exception("Failed to parse custom filter %s in %s", logger.exception(_("Failed to parse custom filter %s in %s"),
filter['name'], model) filter['name'], model)
filter['disabled'] = True filter['disabled'] = True
del filter['context'] del filter['context']
@ -1571,7 +1572,7 @@ class Binary(openerpweb.Controller):
res = Model.default_get(fields, context) res = Model.default_get(fields, context)
filecontent = base64.b64decode(res.get(field, '')) filecontent = base64.b64decode(res.get(field, ''))
if not filecontent: if not filecontent:
raise ValueError("No content found for field '%s' on '%s:%s'" % raise ValueError(_("No content found for field '%s' on '%s:%s'") %
(field, model, id)) (field, model, id))
else: else:
filename = '%s_%s' % (model.replace('.', '_'), id) filename = '%s_%s' % (model.replace('.', '_'), id)

View File

@ -289,7 +289,7 @@ instance.web.CrashManager = instance.web.Class.extend({
}); });
instance.web.Loading = instance.web.Widget.extend({ instance.web.Loading = instance.web.Widget.extend({
template: 'Loading', template: _t("Loading"),
init: function(parent) { init: function(parent) {
this._super(parent); this._super(parent);
this.count = 0; this.count = 0;
@ -390,11 +390,11 @@ instance.web.DatabaseManager = instance.web.Widget.extend({
self.$el.find("form[name=restore_db_form]").validate({ submitHandler: self.do_restore }); self.$el.find("form[name=restore_db_form]").validate({ submitHandler: self.do_restore });
self.$el.find("form[name=change_pwd_form]").validate({ self.$el.find("form[name=change_pwd_form]").validate({
messages: { messages: {
old_pwd: "Please enter your previous password", old_pwd: _t("Please enter your previous password"),
new_pwd: "Please enter your new password", new_pwd: _t("Please enter your new password"),
confirm_pwd: { confirm_pwd: {
required: "Please confirm your new password", required: _t("Please confirm your new password"),
equalTo: "The confirmation does not match the password" equalTo: _t("The confirmation does not match the password")
} }
}, },
submitHandler: self.do_change_password submitHandler: self.do_change_password
@ -478,7 +478,7 @@ instance.web.DatabaseManager = instance.web.Widget.extend({
self.display_error(result); self.display_error(result);
return; return;
} }
self.do_notify("Duplicating database", "The database has been duplicated."); self.do_notify(_t("Duplicating database"), _t("The database has been duplicated."));
self.start(); self.start();
}); });
}, },
@ -488,7 +488,7 @@ instance.web.DatabaseManager = instance.web.Widget.extend({
fields = $form.serializeArray(), fields = $form.serializeArray(),
$db_list = $form.find('[name=drop_db]'), $db_list = $form.find('[name=drop_db]'),
db = $db_list.val(); db = $db_list.val();
if (!db || !confirm("Do you really want to delete the database: " + db + " ?")) { if (!db || !confirm(_.str.sprintf(_t("Do you really want to delete the database: %s ?"), db))) {
return; return;
} }
self.rpc("/web/database/drop", {'fields': fields}).done(function(result) { self.rpc("/web/database/drop", {'fields': fields}).done(function(result) {
@ -496,7 +496,7 @@ instance.web.DatabaseManager = instance.web.Widget.extend({
self.display_error(result); self.display_error(result);
return; return;
} }
self.do_notify("Dropping database", "The database '" + db + "' has been dropped"); self.do_notify(_t("Dropping database"), _.str.sprintf(_t("The database %s has been dropped"), db));
self.start(); self.start();
}); });
}, },
@ -511,7 +511,7 @@ instance.web.DatabaseManager = instance.web.Widget.extend({
error: function(error){ error: function(error){
if(error){ if(error){
self.display_error({ self.display_error({
title: 'Backup Database', title: _t("Backup Database"),
error: 'AccessDenied' error: 'AccessDenied'
}); });
} }
@ -534,13 +534,13 @@ instance.web.DatabaseManager = instance.web.Widget.extend({
if (body.indexOf('403 Forbidden') !== -1) { if (body.indexOf('403 Forbidden') !== -1) {
self.display_error({ self.display_error({
title: 'Access Denied', title: _t("Access Denied"),
error: 'Incorrect super-administrator password' error: _t("Incorrect super-administrator password")
}); });
} else { } else {
self.display_error({ self.display_error({
title: 'Restore Database', title: _t("Restore Database"),
error: 'Could not restore the database' error: _t("Could not restore the database")
}); });
} }
}, },
@ -560,7 +560,7 @@ instance.web.DatabaseManager = instance.web.Widget.extend({
return; return;
} }
self.unblockUI(); self.unblockUI();
self.do_notify("Changed Password", "Password has been changed successfully"); self.do_notify(_t("Changed Password"), _t("Password has been changed successfully"));
}); });
}, },
do_exit: function () { do_exit: function () {
@ -642,7 +642,7 @@ instance.web.Login = instance.web.Widget.extend({
} }
var db = this.$("form [name=db]").val(); var db = this.$("form [name=db]").val();
if (!db) { if (!db) {
this.do_warn("Login", "No database selected !"); this.do_warn(_t("Login"), _t("No database selected !"));
return false; return false;
} }
var login = this.$("form input[name=login]").val(); var login = this.$("form input[name=login]").val();
@ -678,7 +678,7 @@ instance.web.Login = instance.web.Widget.extend({
self.trigger('login_successful'); self.trigger('login_successful');
}, function () { }, function () {
self.$(".oe_login_pane").fadeIn("fast", function() { self.$(".oe_login_pane").fadeIn("fast", function() {
self.show_error("Invalid username or password"); self.show_error(_t("Invalid username or password"));
}); });
}); });
}, },
@ -765,7 +765,7 @@ instance.web.ChangePassword = instance.web.Widget.extend({
template: "ChangePassword", template: "ChangePassword",
start: function() { start: function() {
var self = this; var self = this;
this.getParent().dialog_title = "Change Password"; this.getParent().dialog_title = _t("Change Password");
var $button = self.$el.find('.oe_form_button'); var $button = self.$el.find('.oe_form_button');
$button.appendTo(this.getParent().$buttons); $button.appendTo(this.getParent().$buttons);
$button.eq(2).click(function(){ $button.eq(2).click(function(){

View File

@ -1,5 +1,6 @@
openerp.web.dates = function(instance) { openerp.web.dates = function(instance) {
var _t = instance.web._t;
/** /**
* Converts a string to a Date javascript object using OpenERP's * Converts a string to a Date javascript object using OpenERP's
@ -18,11 +19,11 @@ instance.web.str_to_datetime = function(str) {
var regex = /^(\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d)(?:\.\d+)?$/; var regex = /^(\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d)(?:\.\d+)?$/;
var res = regex.exec(str); var res = regex.exec(str);
if ( !res ) { if ( !res ) {
throw new Error("'" + str + "' is not a valid datetime"); throw new Error(_.str.sprintf(_t("'%s' is not a valid datetime"), str));
} }
var obj = Date.parseExact(res[1] + " UTC", 'yyyy-MM-dd HH:mm:ss zzz'); var obj = Date.parseExact(res[1] + " UTC", 'yyyy-MM-dd HH:mm:ss zzz');
if (! obj) { if (! obj) {
throw new Error("'" + str + "' is not a valid datetime"); throw new Error(_.str.sprintf(_t("'%s' is not a valid datetime"), str));
} }
return obj; return obj;
}; };
@ -45,11 +46,11 @@ instance.web.str_to_date = function(str) {
var regex = /^\d\d\d\d-\d\d-\d\d$/; var regex = /^\d\d\d\d-\d\d-\d\d$/;
var res = regex.exec(str); var res = regex.exec(str);
if ( !res ) { if ( !res ) {
throw new Error("'" + str + "' is not a valid date"); throw new Error(_.str.sprintf(_t("'%s' is not a valid date"), str));
} }
var obj = Date.parseExact(str, 'yyyy-MM-dd'); var obj = Date.parseExact(str, 'yyyy-MM-dd');
if (! obj) { if (! obj) {
throw new Error("'" + str + "' is not a valid date"); throw new Error(_.str.sprintf(_t("'%s' is not a valid date"), str));
} }
return obj; return obj;
}; };
@ -72,11 +73,11 @@ instance.web.str_to_time = function(str) {
var regex = /^(\d\d:\d\d:\d\d)(?:\.\d+)?$/; var regex = /^(\d\d:\d\d:\d\d)(?:\.\d+)?$/;
var res = regex.exec(str); var res = regex.exec(str);
if ( !res ) { if ( !res ) {
throw new Error("'" + str + "' is not a valid time"); throw new Error(_.str.sprintf(_t("'%s' is not a valid time"), str));
} }
var obj = Date.parseExact("1970-01-01 " + res[1], 'yyyy-MM-dd HH:mm:ss'); var obj = Date.parseExact("1970-01-01 " + res[1], 'yyyy-MM-dd HH:mm:ss');
if (! obj) { if (! obj) {
throw new Error("'" + str + "' is not a valid time"); throw new Error(_.str.sprintf(_t("'%s' is not a valid time"), str));
} }
return obj; return obj;
}; };

View File

@ -224,7 +224,7 @@ instance.web.parse_value = function (value, descriptor, value_if_empty) {
} while(tmp !== value); } while(tmp !== value);
tmp = Number(value); tmp = Number(value);
if (isNaN(tmp)) if (isNaN(tmp))
throw new Error(value + " is not a correct integer"); throw new Error(_.str.sprintf(_t("'%s' is not a correct integer"), value));
return tmp; return tmp;
case 'float': case 'float':
var tmp = Number(value); var tmp = Number(value);
@ -239,7 +239,7 @@ instance.web.parse_value = function (value, descriptor, value_if_empty) {
var reformatted_value = tmp.replace(instance.web._t.database.parameters.decimal_point, "."); var reformatted_value = tmp.replace(instance.web._t.database.parameters.decimal_point, ".");
var parsed = Number(reformatted_value); var parsed = Number(reformatted_value);
if (isNaN(parsed)) if (isNaN(parsed))
throw new Error(value + " is not a correct float"); throw new Error(_.str.sprintf(_t("'%s' is not a correct float"), value));
return parsed; return parsed;
case 'float_time': case 'float_time':
var factor = 1; var factor = 1;
@ -263,7 +263,7 @@ instance.web.parse_value = function (value, descriptor, value_if_empty) {
datetime = Date.parse(value); datetime = Date.parse(value);
if (datetime !== null) if (datetime !== null)
return instance.web.datetime_to_str(datetime); return instance.web.datetime_to_str(datetime);
throw new Error(value + " is not a valid datetime"); throw new Error(_.str.sprintf(_t("'%s' is not a correct datetime"), value));
case 'date': case 'date':
var date = Date.parseExact(value, date_pattern); var date = Date.parseExact(value, date_pattern);
if (date !== null) if (date !== null)
@ -271,7 +271,7 @@ instance.web.parse_value = function (value, descriptor, value_if_empty) {
date = Date.parse(value); date = Date.parse(value);
if (date !== null) if (date !== null)
return instance.web.date_to_str(date); return instance.web.date_to_str(date);
throw new Error(value + " is not a valid date"); throw new Error(_.str.sprintf(_t("'%s' is not a correct date"), value));
case 'time': case 'time':
var time = Date.parseExact(value, time_pattern); var time = Date.parseExact(value, time_pattern);
if (time !== null) if (time !== null)
@ -279,7 +279,7 @@ instance.web.parse_value = function (value, descriptor, value_if_empty) {
time = Date.parse(value); time = Date.parse(value);
if (time !== null) if (time !== null)
return instance.web.time_to_str(time); return instance.web.time_to_str(time);
throw new Error(value + " is not a valid time"); throw new Error(_.str.sprintf(_t("'%s' is not a correct time"), value));
} }
return value; return value;
}; };
@ -294,7 +294,7 @@ instance.web.auto_str_to_date = function(value, type) {
try { try {
return instance.web.str_to_time(value); return instance.web.str_to_time(value);
} catch(e) {} } catch(e) {}
throw new Error("'" + value + "' is not a valid date, datetime nor time"); throw new Error(_.str.sprintf(_t("'%s' is not a correct date, datetime nor time"), value));
}; };
instance.web.auto_date_to_str = function(value, type) { instance.web.auto_date_to_str = function(value, type) {
@ -306,7 +306,7 @@ instance.web.auto_date_to_str = function(value, type) {
case 'time': case 'time':
return instance.web.time_to_str(value); return instance.web.time_to_str(value);
default: default:
throw new Error(type + " is not convertible to date, datetime nor time"); throw new Error(_.str.sprintf(_t("'%s' is not convertible to date, datetime nor time"), type));
} }
}; };

View File

@ -148,7 +148,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
load_form: function(data) { load_form: function(data) {
var self = this; var self = this;
if (!data) { if (!data) {
throw new Error("No data provided."); throw new Error(_t("No data provided."));
} }
if (this.arch) { if (this.arch) {
throw "Form view does not support multiple calls to load_form"; throw "Form view does not support multiple calls to load_form";
@ -316,12 +316,12 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
var self = this, set_values = []; var self = this, set_values = [];
if (!record) { if (!record) {
this.set({ 'title' : undefined }); this.set({ 'title' : undefined });
this.do_warn("Form", "The record could not be found in the database.", true); this.do_warn(_t("Form"), _t("The record could not be found in the database."), true);
return $.Deferred().reject(); return $.Deferred().reject();
} }
this.datarecord = record; this.datarecord = record;
this._actualize_mode(); this._actualize_mode();
this.set({ 'title' : record.id ? record.display_name : "New" }); this.set({ 'title' : record.id ? record.display_name : _t("New") });
_(this.fields).each(function (field, f) { _(this.fields).each(function (field, f) {
field._dirty_flag = false; field._dirty_flag = false;
@ -431,7 +431,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
var onchange = _.str.trim(on_change); var onchange = _.str.trim(on_change);
var call = onchange.match(/^\s?(.*?)\((.*?)\)\s?$/); var call = onchange.match(/^\s?(.*?)\((.*?)\)\s?$/);
if (!call) { if (!call) {
throw new Error("Wrong on change format: " + onchange); throw new Error(_.str.sprintf( _t("Wrong on change format: %s"), onchange ));
} }
var method = call[1]; var method = call[1];
@ -872,7 +872,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
}).value(); }).value();
warnings.unshift('<ul>'); warnings.unshift('<ul>');
warnings.push('</ul>'); warnings.push('</ul>');
this.do_warn("The following fields are invalid :", warnings.join('')); this.do_warn(_t("The following fields are invalid:", warnings.join(''));
}, },
/** /**
* Reload the form after saving * Reload the form after saving
@ -1241,11 +1241,11 @@ instance.web.form.FormRenderingEngine = instance.web.form.FormRenderingEngineInt
_.each(this.fields_to_init, function($elem) { _.each(this.fields_to_init, function($elem) {
var name = $elem.attr("name"); var name = $elem.attr("name");
if (!self.fvg.fields[name]) { if (!self.fvg.fields[name]) {
throw new Error("Field '" + name + "' specified in view could not be found."); throw new Error(_.str.sprintf(_t("Field '%s' specified in view could not be found."), name));
} }
var obj = self.fields_registry.get_any([$elem.attr('widget'), self.fvg.fields[name].type]); var obj = self.fields_registry.get_any([$elem.attr('widget'), self.fvg.fields[name].type]);
if (!obj) { if (!obj) {
throw new Error("Widget type '"+ $elem.attr('widget') + "' is not implemented"); throw new Error(_.str.sprintf(_t("Widget type '%s' is not implemented"), $elem.attr('widget')));
} }
var w = new (obj)(self.view, instance.web.xml_to_json($elem[0])); var w = new (obj)(self.view, instance.web.xml_to_json($elem[0]));
var $label = self.labels[$elem.attr("name")]; var $label = self.labels[$elem.attr("name")];
@ -2319,7 +2319,7 @@ instance.web.form.FieldEmail = instance.web.form.FieldChar.extend({
}, },
on_button_clicked: function() { on_button_clicked: function() {
if (!this.get('value') || !this.is_syntax_valid()) { if (!this.get('value') || !this.is_syntax_valid()) {
this.do_warn("E-mail error", "Can't send email to invalid e-mail address"); this.do_warn(_t("E-mail error"), _t("Can't send email to invalid e-mail address"));
} else { } else {
location.href = 'mailto:' + this.get('value'); location.href = 'mailto:' + this.get('value');
} }
@ -2348,7 +2348,7 @@ instance.web.form.FieldUrl = instance.web.form.FieldChar.extend({
}, },
on_button_clicked: function() { on_button_clicked: function() {
if (!this.get('value')) { if (!this.get('value')) {
this.do_warn("Resource error", "This resource is empty"); this.do_warn(_t("Resource error"), _t("This resource is empty"));
} else { } else {
var url = $.trim(this.get('value')); var url = $.trim(this.get('value'));
if(/^www\./i.test(url)) if(/^www\./i.test(url))
@ -3385,7 +3385,7 @@ instance.web.form.FieldOne2Many = instance.web.form.AbstractField.extend({
var views = []; var views = [];
_.each(modes, function(mode) { _.each(modes, function(mode) {
if (! _.include(["list", "tree", "graph", "kanban"], mode)) { if (! _.include(["list", "tree", "graph", "kanban"], mode)) {
throw new Error(_.str.sprintf("View type '%s' is not supported in One2Many.", mode)); throw new Error(_.str.sprintf(_t("View type '%s' is not supported in One2Many."), mode));
} }
var view = { var view = {
view_id: false, view_id: false,
@ -4840,7 +4840,7 @@ instance.web.form.FieldBinary = instance.web.form.AbstractField.extend(instance.
}, },
on_file_uploaded: function(size, name, content_type, file_base64) { on_file_uploaded: function(size, name, content_type, file_base64) {
if (size === false) { if (size === false) {
this.do_warn("File Upload", "There was a problem while uploading your file"); this.do_warn(_t("File Upload"), _t("There was a problem while uploading your file"));
// TODO: use openerp web crashmanager // TODO: use openerp web crashmanager
console.warn("Error while uploading file : ", name); console.warn("Error while uploading file : ", name);
} else { } else {
@ -5009,7 +5009,7 @@ instance.web.form.FieldMany2ManyBinaryMultiFiles = instance.web.form.AbstractFie
this.field_manager = field_manager; this.field_manager = field_manager;
this.node = node; this.node = node;
if(this.field.type != "many2many" || this.field.relation != 'ir.attachment') { if(this.field.type != "many2many" || this.field.relation != 'ir.attachment') {
throw "The type of the field '"+this.field.string+"' must be a many2many field with a relation to 'ir.attachment' model."; throw _.str.sprintf(_t("The type of the field '%s' must be a many2many field with a relation to 'ir.attachment' model."), this.field.string);
} }
this.ds_file = new instance.web.DataSetSearch(this, 'ir.attachment'); this.ds_file = new instance.web.DataSetSearch(this, 'ir.attachment');
this.fileupload_id = _.uniqueId('oe_fileupload_temp'); this.fileupload_id = _.uniqueId('oe_fileupload_temp');

View File

@ -389,7 +389,7 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
if (range_stop > total) { if (range_stop > total) {
range_stop = total; range_stop = total;
} }
spager = _.str.sprintf('%d-%d of %d', range_start, range_stop, total); spager = _.str.sprintf(_t("%d-%d of %d"), range_start, range_stop, total);
} }
this.$pager.find('.oe_list_pager_state').text(spager); this.$pager.find('.oe_list_pager_state').text(spager);
@ -887,8 +887,8 @@ instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web.
var $row; var $row;
if (attribute === 'id') { if (attribute === 'id') {
if (old_value) { if (old_value) {
throw new Error("Setting 'id' attribute on existing record " throw new Error(_.str.sprintf( _t("Setting 'id' attribute on existing record %s"),
+ JSON.stringify(record.attributes)); JSON.stringify(record.attributes) ));
} }
if (!_.contains(self.dataset.ids, value)) { if (!_.contains(self.dataset.ids, value)) {
// add record to dataset if not already in (added by // add record to dataset if not already in (added by
@ -956,7 +956,7 @@ instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web.
if (row_id) { if (row_id) {
e.stopPropagation(); e.stopPropagation();
if (!self.dataset.select_id(row_id)) { if (!self.dataset.select_id(row_id)) {
throw new Error("Could not find id in dataset"); throw new Error(_t("Could not find id in dataset"));
} }
self.row_clicked(e); self.row_clicked(e);
} }
@ -1016,7 +1016,7 @@ instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web.
var command = value[0]; var command = value[0];
// 1. an array of m2m commands (usually (6, false, ids)) // 1. an array of m2m commands (usually (6, false, ids))
if (command[0] !== 6) { if (command[0] !== 6) {
throw new Error(_t("Unknown m2m command ") + command[0]); throw new Error(_.str.sprintf( _t("Unknown m2m command %s"), command[0]));
} }
ids = command[2]; ids = command[2];
} else { } else {
@ -1324,7 +1324,7 @@ instance.web.ListView.Groups = instance.web.Class.extend( /** @lends instance.we
} }
// group_label is html-clean (through format or explicit // group_label is html-clean (through format or explicit
// escaping if format failed), can inject straight into HTML // escaping if format failed), can inject straight into HTML
$group_column.html(_.str.sprintf("%s (%d)", $group_column.html(_.str.sprintf(_t("%s (%d)"),
group_label, group.length)); group_label, group.length));
if (group.length && group.openable) { if (group.length && group.openable) {
@ -1743,7 +1743,7 @@ var Record = instance.web.Class.extend(/** @lends Record# */{
} else if (val instanceof Array) { } else if (val instanceof Array) {
output[k] = val[0]; output[k] = val[0];
} else { } else {
throw new Error("Can't convert value " + val + " to context"); throw new Error(_.str.sprintf(_t("Can't convert value %s to context"), val));
} }
} }
return output; return output;

View File

@ -3,7 +3,9 @@
* @namespace * @namespace
*/ */
openerp.web.list_editable = function (instance) { openerp.web.list_editable = function (instance) {
// editability status of list rows var _t = instance.web._t;
// editability status of list rows
instance.web.ListView.prototype.defaults.editable = null; instance.web.ListView.prototype.defaults.editable = null;
// TODO: not sure second @lends on existing item is correct, to check // TODO: not sure second @lends on existing item is correct, to check
@ -775,7 +777,7 @@ openerp.web.list_editable = function (instance) {
cancel: function (force) { cancel: function (force) {
if (!(force || this.form.can_be_discarded())) { if (!(force || this.form.can_be_discarded())) {
return $.Deferred().reject({ return $.Deferred().reject({
message: "The form's data can not be discarded"}).promise(); message: _t("The form's data can not be discarded")}).promise();
} }
var record = this.record; var record = this.record;
this.record = null; this.record = null;

View File

@ -786,7 +786,7 @@ instance.web.ViewManagerAction = instance.web.ViewManager.extend({
break; break;
case 'tests': case 'tests':
this.do_action({ this.do_action({
name: "JS Tests", name: _t("JS Tests"),
target: 'new', target: 'new',
type : 'ir.actions.act_url', type : 'ir.actions.act_url',
url: '/web/tests?mod=*' url: '/web/tests?mod=*'
@ -814,7 +814,7 @@ instance.web.ViewManagerAction = instance.web.ViewManager.extend({
break; break;
case 'translate': case 'translate':
this.do_action({ this.do_action({
name: "Technical Translation", name: _t("Technical Translation"),
res_model : 'ir.translation', res_model : 'ir.translation',
domain : [['type', '!=', 'object'], '|', ['name', '=', this.dataset.model], ['name', 'ilike', this.dataset.model + ',']], domain : [['type', '!=', 'object'], '|', ['name', '=', this.dataset.model], ['name', 'ilike', this.dataset.model + ',']],
views: [[false, 'list'], [false, 'form']], views: [[false, 'list'], [false, 'form']],
@ -1395,7 +1395,7 @@ instance.web.json_node_to_xml = function(node, human_readable, indent) {
return sindent + node; return sindent + node;
} else if (typeof(node.tag) !== 'string' || !node.children instanceof Array || !node.attrs instanceof Object) { } else if (typeof(node.tag) !== 'string' || !node.children instanceof Array || !node.attrs instanceof Object) {
throw new Error( throw new Error(
_.str.sprintf("Node [%s] is not a JSONified XML node", _.str.sprintf(_t("Node [%s] is not a JSONified XML node"),
JSON.stringify(node))); JSON.stringify(node)));
} }
for (var attr in node.attrs) { for (var attr in node.attrs) {
@ -1429,7 +1429,7 @@ instance.web.xml_to_str = function(node) {
} else if (window.ActiveXObject) { } else if (window.ActiveXObject) {
return node.xml; return node.xml;
} else { } else {
throw new Error("Could not serialize XML"); throw new Error(_t("Could not serialize XML"));
} }
}; };
instance.web.str_to_xml = function(s) { instance.web.str_to_xml = function(s) {
@ -1437,7 +1437,7 @@ instance.web.str_to_xml = function(s) {
var dp = new DOMParser(); var dp = new DOMParser();
var r = dp.parseFromString(s, "text/xml"); var r = dp.parseFromString(s, "text/xml");
if (r.body && r.body.firstChild && r.body.firstChild.nodeName == 'parsererror') { if (r.body && r.body.firstChild && r.body.firstChild.nodeName == 'parsererror') {
throw new Error("Could not parse string to xml"); throw new Error(_t("Could not parse string to xml"));
} }
return r; return r;
} }
@ -1445,7 +1445,7 @@ instance.web.str_to_xml = function(s) {
try { try {
xDoc = new ActiveXObject("MSXML2.DOMDocument"); xDoc = new ActiveXObject("MSXML2.DOMDocument");
} catch (e) { } catch (e) {
throw new Error("Could not find a DOM Parser: " + e.message); throw new Error(_.str.sprintf( _t("Could not find a DOM Parser: %s"), e.message));
} }
xDoc.async = false; xDoc.async = false;
xDoc.preserveWhiteSpace = true; xDoc.preserveWhiteSpace = true;

View File

@ -88,7 +88,7 @@ instance.web_calendar.CalendarView = instance.web.View.extend({
this.fields = this.fields_view.fields; this.fields = this.fields_view.fields;
if (!this.date_start) { if (!this.date_start) {
throw new Error("Calendar view has not defined 'date_start' attribute."); throw new Error(_t("Calendar view has not defined 'date_start' attribute."));
} }
//* Calendar Fields * //* Calendar Fields *
@ -96,7 +96,7 @@ instance.web_calendar.CalendarView = instance.web.View.extend({
if (this.date_delay) { if (this.date_delay) {
if (this.fields[this.date_delay].type != 'float') { if (this.fields[this.date_delay].type != 'float') {
throw new Error("Calendar view has a 'date_delay' type != float"); throw new Error(_t("Calendar view has a 'date_delay' type != float"));
} }
this.calendar_fields.date_delay = {'name': this.date_delay, 'kind': this.fields[this.date_delay].type}; this.calendar_fields.date_delay = {'name': this.date_delay, 'kind': this.fields[this.date_delay].type};
} }

View File

@ -409,7 +409,7 @@ instance.web_kanban.KanbanView = instance.web.View.extend({
new_group.do_save_sequences(); new_group.do_save_sequences();
}).fail(function(error, evt) { }).fail(function(error, evt) {
evt.preventDefault(); evt.preventDefault();
alert("An error has occured while moving the record to this group."); alert(_t("An error has occured while moving the record to this group."));
self.do_reload(); // TODO: use draggable + sortable in order to cancel the dragging when the rcp fails self.do_reload(); // TODO: use draggable + sortable in order to cancel the dragging when the rcp fails
}); });
} }

View File

@ -161,7 +161,7 @@ instance.web_view_editor.ViewEditor = instance.web.Widget.extend({
} }
}); });
msg += "</ul>"; msg += "</ul>";
this.do_warn("The following fields are invalid :", msg); this.do_warn(_t("The following fields are invalid :"), msg);
}, },
add_node_name : function(node) { add_node_name : function(node) {
if(node.tagName.toLowerCase() == "button" || node.tagName.toLowerCase() == "field"){ if(node.tagName.toLowerCase() == "button" || node.tagName.toLowerCase() == "field"){
@ -260,7 +260,7 @@ instance.web_view_editor.ViewEditor = instance.web.Widget.extend({
"arch": view_arch_list}); "arch": view_arch_list});
}); });
} else { } else {
self.do_warn("Please select view in list :"); self.do_warn(_t("Please select view in list :"));
} }
}); });
}, },
@ -387,10 +387,10 @@ instance.web_view_editor.ViewEditor = instance.web.Widget.extend({
self.inherited_view(selected_row); self.inherited_view(selected_row);
} }
}else{ }else{
alert("Can't Update View"); alert(_t("Can't Update View"));
} }
}else{ }else{
alert("Select an element"); alert(_t("Select an element"));
} }
}}, }},
{text: _t("Preview"), click: function() { {text: _t("Preview"), click: function() {
@ -983,7 +983,7 @@ instance.web_view_editor.ViewEditor = instance.web.Widget.extend({
} else { } else {
table_selector.append('<td align="right">' + node.string + '</td>' + type_widget.render() ); table_selector.append('<td align="right">' + node.string + '</td>' + type_widget.render() );
if (node.name == "field_value") { if (node.name == "field_value") {
table_selector.append('<td id="new_field" align="right" width="100px"> <button>New Field</button></td>'); table_selector.append('<td id="new_field" align="right" width="100px"> <button>' + _t("New Field") + '</button></td>');
} }
} }
type_widget.start(); type_widget.start();