ก่อนอื่นgettext
เป็นวิธีที่ดีที่จะไปดังนั้นอย่ายกเลิกถ้ามันไม่ฟังดูง่ายในตอนแรก อย่างไรก็ตามมีตัวเลือกอื่น ๆ เช่นกันที่มีประโยชน์ที่จะรู้ว่า ก่อนที่จะอธิบายให้ดูที่คำแนะนำของคุณก่อน:
เมื่อคุณarray
ทำสิ่งนี้คุณมีทางออกที่ตรงไปตรงมามาก สิ่งที่ดีคือคุณสามารถจัดเก็บการแปลของคุณในที่เก็บข้อมูลแล้วโหลดลงในสคริปต์ PHP ของคุณเป็นอาร์เรย์และนั่นก็คือ อย่างไรก็ตามถ้าคุณต้องการเก็บอาเรย์ของคุณในไฟล์ PHP ให้ทำการแก้ไขมันจำเป็นต้องมี) โปรแกรมเมอร์ PHP หรือผู้ใช้ที่คุ้นเคยกับไวยากรณ์ PHP เพียงเพื่อแก้ไขไฟล์ b) ซิงค์ระหว่างไฟล์ภาษาต่าง ๆ สี่หรือห้าไฟล์ อาจค่อนข้างน่ารำคาญและมีแนวโน้มที่จะเกิดข้อผิดพลาด
สิ่งที่คุณต้องพิจารณาที่นี่คือ: จะเพิ่มองค์ประกอบใหม่ลงในไฟล์ภาษาได้อย่างไร ฉันสามารถฝากผู้แปลไว้ได้หรือควรจะเป็นโปรแกรมเมอร์ PHP
วิธีที่คุณvariable
ทำมันไม่เป็นประโยชน์ ทำไม? ฉันคิดว่าคุณจะมีฟังก์ชั่นสองอย่างน้อยในใบสมัครของคุณใช่ไหม? แล้วคุณจะต้องผ่านทั้งหมดของตัวแปรเหล่านี้เมื่อคุณเรียกใช้ฟังก์ชันหรือคุณต้องการที่จะglobal
ให้พวกเขา หากคุณคิดว่าคุณจะมีตัวแปรมากกว่าสิบแบบนี้ฉันขอแนะนำให้คุณทำเช่นนี้ อาจมีความขัดแย้งของชื่อเช่นกัน - คุณสามารถแทนที่ค่าของตัวแปรอื่นด้วยชื่อเดียวกันอย่างไรก็ตามสิ่งนี้สามารถแก้ไขได้โดยการเพิ่มคำนำหน้าแม้จะง่ายเหมือนขีดล่างดังนั้นคุณจะมี$_welcome
ตัวอย่าง อย่างไรก็ตามถ้าฉันเป็นเธอฉันก็จะไม่คิดถึงมัน อย่าทำมัน
วิธีหนึ่งที่ดีในการทำคือการกำหนดค่าคงที่ด้วยคำนำหน้า ดังนั้นสำหรับตัวอย่างของคุณen.lang.php
คุณจะได้สิ่งที่ต้องการdefine( 'LABEL_WELCOME', 'Welcome' );
และในของคุณคุณจะต้องno.lang.php
define ( 'LABEL_WELCOME', 'Velkommen' );
สิ่งที่ดีเกี่ยวกับการใช้ค่าคงที่แทนตัวแปรคือมันมีอยู่ในสคริปต์ของคุณเสมอ ดังนั้นคุณไม่จำเป็นต้องฉีดยาหรือทำให้เป็นสากล เมื่อเปรียบเทียบกับทั้งอาร์เรย์และตัวแปรพวกมันจะเร็วกว่าเพราะวิธีที่ PHP จัดการกับมัน - มันใช้พื้นที่น้อยในหน่วยความจำ ข้อเสียเปรียบคือคุณไม่สามารถส่งต่อไปยังนักแปลได้ดังนั้นคุณต้องมีนักพัฒนา PHP อีกครั้ง การซิงก์ระหว่างไฟล์ต่าง ๆ อาจทำให้เจ็บปวดอีกครั้ง
ตัวเลือกอื่นคือให้มีFunctionหรือClass / Methodเพื่อดึงข้อมูลการแปล มันจะมีประสิทธิภาพน้อยลง - แต่ฉันไม่คิดว่าคุณต้องการ micro-optimization ชนิดใด ๆ เลย แต่ข้อดีที่เพิ่มเข้ามาคือคุณสามารถใช้ตรรกะที่กำหนดเองได้ในขณะที่รับการแปล ตัวอย่างเช่นสมมติว่าผู้จัดการโครงการที่รักของคุณมาหาคุณซักถามว่าคุณสามารถปกปิดข้อความเหล่านั้นทั้งหมดเพื่อพิมพ์ใหญ่ได้หรือไม่ คุณไม่สามารถปฏิเสธได้ดังนั้นการมีฟังก์ชั่นในระหว่างสามารถช่วยคุณได้มากเมื่อคุณต้องการใช้ / เปลี่ยนรูปแบบการแปลทั้งหมดของคุณ
ในการสรุป:
คิดว่านักแปลสามารถใช้มันได้อย่างไรและคิดหาวิธีแก้ปัญหา KISS ที่ใช้งานได้
คิดเกี่ยวกับวิธีที่คุณสามารถซิงค์ระหว่างภาษาต่างๆ
ลองคิดดูว่าอาจจำเป็นต้องใช้การแปลแบบเดียวกันหรือเปล่าให้พูดสำหรับแอปมือถือ โซลูชันข้ามแพลตฟอร์มสามารถประหยัดเวลาของคุณ อย่ายกเลิก JSON และฐานข้อมูลทั่วไป
คิดเกี่ยวกับวิธีที่คุณสามารถใช้ / เปลี่ยนลอจิกเมื่อดึงการแปล
ลืมเกี่ยวกับประสิทธิภาพ 99.9% ของครั้งที่คุณจะไม่ได้รับที่อยู่ไกลออกไปทำไมโครเพิ่มประสิทธิภาพเหมือนอย่างต่อเนื่องเมื่อเทียบกับตัวแปรเทียบกับสายงาน ฉันถือว่าเวลาของคุณในฐานะนักพัฒนา / พนักงานมีราคาแพงกว่าเวลาประมวลผล
อัปเดต # 1
ความดีของฉันฉันโพสต์คำตอบสำหรับคำถามอายุหนึ่งปี ทำไมไม่มีใครพูดอะไรที่นี่? เราต้องการการแจ้งเตือนสำหรับกรณีเหล่านี้
อัปเดต # 2
ทางด้านขวามันบอกว่าเป็นคำถามอายุหนึ่งปี อย่างไรก็ตามมันถูกถามเมื่อสองปีก่อน! ทุกอย่างทำให้เข้าใจผิดที่นี่!