it-blaster / translation-bundle
Symfony2 bundle to work with the language versions of the website. Includes advanced Propel behavior sluggable.
Installs: 365
Dependents: 3
Suggesters: 0
Security: 0
Stars: 0
Watchers: 5
Forks: 0
Open Issues: 2
Type:symfony-bundle
Requires
- jms/i18n-routing-bundle: >=1.1.1
- propel/propel-bundle: >=1.4
- sonata-project/propel-admin-bundle: >=1.0
- symfony/symfony: >=2.2
This package is not auto-updated.
Last update: 2024-11-20 15:23:54 UTC
README
Вспомогательный бандл для работы с языковыми версиями на сайте
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");
Например, для английского языка нужно создать файлы:
- src\App\MainBundle\Resources\translations\messages.en.php
- 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"'
Особенности подключения
- Если в проекте не используется JMSTranslationBundle, то необходимо добавить его в composer.json http://jmsyst.com/bundles/JMSTranslationBundle/master/installation
- В каких-то случаях не переопределяется сервис 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