แนวทางปฏิบัติที่ดีที่สุดโดยใช้ NSLocalizedString
ฉัน (เหมือนคนอื่น ๆ ทั้งหมด) ใช้NSLocalizedStringเพื่อแปลแอปของฉัน น่าเสียดายที่มี "ข้อเสีย" หลายประการ (ไม่จำเป็นต้องเป็นความผิดของ NSLocalizedString เอง) รวมถึง ไม่มีการเติมข้อความอัตโนมัติสำหรับสตริงใน Xcode สิ่งนี้ทำให้การทำงานไม่เพียง แต่เกิดข้อผิดพลาดได้ง่าย แต่ยังน่าเบื่อ คุณอาจสิ้นสุดการกำหนดสตริงใหม่เนื่องจากคุณไม่รู้ว่ามีสตริงเทียบเท่าอยู่แล้ว (เช่น "โปรดป้อนรหัสผ่าน" และ "ป้อนรหัสผ่านก่อน") เช่นเดียวกับปัญหาการเติมข้อความอัตโนมัติคุณต้อง "จดจำ" / คัดลอกสตริงความคิดเห็นไม่เช่นgenstringนั้นจะมีหลายความคิดเห็นสำหรับหนึ่งสตริง หากคุณต้องการใช้genstringหลังจากที่คุณแปลสตริงบางส่วนแล้วคุณต้องระวังไม่ให้สูญเสียการแปลท้องถิ่นของคุณ สายเดียวกันกระจัดกระจายตลอดโครงการของคุณทั้งหมด ตัวอย่างเช่นคุณใช้NSLocalizedString(@"Abort", @"Cancel action")ทุกที่จากนั้นตรวจสอบรหัสขอให้คุณเปลี่ยนชื่อสตริงNSLocalizedString(@"Cancel", @"Cancel action")เพื่อให้รหัสสอดคล้องกันมากขึ้น สิ่งที่ฉันทำ (และหลังจากการค้นหาบางอย่างดังนั้นฉันคิดว่าหลายคนทำสิ่งนี้) คือการมีstrings.hไฟล์แยกต่างหากที่ฉัน#defineทุกรหัสภาษา ตัวอย่างเช่น // In strings.h #define NSLS_COMMON_CANCEL NSLocalizedString(@"Cancel", nil) // Somewhere else NSLog(@"%@", NSLS_COMMON_CANCEL); สิ่งนี้จะช่วยให้การสร้างโค้ดเสร็จสมบูรณ์เป็นที่เดียวในการเปลี่ยนชื่อตัวแปร …