Name: [FIX] ai17: Vietnamese catalogues, the locale regressions they caused, and the defects that surfaced

State: Killed

PR State: merged

PR Author: David Tran

PR Author Email:

PR: #103

Committer: David Tran

Committer Email: davidtran.hp@gmail.com

Commit: 2d2ae78371faac5812a2585bde2d3959cae55bf0

Description:

                                            [FIX] viin_ai_chat: 62 strings the extractor could never see

Two assertions this PR added could not fail. 'Agent error: %s' is always a
non-empty string and the controller never emits a traceback, so both held no
matter what the code did - written while making tests locale-stable, and breaking
the exact property that work existed to protect. They now assert the CAUSE
survives into the reply. Proven twice: red when the content is emptied, and red
when the friendly wording is kept but the cause dropped - the second is the
regression the old form structurally could not catch.

A fixture string was still wrapped in _(), shipping "No credits left." into the
released catalogue. It is an opaque sentinel now, and the assertion binds to the
exception CLASS surviving the round trip rather than to prose.

The bigger item: 62 user-facing strings across six templates were written as
t-esc="_t('...')" or t-att-title="...", neither of which Odoo's extractor can
see - it reads element text and a fixed attribute allow-list, and the t-att-
form is not in it. The tool-confirm dialog, the first-run banner, the session
rail and the feedback widget were entirely absent from the catalogue. This PR
had demonstrated the fix on ONE string and left the rest, and the new vi_VN.po
then MASKED the gap by making the module look translated. All 62 move into
component getters, and the escape hatch that enabled the pattern is deleted so it
cannot return quietly. Catalogue: viin_ai_chat 95 -> 142 msgids, viin_ai_brain
77 -> 85, every new entry translated.

Three comments this PR added were false. sql_template.description IS rendered -
it has its own notebook page - so the decision to keep it non-translatable stands
but the stated reason did not. And the note added to four manifests claimed a
non-application module gets no Apps tile: core annotates 'images' as a WEBSITE
key, its only reader is the theme-image updater, update_list never copies it, and
the backend tile is icon_image for every module. The reviewer was right and the
comment was wrong; it now says what is true.

Two reds found while working and fixed: a dashboard test that had become
ambient-DB-dependent since the usable-provider resolver landed - it resolves a
provider before reaching the stub, and every provider on the test database is
keyless - now carries its own fixture; and making "Reported" extractable would
have reddened a tour selecting on that word, so the tour binds to a class instead.
                                            

Branch: 17.0

Instance ID: 0

Age:

Up-time: Not finished

Subbuilds Name State Detail
Build 398400 Check the quality with Pylint: from test_lint to test_pylint Killed Log
Build 398401 At install tests: from account to website_twitter Killed Log
Build 398402 Post install tests: step install all modules Killed Log
Build 398403 Post install tests: from account to l10n_vn_viin_hr_payroll_meal_account Killed
Build 398404 Post install tests: from l10n_vn_viin_hr_payroll_overtime to resource Killed
Build 398405 Post install tests: from sale to to_erponline_utility Killed
Build 398406 Post install tests: from to_event_project to to_stock_block_quantity Killed
Build 398407 Post install tests: from to_stock_equipment to viin_brain Killed
Build 398408 Post install tests: from viin_brain_account to viin_features_activate_website Killed
Build 398409 Post install tests: from viin_fleet to viin_mail_tracking Killed
Build 398410 Post install tests: from viin_maintenance to viin_stock_backdate Killed
Build 398411 Post install tests: from viin_stock_internal_transfer to website_twitter Killed
Build 398412 Test install all modules without demo data: from account to website_twitter Killed Log
Create Date Level Message
07/27/2026 21:00:57 INFO
Updated repository Viindoo-odoo
07/27/2026 21:00:57 INFO
Updated repository Viindoo-tvtmaaddons
07/27/2026 21:00:57 INFO
Updated repository Viindoo-erponline-enterprise
07/27/2026 21:00:57 INFO
Updated repository Viindoo-branding
07/27/2026 21:00:57 INFO
Cloned repository Viindoo-ai