2017 © Pedro Peláez
 

yima-core-module yima-localize

Localization features for multilingual DB`s(translatable fields), CLDR data for full system localization of data, and many predefined useful locale helpers.

image

rayamedia/yima-localize

Localization features for multilingual DB`s(translatable fields), CLDR data for full system localization of data, and many predefined useful locale helpers.

  • Monday, September 8, 2014
  • by Payam
  • Repository
  • 1 Watchers
  • 0 Stars
  • 2 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 1 Versions
  • 0 % Grown

The README.md

yimaLocalize

this module is part of Yima Application Framework, (*1)

[zf2 module] Localization features for multilingual DB`s(translatable fields), CLDR data for full system localization of data, and many predefined useful locale helpers., (*2)

Using MultiLingual TableGateway Feature

Setup Database

1) Setup Database adapter inside your application. 2) Create new db in your sql server. 3) Create i18n table with importing yimaLocalize_i18n.sql into your mysql server. you can find this file inside data folder of module, (*3)

Create your Translatable Table

note: you can register this table as service in serviceManager, later you can invoke this table from SM., (*4)

use yimaBase\Db\TableGateway\AbstractTableGateway;
use yimaLocalize\Db\TableGateway\Feature\TranslatableFeature;

class SampleTable extends AbstractTableGateway
{
    # db table name
    protected $table = 'sampletable';

    // this way you speed up running by avoiding metadata call to reach primary key
    // exp. usage in Translation Feature
    protected $primaryKey = 'sampletable_id';

    public function init()
    {
        // this is translatable fields of table
        $feature = new TranslatableFeature(
            array('title', 'description')
        );

        $this->featureSet->addFeature($feature);
    }
}

In your controller or somewhere you access ServiceManager, you have this stuff:, (*5)

1) Add Data In Your Current Locale note: when we fetch data from sql only get data inserted from within related locale that insert query was run, (*6)

$serviceLocator = $this->getServiceLocator();
// get sample table service
$projectTable   = $serviceLocator->get('yimaLocalize.Model.TableGateway.Sample');

$locale         = \Locale::getDefault();
$title = ($locale == 'fa_IR') ? 'عنوان' : 'Title';
$descr = ($locale == 'fa_IR') ? 'توضیحات' : 'Description';

// Translatable Feature will automatically detect locale from \Locale::getDefault()
$projectTable->insert(
    array(
        'title'       => $title,
        'description' => $descr,
        'image'       => uniqid().'.jpg',
    )
);

// we can also use update query as well
$projectTable->update(
    array(
        'description' => 'This is '.$locale.' title updated from',
    ),
    array('sampletable_id'=>1 )
);

2) Add Translation for data table in other locale language(s) note: every time you query for data in desired locale language translation will fetch automatically, (*7)

$serviceLocator = $this->getServiceLocator();
// get sample table service
$projectTable   = $serviceLocator->get('yimaLocalize.Model.TableGateway.Sample');

$locale         = \Locale::getDefault();
$title = ($locale == 'fa_IR') ? 'عنوان' : 'Title';
$descr = ($locale == 'fa_IR') ? 'توضیحات' : 'Description';

$projectTable->insert(
    array(
        'title'       => $title,
        'description' => $descr,
        'image'       => uniqid().'.jpg',
    )
);

$currentLocale = $locale;
$transLocale   = 'fa_IR';

// add translation for other locale ... {
// set locale for translation feature
$projectTable->apply('setLocale', array($transLocale));
// add translation
$projectTable->apply(
    'addTranslationRows',
    array(
        array(
            'title'       => $transLocale.' Title',
            'description' => $transLocale.' Description',
        )
    ,$projectTable->getLastInsertValue()
    )
);
// bring back current locale, as you want !!
$projectTable->apply('setLocale', array($currentLocale));
// ... }

3) Fetch, Update, Delete From Table, (*8)

$projectTable->apply('setLocale', array('fa_IR'));

// Select Specific Data For "fa_IR" locale
$select = $projectTable->getSql()->select()
    //->columns(array('t'=>'title','image','url'))
    //->where(array('sampletable_id' => 1))
;
$rowset = $projectTable->selectWith($select);

foreach ($rowset as $projectRow) {
    \Zend\Debug\Debug::dump($projectRow);
}

// Delete Query Will Remove All Data And Translation
$projectTable->delete(
    array('sampletable_id'=>1 )
);

Using Localized Calendar

this is one of locale() helper plugins that convert dates to localized result. lets see some examples., (*9)

# in view or controllers as helper

# Determine the detected locale is fa_IR

echo $this->locale(); // fa_IR
// this will print out date in persian calendar
echo $this->locale()->datetime()->format('Y-m-d H:i:s'); // 1393-03-07 21:53:30

# Determine the detected locale is nl_BE

echo $this->locale(); // nl_BE
// this will print out date in persian calendar
echo $this->locale()->datetime()->format('Y-M-d l'); // 2014-mei-28 woensdag

The Versions

08/09 2014

dev-master

9999999-dev

Localization features for multilingual DB`s(translatable fields), CLDR data for full system localization of data, and many predefined useful locale helpers.

  Sources   Download

The Requires

 

by Payam Naderi

zf2 locale localization languages zf2 module raya media yima multi lingual