문제

Eclipse 소스 코드에서 다음과 같이 사용된 주석에서 '$NON-NLS-1$'을 발견했습니다.

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

그게 무슨 뜻이에요?

도움이 되었습니까?

해결책

그들은 일식이 문자열 리터럴을 발견 할 때 방출된다는 경고를 침묵합니다 (그리고 불만으로 구성됨).

아이디어는 UI 메시지를 문자열 리터럴로 포함해서는 안되는 것이 아니라 리소스 파일에서 소지되어야한다는 것입니다 (따라서 번역, 교정 등). 결과적으로, Eclipse는 문자열 리터럴을 감지하도록 구성 될 수 있으므로 실수로 코드에 실수가없는 UI 문자열을 남기지 않았습니다. 그러나 외부화되어서는 안되는 문자열 (예 : Regexps)이 있으므로 // $ non-nls-1 $는 해당 사실을 컴파일러에 전달할 수있는 방법을 제공합니다.

다른 팁

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

NON-NLS 수단 -N합리적인 언어 에스지원.
위키피디아 또한 제안한다 -N적극적인 언어 에스지원 (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$)

그 책 EMF:Eclipse 모델링 프레임워크(250페이지) 말한다:

비NLS 마커— Eclipse의 Java 컴파일러에는 NLS(National Language Support) 활성화를 용이하게 하기 위해 외부화되지 않은 문자열을 경고 또는 오류로 플래그 지정하는 기능이 있습니다.EMF 생성 코드는 사용자에게 표시되는 메시지에 대해 하드 코딩된 문자열을 사용하지 않습니다.그러나 문자열 리터럴은 예를 들어 속성 ​​파일에서 외부화된 문자열을 조회하기 위한 키로 자주 나타납니다.이 속성은 해당 리터럴을 번역 불가능으로 표시하는 주석을 포함할지 여부를 제어하여 컴파일러가 해당 리터럴에 플래그를 지정하지 않도록 합니다.

자세한 내용은 페이지를 참조하세요. 생성기 GUI 그리고 Eclipse 플러그인을 국제화하는 방법.

이 기능을 활성화/비활성화할 수 있습니다.Eclipse Neon에서 다음으로 이동하세요.
Project > Properties > Java Compiler > Errors/Warnings
그리고 필드를 선택하세요
Non-externalized strings (missing/unused $NON-NLS$ tag)

Window of the Project Properties on Eclipse

당신이 안드로이드 개발자라면 사용자가 볼 수있는 모든 문자열은 R.String을 사용하는 코드에서 strings.xml 파일을 읽으려면 Resource 파일 /res/values/strings.xml에 있어야합니다. 태그를 추가하여 // $ non-nls- $입니다. 문자열은 사용자가 보지 못할 것입니다.

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

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

Eclipse는 문자열을 번역 할 필요가 없음을 나타내는 데 사용됩니다. 아마도 응용 프로그램 사용자가 볼 수 없기 때문일 수 있습니다.

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top