คู่มือการแปล iOS สำหรับแอพ iPhone และ iPad หลายภาษา คู่มือการแปล iOS สำหรับแอป iPhone และ iPad หลายภาษาที่จัดการสตริงที่ซ้ำกัน

เราแปลเป็น ภาษาต่างประเทศ โปรแกรมคอมพิวเตอร์, เกม และแอพพลิเคชั่นออนไลน์

นอกเหนือจากทรัพยากรสตริงของอินเทอร์เฟซแล้ว เรายังดำเนินการแปลอีกด้วย ระบบช่วยเหลือ, ข้อความทางการตลาด, เว็บไซต์ หากจำเป็น เราจะพากย์เสียงใหม่หรือถ่ายคลิปวิดีโอใหม่ วาดกราฟิกใหม่ เขียนข้อความใหม่ในภาษาที่ต้องการ

การแปลทั้งหมดดำเนินการโดยนักแปลเจ้าของภาษามืออาชีพ เราแปลเป็น 68 ภาษา รวมถึงคู่ภาษาอื่นๆ

การแปลเดสก์ท็อป เบราว์เซอร์ และเกมมือถือเป็นภาษาท้องถิ่น

เราทำงานร่วมกับผู้จัดพิมพ์และผู้พัฒนาโครงการมือถือและเกมเพื่อช่วยสร้าง แอปพลิเคชันที่มีอยู่สำหรับ iOS, Android, HTML5 ในกว่า 60 ภาษา นอกเหนือจากการแปลทรัพยากรสตริงของแอปพลิเคชันแล้ว เรายังเขียนและแปลคำอธิบายด้วยแอพสโตร์ และ.

Google Play

การทดสอบทางภาษา

หลังจากประกอบแอปพลิเคชันเวอร์ชันท้องถิ่นแล้ว นักแปล/โลคัลไลเซอร์จำเป็นต้องทดสอบบนระบบปฏิบัติการเวอร์ชันระดับชาติ ในระหว่างการทดสอบทางภาษา Localizer จะจับภาพหน้าจอของพื้นที่ที่มีปัญหา (ไม่ได้แปล บรรทัดยาวเกินไป การเข้ารหัสหรือทิศทางของข้อความไม่ถูกต้อง บริบทไม่ถูกต้อง) และร่วมกับนักพัฒนา ทำการเปลี่ยนแปลงที่จำเป็นในไฟล์ทรัพยากร

หากคุณแปลแอปพลิเคชันด้วยตนเองหรือโดยผู้รับเหมาบุคคลที่สาม คุณสามารถสั่งการทดสอบการแปลภาษาจากเราได้

การคำนวณต้นทุน

ค่าใช้จ่ายในการแปลและการแปลคำนวณตามปริมาณข้อความ (จำนวนอักขระที่มีช่องว่าง) ตรวจสอบราคาแปล แท็ก คีย์ และมาร์กอัปจะไม่ถูกนำมาพิจารณาเมื่อคำนวณ โพสต์นี้เป็นความพยายามที่จะจัดระบบทุกอย่างที่มีอยู่ในขณะนี้

แม้ว่าเราจะเขียนโปรแกรม “เพื่อตัวเราเอง” แต่เราไม่ได้คิดถึงการแปลเป็นภาษาท้องถิ่น ความเป็นสากล และปัญหาอื่นๆ ทำไม ไม่น่าเป็นไปได้ที่ใครก็ตามที่มีจิตใจดีจะคิดว่า “ฉันไม่ควรแปลยูทิลิตี้ของฉันเป็นภาษาฮีบรูเพื่อที่ฉันจะได้ทำงานกับโปรแกรมดังกล่าวได้หรือ?” มันจะแตกต่างไปจากเดิมอย่างสิ้นเชิงเมื่อรายการ "เติบโตจากกางเกงขาสั้น" และมีความต้องการในประเทศอื่นๆ จากนั้น หากความต้องการมีมากพอ คุณสามารถ (และควร) รับการแปลเป็นภาษาท้องถิ่น ค้นหาเครื่องมือที่เหมาะสม จ้างนักแปล (หรือแปลเอง) และทำงาน ทำงาน และทำงาน โซลูชันเช่น "ฉันจะสร้างไฟล์ INI" อาจเหมาะสำหรับโปรแกรมขนาดเล็ก แต่ไม่เหมาะสำหรับโครงการที่จริงจังซึ่งมีอินเทอร์เฟซที่พัฒนาขึ้น มีแบบฟอร์ม ทรัพยากรจำนวนมาก ฯลฯ - ในกรณีนี้ควรหาวิธีแก้ปัญหาสำเร็จรูปที่เหมาะสม จริงๆ แล้ว เป้าหมายหลักของการค้นหาวิธีแก้ปัญหาสำหรับการแปลที่ตั้งไว้สำหรับฉันคือการหาวิธีแก้ปัญหาที่จะช่วยให้:

  1. ดำเนินการแปลโดยผู้ที่ไม่ใช่โปรแกรมเมอร์
  2. ทำงานกับพจนานุกรมของคุณเองเพื่อการแปล
  3. รองรับ XE2

และตามปกติแล้ว วิธีแก้ปัญหาควรจะใช้งานง่าย ราคาถูก ถ้าเป็นไปได้ เรียนรู้ง่าย ฯลฯ ฯลฯ และเนื่องจากฉันยังคงตัดสินใจที่จะค้นหาสิ่งเหล่านี้ทั้งหมด ตัวเลือกที่เป็นไปได้(หรือตามจำนวนตัวเลือกสูงสุดที่เป็นไปได้) ฉันตัดสินใจจัดระบบเนื้อหาทั้งหมดที่พบและจัดรูปแบบไว้ในโพสต์นี้ ที่นี่คุณสามารถเรียนรู้เกี่ยวกับส่วนประกอบและไลบรารีและโปรแกรมของ Delphi ที่มีอยู่ โดยทั่วไปเกี่ยวกับทุกสิ่งที่ใจคุณต้องการ โดยทั่วไป หากคุณตั้งใจที่จะค้นหาสิ่งที่เหมาะกับรสนิยมของคุณในข้อเสนอการแปลหลายภาษา โปรดอ่านต่อ :)

ชุดส่วนประกอบ TSILang

  • ผู้พัฒนา: SiComponents
  • เว็บไซต์อย่างเป็นทางการ:
  • ราคา: จาก $259 ถึง $399- แพ็คเกจ $259 ไม่รวมแหล่งที่มา (DCU และ OBJ เท่านั้น)
  • มีอยู่ .
  • วันที่วางจำหน่ายล่าสุด: 05 พฤษภาคม 2555
  • รองรับ Delphi XE2: มีอยู่

ชุดส่วนประกอบ TsiLang®ช่วยให้คุณสามารถเพิ่ม รองรับภาษาได้ไม่จำกัดและยังสร้างผลิตภัณฑ์เวอร์ชันที่แปลเป็นภาษาท้องถิ่นโดยสมบูรณ์ตาม รุ่นพื้นฐานโครงการ. องค์ประกอบที่จำเป็นทั้งหมดของอินเทอร์เฟซผู้ใช้จะถูกค้นหาและเพิ่มลงในรายการสำหรับการแปลโดยอัตโนมัติ วิธีที่สะดวกบันทึกและจัดการการแปลและแน่นอนว่ามีการสลับภาษาอินเทอร์เฟซ “ได้ทันที” ทั้งในขณะที่แอปพลิเคชันกำลังทำงานและอยู่ในโหมดนักออกแบบซึ่งช่วยให้คุณสามารถทดสอบอินเทอร์เฟซได้โดยไม่ต้องคอมไพล์และรันแอปพลิเคชัน

การทดสอบของฉัน

สำหรับการทดสอบ ฉันดาวน์โหลดและติดตั้ง เวอร์ชันล่าสุดส่วนประกอบ (6.5.4.7) และสร้างแอปพลิเคชันง่าย ๆ ที่ฉันวางปุ่ม, ป้ายกำกับ, OpenDialog, เพิ่มสตริงทรัพยากรและค่าคงที่ ตัวจัดการ "เส้นโค้ง" ต่อไปนี้ถูกสร้างขึ้นสำหรับปุ่ม OnClick โดยเฉพาะ:

ขั้นตอน TForm19. Button1Click(ผู้ส่ง: TObject);

start ShowMessage("สวัสดีชาวโลก!" ) ;

จบ ; การแปลเป็นภาษาท้องถิ่นด้วย TsiLang ดำเนินการดังนี้:

1. เปิดตัวผู้เชี่ยวชาญ TsiLang จากเมนู Delphi: เครื่องมือ -> TsiExpert แบบฟอร์มโครงการทั้งหมดจะแสดงอยู่ที่นี่ รวมถึงส่วนประกอบที่อยู่ในแบบฟอร์มเหล่านี้ ตอนนี้เลือกจากเมนู ไฟล์ -> ภาษา, และแก้ไขรายการภาษาสำหรับแอปพลิเคชันของเรา โดยค่าเริ่มต้น ทุกภาษาจะมีชื่อดังนี้ภาษา1

ภาษา2

ฯลฯ ฉันเปลี่ยนชื่อพวกเขาดังนี้:

  1. หลังจากกดปุ่ม "ตกลง" ส่วนประกอบ TsiLang จะปรากฏบนรูปแบบหลัก (และเท่านั้น) ของแอปพลิเคชัน: ตอนนี้เราพบปุ่ม "บันทึกโครงการ" ในผู้เชี่ยวชาญและบันทึกโครงการของเรา TsiLang ใช้ไฟล์โปรเจ็กต์สองประเภท:*.ซิบ -
  2. ไฟล์ไบนารี พร้อมคำแปล ผู้พัฒนาแนะนำให้ใช้ไฟล์ประเภทนี้เพราะว่า... การโหลดไฟล์ดังกล่าวเร็วกว่าเมื่อใช้ไฟล์ประเภทที่สองมาก*.ซิล - ไฟล์ข้อความ- ข้อดีของไฟล์ประเภทนี้คือเราสามารถถ่ายโอนไฟล์นี้ได้โดยใช้เครื่องหมาย “

บรรณาธิการ SIL ” ให้บุคคลอื่นแปล

ฉันบันทึกโครงการของฉันลงในไฟล์

ทดสอบ.ซิล ขณะนี้ ขณะที่อยู่ในผู้เชี่ยวชาญ ให้ดับเบิลคลิกที่ชื่อของแบบฟอร์มในรายการ - หน้าต่างตัวแก้ไขการแปลจะเปิดขึ้น:, ด้านซ้ายของหน้าต่างตัวแก้ไข (ต้นไม้) ประกอบด้วยกลุ่มคุณสมบัติที่สามารถแปลได้ของส่วนประกอบและสตริง และด้านขวาจะมีตารางสำหรับการแปล TsiLang สามารถแปลไม่เพียงแต่คุณสมบัติของส่วนประกอบประเภทเท่านั้น, คำบรรยายภาพคำใบ้ ข้อความฯลฯ แต่ยังรวมถึงบรรทัดจากบทสนทนาด้วย เช่น รูปด้านล่างแสดงบรรทัดทั้งหมดสำหรับการแปลจากต่างๆ

กล่องโต้ตอบ

ซึ่งสามารถนำไปใช้ในแอปพลิเคชันได้:

เราเริ่มแปลทุกบรรทัดจากภาษารัสเซียเป็นภาษาอังกฤษ เมื่อแปลแต่ละบรรทัด ตัวแก้ไขในหน้าต่างแยกจะแสดงความยาวของบรรทัดต้นฉบับ (เป็นพิกเซล) และความยาวของบรรทัดที่แปล: โดยหลักการแล้ว วัตถุประสงค์ของหน้าต่างข้อมูลนี้มีความชัดเจน คุณสามารถควบคุมสถานการณ์ที่ข้อความที่แปลไม่พอดีกับขอบเขตของส่วนประกอบได้ แม้ว่าสำหรับฉันแล้วมันจะสะดวกที่จะเพิ่มความกว้างของส่วนประกอบลงในหน้าต่างนี้ - เพื่อที่จะมีบางอย่างที่จะเปรียบเทียบความกว้างของเส้นด้วยหลังจากแปลทุกบรรทัดแล้ว เราจะบันทึกโปรเจ็กต์ของเราอีกครั้ง ตอนนี้

