NEW: acum avem salvare automata pe CRUD, vezi : Traduceri in baza de date – CRUD
In baza de date traducem elementele care trebuie sa fie multi-language prin crearea unei tabele de texte pentru fiecare tabela care are elemente multi-language.
Exemplu:
Tabela de accounting widgets are name si description multi-language.
| accounting_widget |
| id |
| uid |
| …etc… |
Pentru aceasta, creeam tabela accounting_widget_text cu urmatoarea structura:
| accounting_widget_text |
| id |
| itemId |
| languageId |
| name |
| description |
Pentru a fi tabela de traduceri, aceasta trebuie:
- sa aiba numele format din numele tabelei care are chestii multi-language + “_text”
- sa aiba un camp itemId care pointeaza catre tabele principala
- sa aiba un camp languageId care pointeaza catre tabela sys_language
- sa aiba campurile multi-language
- sa aiba model generat (in yii !!! :))
In PHP, modelul tabelei principale trebuie:
- sa extinda MActiveRecord in loc de ActiveRecord
sa aiba declarate toate campurile multi-language cu numele lor proprii, ca public
Sa luam un alt exemplu, cazul tabelei payroll_summary_var:
class PayrollSummaryVar extends MActiveRecord {
// multi-language related fields
// originating from payroll_summary_var_text table
// public $name; <- nu mai e nevoie
// public $description; <- nu mai e nevoie
/**
* @inheritdoc
*/
public static function tableName() {
return 'payroll_summary_var';
}
......
}
Odata ce faci asta, peste tot vei avea acces la campurile multi-language, direct in limba curenta. De exemplu:
$r = \common\models\PayrollSummaryVar::find()->all();
foreach($r as $a){
U::debug($a->name); // <- name este multilanguage, si va fi livrat direct in limba curenta
}
Categories: HINTS (tehnice), Traduceri in baza de date |
Leave a Reply
[TOP]