langChajian.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <?php
  2. /**
  3. * 语言包
  4. */
  5. class langChajian extends Chajian{
  6. //支持的语言包
  7. public $langArray = array('zh-CN','zh-FT','en-US');
  8. public $langArraycn = array('简体中文','繁体中文','英文');
  9. public $locallang = 'zh-CN'; //默认的语言包
  10. /**
  11. * 初始化语言包
  12. */
  13. public function initLang()
  14. {
  15. $moren= getconfig('locallang', $this->locallang);
  16. $lang = $this->rock->get('locallang', $moren);
  17. if(!in_array($lang, $this->langArray))$lang = $moren;
  18. if(!defined('LANG'))define('LANG', $lang);
  19. $xuhao= 0;
  20. foreach($this->langArray as $k=>$v){
  21. if($v==$lang)$xuhao = $k;
  22. }
  23. $GLOBALS['langdata'] = array(
  24. 'lang' => $lang,
  25. 'xuhao' => $xuhao
  26. );
  27. }
  28. public function getLocal()
  29. {
  30. return array(
  31. 'arr' => $this->langArray,
  32. 'arrcn' => $this->langArraycn,
  33. );
  34. }
  35. /**
  36. * 生成语言包文件
  37. */
  38. public function createlocal()
  39. {
  40. $bar = glob('include/langlocal/langtxt/*.txt');
  41. $path= 'include/langlocal/langphp/lang.php';
  42. $pats= 'include/langlocal/langphp/langjs.php';
  43. $sss = $ssb = '';
  44. if(is_array($bar))foreach($bar as $k=>$fil1){
  45. $str = $this->getcontarr($fil1);
  46. if($str){
  47. $isph = 1;
  48. $isjs = 0;
  49. if(contain($fil1,'_onlyjs')){
  50. $isph = 0;
  51. $isjs = 1;
  52. }
  53. if(contain($fil1,'_onlyphp')){
  54. $isph = 0;
  55. }
  56. if($isph==1){
  57. if($sss)$sss.=',';
  58. $sss.=''.$str.'';
  59. }
  60. if($isjs==1){
  61. if($ssb)$ssb.=',';
  62. $ssb.=''.$str.'';
  63. }
  64. if($isph==0 && $isjs==0){
  65. $fname = str_replace('_onlyphp.txt','.php',str_replace('include/langlocal/langtxt/','',$fil1));
  66. $spath = 'include/langlocal/langphp/'.$fname.'';
  67. $this->rock->createtxt($spath, '<?php'.chr(10).'return array('.$str.');');
  68. }
  69. }
  70. }
  71. $str = '<?php'.chr(10).'return array('.$sss.');';
  72. $this->rock->createtxt($path, $str);
  73. $str = '<?php'.chr(10).'return array('.$ssb.');';
  74. $this->rock->createtxt($pats, $str);
  75. $nrs = require($pats);
  76. $nrs = 'var rocklang = \'\',rocklangxu=0,langdata = '.json_encode($nrs).';';
  77. $ss1 = '';
  78. foreach($this->langArray as $k=>$v){
  79. $ss1.='if(rocklang==\''.$v.'\')rocklangxu='.$k.';';
  80. }
  81. $nrs.="
  82. function lang(ky){
  83. if(!rocklang){rocklang = $('html').attr('lang');if(!rocklang)rocklang='".$this->locallang."';".$ss1."}
  84. var d = langdata[ky];
  85. if(!d)return ky;
  86. var str = d[rocklangxu];
  87. if(!str)str = ky;
  88. return str;
  89. }";
  90. $this->rock->createtxt('js/lang.js', $nrs);
  91. unlink($pats);
  92. return returnsuccess();
  93. }
  94. public function getcontarr($file,$lx=0)
  95. {
  96. if(!file_exists($file))return '';
  97. $cont = file_get_contents($file);
  98. $arra = explode("\n", $cont);
  99. $str = '';
  100. $ssb = '';
  101. foreach($arra as $k=>$strb){
  102. if(!$strb)continue;
  103. $strb = str_replace(array('^M',"\n","\r"),'', $strb);
  104. $arrx = explode('|', $strb);
  105. if($k>0){
  106. $str.=',';
  107. $ssb.=',';
  108. }
  109. $keys= $arrx[0];
  110. $v001= '';
  111. if(contain($keys,'::')){
  112. $arr1 = explode('::', $keys);
  113. $keys = $arr1[0];
  114. $v001 = $arr1[1];
  115. }
  116. $str.='\''.$keys.'\'=>array(\''.$v001.'\'';
  117. $ssb.='"'.$keys.'":["'.$v001.'"';
  118. $len = count($arrx);
  119. foreach($arrx as $k1=>$v1)if($k1>0){
  120. $str.=',\''.$v1.'\'';
  121. $ssb.=',"'.$v1.'"';
  122. }
  123. $str.=')';
  124. $ssb.=']';
  125. }
  126. if($lx==0)return $str;
  127. if($lx==1)return $ssb;
  128. }
  129. }
粤ICP备19079148号