Hi,
I understand your requirement ; I already have in the HikaSerial TODO list a request to let plugins assign packs to order dynamically.
Unfortunately it can't be done in a short time so for the moment I will recommend you to use characteristics.
Even if you can't have a conditional characteristic, you can have something similar.
While managing the variants for a product, you can delete the combination that you don't want.
These combinations won't be proposed to the customer and depending the layout you're using it can simply the display (like for the table display).
The other solution is to use a mix.
Having a characteristic for the format (download / box) and use a custom field for the language.
Using some override, you can add some javascript for the "hikashopUpdateVariant" function and display/hide the custom field depending the variant selected.
About the task in the TODO list, it will consist by a new column in the HikaShop "order" table added HikaSerial.
This column would contain some serialized data in order to link a pack to the order (or to a product_order of the order).
Thanks to that, HikaSerial will be able to manage dynamic assignations and a plugin will be able to assign a pack to an order during his creation.
This task is planned for HikaSerial 1.9.0 but I don't have precise schedule for the moment ; I'm currently working on HikaMarket 1.5.1 (and his documentation).
Regards,
Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.
Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.