คำถามติดแท็ก templates

2
โซลูชันที่ใช้งานง่ายในการแก้ไขแม่แบบอีเมลด้วยตัวแปรแทนที่คืออะไร
ฉันกำลังทำงานกับระบบที่เราพึ่งพา "ผู้ดูแลระบบ / ผู้จัดการ" จำนวนมากที่ส่งอีเมลผู้ใช้จากฐานข้อมูล หนึ่งในคุณสมบัติที่สำคัญคือความสามารถในการส่งอีเมลถึงคนหลายคนในเวลาเดียวกันพร้อมกับข้อมูลเฉพาะที่เกี่ยวข้องกับพวกเขาแต่ละคน คุณสมบัติที่สำคัญอีกประการหนึ่งคือสามารถสร้างอีเมลด้วยมือได้เนื่องจากมีความจำเป็นต้องปรับเปลี่ยนเล็กน้อยในแต่ละครั้ง แต่การมีเทมเพลตพื้นฐานช่วยประหยัดเวลาได้มาก สำหรับสิ่งนี้เรามีโซลูชัน "แม่แบบ" โดยทั่วไปซึ่งเรามีแม่แบบที่มีลักษณะดังนี้: Hello {{recipient.full_name}}, Your application to {{activity.title}} has been accepted. You have requested to participate on dates {{application.dates}}, in role {{application.role}} Blah blah blah ปัญหาที่เรามีอยู่เห็นได้ชัดว่า (ตามที่เราคาดไว้) ผู้จัดการไม่ได้รับความคิด "ตัวแปร" ทั้งหมดและพวกเขาทำสิ่งต่าง ๆ เช่นเขียนทับพวกเขาซึ่งไม่อนุญาตให้ส่งอีเมลมากกว่าหนึ่งคนในเวลาเดียวกัน สิ่งเหล่านี้จะไม่ถูกแทนที่และระบบจะพังหรือแม้กระทั่งสิ่งที่ไม่สามารถอธิบายได้เช่น "Hello {{John}}" ปัญหาใหญ่คือสิ่งนี้ไม่ได้ลดระดับลงตามปกติในส่วน "ผู้ดูแลระบบ" ที่มีผู้ใช้ขั้นสูงเพียงไม่กี่รายเท่านั้นที่สามารถเข้าถึงการแก้ไขเทมเพลตที่ส่งออกโดยอัตโนมัติและพวกเขาคาดหวังว่าจะรู้ว่าพวกเขากำลังทำอะไร ผู้ใช้ทุกคนในระบบได้รับปัญหานี้ วิธีแก้ปัญหาที่ชัดเจนคือการแทนที่ตัวแปรก่อนที่จะแสดงเทมเพลตนี้เพื่อให้ผู้ใช้แก้ไข แต่มันไม่ทำงานเมื่อส่งอีเมลหลาย …

