wordpress plugin translation not working

This problem looks a bit too complicated and localized to come up with a definitive answer, but it looks like an execution order issue. Here are some suggestions what you could check:

  1. You are using a variable in your translation function. Do not do this.
  2. I’m not sure where that Woocommerce-action is executed, but it might be executed before WP gets to the load_textdomain hook. Not very likely, but not impossible either if it tries to send the mail immediately after the plugin is loaded.
  3. Your add_action uses the default priority. Higher or lower might help.
  4. Check the global $wp_filter variable to see of some plugin is messing with the locales.