| 
<?php
 namespace PHPtricks\Logaty\Translate;
 
 use PHPtricks\Logaty\App;
 
 /**
 * Class Translator
 */
 class Translator
 {
 protected $app = null;
 protected $dir = '';
 
 public function __construct(App $app)
 {
 
 $this->app = $app;
 // get language directory - you can edit it from config/paths.php -
 $this->dir = $app->config('paths.lang_files');
 }
 
 /**
 * get translation from files
 * @param string $str
 * @param string $lang
 * @return string
 */
 public function getTranslate($str, $lang = '')
 {
 // check if language send and its enabled language or set language to default one.
 $lang = ($lang && in_array($lang, $this->app->enabled()) ?
 $lang :
 $this->app->current);
 
 // handel key to get translation from correct file
 /**
 * -remember- we store languages from directory (language/[language-code]/[page-key].php)
 * and inside file [page-key].php we have an array -> [ key => translation ]
 *
 * example :
 *      arabic language for home page
 *          translation file -> /languages/ar/home.php
 *          inside home.php -> [ 'welcome' => '????? ?? ?? ?????? ???????? ?????? ?????.' ]
 *
 *  to use it :
 *  1 - logaty('home.welcome');
 *  2 - logaty->__('home.welcome');
 *  3 - logaty->_x('home.welcome');
 */
 $target = explode('.', $str);
 // get translation file
 /*our language directory*/
 $file = $this->dir .
 /* language-key/page-key */
 "{$lang}/{$target[0]}.php";
 
 // check if file exists
 if(!file_exists($file))
 {
 return $str; // if translation file not exists just return given string
 }
 // get translation array from file
 $translation = include $file;
 unset($target[0]); // remove file name - we dont need file name language anymore
 
 // get the translation
 foreach ($target as $item)
 {
 if( isset($translation[$item]) ) {
 $translation = $translation[$item];
 }
 }
 
 // return translation if its a string otherwise return given string
 return is_string($translation) ? $translation : $str;
 }
 }
 |