Ярлыки

.htaccess (4) тестирование (8) шаблоны проектирования (3) css (5) Debian (6) docker (2) Doctrine2 (6) Git (6) html (4) java (6) javascript (13) jquery (11) LFS (3) linux (23) mac os (4) mod_rewrite (2) MSSQL (4) MySQL (18) ORM Doctrine (17) patterns (3) PDO (3) perl (7) PHP (64) PHPUnit (8) Python (15) SEO (2) Silex (1) SimpleXML (1) SQL (14) ssh (4) Ubuntu (24) Yii1 (1) Zend Framework (19) ZendFramework2 (8)

четверг, 30 июля 2015 г.

Yii1. Internationalization (I18N) using DB.

Create the following tables:
CREATE TABLE SourceMessage
(
    id INTEGER PRIMARY KEY,
    category VARCHAR(32),
    message TEXT
);
CREATE TABLE Message
(
    id INTEGER,
    language VARCHAR(16),
    translation TEXT,
    PRIMARY KEY (id, language),
    CONSTRAINT FK_Message_SourceMessage FOREIGN KEY (id)
         REFERENCES SourceMessage (id) ON DELETE CASCADE ON UPDATE RESTRICT
);

INSERT INTO `SourceMessage` (`id`, `category`, `message`) VALUES
(1, 'foo', 'Hello');

INSERT INTO `Message` (`id`, `language`, `translation`) VALUES
(1, 'es', 'Hola');


Put component into the main config:
'components' => array(
        ...
        'messages'=>array(
            'class'=>'CDbMessageSource'
        ),
        ...
)
Use it everywhere:
class FooController extends CController {
    
    function actionBar() {
        
        Yii::app()->setLanguage('es');
        
        echo Yii::t('foo', 'Hello'); die; // will output 'Hola'
    }
}

Комментариев нет:

Отправить комментарий