Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Spatie จัดการการแปลอย่างไรเมื่อใช้ทั้งฐานข้อมูลและไฟล์ภาษา


Spatie จัดการการแปลอย่างไรเมื่อใช้ทั้งฐานข้อมูลและไฟล์ภาษา


Spatie จัดการการแปลด้วยทั้งฐานข้อมูลและไฟล์ภาษาส่วนใหญ่ผ่านแพ็คเกจ Laravel-Translation-Loader ซึ่งรวมเข้ากับระบบการแปลดั้งเดิมของ Laravel

ทำงานอย่างไรเมื่อใช้ทั้งฐานข้อมูลและไฟล์ภาษา

- แพ็คเกจช่วยให้คุณสามารถจัดเก็บการแปลในฐานข้อมูลโดยใช้ตารางเฉพาะ (`language_lines`) แต่ละรายการการแปลแสดงด้วยอินสแตนซ์ `languageline 'ซึ่งรวมถึง:
- `group`: กลุ่มการแปล (เช่น" การตรวจสอบ "หรือ" auth ")
- `key`: คีย์การแปลภายในกลุ่ม
- `text`: การแปลอาร์เรย์สำหรับสถานที่ต่าง ๆ (เช่น` ['en' => 'นี่คือฟิลด์ที่ต้องการ', 'nl' => 'dit คือ verplicht veld'] `)

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

- หากไม่พบการแปลในฐานข้อมูลมันจะกลับไปที่ไฟล์ภาษาดั้งเดิมที่เก็บไว้ในไดเรกทอรีทรัพยากร/lang` ของ Laravel

- นี่หมายถึงการแปลฐานข้อมูลแทนที่การแปลไฟล์ภาษาหากทั้งคู่มีอยู่สำหรับคีย์และสถานที่เดียวกัน

- แพ็คเกจรองรับทั้งการแปลตามกลุ่ม (เช่น `การตรวจสอบความถูกต้อง required`) และการแปล JSON โดยใช้ชื่อกลุ่มพิเศษ` '*' `สำหรับสายการแปล JSON

คุณสมบัติและพฤติกรรมเพิ่มเติม

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

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

- คุณสามารถใช้ผู้ช่วยการแปลเริ่มต้นของ Laravel และคำสั่งใบมีด (`@lang`,` trans () `,` __ () `) โดยไม่ต้องแก้ไข

สรุป

แพ็คเกจการแปลการแปลของ Spatie ผสานการแปลที่เก็บฐานข้อมูลอย่างมีประสิทธิภาพกับการแปลตามไฟล์ดั้งเดิมของ Laravel โดยการจัดลำดับความสำคัญของรายการฐานข้อมูล สิ่งนี้ช่วยให้การแก้ไขการแปลแบบไดนามิกผ่าน UI ที่ได้รับการสนับสนุนฐานข้อมูลในขณะที่ยังคงรักษาทางเลือกไปยังไฟล์ภาษาคงที่ การรวมกันนั้นราบรื่นต้องมีการเปลี่ยนแปลงน้อยที่สุดในการโทรแปลที่มีอยู่และเสนอการแคชและการขยายความสามารถในการใช้งานขั้นสูง [1] [3] [5] [6] [7]

การอ้างอิง:
[1] https://github.com/spatie/laravel-translation-loader
[2] https://spatie.be/docs/laravel-translatable/v6/introduction
[3] https://laravel-news.com/translation-loader-package
[4] https://github.com/spatie/laravel-translatable
[5] https://www.laravelblogs.com/courses/multi-language-laravel/spatie-laravel-translation-loader
[6] https://packagist.org/packages/spatie/laravel-translation-loader
[7] https://freek.dev/593-a-laravel-package-to-store-liny-lines-in-the-database
[8] https://laraveldaily.com/lesson/multi-language-laravel/spatie-laravel-translatable