En primer lugar, cuando realiza la ACTUALIZACIÓN DE UNIÓN, no ha incluido ninguna condición de UNIÓN... por lo que intentará hacer un producto cartesiano de cada tabla:
#rows = #rows_table1EN * #rows_table1ZH * ... * #rows_table1PT
Debe UNIRSE en table1EN.id = table1xx.id
para cada mesa.
El siguiente problema es que tendrá que hacer referencia a cada columna que desee cambiar. Esto resultará en:
SET table1EN.detail = 'String Value',
table1ZH.detail = 'String Value'
...
table1PT.detail = 'String Value'
Esto podría hacerse con la construcción dinámica de la declaración, pero eso es bastante horrible.
Todo esto me lleva a cuestionar la estructura de su base de datos. ¿Consideró usar una tabla con una columna de idioma adicional? ya sea el identificador de dos letras (OKish) o una clave externa a una tabla de idiomas (mejor)?