Program translation involves converting one programming language into another, which can modernize and migrate applications across platforms. Most of the current program translation methods are sequence-based, which cannot capture the semantic information of the code. To overcome this, abstract syntax tree-based program translation rises up. However, even the state-of-the-art machine translation methods can not guarantee error-free translation results. Consequently, software engineers need to make corrections on the machine's results before using, which is labor-intensive. To solve this problem, we propose the Human-Machine Cooperative Program Translation Based on Abstract Syntax Tree (HMPT-AST), which feeds the human's modification into the model in each iteration and the model updates the result based on human's feedback. It enables two patterns of human participation: First-error-based and Layer-based HMPT-AST. In the former one, the software engineer corrects one error node in each iteration. In the latter one, all error nodes within the same layer are corrected. In addition, the proposed method can also reduce the interactive response time from two aspects: avoiding generating the correct AST subtree repeatedly with parameter cache module, as well as reducing the generation of unnecessary AST subtree with early termination module. We conducted experiments on multiple dataset. The results show that compared with baselines, our method reduces the human effort up to 94.44\% and reduces the response time up to 94.32\%. We have made the code publicly available.\footnote{https://drive.google.com/drive/folders/1878Or6cEsW21fu_cpdpnv_dGevfFr9mB?usp=sharing}