ลำดับอักขระ #$ เป็นตัวคั่นที่เราสามารถกำหนดตัวเองได้เมื่อบันทึกไฟล์ ในกระบวนการแปลบรรทัดในตัวแก้ไข คุณจะสังเกตเห็นว่า TsiLang ไม่ได้คำนึงว่าไฟล์ pas ของแบบฟอร์มมีทั้งส่วนสตริงทรัพยากรและ const และแม้แต่บรรทัดข้อความในตัวจัดการ OnClick หากต้องการเพิ่มบรรทัดเหล่านี้ในการแปล คุณต้องเลือกผู้เชี่ยวชาญ TsiLang ในเมนู:

  • ไฟล์ -> แหล่งที่มา -> ด้วย รูปร่าง - เพื่อเลือกบรรทัดจากส่วนการใช้งานของโมดูล
  • ไฟล์ -> แหล่งที่มา -> ด้วย รูปร่าง- เพื่อเลือกค่าคงที่สตริงและสตริงทรัพยากรทั้งหมด

ด้วยเหตุนี้หน้าต่างที่มีผลการค้นหาจะเปิดขึ้นซึ่งคุณสามารถเพิ่มบรรทัดลงในรายการข้อยกเว้นหรือแทนที่ด้วยการเรียกฟังก์ชัน TsiLang:

คลิกปุ่ม "แก้ไขแหล่งที่มา" ในหน้าต่างนี้และได้รับข้อความต่อไปนี้:

เราเปิดไฟล์ pas แล้วเห็นภาพแปลก ๆ ดังต่อไปนี้:

ดูเหมือนแปลกสำหรับฉันที่ TsiLang กำหนดค่าคงที่สตริงในไฟล์ pas ได้อย่างสมบูรณ์แบบและแม้แต่เปลี่ยนซอร์สโค้ดด้วยตัวเอง แต่ด้วยเหตุผลบางอย่างมันขี้เกียจเกินไปที่จะนิยาม var เอง - ก็ควรสร้างตัวเลือกเพิ่มเติมในโปรเจ็กต์การแปล การตั้งค่าเช่น “กำหนด VAR สำหรับค่าคงที่ด้วยสตริง” ” และ “เปลี่ยนการตั้งค่าคอมไพเลอร์” แต่ไม่เป็นไร มีหน้าต่างพร้อมข้อความและนั่นก็คือขนมปัง สิ่งที่ฉันไม่เข้าใจจริงๆ คือ TsiLang พบที่ไหนในโครงการของฉัน อักษรอียิปต์โบราณที่เข้าใจยาก- ฉันคิดว่าอาจเป็นเพราะไฟล์ pas ถูกบันทึกใน ANSI แต่ไม่ - ฉันเปลี่ยนเป็น UTF8 แต่ปัญหาเกี่ยวกับอักษรอียิปต์โบราณยังคงอยู่... โดยทั่วไปนี่เป็นเรื่องแปลก

หลังจากวางบรรทัดในการแปลแล้ว คุณสามารถเปิดโปรแกรมแก้ไขการแปลอีกครั้งและดำเนินการแปลของกลุ่มได้ สตริง(โชคดีที่บรรทัดเข้าสู่ตัวแก้ไขโดยไม่ผิดเพี้ยน):

หลังจากแปลสตริงทั้งหมดและบันทึกไฟล์ sil แล้ว คุณสามารถสลับภาษาในโปรแกรมของคุณได้ ใน TsiLang แต่ละภาษาจะมีตัวระบุประเภทจำนวนเต็มของตัวเอง ตัวอย่างเช่น ในกรณีของฉัน ตัวระบุจะเป็นดังนี้:

  • รัสเซีย = 1
  • อังกฤษ = 2

ตอนนี้สำหรับอินเทอร์เฟซของโปรแกรมของฉันที่จะเปลี่ยนไป ภาษาอังกฤษสิ่งที่คุณต้องทำคือใส่โค้ดนี้ไว้ที่ใดที่หนึ่ง:

siLang_Form19. ภาษาที่ใช้งาน: = 2

สิ่งนี้จะทำให้ TsiLang โหลดบรรทัดในภาษาที่ต้องการจากไฟล์ sil
สำหรับการทำงานกับพจนานุกรมการแปลนั้นสามารถถ่ายโอนเฉพาะสตริง (ที่สร้างไว้ล่วงหน้า) ไปยังพจนานุกรมที่แปลแล้วเท่านั้น ในการดำเนินการนี้คุณสามารถใช้โปรแกรมแก้ไขการแปลเดียวกัน - คลิกปุ่ม "เพิ่มทั้งหมด" ในตัวแก้ไขซึ่งออกแบบมาเพื่อถ่ายโอนการแปลทั้งหมดไปยังพจนานุกรมและรับหน้าต่างนี้เพื่อเลือกตัวเลือกการถ่ายโอนที่จำเป็น:

เลือกไฟล์พจนานุกรมที่นี่คลิก "ตกลง" และรับสตริงที่แปลทั้งหมดลงในพจนานุกรมของคุณซึ่งมีลักษณะดังนี้:

ต่อมาจึงใช้พจนานุกรมนี้ได้ การแปลอัตโนมัติเส้นในโปรแกรมของคุณ อย่างที่ฉันบอกไปข้างต้น สำหรับการทำงานกับไฟล์ SIL นั้นมีอยู่ ยูทิลิตี้แยกต่างหากเรียกว่า SIL Editor ซึ่งมีไว้สำหรับนักแปล เพื่อความบริสุทธิ์ของการทดสอบ ฉันคัดลอกโฟลเดอร์จาก SIL Editor ไปยังแฟลชไดรฟ์และเปิดโปรแกรมจากเครื่องเสมือน "โหมด Windows XP":

ไฟล์ข้อความช่วยให้คุณสามารถแปลโดยใช้พจนานุกรมและด้วยตนเองและหากจำเป็นให้เพิ่มภาษาใหม่ในการแปล

คุณสมบัติ TsiLang อื่น ๆ :

  1. นำเข้าพจนานุกรมจาก doc-, html-, xls-, csv-, po-files
  2. การนำเข้าสตริงทรัพยากรจากไฟล์ปฏิบัติการ
  3. ความพร้อมใช้งานของส่วนประกอบของตัวเอง - กล่องโต้ตอบการเปิดไฟล์ ป้ายกำกับ รายการ ฯลฯ
  4. การรักษาสถิติการแปล

การตรวจสอบค่อนข้างยาว แต่เครื่องมือก็คุ้มค่า สรุป:

ข้อดี:

  1. เพียงเชื่อมต่อกับโปรเจ็กต์ - วางส่วนประกอบลงในแบบฟอร์ม เรียกเมธอด 1 และอินเทอร์เฟซจะถูกแปล
  2. เครื่องมือแก้ไขการแปลที่สะดวก - มีการจัดวางบรรทัดทั้งหมดดังนั้นหากต้องการพูด "บนชั้นวาง" คุณสามารถนำทางต้นไม้ในการค้นหาได้อย่างรวดเร็ว เส้นที่ต้องการสำหรับการแปล
  3. รองรับทั้งไฟล์ไบนารีและไฟล์ข้อความพร้อมการแปล เราสร้างไฟล์ Sil มอบให้นักแปล จากนั้นบันทึกไว้ใน sib และทุกอย่างก็พร้อม - และโปรแกรมจะทำงานเร็วขึ้นและไม่มีใครรบกวนการแปลอีก
  4. ความพร้อมใช้งานของเครื่องมือสำหรับนักแปล (SIL Editor, พจนานุกรม)

ข้อบกพร่อง:

  1. “ทุจริต” บรรทัดภาษารัสเซียในไฟล์ Pas แม้ว่าจะมีอยู่ในความคิดเห็น แต่ถึงกระนั้นความจริงก็ยังชัดเจน
  2. ในระหว่างการทำงานพบข้อผิดพลาดแปลก ๆ เมื่อทำงานกับพจนานุกรม ตัวอย่างเช่น เมื่อถ่ายโอนสตริงที่แปลไปยังพจนานุกรม ข้อผิดพลาดนอกช่วงจะปรากฏขึ้นเป็นครั้งคราว
  3. ปัญหาเล็กน้อยกับหน้าต่าง แน่นอนว่าพวกเขาไม่ได้รบกวนชีวิตของคุณ แต่ถึงกระนั้นเมื่อคุณเรียกใช้พจนานุกรมมันไม่ดีและมันก็หายไปในแผงควบคุม

โดยหลักการแล้วข้อเสียข้างต้น (ยกเว้นข้อที่สอง) นั้นไม่สำคัญนัก

แพ็คเกจการแปล DKLang

  • ผู้พัฒนา: ดีเคซอฟต์แวร์
  • เว็บไซต์อย่างเป็นทางการ: www.dk-soft.org
  • ราคา: ฟรี
  • วันที่วางจำหน่ายล่าสุด: 25.12.2008
  • รองรับ Delphi XE2: เลขที่

ฉันไม่สามารถพูดอะไรเกี่ยวกับโซลูชันโลคัลไลเซชันนี้ได้ ยกเว้นว่ามันมีอยู่จริง เพราะ... ฉันไม่สนใจดาวน์โหลดไฟล์เก็บถาวรแม้ว่าส่วนประกอบจะฟรีก็ตาม

ประการแรกวันที่เผยแพร่ครั้งล่าสุดน่าตกใจ - 2551- ไม่ใช่ความจริงที่ว่าส่วนประกอบต่างๆ จะทำงานใน XE2 โดยไม่มีปัญหา

ประการที่สองต้องใช้แพ็คเกจ การติดตั้งเพิ่มเติมส่วนประกอบ การควบคุม Unicode ของทีเอ็นที 2.3.0ซึ่งในปี 2555 ไม่จำเป็นแล้ว - รองรับ Unicode แล้ว

ดังนั้นหากคุณมีอะไรจะพูดเกี่ยวกับการตัดสินใจครั้งนี้ - ดีหรือไม่ดี - เขียนไว้ในความคิดเห็นและฉันจะเพิ่มข้อเสนอแนะในการตรวจสอบ

อัปเดต: เกี่ยวกับแพ็คเกจการแปล DKLang สั้นและชัดเจน.

อัปเดต 2: DKLเข้ามา XE2

EMS ขั้นสูง Localizer

  • ผู้พัฒนา: อีเอ็มเอส
  • เว็บไซต์อย่างเป็นทางการ: www.sqlmanager.net
  • ราคา: 2,900.00 รูเบิล
  • ความพร้อมใช้งานของเวอร์ชันทดลอง: มีอยู่
  • วันที่วางจำหน่ายล่าสุด: 13 มกราคม 2555
  • รองรับ Delphi XE2: มีอยู่

สิ่งที่นักพัฒนาพูดเกี่ยวกับผลิตภัณฑ์ของตน:

