이클립스 소스 코드에서 다음과 같은 주석에서 ‘$ 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 GUI 및 Eclipse 플러그인 국제화 방법 페이지를 참조하십시오 .
이 기능을 활성화 / 비활성화 할 수 있습니다. Eclipse Neon으로 이동
Project > Properties > Java Compiler > Errors/Warnings
하여 필드를 선택하십시오.
Non-externalized strings (missing/unused $NON-NLS$ tag)
답변
당신이 안드로이드 개발자라면. 사용자가 볼 수있는 모든 문자열은 리소스 파일 /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는 문자열을 변환 할 필요가 없음을 나타 내기 위해 사용합니다. 아마도 응용 프로그램 사용자가 볼 수 없기 때문일 것입니다.
답변
컴파일러는 외부화되지 않은 문자열에 대해 불평하지 말고 현지화가 필요하지 않습니다.