You’d be better off to have your setup by .com/es/main-category/subcategory as that way you can create a page for es and name it es…otherwise you need a page for each main-category
You can not make two pages grouped into a single page. And, you can not alter the URL path list of the index page and keep the url as myapp.com it would turn into myapp.com/index
But this is just me, others may do just fine using App text if they do not care to make the language change superquick or will have different pages for different languages so they can use app text and still get google to index their pages for each language.
In terms of translating the content, I use ChatGPT or Google Translate APIs.
Not really. I have my Thai version of the article use a thai language slug as part of the path list and my english version uses an english slug.
You can but it adds complexity. For one thing, when you use a content type on the page Bubble Forces you to send data whether you want to or not, so you can not use the go to page workflow action unless you are going to send data, and if you want to not send data you still need to send data but it has to be empty so you need to save onto the user data type a field that is of the same data as the page content type but make that field empty, so when you don’t want to send data you send the current users empty field, but that eliminates your ability to send text as data to structure your URL path list properly.
Can not send text to structure your URL path list properly.
If you don’t care about getting your page indexed for different languages that would work…but if you want google to index your pages for different languages, their crawlers are not going to wait around long enough for a translation API to translate all the dynamic content on the page after the crawler already had to wait for that dynamic content to be sent from your server…if you think your page load speed now is a barrier, wait till you add another 2 interactions between client and server (ie: client sends API call to server to translate, server translates and sends back to client translated values).