Câu trả lời:
Họ im lặng cảnh báo rằng Eclipse phát ra khi nó gặp chuỗi ký tự (và đã được cấu hình để khiếu nại).
Ý tưởng là các thông điệp UI không nên được nhúng dưới dạng chuỗi ký tự, mà là nguồn gốc từ một tệp tài nguyên (để chúng có thể được dịch, chứng minh, v.v.). Do đó, Eclipse có thể được cấu hình để phát hiện các chuỗi ký tự, do đó bạn không vô tình để lại các chuỗi UI không tồn tại trong mã; tuy nhiên, có các chuỗi không nên được bên ngoài (chẳng hạn như regexps) và vì vậy, // $ NON-NLS-1 $ cung cấp cho bạn một cách để truyền đạt thực tế đó đến trình biên dịch.
NON-NLS
có nghĩa là Non - N ational L anguage S upport .
Wikipedia cũng đề xuất Non - N ative L anguage S upport (NLS) nhưng cái cuối cùng này không được sử dụng nhiều.
NLS là về quốc tế hóa ứng dụng của bạn. Eclipse giúp định vị các chuỗi mã hóa cứng trong mã của bạn. Để chỉ ra một chuỗi không phải là một phần của quốc tế hóa, hãy thêm nhận xét //$NON-NLS-x$
trong đó x là vị trí của chuỗi. Trong ví dụ sau, cả hai đều "!"
là các chuỗi được mã hóa cứng không phải là một phần của quá trình quốc tế hóa:
public String foo(String key) {
return "!" + key + "!"; //$NON-NLS-1$ //$NON-NLS-2$
}
Ghi chú:
//
là cần thiết mỗi lần$NON-NLS$
cho nhiều chuỗi trong cùng một dòng //$NON-NLS-x$
)Cuốn sách EMF: Khung mô hình hóa Eclipse ở trang 250 nói:
Các trình đánh dấu không phải NLS Trình biên dịch Java của Eclipse có khả năng gắn cờ các chuỗi không được ngoại hóa thành một cảnh báo hoặc lỗi, để tạo điều kiện hỗ trợ cho Hỗ trợ ngôn ngữ quốc gia (NLS). Mã do EMF tạo không sử dụng các chuỗi được mã hóa cứng cho các tin nhắn mà người dùng sẽ thấy; tuy nhiên, ví dụ, chuỗi ký tự xuất hiện thường xuyên, như các khóa để tra cứu các chuỗi bên ngoài trong tệp thuộc tính. Thuộc tính này kiểm soát xem có bao gồm các nhận xét đánh dấu các chữ đó là không thể dịch được không, do đó trình biên dịch sẽ không gắn cờ chúng.
Để biết thêm chi tiết, xem thêm các trang GUI GUI và Cách quốc tế hóa Trình cắm Eclipse của bạn .
Bạn có thể bật / tắt tính năng này. Trên Eclipse neon đi đến
Project > Properties > Java Compiler > Errors/Warnings
và chọn trường
Non-externalized strings (missing/unused $NON-NLS$ tag)
Nếu bạn là một nhà phát triển Android. Tất cả các chuỗi mà người dùng có thể thấy phải có trong tệp tài nguyên /res/values/strings.xml để đọc tệp String.xml trong mã bạn sử dụng R. Chuỗi .. Bằng cách thêm thẻ // $ NON-NLS- $ bạn đang lưu ý rằng chuỗi sẽ không được nhìn thấy bởi người dùng.
Cảnh báo trong Helios Eclipse có thể được bật tại Window -> preferences -> java -> Compiler -> code style -> "Non-externalized Strings (missing/unused &NON-NLS$ tag)
.
Nếu bạn đang có kế hoạch lập trình hoạt động của mình thành đa ngôn ngữ, bạn nên bật nó lên. Và sau đó thêm thẻ & NON-NLS $ vào các chuỗi nội bộ cho hoạt động của bạn. Eclipse sẽ thêm thẻ & NON-NLS $ trong bản sửa lỗi nhanh nếu bạn nhấp chuột phải vào cảnh báo hoặc lỗi.
Nó được sử dụng bởi Eclipse để chỉ ra rằng một chuỗi không cần phải dịch, có lẽ bởi vì nó sẽ không được người dùng ứng dụng nhìn thấy.
Nó yêu cầu trình biên dịch không phàn nàn về một chuỗi không được ngoại hóa và nó không yêu cầu nội địa hóa.