Jawaban:
Mereka membungkam peringatan yang dikeluarkan Eclipse ketika bertemu string literal (dan telah dikonfigurasi untuk mengeluh).
Idenya adalah bahwa pesan UI tidak boleh disematkan sebagai string literal, melainkan bersumber dari file sumber daya (sehingga mereka dapat diterjemahkan, dibuktikan, dll). Konsekuensinya, Eclipse dapat dikonfigurasi untuk mendeteksi string literal, sehingga Anda tidak sengaja meninggalkan string UI yang tidak tereksternalisasi dalam kode; Namun, ada string yang tidak boleh dieksternalisasi (seperti regexps) dan, // $ NON-NLS-1 $ memberi Anda cara untuk mengomunikasikan fakta itu ke kompiler.
String tidak dapat diterjemahkan. Ia memberi tahu editor Eclipse untuk tidak menandai string sebagai tidak bersumber daya. Ini penting untuk aplikasi multibahasa.
NON-NLS
sarana Non - N ational L anguage S upport .
Wikipedia mengusulkan juga Non - N ative L anguage S upport (NLS) tapi yang terakhir ini tidak sangat digunakan.
NLS adalah tentang internasionalisasi aplikasi Anda. Eclipse membantu menemukan string yang dikodekan dalam kode Anda. Untuk menunjukkan string bukan bagian dari internasionalisasi, tambahkan komentar di //$NON-NLS-x$
mana x adalah posisi string. Pada contoh berikut ini, keduanya "!"
adalah string yang dikode-keras bukan bagian dari internasionalisasi:
public String foo(String key) {
return "!" + key + "!"; //$NON-NLS-1$ //$NON-NLS-2$
}
Catatan:
//
diperlukan setiap kali$NON-NLS$
untuk banyak string dalam baris yang sama //$NON-NLS-x$
)Buku EMF: Eclipse Modeling Framework di halaman 250 mengatakan:
Non-NLS Markers— Compiler Java Eclipse memiliki kemampuan untuk menandai string yang tidak dieksternalisasi sebagai peringatan atau kesalahan, untuk memfasilitasi pemberdayaan Dukungan Bahasa Nasional (NLS). Kode yang dihasilkan EMF tidak menggunakan string kode keras untuk pesan yang akan dilihat pengguna; Namun, string literal sering muncul, misalnya, sebagai kunci untuk pencarian string eksternal dalam file properti. Properti ini mengontrol apakah akan memasukkan komentar yang menandai literal-literal itu sebagai tidak dapat diterjemahkan, sehingga kompiler tidak akan menandai mereka.
Untuk lebih jelasnya lihat juga halaman GUI Generator dan Cara Menginternasionalkan Eclipse Plug-In Anda .
Anda dapat mengaktifkan / menonaktifkan fitur ini. Pada Eclipse Neon pergi ke
Project > Properties > Java Compiler > Errors/Warnings
dan pilih bidang
Non-externalized strings (missing/unused $NON-NLS$ tag)
Jika Anda seorang pengembang Android. Semua string yang mungkin dilihat pengguna harus di file sumber /res/values/strings.xml untuk membaca file strings.xml dalam kode yang Anda gunakan R.string .. Dengan menambahkan tag // $ NON-NLS- $ Anda mencatat bahwa string tidak akan terlihat oleh pengguna.
Peringatan di Eclipse Helios dapat dihidupkan pada Window -> preferences -> java -> Compiler -> code style -> "Non-externalized Strings (missing/unused &NON-NLS$ tag)
.
Jika Anda berencana memprogram aktivitas Anda menjadi multi-bahasa, disarankan untuk mengaktifkannya. Dan kemudian menambahkan tag & NON-NLS $ ke string yang internal untuk aktivitas Anda. Eclipse akan menambahkan & NON-NLS $ tag dalam perbaikan cepat jika Anda mengklik kanan pada peringatan atau kesalahan.
Ini digunakan oleh Eclipse untuk menunjukkan bahwa string tidak perlu diterjemahkan, mungkin karena itu tidak akan dilihat oleh pengguna aplikasi.
Ia memberi tahu kompiler untuk tidak mengeluh tentang string yang tidak dieksternalisasi, dan bahwa ia tidak memerlukan pelokalan.