It works amazing, except for when the user tries to edit his post in the opposite language of which he created the post in (so if they created it in Chinese and use the edit form when the language is switched to English, and vice-versa). When a user tries to do this, the translation is broken off and gets lost, and no longer works anymore. I suspect this is because the posts are set to "Duplicate" and not "Translate", which normally doesn't let you edit the 2nd language's post (but CRED overrides this)...
#6 in Beda's post says that the duplicate flag should be removed in this situation, but that is not the case with my forms here.
So to recap:
User creates "Listing" in English, Chinese post auto-duplicates -> User visits that listing in Chinese and uses CRED edit form -> After submit, translation relationship gets lost and Chinese post is corrupt.
(and vice-versa, so not dependent on default language)
EDIT: So I corrected the problem of breaking the translation relationship by first using Beda's shortcode to get language code:
So the form will always update with the current language selected. Great
The "duplicate" flags still remain, meaning even though the user can now edit the post in either language, any changes will be shown in the other language as well, so translation is still not possible.
But I'm not sure what to do with it. I'll check the database. I'm thinking that if this is the right field to update, in the CRED edit form, I can make it an optional field based on whether the user wants to create a separate translation OR keep everything the same across languages.
Please tell me if there's something I missed and could have done in an easier way
I think I'm not going to keep playing around with it to make it perfect. One of the biggest drawbacks is that if a user changes any of the custom fields in the 2nd language, they don't get synced to the original language, which would cause problems. I think we'll introduce a conditional into the CRED form to only let the description be edited in the second language and nothing else. Still, the UE is far from optimal. A second option would be to just create a description-english and description-chinese field in the post type itself, so they always get synced, then just filter each out on the views.
Maybe one day the CRED translator can make a comeback!