虽然这个问题可能与 其他许多问题类似, 但 我想就FuelYP上针对i18n的最佳方法提出意见/建议.
所以,这是我到目前为止所得到的:
数据库架构#1:
models (id, name_pt, name_es, name_en, description_pt, description_es, description_en)
Run Code Online (Sandbox Code Playgroud)
样本数据#1:
(1, 'Modelo', 'Modelo', 'Model', 'Descrição do modelo', 'Descripción del modelo', 'Model description')
Run Code Online (Sandbox Code Playgroud)
优点:
public function & __get($property)
{
if (array_key_exists($property, array('name', 'description')))
{
$property = $property.'_'.Session::get('lang_code');
}
return parent::__get($property);
}
Run Code Online (Sandbox Code Playgroud)
这样,我就可以打电话了:
$model->name;
$model->description;
Run Code Online (Sandbox Code Playgroud)
代替:
$model->{'name_'.Session::get('lang_code')};
$model->{'description_'.Session::get('lang_code')};
Run Code Online (Sandbox Code Playgroud)
缺点:
Model_Model::query()
->order_by('name_'.Session::get('lang_code'))
->get();
Run Code Online (Sandbox Code Playgroud)
数据库架构#2:
languages (id, code, name)
models (id)
i18n_models (id, …Run Code Online (Sandbox Code Playgroud)