Plugin translation not displaying

Ah ha! I found the answer, and it’s a really weird one.

It just so happens that the particular strings I was trying to translate were the labels of required form fields, and looked like this:

<?php echo '<label>' . __( 'Email *', 'cdashmm' ) . '</label>' ?>

If I move the asterisk outside the string, like this:

<?php echo '<label>' . __( 'Email', 'cdashmm' ) . ' *</label>' ?>

then the translation works.

So I have solved the problem… but that does raise another question – why do asterisks inside strings make them untranslatable?