Mejores prácticas para valores clave en archivos de traducción

En general, los métodos de traducción toman una clave> asignación de valor y usan la clave para transformarla en un valor. Ahora reconozco dos métodos diferentes para nombrar sus claves de traducción y dentro de mi equipo no llegamos a un consenso sobre lo que parece ser el mejor método.

Método 1: Use palabras u oraciones completas en inglés:

Name => Name
Please enter your email address => Please enter your email address

Método 2: Use palabras clave que describan la situación:

NAME => Name
ENTER_EMAIL => Please enter your email address

Personalmente prefiero el método # 1 porque muestra directamente el significado del mensaje. Si la traducción no está presente, puede volver a la clave y esto no causa ningún problema. Sin embargo, el método es incómodo cuando una traducción cambia con frecuencia, porque todos los archivos deben actualizarse. También para textos más largos estas claves se vuelven muy grandes. Esto se resuelve usando teclas comoENTER_EMAIL, pero el fraseo está completamente fuera de contexto. La lista de claves de traducción abstracta sería enorme, necesita metadatos para todas las claves que explican su uso y las colisiones pueden ocurrir mucho más fácilmente.

¿Hay lo mejor de ambos mundos o un tercer método? ¿Cómo se utilizan las claves de traducción en su aplicación? En nuestro caso, se trata de una aplicación web basada en php, pero creo que el problema anterior es lo suficientemente genérico para hablar de i18n en general.