ที่ บริษัท ของเราเรามีการแปล ms-sql table ที่เก็บสตริงเช่นนี้:
Id | Key | Language | Value
1 | hello-world | nl-BE | Hallo Wereld
2 | hello-world | en-GB | Hello World
มี 3 ภาษาในระบบและฉันคาดหวังว่าสิ่งนี้จะเติบโตสูงสุดประมาณ 10 ในอนาคต
ตารางนี้ถูกอ่านโดยหลายโครงการที่แตกต่างกันมาก (ประมาณ 60 โครงการส่วนใหญ่เป็นเว็บไซต์ / เว็บแอปพลิเคชันและบริการบนเว็บบางอย่าง) ที่แต่ละเปิดการเชื่อมต่อฐานข้อมูลไปยังฐานข้อมูลการแปลแคชแปล
ข้อเสนอแนะจาก front-end devs คือ UI ของเราที่จะใส่หรือแก้ไขข้อเสียที่ใหญ่ที่สุดของการแปลคือพวกเขาไม่สามารถรู้ว่าโครงการใดใช้สตริงอะไร
บางครั้งพวกเขาปรับเปลี่ยนสตริงที่ไม่ทราบว่าพวกเขากำลังทำลาย 7 โครงการด้วย
ตอนนี้พวกเขาแค่ต้องพิมพ์สิ่งที่ชอบthis.Translate("Hello World")
และระบบจะดูแลส่วนที่เหลือ
ฉันสามารถบังคับให้พวกเขามีลักษณะเช่นนี้ได้this.Translate("Hello World","AwesomeApplication1")
แต่ดูเหมือนว่าจะต้องมีการปรับโครงสร้างใหม่หลายครั้งในหลาย ๆ โครงการ
คุณจะนำเสนอโซลูชั่นนี้อย่างไร? ในฐานะผู้พัฒนาระบบจะให้ "ชื่อโครงการ" แก่การแปลอย่างไร คุณจะเก็บมันไว้ในฐานข้อมูลอย่างไร?
หมายเหตุสำคัญ: การใช้การแปลซ้ำเป็นจุดรวมของฐานข้อมูลส่วนกลางดังนั้นการกำหนดขอบเขตการแปลให้เป็นหนึ่งโครงการโดยไปที่
1|hello-world|nl-BE|Hallo Wereld|MyAwesomeApplicatoin1
5|hello-world|nl-BE|Hallo Wereld!|MyAwesomeApplicatoin2
ไม่ใช่ตัวเลือกที่ต้องการจริงๆ
ฉันต้องการของที่ชอบ:
1|hello-world|nl-BE|Hallo Wereld|MyAwesomeApplicatoin1,MyAwesomeApplicatoin2
หรือคีย์ต่างประเทศเทียบเท่าเพียงแค่ใส่ชื่อในตาราง
UPDATE
จากคำแนะนำในการทำให้ฐานข้อมูลเป็นมาตรฐานฉันได้พบกับสิ่งนี้:
//this allows me to distinquish if translations where added by developer or by translator
UPDATE2:เพิ่ม edmx แทนข้อความ หากผู้คนสนใจฉันสามารถรวบรวมโครงการ WCF ฉันกำลังสรุปแนวคิดนี้เพื่อให้ผู้อื่นสามารถทดสอบและใช้งานได้