Public release from ruodoo-project: 19.0 - 2026-11-01 22:52:25 UTC

This commit is contained in:
CI Publish Bot
2026-11-01 22:54:30 +00:00
commit 26250aa580
2492 changed files with 664277 additions and 0 deletions

View File

@@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<!-- Action to open the wizard (must be declared before the view that references it) -->
<record id="action_local_translation_sync_wizard" model="ir.actions.act_window">
<field name="name">Загрузка перевода из локального хранилища</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">translation.local.sync.wizard</field>
<field name="view_mode">form</field>
<field name="target">new</field>
<field name="help">Загрузить переводы модулей из локальных PO-файлов модуля</field>
</record>
<!-- Form view for Local Translation Sync Wizard -->
<record id="local_translation_sync_wizard_form" model="ir.ui.view">
<field name="name">translation.local.sync.wizard.form</field>
<field name="model">translation.local.sync.wizard</field>
<field name="arch" type="xml">
<form>
<field name="state" invisible="1"/>
<!-- FORM STATE: list of found local PO files -->
<div invisible="state != 'form'">
<div class="alert alert-info" role="alert">
<p>Найденные локальные PO-файлы перечислены ниже.
Удалите крестиком те, что загружать не нужно, затем
нажмите «Загрузить». Удаление строки не удаляет файл с диска.</p>
</div>
<group>
<field name="language" required="1"/>
<field name="overwrite"/>
</group>
<field name="line_ids" nolabel="1">
<list editable="bottom" create="false">
<field name="module_name"/>
<field name="file_date"/>
<field name="file_path" optional="hide"/>
</list>
</field>
</div>
<!-- DONE STATE: results -->
<div invisible="state != 'done'">
<div class="alert alert-success" role="status">
<p>Загрузка завершена!</p>
</div>
<field name="result_message" nolabel="1" readonly="1"
widget="text"/>
</div>
<footer>
<!-- form state -->
<button name="action_sync" type="object"
string="Загрузить" class="btn btn-success"
invisible="state != 'form'"/>
<button name="action_rescan" type="object"
string="Обновить список" class="btn btn-secondary"
invisible="state != 'form'"/>
<!-- done state -->
<button string="Закрыть" class="btn btn-primary"
special="cancel" invisible="state != 'done'"/>
<!-- cancel for form -->
<button string="Отмена" class="btn btn-secondary"
special="cancel" invisible="state == 'done'"/>
</footer>
</form>
</field>
</record>
<!-- Menu item under Settings > Translations > Import / Export -->
<menuitem id="menu_local_translation_sync"
name="Загрузка перевода из локального хранилища"
action="action_local_translation_sync_wizard"
parent="base.menu_translation_export"
sequence="31"
groups="base.group_system"/>
</data>
</odoo>

View File

@@ -0,0 +1,101 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<!-- Action to open the wizard (must be declared before the view that references it) -->
<record id="action_remote_translation_sync_wizard" model="ir.actions.act_window">
<field name="name">Загрузка перевода из удаленной базы</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">translation.remote.sync.wizard</field>
<field name="view_mode">form</field>
<field name="target">new</field>
<field name="help">Загрузить переводы модулей с удалённого сервера Odoo</field>
</record>
<!-- Form view for Remote Translation Sync Wizard -->
<record id="remote_translation_sync_wizard_form" model="ir.ui.view">
<field name="name">translation.remote.sync.wizard.form</field>
<field name="model">translation.remote.sync.wizard</field>
<field name="arch" type="xml">
<form>
<field name="state" invisible="1"/>
<!-- FORM STATE: Initial form to enter connection parameters -->
<div invisible="state != 'form'">
<div class="alert alert-info" role="alert">
<p>Укажите параметры подключения к удалённому Odoo серверу,
выберите модули и язык для синхронизации переводов.</p>
</div>
<group>
<group string="Подключение к удалённому серверу">
<field name="remote_url" required="1"
placeholder="http://example.com:8069"/>
<field name="remote_db" required="1"/>
<field name="remote_user" required="1"/>
<field name="remote_password" required="1" password="True"/>
</group>
<group string="Что синхронизировать">
<field name="modules" widget="many2many_tags" required="1"/>
<field name="language" required="1"/>
</group>
<group string="Опции">
<field name="overwrite"/>
<field name="save_credentials"/>
</group>
</group>
</div>
<!-- PREVIEW STATE: Show what will be imported -->
<div invisible="state != 'preview'">
<div class="alert alert-info" role="status">
<p>Просмотр переводов, которые будут загружены:</p>
</div>
<field name="preview_lines" nolabel="1" readonly="1"
widget="text"/>
</div>
<!-- DONE STATE: Show results -->
<div invisible="state != 'done'">
<div class="alert alert-success" role="status">
<p>Синхронизация завершена!</p>
</div>
<field name="result_message" nolabel="1" readonly="1"
widget="text"/>
</div>
<footer>
<!-- form state -->
<button name="action_preview" type="object"
string="Просмотр" class="btn-primary"
invisible="state != 'form'"/>
<button name="action_sync" type="object"
string="Загрузить" class="btn btn-success"
invisible="state not in ('form', 'preview')"/>
<button name="action_open_local_sync" type="object"
string="Загрузить из локального хранилища"
class="btn btn-secondary"
invisible="state != 'form'"/>
<!-- done state -->
<button string="Закрыть" class="btn btn-primary"
special="cancel" invisible="state != 'done'"/>
<!-- cancel for form + preview -->
<button string="Отмена" class="btn btn-secondary"
special="cancel" invisible="state == 'done'"/>
</footer>
</form>
</field>
</record>
<!-- Menu item under Settings > Translations > Import / Export -->
<menuitem id="menu_remote_translation_sync"
name="Загрузка перевода из удаленной базы"
action="action_remote_translation_sync_wizard"
parent="base.menu_translation_export"
sequence="30"
groups="base.group_system"/>
</data>
</odoo>

View File

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="res_config_settings_view_form_budget" model="ir.ui.view">
<field name="name">res.config.settings.view.form.budget</field>
<field name="model">res.config.settings</field>
<field name="priority" eval="25" />
<field name="inherit_id" ref="base_setup.res_config_settings_view_form" />
<field name="arch" type="xml">
<xpath expr="//form" position="inside">
<app string="Переводы" groups="base.group_system" name="translation_helper" img="/translation_helper/static/description/icon.png">
<block title="Translation Helper" name="translation_helper_setting_container">
<setting id="translation_weblate_server_protocol">
<field name="translation_weblate_server_protocol" />
<div class="text-muted">
Протокол вашего Weblate сервера
</div>
</setting>
<setting id="translation_weblate_server_address">
<field name="translation_weblate_server_address" />
<div class="text-muted">
Адрес вашего weblate сервера
</div>
</setting>
<setting id="translation_weblate_project_alias">
<field name="translation_weblate_project_alias" />
<div class="text-muted">
Алиас вашего Weblate проекта
</div>
</setting>
<setting id="translation_weblate_project_language">
<field name="translation_weblate_project_language" />
<div class="text-muted">
Язык для вашего Weblate проекта
</div>
</setting>
</block>
</app>
</xpath>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,9 @@
<odoo>
<template id="translation_helper.layout_with_translate" name="Web layout with translate" inherit_id="web.layout">
<xpath expr="//head/script[@id='web.layout.odooscript']" position="after">
<script id="translation_helper.layout.odooscript.add.translate" type="text/javascript">
odoo.translate = "<t t-esc="translate" />"
</script>
</xpath>
</template>
</odoo>