Localizer ขั้นสูง™เป็นแพ็คเกจส่วนประกอบที่จำเป็นสำหรับ Borland® Delphi® ที่ช่วยให้คุณสามารถเพิ่มการรองรับภาษาให้กับแอปพลิเคชัน Delphi® ของคุณ ตัวเลือกแพ็คเกจที่หลากหลาย Localizer ขั้นสูงช่วยให้คุณสามารถแปลคุณสมบัติของส่วนประกอบของแต่ละแบบฟอร์มได้อย่างรวดเร็วและง่ายดาย สร้างไฟล์ภาษาด้วยค่าปัจจุบันของคุณสมบัติส่วนประกอบ จัดการไฟล์การแปลเป็นภาษาท้องถิ่น และยังกำหนดส่วนประกอบและคุณสมบัติต่างๆ ที่จะแปลเป็นภาษาท้องถิ่นอีกด้วย ภาษาของแอปพลิเคชันที่ใช้ Localizer ขั้นสูงสามารถสลับไปยังที่อื่นได้โดยตรงระหว่างการทำงานโดยไม่ต้องรีสตาร์ทแอปพลิเคชันในภายหลัง Advanced Localizer ยังให้ความสามารถในการเขียนแอปพลิเคชันสืบทอดที่ใช้ไฟล์ภาษาที่ผู้ใช้ระบุ

เนื่องจากเราไม่มีชิ้นส่วนที่ "ไม่สามารถทดแทนได้" ฉันจึงทำการทดสอบส่วนประกอบเหล่านี้เล็กน้อยในคราวเดียวกัน แอพขนาดเล็กในรูปแบบ 1
การทดสอบของฉัน
ฉันดาวน์โหลดและติดตั้งแพ็คเกจส่วนประกอบใน Delphi XE2 และเปิดโปรเจ็กต์ Delphi ปรากฏในจานสีส่วนประกอบ แท็บใหม่- EMS Localizer ขั้นสูง จากแท็บนี้ ฉันวางส่วนประกอบลงในแบบฟอร์ม:

  1. แหล่งที่มาของภาษา TQLanguage
  2. TQFormLocalizer

คุณ TQFormLocalizerในคุณสมบัติแหล่งที่มาที่เราระบุ แหล่งที่มาของภาษา TQLanguageและไปทำงานกันเถอะ

ก่อนอื่น เราสร้างไฟล์สำหรับสตริงที่แปลแล้ว - เราสร้างไฟล์ว่างสองไฟล์ที่มีนามสกุล *.lng (นามสกุลเริ่มต้นสำหรับ EMS Localizer) และเรียกมันว่า - rus และ eng

คุณไม่จำเป็นต้องสร้างไฟล์เหล่านี้ - ไฟล์เหล่านี้จะถูกสร้างขึ้นโดยอัตโนมัติระหว่างการแปล

ตอนนี้ดับเบิลคลิกที่ส่วนประกอบ TQLanguageSource เพื่อเรียกใช้ตัวจัดการไฟล์ภาษา:

คลิกปุ่มที่ใช้งานอยู่เพียงปุ่มเดียวและเพิ่มไฟล์:

ตามที่นักพัฒนาระบุ รายการใหม่ควรปรากฏในรายชื่อผู้จัดการ...แต่ไม่เป็นเช่นนั้น นี่คือค่าที่มีอยู่ในคุณสมบัติภาษาของส่วนประกอบ:

อย่างไรก็ตามรายการ โปรแกรมแก้ไขภาพสะอาดหมดจด ขอพระเจ้าอวยพรเขาด้วยรายการ - เรากำลังพยายามแปลแอปพลิเคชันของเรา ดับเบิลคลิกที่องค์ประกอบที่สอง (TQFormLocalizer) เพื่อเรียกโปรแกรมแก้ไขการแปล:

ในตัวแก้ไข นอกเหนือจากการแปลสตริงแล้ว เรายังสามารถเพิ่มไฟล์ภาษาใหม่ แก้ไขภาษาที่มีอยู่ หรือเลือกภาษาเริ่มต้นได้ ดังที่คุณเห็นในรูป มีเพียงบรรทัดที่มีอยู่ในคุณสมบัติของส่วนประกอบเท่านั้นที่จะเข้าสู่ตัวแก้ไข ในขณะที่บรรทัดทรัพยากรและค่าคงที่ไม่มีใครสังเกตเห็น ซึ่งสามารถเขียนลงได้ว่าเป็นข้อเสียของส่วนประกอบเหล่านี้

หลังจากแปลสตริงทั้งหมดแล้ว คุณสามารถเพิ่มตัวเลือกให้กับโปรแกรมเพื่อเปลี่ยนภาษาอินเทอร์เฟซได้ สิ่งนี้ทำได้ในลักษณะเดียวกับใน TsiLang โดยการระบุดัชนีของภาษาที่ใช้งาน:

แหล่งที่มาของภาษา Q1. ภาษาที่ใช้งานอยู่: = 1;

ยิ่งไปกว่านั้น หากใช้ภาษาเริ่มต้น (ทำเครื่องหมายเป็น "ต้นฉบับ") ดัชนีจะเท่ากับ -1 และส่วนที่เหลือจะเริ่มจากศูนย์และเพิ่มขึ้นตามลำดับในรายการภาษา

คุณสมบัติอื่นๆ ของ EMS Advanced Localizer:

มาสรุปกัน

ข้อดี:

  1. ส่วนประกอบต่างๆ ใช้งานง่าย - ใช้เวลาประมาณ 5 นาทีเพื่อดูว่ามันทำงานอย่างไรและทำงานอย่างไร
  2. ค่อนข้างถูก
  3. สามารถจัดเก็บคำแปลไว้ในฐานข้อมูลได้

ข้อบกพร่อง:

  1. ไม่มีการรองรับพจนานุกรมและการแปลอัตโนมัติ
  2. ปัญหาในตัวจัดการภาษาอย่างง่าย
  3. ไม่รองรับการแปลค่าคงที่และสตริงทรัพยากร
  4. ไม่มีเครื่องมือสำหรับนักแปลบุคคลที่สาม

โดยทั่วไปความคิดเห็นของฉันเกี่ยวกับ EMS ขั้นสูง Localizer- องค์ประกอบที่ค่อนข้างสะดวกสำหรับการทำงานกับโปรเจ็กต์ขนาดเล็ก แต่สำหรับโปรเจ็กต์ขนาดใหญ่ไม่มากก็น้อยที่ต้องการการสนับสนุนหลายภาษา งานแปลของผู้คนหลายคน ฯลฯ น่าเสียดายที่ส่วนประกอบชุดนี้ค่อนข้างอ่อนแอ

Korzh Localizer

  • ผู้พัฒนา: เครื่องมือสำหรับนักพัฒนา KORZH
  • เว็บไซต์อย่างเป็นทางการ: devtools.korzh.com
  • ราคา: จาก 149.0 ยูโร ถึง 649.0 ยูโร
  • ความพร้อมใช้งานของเวอร์ชันทดลอง: มีอยู่
  • วันที่วางจำหน่ายล่าสุด: 23 กรกฎาคม 2555
  • รองรับ Delphi XE2: มีอยู่ .

สิ่งที่นักพัฒนาพูดเกี่ยวกับผลิตภัณฑ์ของตน:

ไฟล์ EXE หนึ่งไฟล์สามารถรองรับหลายภาษา สามารถเพิ่มภาษาเพิ่มเติมได้โดยไม่ต้องคอมไพล์ใหม่ ไม่จำเป็นต้องสร้างไฟล์ exe จำนวนมาก
ข้อมูลสตริงสามารถจัดเก็บได้ทั้งใน DLL ทรัพยากรมาตรฐานและในไฟล์ภาษาพิเศษ
ในระหว่างการแปล รหัสโปรแกรมมีการเปลี่ยนแปลงเพียงเล็กน้อย (สองสามบรรทัด) หรือไม่เปลี่ยนแปลงเลย Localizer ไม่ได้เปลี่ยนโครงการแอปพลิเคชันเพราะว่า ไม่มีการใช้ส่วนประกอบเพิ่มเติม
โปรเจ็กต์ที่โลคัลไลซ์สามารถเริ่มต้นสำหรับการคอมไพล์ได้โดยไม่ต้องติดตั้ง Localizer
Localizer แปลทั้งทรัพยากรจาก VCL และทรัพยากรอื่นๆ
รองรับการจัดเก็บคำแปลตามมาตรฐาน พื้นที่เก็บข้อมูลการแปลและนำกลับมาใช้ใหม่ในอนาคต
รองรับส่วนประกอบและแพ็คเกจของบุคคลที่สามทั้งหมด (เช่น DevExpress, TurboPower, ElPack, RX ฯลฯ)
กระบวนการแปลสามารถดำเนินการได้โดยใช้ยูทิลิตี้ในตัว ผู้จัดการภาษาสามารถดาวน์โหลดได้ฟรีโดยนักแปล
การโยกย้ายอย่างง่ายดายจาก Borland ITE (สภาพแวดล้อมการแปลแบบรวม)

การทดสอบของฉัน

ฉันดาวน์โหลดรุ่นทดลองใช้ซึ่งแตกต่างจาก เวอร์ชันเต็มคือ Localizer แปลเฉพาะ 30 บรรทัดแรกจากแต่ละฟอร์ม/ไฟล์ ติดตั้งแล้ว หลังจากนั้นรายการใหม่ปรากฏในเมนูหลักของ Delphi XE2:

ฉันเลือก "เริ่มการแปลโปรเจ็กต์" ในเมนู และด้วยเหตุนี้ ฉันจึงถูกขอให้เลือกภาษาหลักสำหรับโปรเจ็กต์และระบุโฟลเดอร์ที่จะจัดเก็บไฟล์ภาษา:

หลังจากคลิก “แปลโครงการ mu!” การคอมไพล์ใหม่ของโปรเจ็กต์เริ่มต้นขึ้นแล้ว และโมดูลที่จำเป็นและการเรียกใช้เมธอด Korzh Localizer ถูกเพิ่มลงในไฟล์ dpr ของโปรเจ็กต์:

ใช้ (....) , LocOnFly, (Form18) ;

($R Project16.KLR) ($R *.res) เริ่มต้น LocalizerOnFly เริ่มต้น Reg ;

(...) จบ .

นอกจากนี้ ทันทีหลังจากข้อความข้อมูลที่ระบุว่าโปรเจ็กต์ของฉันได้รับการแปลเป็นภาษาท้องถิ่นแล้ว Language Manager ก็เปิดตัว:

ในช่องโต้ตอบสำหรับเลือกภาษาใหม่สำหรับการแปลมีตัวเลือกที่ยอดเยี่ยม - "ลองแปลผ่าน Google โดยอัตโนมัติ" อย่างไรก็ตาม ตัวเลือกนี้ใช้ไม่ได้ในขณะนี้:

นี่ไม่ได้เกิดจากการที่นักพัฒนาทำอะไรผิดที่นั่น เหตุผลก็คือ Google ได้โอน Translate API ไปเป็นเชิงพาณิชย์ และหากจำไม่ผิด พวกเขาเข้าถึงได้ผ่าน OAuth 2.0 เท่านั้น ดังนั้นเห็นได้ชัดว่าใน Korzh Localizer รุ่นถัดไปตัวเลือกนี้จะหายไปหรือจะถูกใช้สำหรับ API ที่เข้าถึงได้มากขึ้น เช่น สำหรับ Bing Translator API

หลังจากเพิ่มภาษาสำหรับการแปล ตารางจะปรากฏในตัวจัดการภาษาสำหรับการแปลสตริงที่พบในโปรเจ็กต์ นอกเหนือจากสิ่งที่อยู่ในโปรเจ็กต์โดยตรงแล้ว Korzh Localizer ยังช่วยให้คุณสามารถแปลสตริงที่มีอยู่ในโมดูล Delphi อื่น ๆ ได้:

หลังการแปล Localizer สามารถแสดงสถิติให้คุณเห็น - มีการแปลกี่บรรทัด เปอร์เซ็นต์ของการแปล ฯลฯ อย่างไรก็ตาม แม้จะพบข้อผิดพลาดที่นี่เมื่อสลับไปที่แท็บ "รายการภายนอก":

ผู้ช่วย (เรียกอย่างนั้นก็ได้) เสนอให้เลือกโมดูลที่จะสแกนหาสตริง และยังมีสองตัวเลือกในการจัดเก็บสตริง - ในไฟล์ทรัพยากรหรือในไฟล์ pas:

