ฉันต้องพัฒนาเว็บไซต์หลายภาษา มีมากกว่า 4 ภาษาที่ใช้ในฐานข้อมูลในเวลาเดียวกัน เป็นไปตามรูปแบบเสมอ: field_%lang%
อดีต. รหัส | title_en | title_de | description_th | คำอธิบาย_de
เนื่องจากมันค่อนข้างง่าย ฉันคิดว่าจะเขียนฟังก์ชันที่ฉันสามารถใช้ได้ทั้งในคอนโทรลเลอร์และมุมมอง (เอนทิตีส่วนกลาง?) เพื่อรักษาโค้ดของฉันให้แห้ง
//function
public function __($field, $language = null){
if( $language === null ){
list( $language ) = split('_', I18n::Locale());
}
$newField = $field . '_' . strtolower( $language );
if( $this->has( $newField ) ){
return $this->{ $newField };
}else{
throw new NotFoundException('Could not find "' . $newField . '" field');
}
}
//usage
$result->__('title'); //returns title_en depending on Locale
$result->__('title', 'de'); //always returns title_de
ประเด็นก็คือฉันไม่รู้ว่าจะนำไปปฏิบัติที่ไหนหากไม่มีแบบแผนการเบรก ฉันกำลังคิดถึงเอนทิตี แต่อย่างที่ฉันเข้าใจไม่มีเอนทิตี "สากล" ที่เหมาะกับทุกรุ่นใช่ไหม
ยินดีต้อนรับทุกความคิดและข้อเสนอแนะ!
ไมค์