Dans le code source d'Eclipse, j'ai trouvé des «$ NON-NLS-1 $» dans les commentaires utilisés comme ça:
private String toolTip = ""; //$NON-NLS-1$
Qu'est-ce que ça veut dire ?
la source
Dans le code source d'Eclipse, j'ai trouvé des «$ NON-NLS-1 $» dans les commentaires utilisés comme ça:
private String toolTip = ""; //$NON-NLS-1$
Qu'est-ce que ça veut dire ?
Ils font taire un avertissement qu'Eclipse émet lorsqu'il rencontre des littéraux de chaîne (et a été configuré pour se plaindre).
L'idée est que les messages d'interface utilisateur ne doivent pas être incorporés en tant que littéraux de chaîne, mais plutôt provenir d'un fichier de ressources (afin qu'ils puissent être traduits, vérifiés, etc.). Par conséquent, Eclipse peut être configuré pour détecter les littéraux de chaîne, afin que vous n'ayez pas accidentellement laissé de chaînes d'interface utilisateur non externalisées dans le code; cependant, il existe des chaînes qui ne doivent pas être externalisées (telles que les expressions régulières) et donc, // $ NON-NLS-1 $ vous donne un moyen de communiquer ce fait au compilateur.
La chaîne n'est pas traduisible. Il indique à l'éditeur Eclipse de ne pas marquer la chaîne comme non financée. Ceci est important pour les applications multilingues.
NON-NLS
des moyens non - N ational L anguage S upport .
Wikipedia propose également non - N ative L ANGUE S upport (NLS) , mais ce dernier n'est pas très utilisé.
NLS consiste à internationaliser votre application. Aide d'Eclipse pour localiser les chaînes codées en dur dans votre code. Pour indiquer qu'une chaîne ne fait pas partie de l'internationalisation, ajoutez le commentaire //$NON-NLS-x$
où x est la position de la chaîne. Dans l'exemple suivant, les deux "!"
sont des chaînes codées en dur qui ne font pas partie de l'internationalisation:
public String foo(String key) {
return "!" + key + "!"; //$NON-NLS-1$ //$NON-NLS-2$
}
Remarques:
//
est nécessaire à chaque fois$NON-NLS$
pour plusieurs chaînes dans la même ligne //$NON-NLS-x$
)Le livre EMF: Eclipse Modeling Framework à la page 250 dit:
Marqueurs non NLS: le compilateur Java d'Eclipse a la possibilité de signaler des chaînes non externalisées comme avertissement ou erreur, afin de faciliter l'activation de la prise en charge de la langue nationale (NLS). Le code généré par EMF n'utilise pas de chaînes codées en dur pour les messages que l'utilisateur verra; cependant, les littéraux de chaîne apparaissent fréquemment, par exemple, comme clés de recherche de chaînes externalisées dans un fichier de propriétés. Cette propriété contrôle s'il faut inclure les commentaires qui marquent ces littéraux comme non traduisibles, afin que le compilateur ne les marque pas.
Pour plus de détails, consultez également les pages L'interface graphique du générateur et Comment internationaliser votre plug-in Eclipse .
Vous pouvez activer / désactiver cette fonction. Sur Eclipse Neon, allez sur
Project > Properties > Java Compiler > Errors/Warnings
et sélectionnez le champ
Non-externalized strings (missing/unused $NON-NLS$ tag)
Si vous êtes développeur Android. Toutes les chaînes que l'utilisateur peut voir doivent se trouver dans le fichier de ressources /res/values/strings.xml pour lire le fichier strings.xml dans le code que vous utilisez R.string .. En ajoutant la balise // $ NON-NLS- $ vous êtes notant que la chaîne ne sera pas vue par les utilisateurs.
L'avertissement dans Eclipse Helios peut être activé à Window -> preferences -> java -> Compiler -> code style -> "Non-externalized Strings (missing/unused &NON-NLS$ tag)
.
Si vous prévoyez de programmer votre activité en plusieurs langues, il est recommandé de l'activer. Et puis en ajoutant la balise & NON-NLS $ aux chaînes internes à votre activité. Eclipse ajoutera la balise & NON-NLS $ dans la correction rapide si vous faites un clic droit sur l'avertissement ou l'erreur.
Il est utilisé par Eclipse pour indiquer qu'une chaîne n'a pas besoin d'être traduite, probablement parce qu'elle ne sera pas vue par les utilisateurs de l'application.
Il indique au compilateur de ne pas se plaindre d'une chaîne non externalisée et qu'il ne nécessite pas de localisation.