Not sure exactly what you're trying to do with the code in the picture and how generic the solution must be. However, if you just want a copy of a file but with translated column names, and a property that stores the original name, a "subset" should work. I this way, not only the rows but also column properties, cell colors etc. are preserved.
A simplified example:
dt = Open("$SAMPLE_DATA/Big Class.jmp");
oldnames = dt << get column names(string);
// List of corresponding column names in another laguage. Could be retrieved from a lookup table (or associative array)
newnames = {"namn", "ålder", "kön", "höjd", "vikt"};
// Make a copy of original table
dtt = dt << Subset(All rows, Selected columns only(0));
// Add a custom property with old name and rename columns
For(i = 1, i <= N Items(oldnames), i++,
Column(dtt, i) << set property("OldName", oldnames[i]);
Column(dtt, i) << set name(newnames[i]);
);