java eclipse eclipse-rcp

java - ¿Qué significa $ NON-NLS-1 $?



eclipse eclipse-rcp (6)

Eclipse lo utiliza para indicar que una cadena no necesita ser traducida, probablemente porque los usuarios de la aplicación no la verán.

En el código fuente de Eclipse, he encontrado algunos ''$ NON-NLS-1 $'' en los comentarios utilizados así:

private String toolTip = ""; //$NON-NLS-1$

Qué significa eso ?


La cadena no es traducible. Le dice al editor de Eclipse que no marque la cadena como sin recursos. Esto es importante para aplicaciones multilingües.


Le dice al compilador que no se queje de una cadena no externalizada, y que no requiere localización.


Si eres un desarrollador de Android. Todas las cadenas que el usuario puede ver deben estar en el archivo de recursos /res/values/strings.xml para leer el archivo strings.xml en el código que usa R.string. Agregando la etiqueta // $ NON-NLS- $ you are teniendo en cuenta que la cadena no será vista por los usuarios.

La advertencia en Eclipse Helios se puede activar en Window -> preferences -> java -> Compiler -> code style -> "Non-externalized Strings (missing/unused &NON-NLS$ tag) .

Si está planeando programar su actividad para que sea multi-lenguaje, se recomienda activar esta opción. Y luego agregue la etiqueta & NON-NLS $ a las cadenas que son internas a su actividad. Eclipse agregará la etiqueta & NON-NLS $ en la solución rápida si hace clic derecho en la advertencia o error.


Silencian una advertencia que Eclipse emite cuando encuentra cadenas literales (y se ha configurado para quejarse).

La idea es que los mensajes de la interfaz de usuario no deben incrustarse como literales de cadena, sino que deben provenir de un archivo de recursos (para que puedan traducirse, revisarse, etc.). En consecuencia, Eclipse se puede configurar para detectar literales de cadena, de modo que no tenga accidentalmente que se dejen en el código cadenas de UI no internalizadas; sin embargo, hay cadenas que no deberían ser externalizadas (como las expresiones regulares) y, por lo tanto, // $ NON-NLS-1 $ le da una forma de comunicar ese hecho al compilador.


NON-NLS significa soporte técnico de Non - N ational L anguage S.
Wikipedia también propone el soporte de idiomas de Non - N ative L anguage S (NLS), pero este último no es muy usado.

NLS es sobre la internacionalización de su aplicación. Eclipse ayuda a ubicar cadenas codificadas en su código. Para indicar que una cadena no forma parte de la internacionalización, agregue el comentario //$NON-NLS-x$ donde x es la posición de la cadena. En el siguiente ejemplo ambos "!" Son cadenas codificadas que no forman parte de la internacionalización:

public String foo(String key) { return "!" + key + "!"; //$NON-NLS-1$ //$NON-NLS-2$ }

Notas:

  • el líder // es necesario cada vez
  • no global $NON-NLS$ para múltiples cadenas dentro de la misma línea
    (Por ejemplo, si su línea tiene seis cadenas, debe escribir seis veces //$NON-NLS-x$ )

El libro EMF: Eclipse Modeling Framework en la página 250 dice:

Marcadores que no son NLS: el compilador de Java de Eclipse tiene la capacidad de marcar cadenas no externalizadas como advertencia o error, para facilitar la habilitación del soporte de idioma nacional (NLS). El código generado por EMF no utiliza cadenas codificadas para los mensajes que verá el usuario; sin embargo, los literales de cadena aparecen con frecuencia, por ejemplo, como claves para la búsqueda de cadenas externalizadas en un archivo de propiedades. Esta propiedad controla si se incluyen los comentarios que marcan esos literales como no traducibles, para que el compilador no los marque.

Para obtener más información, consulte también las páginas El GUI del generador y Cómo internacionalizar su complemento Eclipse .

Puede habilitar / deshabilitar esta característica. En Eclipse Neon ir a
Project > Properties > Java Compiler > Errors/Warnings
y selecciona el campo
Non-externalized strings (missing/unused $NON-NLS$ tag)