Traduceri in baza de date – sistemul

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:

  1. sa aiba numele format din numele tabelei care are chestii multi-language + “_text”
  2. sa aiba un camp itemId care pointeaza catre tabele principala
  3. sa aiba un camp languageId care pointeaza catre tabela sys_language
  4. sa aiba campurile multi-language
  5. sa aiba model generat (in yii !!!  :))

In PHP, modelul tabelei principale trebuie:

  1. sa extinda MActiveRecord in loc de ActiveRecord
  2. 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
}

 

About

Software Development Manager, Architect

Leave a Reply

Your email address will not be published. Required fields are marked *

[TOP]