Odoo-如何翻译javascript文件中的字符串
我正在为缺乏对做Javascript的理解而苦苦挣扎。Odoo文档非常糟糕,我有另一个关于这个主题的问题,这里没有答案:Odoo10 - How to do javascript
我希望我在这件事上会有更多的运气。
我现在尝试做的事情:
var _t = null;
odoo.define('mymodule.translate', function (require) {
"use strict";
var translation = require('web.translation');
_t = translation._t;
console.log("_t assigned");
});
A视图:
app.categoriesView = Backbone.View.extend({
tagName: 'div',
className: 'categoriesView',
template: _.template($('#categories_list_template').html()),
initialize: function() {
this.title = _t('OUR PRODUCTS');
console.log("Initilized title: "+this.title);
},
});
PO文件:
#. module: mymodule
#: code:addons/mymodule/static/js/views.js:8
#, python-format
msgid "OUR PRODUCTS"
msgstr "PRODUKTI"
我没有收到任何错误,Firebug控制台仅显示:
_t assigned
Initilized title: OUR PRODUCTS
这样字符串就不会被翻译。我做错了什么?
解决方案
以防有人也遇到这个问题,并且非常确定她/他做的都是正确的,这里有一个提示,可以帮助我解决问题:
当Odoo lazy通过URL/WebSite/Translations/加载JavaScript的翻译时,您可以很容易地监控您的翻译是否在响应JSON数据中可用。在我的情况下,它们不是,所以我跟踪了url的踪迹。
最后,我所要做的就是将ir.http的一个子项添加到我的模块中,该模块将模块名添加到翻译响应中:
# -*- coding: utf-8 -*-
from odoo import models
class IrHttp(models.AbstractModel):
_inherit = 'ir.http'
@classmethod
def _get_translation_frontend_modules_name(cls):
mods = super(IrHttp, cls)._get_translation_frontend_modules_name()
return mods + ['MyModuleName']
这一简单步骤将我的模块添加到Web请求响应的模块列表中,并交付所有翻译后的字符串。
相关文章