Yeah. "All You Have To Do Is..."
Think about human languages. Translate "Out of Sight, out of Mind to a language like Chinese, where a literal conversion might be "no-see, no-think". Now take another automated translator and translate it back: Invisible Idiot.
Every language - computer or human - has its unique characteristics. There's an old saying, in fact that "Translators are traitors".
Case in point: COBOL didn't support variable-length strings. Most modern languages have little or no tolerance for fixed-length strings. IBM COBOL supported a hardware-level data type (COMPUTATIONAL-3) which can store penny fractions precisely. Most modern languages don't allow for that, and tend to use floating-point (COBOL COMPUTATIONAL-2). Which cannot store decimal values precisely. Fuzz the pennies on people's paychecks and see how long before the torches and pitchforks come out. It's one of 2 reasons why so many payroll and accounting systems are written in COBOL (with the other one being that there's not exactly a lot of leading-edge technology in basic financial systems).
Some of these things can be automatically dealt with - albeit with some inefficiency - some of the more subtle issues have to be dealt with more directly, just as we've never yet managed to construct truly generic software-writing systems and have to continue to use programmers instead of robots like we do with truck driving and day-trading.
I have, actually worked with/supported automated code translation projects using commercial translator products. Every one of them has required a time and manpower budget for the clean-up crew. You can get about 80% of the job done automatically (although the resulting code may look horrible to a native human programmer). But to get something actually working, the tools need human help.