it-blaster/translation-bundle

Symfony2 bundle to work with the language versions of the website. Includes advanced Propel behavior sluggable.

1.0.4 2016-01-12 16:56 UTC

This package is not auto-updated.

Last update: 2024-04-24 12:41:30 UTC


README

Build Status Scrutinizer Code Quality

Вспомогательный бандл для работы с языковыми версиями на сайте

Installation

Добавьте ItBlasterTranslationBundle в composer.json:

{
    "require": {
        "it-blaster/translation-bundle": "dev-master"
	},
}

Теперь запустите композер, чтобы скачать бандл командой:

$ php composer.phar update it-blaster/translation-bundle

Композер установит бандл в папку проекта vendor/it-blaster/translation-bundle.

Далее подключите бандл в ядре AppKernel.php:

<?php
// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new ItBlaster\TranslationBundle\ItBlasterTranslationBundle(),
    );
}

В app/config/config.yml переопределяеем путь до класса propel-бихейвора sluggable

 propel:
     ...
     behaviors:
         ...
         sluggable: ItBlaster\TranslationBundle\Behavior\ExtendedSluggableBehavior
         it_blaster_translation_model: ItBlaster\TranslationBundle\Behavior\TranslationModelBehavior

В файле schema.yml у таблицы прописываем бихейвор с указанием параметра primary_string, на основе которой будет формироваться slug. Например:

    <behavior name="sluggable">
        <parameter name="primary_string" value="title" />
    </behavior>

Если вам создавать slug у таблицы не нужно, а нужно только выводить поля языковых версий в правильном порядке, то достаточно прописать бихейвор it_blaster_i18n:

        <behavior name="it_blaster_i18n">
            <parameter name="primary_string" value="question" />
        </behavior>

И прописать в config.yml его подключение:

 propel:
     ...
     behaviors:
         ...
         it_blaster_i18n: ItBlaster\TranslationBundle\Behavior\ExtendedI18nBehavior

Бихейвор ExtendedSluggableBehavior уже включает в себя методы из бихейвора ExtendedI18nBehavior, поэтому вместе их прописывать в схеме не нужно.

Если вы используете языковый версии (i18n), необходимо в файле config.yml указать параметры it_blaster_translation.locales и it_blaster_translation.slug_locales.

it_blaster_translation:
    locales: ['ru', 'en','uk','cs']
    slug_locales: ['en','ru']

Параметр it_blaster_translation.locales отвечает за порядок вывода полей в форме редактирвоания в CMS. Параметр it_blaster_translation.slug_locales отвечает за порядок языков, на основе которых будет формироваться slug. Если значение по первому языку не заполнено, система будет сформировать slug на основе значения следующей языковой версии.

Таблица переводов

Необходимо в папке проекта src создать файлы переводов messages.locale.php и validators.locale.php с содержимым:

<?php
return \ItBlaster\TranslationBundle\Model\TranslationPeer::getListForLocale("LOCALE");

Например, для английского языка нужно создать файлы:

  1. src\App\MainBundle\Resources\translations\messages.en.php
  2. src\App\MainBundle\Resources\translations\validators.en.php

Со следующим содержимым:

<?php
return \ItBlaster\TranslationBundle\Model\TranslationPeer::getListForLocale("en");

Для того, чтобы наполнить таблицу переводов необходимо запустить индексирующий таск в консоле:

'php app/console translation:extract en --dir=./src/ --output-dir=./src/App/MainBundle/Resources/translations/ --output-format="php"'

Если вам нужны переводы только файлов шаблонов (twig), то выключите из выборки php-файлы

'php app/console translation:extract en --dir=./src/ --output-dir=./src/App/MainBundle/Resources/translations/ --exclude-name="*.php" --output-format="php"'

Особенности подключения

  1. Если в проекте не используется JMSTranslationBundle, то необходимо добавить его в composer.json http://jmsyst.com/bundles/JMSTranslationBundle/master/installation
  2. В каких-то случаях не переопределяется сервис jms_translation.dumper.php_dumper.class, если этого не происходит необходимо в app/config.yml прописать
parameters:
    ...
    jms_translation.dumper.php_dumper.class: ItBlaster\TranslationBundle\Translation\Dumper\PhpDumper
    ...

Credits

It-Blaster it-blaster@yandex.ru