Overview

Packages

  • Onion::Controllers
  • Onion::Core
  • Onion::UI
  • Onion::Utils

Classes

  • Arrays
  • Assets
  • Filesystem
  • Image
  • Languages
  • Mail
  • Secure
  • Strings
  • SWF
  • Utils
  • Validate
  • Visitor
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: 
  3: /**
  4:  * Onion Framework - Podpora pre viacjazyčné weby
  5:  *
  6:  * Copyright (c) 2011 Jano Gašpar (http://webstranky.net)
  7:  *
  8:  * @author    Jano Gašpar
  9:  * @copyright Copyright (c) 2011 Jano Gašpar
 10:  * @package   Onion::Utils
 11:  **/
 12: class Languages
 13: {
 14:     /**
 15:      * @var array úložisko pre textové reťazce v aktuálnom jazyku
 16:      */
 17:     private static $strings = NULL;
 18: 
 19: 
 20:     /**
 21:      * Inicializácia podpory
 22:      * spúšťať cez system.hooks.before.controller.run
 23:      *
 24:      * @return void
 25:      */
 26:     public static function init($arguments)
 27:     {
 28:         if (isset($arguments['language']) === TRUE) {
 29:             define('LANGUAGE', $arguments['language']);
 30:             unset($arguments['language']);
 31: 
 32:             self::get_language_strings();
 33: 
 34:         } else {
 35:             define('LANGUAGE', NULL);
 36:         }
 37: 
 38:         Onion::$controller->view->register_macro('% ', array('Languages', 'translate'));
 39:     }
 40: 
 41: 
 42:     /**
 43:      * Preklad reťazca do aktuálneho jazyka
 44:      *
 45:      * @param  string reťazec na preklad
 46:      * @param  string ďalšie paramatre, môže ich byť viac pre formátovanie funkciou sprintf
 47:      * @return string preložený reťazec
 48:      */
 49:     public static function translate()
 50:     {
 51:         $arguments = func_get_args();
 52: 
 53:         $string = $arguments[0];
 54: 
 55:         if (self::$strings === NULL) {
 56:             self::get_language_strings();
 57:         }
 58: 
 59:         if (isset(self::$strings[$string]) === TRUE) {
 60:             $arguments[0] = self::$strings[$string];
 61:         }
 62: 
 63:         return call_user_func_array('sprintf', $arguments);
 64:     }
 65: 
 66: 
 67:     /**
 68:      * Kompilácia súborov s reťazcami aktuálneho jazyka do asociatívneho poľa
 69:      *
 70:      * @return void
 71:      */
 72:     private static function get_language_strings()
 73:     {
 74:         $content = new DirectoryIterator(APP_DIR . '/strings/' . LANGUAGE);
 75: 
 76:         self::$strings = array();
 77: 
 78:         foreach ($content as $file) {
 79:             if ($file->isFile() === FALSE) {
 80:                 continue;
 81:             }
 82: 
 83:             $strings = file_get_contents($file->getPathname());
 84: 
 85:             preg_match_all('/^"?(.*?)"?\ *=\ *"?(.*?)"?$/m', $strings, $matches);
 86:             foreach ($matches[1] as $key => $string) {
 87:                 self::$strings[$string] = $matches[2][$key];
 88:             }
 89:         }
 90:     }
 91: }
 92: 
 93: 
 94: /**
 95:  * Alias funkcie Languages::translate na __ pre kratší zápis v kóde
 96:  */
 97: if (function_exists('__') === FALSE) {
 98:     function __()
 99:     {
100:         $arguments = func_get_args();
101:         return call_user_func_array(array('Languages', 'translate'), $arguments);
102:     }
103: }
104: 
Onion API documentation generated by ApiGen.
Generated using the TokenReflection library.