ฉันปล่อยให้การตั้งค่าทั้งหมดเป็นค่าเริ่มต้น มีสามบรรทัดในโมดูล - หนึ่งบรรทัดในส่วนทรัพยากรสตริง บรรทัดที่สองใน const และบรรทัดที่สามในตัวจัดการ OnClick ของปุ่ม ด้วยเหตุนี้ Korzh Localizer จึงกำหนดสิ่งต่อไปนี้: หลังจากคลิก "ถัดไป" IDE จะแสดงข้อความต่อไปนี้:ซึ่งมีส่วนสตริงทรัพยากรซึ่งมีหนึ่งสตริงที่พบ ตัวจัดการ OnClick ของปุ่มก็เปลี่ยนไปเช่นกัน และตอนนี้มีลักษณะดังนี้:

ขั้นตอน TForm19. Button1Click(ผู้ส่ง: TObject);

เริ่ม ShowMessage (SIgeaaoIeg);

จบ ;

บรรทัดไม่ปรากฏในเครื่องมือจัดการภาษา - อาจสันนิษฐานได้ว่าบรรทัดดังกล่าวจะถูกแปลโดยไม่มีผู้จัดการหรืออาจมีการเพิ่มลงในผู้จัดการอย่างมีไหวพริบ - ฉันไม่ได้พิจารณารายละเอียดนี้โดยละเอียด ฉันแค่ต้องตรวจสอบว่าการแปลเป็นภาษาท้องถิ่นเกิดขึ้นได้อย่างไร เพื่อให้โครงการ "พูด" ในภาษาอื่นก็เพียงพอที่จะเลือกภาษาที่ต้องการในเมนูหลัก:

  1. หลังจากนั้น IDE รายงานอีกครั้งว่าไฟล์มีการเปลี่ยนแปลงและขอให้โหลดซ้ำ ฉันรีบูต ประกอบโครงการ และได้รับใบสมัครเป็นภาษาอังกฤษ:
  2. คุณสมบัติอื่น ๆ ของ Korzh Localizer:
  3. การสร้าง/นำเข้า/ส่งออกพื้นที่เก็บข้อมูล การนำเข้าและส่งออกดำเนินการในรูปแบบ XML หรือ TMX

ข้อดี:

  1. รองรับหลายภาษาสำหรับการแปล - สร้างไฟล์แยกต่างหากสำหรับแต่ละภาษา สามารถทำงานกับไฟล์ EXE และ DLL ได้ไม่ต้องการส่วนประกอบใด ๆ ในแบบฟอร์ม - ทั้งหมดนี้ที่จำเป็น .
  2. Korzh Localizer
  3. เชื่อมต่อกับ dpr เอง

ข้อบกพร่อง:

  1. มีเครื่องมือสำหรับนักแปล
  2. สามารถสร้าง/นำเข้า/ส่งออกที่เก็บข้อมูลได้

ในขณะที่ฉันกำลังทำงานกับเครื่องมือ ฉันค้นพบข้อบกพร่องหลายประเภท เช่น ข้อผิดพลาด (ดูภาพหน้าจอด้านบน) ข้อบกพร่องในอินเทอร์เฟซ การมีตัวเลือกที่ไม่ทำงาน (ในขณะที่ Google ปิดการเข้าถึง API ไปนานแล้ว และ การเปิดตัว Localizer นั้นค่อนข้างเร็ว ๆ นี้) ทั้งหมดนี้ทำให้เกิดความรู้สึกของการละทิ้งโครงการบางอย่าง สามารถทำงานกับไฟล์ EXE และ DLL ได้สตริงทรัพยากรไม่สิ้นสุดในตัวจัดการภาษาหรือยุ่งยากมากจนคุณไม่สามารถทราบได้ทันทีว่าจะคลิกที่ไหนหรือจะเพิ่มอะไรในทันที . โดยรวมแล้วฉันจะทิ้งมันไว้ตอนนี้ ไว้เป็นทางเลือกสำรองในกรณีที่ไม่มีอะไรเหมาะสมไปกว่านี้แล้วนอกจากข้อเสียที่อธิบายไว้ข้างต้นแล้ว

, โอ

  • ผู้พัฒนา: เหตุผลประการหนึ่งสำหรับการสรุปนี้คือเวลาที่ต้องใช้ในการทำความคุ้นเคยกับเครื่องมือ - Korzh Localizer ใช้เวลามากที่สุดในบรรดาเครื่องมือทั้งหมดที่กล่าวถึงข้างต้น
  • รับข้อความ GNU สำหรับชุดเครื่องมือ Delphi และ C++ Builder
  • ราคา: ฟรี
  • dxgettext.po.dk
  • รองรับ Delphi XE2: เลขที่

แม้ว่าจะไม่รองรับ Delphi XE2 แต่ฉันก็ยังตัดสินใจดาวน์โหลดและลองใช้ไลบรารีนี้ น่าเสียดายที่หลังจากเชื่อมต่อ dxgettext.pas กับโปรเจ็กต์แล้ว ข้อผิดพลาดก็เริ่มปรากฏขึ้น - บางแห่งแทนที่จะเป็น ansiString พวกเขาระบุสตริง พวกเขาใช้วิธีการที่ทำเครื่องหมายว่าเลิกใช้แล้ว พวกเขาใช้พารามิเตอร์วิธีการที่ไม่ถูกต้อง (อาจเป็นใน Delphi 2009 ที่คอมไพล์โค้ดดังกล่าว แต่ใน XE2 - ไม่ใช่ ). โดยรวมก็ออกมาหลายอย่าง...น่าเสียดาย ฉันใช้ห้องสมุดนี้สองสามครั้งใน Lazarus และต้องบอกว่าฉันชอบมัน แน่นอนว่าสำหรับโครงการที่มีอยู่การนำ DXGetText ไปใช้จะเป็นปัญหาค่อนข้างมาก แต่สำหรับโครงการใหม่มันเป็นห้องสมุดที่ยอมรับได้และสะดวกอย่างสมบูรณ์ มียูทิลิตี้หลายอย่างสำหรับนักแปล หน่วยความจำการแปล ฯลฯ โดยทั่วไป หากคุณกำลังวางแผนที่จะเริ่มโปรเจ็กต์โดยใช้เวอร์ชัน Delphi ก่อนปี 2009 และต้องการไลบรารีสำหรับการแปลโปรเจ็กต์เป็นภาษาท้องถิ่นและสากล ให้ลองใช้ DXGetText.

แพ็คเกจ i18n

  • ผู้พัฒนา: คัมบิซ อาร์. โคจาสเตห์
  • เว็บไซต์อย่างเป็นทางการ: www.delphiarea.com
  • ราคา: ฟรี
  • วันที่วางจำหน่ายล่าสุด: 19 สิงหาคม 2555
  • รองรับ Delphi XE2: เลขที่ (ตามข้อมูลบนเว็บไซต์อย่างเป็นทางการ)

แพ็คเกจ i18n v1.10 สำหรับ Delph i คือไลบรารีส่วนประกอบทั้งหมดที่ออกแบบมาเพื่อการแปลโปรเจ็กต์ให้เป็นภาษาท้องถิ่นและสากล แม้ว่าจะไม่มีการประกาศการสนับสนุน Delphi XE2 อย่างเป็นทางการ แต่ไลบรารีนี้ได้รับการติดตั้งใน Delphi XE2 โดยไม่มีปัญหาใด ๆ ดังนั้นฉันจึงตัดสินใจทดสอบเล็กน้อย

แพ็คเกจประกอบด้วยองค์ประกอบที่แตกต่างกันมากกว่า 30 รายการที่รองรับการแปลเป็นภาษาท้องถิ่น แต่อย่างที่คุณเข้าใจ ฉันสนใจอีกประเด็นหนึ่ง - ว่าไลบรารีนี้สามารถใช้เพื่อแปลโครงการที่มีอยู่ด้วยแบบฟอร์ม กล่องโต้ตอบ สตริงทรัพยากร ฯลฯ มากมายหรือไม่

ดังนั้นงานแปลโดยใช้แพ็คเกจ i18n จึงเป็นดังนี้:

  1. วางส่วนประกอบ TLocalizer ลงบนแบบฟอร์มหลัก
  2. ในรูปแบบอื่นๆ ทั้งหมด (รวมถึงรูปแบบหลัก) เราได้เพิ่มส่วนประกอบสำหรับการแปล - TTranslator
  3. ในการแปลกล่องโต้ตอบ คุณจะต้องวางส่วนประกอบ TMessageBox บนแบบฟอร์มหลักและระบุส่วนหัว ไอคอน ฯลฯ ที่จำเป็นในนั้น

ตอนนี้เราต้องสร้างไฟล์ที่มีการขึ้นบรรทัดใหม่ ในการดำเนินการนี้ให้ดับเบิลคลิกที่ส่วนประกอบ TTranslator - โปรแกรมแก้ไขจะเปิดขึ้นโดยคุณต้องเลือกคุณสมบัติและสตริงที่เราจะแปล:

หากคุณต้องการทำให้โครงการเป็นสากล อย่าแตะต้องสิ่งใดในช่อง "มูลค่าทรัพย์สิน" เพราะ การเพิ่มภาษาใหม่และสตริงการแปลเสร็จสิ้นในยูทิลิตี้แยกต่างหาก

หลังจากเลือกองค์ประกอบที่จำเป็นแล้ว ให้ไปที่แท็บส่งออก ระบุภาษาที่ใช้เขียนบรรทัดของเรา (เช่น ภาษารัสเซีย) และส่งออกบรรทัดไปยังไฟล์ *.i18n:

ไฟล์ถูกสร้างขึ้นแล้ว - คุณสามารถเริ่มการแปลได้ ในโฟลเดอร์ Bin ของไลบรารีจะมีอยู่ ยูทิลิตี้พิเศษเรียกว่า i18n Editor ซึ่งมีไว้สำหรับการแปล

โปรแกรมนี้ค่อนข้างใช้งานง่ายและฉันคิดว่าคุณจะคุ้นเคยกับมันเร็วมาก ฉันจะพูดอย่างนั้น โปรแกรมแก้ไข i18nสามารถ "เรียนรู้" - สำหรับสิ่งนี้โปรแกรมจำเป็นต้องระบุโฟลเดอร์ที่มีไฟล์ *.i18n สำเร็จรูปอยู่และโปรแกรมจะสแกนไฟล์เหล่านั้นโดยอัตโนมัติและดึงวลีใหม่ออกมา

หลังจากทุกอย่าง เส้นที่จำเป็นเมื่อแปลแล้ว เราจะกลับไปที่ Delphi และระบุไฟล์ของเราด้วยการแปลเป็นภาษาท้องถิ่นในคุณสมบัติ URI ของส่วนประกอบ TLocalizer ตอนนี้เราเพิ่มส่วนประกอบ TCultureBox ลงในแบบฟอร์มและระบุ Localiwer1 ในคุณสมบัติ Localizaer (หากไม่ได้เปลี่ยนชื่อส่วนประกอบ)

ตอนนี้คุณสามารถรันโปรแกรมและตรวจสอบให้แน่ใจว่าการแปลอินเทอร์เฟซสำเร็จ:

ข้อดี:

  1. สำหรับราคาของมัน - $ 0.0 มันค่อนข้างมีคุณภาพสูง (ใช้งานได้ดีใน Delphi XE2)

ข้อบกพร่อง:

  1. parser ตรวจไม่พบค่าคงที่ของสตริงทรัพยากรและสตริง และสตริงที่ตรวจพบและแปลจากโค้ดโปรแกรมยังคงไม่ได้รับการแปลเป็นภาษาท้องถิ่น
  2. สำหรับแต่ละฟอร์ม/โมดูล คุณต้องใช้ TTranslator ของคุณเอง ซึ่งไม่สะดวกนัก มันจะสมเหตุสมผลกว่าถ้าสร้างเครื่องสแกนขนาดเล็กของทั้งโปรเจ็กต์สำหรับการมีสตริง ดังเช่นที่ทำกับ DXGetText

