Respuestas:
Silencian una advertencia que Eclipse emite cuando encuentra literales de cadena (y se ha configurado para quejarse).
La idea es que los mensajes de la interfaz de usuario no se deben incrustar como literales de cadena, sino que se deben obtener 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 deje accidentalmente cadenas de IU no externalizadas en el código; sin embargo, hay cadenas que no deben externalizarse (como expresiones regulares) y, por lo tanto, // $ NON-NLS-1 $ le ofrece una forma de comunicar ese hecho al compilador.
NON-NLS
medios para no - N ational L anguage S upport .
Wikipedia propone también no - N ativa L anguage S poyo (NLS), pero esto último no es muy utilizado.
NLS se trata de internacionalizar su aplicación. Ayuda de Eclipse para localizar cadenas codificadas en su código. Para indicar que una cadena no es parte de la internacionalización, agregue el comentario //$NON-NLS-x$
donde x es la posición de la cadena. En el siguiente ejemplo, ambas "!"
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:
//
es necesario cada vez$NON-NLS$
para múltiples cadenas dentro de la misma línea //$NON-NLS-x$
)El libro EMF: Eclipse Modeling Framework en la página 250 dice:
Marcadores que no son NLS: el compilador Java de Eclipse tiene la capacidad de marcar cadenas no externalizadas como advertencia o error, a fin de 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 incluir comentarios que marcan esos literales como no traducibles, de modo que el compilador no los marque.
Para obtener más detalles, consulte también las páginas La GUI del generador y Cómo internacionalizar su complemento Eclipse .
Puede habilitar / deshabilitar esta función. En Eclipse Neon, vaya
Project > Properties > Java Compiler > Errors/Warnings
y seleccione el campo
Non-externalized strings (missing/unused $NON-NLS$ tag)
Si eres un desarrollador de Android. Todas las cadenas que el usuario pueda 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. Al agregar la etiqueta // $ NON-NLS- $ usted es observando que la cadena no será vista por los usuarios.
La advertencia en Eclipse Helios puede activarse en Window -> preferences -> java -> Compiler -> code style -> "Non-externalized Strings (missing/unused &NON-NLS$ tag)
.
Si planea programar su actividad para que sea en varios idiomas, se recomienda activar esto. Y luego agregue la etiqueta $ NON-NLS a las cadenas que son internas de su actividad. Eclipse agregará la etiqueta $ NON-NLS en la solución rápida si hace clic derecho en la advertencia o error.
Eclipse lo utiliza para indicar que una cadena no necesita ser traducida, probablemente porque los usuarios de la aplicación no la verán.
Le dice al compilador que no se queje de una cadena no externalizada, y que no requiere localización.