)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":23279,"name":"Seongsoo Cho","display_name":"Seongsoo Cho","email":"ppiyakk2@printf.kr","username":"seongsoo.cho"},"change_message_id":"b801341f1ce43af6b44b5175cf2872ce70e5e01f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"82c795b9_526f9aed","updated":"2026-06-03 06:46:24.000000000","message":"The Weblate scripts are based on the existing Zanata scripts. To make the changes easy to review, patchset 1 is just a copy of the current Zanata scripts. The actual Weblate changes will come in the next patchset.","commit_id":"d528fb6c07b1df9396559d497f7f970d6b7a1f37"},{"author":{"_account_id":14482,"name":"Ian Y. Choi","email":"ianyrchoi@gmail.com","username":"ianychoi"},"change_message_id":"d8b4e2715da0ed55f6cc6bf786649257bc885017","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"75aac4d3_84e6e775","updated":"2026-06-03 14:59:02.000000000","message":"I have not reviewed the two files: \"bin/setup_weblate_project.py\" and \"bin/upload_po_weblate.py\", but leaving comments to move forward:\n\n1. There are some zero-sized files\n2. Please don\u0027t revert bin/get-modulename.py\n3. bin/propose_translation_update_weblate.sh file is still working with Zanata, not Weblate.\n4. Some logics on original bin/common_translation_update.sh seems disappeared.","commit_id":"426f4a0c57bd68d8eb58a91f0bfc02080194baff"}],"bin/check_weblate_project.py":[{"author":{"_account_id":14482,"name":"Ian Y. Choi","email":"ianyrchoi@gmail.com","username":"ianychoi"},"change_message_id":"d8b4e2715da0ed55f6cc6bf786649257bc885017","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"f302e53e_9dc1dbea","updated":"2026-06-03 14:59:02.000000000","message":"Do you need this file?","commit_id":"426f4a0c57bd68d8eb58a91f0bfc02080194baff"}],"bin/common_translation_update_weblate.sh":[{"author":{"_account_id":23279,"name":"Seongsoo Cho","display_name":"Seongsoo Cho","email":"ppiyakk2@printf.kr","username":"seongsoo.cho"},"change_message_id":"b0bdcc92a4a88a2085d333f0e0a86aea0de76e59","unresolved":true,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"# Setup a project for Zanata. This is used by both Python and Django projects."},{"line_number":137,"context_line":"# syntax: setup_project \u003cproject\u003e \u003czanata_version\u003e"},{"line_number":138,"context_line":"function setup_project {"},{"line_number":139,"context_line":"    local project\u003d$1"},{"line_number":140,"context_line":"    local version\u003d$2"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-sh","patch_set":1,"id":"c3144efd_38b35619","line":138,"updated":"2026-06-03 13:56:20.000000000","message":"Weblate only uses the credentials stored in ~/.config/weblate, so setup_project is not needed.\n\nIn Zanata, setup_project was required because a Zanata config file had to be created for each project.","commit_id":"d528fb6c07b1df9396559d497f7f970d6b7a1f37"},{"author":{"_account_id":14482,"name":"Ian Y. Choi","email":"ianyrchoi@gmail.com","username":"ianychoi"},"change_message_id":"d8b4e2715da0ed55f6cc6bf786649257bc885017","unresolved":true,"context_lines":[{"line_number":1,"context_line":"#!/bin/bash -e"},{"line_number":2,"context_line":"# Common code used by propose_translation_update.sh and"},{"line_number":3,"context_line":"# upstream_translation_update.sh"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-sh","patch_set":2,"id":"25785701_fb7bb7dd","line":2,"range":{"start_line":2,"start_character":22,"end_line":2,"end_character":51},"updated":"2026-06-03 14:59:02.000000000","message":"propose_translation_update_weblate.sh","commit_id":"426f4a0c57bd68d8eb58a91f0bfc02080194baff"},{"author":{"_account_id":14482,"name":"Ian Y. Choi","email":"ianyrchoi@gmail.com","username":"ianychoi"},"change_message_id":"d8b4e2715da0ed55f6cc6bf786649257bc885017","unresolved":true,"context_lines":[{"line_number":1,"context_line":"#!/bin/bash -e"},{"line_number":2,"context_line":"# Common code used by propose_translation_update.sh and"},{"line_number":3,"context_line":"# upstream_translation_update.sh"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-sh","patch_set":2,"id":"6dcc63cc_ceac9a6e","line":3,"range":{"start_line":3,"start_character":2,"end_line":3,"end_character":32},"updated":"2026-06-03 14:59:02.000000000","message":"upstream_translation_update_weblate.sh","commit_id":"426f4a0c57bd68d8eb58a91f0bfc02080194baff"},{"author":{"_account_id":14482,"name":"Ian Y. Choi","email":"ianyrchoi@gmail.com","username":"ianychoi"},"change_message_id":"d8b4e2715da0ed55f6cc6bf786649257bc885017","unresolved":true,"context_lines":[{"line_number":691,"context_line":"    local project\u003d$1"},{"line_number":692,"context_line":""},{"line_number":693,"context_line":"    echo \"Pulling translations from Weblate for project: $project\""},{"line_number":694,"context_line":"    # Weblate translations are downloaded via the API in"},{"line_number":695,"context_line":"    # propose_translation_update_weblate.sh"},{"line_number":696,"context_line":"    # This function is kept as a placeholder for compatibility."},{"line_number":697,"context_line":"}"},{"line_number":698,"context_line":""}],"source_content_type":"text/x-sh","patch_set":2,"id":"21037fbc_7a5f7577","line":695,"range":{"start_line":694,"start_character":3,"end_line":695,"end_character":43},"updated":"2026-06-03 14:59:02.000000000","message":"Also, would you point out where the below logic is moved?\n\n```\n        # We want new files to be \u003e75% translated. The\n        # common documents in openstack-manuals have that relaxed to\n        # \u003e40%.\n```","commit_id":"426f4a0c57bd68d8eb58a91f0bfc02080194baff"},{"author":{"_account_id":14482,"name":"Ian Y. Choi","email":"ianyrchoi@gmail.com","username":"ianychoi"},"change_message_id":"d8b4e2715da0ed55f6cc6bf786649257bc885017","unresolved":true,"context_lines":[{"line_number":691,"context_line":"    local project\u003d$1"},{"line_number":692,"context_line":""},{"line_number":693,"context_line":"    echo \"Pulling translations from Weblate for project: $project\""},{"line_number":694,"context_line":"    # Weblate translations are downloaded via the API in"},{"line_number":695,"context_line":"    # propose_translation_update_weblate.sh"},{"line_number":696,"context_line":"    # This function is kept as a placeholder for compatibility."},{"line_number":697,"context_line":"}"},{"line_number":698,"context_line":""}],"source_content_type":"text/x-sh","patch_set":2,"id":"9d011a92_af200255","line":695,"range":{"start_line":694,"start_character":0,"end_line":695,"end_character":43},"updated":"2026-06-03 14:59:02.000000000","message":"I cannot find which part on \"propose_translation_update_weblate.sh\" pulls translations from Weblate.","commit_id":"426f4a0c57bd68d8eb58a91f0bfc02080194baff"},{"author":{"_account_id":14482,"name":"Ian Y. Choi","email":"ianyrchoi@gmail.com","username":"ianychoi"},"change_message_id":"d8b4e2715da0ed55f6cc6bf786649257bc885017","unresolved":true,"context_lines":[{"line_number":705,"context_line":"# publishing. This uses the exact same path."},{"line_number":706,"context_line":"function copy_pot {"},{"line_number":707,"context_line":"    local all_modules\u003d$1"},{"line_number":708,"context_line":"    local target\u003d.translation-source/$WEBLATE_BRANCH/"},{"line_number":709,"context_line":""},{"line_number":710,"context_line":"    for m in $all_modules ; do"},{"line_number":711,"context_line":"        for f in `find $m -name \"*.pot\" ` ; do"}],"source_content_type":"text/x-sh","patch_set":2,"id":"85f19603_b155c56e","line":708,"range":{"start_line":708,"start_character":38,"end_line":708,"end_character":52},"updated":"2026-06-03 14:59:02.000000000","message":"No $WEBLATE_BRANCH definition here or upstream_translation_update_weblate.sh - or should it be $WEBLATE_CATEGORY?","commit_id":"426f4a0c57bd68d8eb58a91f0bfc02080194baff"}],"bin/download_translations_weblate.py":[{"author":{"_account_id":14482,"name":"Ian Y. Choi","email":"ianyrchoi@gmail.com","username":"ianychoi"},"change_message_id":"d8b4e2715da0ed55f6cc6bf786649257bc885017","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"059b02a0_70a5e5dc","updated":"2026-06-03 14:59:02.000000000","message":"Do you need this file?","commit_id":"426f4a0c57bd68d8eb58a91f0bfc02080194baff"}],"bin/get-modulename.py":[{"author":{"_account_id":14482,"name":"Ian Y. Choi","email":"ianyrchoi@gmail.com","username":"ianychoi"},"change_message_id":"d8b4e2715da0ed55f6cc6bf786649257bc885017","unresolved":true,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import argparse"},{"line_number":16,"context_line":"import configparser"},{"line_number":17,"context_line":"import sys"},{"line_number":18,"context_line":"import tomllib"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"39dcaaa4_d97f4eae","line":17,"updated":"2026-06-03 14:59:02.000000000","message":"You are reverting https://review.opendev.org/c/openstack/i18n/+/981694/8/bin/get-modulename.py .. which is not a good idea.","commit_id":"426f4a0c57bd68d8eb58a91f0bfc02080194baff"}],"bin/propose_translation_update_weblate.sh":[{"author":{"_account_id":14482,"name":"Ian Y. Choi","email":"ianyrchoi@gmail.com","username":"ianychoi"},"change_message_id":"d8b4e2715da0ed55f6cc6bf786649257bc885017","unresolved":true,"context_lines":[{"line_number":17,"context_line":"JOBNAME\u003d$3"},{"line_number":18,"context_line":"HORIZON_DIR\u003d$4"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"# Replace /\u0027s in the branch name with -\u0027s because Zanata does not"},{"line_number":21,"context_line":"# allow /\u0027s in version names."},{"line_number":22,"context_line":"ZANATA_VERSION\u003d${BRANCH//\\//-}"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-sh","patch_set":2,"id":"bf35bea6_bfbd4d6b","line":20,"range":{"start_line":20,"start_character":50,"end_line":20,"end_character":57},"updated":"2026-06-03 14:59:02.000000000","message":"Weblate","commit_id":"426f4a0c57bd68d8eb58a91f0bfc02080194baff"},{"author":{"_account_id":14482,"name":"Ian Y. Choi","email":"ianyrchoi@gmail.com","username":"ianychoi"},"change_message_id":"d8b4e2715da0ed55f6cc6bf786649257bc885017","unresolved":true,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"# Replace /\u0027s in the branch name with -\u0027s because Zanata does not"},{"line_number":21,"context_line":"# allow /\u0027s in version names."},{"line_number":22,"context_line":"ZANATA_VERSION\u003d${BRANCH//\\//-}"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"SCRIPTSDIR\u003d\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" \u0026\u0026 pwd )\""},{"line_number":25,"context_line":"source $SCRIPTSDIR/common_translation_update.sh"}],"source_content_type":"text/x-sh","patch_set":2,"id":"c10fd016_0f0b8392","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":14},"updated":"2026-06-03 14:59:02.000000000","message":"WEBLATE_VERSION","commit_id":"426f4a0c57bd68d8eb58a91f0bfc02080194baff"}],"bin/upstream_translation_update_weblate.sh":[{"author":{"_account_id":14482,"name":"Ian Y. Choi","email":"ianyrchoi@gmail.com","username":"ianychoi"},"change_message_id":"d8b4e2715da0ed55f6cc6bf786649257bc885017","unresolved":true,"context_lines":[{"line_number":112,"context_line":"python3 \"$SCRIPTSDIR/upload_pot_weblate.py\" \\"},{"line_number":113,"context_line":"    --config ~/.config/weblate \\"},{"line_number":114,"context_line":"    --project \"$WEBLATE_PROJECT\" \\"},{"line_number":115,"context_line":"    --category \"$WEBLATE_BRANCH\" \\"},{"line_number":116,"context_line":"    --pot-dir translation-source/"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"# Tell finish function that everything is fine."}],"source_content_type":"text/x-sh","patch_set":2,"id":"66477538_86148ece","line":115,"updated":"2026-06-03 14:59:02.000000000","message":"$WEBLATE_CATEGORY?","commit_id":"426f4a0c57bd68d8eb58a91f0bfc02080194baff"}]}
