Some components that require translations have extra complications in their blocks' parameters.
For example, I found it hard to translate Notifiers that offer choices, because the choice text values had to match across the issuance of the choice to the user and the event that received the choice and fed it to an if/then tree to check the user choice value against text constants in the appropriate language.
I have found trying to debug the code of people who spoke non-English languages the most frustrating when i encountered variable names and Label Texts out of the reach of my available translation tools.
I feel compact UI is much better and identical to that of Android Studio.
I've personally used Android Studio's translation feature and find it quite intuitive. The workflow is simple, you write text in your primary language and then handle i18n through strings.xml. But the best part is that Android Studio automatically suggests extracting string literals from your code so you don't have to manually create resource IDs yourself. Something like this in App Inventor would be really helpful.
I think auto-generated but editable is the way to go. Auto-generation reduces friction, but letting users rename them keeps things manageable.
A table layout works well for displaying translations. Keys should be fixed on the left while language columns are scrollable, similar to what @hridoyhb mentioned. There will often be keys with no translation for certain languages. The UI should handle this clearly.
Like keys should be fixed and then the languages or table header should be expandable and scrollable so that one can add languages easily. It might also be possible that there can be no translation for multiple keys in some languages. It is necessary to handle this.
Manually creating keys is the biggest pain point. If it can auto-detect text across components and suggest keys automatically, that would make the whole feature much more beginner-friendly.