Найти выражение 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:")
    
Другие вопросы по тегам