)]}'
{".zuul.yaml":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e34dd2b50c6411c999c900f1d9e43fa9ef7fc66d","unresolved":true,"context_lines":[{"line_number":57,"context_line":"    check:"},{"line_number":58,"context_line":"      jobs:"},{"line_number":59,"context_line":"        - watcher-dashboard-integration-tests-playwright"},{"line_number":60,"context_line":"        - watcher-dashboard-tox-translations"},{"line_number":61,"context_line":"    gate:"},{"line_number":62,"context_line":"      jobs:"},{"line_number":63,"context_line":"        - watcher-dashboard-integration-tests-playwright"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"fc2be3af_98e9734a","line":60,"updated":"2026-08-06 14:11:32.000000000","message":"so we normally dont really test translation is  most projects\nbut i guess its fine im not sure we really need to do it on every patch however\n\nis this the norm for horizon plugins?\n\ni think doign this weekly woudl be enough.\n\nnova and watcher for exampel have no transaltion testing.","commit_id":"0cb4fde6ca24874eb43cbbf607fcaf7db1dd9866"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"9386c1fc28b72835884015d031b612356e13165f","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    check:"},{"line_number":58,"context_line":"      jobs:"},{"line_number":59,"context_line":"        - watcher-dashboard-integration-tests-playwright"},{"line_number":60,"context_line":"        - watcher-dashboard-tox-translations"},{"line_number":61,"context_line":"    gate:"},{"line_number":62,"context_line":"      jobs:"},{"line_number":63,"context_line":"        - watcher-dashboard-integration-tests-playwright"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"794f6d65_2fa88b0b","line":60,"in_reply_to":"fc2be3af_98e9734a","updated":"2026-11-05 07:40:17.000000000","message":"I have moved it to periodic as well as experimental.","commit_id":"0cb4fde6ca24874eb43cbbf607fcaf7db1dd9866"}],"/COMMIT_MSG":[{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"b656c107bb24310961babf81075d4c180f45f82c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Parent:     8a42e0fe (Merge \"Add Playwright tests for audit template scope validation\")"},{"line_number":2,"context_line":"Author:     Chandan Kumar (raukadah) \u003cchkumar@redhat.com\u003e"},{"line_number":3,"context_line":"AuthorDate: 2026-07-22 20:44:16 +0530"},{"line_number":4,"context_line":"Commit:     Chandan \u003cchkumar@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"b7d13a36_735e2590","line":1,"updated":"2026-11-04 12:09:20.000000000","message":"The last body sentence reads \u0027Run the translation job in the periodic-weekly and experimental Zuul pipelines(to test the zuul job).\u0027 The opening parenthesis is directly attached to \u0027pipelines\u0027 with no separating space, which carries into the permanent change history.\n\n**Severity**: SUGGESTION | **Confidence**: 0.95\n\n**Impact**: Purely cosmetic defect in the permanent commit history; the meaning stays clear and no runtime, compatibility, or build behavior is affected.\n\n**Recommendation**:\nInsert the missing space: \u0027... experimental Zuul pipelines (to test the zuul job).\u0027 Amend the message when the change is next rebased or amended for another reason; not worth a standalone history rewrite on its own.","commit_id":"b0689827812724daa34d9708dccc468ad1668ec2"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"72c8c4f6ee09881d16c4c7bba51eef069af52e60","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"a1e0fb76_e03145a3","updated":"2026-11-11 10:20:12.000000000","message":"From my very limited knowledge about translation tooling, this looks correct. The added job passes https://zuul.opendev.org/t/openstack/build/91537923220e41468a361ddbc21d794e and it produces translation templates https://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_915/openstack/91537923220e41468a361ddbc21d794e/tox/translations/locale/index.html","commit_id":"b0689827812724daa34d9708dccc468ad1668ec2"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"85e9a47f0ed85103b29df7c2d2543a441b1e07d8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"60e4e83b_1e13575a","updated":"2026-11-04 11:52:36.000000000","message":"check experimental","commit_id":"b0689827812724daa34d9708dccc468ad1668ec2"}],"babel-django.cfg":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e34dd2b50c6411c999c900f1d9e43fa9ef7fc66d","unresolved":true,"context_lines":[{"line_number":1,"context_line":"[python: **.py]"},{"line_number":2,"context_line":"[django: **/templates/**.html]"},{"line_number":3,"context_line":"[django: **/templates/**.csv]"},{"line_number":4,"context_line":"[extractors]"},{"line_number":5,"context_line":"django \u003d horizon.utils.babel_extract_django:extract_django"}],"source_content_type":"text/x-ttcn-cfg","patch_set":4,"id":"2565b9ff_00d62fef","line":3,"range":{"start_line":1,"start_character":0,"end_line":3,"end_character":29},"updated":"2026-08-06 14:11:32.000000000","message":"why chagne this form watcher_dashboard/ ?\n\nwe dont want to translate python file under tools or docs ectra\n\nwe also dont have csv file in the repo","commit_id":"0cb4fde6ca24874eb43cbbf607fcaf7db1dd9866"}],"babel-djangojs.cfg":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e34dd2b50c6411c999c900f1d9e43fa9ef7fc66d","unresolved":true,"context_lines":[{"line_number":1,"context_line":"[javascript: **.js]"},{"line_number":2,"context_line":"[angular: **/static/**.html]"},{"line_number":3,"context_line":"[extractors]"},{"line_number":4,"context_line":"angular \u003d horizon.utils.babel_extract_angular:extract_angular"}],"source_content_type":"text/x-ttcn-cfg","patch_set":4,"id":"046380fa_54651462","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":28},"updated":"2026-08-06 14:11:32.000000000","message":"we do not and will not have angular compontes so this line can just be remvoed","commit_id":"0cb4fde6ca24874eb43cbbf607fcaf7db1dd9866"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"9386c1fc28b72835884015d031b612356e13165f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[javascript: **.js]"},{"line_number":2,"context_line":"[angular: **/static/**.html]"},{"line_number":3,"context_line":"[extractors]"},{"line_number":4,"context_line":"angular \u003d horizon.utils.babel_extract_angular:extract_angular"}],"source_content_type":"text/x-ttcn-cfg","patch_set":4,"id":"4b863d47_39fd65a4","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":28},"in_reply_to":"046380fa_54651462","updated":"2026-11-05 07:40:17.000000000","message":"Done","commit_id":"0cb4fde6ca24874eb43cbbf607fcaf7db1dd9866"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e34dd2b50c6411c999c900f1d9e43fa9ef7fc66d","unresolved":true,"context_lines":[{"line_number":1,"context_line":"[javascript: **.js]"},{"line_number":2,"context_line":"[angular: **/static/**.html]"},{"line_number":3,"context_line":"[extractors]"},{"line_number":4,"context_line":"angular \u003d horizon.utils.babel_extract_angular:extract_angular"}],"source_content_type":"text/x-ttcn-cfg","patch_set":4,"id":"360fa850_9facd376","line":4,"range":{"start_line":3,"start_character":1,"end_line":4,"end_character":61},"updated":"2026-08-06 14:11:32.000000000","message":"and this","commit_id":"0cb4fde6ca24874eb43cbbf607fcaf7db1dd9866"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"9386c1fc28b72835884015d031b612356e13165f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[javascript: **.js]"},{"line_number":2,"context_line":"[angular: **/static/**.html]"},{"line_number":3,"context_line":"[extractors]"},{"line_number":4,"context_line":"angular \u003d horizon.utils.babel_extract_angular:extract_angular"}],"source_content_type":"text/x-ttcn-cfg","patch_set":4,"id":"0df78261_48eee108","line":4,"range":{"start_line":3,"start_character":1,"end_line":4,"end_character":61},"in_reply_to":"360fa850_9facd376","updated":"2026-11-05 07:40:17.000000000","message":"Done","commit_id":"0cb4fde6ca24874eb43cbbf607fcaf7db1dd9866"}],"bindep.txt":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e34dd2b50c6411c999c900f1d9e43fa9ef7fc66d","unresolved":true,"context_lines":[{"line_number":1,"context_line":"gettext"}],"source_content_type":"text/plain","patch_set":4,"id":"97541326_405f79b1","line":1,"updated":"2026-08-06 14:11:32.000000000","message":"this is not a runtime dep so this is not quite correct\n\n\n```suggestion\n# gettext is needed by doc builds only. For transition,\n# have them in both doc and test.\ngettext [doc test]\n```\n\nhttps://github.com/openstack/nova/blob/master/bindep.txt#L13C1-L13C19","commit_id":"0cb4fde6ca24874eb43cbbf607fcaf7db1dd9866"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"9386c1fc28b72835884015d031b612356e13165f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"gettext"}],"source_content_type":"text/plain","patch_set":4,"id":"2e48f5d8_b1fd832d","line":1,"in_reply_to":"97541326_405f79b1","updated":"2026-11-05 07:40:17.000000000","message":"Done","commit_id":"0cb4fde6ca24874eb43cbbf607fcaf7db1dd9866"}],"tox.ini":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e34dd2b50c6411c999c900f1d9e43fa9ef7fc66d","unresolved":true,"context_lines":[{"line_number":91,"context_line":"  # For local runs: python -m playwright install webkit"},{"line_number":92,"context_line":"  stestr run {posargs}"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"[testenv:translations]"},{"line_number":95,"context_line":"allowlist_externals \u003d cp"},{"line_number":96,"context_line":"commands \u003d"},{"line_number":97,"context_line":"    {envpython} {toxinidir}/manage.py extract_messages --module watcher_dashboard -v 0 --traceback"}],"source_content_type":"text/x-properties","patch_set":4,"id":"291bcadc_2f650c44","line":94,"updated":"2026-08-06 14:11:32.000000000","message":"the pti does not say what this shoudl be called but  i think this is fine\n\nhttps://github.com/openstack/governance/blob/master/reference/pti/python.rst#translations","commit_id":"0cb4fde6ca24874eb43cbbf607fcaf7db1dd9866"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"9386c1fc28b72835884015d031b612356e13165f","unresolved":false,"context_lines":[{"line_number":91,"context_line":"  # For local runs: python -m playwright install webkit"},{"line_number":92,"context_line":"  stestr run {posargs}"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"[testenv:translations]"},{"line_number":95,"context_line":"allowlist_externals \u003d cp"},{"line_number":96,"context_line":"commands \u003d"},{"line_number":97,"context_line":"    {envpython} {toxinidir}/manage.py extract_messages --module watcher_dashboard -v 0 --traceback"}],"source_content_type":"text/x-properties","patch_set":4,"id":"19a7c478_b35f0c80","line":94,"in_reply_to":"291bcadc_2f650c44","updated":"2026-11-05 07:40:17.000000000","message":"Acknowledged","commit_id":"0cb4fde6ca24874eb43cbbf607fcaf7db1dd9866"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e34dd2b50c6411c999c900f1d9e43fa9ef7fc66d","unresolved":true,"context_lines":[{"line_number":96,"context_line":"commands \u003d"},{"line_number":97,"context_line":"    {envpython} {toxinidir}/manage.py extract_messages --module watcher_dashboard -v 0 --traceback"},{"line_number":98,"context_line":"    {envpython} {toxinidir}/manage.py compilemessages -v 0 --traceback"},{"line_number":99,"context_line":"    cp {toxinidir}/watcher_dashboard/locale/django.pot {toxinidir}/watcher_dashboard/locale/djangojs.pot {toxworkdir}/translations/log/"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"[testenv:venv]"},{"line_number":102,"context_line":"commands \u003d {posargs}"}],"source_content_type":"text/x-properties","patch_set":4,"id":"f4fb58ca_b2712755","line":99,"range":{"start_line":99,"start_character":3,"end_line":99,"end_character":135},"updated":"2026-08-06 14:11:32.000000000","message":"the pti says\n```\nTo support translations processing, projects should have a valid babel config. There should be a locale package inside of the top project module, and in that directory should be the $project.pot file. For instance, the .pot file for nova should be found at nova/locale/nova.pot. Babel commands should be configured out output their .mo files in to $project/locale as well.\n````\nSo we need to check fi the .mo files are produced and copied as well","commit_id":"0cb4fde6ca24874eb43cbbf607fcaf7db1dd9866"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"9386c1fc28b72835884015d031b612356e13165f","unresolved":false,"context_lines":[{"line_number":96,"context_line":"commands \u003d"},{"line_number":97,"context_line":"    {envpython} {toxinidir}/manage.py extract_messages --module watcher_dashboard -v 0 --traceback"},{"line_number":98,"context_line":"    {envpython} {toxinidir}/manage.py compilemessages -v 0 --traceback"},{"line_number":99,"context_line":"    cp {toxinidir}/watcher_dashboard/locale/django.pot {toxinidir}/watcher_dashboard/locale/djangojs.pot {toxworkdir}/translations/log/"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"[testenv:venv]"},{"line_number":102,"context_line":"commands \u003d {posargs}"}],"source_content_type":"text/x-properties","patch_set":4,"id":"b5fb046f_8f73cd4c","line":99,"range":{"start_line":99,"start_character":3,"end_line":99,"end_character":135},"in_reply_to":"f4fb58ca_b2712755","updated":"2026-11-05 07:40:17.000000000","message":"Done","commit_id":"0cb4fde6ca24874eb43cbbf607fcaf7db1dd9866"}]}