1
นัยกับอินเทอร์เฟซชัดเจน
ฉันคิดว่าฉันเข้าใจข้อ จำกัด ที่แท้จริงของการรวบรวมความแตกต่างของเวลาและความหลากหลายของเวลาทำงาน แต่อะไรคือความแตกต่างทางแนวคิดระหว่างอินเตอร์เฟสที่ชัดเจน (polymorphism แบบรันไทม์คือฟังก์ชันเสมือนและพอยน์เตอร์ / การอ้างอิง) และอินเทอร์เฟซโดยปริยาย (polymorphism เวลาคอมไพล์เช่น . ความคิดของฉันคือวัตถุสองชิ้นที่มีส่วนต่อประสานที่ชัดเจนเหมือนกันจะต้องเป็นวัตถุประเภทเดียวกัน (หรือมีบรรพบุรุษร่วมกัน) ในขณะที่วัตถุสองชิ้นที่มีส่วนต่อประสานแบบเดียวกันนั้นไม่จำเป็นต้องเป็นวัตถุชนิดเดียวกัน อินเทอร์เฟซที่พวกเขาทั้งสองเสนอสามารถมีฟังก์ชันการทำงานที่แตกต่างกันมาก ความคิดใด ๆ เกี่ยวกับเรื่องนี้? และหากวัตถุสองชิ้นมีอินเตอร์เฟสแบบนัยเดียวกันเหตุผลอะไร (ข้างๆประโยชน์ทางเทคนิคของการไม่ต้องใช้การส่งข้อมูลแบบไดนามิกที่มีตารางการค้นหาฟังก์ชั่นเสมือน ฯลฯ ) จะไม่มีวัตถุเหล่านี้สืบทอดมาจากวัตถุพื้นฐานที่ประกาศอินเตอร์เฟสนั้น ทำให้เป็นอินเทอร์เฟซที่ชัดเจนหรือไม่ อีกวิธีในการบอกว่า: คุณสามารถให้กรณีที่วัตถุสองอย่างที่เสนออินเทอร์เฟซแบบเดียวกัน (และสามารถใช้เป็นชนิดของคลาสเทมเพลตตัวอย่าง) ไม่ควรสืบทอดมาจากคลาสพื้นฐานที่ทำให้อินเทอร์เฟซนั้นชัดเจน? บางโพสต์ที่เกี่ยวข้อง: https://stackoverflow.com/a/7264550/635125 https://stackoverflow.com/a/7264689/635125 https://stackoverflow.com/a/8009872/635125 นี่คือตัวอย่างที่จะทำให้คำถามนี้เป็นรูปธรรมมากขึ้น: การเชื่อมต่อโดยนัย: class Class1 { public: void interfaceFunc(); void otherFunc1(); }; class Class2 { public: void interfaceFunc(); …

2
การแปลข้อความที่ยาวขึ้น (มุมมองและเทมเพลตอีเมล) ด้วย gettext
ฉันกำลังพัฒนาเว็บแอปพลิเคชั่น PHP หลายภาษาและฉันมีข้อความยาว (-ish) ที่ฉันต้องการแปลด้วย gettext เหล่านี้คือเทมเพลตอีเมล (โดยปกติจะสั้น แต่ก็ยังมีอีกหลายบรรทัด) และบางส่วนของเทมเพลตการดู (บล็อคข้อความที่มีความหมายที่ยาวกว่า) ข้อความเหล่านี้จะมี HTML ง่ายๆ (เช่นตัวหนา / ตัวเอียงเพื่อเน้นอาจเป็นลิงค์ที่นี่หรือที่นั่น) แม่แบบเป็นสคริปต์ PHP ที่มีการบันทึกผลลัพธ์ ปัญหาคือ gettext ดูงุ่มง่ามมากสำหรับการจัดการข้อความที่ยาวขึ้น โดยทั่วไปแล้วข้อความที่ยาวจะมีการเปลี่ยนแปลงมากกว่าระยะเวลาสั้นกว่าข้อความสั้น - ฉันสามารถเปลี่ยน msgid และตรวจสอบให้แน่ใจว่าได้อัปเดตในการแปลทั้งหมด (อาจเป็นงานจำนวนมากและมีข้อผิดพลาดเกิดขึ้นได้ง่ายเมื่อ msgid ยาว) หรือ msgid ไม่เปลี่ยนแปลงและแก้ไขเฉพาะการแปล (ซึ่งจะทำให้ข้อความล้าสมัยในแม่แบบที่ทำให้เข้าใจผิด) นอกจากนี้ฉันเคยเห็นคำแนะนำเกี่ยวกับการรวม HTML ในสตริง gettext แต่การหลีกเลี่ยงมันจะทำให้ข้อความธรรมดาชิ้นเดียวกลายเป็นชิ้นส่วนจำนวนมากซึ่งจะเป็นฝันร้ายที่ยิ่งใหญ่กว่าในการแปลและรวมกันอีกครั้งและฉันก็เห็นคำแนะนำ การแยก gettext สตริงที่ไม่จำเป็นออกเป็น msgids แยกกัน วิธีอื่นที่ฉันเห็นคือละเว้น gettext ทั้งหมดสำหรับข้อความที่ยาวกว่านี้และแยกบล็อกเหล่านั้นในซับเทมเพลตภายนอกสำหรับแต่ละโลแคลและเพียงแค่รวมบล็อกสำหรับโลแคลปัจจุบัน ข้อเสียคือฉันกำลังแยกความพยายามในการแปลระหว่างไฟล์. po …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.