Well, technically as of Symfony 2.0, values were not passed through the translator. And there were no changes since that could have introduced such behaviour.
Actually, option values should not be passed through the translator, because they are about data and business logic, not user experience. Perhaps, you should replace the placeholder keys in your choices array with something more concise, like 'millimeters', 'centimeters'
etc.
However, if for some strange reason you'll need these values to be translated (I can't really imagine such a case, but let's assume there is one), you could try overriding the choice_widget_options
block in Symfony 2's form_div_layout.html.twig
, like this:
{% block choice_widget_options %}
{% spaceless %}
{% for group_label, choice in options %}
{% if choice is iterable %}
<optgroup label="{{ group_label|trans({}, translation_domain) }}">
{% set options = choice %}
{{ block('choice_widget_options') }}
</optgroup>
{% else %}
<option value="{{ choice.value|trans({}, translation_domain) }}"{% if choice is selectedchoice(value) %} selected="selected"{% endif %}>{{ choice.label|trans({}, translation_domain) }}</option>
{% endif %}
{% endfor %}
{% endspaceless %}
{% endblock choice_widget_options %}
For more info on overriding form templates you can check out Symfony 2's official documentation.