transactpro/phalcon-translate

There is no license information available for the latest version (1.0.2) of this package.

Translation module for Phalcon

1.0.2 2015-10-27 23:31 UTC

This package is not auto-updated.

Last update: 2024-11-09 19:31:38 UTC


README

SensioLabsInsight

Latest Version Total Downloads

##How it works: This translation module is designed to be able to store/access any key in/from database. All translation map is accessible at any time without spawning new queries. There are three steps to match your key in translation map:

  • provided or default language
  • fallback language
  • key as it is

Example #1:

We have `test` key with value `Test value` in our translation map for English only. 

When we will ask for `test` with language key (`en` is enabled as fallback language):
    - en: `Test value`
    - de: `Test value`
    - ru: `Test value`
When we will ask for `test` with language key (without fallback language):
    - en: `Test value`
    - de: `test`
    - ru: `test`

Example #2:

We have `test` key with value `Test value`/`Тестовое значение` in our translation map for English and Russian. 

When we will ask for `test` with language key (`en` is enabled as fallback language):
    - en: `Test value`
    - de: `Test value`
    - ru: `Тестовое значение`
    - without: `Test value`
When we will ask for `test` with language key (without fallback language):
    - en: `Test value`
    - de: `test`
    - ru: `Тестовое значение`
    - without: `Test value`

Installation

"require": {
	"transactpro/phalcon-translate": "~1.0"
}

Usage and Configuration

####First of all you have to create translation table:

CREATE TABLE `translation` (
	`translation_id` INT(11) NOT NULL AUTO_INCREMENT,
	`language` VARCHAR(5) NOT NULL,
	`key_name` VARCHAR(48) NOT NULL,
	`value` TEXT NOT NULL,
	PRIMARY KEY (`translation_id`)
)
COLLATE='utf8_general_ci'
ENGINE=MyISAM
AUTO_INCREMENT=1;

####Set shared service translate to your Dependency Injection container, providing your translation model class name. Example:

$di->setShared('translate', function ($lang = false) use ($config, $di) {
    $adapter = new \TransactPro\Translation\Translate(
        TranslationModel::class,
        $lang
    );
    // setting default language that will be used when _() called without language parameter
    $adapter->setDefaultLanguage('en');
    // if fallback language is set, it will look in that translation map for value
    $adapter->setFallbackLanguage('de');
    /*
    * You can also provide them as options in third param array like:
    * [
    *   'default' => 'en',
    *   'fallback' => 'de'
    * ]
    */

    return $adapter;
});

####You can add filter to your Volt or Twig. Example:

trans($key, $lang = null)
{
    $di = Di::getDefault();
    $translate = $di->getShared('translate');
    return $translate->_($key, $lang);
}

####If your table (model) does not match to provided translation.sql You can map your own columns as option set in third param array:

$di->setShared('translate', function ($lang = false) use ($config, $di) {
    $adapter = new Translate(
        TranslationModel::class,
        $lang,
        [
          'languageColumn' => 'lang',
          'keyColumn' => 'lang-key',
          'valueColumn' => 'lang-value'
        ]
    );
    
    return $adapter;
});