ฉันไม่ใช่ผู้เชี่ยวชาญ แต่นี่เป็นสิ่งพื้นฐาน:
ตรวจสอบให้แน่ใจว่าสตริงของคุณสามารถจัดการได้มากกว่าเพียง ASCII
คุณจะต้องมีอักขระspécthatålบางตัวที่ไม่พอดีกับ ASCII และคลาสสตริงของคุณจะดีกว่าไม่ใช่ barf UTF-8 เป็นการเข้ารหัสทั่วไปเนื่องจากประหยัดพื้นที่ ไม่ว่าคุณจะทำอะไรทดสอบเร็ว ๆ
เป็นความคิดที่ดีจริงๆที่จะใช้คลาสสตริงจริงไม่ใช่แค่char *
ทุกที่หรือคุณจะต้องอยู่ในโลกแห่งความเจ็บปวด
อย่าลืมแบบอักษรของคุณ ตรวจสอบให้แน่ใจว่าแบบอักษรทั้งหมดที่คุณใช้มีอักขระที่คุณต้องการ
ดึงสายของคุณออกจากรหัส
นี่คือสิ่งที่สำคัญที่สุด ตรวจสอบให้แน่ใจว่าสตริงข้อความของคุณถูกเก็บไว้นอกรหัสในไฟล์ข้อมูลบางไฟล์ที่คุณสามารถสลับ การติดตั้งไปป์ไลน์อาจเป็นเรื่องที่ต้องทำล่วงหน้า แต่จะช่วยให้คุณประหยัดได้ในภายหลัง คุณจะต้องการ API แบบง่าย ๆ เพื่อให้ทุกครั้งที่คุณต้องการสตริงในโค้ดมันง่ายเหมือน:
String text = Locale::getString("some unique identifier");
อย่าต่อเชื่อมหรือสร้างสตริงในรหัส
เป็นเรื่องสำคัญที่จะต้องไม่ตั้งสมมติฐานใด ๆ ว่าชิ้นส่วนของข้อความถูกสร้างขึ้นมาจากคำที่เล็กกว่า แม้แต่บางสิ่งบางอย่างที่ไม่น่ากลัวเหมือน:
String currency = Locale::getCurrencyString() + money.toString();
// creates $123
เป็นปัญหาเนื่องจากภาษาอื่นอาจวางเครื่องหมายสกุลเงินไว้หลังตัวเลข ให้ใช้สตริงรูปแบบที่มีการแปลเป็นภาษาท้องถิ่นเช่น:
String format = Locale::get("currency format"); // returns "${0}" in English
String currency = String::Format(format, money.toString());
ด้วยวิธีนี้ Localizers สามารถจัดเรียงคำใหม่ภายในสตริงรูปแบบ
ลดจำนวนข้อความที่ปรากฏในงานศิลปะโดยเฉพาะอย่างยิ่งวิดีโอ
การแยกสินทรัพย์ศิลปะเป็นงานที่น่าเบื่อ คุณอาจต้องทำอย่างน้อยหนึ่งองค์ประกอบ UI บางอย่าง แต่ก็เป็นเรื่องยุ่งยาก Forking FMV เป็นความเจ็บปวดอย่างมากเพราะตอนนี้คุณต้องเรนเดอร์และเก็บสำเนา FMV ของคุณซ้ำ
ทดสอบภาษาต่าง ๆ อย่างละเอียด
ในฐานโค้ดส่วนใหญ่มันง่ายเกินไปที่จะพูดprintf("Hi there");
หรือloadTexture("someTexture");
ลืมว่าสิ่งเหล่านั้นต้องผ่าน API การแปลของคุณ บางคนจะลืมและคุณจะจบลงด้วยสิ่งที่ถูกต้องในภาษาหลักของคุณ แต่คนอื่นผิด วิธีเดียวในการค้นหาสิ่งเหล่านี้คือการทดสอบผู้ทดสอบของคุณในภาษาที่ไม่ใช่ภาษาหลัก
ทำให้ข้อความในภาษาท้องถิ่นหายไปอย่างชัดเจน
โดยทั่วไปแล้วคุณจะแปลข้อความของคุณล่าช้าในรอบดังนั้นเวลาส่วนใหญ่จะไม่มีข้อมูลสำหรับบางภาษา ไม่เป็นไรเพราะช่วยให้คุณสามารถทำซ้ำเนื้อหาของคุณโดยไม่ต้องทำการแปลซ้ำอย่างต่อเนื่อง ข้อเสียคือมันง่ายสำหรับคุณที่จะพลาดสิ่งต่าง ๆ และลืมที่จะแปลบางสิ่ง
สิ่งหนึ่งที่ราคาถูกที่คุณสามารถทำได้คือทำให้ข้อความที่หายไปปรากฏขึ้นอย่างชัดเจนเช่น "!!! การแปลที่จำเป็นสำหรับ ID # blah blah !!!" ในเกมเมื่อมันหายไป
ออกแบบ UI ของคุณด้วยภาษากรณีที่เลวร้ายที่สุด
ภาษาที่ต่างกันมักจะมีคำที่ยาวหรือสั้นกว่า UI ที่ดูสวยงามในภาษาอังกฤษอาจมีข้อความที่ยาวเกินขอบเขตรับการครอบตัดหรือตัดคำผิดในภาษาที่ยาวกว่า คุณจะต้องทำการเปลี่ยนแปลง UI เพื่อรองรับภาษาที่เลวร้ายที่สุด (หรือแยก UI ของคุณ แต่นั่นอาจไม่ใช่สิ่งที่คุณต้องการทำ)
น่ารำคาญภาษาอังกฤษมักเป็นภาษาที่สั้นที่สุดของภาษาท้องถิ่นดังนั้นนักออกแบบของคุณอาจออกแบบโดยไม่ตั้งใจเพื่อกรณีที่ดีที่สุด ทำให้พวกเขาใช้ข้อความยาวเป็นพิเศษสำหรับตัวยึดตำแหน่งเมื่อพวกเขาออกแบบ สมมติว่าข้อความใด ๆ ที่ระบุสามารถมีความยาวได้มากกว่า 30% เป็นภาษาอังกฤษ Google Translate สามารถรับข้อความได้โดยประมาณสำหรับตัวยึดตำแหน่ง
เวลางบประมาณสำหรับการแปล
การแปลข้อความมักจะเกิดขึ้นช้าเมื่อทีมเหนื่อยและไม่สนใจจริงๆ อย่างไรก็ตามคุณจะได้รับจำนวนมากของบักเมื่อมันเกิดขึ้น คำที่ใช้จะวิ่งผ่านขอบเขตที่ผ่านมานักแปลจะทำผิดพลาด ฯลฯ ในการทำให้เรื่องแย่ลงเวลาตอบสนองสำหรับการวนซ้ำของข้อความอาจใช้เวลานานถ้าคุณต้องส่งข้อความไปหาผู้คนในต่างประเทศและรอการเปลี่ยนแปลง จัดสรรเวลาสำหรับงานนี้