BxDolInstallLang.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php defined('BX_DOL_INSTALL') or die('hack attempt');
  2. /**
  3. * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
  4. * CC-BY License - http://creativecommons.org/licenses/by/3.0/
  5. *
  6. * @defgroup DolphinInstall Dolphin Install
  7. * @{
  8. */
  9. class BxDolInstallLang
  10. {
  11. protected $_aLang;
  12. protected $_sLang;
  13. protected $_oModulesTools;
  14. public function __construct($sLang)
  15. {
  16. $this->_oModulesTools = new BxDolInstallModulesTools();
  17. if (!$sLang)
  18. $sLang = BX_INSTALL_DEFAULT_LANGUAGE;
  19. $aModules = $this->_oModulesTools->getModules('language');
  20. $aModuleConfig = $this->_oModulesTools->getModuleConfigByUri ($sLang, $aModules);
  21. if (!$aModuleConfig && BX_INSTALL_DEFAULT_LANGUAGE != $sLang) {
  22. $sLang = BX_INSTALL_DEFAULT_LANGUAGE;
  23. $aModuleConfig = $this->_oModulesTools->getModuleConfigByUri ($sLang, $aModules);
  24. }
  25. $this->_sLang = $sLang;
  26. $this->_aLang = $this->_oModulesTools->readLanguage($aModuleConfig);
  27. }
  28. static function getInstance($sLang = '') {
  29. if (!isset($GLOBALS['bxDolClasses'][__CLASS__]))
  30. $GLOBALS['bxDolClasses'][__CLASS__] = new BxDolInstallLang($sLang);
  31. return $GLOBALS['bxDolClasses'][__CLASS__];
  32. }
  33. public function _t ($sKey)
  34. {
  35. $sKey = func_get_arg(0);
  36. if (isset($this->_aLang[$sKey])) {
  37. $s = $this->_aLang[$sKey];
  38. if (($iNumArgs = func_num_args()) > 1)
  39. for ($i = 1; $i < $iNumArgs; $i++)
  40. $s = str_replace('{' . ($i - 1) . '}', func_get_arg($i), $s);
  41. return $s;
  42. }
  43. return $sKey;
  44. }
  45. public function getAvailableLanguages () {
  46. $aRet = array();
  47. $aModules = $this->_oModulesTools->getModules('language');
  48. foreach ($aModules as $aModuleConfig)
  49. $aRet[$aModuleConfig['home_uri']] = array(
  50. 'code' => $aModuleConfig['home_uri'],
  51. 'title' => $aModuleConfig['title'],
  52. 'icon' => BX_INSTALL_URL_MODULES . $aModuleConfig['home_dir'] . 'template/images/icons/std-pi.png',
  53. );
  54. return $aRet;
  55. }
  56. }
  57. if (!function_exists('_t')) {
  58. $sLang = 'en';
  59. if (isset($_GET['lang'])) {
  60. $sLang = $_GET['lang'];
  61. setcookie( 'lang', '', time() - 60*60*24);
  62. setcookie( 'lang', $sLang, time() + 60*60*24*365);
  63. } elseif (isset($_COOKIE['lang'])) {
  64. $sLang = $_COOKIE['lang'];
  65. }
  66. BxDolInstallLang::getInstance($sLang);
  67. function _t() {
  68. return call_user_func_array(array(BxDolInstallLang::getInstance(), '_t'), func_get_args());
  69. }
  70. }
  71. /** @} */