Note: this thread is only about decision making. Separate issue should be open in appropriate module (Nested Box or Inline Entity Form or Entity Reference or other) for voted solution.

Using Entity Translation...

Nested box reference fields should not be synced between translations for two reasons:
1/ end-users should be able to add language specific nested boxes (ex: a spanish video related to the translated article with no equivalent in other languages)
2/ as soon as a translation exists, we don't want new nested boxes added to the source to be immediately visible in the translations, especially not in the source language...
Site builders should set Nested Box reference fields as translatable.

Now for an optimal end-user experience, when a translation is first created from the source, we would expect all the nested boxes from the source to be cloned / duplicated to the translation even though not synced. That way end-users would not need to go back and forth between source and translation in order to translate all nested boxes.
This is not the case right now. That's why I will create a separate issue for this in Nested Box.

Thing is, we also want to give end-users the possibility to have some nested boxes synced across translations. Images for examples... even image galleries or slideshows. PHP code blocks would be another example. But also referenced blocks or views that actually handle translation themselves.

As of today, this can be achieved by reusing existing nested boxes (Inline Entity Form feature). But as soon as we start cloning all nested boxes from the source into each newly created translation, we decide not to sync any nested box between translation. So we actually need a way to know which nested boxes should be synced before the cloning process.

I see two ways of doing that:
A — Decision is made at the nested box type level by the site builder to "Sync all nested boxes of this type between all translations".
B — Every nested box should have an option box to "Sync this nested box between all translations". That way two nested boxes of the same type could be synced or not according to what end-users decide.

In both cases, nested boxes that should be synced would be reused from the existing source and those that should not be synced would simply be cloned.

In all cases, it should be clear end-users what's going on. There should be for example a note on each synced nested box that says "This nested box is synced across translations. Any modification will be applied to all translations".

About B
Pros
Option B relies on the end-user's action. So if syncing is used it is because the end-user knows what he/she's doing and actually wants things to be that way.

About A
Cons
If you want to give your end-users the possibility to sync some images most of the time but not all the time, you would need to create two nested box types. Image and "Images synced between translations"... not only this would be a complex name, but this would also means they should recreate the nested box if they changed their minds later on. Whereas with option B, changing one's mind would be a simple click away.

Other advantage: when a nested box is configured to be synced across translations, (either from A or B) it should be automatically added to all already existing translations.

End-users might also choose to sync a nested box with the source at the beginning but later on decide to stop synchronization and have language specific nested box instead. An example would be a code block that a first was synced between all languages but later on the writer of the article decides he/she also wants (and also finally has time) to also translate the comments inside the code block.

Even more complex, what if the article exists in three languages: English (source) + translated into French and Spanish. There is a video inside this article. The video has been shot in both English and Spanish but not French. So you want the spanish version on the spanish translation however you want the english video to be synced between English and French.

Well Option A definitely does not make this possible, but Option B needs to be a little different too. So here comes option C...
C — The option to sync nested boxes should not be available from the source language anymore, only from translations and it should be called "Sync this nested box with source language". Actually, there could still be an option to "Sync this nested box across translations BY DEFAULT".

On the other hand, since syncing is just reusing, with option B one can still stop the synchronization between a translation and the source by simply deleting the nested box from the translation (it won't delete it from the source), and replace it with a new one. So why C over B? Maybe not to confuse end-users. Just because syncing stuff and reusing them is technically the same, functionally speaking it is not. Also option C should make things easier by doing a bit of work automatically.

For example, if a nested box is synced and the end-user finally wants to break syncing in order to apply language specific modifications, he/she could just uncheck the "Sync this nested box with source language" option. This would automatically delete the reference to the source nested box and replace it in AJAX with a new clone, ready to be language-specific edited.

The other way, if a nested box is not synced, clicking on "Sync this nested box with source language" should delete the clone and load the source nested box in AJAX. So that if the end-user did not choose to sync at first, then he/she makes some modifications to the source and expects to see it on the translation. Then realized he/she must sync the translation for it to work that way and finally clicks on "Sync this nested box with source language" he/she automatically sees the nested box updated with the modification he/she just mades from the source.

Comments

nicolas bouteille’s picture

Issue summary: View changes