ในซอร์สโค้ด Eclipse ฉันพบ '$ NON-NLS-1 $' บางส่วนในความคิดเห็นที่ใช้เช่นนั้น:
private String toolTip = ""; //$NON-NLS-1$
นั่นหมายความว่าอย่างไร ?
ในซอร์สโค้ด Eclipse ฉันพบ '$ NON-NLS-1 $' บางส่วนในความคิดเห็นที่ใช้เช่นนั้น:
private String toolTip = ""; //$NON-NLS-1$
นั่นหมายความว่าอย่างไร ?
คำตอบ:
พวกเขาปิดเสียงเตือนว่า Eclipse ปล่อยออกมาเมื่อพบสตริงตัวอักษร (และได้รับการกำหนดค่าให้บ่น)
แนวคิดคือไม่ควรฝังข้อความ UI เป็นตัวอักษรของสตริง แต่มีที่มาจากไฟล์ทรัพยากร (เพื่อให้สามารถแปลตรวจสอบและอื่น ๆ ) ดังนั้น Eclipse สามารถกำหนดค่าให้ตรวจจับตัวอักษรของสตริงเพื่อที่คุณจะไม่ได้ทิ้งสตริง UI ที่ไม่ได้ทำให้อยู่ภายนอกในโค้ด อย่างไรก็ตามมีสตริงที่ไม่ควรส่งออก (เช่น regexps) ดังนั้น // // NON-NLS-1 $ จะให้วิธีการสื่อสารความจริงนั้นกับคอมไพเลอร์
สตริงไม่สามารถแปลได้ มันบอกบรรณาธิการ Eclipse ที่จะไม่ตั้งค่าสถานะสตริงเป็น unresourced สิ่งนี้สำคัญสำหรับแอปพลิเคชั่นหลายภาษา
NON-NLS
หมายถึงองค์กรไม่แสวงหา - N ational L anguage S upport
WikipediaเสนอNon - N ative 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$
สำหรับสตริงจำนวนมากภายในบรรทัดเดียวกัน//$NON-NLS-x$
)หนังสือEMF: กรอบการสร้างแบบจำลอง Eclipse ที่หน้า 250พูดว่า:
ตัวทำเครื่องหมาย Non-NLS—คอมไพลเลอร์ Java ของ Eclipse มีความสามารถในการตั้งค่าสถานะสตริงที่ไม่ได้ส่งออกภายนอกเป็นคำเตือนหรือข้อผิดพลาดเพื่ออำนวยความสะดวกในการเปิดใช้งาน National Language Support (NLS) รหัสที่สร้างโดย EMF ไม่ได้ใช้สตริงที่เข้ารหัสยากสำหรับข้อความที่ผู้ใช้จะเห็น อย่างไรก็ตามสตริงตัวอักษรปรากฏขึ้นบ่อยครั้งเช่นเป็นคีย์สำหรับการค้นหาสตริงภายนอกในไฟล์คุณสมบัติ คุณสมบัตินี้ควบคุมว่าจะรวมข้อคิดเห็นที่ทำเครื่องหมายตัวอักษรเหล่านั้นว่าแปลไม่ได้หรือไม่ดังนั้นคอมไพเลอร์จะไม่ตั้งค่าสถานะเหล่านั้น
สำหรับรายละเอียดเพิ่มเติมโปรดดูที่หน้าตัวสร้าง GUIและวิธีทำให้ปลั๊กอิน Eclipse เป็นสากล
คุณสามารถเปิด / ปิดการใช้งานคุณสมบัตินี้ บน Eclipse Neon ไปที่
Project > Properties > Java Compiler > Errors/Warnings
และเลือกฟิลด์
Non-externalized strings (missing/unused $NON-NLS$ tag)
หากคุณเป็นนักพัฒนา Android สตริงทั้งหมดที่ผู้ใช้อาจเห็นควรอยู่ในไฟล์ทรัพยากร /res/values/strings.xml เพื่ออ่านไฟล์ strings.xml ในรหัสที่คุณใช้ R.string .. โดยการเพิ่มแท็ก // $ NON-NLS- $ คุณเป็น สังเกตว่าผู้ใช้จะไม่เห็นสตริง
คำเตือนใน Eclipse Helios Window -> preferences -> java -> Compiler -> code style -> "Non-externalized Strings (missing/unused &NON-NLS$ tag)
อาจจะเปิดอยู่
หากคุณวางแผนที่จะเขียนโปรแกรมกิจกรรมของคุณเป็นหลายภาษาแนะนำให้เปิดใช้งาน จากนั้นเพิ่มแท็ก & NON-NLS $ ลงในสตริงที่อยู่ภายในกิจกรรมของคุณ Eclipse จะเพิ่มแท็ก & NON-NLS $ ในการแก้ไขด่วนหากคุณคลิกขวาที่คำเตือนหรือข้อผิดพลาด
Eclipse ใช้เพื่อระบุว่าไม่จำเป็นต้องแปลสตริงอาจเป็นเพราะผู้ใช้แอปพลิเคชันจะไม่เห็น
มันบอกคอมไพเลอร์ที่จะไม่บ่นเกี่ยวกับสตริงที่ไม่ใช่ externalized และมันไม่จำเป็นต้องมีการแปล