ข้อสรุปทั่วไปเกี่ยวกับห้องสมุดสามารถสรุปได้ดังนี้ - สำหรับอัตราส่วนราคา/คุณภาพ ห้องสมุดแห่งนี้เป็นห้องสมุดที่ยอดเยี่ยมที่ช่วยให้คุณสามารถสร้างการสนับสนุนหลายภาษาในโครงการขนาดเล็กโดยแทบไม่มีปัญหา งานของไลบรารี่ที่มีสตริงที่ไม่ได้มาจากคุณสมบัติของส่วนประกอบทำให้เสียความรู้สึกเล็กน้อย ฉันคิดว่าหากโปรเจ็กต์ยังมีชีวิตอยู่ (และตัดสินจากการเปิดตัว โปรเจ็กต์นั้นค่อนข้างมีชีวิตชีวา) ปัญหาที่น่ารำคาญนี้จะได้รับการแก้ไข

Delphi Localizer ของ Kryvich

  • ผู้พัฒนา: คริวิช
  • เว็บไซต์อย่างเป็นทางการ: sites.google.com/site/kryvich/localizer
  • ราคา: ฟรี
  • วันที่วางจำหน่ายล่าสุด: 7 มกราคม 2555
  • รองรับ Delphi XE2: มีอยู่

อีกหนึ่ง ห้องสมุดฟรีสำหรับการแปลและการทำให้แอปพลิเคชัน Delphi เป็นสากล ตามที่ผู้เขียนโครงการกล่าวไว้ ด้วยไลบรารีนี้ การแปลแอปพลิเคชันของเราควรดำเนินการได้โดยไม่มีปัญหาใดๆ เรามาตรวจสอบว่าสิ่งนี้เป็นจริงหรือไม่

ก่อนอื่น เราต้องเปลี่ยนตัวเลือกโปรเจ็กต์ ไปที่ IDE กันเถอะ: โครงการ -> ตัวเลือก -> การเชื่อมโยง และติดตั้ง ไฟล์แผนที่ = รายละเอียด

ตอนนี้เรารวบรวมโปรเจ็กต์และรับไฟล์สามไฟล์ - *.exe, *.drc และ *.map ตอนนี้เราเปิดตัวยูทิลิตี้คอนโซล kdlscan.exe ซึ่งอยู่ในโฟลเดอร์ที่มีไลบรารี ยูทิลิตี้นี้เปิดตัวพร้อมกับพารามิเตอร์:

kdlscan


ชื่อไฟล์ exe ของเราอยู่ที่ไหน

เครื่องสแกนจะตรวจสอบโปรเจ็กต์และดึงสตริงทรัพยากรและสตริงออกจากคุณสมบัติของส่วนประกอบ แล้วใส่ลงในไฟล์ที่มีนามสกุล *.lng ไฟล์นี้เป็นไฟล์ ini ทั่วไป ดังนั้นอย่าลังเลที่จะเปิดมันด้วยโปรแกรมแก้ไขใดๆ และแปลทุกบรรทัดตามต้องการ

หลังจากการแปล เราจะบันทึกไฟล์ผลลัพธ์พร้อมชื่อ อังกฤษ.lng.

ตอนนี้เรามาเริ่มทำงานในโครงการกันดีกว่า เพื่อรองรับการแปล ให้เพิ่มไปยังการใช้งาน แบบฟอร์มหลักโมดูล uFreeLocalizer.pas ยังวางโมดูล uStringUtils.pas ลงในโฟลเดอร์โปรเจ็กต์และเขียนในตำแหน่งที่สะดวกในโปรแกรม:

ฟรี Localizer แปลอัตโนมัติ:=จริง;

ฟรี Localizer LanguageDir:=ExtractFilePath(Application.ExeName);

ข้อดี:

  1. ฟรี Localizer ไฟล์ภาษา : = "english.lng" ;
  2. สองบรรทัดแรกสามารถเขียนลงในไฟล์ dpr และสามารถเชื่อมต่อโมดูล Localizer ที่นั่นได้ ทั้งหมด. คุณสามารถรันโปรแกรมและตรวจสอบการทำงานของโปรแกรมได้

ข้อบกพร่อง:

  1. ห้องสมุดใช้งานง่ายมาก
  2. กะทัดรัด

ไม่มีพจนานุกรม

เครื่องสแกนตรวจไม่พบสตริงและค่าคงที่ที่ฮาร์ดโค้ด

  • ผู้พัฒนา: โดยทั่วไปแล้ว ห้องสมุดค่อนข้างเหมาะสำหรับโครงการที่มีจำนวนบรรทัดน้อยสำหรับการแปลเป็นภาษาท้องถิ่น อย่างไรก็ตาม การทำงานผ่านไฟล์ ini จะทำให้รู้สึกได้เมื่อมีข้อมูลจำนวนมาก
  • JVCL (ไลบรารีส่วนประกอบภาพ JEDI)
  • ราคา: ฟรี
  • วันที่วางจำหน่ายล่าสุด: โครงการเจได
  • รองรับ Delphi XE2: มีอยู่

เว็บไซต์อย่างเป็นทางการ: jvcl.delphi-jedi.org 11 เมษายน 2554ใครไม่รู้จักโครงการ JEDI บ้าง? ห้องสมุดขนาดมหึมาแห่งนี้น่าจะเป็นที่รู้จักสำหรับทุกคนที่เคยทำงานในเดลฟีมาบ้างแล้ว ไลบรารีนี้มีส่วนประกอบ

ทีเจวีนักแปล (ซึ่งช่วยให้คุณแปลแอปพลิเคชัน Delphi ได้ เมื่อพิจารณาจากบทวิจารณ์ในฟอรัมและบล็อกต่างๆ ส่วนประกอบค่อนข้างสะดวกและได้รับความนิยม แต่การติดตั้งชุด JCL + JVCL ทั้งหมดเพื่อดูการทำงานขององค์ประกอบมหัศจรรย์ชิ้นเดียวไม่ได้ทำให้ฉันยิ้มเลย ดังนั้นคุณจะต้องมองหาข้อดีและข้อเสียด้วยตัวเอง และฉันจะไปยังส่วนประกอบอื่น ๆ)

  • ผู้พัฒนา: แพคเกจส่วนประกอบ CnPack
  • ซีเอ็นวีซีแอล
  • ราคา: ฟรี
  • วันที่วางจำหน่ายล่าสุด: ซีเอ็นแพค
  • รองรับ Delphi XE2: มีอยู่

เว็บไซต์อย่างเป็นทางการ: www.cnpack.org

5 พฤศจิกายน 2554

นักพัฒนาอีกคนหนึ่งที่สมควรได้รับพอสมควร ซึ่งได้รับความนิยมอย่างสมควรด้วยผลิตภัณฑ์ของเขาชื่อ cnWizards ได้มอบชุดส่วนประกอบสำหรับการแปลแอปพลิเคชันให้กับเรา ส่วนประกอบเหล่านี้เป็นส่วนหนึ่งของแพ็คเกจแยกต่างหาก - cnVCL และแจกจ่ายฟรี

บนแท็บ cnMultiLang มี 4 องค์ประกอบสำหรับการแปล สามคน: TCnLangผู้จัดการ, TCnLangนักแปลแอพสโตร์ TChHashLangFileStorageหรือ TChIniLangFileStorageจะต้องรวมอยู่ในใบสมัคร

ต้องบอกว่าเวอร์ชั่นอัลฟ่าทำให้ตัวเองรู้สึกได้ เพื่อให้เข้าใจการทำงานของส่วนประกอบเหล่านี้ได้อย่างรวดเร็ว ฉันจึงตัดสินใจเรียกใช้การสาธิตเล็กๆ ที่มาพร้อมกับซอร์สโค้ดของส่วนประกอบต่างๆ... แน่นอนว่ามันเปิดใน Delphi XE2 แต่มีบางอย่างแปลกไปอย่างสิ้นเชิง:

ใช่แล้ว ตามหลักการแล้วสามารถยอมรับได้ - ดูเหมือนว่าซอร์สโค้ดไม่ได้ "แก้ไข" มากนักและมีความเป็นไปได้ที่จะเข้าใจว่ามันทำงานอย่างไรและมีความเป็นไปได้ที่จะไม่มากก็น้อย สาระสำคัญของงานคือ:

1. วางองค์ประกอบทั้งสามข้างต้นลงในแบบฟอร์มใบสมัคร (ฉันเลือก TCnLangผู้จัดการ, TCnLangนักแปลแอพสโตร์ TChIniLangFileStorage)

2. ตอนนี้เลือก TChIniLangFileStorageและเพิ่มลงในคอลเลกชัน ภาษาภาษาใหม่ มันควรมีลักษณะดังนี้:

3. คุณ TCnLangผู้จัดการในคุณสมบัติ LanguageStorage เราระบุส่วนประกอบของเรา CnIniLangFileStorage1

4. ดับเบิ้ลคลิก TCnLangนักแปล- เครื่องมือแก้ไขสำหรับการแปลสตริงจะเปิดขึ้น:

5. เลือกภาษาที่ต้องการในแผนผังแล้วคลิก "Gen All" - ควรประกอบตารางที่มีสตริงสำหรับการแปล สำหรับฉันมันกลายเป็นเช่นนี้:

6. เราแปลบรรทัดที่จำเป็น ลบบรรทัดที่ไม่จำเป็น และบันทึกตารางผลลัพธ์ลงในไฟล์ เป็นผลให้เราได้รับไฟล์ ini ที่ต้องทิ้งถัดจากไฟล์ exe ของโครงการของเรา

7. เขียนหนึ่งบรรทัดในตำแหน่งที่สะดวกในโปรแกรม:

CnLangผู้จัดการ1. ดัชนีภาษาปัจจุบัน : = 0 ;

เป็นผลให้การกระทำนี้จะนำไปสู่ความจริงที่ว่าโปรแกรมจะ "แปล" เป็นภาษาที่มีดัชนี 0 ใน LangugeStorage เช่น ในกรณีของฉัน - เป็นภาษาอังกฤษ ฉันจะไม่ให้ภาพหน้าจอแก่คุณ ฉันจะบอกว่าส่วนประกอบนั้นใช้งานได้

สิ่งที่สามารถพูดเกี่ยวกับข้อดีและข้อเสียของส่วนประกอบเหล่านี้ได้? ฉันคิดว่ามันไม่คุ้มที่จะสรุปใดๆ ในตอนนี้ เพราะมันเป็นเวอร์ชันอัลฟ่า และมีข้อบกพร่องทุกประเภท พฤติกรรมแปลกๆ ฯลฯ เป็นสิ่งที่หลีกเลี่ยงไม่ได้ ฯลฯ หากการทำงานกับส่วนประกอบต่างๆ ดำเนินไปอย่างต่อเนื่อง ก็มีแนวโน้มว่าเราควรมีส่วนประกอบที่เรียบง่ายและใช้งานง่ายสำหรับการแปลโครงการให้เหมาะกับท้องถิ่นและสากล ในระหว่างนี้ ยังเร็วมากที่จะใช้ส่วนประกอบเหล่านี้ในการใช้งานที่จริงจัง

TLang สำหรับ FireMonkey

  • ผู้พัฒนา: เอ็มบาร์คาเดโร
  • เว็บไซต์อย่างเป็นทางการ: embarcadero.com
  • ราคา: ราคานี้รวม Delphi แล้ว
  • วันที่วางจำหน่ายล่าสุด: 03 กันยายน 2555
  • รองรับ Delphi XE2: มีอยู่

