Найти выражение Xpath в odoo 8
Я хочу найти выражение XPath в odoo 8, потому что я хочу заменить слово на английском на французский.
Я попробовал это:
<?xml version="1.0"?>
<openerp>
<data>
<template id="bonus_french_inherit" inherit_id="point_of_sale.index" name="bonusfrench assets">
<xpath expr="/div[not(@id) and not(@class)]/div[text()='Customer name']" position="attributes">
<attribute name="string">Nom du client</attribute>
</xpath>
</template>
</data>
</openerp>
В билете пункта продажи у меня есть это: билет пункта продажи
Когда я проверяю элемент билета в пункте продажи, у меня есть это:
<div class="pos-sale-ticket">
<div class="pos-center-align">.....</div>
<div class="pos-center-align" id="ticket-barcode">.....</div>
<div id="company_logo"><img style="padding-top: 4px; height: 50px; max-width: 100%;" src="...."></div>
<br>
Téléphone : <br>
<br>
<div>Customer name:.........<br></div>
<div>Customer bonus points: 380<br><br></div>
Итак, мой вопрос: как найти выражение Xpath для имени Клиента и бонусных баллов Клиента, у которых нет идентификатора или класса. Как найти их выражение Xpath?
Примечание. Имя клиента и бонусные баллы клиента добавляются в модуль с именем pos_loyality, а в представлении xml они объявляются следующим образом:
<t t-extend="PosTicket">
<t t-jquery=".pos-sale-ticket table:first" t-operation="before">
<t t-if="customer_name">
<div>Customer name: <t t-esc="customer_name"/><br /></div>
</t>
<t t-if="customer_loyalty_points > -1">
<div>Customer bonus points: <t t-esc="customer_loyalty_points"/><br /><br /></div>
</t>
</t>
</t>
Большое спасибо!
2 ответа
Для перевода с английского на любой другой язык используйте инструменты i18n, встроенные в Odoo. Все текстовые узлы в шаблонах QWeb экспортируются в файлы ".po", которые вы должны поместить в каталог /i18n, например, fr.po для французского языка. Оттуда они автоматически импортируются при установке / обновлении модуля.
Найдите соответствующую документацию здесь: https://www.odoo.com/documentation/8.0/reference/translations.html
Удалите директиву xpath из вашего унаследованного шаблона. Затем следуйте инструкциям в документации по экспорту, создав собственный файл fr.po. Поместите это в каталог i18n ваших модулей. Затем переустановите / обновите ваш модуль.
Изменить: я не смог найти модуль pos_loyalty в стандартном репо Odoo 8.0. Если это нестандартный модуль, возможно, отсутствует французский перевод. Вы можете проверить исходный файл fr.po модуля point_of_sale для справки здесь: https://github.com/odoo/odoo/blob/8.0/addons/point_of_sale/i18n/fr.po
Попробуйте использовать следующие выражения:
Для имени клиента
substring-after(//div[starts-with(., "Customer name:")], "Customer name:")
Для бонуса
substring-after(//div[starts-with(., "Customer bonus points:")], "Customer bonus points:")