Macro wxTRANSLATE
Sintaxis
#define wxTRANSLATE (string)
Descripción
Esta macro no hace nada en el código del programa - simplemente se expande al valor de su argumento.
Sin embargo tiene un propósito que es marcar las cadenas literales para la extracción en el catálogo de mensajes creado por el programa xgettext. Normalmente esto se consigue usando _() pero esa macro no sólo marca la cadena para la extracción sino que también se expande en una llamada a wxGetTranslation() lo que significa que no puede usarse en algunas situaciones, notablemente para la inicialización de arrays estáticos.
He aquí un ejemplo que debería dejarlo más claro: supongamos que tenemos un array estático de cadenas que contienen los nombres de elementos químicos, que tienen que ser traducidos. Si escribimos:
static const char * const elements[] = { _("Hidrógeno"), _("Helio"), ... }; ... // use elements[n] as usual
El código se compilaría y ejecutaría, pero no habría traducciones para las cadenas porque las variables estáticas se inicializan en una fase muy temprana de la ejecución del programa; es decir, antes de que se hayan configurado la configuración regional y las rutas a los archivos del catálogo de mensajes. Así que en su lugar se debería hacer esto:
static const char * const elements[] = { wxTRANSLATE("Hydrogen"), wxTRANSLATE("Helium"), ... }; ... // use wxGetTranslation(elements[n])
Hay que tener en cuenta que si simplemente se omite wxTRANSLATE() arriba, esas cadenas no se marcarían para traducción, y por lo tanto no se incluirían en el catálogo de mensajes. En consecuencia, wxGetTranslation() no encontraría traducciones para ellas.
Valor de retorno
Un const wxChar*.