[java] $ NON-NLS-1 $의 의미는 무엇입니까?

이클립스 소스 코드에서 다음과 같은 주석에서 ‘$ NON-NLS-1 $’을 찾았습니다.

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

그게 무슨 뜻이야?



답변

그들은 문자열 리터럴을 만날 때 (그리고 불평하도록 구성된) Eclipse가 경고한다는 경고를 침묵시킵니다.

UI 메시지는 문자열 리터럴로 포함되어서는 안되며 대신 리소스 파일에서 소스 화되어 번역, 교정 등의 작업을 수행해야합니다. 결과적으로 문자열 리터럴을 감지하도록 Eclipse를 구성 할 수 있으므로 실수로 코드에 외부화되지 않은 UI 문자열이 남지 않도록 할 수 있습니다. 그러나 정규화와 같이 외부화해서는 안되는 문자열이 있으므로 // $ NON-NLS-1 $를 사용하면 해당 사실을 컴파일러에 전달할 수 있습니다.


답변

문자열을 번역 할 수 없습니다. 문자열을 자원이없는 것으로 플래그하지 않도록 Eclipse 편집기에 지시합니다. 다국어 응용 프로그램에 중요합니다.


답변

NON-NLS수단 N ational L anguage S upport를 .
위키 백과는 또한 제안 N 의안의 운동성, L anguage S upport를 (NLS)하지만 마지막 하나는 매우 사용되지 않습니다.

NLS 는 응용 프로그램을 국제화하는 것입니다. Eclipse는 코드에서 하드 코딩 된 문자열을 찾는 데 도움이됩니다. 문자열이 국제화의 일부가 아님을 나타내려면 //$NON-NLS-x$x가 문자열의 위치 인 주석을 추가하십시오 . 다음 예 "!"에서 국제화의 일부가 아닌 하드 코드 된 문자열입니다.

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

노트:

  • //마다 리드 가 필요하다
  • $NON-NLS$같은 줄에 여러 문자열에 대해 전역 이 없습니다
    (예 : 줄에 6 개의 문자열이있는 경우 6 번 작성해야합니다 //$NON-NLS-x$)

250 페이지의 EMF : Eclipse Modeling Framework 책 은 다음과 같이 말합니다.

NLS가 아닌 마커 -Eclipse의 Java 컴파일러는 NLS (National Language Support)를 활성화하기 위해 외부화되지 않은 문자열을 경고 또는 오류로 플래그 지정할 수 있습니다. EMF 생성 코드는 사용자에게 표시되는 메시지에 하드 코딩 된 문자열을 사용하지 않습니다. 그러나 문자열 리터럴은 속성 파일에서 외부화 된 문자열을 검색하기위한 키처럼 자주 나타납니다. 이 속성은 해당 리터럴을 번역 할 수없는 것으로 표시하는 주석을 포함할지 여부를 제어하므로 컴파일러는 해당 플래그를 표시하지 않습니다.

자세한 내용은 Generator GUIEclipse 플러그인 국제화 방법 페이지를 참조하십시오 .

이 기능을 활성화 / 비활성화 할 수 있습니다. Eclipse Neon으로 이동
Project > Properties > Java Compiler > Errors/Warnings
하여 필드를 선택하십시오.
Non-externalized strings (missing/unused $NON-NLS$ tag)

Eclipse의 프로젝트 속성 창


답변

당신이 안드로이드 개발자라면. 사용자가 볼 수있는 모든 문자열은 리소스 파일 /res/values/strings.xml에 있어야 R.string을 사용하는 코드에서 strings.xml 파일을 읽을 수 있습니다. // $ NON-NLS- $ 태그를 추가하면 사용자가 문자열을 볼 수 없다는 점에 유의하십시오.

Eclipse Helios의 경고는에서 켜질 수 있습니다 Window -> preferences -> java -> Compiler -> code style -> "Non-externalized Strings (missing/unused &NON-NLS$ tag).

활동을 다국어로 프로그래밍 할 계획이라면이를 켜는 것이 좋습니다. 그런 다음 활동 내부의 문자열에 & NON-NLS $ 태그를 추가하십시오. 경고 또는 오류를 마우스 오른쪽 단추로 클릭하면 Eclipse가 빠른 수정 사항에 & NON-NLS $ 태그를 추가합니다.


답변

Eclipse는 문자열을 변환 할 필요가 없음을 나타 내기 위해 사용합니다. 아마도 응용 프로그램 사용자가 볼 수 없기 때문일 것입니다.


답변

컴파일러는 외부화되지 않은 문자열에 대해 불평하지 말고 현지화가 필요하지 않습니다.


답변