ฉันจะไม่พูดรายละเอียดเกี่ยวกับส่วนประกอบนี้และการทำงานกับส่วนประกอบนี้ เพราะ... บล็อกนี้มีบทความเกี่ยวกับการทำงานกับ TLang ใน FireMonkey โดยเฉพาะ บทความนี้เรียกว่า "" - ในนั้นคุณจะพบข้อดีและข้อเสียของส่วนประกอบนี้ ฉันไม่ได้ตรวจสอบการทำงานของส่วนประกอบใน Delphi XE3

มัลติไลเซอร์

  • ผู้พัฒนา: บริษัทเทคโนโลยีฟินแลนด์
  • เว็บไซต์อย่างเป็นทางการ: www2.multilizer.com
  • ราคา: 299 - 2900 ยูโร
  • วันที่วางจำหน่ายล่าสุด: ไม่ทราบ
  • รองรับ Delphi XE2: มีอยู่

แม้ว่าราคาของผลิตภัณฑ์จะค่อนข้างสูง แต่ฉันก็ยังตัดสินใจว่าผลิตภัณฑ์นี้เป็นอย่างไร Multilizer เป็นผลิตภัณฑ์พิเศษที่ช่วยให้คุณสามารถแปลเป็นภาษาท้องถิ่นได้ ประเภทต่างๆแอปพลิเคชัน, ไฟล์, dll ฯลฯ สิ่งที่รวมอยู่ในแพ็คเกจคือชุดส่วนประกอบสำหรับ Delphi 5 - XE2 ฉันไม่ได้ติดตั้งส่วนประกอบต่างๆ แต่ฉันตัดสินใจลองใช้แอปพลิเคชัน Multilizer ในแอปพลิเคชันของฉัน

ทุกอย่างเริ่มต้นจากสิ่งที่เราสร้างขึ้น โครงการใหม่สำหรับการแปล:

เราเลือกตัวเลือกแรก ขั้นตอนต่อไปคือการเลือก parser:

ในขั้นตอนที่สาม Multilizer ขอให้เราระบุไฟล์สำหรับการแยกวิเคราะห์ (exe ที่ระบุ) ดำเนินการแยกวิเคราะห์และแสดงผลการสแกน:

ขั้นตอนต่อไปคือการกำหนดภาษาพื้นเมืองของแอปพลิเคชันและเพิ่มภาษาใหม่สำหรับการแปล:

Multilizer ยังช่วยให้คุณตรวจจับภาษาได้โดยอัตโนมัติ แต่ด้วยเหตุผลบางประการจึงขอข้อมูลเข้าสู่ระบบและรหัสผ่าน บัญชีกูเกิล 0_O (อย่างน้อยก็ไม่ใช่กุญแจอพาร์ทเมนท์ที่มีเงินอยู่) ฉันไม่ได้ตรวจสอบฟังก์ชั่นนี้ของโปรแกรม

หลังจากสร้างโปรเจ็กต์แล้ว หน้าต่างตัวแก้ไขการแปลจะเปิดขึ้น ซึ่งมีลักษณะดังนี้:

กระบวนการแปลมักมีความหมายมากกว่าแค่การตั้งค่าภาษาของแอปของคุณสำหรับภูมิภาคต่างๆ รวมถึงเวลา วันที่ และรูปแบบการแสดงผลที่ถูกต้องสำหรับภูมิภาคต่างๆ หากคุณคาดหวังว่าใบสมัครของคุณจะมีโอกาสเข้าถึงผู้ชมต่างประเทศในวงกว้าง คุณจะต้องคิดทันทีเกี่ยวกับการแปลแอปพลิเคชันให้เหมาะสม เพื่อที่คุณจะได้ไม่ต้องขุดคุ้ยโค้ดของโปรแกรมทั้งหมดและใช้เวลามากมาย กำหนดไว้สำหรับภูมิภาคต่างๆ ของโลก

โดยใช้ ระบบปฏิบัติการ Androidภาษาของทรัพยากรสตริงที่แปลแล้วที่ใช้และรูปแบบ/ค่าของเวลาและวันที่จะปรับตามภูมิภาคและสภาพแวดล้อมภาษาที่อุปกรณ์ทำงานโดยอัตโนมัติ ภาษาถูกกำหนดโดย ISO 639-1 ประเทศ - ISO 3166-1 นั่นคือเราสามารถพูดได้อย่างปลอดภัยว่า Android เข้ากันได้กับประเทศส่วนใหญ่ของโลก (บางทีชนเผ่าแอฟริกันบางเผ่าไม่นับ :)) และภาษาต่างๆ

การแปลภาษา

เป็นที่น่าสังเกตว่ามีเพียงภาษาเดียวที่จะเป็นตัวแทน 100% ในภาษาใดก็ได้ อุปกรณ์แอนดรอยด์เป็นภาษาอังกฤษแบบอเมริกัน แสดงด้วยรหัส th_US- หากต้องการแปลภาษาให้กับแอปพลิเคชันของคุณ คุณต้องไปที่โฟลเดอร์ของแอปพลิเคชันนั้น ละเอียด/ลงทุนทรัพยากรเพิ่มเติมที่คุณพิจารณาว่าจำเป็นต้องเพิ่ม

หากต้องการเพิ่มภาษาอื่นให้กับแอปพลิเคชันของคุณ คุณต้องสร้างโฟลเดอร์ในโฟลเดอร์ res/ root โดยตั้งชื่อดังนี้: ความละเอียด/ค่า-<языковой код> หรือ ความละเอียด/ค่า-<языковой код>-ร<код страны> - เป็นที่น่าสังเกตว่าหากคุณได้กำหนดการตั้งค่าภาษาสำหรับภูมิภาคหนึ่ง ๆ จากนั้นเมื่อใช้ในแอปพลิเคชันในภูมิภาคนี้ พวกเขาจะมีลำดับความสำคัญนั่นคือโดยค่าเริ่มต้นพวกเขาจะ "สำคัญ" มากกว่าสำหรับแอปพลิเคชันและจะถูกนำไปใช้ มีลำดับความสำคัญ เหนือลำดับความสำคัญของพวกเขาสามารถเป็นสิ่งที่เรียกว่าเท่านั้น รหัสประเทศมือถือ MCC- รหัสประเทศมือถือ (กำหนดโดยใช้ รหัสมือถือเครือข่ายบรรษัทข้ามชาติจาก ซิมการ์ด) กำหนดทรัพยากรพิเศษสำหรับประเทศที่กำหนด

เรามาเรียนรู้วิธีสร้างการแปลภาษากันดีกว่า สร้างแอปพลิเคชันใหม่หรือเปิดแอปพลิเคชันที่มีอยู่ที่ไม่ซับซ้อนเกินไป เรากำหนดภารกิจในการแปลแอปพลิเคชันของเราสำหรับภูมิภาคที่พูดภาษารัสเซียและภูมิภาคที่พูดภาษาอังกฤษ เพื่อกำหนดค่า ภาษารัสเซียภาษาที่เราเพิ่งใช้โฟลเดอร์ที่มีอยู่ ความละเอียด/ค่า/strings.xmlและสร้างทรัพยากรสตริงที่เราต้องการอย่างมาก สำหรับ ภาษาอังกฤษภาษาเดียวกัน ให้สร้างโฟลเดอร์ย่อย /values-enในโฟลเดอร์ ละเอียด/ทรัพยากรและสร้างไฟล์ต่อไปนี้พร้อมที่อยู่: ความละเอียด/ค่า-en/strings.xml- เราจะเพิ่มทรัพยากรสตริงภาษาอังกฤษให้กับไฟล์ที่เราสร้างขึ้นนี้ รหัสควรมีลักษณะอย่างไร:

สำหรับไฟล์ที่มีแหล่งข้อมูลภาษารัสเซีย ความละเอียด/ค่า/strings.xml:

< resources> < string name= "app_name" >ใบสมัครของฉัน< / string> < string name= "hello_world" >สวัสดีชาวโลก!< / string> < string name= "action_settings" >การตั้งค่า< / string> < string name= "word" >คำ< / string> < / resources>

สำหรับไฟล์การแปลภาษาอังกฤษความละเอียด/ค่า-en/strings.xmlทรัพยากรจะเป็นดังนี้:

< resources> < string name= "app_name" >ใบสมัครของฉัน < string name= "hello_world" >สวัสดีชาวโลก!< / string> < string name= "action_settings" >การตั้งค่า < string name= "word" >คำ < / resources>

ทุกอย่างพร้อมแล้ว ตอนนี้เมื่อเปิดตัวในประเทศที่ใช้ภาษาอังกฤษ โปรแกรมจะใช้ทรัพยากรจากโฟลเดอร์โดยอัตโนมัติ ความละเอียด/ค่า-en/strings.xmlและแสดงข้อความภาษาอังกฤษ

เป็นที่น่าสังเกตว่าเพื่อให้กลไกการแปลภาษานี้ทำงานได้อย่างถูกต้องในแอปพลิเคชันของคุณ จำเป็นสำหรับองค์ประกอบของโปรแกรมที่ใช้ข้อความ เช่น เมื่อตั้งค่า หุ่นยนต์: ข้อความ = ""สำหรับวัตถุ กำหนดข้อความให้พวกเขาไม่ใช่แค่เขียนคำอย่างเช่น android:text="สวัสดีชาวโลก!"และลิงก์ไปยังทรัพยากรสตริงที่เกี่ยวข้องที่สร้างขึ้น: หุ่นยนต์:text="@string/hellow_world".

หากคุณต้องการแปลสตริงในโค้ดโปรแกรมเอง หากยังไม่ได้ดำเนินการในไฟล์ รูปแบบ.xmlหรือไฟล์มาร์กอัปอินเทอร์เฟซอื่น ๆ ที่คล้ายกัน จากนั้นเพื่อแปลบรรทัดดังกล่าวคุณต้องเรียกออบเจ็กต์ในโค้ด android.content.res.Resourcesซึ่งมีทรัพยากรทั้งหมดในแพ็คเกจแอปพลิเคชัน และเข้าถึงทรัพยากรที่ต้องการจากที่นี่โดยใช้วิธีการ รับ.สตริง- ต่อไปนี้เป็นวิธีแปล "Hello world!" ของเรา ทางนี้:

// เชื่อมต่อทรัพยากรที่ต้องการ: android.content.res - ทรัพยากรความละเอียด = บริบท getResources(); สตริง helloWorld = ความละเอียด getString(R .string.hello_world); //ผูกสตริงที่แปลเป็นภาษาท้องถิ่นกับองค์ประกอบ TextView สวัสดี TextView; helloTextView = (TextView)findViewById(R .id.hello_world_textview); สวัสดี TextView setText(สวัสดีโลก);

มีอีกวิธีหนึ่งในการแปลทรัพยากรสตริงของแอปพลิเคชันของคุณ มันค่อนข้างเรียบง่าย ง่ายกว่าสิ่งอื่นใดที่เคยมีมาและจะกล่าวถึงในที่นี้ แต่มันก็ใช้ได้ผลเหมือนเดิม ดังนั้นเมื่อคุณทำงานกับแอปพลิเคชันของคุณในไฟล์มาร์กอัปเช่น กิจกรรม_main.xmlจากนั้นคุณสามารถตั้งค่าการแปลภาษาได้ที่นี่ โดยไม่ต้องแก้ไขไฟล์ทรัพยากร ไม่ว่าคุณจะอยู่ในโหมดใด ข้อความหรือการออกแบบ เราจะพบปุ่มต่อไปนี้บนแผงควบคุม:

คลิกเลือกรายการแรก - เพิ่มคำแปลและหน้าต่างปรากฏขึ้นต่อหน้าเราเพื่อขอให้เราเลือกภาษาที่จำเป็นสำหรับการแปล ค้นหาภาษาที่ต้องการจากรายการ คลิกที่ภาษาและดูหน้าต่างใหม่:

