diff --git a/addons/website/controllers/main.py b/addons/website/controllers/main.py index 6a907512c17..3304d36eb9c 100644 --- a/addons/website/controllers/main.py +++ b/addons/website/controllers/main.py @@ -14,6 +14,7 @@ import werkzeug.wrappers from PIL import Image import openerp +from openerp.addons.web.controllers.main import WebClient from openerp.addons.web import http from openerp.http import request, STATIC_CACHE from openerp.tools import image_save_for_web @@ -276,6 +277,13 @@ class Website(openerp.addons.web.controllers.main.Home): irt.create(request.cr, request.uid, new_trans) return True + @http.route('/website/translations', type='json', auth="public", website=True) + def get_website_translations(self, lang): + module_obj = request.registry['ir.module.module'] + module_ids = module_obj.search(request.cr, request.uid, [('name', 'ilike', 'website'), ('state', '=', 'installed')], context=request.context) + modules = [x['name'] for x in module_obj.read(request.cr, request.uid, module_ids, ['name'], context=request.context)] + return WebClient().translations(mods=modules, lang=lang) + @http.route('/website/attach', type='http', auth='user', methods=['POST'], website=True) def attach(self, func, upload=None, url=None, disable_optimization=None): Attachments = request.registry['ir.attachment'] diff --git a/addons/website/static/src/js/website.js b/addons/website/static/src/js/website.js index 6a9bce3b041..d2f7a8b309f 100644 --- a/addons/website/static/src/js/website.js +++ b/addons/website/static/src/js/website.js @@ -304,14 +304,32 @@ if ($('html').data('website-id')) { website.id = $('html').data('website-id'); website.session = new openerp.Session(); - var modules = ['website']; - return openerp._t.database.load_translations(website.session, modules, website.get_context().lang); + return openerp.jsonRpc('/website/translations', 'call', {'lang': website.get_context().lang}) + .then(function(trans) { + openerp._t.database.set_bundle(trans);}); + } + }).then(function () { + var templates = openerp.qweb.templates; + var keys = _.keys(templates); + for (var i = 0; i < keys.length; i++){ + treat_node(templates[keys[i]]); } }).promise(); } return all_ready; }; + function treat_node(node){ + if(node.nodeType === 3) { + if(node.nodeValue.match(/\S/)){ + node.nodeValue = openerp._t($.trim(node.nodeValue)); + } + } + else if(node.nodeType === 1 && node.hasChildNodes()) { + _.each(node.childNodes, function(subnode) {treat_node(subnode);}); + } + }; + website.inject_tour = function() { // if a tour is active inject tour js }; diff --git a/addons/website/static/src/js/website.tour.banner.js b/addons/website/static/src/js/website.tour.banner.js index d971b53cd66..4ea2ddf1fdc 100644 --- a/addons/website/static/src/js/website.tour.banner.js +++ b/addons/website/static/src/js/website.tour.banner.js @@ -2,7 +2,8 @@ 'use strict'; var _t = openerp._t; - + var website = openerp.website; + website.ready().done(function() { openerp.Tour.register({ id: 'banner', name: _t("Build a page"), @@ -114,5 +115,6 @@ }, ] }); + }); }()); diff --git a/addons/website/static/src/js/website.translator.js b/addons/website/static/src/js/website.translator.js index a1800799c0c..899c5b678a7 100644 --- a/addons/website/static/src/js/website.translator.js +++ b/addons/website/static/src/js/website.translator.js @@ -18,7 +18,6 @@ return this._super.apply(this, arguments).then(function () { var $edit_button = $("button[data-action=edit]"); $edit_button.removeClass("hidden"); - $edit_button.text("Translate"); if(website.no_editor) { $edit_button.removeProp('disabled'); diff --git a/addons/website_blog/static/src/js/website.tour.blog.js b/addons/website_blog/static/src/js/website.tour.blog.js index 11a68e17b74..d1ded141cba 100644 --- a/addons/website_blog/static/src/js/website.tour.blog.js +++ b/addons/website_blog/static/src/js/website.tour.blog.js @@ -2,7 +2,8 @@ 'use strict'; var _t = openerp._t; - + var website = openerp.website; + website.ready().done(function() { openerp.Tour.register({ id: 'blog', name: _t("Create a blog post"), @@ -103,5 +104,6 @@ }, ] }); + }); }()); diff --git a/addons/website_event/static/src/js/website.tour.event.js b/addons/website_event/static/src/js/website.tour.event.js index 245fb2ee41e..32faa32de09 100644 --- a/addons/website_event/static/src/js/website.tour.event.js +++ b/addons/website_event/static/src/js/website.tour.event.js @@ -2,7 +2,8 @@ 'use strict'; var _t = openerp._t; - + var website = openerp.website; + website.ready().done(function() { openerp.Tour.register({ id: 'event', name: _t("Create an event"), @@ -101,5 +102,6 @@ }, ] }); + }); }()); diff --git a/addons/website_event_sale/static/src/js/website.tour.event_sale.js b/addons/website_event_sale/static/src/js/website.tour.event_sale.js index 3c728ab5e90..ab3bf113662 100644 --- a/addons/website_event_sale/static/src/js/website.tour.event_sale.js +++ b/addons/website_event_sale/static/src/js/website.tour.event_sale.js @@ -1,6 +1,7 @@ (function () { 'use strict'; - + var website = openerp.website; + website.ready().done(function() { openerp.Tour.register({ id: 'event_buy_tickets', name: "Try to buy tickets for event", @@ -72,5 +73,6 @@ } ] }); + }); }()); diff --git a/addons/website_sale/static/src/js/website_sale_tour_buy.js b/addons/website_sale/static/src/js/website_sale_tour_buy.js index 742bf975929..a6ea9828e3c 100644 --- a/addons/website_sale/static/src/js/website_sale_tour_buy.js +++ b/addons/website_sale/static/src/js/website_sale_tour_buy.js @@ -1,6 +1,5 @@ (function () { 'use strict'; - openerp.Tour.register({ id: 'shop_buy_product', name: "Try to buy products", diff --git a/addons/website_sale/static/src/js/website_sale_tour_shop.js b/addons/website_sale/static/src/js/website_sale_tour_shop.js index 7b083576042..c8d0c1ded3e 100644 --- a/addons/website_sale/static/src/js/website_sale_tour_shop.js +++ b/addons/website_sale/static/src/js/website_sale_tour_shop.js @@ -2,7 +2,8 @@ 'use strict'; var _t = openerp._t; - + var website = openerp.website; + website.ready().done(function() { openerp.Tour.register({ id: 'shop', name: _t("Create a product"), @@ -111,5 +112,6 @@ }, ] }); + }); }()); diff --git a/addons/website_sale_options/static/src/js/website_sale.test.js b/addons/website_sale_options/static/src/js/website_sale.test.js index e5ef6d9eb5a..b4d07b3f6da 100644 --- a/addons/website_sale_options/static/src/js/website_sale.test.js +++ b/addons/website_sale_options/static/src/js/website_sale.test.js @@ -1,11 +1,11 @@ (function () { 'use strict'; - + var _t = openerp._t; var steps = openerp.Tour.tours.shop_buy_product.steps; for (var k=0; k