Мне нужно разработать многоязычный веб-сайт. В базе данных одновременно используется более 4 языков. Схема всегда следующая: field_%lang%
бывший. идентификатор | title_ru | title_de | description_ru | description_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
Дело в том, что я понятия не имею, где это реализовать, не нарушая условностей. Я думал о сущностях, но, насколько я понимаю, нет «глобальной» сущности, которая работает для всех моделей?
Все идеи и предложения приветствуются!
Майк