อย่างที่คุณเห็นตารางที่ปรากฏมี 3 คอลัมน์: สำคัญ, ดีฟวอลท์, รัสเซีย (ru) (เพราะฉันเลือกภาษารัสเซียสำหรับการแปล) อันแรกแสดงทรัพยากรสตริงที่เรามีในไฟล์ ความละเอียด/ค่า/strings.xmlในวินาที - ค่าของพวกเขาในไฟล์เดียวกัน ความละเอียด/ค่า/strings.xmlหน้าต่างที่ 3 จะอนุญาตให้เราป้อนการแปลทรัพยากรสตริงที่มีอยู่ทั้งหมดที่นี่ ป้อนคำแปลที่ต้องการแล้วคลิกตกลง เราเห็นว่าไฟล์ถูกเปิดขึ้น ru\string.xmlซึ่งหมายความว่าตัวโปรแกรมได้สร้างโฟลเดอร์ที่จำเป็นสำหรับการแปลภาษารัสเซีย ทุกอย่างพร้อมแล้ว!

การแปลเวลาและวันที่

แอปพลิเคชันจำนวนมากจำเป็นต้องทำงานกับเวลาและวันที่ปัจจุบัน ลองนึกภาพความผิดหวังของผู้ใช้ของคุณ ซึ่งในตอนแรกพอใจกับการแปลภาษาจนพวกเขาพร้อมที่จะซื้อแล้ว เวอร์ชันเต็มโปรแกรมและนี่คือสำหรับคุณ - โปรแกรมของคุณแสดงความยินดีกับผู้อยู่อาศัยใน Kamchatka ในปีใหม่ครึ่งวันช้ากว่าที่ควรจะเป็น เพียงเท่านี้ ลาก่อนผู้ใช้! ดังนั้นการแปลเวลาและวันที่อย่างที่คุณเห็นก็เป็นเรื่องสำคัญเช่นกัน และ Android SDK ก็มีเครื่องมือสำหรับตั้งวันที่และเวลาให้ตรงกับตำแหน่งของอุปกรณ์

การแปลวันที่

การตั้งค่าการแปลวันที่สามารถทำได้โดยใช้คลาส วันที่รูปแบบในเนมสเปซ android.text.format- ส่วนของโค้ดต่อไปนี้แสดงวิธีรับสตริงที่มีค่าวันที่ที่จัดรูปแบบสำหรับภาษาของอุปกรณ์:

// รับเวลาและวันที่ปัจจุบัน:วันที่ currentDate = ปฏิทิน รับอินสแตนซ์() รับเวลา(); // รับ มุมมองมาตรฐานวันที่สำหรับการแปลอุปกรณ์ปัจจุบัน: java.ข้อความ - วันที่รูปแบบวันที่รูปแบบ; dateFormat = android.text.format - วันที่รูปแบบ- getDateFormat (นี้); //จัดรูปแบบวันที่ปัจจุบันตามตำแหน่งของอุปกรณ์:สตริงที่จัดรูปแบบ CurrentDate = dateFormat รูปแบบ (วันที่ปัจจุบัน);

หากตำแหน่งปัจจุบันของอุปกรณ์คือ สหรัฐอเมริกา รูปแบบวันที่ท้องถิ่นจะแสดงเป็น 11/29/2014 - ระดับ วันที่รูปแบบสามารถกำหนดค่ารูปแบบวันที่อื่นได้ ถ้าแทนคำสั่ง getDateFormatดำเนินการเช่น getLongDateFormatจากนั้นเราจะได้วันที่ในรูปแบบนี้: วันจันทร์ที่ 29 ธันวาคม 2557.

การแปลเวลา

เนื่องจากเวลาแสดงอยู่ใน Android SDK เป็น วันที่อ็อบเจ็กต์ มันถูกกำหนดค่าโดยคลาสด้วย วันที่รูปแบบในเนมสเปซ android.text.format- ที่นี่ทุกอย่างเสร็จสิ้นในลักษณะเดียวกับการตั้งวันที่โดยใช้วิธีเดียวกัน ลองดูรหัส:

// ตั้งเวลาและวันที่ปัจจุบัน java.util - วันที่ currentDate = ปฏิทิน รับอินสแตนซ์() รับเวลา(); // กำหนดค่า การแสดงผลที่ถูกต้องเวลาสำหรับการแปลอุปกรณ์ปัจจุบัน java.ข้อความ - วันที่รูปแบบรูปแบบเวลา; รูปแบบเวลา = android.text.format - วันที่รูปแบบ- getTimeFormat (นี่); // ตั้งค่ารูปแบบเวลาตามการแปลอุปกรณ์สตริงที่จัดรูปแบบเวลา = รูปแบบเวลา รูปแบบ (วันที่ปัจจุบัน);

หากคุณต้องการให้แอปของคุณประสบความสำเร็จ ผู้ใช้ Googleเล่นจากทั่วทุกมุมโลก คุณควรแปลเป็นภาษาท้องถิ่น

แท็ก

  • สิ่งตีพิมพ์
  • ตลาดโลก
  • การพัฒนา
  • การทดสอบ

บันทึก. ข้อมูลโดยละเอียดหากต้องการข้อมูลเกี่ยวกับวิธีนำแอปของคุณไปสู่ตลาดใหม่ โปรดอ่าน Going Global Playbook

เนื่องจากการแปลเป็นภาษาท้องถิ่นส่งผลต่อวงจรการพัฒนาแอปพลิเคชันทั้งหมด การวางแผนกระบวนการที่เหมาะสมจึงมีความจำเป็น รายการตรวจสอบประกอบด้วยขั้นตอนพื้นฐานในการเตรียมใบสมัครของคุณเพื่อการตีพิมพ์ในประเทศต่างๆ

รายการตรวจสอบ

  • ระบุประเทศที่มีเงื่อนไขเอื้ออำนวยในการเข้าสู่ตลาด
  • ใช้ ข้อมูลของ Googleเล่นเพื่อค้นหาโอกาสใหม่หากแอปของคุณเผยแพร่แล้ว คุณสามารถดูได้ในแผงควบคุมสำหรับนักพัฒนาซอฟต์แวร์ ในนั้นคุณจะพบประเทศที่มีผู้อยู่อาศัยเข้าชมหน้าแอปพลิเคชันของคุณบน Google Play คุณจะเพิ่มจำนวนการติดตั้งในประเทศเหล่านี้ได้อย่างแน่นอน
  • ใช้ชุดเค้าโครงสากลที่มีการเปลี่ยนแปลงเล็กน้อย รวมทรัพยากรทั้งชุดไว้ในแอปพลิเคชันตามค่าเริ่มต้น ให้การสนับสนุนการเขียนข้อความจากขวาไปซ้าย ใช้รูปแบบระบบสำหรับวันที่ เวลา ตัวเลข และสกุลเงิน
  • พิจารณาลักษณะของตลาดเกิดใหม่อ่านเกี่ยวกับการเพิ่มประสิทธิภาพ แอปพลิเคชัน Androidสำหรับอุปกรณ์และเครือข่ายราคาประหยัดที่มีแบนด์วิธน้อยที่สุด
  • รวมสตริงทั้งหมดในไฟล์ strings.xml ให้ข้อมูลที่ครบถ้วนและถูกต้อง ปฏิบัติตามหลักเกณฑ์สไตล์ดีไซน์ Material และระบุเนื้อหาที่ไม่จำเป็นต้องแปล
  • แปลแอป ข้อมูล Google Play และอื่นๆเพื่อจุดประสงค์นี้ คุณสามารถติดต่อผู้ใช้แอปพลิเคชันของคุณ หน่วยงานแปล หรือใช้บริการแปลแอปพลิเคชันในแผงควบคุมสำหรับนักพัฒนาซอฟต์แวร์ Google Play หรือ Android Studio
  • อย่าลืมทดสอบแอปบนอุปกรณ์มาตรฐานสำหรับตลาดเป้าหมายของคุณ ตรวจสอบข้อผิดพลาดในอินเทอร์เฟซ และหากจำเป็น ให้ขอความช่วยเหลือจากเจ้าของภาษา
  • เผยแพร่เวอร์ชันเบต้าในประเทศหลักๆ เพื่อรับคำติชมจากผู้ใช้จริง
  • เตรียมก้าวไปสู่ระดับโลกวางแผนแคมเปญการติดตั้งแอปและกิจกรรมอื่นๆ ที่คล้ายคลึงกันสำหรับประเทศต่างๆ ใช้โปรแกรมสร้างไอคอน Google Play เพื่อสร้างไอคอนเป็นภาษาท้องถิ่นที่คุณสามารถแสดงบนเว็บไซต์และในเอกสารทางการตลาด เพิ่มภาพหน้าจอของแอปที่แปลเป็นภาษาท้องถิ่นลงในสื่อส่งเสริมการขายโดยใช้เครื่องมือ
  • ใช้เคล็ดลับการเพิ่มประสิทธิภาพตรวจสอบว่าข้อมูล Google Play ของคุณครบถ้วน และรับการแจ้งเตือนที่เป็นประโยชน์อื่นๆ ในแผงควบคุมสำหรับนักพัฒนาซอฟต์แวร์ เพื่อช่วยให้คุณเผยแพร่แอปได้สำเร็จ
  • ดำเนินการตรวจสอบขั้นสุดท้ายและเผยแพร่แอปพลิเคชันคุณทำตามขั้นตอนทั้งหมดในรายการนี้แล้วหรือยัง? จากนั้นคุณก็พร้อมที่จะเผยแพร่และโปรโมตแอปพลิเคชันของคุณในประเทศเป้าหมาย
  • ให้การสนับสนุนผู้ใช้หลังจากเผยแพร่แอปพลิเคชันแล้วอย่าลืมติดตามการให้คะแนนและบทวิจารณ์ ดาวน์โหลดสถิติเพื่อเรียนรู้เกี่ยวกับปัญหาที่เกิดขึ้นทันเวลา หากเป็นไปได้ ให้สร้างชุมชนหรือฟอรัมแยกต่างหากสำหรับภาษาต่างๆ

คู่มือนี้จะแสดงวิธีการแปลงภาษาเดียว แอพ iOSสร้างโดยใช้ Xcode เป็นหลายภาษา

อัปโหลดไฟล์ทรัพยากรของคุณและรับใบเสนอราคาขั้นสุดท้ายทันที

ไฟล์ทรัพยากร iOS:

รูปแบบไฟล์:
UTF-16 ยูนิโค้ด UTF-8 ยูนิโค้ด

จากภาษา:

ลิ้น:
— จีน (ตัวย่อ) จีน (ดั้งเดิม) เดนมาร์ก ดัตช์ อังกฤษ ฝรั่งเศส เยอรมัน อิตาลี ญี่ปุ่น โปรตุเกส รัสเซีย สเปน — อารบิก บาสก์ คาตาลัน เช็ก ฟินแลนด์ กรีก ฮีบรู ฮินดี ฮังการี ลาติน มาซิโดเนีย นอร์เวย์ ปัญจาบ เปอร์เซีย โปแลนด์ โปรตุเกส (โปรตุเกส) โรมาเนีย สวีเดน ทมิฬ ไทย ตุรกี ยูเครน เวียดนาม

คุณมีนักแปลแล้วหรือยัง?

เรานำเสนอการใช้ระบบการแปลของเราฟรี และลดเวลาที่ต้องใช้ในการจัดการและประสานงานงานแปลของแอปพลิเคชันของคุณ

การแนะนำ

กระบวนการแปลแอป iOS มีดังต่อไปนี้:

  1. การเตรียมไฟล์ทรัพยากรสำหรับการแปล
  2. การรวบรวมข้อความทั้งหมดที่ใช้ในแอปพลิเคชันลงในไฟล์ทรัพยากร
  3. การแปลไฟล์ทรัพยากร
  4. การรวมไฟล์ทรัพยากรกลับเข้าไปในแอปพลิเคชัน

