There are a few gotchas that you'll have to get around.
The first is that Transcribe creates translations of entries by creating an additional entry for the translated content and then relates it to the original entry. So if you use Transcribe on the channel you use for products in Store, you will have duplicate products (one for each language). As you can guess this can complicate things on the backend for features like reports in Store.
Another problem are the error messages that are generated by Store during the checkout process. They are uni-lingual and you won't be able to translate them. In this case I just checked for their existence with a conditional and set a class on the input so I could at least visually highlight them:
class="required{if error:shipping_name} error{/if}"
Then depending on the payment gateway you use you'll have to figure out a way to translate those error messages (for example using Stripe I just checked for the JS error messages returned from the service and replaced them with static translation variables from Transcribe).
For the generated emails, I just used one of the additional order fields from Store to hold the current language ID from Transcribe as a hidden field:
<input type="hidden" name="order_custom5" value="{transcribe:language_abbreviation}" />
You can then use that field's value as a conditional in the email message template:
{if order_custom5 == 'es'}
¡Gracias!
{/if}
You can't use Transcribe static text variables in the Store email templates so the translations will have to be hard-coded in the message.