เนื่องจากแอป iOS มีหลายภาษาโดยการออกแบบ อุปกรณ์จึงรู้อยู่แล้วว่าต้องทำอย่างไรหากแอปของคุณมีให้บริการในหลายภาษา มันจะแสดงข้อความ GUI ในภาษาที่ต้องการตามการตั้งค่าภาษาของอุปกรณ์

แอพ iOS ทั้งหมดสร้างขึ้นโดยใช้ข้อความ Unicode ที่เข้ารหัสเป็น UTF-16 เครื่องจำลอง iPhone และ iPad รองรับรูปแบบนี้และช่วยให้คุณสามารถดูตัวอย่างแอปพลิเคชันที่แปลแล้วได้

1. สร้างทรัพยากรที่แปลเป็นภาษาท้องถิ่นใน Xcode

ย้ายไฟล์ทรัพยากรไปยังไดเรกทอรีการแปลใหม่ จากนั้นลากทรัพยากรไปยังโปรเจ็กต์ Xcode ของคุณ ตอนนี้ Xcode รับรู้ทรัพยากรเป็นภาษาท้องถิ่นแล้ว ภาษาที่กำหนด- ทำซ้ำขั้นตอนเหล่านี้สำหรับไฟล์ทรัพยากรอื่นๆ ทั้งหมดที่จำเป็นต้องแปล

2. การแปลไฟล์ตัวสร้างอินเทอร์เฟซเป็นภาษาท้องถิ่น

กำลังแยกสตริง

เพื่อแยกสตริงออกจากไฟล์ทรัพยากร ตัวสร้างอินเทอร์เฟซคุณต้องเรียกใช้เครื่องมือเช่น ไอบีทูลซึ่งรวมอยู่ใน การติดตั้งมาตรฐานชุดพัฒนา

หากต้องการแยกไฟล์ ให้เปิด เทอร์มินัลในไดเร็กทอรีโครงการและรันคำสั่ง:
ibtool -- สร้างสตริงไฟล์ Example.strings en.lpoj/Example.xib
สิ่งนี้จะสร้างไฟล์ Example.strings เปิดแล้วคุณจะเห็นค่าออบเจ็กต์สตริงที่จับคู่กันจำนวนมาก

โปรดอ่านเอกสารนี้อย่างละเอียดและตรวจสอบเนื้อหาในนั้น คุณสามารถลบสตริงที่ไม่จำเป็นซึ่งไม่จำเป็นต้องแปลได้

การจัดการแถวที่ซ้ำกัน

ไฟล์ทรัพยากรอาจมีสตริงที่ซ้ำกัน เช่น ชื่อบางชื่อสำหรับปุ่มในสถานะที่แตกต่างกัน

สตริงที่ซ้ำบางสตริงจำเป็นต้องแปลเพียงครั้งเดียว ในขณะที่สตริงที่ซ้ำอื่นๆ มีการแปลที่แตกต่างกัน ชื่อปุ่มเดียวกันในสถานะที่ต่างกันควรมีการแปลเหมือนกัน อย่างไรก็ตาม สตริงอาจเป็นคำนามหรือคำกริยาก็ได้

คุณสามารถลบสตริงที่ซ้ำกันเพิ่มเติม (ที่มีคำแปลเดียวกัน) ออกจากไฟล์ทรัพยากร หรือปล่อยสตริงเหล่านั้นไว้ในนั้นและแจ้งให้นักแปลถือว่าสตริงเหล่านั้นเป็นสตริงที่ซ้ำกัน

คุณเกือบจะพร้อมสำหรับการเปิดตัวแล้ว อย่าลืมลองดู

นี่คือบางสิ่งที่ควรใส่ใจ:

การคำนวณผิด อะไรจะเกิดขึ้น วิธีการแก้ไข
สตริงที่แปลอยู่นอกขอบเขต โดยทั่วไปภาษาเยอรมัน ฝรั่งเศส สเปน และยุโรปอื่นๆ จะมีขนาดเท่ากับข้อความภาษาอังกฤษ 120% ถึง 150% ภาษาเอเชียมักมีประมาณ 50%-70% เราแนะนำให้ปรับตัว กุยไปจนถึงเส้นขนาดต่างๆ ระบบการแปล iOS ICanLocalize จะตรวจสอบความยาวของสตริงและเตือนว่าสตริงยาวเกินไปหรือสั้นเกินไป
ไม่มีอักขระการจัดรูปแบบ หลายบรรทัดมีตัวยึดตำแหน่งสำหรับข้อมูล เช่น %s สำหรับข้อความ และ %d สำหรับตัวเลข บรรทัดอื่นๆ ได้แก่โค้ด HTML หากการแปลไม่มีรูปแบบเดียวกัน แอปพลิเคชันจะไม่ทำงาน ระบบการแปลของเราอนุญาตให้คุณป้อนลำดับ "ที่จำเป็น" เพื่อให้แน่ใจว่าการแปลมีลำดับเดียวกันกับต้นฉบับ มิฉะนั้น คุณควรอ่านทุกบรรทัดด้วยตนเอง และตรวจสอบให้แน่ใจว่าอักขระในการจัดรูปแบบตรงกัน
การแปลนอกบริบท มีความเป็นไปได้เสมอที่ผู้แปลไม่เข้าใจความหมายของบรรทัดนั้นอย่างถ่องแท้ สิ่งนี้เกิดขึ้นเมื่อแอปพลิเคชันมีบรรทัดที่สั้นและไม่มีคำบรรยาย ก่อนเริ่มงานส่ง คำอธิบายแบบเต็มแอปพลิเคชั่นนักแปล หลังจากนั้นให้จับภาพหน้าจอของใบสมัครแล้วส่งให้นักแปลเพื่อตรวจสอบขั้นสุดท้าย การเพิ่มความคิดเห็นลงในสตริงจะช่วยให้คุณได้รับคำแปลที่ยอดเยี่ยม

การแก้ไขปัญหา

หากมี Localizable.strings ในไฟล์ที่แปลแต่ไม่ได้แปลเป็นภาษาท้องถิ่นบนอุปกรณ์ ให้ตรวจสอบการเข้ารหัสอักขระของไฟล์

ต่างจากเครื่องจำลอง iPhone ตรงที่อุปกรณ์จริงรู้จักเฉพาะไฟล์สตริง UTF-16 เท่านั้น ตรวจสอบการแปลเป็นภาษาท้องถิ่นบนอุปกรณ์ของคุณเสมอ เนื่องจากตัวจำลองและอุปกรณ์ไม่ทำงานเหมือนกันเสมอไป

ไฟล์ทรัพยากรที่แปลแล้วซึ่งดาวน์โหลดมาจาก ICanแปลมีการเข้ารหัส UTF-16 มีอยู่ในเอกสารสำคัญ gzipเพื่อให้เบราว์เซอร์ของคุณไม่เปลี่ยนแปลงเมื่อโหลด

อัปเดตการแปลเมื่อแอป iOS พัฒนาขึ้น

ICanแปลทำให้ง่ายต่อการรักษาคำแปลของคุณให้ทันสมัยอยู่เสมอ เมื่อแอปพลิเคชันพัฒนาขึ้น แถวใหม่จะถูกสร้างขึ้น และแถวที่มีอยู่อาจมีการเปลี่ยนแปลง

หากต้องการอัปเดตคำแปล ให้เรียกใช้อีกครั้ง เผ่าพันธุ์เพื่อสร้างไฟล์ใหม่ Localizable.stringsจากนั้นรีสตาร์ท ไอบีทูลเพื่อสร้างไฟล์สตริงใหม่

สุดท้าย ให้โหลดไฟล์ทรัพยากรใหม่ลงในโปรเจ็กต์ที่มีอยู่ ICanแปล- ระบบจะตรวจจับสตริงใหม่หรือสตริงที่เปลี่ยนแปลงและแปลเฉพาะสตริงเหล่านั้น คุณจะต้องชำระค่าอัปเดตการแปลเท่านั้น ไม่ใช่ค่าแปลทั้งหมดตั้งแต่ต้น

บันทึก: เมื่อมีการเปลี่ยนแปลงกับสตริง จะต้องแปลอีกครั้งโดยสมบูรณ์เพื่อลดต้นทุนในการอัปเดตการแปล เราขอแนะนำให้แยกสตริงขนาดใหญ่ออกเป็นสตริงเล็กๆ หลายๆ สตริง ด้วยวิธีนี้ เมื่อคุณทำการเปลี่ยนแปลง ส่วนที่จำเป็นต้องแปลจะมีขนาดเล็กลงและมีค่าใช้จ่ายน้อยลง แถวควรมีขนาดใหญ่พอที่คุณจะล้างข้อมูลได้ด้วยตัวเอง แต่ไม่ใหญ่จนทำให้การอัปเดตมีราคาแพง

ต้องการคำแปลสำหรับแอป iOS ของคุณหรือไม่?

ICanแปลข้อเสนอ

“เราใช้ ICanLocalize มาตั้งแต่ปี 2012 และทำให้ขั้นตอนการทำงานของเราง่ายขึ้นมากเมื่อต้องแปลเนื้อหาของเราสำหรับตลาดต่างๆ ไม่ต้องค้นหานักแปลสำหรับภาษาต่างๆ อีกต่อไป สอนวิธีใช้เครื่องมือแปล สร้างใบแจ้งหนี้ที่กำหนดเอง ฯลฯ อีกต่อไป เพราะ ICanLocalize ทำทุกอย่างเพื่อเรา! เราใช้บริการ ICanLocalize เพื่อแปลเว็บไซต์ แอป จดหมายข่าว และเอกสารทางการตลาดอื่นๆ ของเรา และคุณสามารถวางใจได้ตลอดเวลา ทำงานเร็ว- ฉันรู้ว่าข้อความทั้งหมดนี้ฟังดูเหมือนโฆษณาที่ต้องเสียเงินหรืออะไรสักอย่าง แต่ฉันไม่ได้เขียนอะไรที่ไม่ใช่ข้อเท็จจริงหรือไม่ใช่ความคิดเห็นของฉันจริงๆ เลย! ฉันอยากจะแนะนำ ICanLocalize ทุกครั้ง!”

“ICanLocalize คือ ทางออกที่ดีที่สุดเพื่อการแปลแอปพลิเคชันของคุณอย่างรวดเร็วและมีคุณภาพสูง เราใช้บริการของพวกเขาสำหรับแอปพลิเคชันทั้งหมดของเราด้วยผลลัพธ์ที่ดีและผลตอบรับเชิงบวกจากผู้ใช้ของเรา ฉันแนะนำให้ใช้ ICanLocalize เพื่อแปลแอปพลิเคชันของคุณเป็นภาษาท้องถิ่น"

“ICanLocalize ใช้งานง่ายอย่างไม่น่าเชื่อ นักแปลช่วยเราได้มาก และขั้นตอนการแปลก็ง่ายมาก ICanLocalize พร้อมให้บริการสำหรับนักพัฒนาทุกประเภท และช่วยให้เราเข้าถึงลูกค้าได้มากขึ้นกว่าที่เคย”

“ICanLocalize ช่วยให้ฉันประหยัดเวลาได้มากเพราะมีนักแปลสำหรับทุกภาษา และคุณสามารถให้นักแปลคนอื่นๆ ตรวจสอบการแปลเพื่อให้แน่ใจว่าถูกต้อง ความช่วยเหลือที่ใหญ่ที่สุดที่ ICanLocalize มีให้คือความสามารถในการโหลดไฟล์สตริงของฉันจาก xcode ลงในไซต์ได้โดยตรง ดังนั้นเมื่อการแปลพร้อม ฉันก็สามารถแทนที่ไฟล์สตริงในโปรเจ็กต์ของฉันได้ เท่านี้ก็เสร็จเรียบร้อย"

หากคุณต้องการแปลและเผยแพร่คู่มือนี้อีกครั้ง โปรดบอกเราก่อนว่าคุณต้องการเผยแพร่คู่มือนี้ที่ใดและสอบถามเกี่ยวกับตัวคุณเล็กน้อย